@ticketboothapp/booking 0.1.22 → 1.2.24

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 (158) hide show
  1. package/package.json +2 -29
  2. package/src/index.ts +0 -79
  3. package/tsconfig.json +2 -8
  4. package/src/assets/icons/minus.svg +0 -7
  5. package/src/assets/icons/partner-logos/getyourguide.svg +0 -8
  6. package/src/assets/icons/plus.svg +0 -3
  7. package/src/colours.css +0 -23
  8. package/src/components/BookingDetails.module.css +0 -1591
  9. package/src/components/BookingDetails.tsx +0 -2264
  10. package/src/components/BookingWidget.tsx +0 -302
  11. package/src/components/ManageBookingView.tsx +0 -437
  12. package/src/components/PhoneInputWithCountry.module.css +0 -131
  13. package/src/components/PhoneInputWithCountry.tsx +0 -44
  14. package/src/components/PickupLocationDialog.module.css +0 -360
  15. package/src/components/PickupLocationDialog.tsx +0 -357
  16. package/src/components/PostBookingDependentAddOnUpsell.module.css +0 -174
  17. package/src/components/PostBookingDependentAddOnUpsell.tsx +0 -407
  18. package/src/components/booking/AddOnsSection.module.css +0 -10
  19. package/src/components/booking/AddOnsSection.tsx +0 -184
  20. package/src/components/booking/AdminPaymentChoiceModal.tsx +0 -98
  21. package/src/components/booking/BookingDialog.module.css +0 -643
  22. package/src/components/booking/BookingDialog.tsx +0 -356
  23. package/src/components/booking/BookingFlow.tsx +0 -4385
  24. package/src/components/booking/BookingFlowCollage.module.css +0 -148
  25. package/src/components/booking/BookingFlowCollage.tsx +0 -184
  26. package/src/components/booking/BookingFlowPlaceholder.module.css +0 -27
  27. package/src/components/booking/BookingFlowPlaceholder.tsx +0 -25
  28. package/src/components/booking/BookingFlowPreview.tsx +0 -51
  29. package/src/components/booking/BookingProductGrid.module.css +0 -359
  30. package/src/components/booking/BookingProductGrid.tsx +0 -497
  31. package/src/components/booking/Calendar.module.css +0 -616
  32. package/src/components/booking/Calendar.tsx +0 -1123
  33. package/src/components/booking/CancellationPolicySelector.module.css +0 -124
  34. package/src/components/booking/CancellationPolicySelector.tsx +0 -142
  35. package/src/components/booking/ChangeBookingDialog.tsx +0 -562
  36. package/src/components/booking/CheckoutForm.module.css +0 -244
  37. package/src/components/booking/CheckoutForm.tsx +0 -364
  38. package/src/components/booking/CheckoutModal.tsx +0 -451
  39. package/src/components/booking/CurrencySwitcher.tsx +0 -81
  40. package/src/components/booking/DapFlowCollage.tsx +0 -88
  41. package/src/components/booking/DapTourDescription.tsx +0 -35
  42. package/src/components/booking/DependentAddOnBookingDialog.tsx +0 -1350
  43. package/src/components/booking/DependentAddOnPaymentForm.tsx +0 -124
  44. package/src/components/booking/ErrorBoundary.tsx +0 -63
  45. package/src/components/booking/InfoTooltip.tsx +0 -108
  46. package/src/components/booking/ItineraryBox.module.css +0 -258
  47. package/src/components/booking/ItineraryBox.tsx +0 -550
  48. package/src/components/booking/ItineraryBuilder.tsx +0 -82
  49. package/src/components/booking/ItineraryPlaceholder.module.css +0 -45
  50. package/src/components/booking/ItineraryPlaceholder.tsx +0 -26
  51. package/src/components/booking/MealDrinkAddOnSelector.tsx +0 -338
  52. package/src/components/booking/PickupLocationSelector.module.css +0 -124
  53. package/src/components/booking/PickupLocationSelector.tsx +0 -1566
  54. package/src/components/booking/PickupTimeSelector.module.css +0 -134
  55. package/src/components/booking/PickupTimeSelector.tsx +0 -112
  56. package/src/components/booking/PriceBreakdown.tsx +0 -154
  57. package/src/components/booking/PriceSummary.tsx +0 -234
  58. package/src/components/booking/PrivateShuttleBookingFlow.module.css +0 -357
  59. package/src/components/booking/PrivateShuttleBookingFlow.tsx +0 -2662
  60. package/src/components/booking/PromoCodeInput.module.css +0 -166
  61. package/src/components/booking/PromoCodeInput.tsx +0 -99
  62. package/src/components/booking/ReturnTimeSelector.module.css +0 -173
  63. package/src/components/booking/ReturnTimeSelector.tsx +0 -145
  64. package/src/components/booking/TermsAcceptance.tsx +0 -111
  65. package/src/components/booking/TicketSelector.module.css +0 -164
  66. package/src/components/booking/TicketSelector.tsx +0 -199
  67. package/src/components/booking/TourDescription.module.css +0 -304
  68. package/src/components/booking/TourDescription.tsx +0 -273
  69. package/src/components/booking/booking-flow-ui.ts +0 -38
  70. package/src/components/booking/booking-flow.css +0 -944
  71. package/src/components/button.css +0 -245
  72. package/src/components/button.tsx +0 -152
  73. package/src/components/colorable-svg.tsx +0 -29
  74. package/src/components/image.css +0 -29
  75. package/src/components/image.tsx +0 -113
  76. package/src/components/partner/PartnerBookingPage.module.css +0 -130
  77. package/src/components/partner/PartnerBookingPage.tsx +0 -390
  78. package/src/components/partner/PartnerBookingPageWithBrowserMetadata.tsx +0 -45
  79. package/src/components/product-tag.module.css +0 -30
  80. package/src/components/product-tag.tsx +0 -34
  81. package/src/components/product-theme-pages/image-modal.tsx +0 -248
  82. package/src/components/product-theme-pages/photo-gallery.module.css +0 -200
  83. package/src/components/terms/TermsContent.tsx +0 -178
  84. package/src/components/value-pill.module.css +0 -59
  85. package/src/components/value-pill.tsx +0 -46
  86. package/src/constants/images.ts +0 -556
  87. package/src/constants/pill-values.ts +0 -210
  88. package/src/constants/products.ts +0 -155
  89. package/src/contexts/AvailabilitiesCacheContext.tsx +0 -125
  90. package/src/contexts/BookingAppContext.tsx +0 -134
  91. package/src/contexts/CompanyContext.tsx +0 -70
  92. package/src/data/dap-descriptions/session-couples-families-friends.en.json +0 -61
  93. package/src/data/dap-descriptions/session-elopements.en.json +0 -60
  94. package/src/data/dap-descriptions/session-proposals.en.json +0 -60
  95. package/src/data/product-descriptions/afternoon-delight.en.json +0 -35
  96. package/src/data/product-descriptions/emerald-lake-escape.en.json +0 -68
  97. package/src/data/product-descriptions/lake-louise-adventure.en.json +0 -74
  98. package/src/data/product-descriptions/moraine-lake-adventure.en.json +0 -78
  99. package/src/data/product-descriptions/moraine-lake-sunrise-lake-louise-golden-hour.en.json +0 -65
  100. package/src/data/product-descriptions/moraine-lake-sunrise.en.json +0 -64
  101. package/src/data/product-descriptions/private-tour.en.json +0 -80
  102. package/src/data/product-descriptions/two-lakes-combo.en.json +0 -65
  103. package/src/data/products-config.json +0 -101
  104. package/src/hooks/useBookingSourceMetadataFromLocation.ts +0 -21
  105. package/src/hooks/useIsBookingLaunchLive.ts +0 -49
  106. package/src/lib/analytics.ts +0 -197
  107. package/src/lib/booking/booking-source.ts +0 -51
  108. package/src/lib/booking/checkout-breakdown.ts +0 -69
  109. package/src/lib/booking/correlation-id.ts +0 -46
  110. package/src/lib/booking/i18n/config.ts +0 -21
  111. package/src/lib/booking/i18n/index.tsx +0 -144
  112. package/src/lib/booking/i18n/messages/en.json +0 -236
  113. package/src/lib/booking/i18n/messages/fr.json +0 -236
  114. package/src/lib/booking/itinerary-display.ts +0 -36
  115. package/src/lib/booking/itinerary-labels.ts +0 -70
  116. package/src/lib/booking/location-calculations.ts +0 -43
  117. package/src/lib/booking/location-utils.ts +0 -165
  118. package/src/lib/booking/map-utils.ts +0 -153
  119. package/src/lib/booking/marker-icons.ts +0 -113
  120. package/src/lib/booking/normalize-booking-product-id.ts +0 -21
  121. package/src/lib/booking/pickup-location-types.ts +0 -25
  122. package/src/lib/booking/places-api.ts +0 -154
  123. package/src/lib/booking/pricing.ts +0 -466
  124. package/src/lib/booking/product-option-id.ts +0 -35
  125. package/src/lib/booking/source-metadata.ts +0 -226
  126. package/src/lib/booking/sunday-week.ts +0 -14
  127. package/src/lib/booking/theme.ts +0 -83
  128. package/src/lib/booking/trace-context.ts +0 -62
  129. package/src/lib/booking/utils.ts +0 -9
  130. package/src/lib/booking-api.ts +0 -1793
  131. package/src/lib/booking-constants.ts +0 -23
  132. package/src/lib/booking-ref.ts +0 -13
  133. package/src/lib/booking-types.ts +0 -36
  134. package/src/lib/currency.ts +0 -81
  135. package/src/lib/dap-descriptions.ts +0 -50
  136. package/src/lib/dap-itinerary-preview.ts +0 -315
  137. package/src/lib/dependent-add-on-api.ts +0 -434
  138. package/src/lib/env.ts +0 -96
  139. package/src/lib/firebase.ts +0 -20
  140. package/src/lib/job-application-api.ts +0 -83
  141. package/src/lib/manage-booking-embed-print.ts +0 -16
  142. package/src/lib/manage-booking-post-checkout.ts +0 -68
  143. package/src/lib/photo-dap-config.ts +0 -228
  144. package/src/lib/photo-packages.ts +0 -75
  145. package/src/lib/pickup/map-utils.ts +0 -56
  146. package/src/lib/pickup/marker-icons.ts +0 -19
  147. package/src/lib/product-descriptions.ts +0 -66
  148. package/src/lib/products-config.ts +0 -73
  149. package/src/providers/booking-dialog-provider.tsx +0 -282
  150. package/src/providers/dependent-add-on-dialog-provider.tsx +0 -105
  151. package/src/radius.css +0 -5
  152. package/src/spacing.css +0 -7
  153. package/src/strings/en.json +0 -1774
  154. package/src/strings/es.json +0 -1573
  155. package/src/strings/fr.json +0 -1573
  156. package/src/strings/index.js +0 -23
  157. package/src/text-style.css +0 -97
  158. package/src/utils/currency-converter.ts +0 -101
@@ -1,616 +0,0 @@
1
- /**
2
- * Calendar component styles
3
- *
4
- * QUICK REFERENCE - Where to change what:
5
- * ───────────────────────────────────────
6
- * Header row (SUN, MON, TUE...) → --cal-header-*
7
- * Date range trigger + dropdown → --cal-range-*, --cal-dropdown-*
8
- * Dropdown panel (popover) → --cal-dropdown-bg, --cal-dropdown-border, etc.
9
- * Dropdown day cells → --cal-dropdown-day-*
10
- * Nav arrows (< >) → --cal-nav-*
11
- * Day cells (available/selected) → --cal-cell-*
12
- * Time pills (3:00 AM, etc.) → --cal-time-*
13
- * Sold out / discount badges → --cal-soldout-*, --cal-discount-*
14
- * Grid borders → --cal-grid-border, --cal-outer-border
15
- *
16
- * Edit the variables in the .calendar block below.
17
- */
18
-
19
- /* ============ CALENDAR COLOR VARIABLES (edit these to customize) ============ */
20
- .calendar {
21
- /* Header row (SUN, MON, TUE...) */
22
- --cal-header-bg: var(--booking-stone-100, #f5f5f4);
23
- --cal-header-text: var(--booking-stone-600, #57534e);
24
- --cal-header-border: var(--booking-stone-300, #d6d3d1);
25
-
26
- /* Date range dropdown (e.g. "May 31 - Jun 13, 2026") */
27
- --cal-range-text: var(--booking-stone-700, #44403c);
28
- --cal-range-text-hover: var(--booking-stone-900, #1c1917);
29
- --cal-range-bg-hover: var(--booking-stone-100, #f5f5f4);
30
-
31
- /* Nav arrows (< >) */
32
- --cal-nav-icon: var(--booking-stone-600, #57534e);
33
- --cal-nav-bg-hover: var(--booking-stone-100, #f5f5f4);
34
-
35
- /* Day cell - available (not selected) */
36
- --cal-cell-available-bg: var(--booking-stone-50, #fafaf9);
37
- --cal-cell-available-text: var(--booking-stone-900, #1c1917);
38
- --cal-cell-available-bg-hover: var(--booking-stone-100, #f5f5f4);
39
-
40
- /* Day cell - selected */
41
- --cal-cell-selected-bg: var(--booking-emerald-600, #059669);
42
- --cal-cell-selected-text: #fff;
43
- --cal-cell-selected-bg-hover: var(--booking-emerald-700, #047857);
44
-
45
- /* Day cell - disabled (no availability) */
46
- --cal-cell-disabled-bg: var(--booking-stone-100, #f5f5f4);
47
- --cal-cell-disabled-text: var(--booking-stone-400, #a8a29e);
48
-
49
- /* Day number (e.g. "31" in top-left of cell) */
50
- --cal-day-number-text: var(--booking-stone-900, #1c1917);
51
- --cal-day-number-selected: #fff;
52
-
53
- /* Time pill - available */
54
- --cal-time-available-bg: var(--booking-emerald-600, #059669);
55
- --cal-time-available-text: #fff;
56
- --cal-time-available-selected: rgba(255, 255, 255, 0.3);
57
-
58
- /* Time pill - low availability (< 5 spots) */
59
- --cal-time-low-bg: #d97706;
60
- --cal-time-low-text: #fff;
61
-
62
- /* Time pill - sold out */
63
- --cal-time-soldout-bg: #f87171;
64
- --cal-time-soldout-text: #fff;
65
-
66
- /* Sold out badge */
67
- --cal-soldout-bg: #fef2f2;
68
- --cal-soldout-text: #b91c1c;
69
- --cal-soldout-border: #fecaca;
70
- --cal-soldout-selected-bg: rgba(239, 68, 68, 0.3);
71
- --cal-soldout-selected-border: rgba(248, 113, 113, 0.5);
72
-
73
- /* Discount badge */
74
- --cal-discount-bg: #fef2f2;
75
- --cal-discount-text: #b91c1c;
76
- --cal-discount-tag-bg: rgba(239, 68, 68, 0.9);
77
- --cal-discount-tag-text: #fff;
78
-
79
- /* Today ring */
80
- --cal-today-ring: var(--booking-emerald-600, #059669);
81
-
82
- /* Grid borders */
83
- --cal-grid-border: var(--booking-stone-300, #d6d3d1);
84
- --cal-outer-border: var(--booking-stone-300, #d6d3d1);
85
- }
86
-
87
- /* ============ LAYOUT (structure) ============ */
88
- .calendar {
89
- width: 100%;
90
- max-width: 36rem;
91
- margin-left: auto;
92
- margin-right: auto;
93
- position: relative;
94
- }
95
-
96
-
97
- .calendarHeader {
98
- display: flex;
99
- align-items: center;
100
- justify-content: space-between;
101
- margin-bottom: 0.375rem;
102
- }
103
-
104
- .calendarNav {
105
- padding: 0.375rem;
106
- border-radius: 0.5rem;
107
- transition: background-color 0.2s;
108
- background: none;
109
- border: none;
110
- cursor: pointer;
111
- }
112
- .calendarNav:hover {
113
- background-color: var(--cal-nav-bg-hover);
114
- }
115
- .calendarNav:disabled {
116
- opacity: 0.3;
117
- cursor: not-allowed;
118
- }
119
- .calendarNav:disabled:hover {
120
- background-color: transparent;
121
- }
122
- .calendarNav:focus-visible {
123
- outline: 2px solid var(--booking-emerald-600, #059669);
124
- outline-offset: 2px;
125
- }
126
-
127
- .calendarNavIcon {
128
- width: 1rem;
129
- height: 1rem;
130
- color: var(--cal-nav-icon);
131
- }
132
-
133
- .calendarRangeTrigger {
134
- display: flex;
135
- align-items: center;
136
- gap: 0.25rem;
137
- font-size: 0.75rem;
138
- font-weight: 500;
139
- color: var(--cal-range-text);
140
- padding: 0.25rem 0.5rem;
141
- border-radius: 0.25rem;
142
- transition: color 0.2s, background-color 0.2s;
143
- cursor: pointer;
144
- background: none;
145
- border: none;
146
- }
147
- .calendarRangeTrigger:focus-visible {
148
- outline: 2px solid var(--booking-emerald-600, #059669);
149
- outline-offset: 2px;
150
- }
151
- .calendarRangeTrigger:hover {
152
- color: var(--cal-range-text-hover);
153
- background-color: var(--cal-range-bg-hover);
154
- }
155
- .calendarRangeTrigger svg {
156
- color: inherit;
157
- }
158
-
159
- /* ============ DATE RANGE DROPDOWN PANEL ============ */
160
- /* Variables defined here so dropdown works when portaled to document.body (outside .calendar) */
161
- .calendarDropdown {
162
- --cal-dropdown-bg: #fff;
163
- --cal-dropdown-border: var(--booking-stone-300, #d6d3d1);
164
- --cal-dropdown-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
165
- --cal-dropdown-radius: 0.5rem;
166
- --cal-dropdown-padding: 0.75rem;
167
- --cal-dropdown-min-width: 280px;
168
- --cal-dropdown-max-height: 400px;
169
- --cal-dropdown-header-text: var(--booking-stone-700, #44403c);
170
- --cal-dropdown-nav-bg-hover: var(--booking-stone-100, #f5f5f4);
171
- --cal-dropdown-nav-icon: var(--booking-stone-600, #57534e);
172
- --cal-dropdown-nav-disabled-opacity: 0.3;
173
- --cal-dropdown-dow-text: var(--booking-stone-500, #78716c);
174
- --cal-dropdown-dow-size: 10px;
175
- --cal-dropdown-day-text: var(--booking-stone-900, #1c1917);
176
- --cal-dropdown-day-text-muted: var(--booking-stone-300, #d6d3d1);
177
- --cal-dropdown-day-available-bg: var(--booking-emerald-50, #ecfdf5);
178
- --cal-dropdown-day-available-bg-hover: var(--booking-emerald-100, #d1fae5);
179
- --cal-dropdown-day-selected-bg: var(--booking-emerald-600, #059669);
180
- --cal-dropdown-day-selected-bg-hover: var(--booking-emerald-700, #047857);
181
- --cal-dropdown-day-soldout-bg: #f87171;
182
- --cal-dropdown-day-soldout-bg-hover: #ef4444;
183
- --cal-dropdown-day-today-ring: var(--booking-emerald-500, #10b981);
184
-
185
- position: fixed;
186
- background-color: var(--cal-dropdown-bg);
187
- border: 1px solid var(--cal-dropdown-border);
188
- border-radius: var(--cal-dropdown-radius);
189
- box-shadow: var(--cal-dropdown-shadow);
190
- z-index: 9999;
191
- padding: var(--cal-dropdown-padding);
192
- min-width: var(--cal-dropdown-min-width);
193
- max-height: var(--cal-dropdown-max-height);
194
- overflow-y: auto;
195
- }
196
-
197
- .calendarDropdownGridWrapper {
198
- position: relative;
199
- }
200
-
201
- .calendarDropdownLoading {
202
- position: absolute;
203
- inset: 0;
204
- display: flex;
205
- align-items: center;
206
- justify-content: center;
207
- background-color: rgba(255, 255, 255, 0.85);
208
- backdrop-filter: blur(4px);
209
- border-radius: 0.25rem;
210
- z-index: 1;
211
- }
212
-
213
- .calendarDropdownHeader {
214
- display: flex;
215
- align-items: center;
216
- justify-content: space-between;
217
- margin-bottom: 0.5rem;
218
- }
219
-
220
- .calendarDropdownNav {
221
- padding: 0.25rem;
222
- border-radius: 0.25rem;
223
- background: none;
224
- border: none;
225
- cursor: pointer;
226
- transition: background-color 0.2s;
227
- }
228
-
229
- .calendarDropdownNav:hover:not(:disabled) {
230
- background-color: var(--cal-dropdown-nav-bg-hover);
231
- }
232
-
233
- .calendarDropdownNav:disabled {
234
- opacity: var(--cal-dropdown-nav-disabled-opacity);
235
- cursor: not-allowed;
236
- }
237
-
238
- .calendarDropdownNav:disabled:hover {
239
- background-color: transparent;
240
- }
241
-
242
- .calendarDropdownNavIcon {
243
- width: 1rem;
244
- height: 1rem;
245
- color: var(--cal-dropdown-nav-icon);
246
- }
247
-
248
- .calendarDropdownMonth {
249
- font-size: 0.875rem;
250
- font-weight: 600;
251
- color: var(--cal-dropdown-header-text);
252
- }
253
-
254
- .calendarDropdownDaysOfWeek {
255
- display: grid;
256
- grid-template-columns: repeat(7, 1fr);
257
- gap: 0.25rem;
258
- margin-bottom: 0.25rem;
259
- }
260
-
261
- .calendarDropdownDow {
262
- font-size: var(--cal-dropdown-dow-size);
263
- font-weight: 600;
264
- color: var(--cal-dropdown-dow-text);
265
- text-align: center;
266
- padding: 0.25rem 0;
267
- }
268
-
269
- .calendarDropdownDays {
270
- display: grid;
271
- grid-template-columns: repeat(7, 1fr);
272
- gap: 0.25rem;
273
- }
274
-
275
- .calendarDropdownDay {
276
- aspect-ratio: 1;
277
- font-size: 0.75rem;
278
- border-radius: 0.25rem;
279
- transition: background-color 0.2s, color 0.2s;
280
- border: none;
281
- cursor: pointer;
282
- }
283
-
284
- .calendarDropdownDayMuted {
285
- color: var(--cal-dropdown-day-text-muted);
286
- cursor: not-allowed;
287
- }
288
-
289
- .calendarDropdownDayAvailable {
290
- color: var(--cal-dropdown-day-text);
291
- background-color: var(--cal-dropdown-day-available-bg);
292
- }
293
-
294
- .calendarDropdownDayAvailable:hover {
295
- background-color: var(--cal-dropdown-day-available-bg-hover);
296
- }
297
-
298
- .calendarDropdownDaySelected {
299
- background-color: var(--cal-dropdown-day-selected-bg);
300
- color: #fff;
301
- }
302
-
303
- .calendarDropdownDaySelected:hover {
304
- background-color: var(--cal-dropdown-day-selected-bg-hover);
305
- }
306
-
307
- .calendarDropdownDaySoldOut {
308
- background-color: var(--cal-dropdown-day-soldout-bg);
309
- color: #fff;
310
- cursor: not-allowed;
311
- }
312
-
313
- .calendarDropdownDaySoldOutAdmin {
314
- background-color: var(--cal-dropdown-day-soldout-bg);
315
- color: #fff;
316
- cursor: pointer;
317
- }
318
-
319
- .calendarDropdownDaySoldOutAdmin:hover {
320
- background-color: var(--cal-dropdown-day-soldout-bg-hover);
321
- }
322
-
323
- .calendarDropdownDayToday {
324
- box-shadow: inset 0 0 0 1px var(--cal-dropdown-day-today-ring);
325
- }
326
-
327
- .calendarGrid {
328
- border: 1px solid var(--cal-outer-border);
329
- border-radius: 0.5rem;
330
- overflow: hidden;
331
- background-color: #fff;
332
- }
333
-
334
- .calendarGridInner {
335
- width: 100%;
336
- min-width: 0;
337
- padding-bottom: 0; /* No bottom padding - eliminates gap below calendar cells */
338
- }
339
-
340
- .calendarHeaderRow {
341
- display: grid;
342
- grid-template-columns: repeat(7, 1fr);
343
- background-color: var(--cal-header-bg);
344
- border-bottom: 1px solid var(--cal-header-border);
345
- }
346
-
347
- .calendarHeaderCell {
348
- padding: 0.25rem 0;
349
- text-align: center;
350
- font-size: 0.75rem;
351
- font-weight: 600;
352
- color: var(--cal-header-text);
353
- text-transform: uppercase;
354
- letter-spacing: 0.05em;
355
- border-right: 1px solid var(--cal-header-border);
356
- }
357
- .calendarHeaderCell:last-child {
358
- border-right: none;
359
- }
360
-
361
- .calendarDaysGrid {
362
- display: grid;
363
- grid-template-columns: repeat(7, 1fr);
364
- align-items: stretch;
365
- }
366
-
367
- /* Mobile: rows size to content to eliminate bottom gap */
368
- @media (max-width: 639px) {
369
- .calendarDaysGrid {
370
- grid-auto-rows: minmax(min-content, max-content);
371
- }
372
- }
373
-
374
- /* ============ DAY CELL (base) ============ */
375
- .calendarDayCell {
376
- padding: 0 0.5rem;
377
- transition: all 0.2s;
378
- text-align: left;
379
- position: relative;
380
- display: flex;
381
- flex-direction: column;
382
- align-items: center;
383
- justify-content: center;
384
- min-height: 5.5rem; /* Desktop: enough room for time pills */
385
- cursor: pointer;
386
- }
387
-
388
- /* Admin (showCapacity): extra line under each time pill — taller cells on sm+ only */
389
- @media (min-width: 640px) {
390
- .calendar .calendarDayCell.calendarDayCellWithAdminCapacity {
391
- min-height: 7.5rem;
392
- }
393
- .calendar .calendarDayCell.calendarDayCellWithAdminCapacity.calendarDayCellWithAdminCapacityTall {
394
- min-height: 9rem;
395
- }
396
- }
397
-
398
- /* Inner flex container - use CSS module to avoid Tailwind overrides */
399
- .calendarDayCellInner {
400
- display: flex;
401
- flex-direction: column;
402
- height: 100%;
403
- align-items: center;
404
- justify-content: center;
405
- width: 100%;
406
- }
407
- .calendar .calendarDayCell.calendarDayCellMobile .calendarDayCellInnerMobile,
408
- .calendar .calendarDayCell.calendarDayCellMobileTall .calendarDayCellInnerMobile {
409
- justify-content: flex-start !important;
410
- padding-top: 0.25rem;
411
- }
412
-
413
- /* Mobile: compact - content aligns to top, minimal bottom gap */
414
- .calendarDayCell.calendarDayCellMobile {
415
- min-width: 0;
416
- min-height: 3.75rem;
417
- padding: 0.5rem 0.5rem 0.125rem;
418
- }
419
- .calendarDayCell.calendarDayCellMobileTall {
420
- min-width: 0;
421
- min-height: 4.25rem;
422
- padding: 0.5rem 0.5rem 0.125rem;
423
- }
424
-
425
- .calendarDayCell:disabled {
426
- cursor: not-allowed;
427
- }
428
-
429
- /* Day cell variants */
430
- .calendarDayCellAvailable {
431
- background-color: var(--cal-cell-available-bg);
432
- color: var(--cal-cell-available-text);
433
- }
434
- .calendarDayCellAvailable:hover {
435
- background-color: var(--cal-cell-available-bg-hover);
436
- }
437
-
438
- /* Higher specificity to override .booking-flow-preflight button { background-color: transparent } */
439
- .calendar button.calendarDayCellSelected,
440
- .calendar .calendarDayCellSelected {
441
- background-color: var(--cal-cell-selected-bg);
442
- color: var(--cal-cell-selected-text);
443
- }
444
- .calendar button.calendarDayCellSelected:hover,
445
- .calendar .calendarDayCellSelected:hover {
446
- background-color: var(--cal-cell-selected-bg-hover);
447
- }
448
-
449
- .calendarDayCellDisabled {
450
- background-color: var(--cal-cell-disabled-bg);
451
- color: var(--cal-cell-disabled-text);
452
- cursor: not-allowed;
453
- }
454
-
455
- .calendarDayCellToday {
456
- box-shadow: inset 0 0 0 1px var(--cal-today-ring);
457
- }
458
-
459
- /* Day number */
460
- .calendarDayNumber {
461
- font-size: 10px;
462
- font-weight: 500;
463
- position: absolute;
464
- top: 0.25rem;
465
- left: 0.25rem;
466
- color: var(--cal-day-number-text);
467
- }
468
- .calendarDayCellSelected .calendarDayNumber {
469
- color: var(--cal-day-number-selected);
470
- }
471
-
472
- /* ============ BADGES & PILLS ============ */
473
- .calendarDiscountTag {
474
- position: absolute;
475
- top: 0.25rem;
476
- right: 0.25rem;
477
- display: flex;
478
- align-items: center;
479
- gap: 0.125rem;
480
- background-color: var(--cal-discount-tag-bg);
481
- color: var(--cal-discount-tag-text);
482
- font-size: 9px;
483
- font-weight: 700;
484
- padding: 0.125rem 0.25rem;
485
- border-radius: 0.25rem;
486
- }
487
- /* Mobile: position discount below day number (top-left) so it doesn't overlap */
488
- .calendarDiscountTagMobile {
489
- top: 1rem;
490
- left: 0.25rem;
491
- right: auto;
492
- }
493
-
494
- .calendarSoldOutBadge {
495
- font-size: 10px;
496
- font-weight: 600;
497
- padding: 0.25rem 0.5rem;
498
- border-radius: 0.25rem;
499
- display: flex;
500
- align-items: center;
501
- justify-content: center;
502
- background-color: var(--cal-soldout-bg);
503
- color: var(--cal-soldout-text);
504
- border: 1px solid var(--cal-soldout-border);
505
- }
506
- .calendarDayCellSelected .calendarSoldOutBadge {
507
- background-color: var(--cal-soldout-selected-bg);
508
- color: var(--cal-cell-selected-text);
509
- border-color: var(--cal-soldout-selected-border);
510
- }
511
-
512
- .calendarTimePill {
513
- font-size: 10px;
514
- padding: 0.25rem 0.375rem;
515
- border-radius: 0.25rem;
516
- font-weight: 500;
517
- display: flex;
518
- flex-direction: column;
519
- align-items: center;
520
- gap: 0;
521
- background-color: var(--cal-time-available-bg);
522
- color: var(--cal-time-available-text);
523
- }
524
- .calendarDayCellSelected .calendarTimePill {
525
- background-color: var(--cal-time-available-selected);
526
- color: var(--cal-cell-selected-text);
527
- }
528
-
529
- .calendarTimePillLow {
530
- background-color: var(--cal-time-low-bg);
531
- color: var(--cal-time-low-text);
532
- }
533
- .calendarDayCellSelected .calendarTimePillLow {
534
- background-color: rgba(217, 119, 6, 0.8);
535
- }
536
-
537
- .calendarTimePillSoldOut {
538
- background-color: var(--cal-time-soldout-bg);
539
- color: var(--cal-time-soldout-text);
540
- opacity: 0.6;
541
- }
542
-
543
- .calendarDiscountBadge {
544
- font-size: 9px;
545
- font-weight: 600;
546
- padding: 0.125rem 0.25rem;
547
- border-radius: 0.125rem;
548
- text-align: center;
549
- background-color: var(--cal-discount-bg);
550
- color: var(--cal-discount-text);
551
- }
552
- .calendarDayCellSelected .calendarDiscountBadge {
553
- background-color: rgba(255, 255, 255, 0.2);
554
- color: var(--cal-cell-selected-text);
555
- }
556
-
557
- /* Mobile: compact green dot + time list */
558
- .calendarMobileTimeList {
559
- display: flex;
560
- flex-direction: column;
561
- align-items: center;
562
- gap: 0.0625rem;
563
- width: 100%;
564
- }
565
- /* Mobile: push time slots lower when discount tag is present */
566
- .calendarMobileTimeListWithDiscount {
567
- margin-top: 1.25rem;
568
- }
569
-
570
- .calendarMobileTimeDot {
571
- display: flex;
572
- align-items: center;
573
- gap: 0.25rem;
574
- font-size: 9px;
575
- font-weight: 500;
576
- color: inherit;
577
- line-height: 1.2;
578
- }
579
-
580
- .calendarMobileTimeDotBullet {
581
- width: 4px;
582
- height: 4px;
583
- border-radius: 50%;
584
- flex-shrink: 0;
585
- background-color: var(--cal-time-available-bg);
586
- }
587
- .calendarDayCellSelected .calendarMobileTimeDotBullet {
588
- background-color: rgba(255, 255, 255, 0.9);
589
- }
590
-
591
- .calendarMobileTimeDotSoldOut .calendarMobileTimeDotBullet {
592
- background-color: var(--cal-time-soldout-bg);
593
- }
594
-
595
- .calendarMobileTimeDotLow .calendarMobileTimeDotBullet {
596
- background-color: var(--cal-time-low-bg);
597
- }
598
-
599
- .calendarLowAvailabilityBadge {
600
- font-size: 10px;
601
- font-weight: 600;
602
- padding: 0.25rem 0.5rem;
603
- border-radius: 0.25rem;
604
- display: flex;
605
- align-items: center;
606
- gap: 0.125rem;
607
- justify-content: center;
608
- background-color: var(--cal-soldout-bg);
609
- color: var(--cal-soldout-text);
610
- border: 1px solid var(--cal-soldout-border);
611
- }
612
- .calendarDayCellSelected .calendarLowAvailabilityBadge {
613
- background-color: var(--cal-soldout-selected-bg);
614
- color: var(--cal-cell-selected-text);
615
- border-color: var(--cal-soldout-selected-border);
616
- }