kupos-ui-components-lib 9.9.6 → 9.9.7

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 (42) hide show
  1. package/dist/KuposUIComponent.d.ts +0 -3
  2. package/dist/components/ServiceItem/PeruServiceItemDesktop.d.ts +1 -1
  3. package/dist/components/ServiceItem/PeruServiceItemDesktop.js +176 -156
  4. package/dist/components/ServiceItem/ServiceItemDesktop.d.ts +1 -1
  5. package/dist/components/ServiceItem/ServiceItemDesktop.js +31 -29
  6. package/dist/components/ServiceItem/ServiceItemMobile.d.ts +1 -1
  7. package/dist/components/ServiceItem/ServiceItemMobile.js +17 -43
  8. package/dist/components/ServiceItem/mobileTypes.d.ts +2 -48
  9. package/dist/components/ServiceItem/types.d.ts +8 -27
  10. package/dist/styles.css +16 -219
  11. package/dist/ui/ExpendedDropDown/ExpandedDropdown.d.ts +2 -1
  12. package/dist/ui/ExpendedDropDown/ExpandedDropdown.js +4 -2
  13. package/dist/ui/FeaturServiceUiMobile/FeatureServiceUiMobile.js +10 -3
  14. package/dist/ui/OfferBanner.d.ts +0 -2
  15. package/dist/ui/OfferBanner.js +15 -22
  16. package/dist/ui/SeatSection/SeatSection.d.ts +7 -1
  17. package/dist/ui/SeatSection/SeatSection.js +41 -12
  18. package/dist/ui/mobileweb/DateTimeSectionMobile.d.ts +2 -1
  19. package/dist/ui/mobileweb/DateTimeSectionMobile.js +12 -6
  20. package/dist/ui/mobileweb/SeatSectionMobile.d.ts +2 -1
  21. package/dist/ui/mobileweb/SeatSectionMobile.js +21 -14
  22. package/dist/utils/CommonService.d.ts +1 -4
  23. package/dist/utils/CommonService.js +6 -19
  24. package/package.json +1 -1
  25. package/src/KuposUIComponent.tsx +0 -3
  26. package/src/components/ServiceItem/PeruServiceItemDesktop.tsx +277 -404
  27. package/src/components/ServiceItem/ServiceItemDesktop.tsx +51 -71
  28. package/src/components/ServiceItem/ServiceItemMobile.tsx +290 -387
  29. package/src/components/ServiceItem/mobileTypes.ts +8 -50
  30. package/src/components/ServiceItem/types.ts +13 -32
  31. package/src/styles.css +0 -15
  32. package/src/ui/ExpendedDropDown/ExpandedDropdown.tsx +4 -2
  33. package/src/ui/OfferBanner.tsx +43 -71
  34. package/src/ui/SeatSection/SeatSection.tsx +86 -21
  35. package/src/ui/mobileweb/DateTimeSectionMobile.tsx +44 -35
  36. package/src/ui/mobileweb/SeatSectionMobile.tsx +23 -11
  37. package/src/utils/CommonService.ts +8 -27
  38. package/src/assets/images/anims/service_list/flame_anim.json +0 -1
  39. package/src/assets/images/anims/service_list/thunder_icon.json +0 -1
  40. package/src/assets/images/anims/service_list/users_anim.json +0 -1
  41. package/src/ui/FeaturServiceUiMobile/FeatureServiceUiMobile.tsx +0 -575
  42. package/src/ui/FeatureServiceUI/FeatureServiceUi.tsx +0 -634
@@ -15,9 +15,6 @@ interface KuposUIComponentProps {
15
15
  orignLabel?: string;
16
16
  destinationLabel?: string;
17
17
  t?: (key: string) => string;
18
- ticketQuantity?: number;
19
- onIncreaseTicketQuantity?: (serviceItem: any) => void;
20
- onDecreaseTicketQuantity?: (serviceItem: any) => void;
21
18
  id?: string;
22
19
  name?: string;
23
20
  description?: string;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { ServiceItemProps } from "./types";
3
- declare function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isSeatIcon, showAvailableSeats, isPeru, siteType, isAllinBus, viewersConfig, isExpand, setIsExpand, coachKey, isLoggedIn, showLoginModal, isFlores, isNewUiEnabled, showLoginOption, t, }: ServiceItemProps & {
3
+ declare function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isSeatIcon, showAvailableSeats, isPeru, siteType, isAllinBus, isFlores, t, }: ServiceItemProps & {
4
4
  currencySign?: string;
5
5
  }): React.ReactElement;
6
6
  export default PeruServiceItemDesktop;
@@ -3,6 +3,7 @@ import DateService from "../../utils/DateService";
3
3
  import CommonService from "../../utils/CommonService";
4
4
  import ModalEventManager from "../../utils/ModalEventManager";
5
5
  import InternationalServicePopupBody from "../InternationalServicePopupBody";
6
+ import LottiePlayer from "../../assets/LottiePlayer";
6
7
  import promoAnimation from "../../assets/images/anims/service_list/promocion.json";
7
8
  import flexibleAnimation from "../../assets/images/anims/service_list/flexible.json";
8
9
  import locationAnimation from "../../assets/images/anims/service_list/location.json";
@@ -13,67 +14,73 @@ import pullmanFlexibleAnimation from "../../assets/images/anims/service_list/pul
13
14
  import pullmanPetFriendlyAnimation from "../../assets/images/anims/service_list/pullmanPetFriendly.json";
14
15
  import pullmanLocationAnimation from "../../assets/images/anims/service_list/pullmanLocation.json";
15
16
  import pullmanPriorityStageAnimation from "../../assets/images/anims/service_list/pullmanPriorityStage.json";
17
+ import pullmanPromoAnimation from "../../assets/images/anims/service_list/promocion.json";
18
+ import pullmanDirectoAnimation from "../../assets/images/anims/service_list/directo.json";
16
19
  import opsitesFlexibleAnimation from "../../assets/images/anims/service_list/opsitesFlexible.json";
17
20
  import opsitesPetFriendlyAnimation from "../../assets/images/anims/service_list/opsitesPetFriendly.json";
18
21
  import opsitesLocationAnimation from "../../assets/images/anims/service_list/opsitesLocation.json";
19
22
  import opsitesPriorityStageAnimation from "../../assets/images/anims/service_list/opsitesPriorityStage.json";
20
- import bombAnimation from "../../assets/images/anims/service_list/bomb.json";
21
- import dotAnimation from "../../assets/images/anims/service_list/dot_animation.json";
23
+ import opsitesPromoAnimation from "../../assets/images/anims/service_list/promocion.json";
24
+ import opsitesDirectoAnimation from "../../assets/images/anims/service_list/directo.json";
25
+ import linatalFlexibleAnimation from "../../assets/images/anims/service_list/flexible.json";
26
+ import linatalPromoAnimation from "../../assets/images/anims/service_list/promocion.json";
27
+ import linatalDirectoAnimation from "../../assets/images/anims/service_list/directo.json";
28
+ import linatalPriorityStageAnimation from "../../assets/images/anims/service_list/priority_stage.json";
29
+ import linatalPetFriendlyAnimation from "../../assets/images/anims/service_list/pet_friendly.json";
30
+ import linatalLocationAnimation from "../../assets/images/anims/service_list/location.json";
22
31
  import StageTooltip from "../../ui/StagesTooltip";
23
32
  import RatingBlock from "../../ui/RatingBlock";
24
33
  import DurationBlock from "../../ui/DurationBlock";
25
34
  import PetBlock from "../../ui/PetBlock";
26
35
  import FlexibleBlock from "../../ui/FlexibleBlock";
27
36
  import AmenitiesBlock from "../../ui/AmenitiesBlock";
28
- import SeatSection from "../../ui/SeatSection/SeatSection";
29
- import KuposButton from "../../ui/KuposButton/KuposButton";
30
- import BottomAmenities from "../../ui/BottomAmenities/BottomAmenities";
31
- import OfferBanner from "../../ui/OfferBanner";
32
- import ServiceBadges from "../../ui/ServiceBadges/ServiceBadges";
33
37
  const SEAT_EXCEPTIONS = ["Asiento mascota"];
34
- const ANIMATION_MAP = {
35
- promoAnim: {
36
- kupos: promoAnimation,
37
- },
38
- locationAnim: {
39
- kupos: locationAnimation,
40
- pullman: pullmanLocationAnimation,
41
- opsites: opsitesLocationAnimation,
42
- },
43
- directoAnim: {
44
- kupos: directoAnimation,
45
- },
46
- petFriendlyAnim: {
47
- kupos: petFriendlyAnimation,
48
- pullman: pullmanPetFriendlyAnimation,
49
- opsites: opsitesPetFriendlyAnimation,
50
- },
51
- priorityStageAnim: {
52
- kupos: priorityStageAnimation,
53
- pullman: pullmanPriorityStageAnimation,
54
- opsites: opsitesPriorityStageAnimation,
55
- },
56
- flexibleIcon: {
57
- kupos: flexibleAnimation,
58
- pullman: pullmanFlexibleAnimation,
59
- opsites: opsitesFlexibleAnimation,
60
- },
61
- bombAnimation: {
62
- kupos: bombAnimation,
63
- },
64
- dotAnimation: {
65
- kupos: dotAnimation,
66
- opsites: dotAnimation,
67
- },
68
- };
69
- function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isSeatIcon, showAvailableSeats, isPeru, siteType, isAllinBus, viewersConfig, isExpand, setIsExpand, coachKey, isLoggedIn, showLoginModal, isFlores, isNewUiEnabled, showLoginOption, t = (key) => key, }) {
70
- var _a, _b, _c, _d, _e;
38
+ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isSeatIcon, showAvailableSeats, isPeru, siteType, isAllinBus, isFlores, t = (key) => key, }) {
39
+ var _a, _b, _c, _d;
40
+ const animationMap = {
41
+ promoAnim: {
42
+ kupos: promoAnimation,
43
+ pullman: pullmanPromoAnimation,
44
+ opsites: opsitesPromoAnimation,
45
+ linatal: linatalPromoAnimation,
46
+ },
47
+ locationAnim: {
48
+ kupos: locationAnimation,
49
+ pullman: pullmanLocationAnimation,
50
+ opsites: opsitesLocationAnimation,
51
+ linatal: linatalLocationAnimation,
52
+ },
53
+ directoAnim: {
54
+ kupos: directoAnimation,
55
+ pullman: pullmanDirectoAnimation,
56
+ opsites: opsitesDirectoAnimation,
57
+ linatal: linatalDirectoAnimation,
58
+ },
59
+ petFriendlyAnim: {
60
+ kupos: petFriendlyAnimation,
61
+ pullman: pullmanPetFriendlyAnimation,
62
+ opsites: opsitesPetFriendlyAnimation,
63
+ linatal: linatalPetFriendlyAnimation,
64
+ },
65
+ priorityStageAnim: {
66
+ kupos: priorityStageAnimation,
67
+ pullman: pullmanPriorityStageAnimation,
68
+ opsites: opsitesPriorityStageAnimation,
69
+ linatal: linatalPriorityStageAnimation,
70
+ },
71
+ flexibleIcon: {
72
+ kupos: flexibleAnimation,
73
+ pullman: pullmanFlexibleAnimation,
74
+ opsites: opsitesFlexibleAnimation,
75
+ linatal: linatalFlexibleAnimation,
76
+ },
77
+ };
71
78
  const getAnimationIcon = (icon) => {
72
- var _a;
73
- const animation = ANIMATION_MAP[icon];
79
+ const animation = animationMap[icon];
74
80
  if (!animation)
75
81
  return null;
76
- return (_a = animation[siteType]) !== null && _a !== void 0 ? _a : animation.kupos;
82
+ const currentSiteType = siteType || "kupos";
83
+ return animation[currentSiteType];
77
84
  };
78
85
  const SvgAmenities = ({ moreAnemities, name, color, }) => {
79
86
  var _a;
@@ -99,7 +106,6 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
99
106
  busStage[labelId].split("|")[1] === "true" &&
100
107
  busStage[labelId].split("|")[0];
101
108
  let isSoldOut = serviceItem.available_seats <= 0;
102
- const hasDpEnabled = (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_dp_enabled) === true;
103
109
  const renderIcon = (iconKey, size = "14px") => {
104
110
  var _a;
105
111
  const iconValue = (_a = serviceItem.icons) === null || _a === void 0 ? void 0 : _a[iconKey];
@@ -218,7 +224,6 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
218
224
  };
219
225
  const checkMidnight = () => {
220
226
  var _a, _b;
221
- setIsExpand === null || setIsExpand === void 0 ? void 0 : setIsExpand(null);
222
227
  if ((cityOrigin === null || cityOrigin === void 0 ? void 0 : cityOrigin.label) &&
223
228
  (cityDestination === null || cityDestination === void 0 ? void 0 : cityDestination.label) &&
224
229
  ((cityOrigin.label.toLowerCase().includes("argentina") &&
@@ -307,55 +312,18 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
307
312
  const dropoffName = ((_b = serviceItem.stage_details_arr) === null || _b === void 0 ? void 0 : _b.length)
308
313
  ? extractStage(serviceItem.stage_details_arr, 1)
309
314
  : null;
310
- const countdownSeconds = 599;
311
- const startCountdown = (node) => {
312
- if (!node)
313
- return;
314
- const prevId = node.dataset.countdownId;
315
- if (prevId)
316
- clearInterval(Number(prevId));
317
- let remaining = countdownSeconds;
318
- const formatTime = (totalSecs) => {
319
- const m = Math.floor(totalSecs / 60);
320
- const s = totalSecs % 60;
321
- return `${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
322
- };
323
- node.textContent = formatTime(remaining);
324
- const id = setInterval(() => {
325
- remaining -= 1;
326
- if (remaining <= 0) {
327
- remaining = countdownSeconds;
328
- }
329
- node.textContent = formatTime(remaining);
330
- }, 1000);
331
- node.dataset.countdownId = String(id);
332
- };
333
315
  const items = [
334
316
  {
335
- key: "amenities",
336
- width: "20%",
337
- condition: true,
338
- render: (React.createElement(AmenitiesBlock, { serviceItem: serviceItem, metaData: metaData, isSoldOut: isSoldOut, colors: colors, getAnimationIcon: getAnimationIcon, getAmenityName: CommonService.getAmenityName, SvgAmenities: SvgAmenities, isPeru: isPeru })),
317
+ key: "rating",
318
+ width: "30%",
319
+ render: (React.createElement(RatingBlock, { showRating: showRating, serviceItem: serviceItem, isSoldOut: isSoldOut, colors: colors, t: t, translation: translation, isPeru: isPeru })),
339
320
  },
340
321
  {
341
322
  key: "duration",
342
- width: "12%",
323
+ width: "20%",
343
324
  condition: serviceItem.duration,
344
325
  render: (React.createElement(DurationBlock, { serviceItem: serviceItem, translation: translation, renderIcon: renderIcon, isSoldOut: isSoldOut, colors: colors })),
345
326
  },
346
- // {
347
- // key: "directo",
348
- // width: "12%",
349
- // condition: serviceItem?.is_direct_trip === true,
350
- // render: (
351
- // <DirectoBlock
352
- // translation={translation}
353
- // getAnimationIcon={getAnimationIcon}
354
- // colors={colors}
355
- // isSoldOut={isSoldOut}
356
- // />
357
- // ),
358
- // },
359
327
  {
360
328
  key: "pet",
361
329
  width: "20%",
@@ -366,83 +334,48 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
366
334
  {
367
335
  key: "flexible",
368
336
  width: "20%",
369
- condition: serviceItem.is_change_ticket === true,
337
+ condition: false,
370
338
  render: (React.createElement(FlexibleBlock, { translation: translation, getAnimationIcon: getAnimationIcon, colors: colors, serviceItem: serviceItem, isSoldOut: isSoldOut })),
371
339
  },
340
+ {
341
+ key: "amenities",
342
+ width: "20%",
343
+ render: (React.createElement(AmenitiesBlock, { serviceItem: serviceItem, metaData: metaData, isSoldOut: isSoldOut, colors: colors, isPeru: isPeru, getAnimationIcon: getAnimationIcon, getAmenityName: CommonService.getAmenityName, SvgAmenities: SvgAmenities })),
344
+ },
372
345
  ];
373
- const otherItems = items.filter((i) => i.key !== "pet" && i.key !== "flexible" && !!i.condition);
374
- const isItemExpanded = serviceItem.id === isExpand || isExpand === true;
375
- const grayscaleClass = isSoldOut ? "grayscale" : "";
376
- const hasOfferText = Boolean(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text);
377
- const offerGradient = `linear-gradient(90deg, ${colors.rightGradiantColor || "#ff5964"} 0%, ${colors.leftGradiantColor || "#ff8842"} 100%)`;
378
- const offerGradientWithOpacity = `linear-gradient(90deg, ${colors.rightGradiantColor || "#ff5964"}80 0%, ${colors.leftGradiantColor || "#ff8842"}80 100%)`;
379
- const serviceCardStyle = (hasOfferText && isNewUiEnabled) || hasDpEnabled
380
- ? {
381
- borderColor: "transparent",
382
- borderStyle: "solid",
383
- borderWidth: "3px 3px 0 3px",
384
- borderRadius: isItemExpanded || coachKey ? "18px 18px 0 0" : "18px",
385
- background: `linear-gradient(#fff, #fff) padding-box, ${isSoldOut ? offerGradientWithOpacity : offerGradient} border-box`,
386
- // zIndex: 1,
387
- }
388
- : {};
389
- const seats = removeDuplicateSeats
390
- ? ((_c = serviceItem.seat_types) === null || _c === void 0 ? void 0 : _c.filter((seat, index, self) => index === self.findIndex((s) => s.label === seat.label))) || []
391
- : serviceItem.seat_types || [];
392
- const discountedSeats = seats.map((seat) => (Object.assign(Object.assign({}, seat), CommonService.calculateDiscountedPrice(seat.fare, serviceItem))));
393
- const hasDiscount = discountedSeats.some((seat) => seat.originalPrice !== seat.discountedPrice);
394
- return (React.createElement("div", { className: `relative hover:z-[150] ${hasOfferText ? "mb-[55px]" : "mb-[10px]"} ${(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ||
346
+ const amenitiesItem = items.find((i) => i.key === "amenities");
347
+ const otherItems = items.filter((i) => i.key !== "amenities" && i.condition !== false);
348
+ return (React.createElement("div", { className: `relative ${serviceItem.offer_text ? "mb-[55px]" : "mb-[10px]"} ${(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ||
395
349
  (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" ||
396
350
  showTopLabel
397
351
  ? "mt-[24px]"
398
352
  : "mt-[20px]"} ` },
399
- ((serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) || hasDpEnabled) && !isSoldOut && (React.createElement(OfferBanner, { offerGradient: offerGradient, isSoldOut: isSoldOut, serviceItem: serviceItem, renderIcon: renderIcon, isLoggedIn: isLoggedIn, showLoginModal: showLoginModal, viewersConfig: viewersConfig, getAnimationIcon: getAnimationIcon, showLoginOption: showLoginOption, isNewUiEnabled: isNewUiEnabled, colors: colors })),
400
- React.createElement("div", { id: `service-card-${serviceItem.id}`, className: `bg-white mx-auto relative ${(hasOfferText && isNewUiEnabled && !isSoldOut) || hasDpEnabled
401
- ? "z-[3] rounded-[18px]"
402
- : "rounded-[10px] border border-[#ccc]"}`, style: serviceCardStyle },
403
- React.createElement("div", { className: " pt-[20px]", style: {
404
- padding: hasOfferText
405
- ? "20px 15px 10px 15px"
406
- : coachKey
407
- ? "20px 15px 20px 15px"
408
- : "20px 15px 10px 15px",
409
- marginTop: hasDiscount || hasOfferText ? "14px" : "",
410
- } },
411
- React.createElement("div", { className: "grid text-[#464647] w-full [grid-template-columns:14%_40%_0.5%_24%_13.5%] gap-x-[2%] items-center",
412
- // style={{ marginTop: showTopLabel ? "8px" : "" }}
413
- style: {
414
- marginTop: showTopLabel || (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ? "8px" : "",
415
- } },
416
- React.createElement("div", { style: {
417
- display: "flex",
418
- flexDirection: "column",
419
- // gap: "5px",
420
- } },
421
- React.createElement("div", {
422
- // className="flex items-center justify-center m-[auto]"
423
- className: "" },
424
- React.createElement("img", { src: serviceItem.operator_details[0], alt: "service logo", className: `h-auto object-contain ${isFlores ? "w-[80%]" : "w-full"} ${isSoldOut ? "grayscale" : ""}` }),
425
- isCiva ? (React.createElement("div", { className: "text-[13.33px] black-text ml-2" }, serviceItem.operator_details[2])) : null),
426
- React.createElement(RatingBlock, { showRating: showRating, serviceItem: serviceItem, isSoldOut: isSoldOut, colors: colors, t: t, translation: translation, isPeru: isPeru })),
353
+ React.createElement("div", { className: "bg-white rounded-[20px] shadow-service mx-auto relative" },
354
+ React.createElement("div", { className: "p-[15px] pt-[20px]" },
355
+ React.createElement("div", { className: "grid text-[#464647] w-full [grid-template-columns:14%_40%_0.5%_24%_13.5%] gap-x-[2%] items-center", style: { marginTop: showTopLabel ? "8px" : "" } },
356
+ React.createElement("div", { className: "flex items-center justify-center m-[auto]" },
357
+ React.createElement("div", { className: " " },
358
+ React.createElement("img", { src: serviceItem.operator_details[0], alt: "service logo", className: `h-auto object-contain ${isFlores ? "w-[80%]" : "w-full"} ${isSoldOut ? "grayscale" : ""}` })),
359
+ isCiva ? (React.createElement("div", { className: "text-[13.33px] black-text ml-2" }, serviceItem.operator_details[2])) : null),
427
360
  React.createElement("div", { className: `min-h-[2.5rem] grid grid-cols-[0.8fr_auto_26%_1fr] gap-x-4 items-center text-[13.33px] ${isSoldOut ? "text-[#c0c0c0]" : ""}`, style: {
428
361
  gridTemplateRows: "1fr",
429
362
  } },
430
- React.createElement("div", { className: "flex flex-col gap-[4px]" },
363
+ React.createElement("div", { className: "flex flex-col gap-[10px]" },
431
364
  orignLabel ? (React.createElement("div", { className: "w-[60px] h-[20px] flex items-center bold-text" }, orignLabel)) : (React.createElement("div", { className: "h-[20px] flex items-center" },
432
- React.createElement("img", { src: (_d = serviceItem.icons) === null || _d === void 0 ? void 0 : _d.origin, alt: "origin", className: `w-[18px] h-auto mr-[8px] ${isSoldOut ? "grayscale" : ""}` }))),
365
+ React.createElement("img", { src: (_c = serviceItem.icons) === null || _c === void 0 ? void 0 : _c.origin, alt: "origin", className: `w-[18px] h-auto mr-[8px] ${isSoldOut ? "grayscale" : ""}` }))),
433
366
  !isCiva &&
434
367
  (destinationLabel ? (React.createElement("div", { className: "w-[60px] h-[20px] flex items-center bold-text" }, destinationLabel)) : (React.createElement("div", { className: "h-[20px] flex items-center" },
435
- React.createElement("img", { src: (_e = serviceItem.icons) === null || _e === void 0 ? void 0 : _e.destination, className: `w-[18px] h-auto mr-[8px] ${isSoldOut ? "grayscale" : ""}`, style: { opacity: isSoldOut ? 0.5 : 1 } }))))),
436
- React.createElement("div", { className: "flex flex-col gap-[4px]" },
368
+ React.createElement("img", { src: (_d = serviceItem.icons) === null || _d === void 0 ? void 0 : _d.destination, className: `w-[18px] h-auto mr-[8px] ${isSoldOut ? "grayscale" : ""}`, style: { opacity: isSoldOut ? 0.5 : 1 } }))))),
369
+ React.createElement("div", { className: "flex flex-col gap-[10px]" },
437
370
  React.createElement(StageTooltip, { stageData: serviceItem.boarding_stages, direction: 1, terminals: busStage, serviceItem: serviceItem, metaData: metaData, colors: colors },
438
371
  React.createElement("span", { className: "cursor-pointer bold-text capitalize" }, DateService.getServiceItemDate(serviceItem.travel_date))),
439
372
  !isCiva && (React.createElement(StageTooltip, { stageData: serviceItem.dropoff_stages, direction: 2, terminals: busStage, serviceItem: serviceItem, metaData: metaData, colors: colors },
440
373
  React.createElement("span", { className: "cursor-pointer bold-text capitalize" }, DateService.getServiceItemDate(serviceItem.arrival_date))))),
441
- React.createElement("div", { className: "flex flex-col gap-[4px] items-center" },
374
+ React.createElement("div", { className: "flex flex-col gap-[10px] items-center" },
442
375
  React.createElement("div", { className: "h-[20px] flex items-center justify-center" },
443
376
  React.createElement("div", null, "\u2022")),
444
377
  !isCiva && (React.createElement("div", { className: "h-[20px] flex items-center justify-center" }, removeArrivalTime ? null : serviceItem.arr_time ? (React.createElement("div", null, "\u2022")) : null))),
445
- React.createElement("div", { className: "flex flex-col gap-[4px]" },
378
+ React.createElement("div", { className: "flex flex-col gap-[10px]" },
446
379
  React.createElement(StageTooltip, { stageData: serviceItem.boarding_stages, direction: 1, terminals: busStage, serviceItem: serviceItem, metaData: metaData, colors: colors },
447
380
  React.createElement("div", { className: "font-[900] bold-text" }, DateService.formatTime(serviceItem.dep_time))),
448
381
  !isCiva && (React.createElement(StageTooltip, { stageData: serviceItem.dropoff_stages, direction: 2, terminals: busStage, serviceItem: serviceItem, metaData: metaData, colors: colors },
@@ -458,15 +391,102 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
458
391
  margin: "auto",
459
392
  } }),
460
393
  React.createElement("div", { className: "content-center" },
461
- React.createElement(SeatSection, { seatTypes: serviceItem.seat_types, serviceItem: serviceItem, availableSeats: serviceItem.available_seats, isSoldOut: isSoldOut, priceColor: colors.priceColor, currencySign: currencySign, removeDuplicateSeats: removeDuplicateSeats, isPeru: isPeru, renderIcon: renderIcon, discountSeatPriceColor: colors.discountSeatPriceColor })),
462
- React.createElement("div", { className: "relative" },
463
- React.createElement(KuposButton, { isSoldOut: isSoldOut, isLoading: serviceDetailsLoading, buttonColor: colors.kuposButtonColor, buyLabel: translation === null || translation === void 0 ? void 0 : translation.buyButton, soldOutLabel: translation === null || translation === void 0 ? void 0 : translation.soldOutButton, soldOutIcon: renderIcon("soldOutIcon", "14px"), onClick: checkMidnight }),
464
- showLastSeats ? (React.createElement("div", { className: "flex justify-center mr-[11px] w-[100%] right-[0px] absolute left-[0] top-[40px]" }, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) < 10 &&
465
- (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) > 0 && (React.createElement("div", { className: "text-[12px] mt-1 text-center", style: {
466
- color: colors.seatPriceColor,
467
- } }, "\u00A1\u00DAltimos Asientos!")))) : null)),
468
- React.createElement(BottomAmenities, { otherItems: otherItems, serviceItem: serviceItem, grayscaleClass: grayscaleClass, isSoldOut: isSoldOut, isItemExpanded: isItemExpanded, colors: colors, translation: translation, getAnimationIcon: getAnimationIcon, downArrowIcon: renderIcon("downArrow", "10px"), onToggleExpand: () => setIsExpand && setIsExpand(isItemExpanded ? null : serviceItem.id), isPeru: isPeru }))),
394
+ React.createElement("div", { className: `relative flex gap-[10px] text-[13.33px] justify-between min-h-[2.5rem] ${getNumberOfSeats() < 3 ? "" : ""}`, style: getNumberOfSeats() < 2
395
+ ? { alignItems: "center" }
396
+ : { alignItems: "center" } },
397
+ React.createElement("div", { className: "flex flex-col justify-between" }, getSeatNames()),
398
+ React.createElement("div", { className: "flex flex-col justify-between absolute inset-y-0 right-0 left-1/2 h-full", style: {
399
+ color: isSoldOut ? "#c0c0c0" : colors.priceColor,
400
+ top: 0,
401
+ bottom: 0,
402
+ left: "68%",
403
+ right: 0,
404
+ justifyContent: getNumberOfSeats() < 2 ? "center" : "center",
405
+ gap: "5px",
406
+ } },
407
+ React.createElement("span", { style: {
408
+ position: "absolute",
409
+ top: getNumberOfSeats() > 1 ? -10 : -5,
410
+ fontWeight: "initial",
411
+ fontSize: "12px",
412
+ left: 0,
413
+ color: "#6a6a6a",
414
+ } }, "Desde"),
415
+ getSeatPrice()))),
416
+ React.createElement("div", null,
417
+ React.createElement("button", { onClick: () => (!isSoldOut ? checkMidnight() : null), disabled: serviceDetailsLoading, className: `w-full ${serviceDetailsLoading || isSoldOut ? "py-[12px]" : "py-[12px]"} text-[13.33px] font-bold text-white rounded-[10px] border-none px-[20px] flex items-center justify-center`, style: {
418
+ backgroundColor: serviceDetailsLoading || isSoldOut
419
+ ? "lightgray"
420
+ : colors.kuposButtonColor,
421
+ cursor: serviceDetailsLoading || isSoldOut
422
+ ? "not-allowed"
423
+ : "pointer",
424
+ } },
425
+ React.createElement("span", { className: "min-w-[75px] flex justify-center items-center bold-text uppercase" },
426
+ isSoldOut ? renderIcon("soldOutIcon", "14px") : null,
427
+ serviceDetailsLoading ? (React.createElement("span", { className: "loader-circle" })) : !isSoldOut ? (translation === null || translation === void 0 ? void 0 : translation.buyButton) : (translation === null || translation === void 0 ? void 0 : translation.soldOutButton))))),
428
+ showLastSeats ? (React.createElement("div", { className: "flex justify-end mr-[11px]" }, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) < 10 &&
429
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) > 0 && (React.createElement("div", { className: "text-[12px] text-[red] mt-1 text-center" }, "\u00A1 \u00DAltimos Asientos!")))) : null,
430
+ React.createElement("div", { className: "flex items-center mt-[15px] border-t border-[#eee] pt-[10px]" },
431
+ React.createElement("div", { className: "grid items-center gap-[2%] flex-1", style: {
432
+ gridTemplateColumns: "30% 18% 23% 23%",
433
+ // otherItems
434
+ // .map((i) => i.width)
435
+ // .join(" "),
436
+ } }, otherItems.map((item) => (React.createElement("div", { key: item.key, className: "flex items-center " }, item.render)))),
437
+ React.createElement("div", { className: "flex items-center ml-[12px] shrink-0 w-[130px] justify-end" }, amenitiesItem === null || amenitiesItem === void 0 ? void 0 : amenitiesItem.render)))),
469
438
  children,
470
- React.createElement(ServiceBadges, { showTopLabel: showTopLabel, isSoldOut: isSoldOut, colors: colors, renderIcon: renderIcon, translation: translation, serviceItem: serviceItem })));
439
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) && (React.createElement("div", { className: ` text-white p-[10px_15px] text-left w-full flex items-center absolute -bottom-[36px] pt-[50px] -z-10 rounded-b-[14px] text-[14px]`, style: {
440
+ backgroundColor: isSoldOut
441
+ ? colors === null || colors === void 0 ? void 0 : colors.bottomStripColor
442
+ : colors === null || colors === void 0 ? void 0 : colors.bottomStripColor,
443
+ opacity: isSoldOut ? 0.5 : 1,
444
+ } },
445
+ React.createElement(LottiePlayer
446
+ // animationData={serviceItem.icons.promoAnim}
447
+ , {
448
+ // animationData={serviceItem.icons.promoAnim}
449
+ animationData: getAnimationIcon("promoAnim"), width: "18px", height: "18px" }),
450
+ React.createElement("span", { className: "ml-[10px]" }, serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text))),
451
+ React.createElement("div", { className: "absolute -top-[11px] left-0 w-full flex items-center justify-end gap-[12px] pr-[15px] z-10 " },
452
+ showTopLabel && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] px-[14px] rounded-[38px] text-[12.5px] z-20`, style: {
453
+ backgroundColor: isSoldOut ? "#ddd" : colors.ratingBottomColor,
454
+ } },
455
+ React.createElement("div", { className: isSoldOut ? "grayscale" : "" },
456
+ React.createElement(LottiePlayer
457
+ // animationData={serviceItem.icons.priorityStageAnim}
458
+ , {
459
+ // animationData={serviceItem.icons.priorityStageAnim}
460
+ animationData: getAnimationIcon("priorityStageAnim"), width: "14px", height: "14px" })),
461
+ React.createElement("div", { className: isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]` }, showTopLabel))),
462
+ boardingName && isAllinBus && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] px-[14px] rounded-[38px] text-[12.5px] z-20`, style: {
463
+ backgroundColor: isSoldOut ? "#ddd" : colors.ratingBottomColor,
464
+ } },
465
+ React.createElement("div", { className: isSoldOut ? "grayscale" : "" },
466
+ React.createElement(LottiePlayer
467
+ // animationData={serviceItem.icons.priorityStageAnim}
468
+ , {
469
+ // animationData={serviceItem.icons.priorityStageAnim}
470
+ animationData: getAnimationIcon("priorityStageAnim"), width: "14px", height: "14px" })),
471
+ React.createElement("div", { className: isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]` }, boardingName))),
472
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_transpordo) && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] text-white px-[14px] rounded-[38px] text-[12.5px] z-20`, style: {
473
+ backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
474
+ } },
475
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.connectingServiceIcon, width: "14px", height: "14px" }),
476
+ React.createElement("div", null, "Conexión"))),
477
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] text-white px-[14px] rounded-[38px] text-[12.5px] z-20 `, style: {
478
+ backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
479
+ } },
480
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.directoAnim, width: "14px", height: "14px" }),
481
+ React.createElement("div", null, translation === null || translation === void 0 ? void 0 : translation.directService))),
482
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] text-white px-[14px] rounded-[38px] text-[12.5px] z-20 `, style: {
483
+ backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
484
+ } },
485
+ React.createElement(LottiePlayer
486
+ // animationData={serviceItem.icons.directoAnim}
487
+ , {
488
+ // animationData={serviceItem.icons.directoAnim}
489
+ animationData: getAnimationIcon("directoAnim"), width: "14px", height: "14px" }),
490
+ React.createElement("div", null, "Tren Express"))))));
471
491
  }
472
492
  export default PeruServiceItemDesktop;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { ServiceItemProps } from "./types";
3
- declare function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isPeruSites, showAvailableSeats, isSeatIcon, isLinatal, isPeru, t, siteType, isAllinBus, isExpand, setIsExpand, coachKey, viewersConfig, isNewUi, showLoginModal, isLoggedIn, showLoginOption, isFeatureDropDownExpand, setIsFeatureDropDownExpand, ticketQuantity, onIncreaseTicketQuantity, onDecreaseTicketQuantity, onRemateUiButtonClick, selectedTimeSlot, onTimeSlotChange, isTimeDropdownOpen, onTimeDropdownToggle, wowDealData, isFlores, }: ServiceItemProps & {
3
+ declare function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, currencySign, isCiva, showRating, showLastSeats, removeArrivalTime, removeDuplicateSeats, isPeruSites, showAvailableSeats, isSeatIcon, isLinatal, isPeru, t, siteType, isAllinBus, isExpand, setIsExpand, coachKey, viewersConfig, showLoginModal, isLoggedIn, showLoginOption, isTrain, selectedSeatKey, onSeatSelect, onTrainButtonClick, showSeatSelectionError, onShowSeatSelectionError, onClearSeatSelectionError, isFlores, operatorLabel, }: ServiceItemProps & {
4
4
  currencySign?: string;
5
5
  }): React.ReactElement;
6
6
  export default ServiceItemPB;