kupos-ui-components-lib 9.0.10 → 9.0.12

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 (48) hide show
  1. package/dist/assets/images/anims/service_list/priority_stage.json +1 -1
  2. package/dist/components/ServiceItem/PeruServiceItemDesktop.js +1 -1
  3. package/dist/components/ServiceItem/RatingHover.d.ts +1 -0
  4. package/dist/components/ServiceItem/RatingHover.js +30 -29
  5. package/dist/components/ServiceItem/ServiceItemDesktop.js +83 -28
  6. package/dist/components/ServiceItem/ServiceItemMobile.d.ts +1 -1
  7. package/dist/components/ServiceItem/ServiceItemMobile.js +83 -26
  8. package/dist/components/ServiceItem/mobileTypes.d.ts +2 -0
  9. package/dist/styles.css +52 -18
  10. package/dist/ui/AmenitiesBlock.js +25 -24
  11. package/dist/ui/BottomAmenities/BottomAmenities.js +1 -1
  12. package/dist/ui/DateTimeSection/DateTimeSection.js +2 -2
  13. package/dist/ui/DirectoBlock.js +2 -2
  14. package/dist/ui/DurationBlock.js +2 -2
  15. package/dist/ui/ExpendedDropDown/ExpandedDropdown.d.ts +1 -10
  16. package/dist/ui/ExpendedDropDown/ExpandedDropdown.js +1 -1
  17. package/dist/ui/FlexibleBlock.js +3 -2
  18. package/dist/ui/RatingBlock.d.ts +2 -1
  19. package/dist/ui/RatingBlock.js +4 -4
  20. package/dist/ui/SeatSection/SeatSection.js +20 -2
  21. package/dist/ui/TopAmenities/TopAmenities.d.ts +2 -1
  22. package/dist/ui/TopAmenities/TopAmenities.js +11 -5
  23. package/dist/ui/mobileweb/BottomAmenitiesMobile.d.ts +2 -1
  24. package/dist/ui/mobileweb/BottomAmenitiesMobile.js +18 -18
  25. package/dist/ui/mobileweb/ExpandedDropdownMobile.d.ts +11 -0
  26. package/dist/ui/mobileweb/ExpandedDropdownMobile.js +32 -0
  27. package/dist/ui/mobileweb/TopAmenitieMobile.d.ts +5 -1
  28. package/dist/ui/mobileweb/TopAmenitieMobile.js +42 -9
  29. package/package.json +1 -1
  30. package/src/assets/images/anims/service_list/priority_stage.json +1 -1
  31. package/src/components/ServiceItem/PeruServiceItemDesktop.tsx +1 -0
  32. package/src/components/ServiceItem/RatingHover.tsx +51 -48
  33. package/src/components/ServiceItem/ServiceItemDesktop.tsx +178 -29
  34. package/src/components/ServiceItem/ServiceItemMobile.tsx +127 -64
  35. package/src/components/ServiceItem/mobileTypes.ts +2 -0
  36. package/src/ui/AmenitiesBlock.tsx +34 -34
  37. package/src/ui/BottomAmenities/BottomAmenities.tsx +8 -8
  38. package/src/ui/DateTimeSection/DateTimeSection.tsx +2 -2
  39. package/src/ui/DirectoBlock.tsx +2 -2
  40. package/src/ui/DurationBlock.tsx +2 -2
  41. package/src/ui/ExpendedDropDown/ExpandedDropdown.tsx +0 -12
  42. package/src/ui/FlexibleBlock.tsx +3 -2
  43. package/src/ui/RatingBlock.tsx +4 -2
  44. package/src/ui/SeatSection/SeatSection.tsx +22 -2
  45. package/src/ui/TopAmenities/TopAmenities.tsx +40 -29
  46. package/src/ui/mobileweb/BottomAmenitiesMobile.tsx +65 -64
  47. package/src/ui/mobileweb/ExpandedDropdownMobile.tsx +56 -0
  48. package/src/ui/mobileweb/TopAmenitieMobile.tsx +65 -21
@@ -1 +1 @@
1
- {"nm":"Main Scene","ddd":0,"h":100,"w":100,"meta":{"g":"@lottiefiles/creator 1.86.1"},"layers":[{"ty":4,"nm":"Shape Layer 1","sr":1,"st":0,"op":150,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[71.60193719360672,49.48916172143199]},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[90,90],"t":4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100],"t":31},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[90,90],"t":63},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100],"t":97},{"s":[90,90],"t":133}]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[71.60193719360672,49.48916172143199]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 1","np":5,"it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[24.18,0],[0,-24.18],[-24.18,0],[0,24.18]],"o":[[0,-24.18],[-24.18,0],[0,24.18],[24.18,0],[0,0]],"v":[[93.78,50],[50,6.22],[6.22,50],[50,93.78],[93.78,50]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 2","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[11.23,0],[0,-11.23],[-11.23,0],[0,11.23]],"o":[[0,-11.23],[-11.23,0],[0,11.23],[11.23,0],[0,0]],"v":[[70.34,50],[50,29.66],[29.66,50],[50,70.34],[70.34,50]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 3","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[14.66,0],[0,14.66],[-14.66,0],[0,-14.66]],"o":[[0,14.66],[-14.66,0],[0,-14.66],[14.66,0],[0,0]],"v":[[76.55,50],[50,76.55],[23.45,50],[50,23.45],[76.55,50]]}}},{"ty":"sh","bm":0,"hd":false,"nm":"Path 4","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[27.61,0],[0,27.61],[-27.61,0],[0,-27.61]],"o":[[0,27.61],[-27.61,0],[0,-27.61],[27.61,0],[0,0]],"v":[[100,50],[50,100],[0,50],[50,0],[100,50]]}}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[71.60193719360672,49.48916172143199]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[71.60193719360672,49.48916172143199]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":1}],"v":"5.7.0","fr":30,"op":150,"ip":0,"assets":[]}
1
+ {"nm":"Main Scene","ddd":0,"h":500,"w":500,"meta":{"g":"@lottiefiles/creator 1.25.0"},"layers":[{"ty":0,"nm":" Main Scene","sr":1,"st":0,"op":90,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[250,250]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[250,250]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":500,"h":500,"refId":"precomp_Main Scene_c6717324-fe11-4912-8421-1a94a5c0a552","ind":1}],"v":"5.7.0","fr":30,"op":90,"ip":0,"assets":[{"nm":"Main Scene","id":"precomp_Main Scene_c6717324-fe11-4912-8421-1a94a5c0a552","layers":[{"ty":4,"nm":"Shape Layer - SVG","sr":1,"st":0,"op":90,"ip":0,"hd":false,"ln":"Capa_1","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[32.5,32.5]},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":4},{"s":[619.0851,619.0851],"t":14}]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[249.94198808735723,248.20464459007883]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0},{"s":[100],"t":7}]}},"shapes":[{"ty":"gr","bm":0,"hd":false,"nm":"Group 1","it":[{"ty":"sh","bm":0,"hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.0100000000000051,0.14999999999999858],[0,0],[0,0],[1.0400000000000063,0],[0.46000000000000085,-0.9199999999999999],[0,0],[0,0],[0.3200000000000003,-0.9899999999999984],[-0.75,-0.740000000000002],[0,0],[0,0],[-0.8599999999999994,-0.6299999999999955],[-0.9000000000000004,0.480000000000004],[0,0],[0,0],[-0.4299999999999997,0],[-0.47000000000000597,0.3400000000000034],[0.14999999999999858,1.0300000000000011],[0,0],[0,0],[0.3299999999999983,0.990000000000002],[0,0]],"o":[[-0.3200000000000003,-0.9899999999999984],[0,0],[0,0],[-0.46999999999999886,-0.96],[-1.0400000000000063,0],[0,0],[0,0],[-1.0099999999999998,0.14999999999999858],[-0.32000000000000006,0.9899999999999984],[0,0],[0,0],[-0.17999999999999972,1.0300000000000011],[0.8300000000000001,0.6300000000000026],[0,0],[0,0],[0.3999999999999986,0.21999999999999886],[0.5399999999999991,0],[0.8299999999999983,-0.6300000000000026],[0,0],[0,0],[0.7199999999999989,-0.7399999999999984],[0,0],[0,0]],"v":[[62.9,25.51],[60.739999999999995,23.67],[42.89999999999999,21.020000000000003],[34.93999999999999,4.510000000000002],[32.52999999999999,3.0000000000000018],[30.119999999999987,4.510000000000002],[22.149999999999988,21.020000000000003],[4.309999999999988,23.67],[2.149999999999988,25.51],[2.829999999999988,28.310000000000002],[15.729999999999988,41.17],[12.669999999999987,59.34],[13.749999999999988,62.03],[16.559999999999988,62.25],[32.48999999999999,53.66],[48.41999999999999,62.25],[49.679999999999986,62.58],[51.26999999999999,62.059999999999995],[52.34999999999999,59.37],[49.289999999999985,41.199999999999996],[62.18999999999998,28.339999999999996],[62.86999999999998,25.539999999999996],[62.90999999999998,25.499999999999996]]}}},{"ty":"st","bm":0,"hd":false,"nm":"Stroke","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":3.58},"c":{"a":0,"k":[0.9765,0.5373,0.2706]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":1}]}]}
@@ -316,7 +316,7 @@ function PeruServiceItemDesktop({ serviceItem, onBookButtonPress, colors, metaDa
316
316
  {
317
317
  key: "rating",
318
318
  width: "30%",
319
- render: (React.createElement(RatingBlock, { showRating: showRating, serviceItem: serviceItem, isSoldOut: isSoldOut, colors: colors, t: t, translation: translation })),
319
+ render: (React.createElement(RatingBlock, { showRating: showRating, serviceItem: serviceItem, isSoldOut: isSoldOut, colors: colors, t: t, translation: translation, isPeru: isPeru })),
320
320
  },
321
321
  {
322
322
  key: "duration",
@@ -7,6 +7,7 @@ interface RatingHoverProps {
7
7
  translation?: {
8
8
  [key: string]: string;
9
9
  };
10
+ isPeru?: boolean;
10
11
  }
11
12
  declare const RatingHover: React.FC<RatingHoverProps>;
12
13
  export default RatingHover;
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import RatingItem from "./RatingItem";
3
- const RatingHover = ({ serviceItem, isSoldOut, colors, t = (key) => key, translation, }) => {
3
+ const RatingHover = ({ serviceItem, isSoldOut, colors, t = (key) => key, translation, isPeru, }) => {
4
+ const ratingIndex = isPeru ? 7 : 6;
4
5
  return (React.createElement("div", { className: "flex items-center" },
5
6
  React.createElement("div", { className: "w-[18px] h-auto mr-[4px] relative" },
6
7
  React.createElement("img", { src: serviceItem.icons.rating, alt: "origin", className: `w-[16px] h-[16px] mr-[4px] object-contain mb-[4px] ${isSoldOut ? "grayscale" : ""}`, onMouseEnter: (e) => {
@@ -22,37 +23,37 @@ const RatingHover = ({ serviceItem, isSoldOut, colors, t = (key) => key, transla
22
23
  React.createElement("div", { className: "text-[12px] bold-text" }, translation === null || translation === void 0 ? void 0 : translation.ratingMouseOverText),
23
24
  React.createElement("div", { className: "text-[12px] font-light" }, serviceItem.operator_service_name)),
24
25
  React.createElement("div", { className: "px-3 py-2 flex flex-col gap-[10px] font9" },
25
- React.createElement(RatingItem, { rating: serviceItem.operator_details[6] &&
26
- serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
27
- serviceItem.operator_details[6])[0]] &&
28
- parseFloat(serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
29
- serviceItem.operator_details[6])[0]]).toFixed(1)
30
- ? +parseFloat(serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
31
- serviceItem.operator_details[6])[0]]).toFixed(1)
26
+ React.createElement(RatingItem, { rating: serviceItem.operator_details[ratingIndex] &&
27
+ serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
28
+ serviceItem.operator_details[ratingIndex])[0]] &&
29
+ parseFloat(serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
30
+ serviceItem.operator_details[ratingIndex])[0]]).toFixed(1)
31
+ ? +parseFloat(serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
32
+ serviceItem.operator_details[ratingIndex])[0]]).toFixed(1)
32
33
  : 0, label: translation === null || translation === void 0 ? void 0 : translation.busQuality, isSoldOut: isSoldOut }),
33
- React.createElement(RatingItem, { rating: serviceItem.operator_details[6] &&
34
- serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
35
- serviceItem.operator_details[6])[1]] &&
36
- parseFloat(serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
37
- serviceItem.operator_details[6])[1]]).toFixed(1)
38
- ? +parseFloat(serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
39
- serviceItem.operator_details[6])[1]]).toFixed(1)
34
+ React.createElement(RatingItem, { rating: serviceItem.operator_details[ratingIndex] &&
35
+ serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
36
+ serviceItem.operator_details[ratingIndex])[1]] &&
37
+ parseFloat(serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
38
+ serviceItem.operator_details[ratingIndex])[1]]).toFixed(1)
39
+ ? +parseFloat(serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
40
+ serviceItem.operator_details[ratingIndex])[1]]).toFixed(1)
40
41
  : 0, label: translation === null || translation === void 0 ? void 0 : translation.punctuality, isSoldOut: isSoldOut }),
41
- React.createElement(RatingItem, { rating: serviceItem.operator_details[6] &&
42
- serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
43
- serviceItem.operator_details[6])[2]] &&
44
- parseFloat(serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
45
- serviceItem.operator_details[6])[2]]).toFixed(1)
46
- ? +parseFloat(serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
47
- serviceItem.operator_details[6])[2]]).toFixed(1)
42
+ React.createElement(RatingItem, { rating: serviceItem.operator_details[ratingIndex] &&
43
+ serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
44
+ serviceItem.operator_details[ratingIndex])[2]] &&
45
+ parseFloat(serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
46
+ serviceItem.operator_details[ratingIndex])[2]]).toFixed(1)
47
+ ? +parseFloat(serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
48
+ serviceItem.operator_details[ratingIndex])[2]]).toFixed(1)
48
49
  : 0, label: translation === null || translation === void 0 ? void 0 : translation.serviceQuality, isSoldOut: isSoldOut }),
49
- React.createElement(RatingItem, { rating: serviceItem.operator_details[6] &&
50
- serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
51
- serviceItem.operator_details[6])[3]] &&
52
- parseFloat(serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
53
- serviceItem.operator_details[6])[3]]).toFixed(1)
54
- ? +parseFloat(serviceItem.operator_details[6][Object.keys(serviceItem.operator_details[6] &&
55
- serviceItem.operator_details[6])[3]]).toFixed(1)
50
+ React.createElement(RatingItem, { rating: serviceItem.operator_details[ratingIndex] &&
51
+ serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
52
+ serviceItem.operator_details[ratingIndex])[3]] &&
53
+ parseFloat(serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
54
+ serviceItem.operator_details[ratingIndex])[3]]).toFixed(1)
55
+ ? +parseFloat(serviceItem.operator_details[ratingIndex][Object.keys(serviceItem.operator_details[ratingIndex] &&
56
+ serviceItem.operator_details[ratingIndex])[3]]).toFixed(1)
56
57
  : 0, label: translation === null || translation === void 0 ? void 0 : translation.serviceRecommendation, isSoldOut: isSoldOut })),
57
58
  React.createElement("div", { className: "px-1 py-2 text-center text-[12px] font9", style: {
58
59
  backgroundColor: isSoldOut ? "#f5f5f5" : colors.ratingBottomColor,
@@ -27,7 +27,6 @@ import PetBlock from "../../ui/PetBlock";
27
27
  import FlexibleBlock from "../../ui/FlexibleBlock";
28
28
  import AmenitiesBlock from "../../ui/AmenitiesBlock";
29
29
  import KuposButton from "../../ui/KuposButton/KuposButton";
30
- import TopAmenities from "../../ui/TopAmenities/TopAmenities";
31
30
  import BottomAmenities from "../../ui/BottomAmenities/BottomAmenities";
32
31
  import SeatSection from "../../ui/SeatSection/SeatSection";
33
32
  import DateTimeSection from "../../ui/DateTimeSection/DateTimeSection";
@@ -110,7 +109,7 @@ function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, child
110
109
  };
111
110
  const checkMidnight = () => {
112
111
  var _a, _b;
113
- setIsExpand(null);
112
+ setIsExpand === null || setIsExpand === void 0 ? void 0 : setIsExpand(null);
114
113
  if ((cityOrigin === null || cityOrigin === void 0 ? void 0 : cityOrigin.label) &&
115
114
  (cityDestination === null || cityDestination === void 0 ? void 0 : cityDestination.label) &&
116
115
  ((cityOrigin.label.toLowerCase().includes("argentina") &&
@@ -184,6 +183,30 @@ function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, child
184
183
  onBookButtonPress();
185
184
  };
186
185
  const countdownSeconds = 7830;
186
+ const startCountdown = (node) => {
187
+ if (!node)
188
+ return;
189
+ const prevId = node.dataset.countdownId;
190
+ if (prevId)
191
+ clearInterval(Number(prevId));
192
+ let remaining = countdownSeconds;
193
+ const formatTime = (totalSecs) => {
194
+ const h = Math.floor(totalSecs / 3600);
195
+ const m = Math.floor((totalSecs % 3600) / 60);
196
+ const s = totalSecs % 60;
197
+ return `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
198
+ };
199
+ node.textContent = formatTime(remaining);
200
+ const id = setInterval(() => {
201
+ remaining -= 1;
202
+ if (remaining <= 0) {
203
+ remaining = 0;
204
+ clearInterval(id);
205
+ }
206
+ node.textContent = formatTime(remaining);
207
+ }, 1000);
208
+ node.dataset.countdownId = String(id);
209
+ };
187
210
  const items = [
188
211
  {
189
212
  key: "amenities",
@@ -200,7 +223,7 @@ function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, child
200
223
  {
201
224
  key: "directo",
202
225
  width: "12%",
203
- condition: serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip,
226
+ condition: (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) === true,
204
227
  render: (React.createElement(DirectoBlock, { translation: translation, getAnimationIcon: getAnimationIcon, colors: colors, isSoldOut: isSoldOut })),
205
228
  },
206
229
  {
@@ -213,31 +236,21 @@ function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, child
213
236
  {
214
237
  key: "flexible",
215
238
  width: "20%",
216
- condition: serviceItem.is_change_ticket,
239
+ condition: serviceItem.is_change_ticket === true,
217
240
  render: (React.createElement(FlexibleBlock, { translation: translation, getAnimationIcon: getAnimationIcon, colors: colors, serviceItem: serviceItem, isSoldOut: isSoldOut })),
218
241
  },
219
242
  ];
220
243
  const otherItems = items.filter((i) => i.key !== "pet" && i.key !== "flexible" && !!i.condition);
221
- return (React.createElement(React.Fragment, null, isPeruSites ? (React.createElement(PeruServiceItemDesktop, { serviceItem: serviceItem, onBookButtonPress: onBookButtonPress, colors: colors, metaData: metaData, children: children, busStage: busStage, serviceDetailsLoading: serviceDetailsLoading, cityOrigin: cityOrigin, cityDestination: cityDestination, translation: translation, orignLabel: orignLabel, destinationLabel: destinationLabel, currencySign: currencySign, isCiva: isCiva, showRating: showRating, showLastSeats: showLastSeats, removeArrivalTime: removeArrivalTime, removeDuplicateSeats: removeDuplicateSeats, isPeruSites: isPeruSites, t: (key) => t(key), showAvailableSeats: showAvailableSeats, isSeatIcon: isSeatIcon, isPeru: isPeru, siteType: siteType, isAllinBus: isAllinBus })) : (React.createElement("div", { className: `relative ${serviceItem.offer_text ? "mb-[55px]" : "mb-[10px]"} mt-[14px]` },
222
- React.createElement(TopAmenities, { showPromo: showPromo, showTopLabel: showTopLabel, isSoldOut: isSoldOut, priceColor: colors.priceColor, buttonColor: colors.kuposButtonColor, boardingIcon: renderIcon("whiteBoardingIcon", "14px"), getAnimationIcon: getAnimationIcon, countdownSeconds: countdownSeconds, onCountdownEnd: () => {
223
- const cardEl = document.getElementById(`service-card-${serviceItem.id}`);
224
- if (!cardEl)
225
- return;
226
- cardEl.style.border = "1px solid #ccc";
227
- if (!showTopLabel) {
228
- cardEl.style.borderRadius = "10px";
229
- }
230
- } }),
231
- React.createElement("div", { id: `service-card-${serviceItem.id}`, className: "bg-white mx-auto relative ", style: {
232
- border: countdownSeconds > 0
233
- ? `1px solid ${colors.priceColor}`
234
- : "1px solid #ccc",
235
- borderRadius: showTopLabel
236
- ? "10px 0 10px 10px"
237
- : countdownSeconds > 0
238
- ? "10px 0 10px 10px"
239
- : "10px",
240
- } },
244
+ return (React.createElement(React.Fragment, null, isPeruSites ? (React.createElement(PeruServiceItemDesktop, { serviceItem: serviceItem, onBookButtonPress: onBookButtonPress, colors: colors, metaData: metaData, children: children, busStage: busStage, serviceDetailsLoading: serviceDetailsLoading, cityOrigin: cityOrigin, cityDestination: cityDestination, translation: translation, orignLabel: orignLabel, destinationLabel: destinationLabel, currencySign: currencySign, isCiva: isCiva, showRating: showRating, showLastSeats: showLastSeats, removeArrivalTime: removeArrivalTime, removeDuplicateSeats: removeDuplicateSeats, isPeruSites: isPeruSites, t: (key) => t(key), showAvailableSeats: showAvailableSeats, isSeatIcon: isSeatIcon, isPeru: isPeru, siteType: siteType, isAllinBus: isAllinBus })) : (React.createElement("div", {
245
+ // className={`relative ${
246
+ // serviceItem.offer_text ? "mb-[55px]" : "mb-[10px]"
247
+ // } mt-[14px]`}
248
+ className: `relative ${serviceItem.offer_text ? "mb-[55px]" : "mb-[10px]"} ${(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ||
249
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" ||
250
+ showTopLabel
251
+ ? "mt-[24px]"
252
+ : "mt-[20px]"} ` },
253
+ React.createElement("div", { id: `service-card-${serviceItem.id}`, className: "bg-white mx-auto relative rounded-[10px] border border-[#ccc]" },
241
254
  React.createElement("div", {
242
255
  // className="p-[15px] pt-[20px]"
243
256
  className: " pt-[20px]", style: {
@@ -258,7 +271,7 @@ function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, child
258
271
  className: "" },
259
272
  React.createElement("img", { src: serviceItem.operator_details[0], alt: "service logo", className: `h-auto w-[150px] object-contain ${isSoldOut ? "grayscale" : ""}` }),
260
273
  isCiva ? (React.createElement("div", { className: "text-[13.33px] black-text ml-2" }, serviceItem.operator_details[2])) : null),
261
- React.createElement(RatingBlock, { showRating: showRating, serviceItem: serviceItem, isSoldOut: isSoldOut, colors: colors, t: t, translation: translation })),
274
+ React.createElement(RatingBlock, { showRating: showRating, serviceItem: serviceItem, isSoldOut: isSoldOut, colors: colors, t: t, translation: translation, isPeru: isPeru })),
262
275
  React.createElement(DateTimeSection, { serviceItem: serviceItem, isSoldOut: isSoldOut, isCiva: isCiva, isLinatal: isLinatal, removeArrivalTime: removeArrivalTime, orignLabel: orignLabel, destinationLabel: destinationLabel, busStage: busStage, metaData: metaData, colors: colors }),
263
276
  React.createElement("div", { style: {
264
277
  width: "1px",
@@ -283,15 +296,57 @@ function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, child
283
296
  gridTemplateRows: isItemExpanded ? "1fr" : "0fr",
284
297
  opacity: isItemExpanded ? 1 : 0,
285
298
  transition: "grid-template-rows 0.3s ease-in-out, opacity 0.25s ease-in-out",
299
+ position: "relative",
300
+ zIndex: -1,
286
301
  } },
287
302
  React.createElement("div", { style: { overflow: "hidden", minHeight: 0, marginTop: "-10px" } },
288
- React.createElement(ExpandedDropdown, { serviceItem: serviceItem, showPromo: showPromo, colors: colors, grayscaleClass: grayscaleClass, translation: translation, getAnimationIcon: getAnimationIcon }))),
303
+ React.createElement(ExpandedDropdown, { serviceItem: serviceItem }))),
289
304
  children,
290
305
  (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: {
291
306
  backgroundColor: colors === null || colors === void 0 ? void 0 : colors.bottomStripColor,
292
307
  opacity: isSoldOut ? 0.5 : 1,
293
308
  } },
294
- React.createElement(LottiePlayer, { animationData: getAnimationIcon("promoAnim"), width: "18px", height: "18px" }),
295
- React.createElement("span", { className: "ml-[10px]" }, serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text)))))));
309
+ React.createElement("div", { className: "flex justify-between items-center w-full" },
310
+ React.createElement("div", { className: "flex items-center" },
311
+ React.createElement(LottiePlayer, { animationData: getAnimationIcon("bombAnimation"), width: "18px", height: "18px" }),
312
+ React.createElement("span", { className: "bold-text ml-[8px]" },
313
+ " ",
314
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) || "")),
315
+ React.createElement("div", null,
316
+ "Termina en\u00A0",
317
+ React.createElement("span", { className: "bold-text text-end", ref: startCountdown, style: {
318
+ fontVariantNumeric: "tabular-nums",
319
+ display: "inline-block",
320
+ // minWidth: "70px",
321
+ } }))))),
322
+ React.createElement("div", { className: "absolute -top-[11px] left-0 w-full flex items-center justify-end gap-[12px] pr-[15px] z-10 " },
323
+ showTopLabel && (React.createElement("div", { className: `flex items-center gap-[10px] py-[4px] px-[14px] rounded-[38px] text-[12.5px] z-10`, style: {
324
+ backgroundColor: isSoldOut
325
+ ? "#ddd"
326
+ : colors.ratingBottomColor,
327
+ } },
328
+ React.createElement("div", { className: isSoldOut ? "grayscale" : "" },
329
+ React.createElement(LottiePlayer
330
+ // animationData={serviceItem.icons.priorityStageAnim}
331
+ , {
332
+ // animationData={serviceItem.icons.priorityStageAnim}
333
+ animationData: getAnimationIcon("priorityStageAnim"), width: "14px", height: "14px" })),
334
+ React.createElement("div", { className: isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]` }, showTopLabel))),
335
+ (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: {
336
+ backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
337
+ } },
338
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.connectingServiceIcon,
339
+ // animationData={getAnimationIcon(connectingServiceIcon)}
340
+ width: "14px", height: "14px" }),
341
+ React.createElement("div", null, "Conexión"))),
342
+ (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: {
343
+ backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
344
+ } },
345
+ React.createElement(LottiePlayer
346
+ // animationData={serviceItem.icons.directoAnim}
347
+ , {
348
+ // animationData={serviceItem.icons.directoAnim}
349
+ animationData: getAnimationIcon("directoAnim"), width: "14px", height: "14px" }),
350
+ React.createElement("div", null, "Tren Express"))))))));
296
351
  }
297
352
  export default ServiceItemPB;
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { MobileServiceItemProps } from "./mobileTypes";
3
- declare function ServiceItemMobile({ serviceItem, onBookButtonPress, colors, busStage, orignLabel, destinationLabel, amenitiesData, setShowDropdown, showDropdown, setAmenetiesAtomValue, isCiva, currencySign, isPeru, showRating, showLastSeats, removeDuplicateSeats, isLinatal, }: MobileServiceItemProps): React.ReactElement;
3
+ declare function ServiceItemMobile({ serviceItem, onBookButtonPress, colors, busStage, orignLabel, destinationLabel, amenitiesData, setShowDropdown, showDropdown, isExpanded, setIsExpanded, setAmenetiesAtomValue, isCiva, currencySign, isPeru, showRating, showLastSeats, removeDuplicateSeats, isLinatal, }: MobileServiceItemProps): React.ReactElement;
4
4
  export default ServiceItemMobile;
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
2
  import LottiePlayer from "../../assets/LottiePlayer";
3
3
  import commonService from "../../utils/CommonService";
4
- import TopAmenitieMobile from "../../ui/mobileweb/TopAmenitieMobile";
5
4
  import BottomAmenitiesMobile from "../../ui/mobileweb/BottomAmenitiesMobile";
6
5
  import DateTimeSectionMobile from "../../ui/mobileweb/DateTimeSectionMobile";
6
+ import ExpandedDropdownMobile from "../../ui/mobileweb/ExpandedDropdownMobile";
7
7
  const SEAT_EXCEPTIONS = ["Asiento mascota"];
8
8
  const exceptions = [
9
9
  "gy",
@@ -16,11 +16,37 @@ const exceptions = [
16
16
  "blanco",
17
17
  "asiento_mascota",
18
18
  ];
19
- function ServiceItemMobile({ serviceItem, onBookButtonPress, colors, busStage, orignLabel, destinationLabel, amenitiesData, setShowDropdown, showDropdown, setAmenetiesAtomValue, isCiva, currencySign, isPeru, showRating, showLastSeats, removeDuplicateSeats, isLinatal, }) {
19
+ function ServiceItemMobile({ serviceItem, onBookButtonPress, colors, busStage, orignLabel, destinationLabel, amenitiesData, setShowDropdown, showDropdown, isExpanded, setIsExpanded, setAmenetiesAtomValue, isCiva, currencySign, isPeru, showRating, showLastSeats, removeDuplicateSeats, isLinatal, }) {
20
20
  var _a, _b, _c;
21
+ const isItemExpanded = serviceItem.id === isExpanded;
21
22
  const isPetSeat = (Object.keys(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.pet_seat_info) || []).length > 0;
22
23
  let isSoldOut = serviceItem.available_seats <= 0;
23
24
  const showPromo = Math.random() > 0.5;
25
+ const countdownSeconds = 7830;
26
+ const startCountdown = (node) => {
27
+ if (!node)
28
+ return;
29
+ const prevId = node.dataset.countdownId;
30
+ if (prevId)
31
+ clearInterval(Number(prevId));
32
+ let remaining = countdownSeconds;
33
+ const formatTime = (totalSecs) => {
34
+ const h = Math.floor(totalSecs / 3600);
35
+ const m = Math.floor((totalSecs % 3600) / 60);
36
+ const s = totalSecs % 60;
37
+ return `${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}:${String(s).padStart(2, "0")}`;
38
+ };
39
+ node.textContent = formatTime(remaining);
40
+ const id = setInterval(() => {
41
+ remaining -= 1;
42
+ if (remaining <= 0) {
43
+ remaining = 0;
44
+ clearInterval(id);
45
+ }
46
+ node.textContent = formatTime(remaining);
47
+ }, 1000);
48
+ node.dataset.countdownId = String(id);
49
+ };
24
50
  const labelId = typeof serviceItem.boarding_stages === "string"
25
51
  ? serviceItem.boarding_stages.split("|")[0]
26
52
  : "";
@@ -72,26 +98,16 @@ function ServiceItemMobile({ serviceItem, onBookButtonPress, colors, busStage, o
72
98
  isConexion ||
73
99
  (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" ||
74
100
  showTopLabel
75
- ? "mt-[10px]"
101
+ ? "mt-[20px]"
76
102
  : "mt-[10px]"} `, style: { backgroundColor: "#fff", zIndex: 1 } },
77
- React.createElement(TopAmenitieMobile, { showTopLabel: showTopLabel, isSoldOut: isSoldOut, seatPriceColor: colors.seatPriceColor, bombAnim: serviceItem.icons.bombAnim, priorityStageAnim: serviceItem.icons.priorityStageAnim }),
78
103
  React.createElement("div", { className: " rounded-[20px]", style: {
79
104
  backgroundColor: "#fff",
80
105
  zIndex: 1,
81
106
  // borderRadius: showTopLabel ? "10px 0 10px 10px" : "10px",
82
- borderRadius: "14px 0 14px 14px",
83
- border: `1px solid ${colors.bottomStripColor}`,
107
+ borderRadius: "12px",
108
+ border: "1px solid #ccc",
84
109
  } },
85
- React.createElement("div", {
86
- // className={` ${
87
- // serviceItem?.train_type_label === "Tren Express (Nuevo)" ||
88
- // showTopLabel ||
89
- // serviceItem?.is_direct_trip ||
90
- // serviceItem?.is_transpordo
91
- // ? "mt-[10px]"
92
- // : ""
93
- // }`}
94
- style: { padding: "12px 12px 8px 12px" } },
110
+ React.createElement("div", { style: { padding: "12px 12px 8px 12px" } },
95
111
  React.createElement("div", { className: "flex justify-between items-center mb-[10px]" },
96
112
  React.createElement("div", { className: "flex items-center justify-between" },
97
113
  React.createElement("div", { className: "w-[120px] overflow-y-hidden" },
@@ -102,17 +118,21 @@ function ServiceItemMobile({ serviceItem, onBookButtonPress, colors, busStage, o
102
118
  React.createElement("img", { src: serviceItem.icons.rating, alt: "origin", className: `w-[12px] h-[12px] mr-[4px] object-contain ${isSoldOut ? "grayscale" : ""}` }),
103
119
  React.createElement("span", { style: { lineHeight: "normal" } }, getServiceStars(serviceItem))),
104
120
  React.createElement("div", { className: "flex items-center cursor-pointer ", style: { color: isSoldOut ? "#bbb" : "text-[#464647]" } },
105
- React.createElement("span", { className: "ml-[3px] min-[420]:text-[13px] text-[12px]" }, serviceItem.operator_details[2]))))) : null),
121
+ React.createElement("span", { className: "ml-[3px] min-[420]:text-[13px] text-[12px] text-ellipsis" }, serviceItem.operator_details[2]))))) : null),
106
122
  showLastSeats ? (React.createElement("div", { className: "flex justify-end " }, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) < 10 &&
107
123
  (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) > 0 && (React.createElement("div", { className: "text-[10px] text-[#464647] text-center" }, "\u00A1 \u00DAltimos Asientos!")))) : null),
108
124
  React.createElement(DateTimeSectionMobile, { onBookButtonPress: onBookButtonPress, isCiva: isCiva, isSoldOut: isSoldOut, isLinatal: isLinatal, isPeru: isPeru, orignLabel: orignLabel, destinationLabel: destinationLabel, originIcon: (_a = serviceItem.icons) === null || _a === void 0 ? void 0 : _a.origin, destinationIcon: (_b = serviceItem.icons) === null || _b === void 0 ? void 0 : _b.destination, travelDate: serviceItem.travel_date, arrivalDate: serviceItem.arrival_date, depTime: serviceItem.dep_time, arrTime: serviceItem.arr_time, seatTypes: serviceItem.seat_types, seatPriceColor: colors.seatPriceColor, currencySign: currencySign, availableSeats: serviceItem.available_seats, removeDuplicateSeats: removeDuplicateSeats }),
109
125
  React.createElement("div", { className: "bg-[#E6E6E6] mt-[10px] mb-[10px] h-[1px]" }),
110
- React.createElement(BottomAmenitiesMobile, { isSoldOut: isSoldOut, amenitiesNodes: amenities(), hoursIcon: renderIcon("hours", "14px"), duration: (_c = serviceItem.duration) === null || _c === void 0 ? void 0 : _c.toString(), isDirectTrip: serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip, directoColor: colors.directoColor, directoAnim: serviceItem.icons.directoAnim, isChangeTicket: serviceItem.is_change_ticket, isPetSeat: isPetSeat, petSeatInfo: serviceItem.pet_seat_info, petFriendlyAnim: serviceItem.icons.petFriendlyAnim, flexibleAnim: serviceItem.icons.flexibleAnim, isTrackingEnabled: serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_tracking_enabled, locationAnim: serviceItem.icons.locationAnim, downArrowIcon: serviceItem.icons.downArrow, showDropdown: showDropdown, setShowDropdown: setShowDropdown, onDropdownToggle: () => {
111
- setShowDropdown(!showDropdown);
112
- setAmenetiesAtomValue({
113
- service: serviceItem,
114
- showTopLabel: showTopLabel,
115
- });
126
+ React.createElement(BottomAmenitiesMobile, { isSoldOut: isSoldOut, amenitiesNodes: amenities(), hoursIcon: renderIcon("hours", "14px"), duration: (_c = serviceItem.duration) === null || _c === void 0 ? void 0 : _c.toString(), isDirectTrip: serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip, directoColor: colors.directoColor, directoAnim: serviceItem.icons.directoAnim, isChangeTicket: serviceItem.is_change_ticket, isPetSeat: isPetSeat, petSeatInfo: serviceItem.pet_seat_info, petFriendlyAnim: serviceItem.icons.petFriendlyAnim, flexibleAnim: serviceItem.icons.flexibleAnim, isTrackingEnabled: serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_tracking_enabled, locationAnim: serviceItem.icons.locationAnim, downArrowIcon: serviceItem.icons.downArrow, showDropdown: isItemExpanded, setShowDropdown: () => setIsExpanded(isItemExpanded ? null : serviceItem.id),
127
+ // onDropdownToggle={() => {
128
+ // setShowDropdown(!showDropdown);
129
+ // setAmenetiesAtomValue({
130
+ // service: serviceItem,
131
+ // showTopLabel: showTopLabel,
132
+ // });
133
+ // }}
134
+ onDropdownToggle: () => {
135
+ setIsExpanded(isItemExpanded ? null : serviceItem.id);
116
136
  } })),
117
137
  (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-[35px] pt-[50px] z-10 rounded-b-[14px] min-[420]:text-[14px] text-[12px]`, style: {
118
138
  backgroundColor: isSoldOut ? "#ccc" : colors === null || colors === void 0 ? void 0 : colors.bottomStripColor,
@@ -121,8 +141,45 @@ function ServiceItemMobile({ serviceItem, onBookButtonPress, colors, busStage, o
121
141
  left: "0px",
122
142
  opacity: isSoldOut ? 0.5 : 1,
123
143
  } },
124
- React.createElement(LottiePlayer, { animationData: serviceItem.icons.promoAnim, width: "18px", height: "18px" }),
125
- React.createElement("span", { className: "ml-[10px] text-[#fff] min-[380px]:text-[11px] text-[10px]" }, serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text))),
126
- React.createElement("div", { className: "absolute -top-[14px] left-0 w-full flex items-center justify-end gap-[12px] pr-[20px] z-10 " }))));
144
+ React.createElement("div", { className: "flex justify-between items-center w-full" },
145
+ React.createElement("div", { className: "flex items-center" },
146
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.bombAnim, width: "18px", height: "18px" }),
147
+ React.createElement("span", { className: "bold-text ml-[8px]" },
148
+ " ",
149
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text) || "")),
150
+ React.createElement("div", null,
151
+ "Termina en\u00A0",
152
+ React.createElement("span", { className: "bold-text text-end", ref: startCountdown, style: {
153
+ fontVariantNumeric: "tabular-nums",
154
+ display: "inline-block",
155
+ // minWidth: "70px",
156
+ } }))))),
157
+ React.createElement("div", { className: "absolute -top-[14px] left-0 w-full flex items-center justify-end gap-[12px] pr-[13px] z-10 " },
158
+ showTopLabel && (React.createElement("div", { className: `flex items-center gap-[2px] py-[4px] px-[10px] rounded-[38px] min-[420]:text-[12px] text-[10px] z-20 `, style: {
159
+ backgroundColor: isSoldOut ? "#ccc" : colors.ratingBottomColor,
160
+ } },
161
+ React.createElement("div", { className: isSoldOut ? "grayscale" : "" },
162
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.priorityStageAnim, width: "18px", height: "18px" })),
163
+ React.createElement("div", { className: isSoldOut ? "text-[#bbb]" : `text-[${colors.topLabelColor}]` }, showTopLabel))),
164
+ isConexion && (React.createElement("div", { className: `flex items-center gap-[2px] py-[5px] text-white px-[10px] rounded-[38px] min-[420]:text-[12px] text-[11px] z-20 ${isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]`}`, style: {
165
+ backgroundColor: !isSoldOut && colors.ratingBottomColor,
166
+ } },
167
+ renderIcon("airportIcon", "14px"),
168
+ React.createElement("div", null, "Conexi\u00F3n"))),
169
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" && (React.createElement("div", { className: `flex items-center gap-[2px] py-[5px] text-white px-[10px] rounded-[38px] min-[420]:text-[12px] text-[10px] z-20 `, style: {
170
+ backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
171
+ } },
172
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.directoAnim, width: "20px", height: "20px" }),
173
+ React.createElement("div", null, "Tren Express"))))),
174
+ React.createElement("div", { style: {
175
+ display: "grid",
176
+ gridTemplateRows: isItemExpanded ? "1fr" : "0fr",
177
+ opacity: isItemExpanded ? 1 : 0,
178
+ transition: "grid-template-rows 0.3s ease-in-out, opacity 0.25s ease-in-out",
179
+ position: "relative",
180
+ zIndex: -1,
181
+ } },
182
+ React.createElement("div", { style: { overflow: "hidden", minHeight: 0, marginTop: "-10px" } },
183
+ React.createElement(ExpandedDropdownMobile, { serviceItem: serviceItem })))));
127
184
  }
128
185
  export default ServiceItemMobile;
@@ -121,6 +121,8 @@ export interface MobileServiceItemProps {
121
121
  terminals?: any[];
122
122
  showDropdown?: boolean;
123
123
  setShowDropdown?: (value: boolean) => void;
124
+ isExpanded?: string | null;
125
+ setIsExpanded?: (value: string | null) => void;
124
126
  setAmenetiesAtomValue?: (value: {
125
127
  service: MobileServiceItemProps["serviceItem"];
126
128
  showTopLabel: string | boolean;