kupos-ui-components-lib 9.11.4 → 9.11.5

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 (29) hide show
  1. package/dist/components/ServiceItem/ServiceItemDesktop.d.ts +1 -1
  2. package/dist/components/ServiceItem/ServiceItemDesktop.js +4 -22
  3. package/dist/components/ServiceItem/ServiceItemMobile.d.ts +1 -1
  4. package/dist/components/ServiceItem/ServiceItemMobile.js +1 -1
  5. package/dist/components/ServiceItem/mobileTypes.d.ts +0 -1
  6. package/dist/components/ServiceItem/types.d.ts +0 -7
  7. package/dist/styles.css +0 -6
  8. package/dist/ui/BottomAmenities/BottomAmenities.d.ts +1 -2
  9. package/dist/ui/BottomAmenities/BottomAmenities.js +2 -4
  10. package/dist/ui/DateTimeSection/DateTimeSection.js +4 -4
  11. package/dist/ui/SeatSection/SeatSection.d.ts +1 -7
  12. package/dist/ui/SeatSection/SeatSection.js +15 -47
  13. package/dist/ui/mobileweb/DateTimeSectionMobile.d.ts +1 -2
  14. package/dist/ui/mobileweb/DateTimeSectionMobile.js +7 -13
  15. package/dist/ui/mobileweb/SeatSectionMobile.d.ts +1 -2
  16. package/dist/ui/mobileweb/SeatSectionMobile.js +16 -23
  17. package/dist/utils/CommonService.d.ts +1 -1
  18. package/dist/utils/CommonService.js +1 -5
  19. package/package.json +1 -1
  20. package/src/components/ServiceItem/ServiceItemDesktop.tsx +1 -47
  21. package/src/components/ServiceItem/ServiceItemMobile.tsx +1 -2
  22. package/src/components/ServiceItem/mobileTypes.ts +26 -31
  23. package/src/components/ServiceItem/types.ts +0 -12
  24. package/src/ui/BottomAmenities/BottomAmenities.tsx +1 -5
  25. package/src/ui/DateTimeSection/DateTimeSection.tsx +4 -4
  26. package/src/ui/SeatSection/SeatSection.tsx +26 -94
  27. package/src/ui/mobileweb/DateTimeSectionMobile.tsx +34 -47
  28. package/src/ui/mobileweb/SeatSectionMobile.tsx +14 -28
  29. package/src/utils/CommonService.ts +1 -7
@@ -131,13 +131,6 @@ function ServiceItemPB({
131
131
  showLoginModal,
132
132
  isLoggedIn,
133
133
  showLoginOption,
134
- isTrain,
135
- selectedSeatKey,
136
- onSeatSelect,
137
- onTrainButtonClick,
138
- showSeatSelectionError,
139
- onShowSeatSelectionError,
140
- onClearSeatSelectionError,
141
134
  isFeatureDropDownExpand,
142
135
  setIsFeatureDropDownExpand,
143
136
  ticketQuantity,
@@ -152,15 +145,6 @@ function ServiceItemPB({
152
145
  isFlores,
153
146
  operatorLabel,
154
147
  }: ServiceItemProps & { currencySign?: string }): React.ReactElement {
155
- const handleSeatSelect = (
156
- key: any,
157
- price: number,
158
- seatKey: string,
159
- apiSeatType?: string,
160
- ) => {
161
- onClearSeatSelectionError?.();
162
- onSeatSelect?.(key, price, seatKey, apiSeatType);
163
- };
164
148
  const getAnimationIcon = (icon: string) => {
165
149
  const animation = ANIMATION_MAP[icon];
166
150
  if (!animation) return null;
@@ -382,17 +366,6 @@ function ServiceItemPB({
382
366
  return;
383
367
  }
384
368
 
385
- if (isTrain) {
386
- if (!selectedSeatKey) {
387
- onShowSeatSelectionError?.(serviceItem.id);
388
- return;
389
- }
390
- if (onTrainButtonClick) {
391
- onTrainButtonClick();
392
- return;
393
- }
394
- }
395
-
396
369
  onBookButtonPress();
397
370
  };
398
371
 
@@ -585,9 +558,7 @@ function ServiceItemPB({
585
558
  : "",
586
559
  }}
587
560
  >
588
- <div
589
- className={`grid text-[#464647] w-full ${isTrain ? "[grid-template-columns:16%_30%_2.5%_28%_15.5%]" : "[grid-template-columns:20%_30%_2.5%_24%_15.5%]"} gap-x-[2%] items-center`}
590
- >
561
+ <div className="grid text-[#464647] w-full [grid-template-columns:20%_30%_2.5%_24%_15.5%] gap-x-[2%] items-center">
591
562
  {/* OPERATOR LOGO */}
592
563
  <div className="flex flex-col gap-[5px]">
593
564
  <div>
@@ -649,10 +620,6 @@ function ServiceItemPB({
649
620
  isPeru={isPeru}
650
621
  renderIcon={renderIcon}
651
622
  discountSeatPriceColor={colors.discountSeatPriceColor}
652
- isTrain={isTrain}
653
- selectedSeatKey={selectedSeatKey}
654
- onSeatSelect={handleSeatSelect}
655
- topLabelColor={colors.topLabelColor}
656
623
  tooltipColor={colors.tooltipColor}
657
624
  />
658
625
  </div>
@@ -669,18 +636,6 @@ function ServiceItemPB({
669
636
  soldOutIcon={renderIcon("soldOutIcon", "14px")}
670
637
  onClick={checkMidnight}
671
638
  />
672
- {showSeatSelectionError === serviceItem.id && isTrain && (
673
- <div className="flex justify-center mr-[11px] w-[100%] right-[0px] absolute left-[0] top-[40px]">
674
- <div
675
- className="text-[9px] text-center whitespace-nowrap"
676
- style={{
677
- color: colors.seatPriceColor,
678
- }}
679
- >
680
- Selecciona el tipo de servicio
681
- </div>
682
- </div>
683
- )}
684
639
  {showLastSeats ? (
685
640
  <div className="flex justify-center mr-[11px] w-[100%] right-[0px] absolute left-[0] top-[40px]">
686
641
  {serviceItem?.available_seats < 10 &&
@@ -713,7 +668,6 @@ function ServiceItemPB({
713
668
  setIsExpand(isItemExpanded ? null : serviceItem.id)
714
669
  }
715
670
  isPeru={isPeru}
716
- isTrain={isTrain}
717
671
  />
718
672
  </div>
719
673
  </div>
@@ -46,8 +46,6 @@ function ServiceItemMobile({
46
46
  removeDuplicateSeats,
47
47
  isLinatal,
48
48
  viewersConfig,
49
- operatorLabel,
50
- isTrain,
51
49
  isFeatureDropDownExpand,
52
50
  setIsFeatureDropDownExpand,
53
51
  ticketQuantity,
@@ -63,6 +61,7 @@ function ServiceItemMobile({
63
61
  onTimeDropdownToggle,
64
62
  wowDealData,
65
63
  isFlores,
64
+ operatorLabel
66
65
  }: MobileServiceItemProps): React.ReactElement {
67
66
  const isItemExpanded = serviceItem.id === isExpanded;
68
67
  const isPetSeat = (Object.keys(serviceItem?.pet_seat_info) || []).length > 0;
@@ -135,36 +135,36 @@ export interface MobileServiceItemProps {
135
135
  bombAnim?: string;
136
136
  whiteBoardingIcon?: string;
137
137
  downArrow?: string;
138
- personIcon?: string;
138
+ personIcon?: string
139
139
  specialDeparture?: string;
140
140
  fireIcon?: string;
141
141
  directoIcon?: string;
142
- whiteFireIcon?: string;
143
- femaleAnim?: string;
144
- thunderAnim?: string;
145
- personsAnim?: string;
146
- whiteOrigin?: string;
147
- whiteDestination?: string;
148
- userIcon?: string;
149
-
150
- sheildIcon?: string;
151
- busIcon?: string;
152
- whiteDownArrow?: string;
153
- empressaIcon?: string;
154
- flexibleIcon?: string;
155
- listoIcon?: string;
156
- precioIcon?: string;
157
- confirmarIcon?: string;
142
+ whiteFireIcon?: string
143
+ femaleAnim?:string
144
+ thunderAnim?: string
145
+ personsAnim?: string
146
+ whiteOrigin?: string,
147
+ whiteDestination?: string,
148
+ userIcon?: string,
149
+
150
+ sheildIcon?: string,
151
+ busIcon?: string,
152
+ whiteDownArrow?: string,
153
+ empressaIcon?: string,
154
+ flexibleIcon?: string,
155
+ listoIcon?: string,
156
+ precioIcon?: string,
157
+ confirmarIcon?: string
158
158
  cancelTicketIcon?: string;
159
159
  changeTicketIcon?: string;
160
160
  petFriendlyIcon?: string;
161
- womenSeatIcon?: string;
161
+ womenSeatIcon?: string
162
162
  [key: string]: string | Record<string, string | undefined> | undefined;
163
163
  };
164
164
  useLottieFor?: string[];
165
165
  };
166
166
  onBookButtonPress?: () => void;
167
- onRemateUiButtonClick?: () => void;
167
+ onRemateUiButtonClick?: ()=> void;
168
168
  terminals?: any[];
169
169
  showDropdown?: boolean;
170
170
  setShowDropdown?: (value: boolean) => void;
@@ -208,7 +208,7 @@ export interface MobileServiceItemProps {
208
208
  seatPriceColor?: string;
209
209
  rightGradiantColor?: string;
210
210
  leftGradiantColor?: string;
211
- discountSeatPriceColor?: string;
211
+ discountSeatPriceColor?: string
212
212
  };
213
213
  isCiva?: boolean;
214
214
  currencySign?: string;
@@ -221,28 +221,23 @@ export interface MobileServiceItemProps {
221
221
  showLastSeats?: boolean;
222
222
  removeDuplicateSeats?: boolean;
223
223
  isLinatal?: boolean;
224
- viewersConfig?: {
224
+ viewersConfig?: {
225
225
  min: number;
226
226
  max: number;
227
227
  interval?: number; // ms, default 5000
228
228
  label?: string; // e.g. "personas están viendo este viaje"
229
229
  icon?: string; // optional icon URL
230
230
  };
231
- isTrain?: boolean;
232
- isFeatureDropDownExpand?: any;
231
+ isFeatureDropDownExpand?: any;
233
232
  setIsFeatureDropDownExpand?: (value: any) => void;
234
233
  ticketQuantity?: number;
235
- onIncreaseTicketQuantity?: (
236
- serviceItem: MobileServiceItemProps["serviceItem"],
237
- ) => void;
238
- onDecreaseTicketQuantity?: (
239
- serviceItem: MobileServiceItemProps["serviceItem"],
240
- ) => void;
234
+ onIncreaseTicketQuantity?: (serviceItem: MobileServiceItemProps["serviceItem"]) => void;
235
+ onDecreaseTicketQuantity?: (serviceItem: MobileServiceItemProps["serviceItem"]) => void;
241
236
  cityOrigin?: { value: number; label: string };
242
237
  cityDestination?: { value: number; label: string };
243
- isNewUi?: boolean;
238
+ isNewUi?: boolean
244
239
 
245
- selectedTimeSlot?: string;
240
+ selectedTimeSlot?: string;
246
241
  onTimeSlotChange?: (slot: string) => void;
247
242
  isTimeDropdownOpen?: string | number | null;
248
243
  onTimeDropdownToggle?: (id?: string | number | null) => void;
@@ -252,18 +252,6 @@ export interface ServiceItemProps {
252
252
  showLoginModal?: any;
253
253
  isLoggedIn?: any;
254
254
  showLoginOption?: boolean;
255
- isTrain?: boolean;
256
- selectedSeatKey?: any;
257
- onSeatSelect?: (
258
- key: any,
259
- price: number,
260
- seatKey: string,
261
- apiSeatType?: string,
262
- ) => void;
263
- onTrainButtonClick?: any;
264
- showSeatSelectionError?: string | null;
265
- onShowSeatSelectionError?: (serviceId: string) => void;
266
- onClearSeatSelectionError?: () => void;
267
255
  selectedTimeSlot?: string;
268
256
  onTimeSlotChange?: (slot: string) => void;
269
257
  isTimeDropdownOpen?: string | number | null;
@@ -28,7 +28,6 @@ interface BottomAmenitiesProps {
28
28
  downArrowIcon?: React.ReactNode;
29
29
  onToggleExpand: () => void;
30
30
  isPeru?: boolean;
31
- isTrain?: boolean;
32
31
  }
33
32
 
34
33
  function BottomAmenities({
@@ -43,7 +42,6 @@ function BottomAmenities({
43
42
  downArrowIcon,
44
43
  onToggleExpand,
45
44
  isPeru,
46
- isTrain,
47
45
  }: BottomAmenitiesProps): React.ReactElement {
48
46
  const hasPetInfo =
49
47
  serviceItem.pet_seat_info &&
@@ -61,9 +59,7 @@ function BottomAmenities({
61
59
  className="grid items-center gap-[2%] flex-1 "
62
60
  style={{
63
61
  // gridTemplateColumns: " 28% 21% 23% 23%",
64
- gridTemplateColumns: isTrain
65
- ? "20.6% 17% 23% 23%"
66
- : "25.3% 17% 23% 23%",
62
+ gridTemplateColumns: "25.3% 17% 23% 23%",
67
63
  }}
68
64
  >
69
65
  {otherItems.map((item) => (
@@ -119,7 +119,7 @@ function DateTimeSection({
119
119
  metaData={metaData}
120
120
  colors={colors}
121
121
  >
122
- <span className="cursor-pointer bold-text capitalize whitespace-nowrap">
122
+ <span className="cursor-pointer bold-text capitalize">
123
123
  {DateService.getServiceItemDate(serviceItem.travel_date)}
124
124
  </span>
125
125
  </StageTooltip>
@@ -134,7 +134,7 @@ function DateTimeSection({
134
134
  metaData={metaData}
135
135
  colors={colors}
136
136
  >
137
- <span className="cursor-pointer bold-text capitalize whitespace-nowrap">
137
+ <span className="cursor-pointer bold-text capitalize">
138
138
  {DateService.getServiceItemDate(serviceItem.arrival_date)}
139
139
  </span>
140
140
  </StageTooltip>
@@ -169,7 +169,7 @@ function DateTimeSection({
169
169
  metaData={metaData}
170
170
  colors={colors}
171
171
  >
172
- <div className="font-[900] bold-text whitespace-nowrap">
172
+ <div className="font-[900] bold-text">
173
173
  {isLinatal ? (
174
174
  <>
175
175
  {cleanedDepTime} <span>{hasPM ? "PM" : hasAM ? "AM" : ""}</span>
@@ -193,7 +193,7 @@ function DateTimeSection({
193
193
  metaData={metaData}
194
194
  colors={colors}
195
195
  >
196
- <div className="font-[900] bold-text whitespace-nowrap">
196
+ <div className="font-[900] bold-text">
197
197
  {removeArrivalTime
198
198
  ? "\u00A0"
199
199
  : serviceItem.arr_time
@@ -7,8 +7,6 @@ interface SeatType {
7
7
  label: string;
8
8
  fare: number;
9
9
  key: any;
10
- apiSeatType?: string;
11
- api_seat_type?: string;
12
10
  }
13
11
 
14
12
  interface SeatSectionProps {
@@ -23,15 +21,6 @@ interface SeatSectionProps {
23
21
  serviceItem?: any;
24
22
  renderIcon?: (iconKey: string, size?: string) => React.ReactNode;
25
23
  discountSeatPriceColor?: string;
26
- isTrain?: boolean;
27
- selectedSeatKey?: any;
28
- onSeatSelect?: (
29
- key: any,
30
- price: number,
31
- seatKey: string,
32
- apiSeatType?: string,
33
- ) => void;
34
- topLabelColor?: string;
35
24
  tooltipColor?: string;
36
25
  }
37
26
 
@@ -43,8 +32,6 @@ function getAllSeatTypes(seatTypes: SeatType[]) {
43
32
  let seatTypesWithPrices = seatTypes.filter(Boolean).map((val) => ({
44
33
  label: val?.label,
45
34
  price: val?.fare,
46
- key: val?.key,
47
- apiSeatType: val?.apiSeatType || val?.api_seat_type,
48
35
  }));
49
36
 
50
37
  seatTypesWithPrices.sort((a, b) => a.price - b.price);
@@ -52,7 +39,7 @@ function getAllSeatTypes(seatTypes: SeatType[]) {
52
39
  return seatTypesWithPrices;
53
40
  }
54
41
 
55
- function getSortedSeatTypes(seatTypes: SeatType[], isTrain: any) {
42
+ function getSortedSeatTypes(seatTypes: SeatType[]) {
56
43
  if (!seatTypes?.length) {
57
44
  return [{ label: "Salon cama", price: 0 }];
58
45
  }
@@ -66,9 +53,7 @@ function getSortedSeatTypes(seatTypes: SeatType[], isTrain: any) {
66
53
  seatTypesWithPrices[2] = seatTypesWithPrices[premiumIndex];
67
54
  }
68
55
 
69
- if (!isTrain) {
70
- seatTypesWithPrices = seatTypesWithPrices.slice(0, 2);
71
- }
56
+ seatTypesWithPrices = seatTypesWithPrices.slice(0, 2);
72
57
 
73
58
  const seenPrices = new Set<number>();
74
59
  seatTypesWithPrices = seatTypesWithPrices.filter((seat) => {
@@ -113,19 +98,15 @@ function SeatSection({
113
98
  priceColor,
114
99
  currencySign,
115
100
  removeDuplicateSeats,
116
- selectedSeatKey,
117
- onSeatSelect,
118
101
  isPeru,
119
102
  serviceItem,
120
103
  renderIcon,
121
104
  dpSeatColor,
122
105
  discountSeatPriceColor,
123
- isTrain,
124
- topLabelColor,
125
106
  tooltipColor,
126
107
  }: SeatSectionProps): React.ReactElement {
127
108
  const uniqueSeats = getUniqueSeats(seatTypes);
128
- const sortedSeatTypes = getSortedSeatTypes(seatTypes, isTrain);
109
+ const sortedSeatTypes = getSortedSeatTypes(seatTypes);
129
110
  const numberOfSeats = getNumberOfSeats(seatTypes);
130
111
  const isCentered = numberOfSeats < 2 || removeDuplicateSeats;
131
112
 
@@ -137,73 +118,28 @@ function SeatSection({
137
118
  const renderSeatNames = () => {
138
119
  const seats = removeDuplicateSeats ? uniqueSeats : sortedSeatTypes;
139
120
 
140
- return seats.map((val, key: number) => {
141
- return SEAT_EXCEPTIONS.includes(val.label) ? null : (
142
- <div
143
- className="flex items-center"
144
- style={isTrain ? { cursor: "pointer" } : undefined}
145
- onClick={
146
- isTrain && !isSoldOut
147
- ? () =>
148
- val.label === selectedSeatKey
149
- ? onSeatSelect?.(null, 0, "", "")
150
- : onSeatSelect?.(
151
- val.label,
152
- val.price,
153
- val.key,
154
- (val as any).apiSeatType,
155
- )
156
- : undefined
157
- }
121
+ return seats.map((val, key: number) =>
122
+ SEAT_EXCEPTIONS.includes(val.label) ? null : (
123
+ <span
124
+ key={key}
125
+ className={`flex items-center justify-between text-[13.33px] ${
126
+ isSoldOut ? "text-[#c0c0c0]" : ""
127
+ }`}
158
128
  >
159
- {isTrain && (
160
- <div
161
- style={{
162
- border: `1px solid ${val.label === selectedSeatKey ? topLabelColor : "#ccc"}`,
163
- borderRadius: "50%",
164
- width: "14px",
165
- height: "14px",
166
- minWidth: "14px",
167
- marginRight: "10px",
168
- display: "flex",
169
- alignItems: "center",
170
- justifyContent: "center",
171
- }}
172
- >
173
- {val.label === selectedSeatKey && (
174
- <div
175
- style={{
176
- backgroundColor: topLabelColor,
177
- borderRadius: "50%",
178
- width: "7px",
179
- height: "7px",
180
- }}
181
- />
182
- )}
183
- </div>
184
- )}
185
- <span
186
- key={key}
187
- className={`flex items-center justify-between text-[13.33px] whitespace-nowrap ${
188
- isSoldOut ? "text-[#c0c0c0]" : ""
189
- }`}
190
- >
191
- {typeof val.label === "string" || typeof val.label === "number"
192
- ? removeDuplicateSeats && isPeru
193
- ? CommonService.truncateSeatLabel(val.label)
194
- : isTrain
195
- ? CommonService.capitalize(String(val.label))
196
- : val.label
197
- : null}
198
- </span>
199
- </div>
200
- );
201
- });
129
+ {typeof val.label === "string" || typeof val.label === "number"
130
+ ? removeDuplicateSeats && isPeru
131
+ ? CommonService.truncateSeatLabel(val.label)
132
+ : val.label
133
+ : null}
134
+ </span>
135
+ ),
136
+ );
202
137
  };
203
138
 
204
139
  const renderSeatPrices = () => {
205
140
  if (isPeru) {
206
- const isMovilBus = serviceItem?.operator_service_name === "MovilBus";
141
+ const isMovilBus =
142
+ serviceItem?.operator_service_name === "MovilBus" || "Movil Bus";
207
143
 
208
144
  // Multiple unique seat types → show a price row for each (MovilBus only)
209
145
  if (isMovilBus && uniqueSeats.length > 1) {
@@ -302,7 +238,6 @@ function SeatSection({
302
238
  }
303
239
  return null;
304
240
  })();
305
- console.log("🚀 ~ SeatSection ~ serviceItem:", serviceItem);
306
241
 
307
242
  // Hide the % OFF badge when max_discount is capping the percentage discount
308
243
  // (i.e. both percentage and max_discount exist, and the raw % amount exceeds the cap)
@@ -324,7 +259,8 @@ function SeatSection({
324
259
 
325
260
  const renderLabels = () => {
326
261
  if (isPeru) {
327
- const isMovilBus = serviceItem?.operator_service_name === "MovilBus";
262
+ const isMovilBus =
263
+ serviceItem?.operator_service_name === "MovilBus" || "Movil Bus";
328
264
 
329
265
  // Multiple unique seat types → show a label row for each (MovilBus only)
330
266
  if (isMovilBus && uniqueSeats.length > 1) {
@@ -355,7 +291,7 @@ function SeatSection({
355
291
  : null;
356
292
 
357
293
  const operatorServiceName =
358
- serviceItem?.operator_service_name === "MovilBus";
294
+ serviceItem?.operator_service_name === "MovilBus" || "Movil Bus";
359
295
 
360
296
  return (
361
297
  <>
@@ -372,9 +308,7 @@ function SeatSection({
372
308
 
373
309
  <span className="text-[13.33px] flex flex-col">
374
310
  {operatorServiceName ? (
375
- <span className="text-[13.33px] whitespace-nowrap">
376
- {seatLabel}
377
- </span>
311
+ <span className="text-[13.33px]">{seatLabel}</span>
378
312
  ) : (
379
313
  <span className="text-[13.33px]">Desde</span>
380
314
  )}
@@ -597,7 +531,7 @@ function SeatSection({
597
531
  style={{ textAlign: "center" }}
598
532
  >
599
533
  <span
600
- className="text-[13.33px] font-normal leading-[20px] text-[#9f9f9f] relative whitespace-nowrap"
534
+ className="text-[13.33px] font-normal leading-[20px] text-[#9f9f9f] relative"
601
535
  style={{
602
536
  position: "relative",
603
537
  }}
@@ -659,9 +593,7 @@ function SeatSection({
659
593
  color: isSoldOut ? "#c0c0c0" : priceColor,
660
594
  top: 0,
661
595
  bottom: 0,
662
- left: isTrain
663
- ? "73%"
664
- : "clamp(60%, 65% + (100vw - 1300px) * 0.1, 65%)",
596
+ left: "clamp(60%, 65% + (100vw - 1300px) * 0.1, 65%)",
665
597
  right: 0,
666
598
  justifyContent: isCentered ? "center" : "",
667
599
  gap: "10px",
@@ -25,7 +25,6 @@ interface DateTimeSectionMobileProps {
25
25
  tooltipBgColor?: string;
26
26
  showLastSeats?: boolean;
27
27
  discountSeatPriceColor?: string;
28
- isTrain?: boolean;
29
28
  }
30
29
 
31
30
  const pad = (n: number) => (n < 10 ? "0" + n : String(n));
@@ -68,47 +67,41 @@ const TimeRow: React.FC<TimeRowProps> = ({
68
67
  isSoldOut,
69
68
  }) => {
70
69
  const formattedDate = DateService.getServiceItemDate(date);
71
- const dotPositionClass = formattedDate.includes("dom")
72
- ? "max-[399px]:left-[53%]"
73
- : "";
74
- return (
75
- <div
76
- className={`flex items-center min-[420]:text-[13px] text-[12px] justify-between ${
77
- isSoldOut ? "text-[#c0c0c0]" : ""
78
- }`}
79
- >
80
- <div className="flex items-center" style={{ flex: 1 }}>
81
- <div>
82
- {" "}
83
- {label ? (
84
- <div className="w-[60px]">{label}</div>
85
- ) : (
86
- <div className="w-[12px] h-auto mr-[5px]">
87
- <img
88
- src={icon}
89
- alt={alt}
90
- className={`w-[12px] h-auto mr-[5px] ${
91
- isSoldOut ? "grayscale" : ""
92
- }`}
93
- />
94
- </div>
95
- )}
96
- </div>
97
- <div
98
- className="flex items-center relative capitalize justify-between"
99
- style={{ flex: 1 }}
100
- >
101
- <span className="cursor-pointer black-text whitespace-nowrap">
102
- {formattedDate}
103
- </span>
104
- <div className={`absolute left-[50%] ${dotPositionClass}`}>•</div>
105
- <div className="font-[900] relative black-text whitespace-nowrap">
106
- {timeContent}
70
+ const dotPositionClass = formattedDate.includes("dom") ? "max-[399px]:left-[53%]" : "";
71
+ return <div
72
+ className={`flex items-center min-[420]:text-[13px] text-[12px] justify-between ${
73
+ isSoldOut ? "text-[#c0c0c0]" : ""
74
+ }`}
75
+ >
76
+ <div className="flex items-center" style={{ flex: 1 }}>
77
+ <div>
78
+ {" "}
79
+ {label ? (
80
+ <div className="w-[60px]">{label}</div>
81
+ ) : (
82
+ <div className="w-[12px] h-auto mr-[5px]">
83
+ <img
84
+ src={icon}
85
+ alt={alt}
86
+ className={`w-[12px] h-auto mr-[5px] ${
87
+ isSoldOut ? "grayscale" : ""
88
+ }`}
89
+ />
107
90
  </div>
108
- </div>
91
+ )}
92
+ </div>
93
+ <div
94
+ className="flex items-center relative capitalize justify-between"
95
+ style={{ flex: 1 }}
96
+ >
97
+ <span className="cursor-pointer black-text">
98
+ {formattedDate}
99
+ </span>
100
+ <div className={`absolute left-[50%] ${dotPositionClass}`}>•</div>
101
+ <div className="font-[900] relative black-text">{timeContent}</div>
109
102
  </div>
110
103
  </div>
111
- );
104
+ </div>;
112
105
  };
113
106
 
114
107
  function DateTimeSectionMobile({
@@ -134,7 +127,6 @@ function DateTimeSectionMobile({
134
127
  tooltipBgColor,
135
128
  showLastSeats,
136
129
  discountSeatPriceColor,
137
- isTrain,
138
130
  }: DateTimeSectionMobileProps): React.ReactElement {
139
131
  const { cleaned: cleanedDepTime, hasAM, hasPM } = getCleanedDepTime(depTime);
140
132
 
@@ -161,12 +153,8 @@ function DateTimeSectionMobile({
161
153
  >
162
154
  {/* DATE AND TIME */}
163
155
  <div
164
- className={`flex flex-col gap-[4px] w-[50%] ${isTrain ? "justify-center" : "justify-between"}`}
165
- style={{
166
- justifyContent: isCiva && "center",
167
- minHeight: isTrain ? undefined : "2.5rem",
168
- alignSelf: isTrain ? "stretch" : undefined,
169
- }}
156
+ className="min-h-[2.5rem] flex flex-col justify-between gap-[4px] w-[50%] "
157
+ style={{ justifyContent: isCiva && "center" }}
170
158
  >
171
159
  <TimeRow
172
160
  label={orignLabel}
@@ -210,7 +198,6 @@ function DateTimeSectionMobile({
210
198
  tooltipBgColor={tooltipBgColor}
211
199
  showLastSeats={showLastSeats}
212
200
  discountSeatPriceColor={discountSeatPriceColor}
213
- isTrain={isTrain}
214
201
  />
215
202
  </div>
216
203
  );