kupos-ui-components-lib 9.7.1 → 9.7.3

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.
@@ -21,70 +21,48 @@ const HARDCODED_OPERATORS = [
21
21
  seatsAvailable: "3 disponibles",
22
22
  },
23
23
  ];
24
- const HARDCODED_COUNTDOWN = "09:55";
25
- const HOW_IT_WORKS_STEPS = [
26
- {
27
- icon: "flexible",
28
- name: "1. Salida flexible",
29
- text: "Viajas en un horario entre las 07:00 y las 10:00 AM del día elegido.",
30
- },
31
- {
32
- icon: "bus",
33
- name: "2. Empresa asignada",
34
- text: "Una de las empresas disponibles confirma tu viaje una vez pagado.",
35
- },
36
- {
37
- icon: "price",
38
- name: "3. Precio garantizado",
39
- text: "Al seleccionar este servicio aseguras el precio reducido.",
40
- },
41
- {
42
- icon: "ticket",
43
- name: "4. ¡Listo!",
44
- text: "Recibe todos los detalles de tu viaje al instante tras la compra.",
45
- },
46
- ];
47
- const FeatureStepIcon = ({ icon }) => {
48
- const iconClassName = "h-[30px] w-[30px] text-[#171717]";
49
- switch (icon) {
50
- case "flexible":
51
- return (React.createElement("svg", { className: iconClassName, viewBox: "0 0 40 40", fill: "none", "aria-hidden": "true" },
52
- React.createElement("path", { d: "M31.5 13.4A13 13 0 0 0 8 12.3", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round" }),
53
- React.createElement("path", { d: "m7.4 7.7.2 5.2 5.1-1.2M8.5 26.6A13 13 0 0 0 32 27.7", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round" }),
54
- React.createElement("path", { d: "m32.6 32.3-.2-5.2-5.1 1.2", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round", strokeLinejoin: "round" })));
55
- case "bus":
56
- return (React.createElement("svg", { className: iconClassName, viewBox: "0 0 40 40", fill: "none", "aria-hidden": "true" },
57
- React.createElement("rect", { x: "8", y: "4.5", width: "24", height: "27", rx: "2.5", stroke: "currentColor", strokeWidth: "2.2" }),
58
- React.createElement("path", { d: "M8 18.5h24M12 9h16M12 26h4m8 0h4M11 31.5v3h5v-3m8 0v3h5v-3M5.5 10v7m29-7v7", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round" })));
59
- case "price":
60
- return (React.createElement("svg", { className: iconClassName, viewBox: "0 0 40 40", fill: "none", "aria-hidden": "true" },
61
- React.createElement("circle", { cx: "20", cy: "20", r: "14", stroke: "currentColor", strokeWidth: "2.2" }),
62
- React.createElement("path", { d: "M23.7 15.4c-1-.7-2.2-1-3.6-1-2.2 0-3.8 1.1-3.8 2.8 0 4.2 7.4 1.8 7.4 5.8 0 1.8-1.6 2.8-4 2.8-1.5 0-2.9-.4-4-1.2M20 11.7v2.5m0 11.8v2.4", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round" })));
63
- default:
64
- return (React.createElement("svg", { className: iconClassName, viewBox: "0 0 40 40", fill: "none", "aria-hidden": "true" },
65
- React.createElement("path", { d: "M7 11h26v6a3.5 3.5 0 0 0 0 7v6H7v-6a3.5 3.5 0 0 0 0-7v-6Z", stroke: "currentColor", strokeWidth: "2.2", strokeLinejoin: "round" }),
66
- React.createElement("path", { d: "M22 12.5v3m0 3v3m0 3v4", stroke: "currentColor", strokeWidth: "2.2", strokeLinecap: "round" })));
67
- }
68
- };
69
- const AssuranceIcon = ({ type }) => {
70
- const iconClassName = "h-[18px] w-[18px] shrink-0 text-white";
71
- if (type === "pending") {
72
- return (React.createElement("svg", { className: iconClassName, viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true" },
73
- React.createElement("path", { d: "M4.2 8.2a6.2 6.2 0 1 1 .5 5.1", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round" }),
74
- React.createElement("path", { d: "M4.2 4.8v3.4h3.4", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" })));
75
- }
76
- return (React.createElement("svg", { className: iconClassName, viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true" },
77
- React.createElement("path", { d: "M10 2.2 16.3 4v5c0 4-2.4 6.8-6.3 8.7C6.1 15.8 3.7 13 3.7 9V4L10 2.2Z", stroke: "currentColor", strokeWidth: "1.6", strokeLinejoin: "round" }),
78
- React.createElement("path", { d: "m6.9 9.7 2.1 2.1 4.3-4.4", stroke: "currentColor", strokeWidth: "1.7", strokeLinecap: "round", strokeLinejoin: "round" })));
79
- };
80
- const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAnimationIcon, cityOrigin, cityDestination, renderIcon, viewersConfig, isFeatureDropDownExpand, onToggleExpand, ticketQuantity = 1, onIncreaseTicketQuantity, onDecreaseTicketQuantity, onBookButtonPress, }) => {
81
- var _a, _b, _c, _d, _e;
24
+ const FeatureServiceUi = ({ serviceItem, showTopLabel, isSoldOut, getAnimationIcon, cityOrigin, cityDestination, renderIcon, viewersConfig, isFeatureDropDownExpand, onToggleExpand, ticketQuantity = 1, onIncreaseTicketQuantity, onDecreaseTicketQuantity, onBookButtonPress, }) => {
25
+ var _a, _b, _c, _d;
82
26
  const operators = ((_a = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.operators) === null || _a === void 0 ? void 0 : _a.length) > 0
83
27
  ? serviceItem.operators
84
28
  : HARDCODED_OPERATORS;
85
29
  const isItemExpanded = serviceItem.id === isFeatureDropDownExpand ||
86
30
  isFeatureDropDownExpand === true;
87
31
  const canDecreaseTicketQuantity = ticketQuantity > 1;
32
+ const HOW_IT_WORKS_STEPS = [
33
+ {
34
+ icon: "flexible",
35
+ name: "1. Salida flexible",
36
+ text: "Viajas en un horario entre las 07:00 y las 10:00 AM del día elegido.",
37
+ },
38
+ {
39
+ icon: "bus",
40
+ name: "2. Empresa asignada",
41
+ text: "Una de las empresas disponibles confirma tu viaje una vez pagado.",
42
+ },
43
+ {
44
+ icon: "price",
45
+ name: "3. Precio garantizado",
46
+ text: "Al seleccionar este servicio aseguras el precio reducido.",
47
+ },
48
+ {
49
+ icon: "ticket",
50
+ name: "4. ¡Listo!",
51
+ text: "Recibe todos los detalles de tu viaje al instante tras la compra.",
52
+ },
53
+ ];
54
+ const FeatureStepIcon = ({ icon }) => {
55
+ switch (icon) {
56
+ case "flexible":
57
+ return renderIcon("flexibleIcon", "24px");
58
+ case "bus":
59
+ return renderIcon("empressaIcon", "24px");
60
+ case "price":
61
+ return renderIcon("precioIcon", "24px");
62
+ default:
63
+ return renderIcon("listoIcon", "24px");
64
+ }
65
+ };
88
66
  return (React.createElement("div", {
89
67
  // ${
90
68
  // serviceItem.offer_text ? "mb-[55px]" : "mb-[10px]"
@@ -108,6 +86,8 @@ const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAni
108
86
  padding: "1px 8px",
109
87
  borderRadius: "4px",
110
88
  color: "#fff",
89
+ animation: "pulse-zoom 2s ease-in-out infinite",
90
+ whiteSpace: "nowrap",
111
91
  } },
112
92
  React.createElement("span", null, "AHORRAS 60%"))),
113
93
  React.createElement("div", null,
@@ -138,12 +118,12 @@ const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAni
138
118
  React.createElement("div", { className: "text-[11px] bold-text" }, "Viernes 23 de mayo")),
139
119
  React.createElement("div", { className: "flex flex-col items-start gap-[10px] text-[12px] " },
140
120
  React.createElement("div", { className: "flex items-justify gap-[8px]" },
141
- React.createElement(AssuranceIcon, { type: "pending" }),
121
+ renderIcon("sheildIcon", "16px"),
142
122
  React.createElement("span", { className: "text-[10px]", style: {
143
123
  lineHeight: 1.3,
144
124
  } }, "Empresa y hora a confirmar luego del pago.")),
145
125
  React.createElement("div", { className: "flex items-justify gap-[8px]" },
146
- React.createElement(AssuranceIcon, { type: "secured" }),
126
+ renderIcon("confirmarIcon", "16px"),
147
127
  React.createElement("span", { className: "text-[10px]", style: {
148
128
  lineHeight: 1.3,
149
129
  } }, "Tu compra est\u00E1 100% asegurada.")))),
@@ -167,7 +147,11 @@ const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAni
167
147
  padding: "8px 14px",
168
148
  borderRadius: "24px",
169
149
  } },
170
- React.createElement("img", { src: (_d = serviceItem.icons) === null || _d === void 0 ? void 0 : _d.userIcon, alt: "eye", style: { width: "16px", height: "16px" } }),
150
+ React.createElement(LottiePlayer
151
+ // animationData={serviceItem.icons.flexibleAnim}
152
+ , {
153
+ // animationData={serviceItem.icons.flexibleAnim}
154
+ animationData: getAnimationIcon("usersAnimation"), width: "18px", height: "18px" }),
171
155
  React.createElement("span", null,
172
156
  React.createElement("span", { className: "bold-text text-white" },
173
157
  " ",
@@ -175,12 +159,9 @@ const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAni
175
159
  fontVariantNumeric: "tabular-nums",
176
160
  color: "#FF5C60",
177
161
  } }),
178
- " ",
179
- React.createElement("span", { style: {
180
- color: "#FF5C60",
181
- } }, "personas")),
162
+ " "),
182
163
  " ",
183
- "viendo este viaje |",
164
+ "viendo |",
184
165
  " ",
185
166
  React.createElement("span", { className: "bold-text", ref: (node) => commonService.startComprandoCount(node, 4, 16), style: { fontVariantNumeric: "tabular-nums" } }),
186
167
  " ",
@@ -189,7 +170,10 @@ const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAni
189
170
  React.createElement("div", { className: "flex flex-col gap-[6px] ", style: {
190
171
  alignItems: "center",
191
172
  } },
192
- React.createElement("span", { className: "text-[#FF8F45] bold-text text-[26px] leading-tight" }, "60% OFF"),
173
+ React.createElement("span", { className: "text-[#FF8F45] bold-text text-[26px] leading-tight", style: {
174
+ animation: "pulse-zoom 2s ease-in-out infinite",
175
+ whiteSpace: "nowrap",
176
+ } }, "60% OFF"),
193
177
  React.createElement("span", { className: "text-[13.33px] font-normal leading-[20px] text-[#9f9f9f] relative", style: { position: "relative" } },
194
178
  "$10.000",
195
179
  React.createElement("span", { style: {
@@ -202,7 +186,7 @@ const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAni
202
186
  transform: "rotate(-10deg)",
203
187
  transformOrigin: "center",
204
188
  } })),
205
- React.createElement("span", { className: "text-white bold-text text-[28px] leading-none" }, "$4.000")),
189
+ React.createElement("span", { className: "text-white bold-text text-[28px] leading-none" }, `$${(4000 * ticketQuantity).toLocaleString()}`)),
206
190
  React.createElement("div", { className: "mt-[4px] flex flex-col items-center gap-[8px]" },
207
191
  React.createElement("span", { className: "text-[12px] text-white" }, "\u00BFCu\u00E1ntos pasajes quieres?"),
208
192
  React.createElement("div", { className: "flex w-full items-center justify-between", style: {
@@ -218,6 +202,8 @@ const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAni
218
202
  React.createElement("button", { type: "button", "aria-label": "Aumentar pasajes", onClick: () => onIncreaseTicketQuantity === null || onIncreaseTicketQuantity === void 0 ? void 0 : onIncreaseTicketQuantity(serviceItem), className: "flex h-[34px] w-[34px] cursor-pointer items-center justify-center rounded-full border-none bg-[#2d374d] text-[25px] leading-none text-white" }, "+"))),
219
203
  React.createElement("button", { type: "button", onClick: onBookButtonPress, className: "flex items-center gap-[6px] px-[20px] py-[10px] rounded-[16px] text-white bold-text text-[13px] mt-[4px] justify-center border-none cursor-pointer", style: {
220
204
  backgroundColor: "#FF5C60",
205
+ animation: "pulse-zoom 2s ease-in-out infinite",
206
+ whiteSpace: "nowrap",
221
207
  } },
222
208
  React.createElement(LottiePlayer
223
209
  // animationData={serviceItem.icons.flexibleAnim}
@@ -226,7 +212,7 @@ const FeatureServiceUi = ({ serviceItem, showTopLabel, colors, isSoldOut, getAni
226
212
  animationData: getAnimationIcon("thunderAnimation"), width: "18px", height: "18px" }),
227
213
  React.createElement("span", { className: "whitespace-nowrap" }, "\u00A1Lo quiero!"))),
228
214
  React.createElement("div", { className: `absolute bottom-[11px] right-[18px] cursor-pointer transition-transform duration-300 ease-in-out ${isItemExpanded ? "rotate-180" : ""}`, onClick: onToggleExpand },
229
- React.createElement("img", { src: (_e = serviceItem.icons) === null || _e === void 0 ? void 0 : _e.downArrow, alt: "down arrow", style: {
215
+ React.createElement("img", { src: (_d = serviceItem.icons) === null || _d === void 0 ? void 0 : _d.downArrow, alt: "down arrow", style: {
230
216
  width: "14px",
231
217
  height: "8px",
232
218
  filter: "brightness(0) invert(1)",
@@ -240,7 +240,7 @@ function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currenc
240
240
  React.createElement("span", { className: "flex items-center gap-[6px] text-[22px] bold-text leading-[30px]", style: { color: isSoldOut ? "#c0c0c0" : discountSeatPriceColor } },
241
241
  React.createElement("div", { className: "absolute", style: {
242
242
  left: isPeru ? "-1px" : "-18px",
243
- bottom: "1px"
243
+ bottom: "1px",
244
244
  } }, renderIcon("fireIcon", "16px")),
245
245
  availableSeats <= 0
246
246
  ? CommonService.currency(0, currencySign)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kupos-ui-components-lib",
3
- "version": "9.7.1",
3
+ "version": "9.7.3",
4
4
  "description": "A reusable UI components package",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -0,0 +1 @@
1
+ {"nm":"Main Scene","ddd":0,"h":512,"w":512,"meta":{"g":"@lottiefiles/creator@1.90.1"},"layers":[{"ty":2,"nm":"111","sr":1,"st":0,"op":150,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[54.49996512276783,38.99999128069197]},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[436.62,436.62],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[300,300],"t":58},{"s":[436.62,436.62],"t":112}]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[255.99996512276783,255.99999128069197]},"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":[100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[70],"t":58},{"s":[100],"t":112}]}},"refId":"111_b9bb56d2-8f3c-4772-b1ac-9caf81e5c707","ind":1}],"v":"5.7.0","fr":30,"op":114,"ip":0,"assets":[{"id":"111_b9bb56d2-8f3c-4772-b1ac-9caf81e5c707","e":1,"w":109,"h":78,"p":"data:image/png;base64,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","u":""}]}
@@ -27,6 +27,7 @@ import bombAnimation from "../../assets/images/anims/service_list/bomb.json";
27
27
  import dotAnimation from "../../assets/images/anims/service_list/dot_animation.json";
28
28
  import starAnimation from "../../assets/images/anims/service_list/star_anim.json";
29
29
  import femaleAnimation from "../../assets/images/anims/service_list/female_anim.json";
30
+ import usersAnimation from "../../assets/images/anims/service_list/users_anim.json";
30
31
 
31
32
  import RatingBlock from "../../ui/RatingBlock";
32
33
  import DurationBlock from "../../ui/DurationBlock";
@@ -86,6 +87,9 @@ const ANIMATION_MAP: Record<string, Record<string, any>> = {
86
87
  femaaleAnimation: {
87
88
  kupos: femaleAnimation,
88
89
  },
90
+ usersAnimation: {
91
+ kupos: usersAnimation,
92
+ },
89
93
  };
90
94
 
91
95
  function ServiceItemPB({
@@ -431,7 +435,6 @@ function ServiceItemPB({
431
435
  <FeatureServiceUi
432
436
  serviceItem={serviceItem}
433
437
  showTopLabel={showTopLabel}
434
- colors={colors}
435
438
  isSoldOut={isSoldOut}
436
439
  getAnimationIcon={getAnimationIcon}
437
440
  cityOrigin={cityOrigin}