@ticketboothapp/booking 1.2.25-rc.0 → 1.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/package.json +11 -29
  2. package/src/components/booking/AddOnsSection.tsx +2 -2
  3. package/src/components/booking/AdminPaymentChoiceModal.tsx +1 -1
  4. package/src/components/booking/BookingDialog.tsx +31 -13
  5. package/src/components/booking/BookingFlow.tsx +32 -27
  6. package/src/components/booking/BookingFlowCollage.tsx +10 -6
  7. package/src/components/booking/BookingFlowPlaceholder.tsx +1 -1
  8. package/src/components/booking/BookingFlowPreview.tsx +18 -9
  9. package/src/components/booking/BookingProductGrid.tsx +55 -19
  10. package/src/components/booking/Calendar.module.css +19 -4
  11. package/src/components/booking/Calendar.tsx +13 -8
  12. package/src/components/booking/CancellationPolicySelector.tsx +2 -2
  13. package/src/components/booking/ChangeBookingDialog.tsx +22 -12
  14. package/src/components/booking/CheckoutForm.module.css +10 -0
  15. package/src/components/booking/CheckoutForm.tsx +10 -2
  16. package/src/components/booking/CheckoutModal.tsx +16 -14
  17. package/src/components/booking/DapFlowCollage.tsx +5 -2
  18. package/src/components/booking/DapTourDescription.tsx +4 -4
  19. package/src/components/booking/DependentAddOnBookingDialog.tsx +23 -16
  20. package/src/components/booking/DependentAddOnPaymentForm.tsx +10 -7
  21. package/src/components/booking/ItineraryBox.tsx +6 -6
  22. package/src/components/booking/ItineraryBuilder.tsx +1 -1
  23. package/src/components/booking/MealDrinkAddOnSelector.tsx +3 -3
  24. package/src/components/booking/PickupLocationSelector.tsx +20 -18
  25. package/src/components/booking/PickupTimeSelector.tsx +3 -3
  26. package/src/components/booking/PriceBreakdown.tsx +5 -5
  27. package/src/components/booking/PriceSummary.module.css +7 -0
  28. package/src/components/booking/PriceSummary.tsx +8 -7
  29. package/src/components/booking/PrivateShuttleBookingFlow.tsx +28 -19
  30. package/src/components/booking/PromoCodeInput.module.css +31 -25
  31. package/src/components/booking/PromoCodeInput.tsx +36 -24
  32. package/src/components/booking/ReturnTimeSelector.tsx +3 -3
  33. package/src/components/booking/TermsAcceptance.tsx +7 -2
  34. package/src/components/booking/TicketSelector.tsx +1 -1
  35. package/src/components/booking/TourDescription.tsx +11 -6
  36. package/src/components/booking/booking-flow.css +65 -4
  37. package/src/hooks/useBookingSourceMetadataFromLocation.ts +1 -1
  38. package/src/hooks/useIsBookingLaunchLive.ts +1 -1
  39. package/src/index.ts +26 -64
  40. package/src/providers/booking-dialog-provider.tsx +62 -53
  41. package/src/runtime/BookingHostContext.tsx +39 -0
  42. package/src/runtime/index.ts +13 -0
  43. package/src/runtime/types.ts +86 -0
  44. package/tsconfig.json +3 -5
  45. package/src/assets/icons/minus.svg +0 -7
  46. package/src/assets/icons/partner-logos/getyourguide.svg +0 -8
  47. package/src/assets/icons/plus.svg +0 -3
  48. package/src/colours.css +0 -23
  49. package/src/components/BookingDetails.module.css +0 -1591
  50. package/src/components/BookingDetails.tsx +0 -2264
  51. package/src/components/BookingWidget.tsx +0 -302
  52. package/src/components/ManageBookingView.tsx +0 -437
  53. package/src/components/PhoneInputWithCountry.module.css +0 -131
  54. package/src/components/PhoneInputWithCountry.tsx +0 -44
  55. package/src/components/PickupLocationDialog.module.css +0 -360
  56. package/src/components/PickupLocationDialog.tsx +0 -357
  57. package/src/components/PostBookingDependentAddOnUpsell.module.css +0 -174
  58. package/src/components/PostBookingDependentAddOnUpsell.tsx +0 -407
  59. package/src/components/button.css +0 -245
  60. package/src/components/button.tsx +0 -152
  61. package/src/components/colorable-svg.tsx +0 -29
  62. package/src/components/image.css +0 -29
  63. package/src/components/image.tsx +0 -113
  64. package/src/components/partner/PartnerBookingPage.module.css +0 -130
  65. package/src/components/partner/PartnerBookingPage.tsx +0 -390
  66. package/src/components/partner/PartnerBookingPageWithBrowserMetadata.tsx +0 -45
  67. package/src/components/product-tag.module.css +0 -30
  68. package/src/components/product-tag.tsx +0 -34
  69. package/src/components/product-theme-pages/image-modal.tsx +0 -248
  70. package/src/components/product-theme-pages/photo-gallery.module.css +0 -200
  71. package/src/components/terms/TermsContent.tsx +0 -178
  72. package/src/components/value-pill.module.css +0 -59
  73. package/src/components/value-pill.tsx +0 -46
  74. package/src/constants/images.ts +0 -556
  75. package/src/constants/pill-values.ts +0 -210
  76. package/src/constants/products.ts +0 -155
  77. package/src/contexts/AvailabilitiesCacheContext.tsx +0 -125
  78. package/src/contexts/CompanyContext.tsx +0 -70
  79. package/src/data/dap-descriptions/session-couples-families-friends.en.json +0 -61
  80. package/src/data/dap-descriptions/session-elopements.en.json +0 -60
  81. package/src/data/dap-descriptions/session-proposals.en.json +0 -60
  82. package/src/data/product-descriptions/afternoon-delight.en.json +0 -35
  83. package/src/data/product-descriptions/emerald-lake-escape.en.json +0 -68
  84. package/src/data/product-descriptions/lake-louise-adventure.en.json +0 -74
  85. package/src/data/product-descriptions/moraine-lake-adventure.en.json +0 -78
  86. package/src/data/product-descriptions/moraine-lake-sunrise-lake-louise-golden-hour.en.json +0 -65
  87. package/src/data/product-descriptions/moraine-lake-sunrise.en.json +0 -64
  88. package/src/data/product-descriptions/private-tour.en.json +0 -80
  89. package/src/data/product-descriptions/two-lakes-combo.en.json +0 -65
  90. package/src/data/products-config.json +0 -101
  91. package/src/lib/analytics.ts +0 -197
  92. package/src/lib/booking/booking-source.ts +0 -51
  93. package/src/lib/booking/checkout-breakdown.ts +0 -69
  94. package/src/lib/booking/correlation-id.ts +0 -46
  95. package/src/lib/booking/i18n/config.ts +0 -21
  96. package/src/lib/booking/i18n/index.tsx +0 -144
  97. package/src/lib/booking/i18n/messages/en.json +0 -236
  98. package/src/lib/booking/i18n/messages/fr.json +0 -236
  99. package/src/lib/booking/itinerary-display.ts +0 -36
  100. package/src/lib/booking/itinerary-labels.ts +0 -70
  101. package/src/lib/booking/location-calculations.ts +0 -43
  102. package/src/lib/booking/location-utils.ts +0 -165
  103. package/src/lib/booking/map-utils.ts +0 -153
  104. package/src/lib/booking/marker-icons.ts +0 -113
  105. package/src/lib/booking/normalize-booking-product-id.ts +0 -21
  106. package/src/lib/booking/pickup-location-types.ts +0 -25
  107. package/src/lib/booking/places-api.ts +0 -154
  108. package/src/lib/booking/pricing.ts +0 -466
  109. package/src/lib/booking/product-option-id.ts +0 -35
  110. package/src/lib/booking/source-metadata.ts +0 -226
  111. package/src/lib/booking/sunday-week.ts +0 -14
  112. package/src/lib/booking/theme.ts +0 -83
  113. package/src/lib/booking/trace-context.ts +0 -62
  114. package/src/lib/booking/utils.ts +0 -9
  115. package/src/lib/booking-api.ts +0 -1793
  116. package/src/lib/booking-constants.ts +0 -23
  117. package/src/lib/booking-ref.ts +0 -13
  118. package/src/lib/booking-types.ts +0 -36
  119. package/src/lib/currency.ts +0 -81
  120. package/src/lib/dap-descriptions.ts +0 -50
  121. package/src/lib/dap-itinerary-preview.ts +0 -315
  122. package/src/lib/dependent-add-on-api.ts +0 -434
  123. package/src/lib/env.ts +0 -96
  124. package/src/lib/firebase.ts +0 -20
  125. package/src/lib/job-application-api.ts +0 -83
  126. package/src/lib/manage-booking-embed-print.ts +0 -16
  127. package/src/lib/manage-booking-post-checkout.ts +0 -68
  128. package/src/lib/photo-dap-config.ts +0 -228
  129. package/src/lib/photo-packages.ts +0 -75
  130. package/src/lib/pickup/map-utils.ts +0 -56
  131. package/src/lib/pickup/marker-icons.ts +0 -19
  132. package/src/lib/product-descriptions.ts +0 -66
  133. package/src/lib/products-config.ts +0 -73
  134. package/src/providers/dependent-add-on-dialog-provider.tsx +0 -105
  135. package/src/radius.css +0 -5
  136. package/src/spacing.css +0 -7
  137. package/src/strings/en.json +0 -1774
  138. package/src/strings/es.json +0 -1573
  139. package/src/strings/fr.json +0 -1573
  140. package/src/strings/index.js +0 -23
  141. package/src/text-style.css +0 -56
  142. package/src/utils/currency-converter.ts +0 -101
@@ -1,23 +0,0 @@
1
- import enStrings from './en.json';
2
- import frStrings from './fr.json';
3
- import esStrings from './es.json';
4
-
5
- // This can be expanded later to handle different languages
6
- const strings = {
7
- en: enStrings,
8
- fr: frStrings,
9
- es: esStrings
10
- };
11
-
12
- export const SUPPORTED_LANGUAGES = ['en', 'fr', 'es'];
13
-
14
- // Default to English for now
15
- export const getStrings = (lang = 'en') => {
16
- if (!strings[lang]) {
17
- console.warn(`Language ${lang} not found, falling back to English`);
18
- return strings.en;
19
- }
20
- return strings[lang];
21
- };
22
-
23
- export default getStrings('en');
@@ -1,56 +0,0 @@
1
- @import url('./colours.css');
2
-
3
- /* @font-face rules live in the host app (e.g. viavia-website src/font-faces.css) so font files stay out of the npm bundle. */
4
-
5
- /* Common styles for all headings */
6
- h1, h2, h3, h4, h5, h6 {
7
- font-family: 'Poppins';
8
- font-weight: 800;
9
- text-transform: lowercase;
10
- color: var(--accent-orange);
11
- text-align: center;
12
- margin: 0;
13
- }
14
-
15
- p, body {
16
- font-weight: 400;
17
- font-family: 'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
18
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
19
- sans-serif;
20
- color: var(--primary-text);
21
- margin: 0;
22
- }
23
-
24
- a {
25
- color: var(--accent-orange);
26
- }
27
-
28
- /* Desktop */
29
- @media (min-width: 1024px) {
30
- h1 { font-size: 3rem; }
31
- h2 { font-size: 2.5rem; }
32
- h3 { font-size: 2rem; }
33
- h4 { font-size: 1.75rem; }
34
- h5 { font-size: 1.5rem; }
35
- p { font-size: 1.2rem; }
36
- }
37
-
38
- /* Tablet */
39
- @media (min-width: 768px) and (max-width: 1023px) {
40
- h1 { font-size: 2.5rem; }
41
- h2 { font-size: 2rem; }
42
- h3 { font-size: 1.75rem; }
43
- h4 { font-size: 1.5rem; }
44
- h5 { font-size: 1.25rem; }
45
- p { font-size: 1.2rem; }
46
- }
47
-
48
- /* Mobile */
49
- @media (max-width: 768px) {
50
- h1 { font-size: 2.5rem; }
51
- h2 { font-size: 1.75rem; }
52
- h3 { font-size: 1.5rem; }
53
- h4 { font-size: 1.25rem; }
54
- h5 { font-size: 1rem; }
55
- p { font-size: 1rem; }
56
- }
@@ -1,101 +0,0 @@
1
- type SupportedCurrency = 'CAD' | 'USD' | 'AUD' | 'MXN' | 'EUR' | 'GBP';
2
-
3
- interface CurrencyFormat {
4
- symbol: string;
5
- position: 'before' | 'after';
6
- rate: number; // Exchange rate from CAD
7
- }
8
-
9
- const currencyFormats: Record<SupportedCurrency, CurrencyFormat> = {
10
- CAD: { symbol: 'CA$', position: 'before', rate: 1 },
11
- USD: { symbol: 'US$', position: 'before', rate: 0.70 },
12
- AUD: { symbol: 'AU$', position: 'before', rate: 1.11 },
13
- MXN: { symbol: 'MX$', position: 'before', rate: 14.25 },
14
- EUR: { symbol: '€', position: 'before', rate: 0.65 },
15
- GBP: { symbol: '£', position: 'before', rate: 0.54 }
16
- };
17
-
18
- let cachedCurrency: SupportedCurrency | null = null;
19
-
20
- export function getUserCurrency(): SupportedCurrency {
21
- // Return CAD during server-side rendering
22
- if (typeof window === 'undefined') {
23
- return 'CAD';
24
- }
25
-
26
- // Use cached value if available
27
- if (cachedCurrency) {
28
- return cachedCurrency;
29
- }
30
-
31
- try {
32
- const locale = navigator.language;
33
- const languages = navigator.languages || [];
34
-
35
- // Try to find a Canadian locale in the language list
36
- const hasCanadianLocale = languages.some(lang =>
37
- lang.toLowerCase().includes('en-ca') ||
38
- lang.toLowerCase().includes('fr-ca')
39
- );
40
-
41
- // Check for Canadian region/timezone hints
42
- const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
43
- const isCanadianTimeZone = timeZone.includes('America') &&
44
- ['Vancouver', 'Edmonton', 'Calgary', 'Regina', 'Winnipeg', 'Toronto', 'Montreal', 'Halifax', 'St_Johns']
45
- .some(city => timeZone.includes(city));
46
-
47
- if (hasCanadianLocale || isCanadianTimeZone) {
48
- cachedCurrency = 'CAD';
49
- return cachedCurrency;
50
- }
51
-
52
- const country = locale.split('-')[1] || locale.split('_')[1];
53
-
54
- // Map common locales to currencies
55
- const currencyMap: Record<string, SupportedCurrency> = {
56
- 'CA': 'CAD',
57
- 'US': 'USD',
58
- 'AU': 'AUD',
59
- 'MX': 'MXN',
60
- 'GB': 'GBP'
61
- };
62
-
63
- // Check if we're in a European country
64
- const euroCountries = ['DE', 'FR', 'IT', 'ES', 'NL', 'BE', 'AT', 'IE', 'FI', 'PT'];
65
-
66
- // Check both country code and language for European detection
67
- if (euroCountries.includes(country) ||
68
- languages.some(lang => euroCountries.includes(lang.split('-')[1] || lang.split('_')[1]))) {
69
- cachedCurrency = 'EUR';
70
- return cachedCurrency;
71
- }
72
-
73
- cachedCurrency = currencyMap[country] || 'CAD';
74
- return cachedCurrency;
75
- } catch {
76
- cachedCurrency = 'CAD';
77
- return cachedCurrency;
78
- }
79
- }
80
-
81
- export function formatPrice(cadPrice: string, language?: 'en' | 'es' | 'fr'): string {
82
- // Extract numeric value from CAD price string
83
- const numericValue = parseFloat(cadPrice.replace(/[^0-9.]/g, ''));
84
- if (isNaN(numericValue)) return cadPrice;
85
-
86
- const userCurrency = getUserCurrency();
87
- const format = currencyFormats[userCurrency];
88
-
89
- // Convert price
90
- const convertedPrice = Math.round(numericValue * format.rate);
91
-
92
- // Handle French formatting
93
- if (language === 'fr') {
94
- return `${convertedPrice}$CA`;
95
- }
96
-
97
- // Format the price for other languages
98
- return format.position === 'before'
99
- ? `${format.symbol}${convertedPrice}`
100
- : `${convertedPrice}${format.symbol}`;
101
- }