kupos-ui-components-lib 1.0.0

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 (177) hide show
  1. package/README copy.md +125 -0
  2. package/README.md +125 -0
  3. package/build-css.js +28 -0
  4. package/copy-assets.js +45 -0
  5. package/dist/KuposUIComponent.d.ts +84 -0
  6. package/dist/KuposUIComponent.js +49 -0
  7. package/dist/ResponsiveServiceItem.d.ts +3 -0
  8. package/dist/ResponsiveServiceItem.js +10 -0
  9. package/dist/ServiceItemDesktop.d.ts +3 -0
  10. package/dist/ServiceItemDesktop.js +6 -0
  11. package/dist/ServiceItemMobile.d.ts +3 -0
  12. package/dist/ServiceItemMobile.js +5 -0
  13. package/dist/ServiceItemMobileView.d.ts +4 -0
  14. package/dist/ServiceItemMobileView.js +33 -0
  15. package/dist/ServiceItemPb.d.ts +4 -0
  16. package/dist/ServiceItemPb.js +486 -0
  17. package/dist/ServivceItemPbMobile.d.ts +4 -0
  18. package/dist/ServivceItemPbMobile.js +248 -0
  19. package/dist/assets/LottieIcon.d.ts +7 -0
  20. package/dist/assets/LottieIcon.js +8 -0
  21. package/dist/assets/LottieIcon.tsx +26 -0
  22. package/dist/assets/LottiePlayer.d.ts +20 -0
  23. package/dist/assets/LottiePlayer.js +24 -0
  24. package/dist/assets/LottiePlayer.tsx +63 -0
  25. package/dist/assets/PopupComponent.d.ts +12 -0
  26. package/dist/assets/PopupComponent.js +18 -0
  27. package/dist/assets/PopupComponent.tsx +65 -0
  28. package/dist/assets/images/amenities/Icon_More-Amenities.svg +1 -0
  29. package/dist/assets/images/amenities/Restrooms-white.svg +1 -0
  30. package/dist/assets/images/amenities/Restrooms.svg +1 -0
  31. package/dist/assets/images/amenities/air_condtion-white.svg +1 -0
  32. package/dist/assets/images/amenities/air_condtion.svg +1 -0
  33. package/dist/assets/images/amenities/amenity-cortina.png +0 -0
  34. package/dist/assets/images/amenities/baggage-white.svg +1 -0
  35. package/dist/assets/images/amenities/baggage.svg +1 -0
  36. package/dist/assets/images/amenities/charging_plug-white.svg +1 -0
  37. package/dist/assets/images/amenities/charging_plug.svg +17 -0
  38. package/dist/assets/images/amenities/coffee.svg +1 -0
  39. package/dist/assets/images/amenities/cortina_divisoria.svg +19 -0
  40. package/dist/assets/images/amenities/divider-curtain.svg +34 -0
  41. package/dist/assets/images/amenities/food_new_icon-white.svg +1 -0
  42. package/dist/assets/images/amenities/food_new_icon.svg +1 -0
  43. package/dist/assets/images/amenities/frazda_amenity.svg +11 -0
  44. package/dist/assets/images/amenities/handicap-white.svg +1 -0
  45. package/dist/assets/images/amenities/handicap.svg +1 -0
  46. package/dist/assets/images/amenities/icon-app-cortina.svg +19 -0
  47. package/dist/assets/images/amenities/mobile_ticket-white.svg +1 -0
  48. package/dist/assets/images/amenities/mobile_ticket.svg +29 -0
  49. package/dist/assets/images/amenities/movie-white.svg +1 -0
  50. package/dist/assets/images/amenities/movie.svg +1 -0
  51. package/dist/assets/images/amenities/music-white.svg +1 -0
  52. package/dist/assets/images/amenities/music.svg +1 -0
  53. package/dist/assets/images/amenities/snacks_new-white.svg +1 -0
  54. package/dist/assets/images/amenities/snacks_new.svg +27 -0
  55. package/dist/assets/images/amenities/whatsapp-charges-info-icon.svg +5 -0
  56. package/dist/assets/images/amenities/wifi-white.svg +1 -0
  57. package/dist/assets/images/amenities/wifi.svg +1 -0
  58. package/dist/assets/images/anims/service_list/flexible.json +391 -0
  59. package/dist/assets/images/anims/service_list/location.json +589 -0
  60. package/dist/assets/images/index.d.ts +32 -0
  61. package/dist/assets/images/index.js +35 -0
  62. package/dist/assets/images/index.ts +35 -0
  63. package/dist/components/InternationalServicePopupBody.d.ts +3 -0
  64. package/dist/components/InternationalServicePopupBody.js +21 -0
  65. package/dist/components/PaymentSideBar/PaymentSideBarDesktop.d.ts +4 -0
  66. package/dist/components/PaymentSideBar/PaymentSideBarDesktop.js +107 -0
  67. package/dist/components/PaymentSideBar/PaymentSideBarMobile.d.ts +4 -0
  68. package/dist/components/PaymentSideBar/PaymentSideBarMobile.js +115 -0
  69. package/dist/components/PaymentSideBar/ResponsivePaymentSideBar.d.ts +3 -0
  70. package/dist/components/PaymentSideBar/ResponsivePaymentSideBar.js +10 -0
  71. package/dist/components/PaymentSideBar/index.d.ts +5 -0
  72. package/dist/components/PaymentSideBar/index.js +4 -0
  73. package/dist/components/PaymentSideBar/types.d.ts +38 -0
  74. package/dist/components/PaymentSideBar/types.js +1 -0
  75. package/dist/components/ServiceItem/ResponsiveServiceItem.d.ts +3 -0
  76. package/dist/components/ServiceItem/ResponsiveServiceItem.js +10 -0
  77. package/dist/components/ServiceItem/ServiceItemDesktop.d.ts +4 -0
  78. package/dist/components/ServiceItem/ServiceItemDesktop.js +486 -0
  79. package/dist/components/ServiceItem/ServiceItemMobile.d.ts +4 -0
  80. package/dist/components/ServiceItem/ServiceItemMobile.js +248 -0
  81. package/dist/components/ServiceItem/index.d.ts +5 -0
  82. package/dist/components/ServiceItem/index.js +4 -0
  83. package/dist/components/ServiceItem/mobileTypes.d.ts +141 -0
  84. package/dist/components/ServiceItem/mobileTypes.js +1 -0
  85. package/dist/components/ServiceItem/types.d.ts +164 -0
  86. package/dist/components/ServiceItem/types.js +1 -0
  87. package/dist/components/ServiceList/ResponsiveServiceList.d.ts +3 -0
  88. package/dist/components/ServiceList/ResponsiveServiceList.js +10 -0
  89. package/dist/components/ServiceList/ServiceListDesktop.d.ts +4 -0
  90. package/dist/components/ServiceList/ServiceListDesktop.js +164 -0
  91. package/dist/components/ServiceList/ServiceListMobile.d.ts +4 -0
  92. package/dist/components/ServiceList/ServiceListMobile.js +195 -0
  93. package/dist/components/ServiceList/index.d.ts +5 -0
  94. package/dist/components/ServiceList/index.js +4 -0
  95. package/dist/components/ServiceList/types.d.ts +35 -0
  96. package/dist/components/ServiceList/types.js +1 -0
  97. package/dist/example.d.ts +5 -0
  98. package/dist/example.js +240 -0
  99. package/dist/index.d.ts +13 -0
  100. package/dist/index.js +15 -0
  101. package/dist/mobileTypes.d.ts +141 -0
  102. package/dist/mobileTypes.js +1 -0
  103. package/dist/styles.css +803 -0
  104. package/dist/types.d.ts +151 -0
  105. package/dist/types.js +1 -0
  106. package/dist/utils/DateService.d.ts +16 -0
  107. package/dist/utils/DateService.js +160 -0
  108. package/dist/utils/ModalEventManager.d.ts +40 -0
  109. package/dist/utils/ModalEventManager.js +329 -0
  110. package/kupos-service-item-package-1.0.0.tgz +0 -0
  111. package/package.json +43 -0
  112. package/postcss.config.js +6 -0
  113. package/src/KuposUIComponent.tsx +152 -0
  114. package/src/ServiceItemPb.tsx +1048 -0
  115. package/src/assets/LottieIcon.tsx +26 -0
  116. package/src/assets/LottiePlayer.tsx +63 -0
  117. package/src/assets/PopupComponent.tsx +65 -0
  118. package/src/assets/images/amenities/Icon_More-Amenities.svg +1 -0
  119. package/src/assets/images/amenities/Restrooms-white.svg +1 -0
  120. package/src/assets/images/amenities/Restrooms.svg +1 -0
  121. package/src/assets/images/amenities/air_condtion-white.svg +1 -0
  122. package/src/assets/images/amenities/air_condtion.svg +1 -0
  123. package/src/assets/images/amenities/amenity-cortina.png +0 -0
  124. package/src/assets/images/amenities/baggage-white.svg +1 -0
  125. package/src/assets/images/amenities/baggage.svg +1 -0
  126. package/src/assets/images/amenities/charging_plug-white.svg +1 -0
  127. package/src/assets/images/amenities/charging_plug.svg +17 -0
  128. package/src/assets/images/amenities/coffee.svg +1 -0
  129. package/src/assets/images/amenities/cortina_divisoria.svg +19 -0
  130. package/src/assets/images/amenities/divider-curtain.svg +34 -0
  131. package/src/assets/images/amenities/food_new_icon-white.svg +1 -0
  132. package/src/assets/images/amenities/food_new_icon.svg +1 -0
  133. package/src/assets/images/amenities/frazda_amenity.svg +11 -0
  134. package/src/assets/images/amenities/handicap-white.svg +1 -0
  135. package/src/assets/images/amenities/handicap.svg +1 -0
  136. package/src/assets/images/amenities/icon-app-cortina.svg +19 -0
  137. package/src/assets/images/amenities/mobile_ticket-white.svg +1 -0
  138. package/src/assets/images/amenities/mobile_ticket.svg +29 -0
  139. package/src/assets/images/amenities/movie-white.svg +1 -0
  140. package/src/assets/images/amenities/movie.svg +1 -0
  141. package/src/assets/images/amenities/music-white.svg +1 -0
  142. package/src/assets/images/amenities/music.svg +1 -0
  143. package/src/assets/images/amenities/snacks_new-white.svg +1 -0
  144. package/src/assets/images/amenities/snacks_new.svg +27 -0
  145. package/src/assets/images/amenities/whatsapp-charges-info-icon.svg +5 -0
  146. package/src/assets/images/amenities/wifi-white.svg +1 -0
  147. package/src/assets/images/amenities/wifi.svg +1 -0
  148. package/src/assets/images/anims/service_list/flexible.json +391 -0
  149. package/src/assets/images/anims/service_list/location.json +589 -0
  150. package/src/assets/images/index.ts +35 -0
  151. package/src/components/InternationalServicePopupBody.tsx +40 -0
  152. package/src/components/PaymentSideBar/PaymentSideBarDesktop.tsx +183 -0
  153. package/src/components/PaymentSideBar/PaymentSideBarMobile.tsx +197 -0
  154. package/src/components/PaymentSideBar/ResponsivePaymentSideBar.tsx +14 -0
  155. package/src/components/PaymentSideBar/index.ts +5 -0
  156. package/src/components/PaymentSideBar/types.ts +44 -0
  157. package/src/components/ServiceItem/ResponsiveServiceItem.tsx +14 -0
  158. package/src/components/ServiceItem/ServiceItemDesktop.tsx +1048 -0
  159. package/src/components/ServiceItem/ServiceItemMobile.tsx +544 -0
  160. package/src/components/ServiceItem/index.ts +5 -0
  161. package/src/components/ServiceItem/mobileTypes.ts +159 -0
  162. package/src/components/ServiceItem/types.ts +163 -0
  163. package/src/components/ServiceList/ResponsiveServiceList.tsx +14 -0
  164. package/src/components/ServiceList/ServiceListDesktop.tsx +353 -0
  165. package/src/components/ServiceList/ServiceListMobile.tsx +400 -0
  166. package/src/components/ServiceList/index.ts +5 -0
  167. package/src/components/ServiceList/types.ts +43 -0
  168. package/src/dummyData.json +73 -0
  169. package/src/example.tsx +348 -0
  170. package/src/index.ts +37 -0
  171. package/src/lottie-player.d.ts +0 -0
  172. package/src/styles.css +77 -0
  173. package/src/types.ts +150 -0
  174. package/src/utils/DateService.ts +197 -0
  175. package/src/utils/ModalEventManager.ts +405 -0
  176. package/tailwind.config.js +39 -0
  177. package/tsconfig.json +18 -0
@@ -0,0 +1,486 @@
1
+ import React from "react";
2
+ import LottiePlayer from "./assets/LottiePlayer";
3
+ import DateService from "./utils/DateService";
4
+ import ModalEventManager from "./utils/ModalEventManager";
5
+ import InternationalServicePopupBody from "./components/InternationalServicePopupBody";
6
+ const SEAT_EXCEPTIONS = ["Asiento mascota"];
7
+ function ServiceItemPB({ serviceItem, onBookButtonPress, colors, metaData, children, busStage, serviceDetailsLoading, cityOrigin, cityDestination, translation, orignLabel, destinationLabel, t = (key) => key, }) {
8
+ var _a, _b, _c, _d, _e, _f, _g;
9
+ const SvgAmenities = ({ moreAnemities, name, color, }) => {
10
+ const amenityKey = name.toLowerCase().replace(/\s/g, "_");
11
+ const getIconPath = () => {
12
+ const amenityFileName = `${amenityKey}.png`;
13
+ const imagePath = getAmenitiesImage(amenityFileName);
14
+ if (!imagePath) {
15
+ return `/public/images/amenities/${amenityKey}.svg`;
16
+ }
17
+ return imagePath;
18
+ };
19
+ const iconPath = getIconPath();
20
+ return (React.createElement("img", { src: iconPath, alt: name, style: {
21
+ filter: color === "white" ? "brightness(0) invert(1)" : "",
22
+ }, className: `object-contain ${moreAnemities ? "w-[20px] h-[20px]" : "w-[16px] h-[16px]"}` }));
23
+ };
24
+ const getAmenitiesImage = (name) => {
25
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
26
+ switch (name) {
27
+ case "air_condtion.png": {
28
+ return (_a = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _a === void 0 ? void 0 : _a.airConditionIcon;
29
+ }
30
+ case "baggage.png": {
31
+ return (_b = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _b === void 0 ? void 0 : _b.baggageIcon;
32
+ }
33
+ case "charging_plug.png": {
34
+ return (_c = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _c === void 0 ? void 0 : _c.chargingIcon;
35
+ }
36
+ case "coffee.png": {
37
+ return (_d = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _d === void 0 ? void 0 : _d.coffeeIcon;
38
+ }
39
+ case "food_new_icon.png": {
40
+ return (_e = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _e === void 0 ? void 0 : _e.foodIcon;
41
+ }
42
+ case "gaming.png": {
43
+ return (_f = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _f === void 0 ? void 0 : _f.gamingIcon;
44
+ }
45
+ case "handicap.png": {
46
+ return (_g = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _g === void 0 ? void 0 : _g.handicapIcon;
47
+ }
48
+ case "mobile_ticket.png": {
49
+ return (_h = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _h === void 0 ? void 0 : _h.mobileTicketIcon;
50
+ }
51
+ case "movie.png": {
52
+ return (_j = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _j === void 0 ? void 0 : _j.movieIcon;
53
+ }
54
+ case "restrooms.png": {
55
+ return (_k = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _k === void 0 ? void 0 : _k.restroomsIcon;
56
+ }
57
+ case "snacks_new.png": {
58
+ return (_l = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _l === void 0 ? void 0 : _l.snackIcon;
59
+ }
60
+ case "wifi.png": {
61
+ return (_m = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _m === void 0 ? void 0 : _m.wifiIcon;
62
+ }
63
+ case "cortina_divisoria.png": {
64
+ return (_o = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _o === void 0 ? void 0 : _o.cortinaIcon;
65
+ }
66
+ case "frazada.png": {
67
+ return (_p = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _p === void 0 ? void 0 : _p.frazaIcon;
68
+ }
69
+ default: {
70
+ return "";
71
+ }
72
+ }
73
+ };
74
+ const getAmenityName = (rawAmenity) => {
75
+ switch (rawAmenity) {
76
+ case "mobile ticket":
77
+ return "Ticket móvil";
78
+ case "charging plug":
79
+ return "Cargador";
80
+ case "wifi":
81
+ return "WiFi";
82
+ case "movie":
83
+ return "Entretenimiento";
84
+ case "baggage":
85
+ return "Equipaje";
86
+ case "Restrooms":
87
+ return "Baños";
88
+ case "air condtion":
89
+ return "Aire acondicionado";
90
+ case "snacks new":
91
+ return "Snacks";
92
+ case "coffee":
93
+ return "Café";
94
+ case "cortina divisoria":
95
+ return "Cortina Divisoria";
96
+ case "frazada":
97
+ return "";
98
+ default:
99
+ return rawAmenity;
100
+ }
101
+ };
102
+ const currency = (amount) => {
103
+ const formattedAmount = amount
104
+ .toString()
105
+ .replace(/\B(?=(\d{3})+(?!\d))/g, ",");
106
+ return "$" + formattedAmount;
107
+ };
108
+ const labelId = typeof serviceItem.boarding_stages === "string"
109
+ ? serviceItem.boarding_stages.split("|")[0]
110
+ : "";
111
+ const showTopLabel = busStage &&
112
+ busStage[labelId] &&
113
+ busStage[labelId].split("|")[1] === "true" &&
114
+ busStage[labelId].split("|")[0];
115
+ const renderStages = (stageData) => {
116
+ if (typeof stageData === "string") {
117
+ return (React.createElement("div", { className: "flex flex-col space-y-1 text-justify gap-[4px]" }, stageData.split(",").map((stageInfo, index) => {
118
+ const parts = stageInfo.split("|");
119
+ const id = parts[0];
120
+ const time = parts[1];
121
+ const label = parts[3] || ""; // Skip empty part [2]
122
+ return (React.createElement("div", { key: index },
123
+ label,
124
+ " | ",
125
+ time));
126
+ })));
127
+ }
128
+ return null;
129
+ };
130
+ let isSoldOut = serviceItem.available_seats <= 0;
131
+ const renderIcon = (iconKey, size = "14px") => {
132
+ var _a;
133
+ const iconValue = (_a = serviceItem.icons) === null || _a === void 0 ? void 0 : _a[iconKey];
134
+ if (iconValue) {
135
+ if (typeof iconValue === "string") {
136
+ return (React.createElement("img", { src: iconValue, alt: iconKey, className: `${`w-[${size}] h-[${size}]`} mr-[5px]` }));
137
+ }
138
+ }
139
+ return null;
140
+ };
141
+ const getSortedSeatTypes = () => {
142
+ var _a;
143
+ if (!((_a = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.seat_types) === null || _a === void 0 ? void 0 : _a.length)) {
144
+ return [{ label: "Salon cama", price: 0 }];
145
+ }
146
+ let seatTypesWithPrices = serviceItem.seat_types
147
+ .filter((item) => getFilteredSeats(item))
148
+ .map((val) => ({
149
+ label: val === null || val === void 0 ? void 0 : val.label,
150
+ price: val === null || val === void 0 ? void 0 : val.fare,
151
+ }));
152
+ seatTypesWithPrices.sort((a, b) => a.price - b.price);
153
+ const premiumIndex = seatTypesWithPrices.findIndex((item) => item.label === "Premium");
154
+ if (premiumIndex >= 3) {
155
+ seatTypesWithPrices[2] = seatTypesWithPrices[premiumIndex];
156
+ }
157
+ seatTypesWithPrices = seatTypesWithPrices.slice(0, 2);
158
+ return seatTypesWithPrices;
159
+ };
160
+ const getNumberOfSeats = () => {
161
+ return serviceItem.seat_types.filter((val) => !SEAT_EXCEPTIONS.includes(val.label)).length;
162
+ };
163
+ const getSeatNames = () => {
164
+ const sortedSeatTypes = getSortedSeatTypes();
165
+ return sortedSeatTypes.map((val, key) => SEAT_EXCEPTIONS.includes(val.label) ? null : (React.createElement("span", { key: key, className: `flex items-center justify-between text-[13.33px] ${isSoldOut ? "text-[#c0c0c0]" : ""}` }, typeof val.label === "string" || typeof val.label === "number"
166
+ ? val.label
167
+ : null)));
168
+ };
169
+ const getSeatPrice = () => {
170
+ const sortedSeatTypes = getSortedSeatTypes();
171
+ return sortedSeatTypes.map((val, key) => SEAT_EXCEPTIONS.includes(val.label) ? null : (React.createElement("span", { key: key, className: "flex items-center justify-between text-[13.33px]" }, typeof val.price === "string"
172
+ ? currency(val.price)
173
+ : typeof val.price === "number"
174
+ ? currency(val.price)
175
+ : null)));
176
+ };
177
+ const getFilteredSeats = (item) => {
178
+ return item;
179
+ };
180
+ const checkMidnight = () => {
181
+ var _a, _b;
182
+ if ((cityOrigin === null || cityOrigin === void 0 ? void 0 : cityOrigin.label) &&
183
+ (cityDestination === null || cityDestination === void 0 ? void 0 : cityDestination.label) &&
184
+ ((cityOrigin.label.toLowerCase().includes("argentina") &&
185
+ !cityDestination.label.toLowerCase().includes("argentina")) ||
186
+ (!cityOrigin.label.toLowerCase().includes("argentina") &&
187
+ cityDestination.label.toLowerCase().includes("argentina")))) {
188
+ ModalEventManager.showPopup({
189
+ modalIcon: (_a = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _a === void 0 ? void 0 : _a.warningIcon,
190
+ title: translation === null || translation === void 0 ? void 0 : translation.title,
191
+ showPrimaryButton: false,
192
+ primaryButtonText: translation === null || translation === void 0 ? void 0 : translation.continueButton,
193
+ onSecondaryButtonClick: () => {
194
+ onBookButtonPress && onBookButtonPress();
195
+ },
196
+ secondaryButtonText: translation === null || translation === void 0 ? void 0 : translation.okContinueButton,
197
+ primaryButtonBgColor: colors === null || colors === void 0 ? void 0 : colors.kuposButtonColor,
198
+ primaryButtonTextColor: colors === null || colors === void 0 ? void 0 : colors.primaryButtonTextColor,
199
+ secondaryButtonBgColor: colors === null || colors === void 0 ? void 0 : colors.secondaryBgColor,
200
+ secondaryButtonTextColor: colors === null || colors === void 0 ? void 0 : colors.secondaryTextColor,
201
+ children: React.createElement(InternationalServicePopupBody, null),
202
+ });
203
+ return;
204
+ }
205
+ if (serviceItem.dep_validation_text) {
206
+ ModalEventManager.showPopup({
207
+ body: serviceItem.dep_validation_text,
208
+ primaryButtonText: translation === null || translation === void 0 ? void 0 : translation.continueButton,
209
+ secondaryButtonText: translation === null || translation === void 0 ? void 0 : translation.chooseAnotherTripButton,
210
+ onPrimaryButtonClick: () => {
211
+ onBookButtonPress && onBookButtonPress();
212
+ },
213
+ primaryButtonBgColor: colors === null || colors === void 0 ? void 0 : colors.kuposButtonColor,
214
+ primaryButtonTextColor: colors === null || colors === void 0 ? void 0 : colors.primaryButtonTextColor,
215
+ secondaryButtonBgColor: colors === null || colors === void 0 ? void 0 : colors.secondaryBgColor,
216
+ secondaryButtonTextColor: colors === null || colors === void 0 ? void 0 : colors.secondaryTextColor,
217
+ });
218
+ return;
219
+ }
220
+ if (serviceItem.operator_service_name === "Classe Reale " &&
221
+ cityOrigin.label.toLowerCase() === "santiago,chile" &&
222
+ cityDestination.label.toLowerCase() === "portillo,chile") {
223
+ ModalEventManager.showPopup({
224
+ modalIcon: (_b = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _b === void 0 ? void 0 : _b.warningIcon,
225
+ title: translation === null || translation === void 0 ? void 0 : translation.title,
226
+ primaryButtonText: translation === null || translation === void 0 ? void 0 : translation.okContinueButton,
227
+ secondaryButtonText: translation === null || translation === void 0 ? void 0 : translation.chooseAnotherTripButton,
228
+ onPrimaryButtonClick: () => {
229
+ onBookButtonPress && onBookButtonPress();
230
+ },
231
+ showSecondaryButton: false,
232
+ primaryButtonBgColor: colors === null || colors === void 0 ? void 0 : colors.kuposButtonColor,
233
+ primaryButtonTextColor: colors === null || colors === void 0 ? void 0 : colors.primaryButtonTextColor,
234
+ children: (React.createElement(React.Fragment, null,
235
+ React.createElement("p", { className: "mt-[5px] text-justify" },
236
+ translation.classeNormalText,
237
+ React.createElement("span", { className: "bold-text" },
238
+ "\u00A0",
239
+ translation.classeBoldText),
240
+ translation.classeNormalText1),
241
+ React.createElement("p", { className: "mt-[10px] text-justify" },
242
+ translation.classeNormalText2,
243
+ "\u00A0",
244
+ React.createElement("span", { className: "bold-text" },
245
+ "\u00A0",
246
+ translation.classeBoldText1),
247
+ " ",
248
+ translation.classeNormalText3))),
249
+ });
250
+ return;
251
+ }
252
+ else {
253
+ onBookButtonPressHandler();
254
+ }
255
+ };
256
+ const onBookButtonPressHandler = () => {
257
+ onBookButtonPress();
258
+ };
259
+ return (React.createElement("div", { className: `relative ${serviceItem.offer_text || (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip)
260
+ ? "mb-[60px]"
261
+ : "mb-[20px]"} ${(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ||
262
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" ||
263
+ showTopLabel
264
+ ? "mt-[30px]"
265
+ : "mt-[20px]"} ` },
266
+ React.createElement("div", { className: "bg-white rounded-[20px] shadow-service mb-[10px] mx-auto relative" },
267
+ React.createElement("div", { className: "p-[15px]" },
268
+ React.createElement("div", { className: "flex justify-between items-center mb-[15px]" },
269
+ React.createElement("div", { className: "w-[120px] overflow-y-hidden" },
270
+ React.createElement("img", { src: serviceItem.operator_details[0], alt: "service logo", className: `w-[120px] h-auto object-contain ${isSoldOut ? "grayscale" : ""}` }))),
271
+ React.createElement("div", { className: "grid text-[#464647] w-full [grid-template-columns:minmax(0,1.4fr)_minmax(0,0.2fr)_minmax(0,1fr)_auto] gap-x-[7rem] min-[640px]:gap-x-[6rem] min-[768px]:gap-x-[4rem] min-[1024px]:gap-x-[4rem] min-[1280px]:gap-x-[4rem] min-[1380px]:gap-x-[5rem]" },
272
+ React.createElement("div", { className: "min-h-[2.5rem] flex flex-col justify-between gap-[10px]" },
273
+ React.createElement("div", { className: `flex items-center text-[13.33px] justify-between ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
274
+ React.createElement("div", { className: "flex items-center bold-text capitalize group " },
275
+ orignLabel ? (React.createElement("div", { className: "w-[60px]" }, orignLabel)) : (React.createElement("div", { className: "w-[18px] h-auto mr-[8px]" },
276
+ React.createElement("img", { src: (_a = serviceItem.icons) === null || _a === void 0 ? void 0 : _a.origin, alt: "origin", className: `w-[18px] h-auto mr-[8px] ${isSoldOut ? "grayscale" : ""}` }))),
277
+ React.createElement("span", { className: "cursor-pointer bold-text" }, DateService.getServiceItemDate(serviceItem.travel_date)),
278
+ serviceItem.boarding_stages && (React.createElement("div", { className: "hidden group-hover:block absolute top-[29%] left-[35%] ml-2 text-white px-3 py-2 rounded-[10px] whitespace-normal z-10 shadow-service ", style: { backgroundColor: colors === null || colors === void 0 ? void 0 : colors.tooltipColor } },
279
+ React.createElement("div", { className: "tooltip-arrow absolute top-2 -left-[7px] w-0 h-0 border-t-8 border-b-8 border-r-8 border-t-transparent border-b-transparent", style: { borderRightColor: colors === null || colors === void 0 ? void 0 : colors.tooltipColor } }),
280
+ React.createElement("div", { className: "text-center text-[14px]" }, renderStages(serviceItem.boarding_stages))))),
281
+ React.createElement("div", { className: "mx-[8px]" }, "\u2022"),
282
+ React.createElement("div", { className: "font-[900] relative" }, DateService.formatTime(serviceItem.dep_time))),
283
+ React.createElement("div", { className: `flex items-center text-[13.33px] justify-between ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
284
+ React.createElement("div", { className: "flex items-center bold-text capitalize group " },
285
+ destinationLabel ? (React.createElement("div", { className: "w-[60px]" }, destinationLabel)) : (React.createElement("div", { className: "w-[18px] h-auto mr-[8px]" },
286
+ React.createElement("img", { src: (_b = serviceItem.icons) === null || _b === void 0 ? void 0 : _b.destination, className: `w-[18px] h-auto mr-[8px] ${isSoldOut ? "grayscale" : ""}` }))),
287
+ React.createElement("span", { className: "cursor-pointer bold-text" }, DateService.getServiceItemDate(serviceItem.arrival_date)),
288
+ serviceItem.dropoff_stages && (React.createElement("div", { className: `hidden group-hover:block absolute top-[46%] left-[35%] ml-2 text-white px-3 py-2 rounded-[10px] whitespace-normal z-10 shadow-service`, style: { backgroundColor: colors === null || colors === void 0 ? void 0 : colors.tooltipColor } },
289
+ React.createElement("div", { className: "tooltip-arrow absolute top-2 -left-[7px] w-0 h-0 border-t-8 border-b-8 border-r-8 border-t-transparent border-b-transparent", style: { borderRightColor: colors === null || colors === void 0 ? void 0 : colors.tooltipColor } }),
290
+ React.createElement("div", { className: "text-center text-[14px]" }, renderStages(serviceItem.dropoff_stages))))),
291
+ React.createElement("div", { className: "mx-[8px]" }, "\u2022"),
292
+ React.createElement("div", { className: "font-[900]" }, DateService.formatTime(serviceItem.arr_time)))),
293
+ React.createElement("div", { style: {
294
+ width: "1px",
295
+ height: "2.5rem",
296
+ backgroundColor: "#ccc",
297
+ margin: "auto",
298
+ } }),
299
+ React.createElement("div", { className: "content-center" },
300
+ React.createElement("div", { className: `flex gap-[10px] text-[13.33px] justify-between min-h-[2.5rem] ${getNumberOfSeats() < 3 ? "" : ""}`, style: getNumberOfSeats() < 2 ? { alignItems: "center" } : {} },
301
+ React.createElement("div", { className: "flex flex-col justify-between" }, getSeatNames()),
302
+ React.createElement("div", { className: "flex flex-col justify-between",
303
+ // className={`flex flex-col ${
304
+ // getNumberOfSeats() < 3 ? "justify-between" : ""
305
+ // }`}
306
+ style: { color: isSoldOut ? "#c0c0c0" : colors.priceColor } }, getSeatPrice()))),
307
+ React.createElement("div", null,
308
+ React.createElement("button", { onClick: () => (!isSoldOut ? checkMidnight() : null), disabled: serviceDetailsLoading, className: `w-full ${serviceDetailsLoading || isSoldOut ? "py-[6px]" : "py-[12px]"} text-[13.33px] font-bold text-white rounded-[10px] border-none px-[20px] flex items-center justify-center`, style: {
309
+ backgroundColor: serviceDetailsLoading || isSoldOut
310
+ ? "lightgray"
311
+ : colors.kuposButtonColor,
312
+ cursor: serviceDetailsLoading || isSoldOut
313
+ ? "not-allowed"
314
+ : "pointer",
315
+ } },
316
+ React.createElement("span", { className: "min-w-[75px] flex justify-center items-center bold-text" },
317
+ isSoldOut ? renderIcon("soldOutIcon", "14px") : null,
318
+ 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))))),
319
+ React.createElement("div", { className: "flex justify-end mr-[11px]" }, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) < 10 &&
320
+ (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!"))),
321
+ React.createElement("div", {
322
+ // className={`${
323
+ // serviceItem.is_change_ticket &&
324
+ // serviceItem.pet_seat_info &&
325
+ // serviceItem?.is_tracking_enabled &&
326
+ // Object.keys(serviceItem.pet_seat_info || {}).length > 0
327
+ // ? "grid grid-cols-[1.4fr_4.8fr] gap-[3.4rem] mt-[15px] text-[13px] items-center border-t border-[#eee] mt-[15px] pt-[12px]"
328
+ // : "grid grid-cols-[3.17fr_4.8fr] gap-[3rem] mt-[15px] text-[13px] items-center border-t border-[#eee] mt-[15px] pt-[12px]"
329
+ // }`}
330
+ className: `${"flex justify-between items-center mt-[15px] items-center border-t border-[#eee] mt-[15px] pt-[12px]"}` },
331
+ React.createElement("div", null,
332
+ React.createElement("div", { className: "flex items-center " },
333
+ React.createElement("div", { className: "flex items-center cursor-pointer ", style: { color: isSoldOut ? "#c0c0c0" : "" } },
334
+ React.createElement("div", { className: "flex items-center" },
335
+ React.createElement("div", { className: "w-[18px] h-auto mr-[4px] relative" },
336
+ React.createElement("img", { src: serviceItem.icons.rating, alt: "origin", className: `w-[16px] h-[16px] mr-[4px] object-contain mb-[4px] ${isSoldOut ? "grayscale" : ""}`, onMouseEnter: (e) => {
337
+ const tooltip = e.currentTarget
338
+ .nextElementSibling;
339
+ if (tooltip)
340
+ tooltip.style.display = "block";
341
+ }, onMouseLeave: (e) => {
342
+ const tooltip = e.currentTarget
343
+ .nextElementSibling;
344
+ if (tooltip)
345
+ tooltip.style.display = "none";
346
+ } }),
347
+ React.createElement("div", { className: "hidden group-hover:block absolute left-[80px] -bottom-[160px] z-20 mt-2 w-[280px] rounded-lg shadow-service-2 bg-white overflow-hidden rounded-[14px] border-[2px]", style: {
348
+ borderColor: colors.ratingBorderColor,
349
+ color: isSoldOut ? "#c0c0c0" : "",
350
+ } },
351
+ React.createElement("div", { className: "pt-[20px] text-center" },
352
+ React.createElement("div", { className: "text-[12px] bold-text text-[#464647]" }, "PUNTUACI\u00D3N"),
353
+ React.createElement("div", { className: "text-[12px] font-light text-[#464647]" }, serviceItem.operator_service_name)),
354
+ React.createElement("div", { className: "px-3 py-2 flex flex-col gap-[10px]" }, [
355
+ { key: "1", label: "Calidad del bus" },
356
+ { key: "2", label: "Puntualidad" },
357
+ {
358
+ key: "3",
359
+ label: "Calidad del servicio",
360
+ },
361
+ {
362
+ key: "4",
363
+ label: "Recomendación del servicio",
364
+ },
365
+ ].map((rating, index, array) => {
366
+ const isLast = index === array.length - 1;
367
+ // Use operator_details[6] for rating values
368
+ const ratingData = serviceItem.operator_details[6] || {};
369
+ const value = (ratingData === null || ratingData === void 0 ? void 0 : ratingData[rating.key]) || 0;
370
+ return (React.createElement("div", { key: rating.key, className: `flex items-center ${isLast ? "mb-2" : ""}` },
371
+ React.createElement("div", { className: "relative w-[3rem] h-[3rem]" },
372
+ React.createElement("div", { className: "absolute inset-0 w-full h-full rounded-full" },
373
+ React.createElement("div", { className: "w-full h-full rounded-full border-[2px] border-[lightgray]" })),
374
+ React.createElement("div", { className: "absolute inset-0 w-full h-full" },
375
+ React.createElement("svg", { className: "w-full h-full", viewBox: "0 0 100 100" },
376
+ React.createElement("circle", { cx: "50", cy: "50", r: "48", fill: "none", strokeWidth: "4", stroke: value >= 4
377
+ ? "#00A650"
378
+ : colors.ratingBorderColor, strokeDasharray: value > 0
379
+ ? `${value * 75.4} 301.6`
380
+ : "150.8 301.6", strokeDashoffset: "75.4", transform: "rotate(-90, 50, 50)" }))),
381
+ React.createElement("div", { className: "absolute inset-0 flex items-center justify-center top-[40%] left-[36%]" },
382
+ React.createElement("span", { className: "text-[#464647] font-medium text-[12px] " }, value.toFixed(1)))),
383
+ React.createElement("span", { className: "text-[#464647] text-[13.33px] ml-[10px]" }, rating.label)));
384
+ })),
385
+ React.createElement("div", { className: "px-1 py-2 text-center text-[12px] text-[#ff8f45]", style: { backgroundColor: colors.ratingBottomColor } },
386
+ "Esta puntuaci\u00F3n se obtuvo de las opiniones de",
387
+ " ",
388
+ serviceItem.operator_details[5] || 0,
389
+ " usuarios."))),
390
+ React.createElement("span", { className: "text-[#464647] bold-text text-[13.33px]" }, typeof serviceItem.operator_details[1] === "number"
391
+ ? serviceItem.operator_details[1].toFixed(1)
392
+ : serviceItem.operator_details[1])),
393
+ React.createElement("span", { className: "ml-[10px] text-[#464647] text-[13.33px]" }, serviceItem.operator_details[2])))),
394
+ React.createElement("div", { className: "flex items-baseline relative text-[#464647]" },
395
+ React.createElement("div", { className: `w-[18px] h-auto mr-[4px] ${isSoldOut ? "grayscale" : ""}` }, renderIcon("hours", "14px")),
396
+ React.createElement("div", { className: `cursor-default group text-[13.33px] ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
397
+ serviceItem.duration,
398
+ " ",
399
+ translation.hours,
400
+ React.createElement("div", { className: " hidden group-hover:block absolute top-[24px] left-1/2 -translate-x-1/2 text-white p-3 rounded-[14px] whitespace-normal z-10 mt-2.5 w-[230px] text-center break-normal shadow-service", style: { backgroundColor: colors.tooltipColor } },
401
+ React.createElement("div", { className: "tooltip-arrow absolute -top-[7px] left-1/2 -translate-x-1/2 w-0 h-0 border-l-8 border-r-8 border-b-8 border-l-transparent border-r-transparent", style: { borderBottomColor: colors.tooltipColor } }),
402
+ "Duraci\u00F3n estimada del viaje"))),
403
+ serviceItem.pet_seat_info &&
404
+ Object.keys(serviceItem.pet_seat_info).length > 0 ? (React.createElement("div", { className: "flex items-center" },
405
+ React.createElement("div", { className: `relative group cursor-default ` },
406
+ React.createElement("div", { className: "flex items-center" },
407
+ React.createElement("div", { className: `mr-[5px] ${isSoldOut ? "grayscale" : ""}` },
408
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.petFriendlyAnim, width: "20px", height: "20px" })),
409
+ React.createElement("div", { className: "h-auto mr-[4px] text-[13px] text-[#464647]" },
410
+ React.createElement("span", null, translation === null || translation === void 0 ? void 0 : translation.petFriendly))),
411
+ React.createElement("div", { className: " hidden group-hover:block absolute top-[24px] left-1/2 -translate-x-1/2 text-white p-3 rounded-[14px] whitespace-normal z-10 mt-2.5 w-[230px] text-center break-normal shadow-service", style: { backgroundColor: colors === null || colors === void 0 ? void 0 : colors.tooltipColor } },
412
+ React.createElement("div", { className: "tooltip-arrow absolute text-[13.33px] -top-[7px] left-1/2 -translate-x-1/2 w-0 h-0 border-l-8 border-r-8 border-b-8 border-l-transparent border-r-transparent", style: { borderBottomColor: colors === null || colors === void 0 ? void 0 : colors.tooltipColor } }),
413
+ "Este servicio incluye asientos para mascotas.")))) : null,
414
+ serviceItem.is_change_ticket && (React.createElement("div", { className: "flex items-center" },
415
+ React.createElement("div", { className: "relative group cursor-default" },
416
+ React.createElement("div", { className: "flex items-center" },
417
+ React.createElement("div", { className: `mr-[5px] ${isSoldOut ? "grayscale" : ""}` },
418
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.flexibleAnim, width: "20px", height: "20px" })),
419
+ React.createElement("div", { className: "h-auto mr-[4px] text-[13px] text-[#464647]" },
420
+ React.createElement("span", null, translation === null || translation === void 0 ? void 0 : translation.flexible))),
421
+ React.createElement("div", { className: "hidden group-hover:block absolute top-[24px] left-1/2 -translate-x-1/2 text-white p-3 rounded-[14px] whitespace-normal z-10 mt-2.5 w-[230px] text-center break-normal shadow-service text-[13.33px]", style: { backgroundColor: colors.tooltipColor } },
422
+ React.createElement("div", { className: "tooltip-arrow absolute -top-[7px] left-1/2 -translate-x-1/2 w-0 h-0 border-l-8 border-r-8 border-b-8 border-l-transparent border-r-transparent ", style: { borderBottomColor: colors.tooltipColor } }),
423
+ "Esta empresa permite cambios sin costo hasta (", (_c = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.change_ticket_hours) !== null && _c !== void 0 ? _c : 6,
424
+ ") horas antes del viaje.")))),
425
+ React.createElement("div", { className: "flex items-center" },
426
+ React.createElement("div", null, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_tracking_enabled) && (React.createElement("div", { className: "flex items-center mr-[10px]" },
427
+ React.createElement("div", { className: `h-auto mr-[4px] text-[13px] text-[#464647] ${isSoldOut ? "grayscale" : ""}` },
428
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.locationAnim, width: "20px", height: "20px" }))))),
429
+ React.createElement("div", null, metaData && serviceItem.operator_details[4] && (React.createElement("div", { className: "flex items-center gap-[6px]" },
430
+ (((_d = serviceItem.operator_details[3]) === null || _d === void 0 ? void 0 : _d.includes("18"))
431
+ ? [...serviceItem.operator_details[4], "18"]
432
+ : serviceItem.operator_details[4]).map((val, key) => {
433
+ var _a, _b, _c, _d;
434
+ return (key < 3 &&
435
+ ((_b = (_a = metaData === null || metaData === void 0 ? void 0 : metaData.amenities[val]) === null || _a === void 0 ? void 0 : _a.split(".")[0]) === null || _b === void 0 ? void 0 : _b.toUpperCase()) !== "WATER") ||
436
+ val === "18" ? (React.createElement("div", { key: key, className: "relative mr-2 cursor-pointer" },
437
+ React.createElement("div", { className: "group" },
438
+ React.createElement("div", { className: `${isSoldOut ? "grayscale" : ""}` },
439
+ React.createElement(SvgAmenities, { moreAnemities: false, name: (_c = metaData.amenities[val]) === null || _c === void 0 ? void 0 : _c.split(".")[0].toLowerCase() })),
440
+ React.createElement("div", { className: "hidden group-hover:block absolute top-[24px] left-1/2 -translate-x-1/2 text-white p-3 rounded-[14px] whitespace-nowrap z-10 mt-2.5 text-center shadow-service text-[13.33px]", style: { backgroundColor: colors.tooltipColor } },
441
+ React.createElement("div", { className: "tooltip-arrow absolute -top-[7px] left-1/2 -translate-x-1/2 w-0 h-0 border-l-8 border-r-8 border-b-8 border-l-transparent border-r-transparent", style: {
442
+ borderBottomColor: colors.tooltipColor,
443
+ } }),
444
+ getAmenityName((_d = metaData.amenities[val]) === null || _d === void 0 ? void 0 : _d.split(".")[0].split("_").join(" ")))))) : null;
445
+ }),
446
+ ((_e = serviceItem.operator_details[4]) === null || _e === void 0 ? void 0 : _e.length) > 3 && (React.createElement("div", { className: "relative ml-1 cursor-pointer" },
447
+ React.createElement("div", { className: "w-[16px] h-[16px] bg-gray-200 rounded-full flex items-center justify-center text-sm font-bold ml-[5px] group" },
448
+ React.createElement("img", { src: ((_f = serviceItem.icons) === null || _f === void 0 ? void 0 : _f.plus) ||
449
+ "/images/icons/amenities/icon_plus.svg", className: "w-[16px] h-[16px]", alt: "plus" }),
450
+ React.createElement("div", { className: "hidden group-hover:block absolute -top-[13px] left-[40px] z-20 pl-[10px]" },
451
+ React.createElement("div", { className: "flex flex-col gap-[10px] p-3 rounded-[8px] shadow-md animate-fadeIn relative", style: { backgroundColor: colors.tooltipColor } },
452
+ metaData &&
453
+ ((_g = serviceItem.operator_details[4]) === null || _g === void 0 ? void 0 : _g.map((val, key) => {
454
+ var _a, _b, _c, _d, _e, _f, _g;
455
+ const exceptions = [
456
+ 1, 2, 5, 7, 8, 9, 12, 13, 14, 15,
457
+ ];
458
+ return exceptions.includes(key) ? null : key >= 3 &&
459
+ ((_b = (_a = metaData.amenities[val]) === null || _a === void 0 ? void 0 : _a.split(".")[0]) === null || _b === void 0 ? void 0 : _b.toUpperCase()) !== "WATER" ? (React.createElement("div", { key: key, className: "flex items-center gap-[5px] whitespace-nowrap text-[13.33px]" },
460
+ React.createElement("div", { className: `${isSoldOut ? "grayscale" : ""}` },
461
+ React.createElement(SvgAmenities, { moreAnemities: true, name: (_d = (_c = metaData.amenities[val]) === null || _c === void 0 ? void 0 : _c.split(".")[0]) === null || _d === void 0 ? void 0 : _d.toUpperCase(), color: "white" })),
462
+ React.createElement("span", { className: "text-white text-xs" }, getAmenityName((_g = (_f = (_e = metaData.amenities[val]) === null || _e === void 0 ? void 0 : _e.split(".")[0]) === null || _f === void 0 ? void 0 : _f.split("_")) === null || _g === void 0 ? void 0 : _g.join(" "))))) : null;
463
+ })),
464
+ React.createElement("div", { className: "tooltip-arrow absolute -left-[6px] top-[15px] w-0 h-0 border-t-8 border-b-8 border-r-8 border-t-transparent border-b-transparent ", style: {
465
+ borderRightColor: colors.tooltipColor,
466
+ } }))))))))))))),
467
+ children,
468
+ (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: { backgroundColor: isSoldOut ? "" : colors === null || colors === void 0 ? void 0 : colors.bottomStripColor } },
469
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.promoAnim, width: "18px", height: "18px" }),
470
+ React.createElement("span", { className: "ml-[10px]" }, serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text))),
471
+ React.createElement("div", { className: "absolute -top-[17px] left-0 w-full flex items-center justify-end gap-[12px] pr-[20px] z-10 " },
472
+ showTopLabel && (React.createElement("div", { className: `flex items-center gap-[10px] py-[8px] px-[20px] rounded-[38px] text-[13.33px] z-20 ${isSoldOut ? "bg-[#ddd]" : ``}`, style: { backgroundColor: !isSoldOut && colors.ratingBottomColor } },
473
+ React.createElement("div", { className: isSoldOut ? "grayscale" : "" },
474
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.priorityStageAnim, width: "20px", height: "20px" })),
475
+ React.createElement("div", { className: isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]` }, showTopLabel))),
476
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_transpordo) && (React.createElement("div", { className: `flex items-center gap-[10px] py-[8px] text-white px-[20px] rounded-[38px] text-[13.33px] z-20 ${isSoldOut ? "bg-[#ddd]" : `bg-[${colors.tooltipColor}]`}` },
477
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.connectingServiceIcon, width: "20px", height: "20px" }),
478
+ React.createElement("div", null, "Conexión"))),
479
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) && (React.createElement("div", { className: `flex items-center gap-[10px] py-[8px] text-white px-[20px] rounded-[38px] text-[13.33px] z-20 ${isSoldOut ? "bg-[#ddd]" : `bg-[${colors.tooltipColor}]`}` },
480
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.directoAnim, width: "20px", height: "20px" }),
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-[8px] text-white px-[20px] rounded-[38px] text-[13.33px] z-20 ${isSoldOut ? "bg-[#ddd]" : `bg-[${colors.tooltipColor}]`}` },
483
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.directoAnim, width: "20px", height: "20px" }),
484
+ React.createElement("div", null, "Tren Express"))))));
485
+ }
486
+ export default ServiceItemPB;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { MobileServiceItemProps } from "./mobileTypes";
3
+ declare function ServiceItemPBMobile({ serviceItem, onBookButtonPress, colors, busStage, orignLabel, destinationLabel, amenitiesData, setShowDropdown, showDropdown, setAmenetiesAtomValue, }: MobileServiceItemProps): React.ReactElement;
4
+ export default ServiceItemPBMobile;