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,248 @@
1
+ import React from "react";
2
+ import LottiePlayer from "../../assets/LottiePlayer";
3
+ import DateService from "../../utils/DateService";
4
+ const SEAT_EXCEPTIONS = ["Asiento mascota"];
5
+ const exceptions = [
6
+ "gy",
7
+ ".gy",
8
+ "GY",
9
+ ".GY",
10
+ "Gy",
11
+ ".Gy",
12
+ "BLANCO",
13
+ "blanco",
14
+ "asiento_mascota",
15
+ ];
16
+ function ServiceItemMobile({ serviceItem, onBookButtonPress, colors, busStage, orignLabel, destinationLabel, amenitiesData, setShowDropdown, showDropdown, setAmenetiesAtomValue, }) {
17
+ var _a, _b;
18
+ const isPetSeat = (Object.keys(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.pet_seat_info) || []).length > 0;
19
+ let isSoldOut = serviceItem.available_seats <= 0;
20
+ const currency = (amount) => {
21
+ const formattedAmount = amount
22
+ .toString()
23
+ .replace(/\B(?=(\d{3})+(?!\d))/g, ",");
24
+ return "$" + formattedAmount;
25
+ };
26
+ const labelId = typeof serviceItem.boarding_stages === "string"
27
+ ? serviceItem.boarding_stages.split("|")[0]
28
+ : "";
29
+ const showTopLabel = busStage &&
30
+ busStage[labelId] &&
31
+ busStage[labelId].split("|")[1] === "true" &&
32
+ busStage[labelId].split("|")[0];
33
+ const getServiceStars = (serviceItem) => {
34
+ try {
35
+ return serviceItem.operator_details && serviceItem.operator_details[1]
36
+ ? serviceItem.operator_details[1].toFixed(1)
37
+ : "0.0";
38
+ }
39
+ catch (e) {
40
+ return "";
41
+ }
42
+ };
43
+ const seatTypes = () => {
44
+ var _a, _b, _c, _d;
45
+ let seatTypes = (_d = (_c = (_b = (_a = serviceItem.seat_types) === null || _a === void 0 ? void 0 : _a.filter((item) => getFilteredSeats(item.label))) === null || _b === void 0 ? void 0 : _b.sort((a, b) => a.fare - b.fare) // Add this line to sort by fare
46
+ ) === null || _c === void 0 ? void 0 : _c.slice(0, 2)) === null || _d === void 0 ? void 0 : _d.map((type, i) => {
47
+ var _a;
48
+ return exceptions.includes(type.label) ? null : (React.createElement("div", { className: ((_a = serviceItem.seat_types) === null || _a === void 0 ? void 0 : _a.length) > 2
49
+ ? "w-[100%] flex flex-row justify-between "
50
+ : "w-[100%] flex flex-row justify-between items-center", key: i },
51
+ React.createElement("span", { className: "text-[13px] ", style: { marginLeft: "10px" } }, type.label),
52
+ React.createElement("span", { className: "text-[13px] bold-text", style: { color: isSoldOut ? "#c0c0c0" : colors.priceColor } }, currency(type.fare))));
53
+ });
54
+ return seatTypes;
55
+ };
56
+ const getFilteredSeats = (item) => {
57
+ return item;
58
+ };
59
+ const getAmenitiesImage = (name) => {
60
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
61
+ switch (name) {
62
+ case "air_condtion.png": {
63
+ return (_a = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _a === void 0 ? void 0 : _a.airConditionIcon;
64
+ }
65
+ case "baggage.png": {
66
+ return (_b = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _b === void 0 ? void 0 : _b.baggageIcon;
67
+ }
68
+ case "charging_plug.png": {
69
+ return (_c = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _c === void 0 ? void 0 : _c.chargingIcon;
70
+ }
71
+ case "coffee.png": {
72
+ return (_d = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _d === void 0 ? void 0 : _d.coffeeIcon;
73
+ }
74
+ case "food_new_icon.png": {
75
+ return (_e = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _e === void 0 ? void 0 : _e.foodIcon;
76
+ }
77
+ case "gaming.png": {
78
+ return (_f = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _f === void 0 ? void 0 : _f.gamingIcon;
79
+ }
80
+ case "handicap.png": {
81
+ return (_g = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _g === void 0 ? void 0 : _g.handicapIcon;
82
+ }
83
+ case "mobile_ticket.png": {
84
+ return (_h = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _h === void 0 ? void 0 : _h.mobileTicketIcon;
85
+ }
86
+ case "movie.png": {
87
+ return (_j = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _j === void 0 ? void 0 : _j.movieIcon;
88
+ }
89
+ case "restrooms.png": {
90
+ return (_k = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _k === void 0 ? void 0 : _k.restroomsIcon;
91
+ }
92
+ case "snacks_new.png": {
93
+ return (_l = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _l === void 0 ? void 0 : _l.snackIcon;
94
+ }
95
+ case "wifi.png": {
96
+ return (_m = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _m === void 0 ? void 0 : _m.wifiIcon;
97
+ }
98
+ case "cortina_divisoria.png": {
99
+ return (_o = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _o === void 0 ? void 0 : _o.cortinaIcon;
100
+ }
101
+ case "frazada.png": {
102
+ return (_p = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _p === void 0 ? void 0 : _p.frazaIcon;
103
+ }
104
+ default: {
105
+ return "";
106
+ }
107
+ }
108
+ };
109
+ const amenities = () => {
110
+ var _a;
111
+ const raw = (_a = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.operator_details) === null || _a === void 0 ? void 0 : _a[3];
112
+ const list = Array.isArray(raw)
113
+ ? raw
114
+ : typeof raw === "string"
115
+ ? raw.split("|").filter(Boolean)
116
+ : [];
117
+ const nodes = list
118
+ .slice(0, 2)
119
+ .map((am, i) => {
120
+ var _a;
121
+ return (React.createElement("img", { key: i, className: "amenity", height: 15, src: getAmenitiesImage((_a = amenitiesData === null || amenitiesData === void 0 ? void 0 : amenitiesData[am]) === null || _a === void 0 ? void 0 : _a.toLowerCase()), alt: "icon" }));
122
+ });
123
+ return nodes;
124
+ };
125
+ const renderIcon = (iconKey, size = "14px") => {
126
+ var _a;
127
+ const iconValue = (_a = serviceItem.icons) === null || _a === void 0 ? void 0 : _a[iconKey];
128
+ if (iconValue) {
129
+ if (typeof iconValue === "string") {
130
+ return (React.createElement("img", { src: iconValue, alt: iconKey, className: `${`w-[${size}] h-[${size}]`} mr-[5px]` }));
131
+ }
132
+ }
133
+ return null;
134
+ };
135
+ let isConexion = false;
136
+ if (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_transpordo) {
137
+ isConexion = true;
138
+ }
139
+ return (React.createElement("div", { className: `relative ${serviceItem.offer_text || (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip)
140
+ ? "mb-[60px]"
141
+ : "mb-[20px]"} ${(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ||
142
+ isConexion ||
143
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" ||
144
+ showTopLabel
145
+ ? "mt-[30px]"
146
+ : "mt-[20px]"} `, style: { backgroundColor: "#fff", zIndex: 1 } },
147
+ React.createElement("div", { className: "border border-[#E6E6E6] rounded-[20px]", style: { backgroundColor: "#fff", zIndex: 1 } },
148
+ React.createElement("div", { className: `p-[15px] ${(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.train_type_label) === "Tren Express (Nuevo)" ||
149
+ showTopLabel ||
150
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) ||
151
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_transpordo)
152
+ ? "mt-[10px]"
153
+ : ""}` },
154
+ React.createElement("div", { className: "flex justify-between mb-[8px]" },
155
+ React.createElement("div", { className: "flex items-center w-[50%] justify-between" },
156
+ React.createElement("div", { className: "w-[120px] overflow-y-hidden" },
157
+ React.createElement("img", { src: serviceItem.operator_details[0], alt: "service logo", className: `w-[100px] h-auto object-contain ${isSoldOut ? "grayscale" : ""}` })),
158
+ React.createElement("div", { className: "flex text-[13px] bold-text" },
159
+ React.createElement("img", { src: serviceItem.icons.rating, alt: "origin", className: `w-[10px] h-[10px] mr-[4px] object-contain mt-[2px] ${isSoldOut ? "grayscale" : ""}` }),
160
+ getServiceStars(serviceItem))),
161
+ React.createElement("div", { className: "flex justify-end -mt-[5px] -mb-[5px] items-center pt-[5px] pb-[5px] text-center " }, (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) < 10 &&
162
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.available_seats) > 0 && (React.createElement("span", { className: "text-[12px] text-[red] mt-1 flex\n justify-end\n \n \n pt-[5px] pb-[5px] pl-[15px] pr-[15px]\n rounded-[8px] bg-[#DE051414]" }, "\u00A1 \u00DAltimos Asientos!")))),
163
+ React.createElement("div", { className: "flex justify-between gap-[5px] w-full", onClick: onBookButtonPress },
164
+ React.createElement("div", { className: "min-h-[2.5rem] flex flex-col justify-between gap-[4px] w-[50%]" },
165
+ React.createElement("div", { className: `flex items-center text-[13px] justify-between ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
166
+ React.createElement("div", { className: "flex items-center bold-text capitalize group " },
167
+ orignLabel ? (React.createElement("div", { className: "w-[60px]" }, orignLabel)) : (React.createElement("div", { className: "w-[14px] h-auto mr-[5px]" },
168
+ React.createElement("img", { src: (_a = serviceItem.icons) === null || _a === void 0 ? void 0 : _a.origin, alt: "origin", className: `w-[14px] h-auto mr-[5px] ${isSoldOut ? "grayscale" : ""}` }))),
169
+ React.createElement("span", { className: "cursor-pointer black-text" }, DateService.getServiceItemDate(serviceItem.travel_date))),
170
+ React.createElement("div", { className: "mx-[8px]" }, "\u2022"),
171
+ React.createElement("div", { className: "font-[900] relative black-text" }, DateService.formatTime(serviceItem.dep_time))),
172
+ React.createElement("div", { className: `flex items-center text-[13px] justify-between ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
173
+ React.createElement("div", { className: "flex items-center bold-text capitalize group " },
174
+ destinationLabel ? (React.createElement("div", { className: "w-[60px]" }, destinationLabel)) : (React.createElement("div", { className: "w-[14px] h-auto mr-[5px]" },
175
+ React.createElement("img", { src: (_b = serviceItem.icons) === null || _b === void 0 ? void 0 : _b.destination, className: `w-[14px] h-auto mr-[5px] ${isSoldOut ? "grayscale" : ""}` }))),
176
+ React.createElement("span", { className: "cursor-pointer black-text" }, DateService.getServiceItemDate(serviceItem.arrival_date))),
177
+ React.createElement("div", { className: "mx-[8px]" }, "\u2022"),
178
+ React.createElement("div", { className: "font-[900] black-text" }, DateService.formatTime(serviceItem.arr_time)))),
179
+ React.createElement("div", { className: "content-center w-[47%]" },
180
+ React.createElement("div", { className: "flex flex-col justify-between h-[2.5rem] gap-[5px]" },
181
+ seatTypes(),
182
+ isSoldOut ? (React.createElement("div", null,
183
+ React.createElement("span", { className: "text-[13px]" }, "Agotado"))) : null))),
184
+ React.createElement("div", { className: "bg-[#E6E6E6] -ml-[12px] -mr-[12px] mt-[10px] mb-[10px] h-[1px]" }),
185
+ React.createElement("div", { className: `${"flex justify-between items-center mt-[15px] items-center "}` },
186
+ React.createElement("div", null,
187
+ React.createElement("div", { className: "flex items-center " },
188
+ React.createElement("div", { className: "flex items-center cursor-pointer ", style: { color: isSoldOut ? "#c0c0c0" : "" } },
189
+ React.createElement("span", { className: "ml-[3px] text-[#464647] text-[13px] bold-text" }, serviceItem.operator_details[2])))),
190
+ React.createElement("div", { className: "flex relative text-[#464647]" },
191
+ React.createElement("div", { className: `w-[12px] h-auto mr-[2px] ${isSoldOut ? "grayscale" : ""}` }, renderIcon("hours", "12px")),
192
+ React.createElement("div", { className: `cursor-default group text-[13px] ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
193
+ serviceItem.duration,
194
+ "hrs")),
195
+ React.createElement("div", null, amenities()),
196
+ (serviceItem.is_change_ticket || isPetSeat) && (React.createElement("div", { onClick: () => {
197
+ setShowDropdown(!showDropdown);
198
+ setAmenetiesAtomValue({
199
+ service: serviceItem,
200
+ showTopLabel: showTopLabel,
201
+ });
202
+ }, className: "flex items-center" },
203
+ serviceItem.pet_seat_info &&
204
+ Object.keys(serviceItem.pet_seat_info).length > 0 ? (React.createElement("div", { className: "flex items-center" },
205
+ React.createElement("div", { className: `relative group cursor-default ` },
206
+ React.createElement("div", { className: "flex items-center" },
207
+ React.createElement("div", { className: `mr-[5px] ${isSoldOut ? "grayscale" : ""}` },
208
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.petFriendlyAnim, width: "20px", height: "20px" })))))) : null,
209
+ serviceItem.is_change_ticket && (React.createElement("div", { className: "flex items-center" },
210
+ React.createElement("div", { className: "relative group cursor-default" },
211
+ React.createElement("div", { className: "flex items-center" },
212
+ React.createElement("div", { className: `mr-[5px] ${isSoldOut ? "grayscale" : ""}` },
213
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.flexibleAnim, width: "20px", height: "20px" })))))),
214
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_tracking_enabled) && (React.createElement("div", { className: "flex items-center mr-[10px]" },
215
+ React.createElement("div", { className: `h-auto mr-[4px] text-[13px] text-[#464647] ${isSoldOut ? "grayscale" : ""}` },
216
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.locationAnim, width: "20px", height: "20px" })))),
217
+ (serviceItem.is_change_ticket || isPetSeat) && (React.createElement("img", { src: serviceItem.icons.plus, alt: "icon", width: 11 })))))),
218
+ (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: {
219
+ backgroundColor: isSoldOut ? "" : colors === null || colors === void 0 ? void 0 : colors.bottomStripColor,
220
+ zIndex: -1,
221
+ color: "#fff",
222
+ } },
223
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.promoAnim, width: "18px", height: "18px" }),
224
+ React.createElement("span", { className: "ml-[10px] text-[#fff] text-[13px]" }, serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.offer_text))),
225
+ React.createElement("div", { className: "absolute -top-[14px] left-0 w-full flex items-center justify-end gap-[12px] pr-[20px] z-10 " },
226
+ showTopLabel && (React.createElement("div", { className: `flex items-center gap-[2px] py-[5px] px-[10px] rounded-[38px] text-[12px] z-20 ${isSoldOut ? "bg-[#ddd]" : ``}`, style: {
227
+ backgroundColor: !isSoldOut && colors.ratingBottomColor,
228
+ } },
229
+ React.createElement("div", { className: isSoldOut ? "grayscale" : "" },
230
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.priorityStageAnim, width: "18px", height: "18px" })),
231
+ React.createElement("div", { className: isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]` }, showTopLabel))),
232
+ isConexion && (React.createElement("div", { className: `flex items-center gap-[2px] py-[5px] text-white px-[10px] rounded-[38px] text-[12px] z-20 ${isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]`}`, style: {
233
+ backgroundColor: !isSoldOut && colors.ratingBottomColor,
234
+ } },
235
+ renderIcon("airportIcon", "14px"),
236
+ React.createElement("div", null, "Conexi\u00F3n"))),
237
+ (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_direct_trip) && (React.createElement("div", { className: `flex items-center gap-[2px] py-[5px] text-white px-[10px] rounded-[38px] text-[12px] z-20 `, style: {
238
+ backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
239
+ } },
240
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.directoAnim, width: "20px", height: "20px" }),
241
+ React.createElement("div", null, "Directo"))),
242
+ (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] text-[12px] z-20 `, style: {
243
+ backgroundColor: isSoldOut ? "#ddd" : colors.tooltipColor,
244
+ } },
245
+ React.createElement(LottiePlayer, { animationData: serviceItem.icons.directoAnim, width: "20px", height: "20px" }),
246
+ React.createElement("div", null, "Tren Express")))))));
247
+ }
248
+ export default ServiceItemMobile;
@@ -0,0 +1,5 @@
1
+ import ServiceItemDesktop from "./ServiceItemDesktop";
2
+ import ServiceItemMobile from "./ServiceItemMobile";
3
+ import ResponsiveServiceItem from "./ResponsiveServiceItem";
4
+ export { ServiceItemDesktop, ServiceItemMobile, ResponsiveServiceItem };
5
+ export type { ServiceItemProps } from "./types";
@@ -0,0 +1,4 @@
1
+ import ServiceItemDesktop from "./ServiceItemDesktop";
2
+ import ServiceItemMobile from "./ServiceItemMobile";
3
+ import ResponsiveServiceItem from "./ResponsiveServiceItem";
4
+ export { ServiceItemDesktop, ServiceItemMobile, ResponsiveServiceItem };
@@ -0,0 +1,141 @@
1
+ export interface MobileServiceItemProps {
2
+ busStage?: Record<string, string>;
3
+ amenitiesData?: any;
4
+ serviceItem: {
5
+ id: string;
6
+ is_transpordo?: boolean;
7
+ operator_details: [
8
+ string,
9
+ string | number,
10
+ string,
11
+ string | string[],
12
+ string[],
13
+ number?,
14
+ Record<string, number>?,
15
+ boolean?,
16
+ number?,
17
+ boolean?
18
+ ];
19
+ travel_date: string;
20
+ arrival_date: string;
21
+ dep_time: string;
22
+ arr_time: string;
23
+ available_seats: number;
24
+ busstages?: Record<string, string>;
25
+ seat_types: Array<{
26
+ label: string;
27
+ fare: number;
28
+ }>;
29
+ boarding_stages?: Array<{
30
+ label: string;
31
+ time: string;
32
+ }> | {
33
+ label: string;
34
+ time: string;
35
+ } | string;
36
+ dropoff_stages?: Array<{
37
+ label: string;
38
+ time: string;
39
+ }> | {
40
+ label: string;
41
+ time: string;
42
+ };
43
+ pet_seat_info?: Record<string, any>;
44
+ is_change_ticket?: boolean;
45
+ change_ticket_hours?: number;
46
+ duration?: number;
47
+ train_type_label?: string;
48
+ offer_text?: string;
49
+ is_direct_trip?: boolean;
50
+ is_train_type?: boolean;
51
+ operator_service_name?: string;
52
+ dep_validation_text?: string;
53
+ metaData?: {};
54
+ is_tracking_enabled?: boolean;
55
+ show_top_label?: boolean;
56
+ lottie?: {
57
+ location?: string;
58
+ flexible?: string;
59
+ };
60
+ amenities?: Array<{
61
+ icon: string;
62
+ label: string;
63
+ }>;
64
+ rating_details?: {
65
+ bus_quality: number;
66
+ punctuality: number;
67
+ service_quality: number;
68
+ service_recommendation: number;
69
+ total_reviews: number;
70
+ };
71
+ icons?: {
72
+ origin?: string;
73
+ destination?: string;
74
+ rating?: string;
75
+ duration?: string;
76
+ hours?: string;
77
+ flexibleAnim?: string;
78
+ locationAnim?: string;
79
+ announcement?: string;
80
+ directo?: string;
81
+ directoAnim?: string;
82
+ petFriendlyAnim?: string;
83
+ priorityStageAnim?: string;
84
+ promoAnim?: string;
85
+ priority?: string;
86
+ changeTicket?: string;
87
+ plus?: string;
88
+ petSeat?: string;
89
+ warningIcon?: string;
90
+ soldOutIcon?: string;
91
+ airConditionIcon?: string;
92
+ baggageIcon?: string;
93
+ chargingIcon?: string;
94
+ coffeeIcon?: string;
95
+ foodIcon?: string;
96
+ gamingIcon?: string;
97
+ handicapIcon?: string;
98
+ mobileTicketIcon?: string;
99
+ movieIcon?: string;
100
+ restroomsIcon?: string;
101
+ snackIcon?: string;
102
+ wifiIcon?: string;
103
+ cortinaIcon?: string;
104
+ frazaIcon?: string;
105
+ airportIcon?: string;
106
+ [key: string]: string | Record<string, string | undefined> | undefined;
107
+ };
108
+ useLottieFor?: string[];
109
+ };
110
+ onBookButtonPress?: () => void;
111
+ terminals?: any[];
112
+ showDropdown?: boolean;
113
+ setShowDropdown?: (value: boolean) => void;
114
+ setAmenetiesAtomValue?: (value: {
115
+ service: MobileServiceItemProps["serviceItem"];
116
+ showTopLabel: string | boolean;
117
+ } | null | ((curr: {
118
+ service: MobileServiceItemProps["serviceItem"];
119
+ showTopLabel: string | boolean;
120
+ } | null) => {
121
+ service: MobileServiceItemProps["serviceItem"];
122
+ showTopLabel: string | boolean;
123
+ } | null)) => void;
124
+ hours?: number;
125
+ change_ticket_hours?: number;
126
+ colors: {
127
+ kuposButtonColor?: string;
128
+ topLabelColor?: string;
129
+ tooltipColor?: string;
130
+ ratingBorderColor?: string;
131
+ ratingBottomColor?: string;
132
+ priceColor?: string;
133
+ secondaryBgColor?: string;
134
+ secondaryTextColor?: string;
135
+ primaryButtonTextColor?: string;
136
+ bottomStripColor?: string;
137
+ };
138
+ orignLabel?: string;
139
+ destinationLabel?: string;
140
+ variant?: "desktop" | "mobile" | "auto";
141
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,164 @@
1
+ import React from "react";
2
+ export interface ServiceItemProps {
3
+ metaData?: any;
4
+ busStage?: Record<string, string>;
5
+ children?: React.ReactNode;
6
+ serviceItem: {
7
+ id: string;
8
+ operator_details: [
9
+ string,
10
+ string | number,
11
+ string,
12
+ string | string[],
13
+ string[],
14
+ number?,
15
+ Record<string, number>?,
16
+ boolean?,
17
+ number?,
18
+ boolean?
19
+ ];
20
+ travel_date: string;
21
+ arrival_date: string;
22
+ dep_time: string;
23
+ arr_time: string;
24
+ available_seats: number;
25
+ busstages?: Record<string, string>;
26
+ seat_types: Array<{
27
+ label: string;
28
+ fare: number;
29
+ }>;
30
+ boarding_stages?: Array<{
31
+ label: string;
32
+ time: string;
33
+ }> | {
34
+ label: string;
35
+ time: string;
36
+ } | string;
37
+ dropoff_stages?: Array<{
38
+ label: string;
39
+ time: string;
40
+ }> | {
41
+ label: string;
42
+ time: string;
43
+ };
44
+ pet_seat_info?: Record<string, any>;
45
+ is_change_ticket?: boolean;
46
+ change_ticket_hours?: number;
47
+ duration?: number;
48
+ train_type_label?: string;
49
+ offer_text?: string;
50
+ is_direct_trip?: boolean;
51
+ is_transpordo?: boolean;
52
+ is_train_type?: boolean;
53
+ operator_service_name?: string;
54
+ dep_validation_text?: string;
55
+ metaData?: {};
56
+ is_tracking_enabled?: boolean;
57
+ show_top_label?: boolean;
58
+ lottie?: {
59
+ location?: string;
60
+ flexible?: string;
61
+ };
62
+ amenities?: Array<{
63
+ icon: string;
64
+ label: string;
65
+ }>;
66
+ rating_details?: {
67
+ bus_quality: number;
68
+ punctuality: number;
69
+ service_quality: number;
70
+ service_recommendation: number;
71
+ total_reviews: number;
72
+ };
73
+ icons?: {
74
+ origin?: string;
75
+ destination?: string;
76
+ rating?: string;
77
+ duration?: string;
78
+ hours?: string;
79
+ flexibleAnim?: string;
80
+ locationAnim?: string;
81
+ announcement?: string;
82
+ directo?: string;
83
+ directoAnim?: string;
84
+ petFriendlyAnim?: string;
85
+ connectingServiceIcon?: string;
86
+ priorityStageAnim?: string;
87
+ promoAnim?: string;
88
+ priority?: string;
89
+ changeTicket?: string;
90
+ plus?: string;
91
+ petSeat?: string;
92
+ warningIcon?: string;
93
+ soldOutIcon?: string;
94
+ airConditionIcon?: string;
95
+ baggageIcon?: string;
96
+ chargingIcon?: string;
97
+ coffeeIcon?: string;
98
+ foodIcon?: string;
99
+ gamingIcon?: string;
100
+ handicapIcon?: string;
101
+ mobileTicketIcon?: string;
102
+ movieIcon?: string;
103
+ restroomsIcon?: string;
104
+ snackIcon?: string;
105
+ wifiIcon?: string;
106
+ cortinaIcon?: string;
107
+ frazaIcon?: string;
108
+ [key: string]: string | Record<string, string | undefined> | undefined;
109
+ };
110
+ useLottieFor?: string[];
111
+ };
112
+ onBookButtonPress?: () => void;
113
+ terminals?: any[];
114
+ t?: (key: string) => string;
115
+ serviceDetailsLoading?: boolean;
116
+ query?: {
117
+ city_origin?: string;
118
+ city_destination?: string;
119
+ };
120
+ hours?: number;
121
+ change_ticket_hours?: number;
122
+ colors: {
123
+ kuposButtonColor?: string;
124
+ topLabelColor?: string;
125
+ tooltipColor?: string;
126
+ ratingBorderColor?: string;
127
+ ratingBottomColor?: string;
128
+ priceColor?: string;
129
+ secondaryBgColor?: string;
130
+ secondaryTextColor?: string;
131
+ primaryButtonTextColor?: string;
132
+ bottomStripColor?: string;
133
+ };
134
+ cityOrigin?: {
135
+ value: number;
136
+ label: string;
137
+ };
138
+ cityDestination?: {
139
+ value: number;
140
+ label: string;
141
+ };
142
+ translation?: {
143
+ [key: string]: string;
144
+ };
145
+ orignLabel?: string;
146
+ destinationLabel?: string;
147
+ variant?: "desktop" | "mobile" | "auto";
148
+ mobileServiceItem?: ServiceItemProps["serviceItem"];
149
+ mobileColors?: ServiceItemProps["colors"];
150
+ mobileTranslation?: ServiceItemProps["translation"];
151
+ showDropdown?: boolean;
152
+ setShowDropdown?: (value: boolean) => void;
153
+ setAmenetiesAtomValue?: (value: {
154
+ service: ServiceItemProps["serviceItem"];
155
+ showTopLabel: string | boolean;
156
+ } | null | ((curr: {
157
+ service: ServiceItemProps["serviceItem"];
158
+ showTopLabel: string | boolean;
159
+ } | null) => {
160
+ service: ServiceItemProps["serviceItem"];
161
+ showTopLabel: string | boolean;
162
+ } | null)) => void;
163
+ amenitiesData?: any;
164
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import { ServiceListProps } from "./types";
3
+ export default function ResponsiveServiceList(props: ServiceListProps): React.JSX.Element;
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import ServiceListDesktop from "./ServiceListDesktop";
3
+ import ServiceListMobile from "./ServiceListMobile";
4
+ export default function ResponsiveServiceList(props) {
5
+ const { variant } = props;
6
+ if (variant === "mobile") {
7
+ return React.createElement(ServiceListMobile, Object.assign({}, props));
8
+ }
9
+ return React.createElement(ServiceListDesktop, Object.assign({}, props));
10
+ }
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { ServiceListProps } from "./types";
3
+ declare const ServiceListDesktop: React.FC<ServiceListProps>;
4
+ export default ServiceListDesktop;