kupos-ui-components-lib 9.9.1 → 9.9.2

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 (37) hide show
  1. package/dist/KuposUIComponent.d.ts +3 -0
  2. package/dist/components/ServiceItem/PeruServiceItemDesktop.d.ts +1 -1
  3. package/dist/components/ServiceItem/PeruServiceItemDesktop.js +2 -2
  4. package/dist/components/ServiceItem/ServiceItemDesktop.d.ts +1 -1
  5. package/dist/components/ServiceItem/ServiceItemDesktop.js +30 -31
  6. package/dist/components/ServiceItem/ServiceItemMobile.d.ts +1 -1
  7. package/dist/components/ServiceItem/ServiceItemMobile.js +43 -17
  8. package/dist/components/ServiceItem/mobileTypes.d.ts +48 -1
  9. package/dist/components/ServiceItem/types.d.ts +27 -9
  10. package/dist/styles.css +215 -6
  11. package/dist/ui/ExpendedDropDown/ExpandedDropdown.d.ts +1 -2
  12. package/dist/ui/ExpendedDropDown/ExpandedDropdown.js +2 -4
  13. package/dist/ui/FeaturServiceUiMobile/FeatureServiceUiMobile.js +22 -41
  14. package/dist/ui/FeatureServiceUI/FeatureServiceUi.js +24 -44
  15. package/dist/ui/OfferBanner.d.ts +2 -0
  16. package/dist/ui/OfferBanner.js +19 -14
  17. package/dist/ui/SeatSection/SeatSection.d.ts +1 -7
  18. package/dist/ui/SeatSection/SeatSection.js +12 -44
  19. package/dist/utils/CommonService.d.ts +3 -0
  20. package/dist/utils/CommonService.js +18 -1
  21. package/package.json +1 -1
  22. package/src/KuposUIComponent.tsx +3 -0
  23. package/src/assets/images/anims/service_list/flame_anim.json +1 -0
  24. package/src/assets/images/anims/service_list/thunder_icon.json +1 -0
  25. package/src/assets/images/anims/service_list/users_anim.json +1 -0
  26. package/src/components/ServiceItem/PeruServiceItemDesktop.tsx +35 -24
  27. package/src/components/ServiceItem/ServiceItemDesktop.tsx +65 -53
  28. package/src/components/ServiceItem/ServiceItemMobile.tsx +387 -288
  29. package/src/components/ServiceItem/mobileTypes.ts +50 -7
  30. package/src/components/ServiceItem/types.ts +39 -25
  31. package/src/styles.css +15 -0
  32. package/src/ui/ExpendedDropDown/ExpandedDropdown.tsx +2 -4
  33. package/src/ui/FeaturServiceUiMobile/FeatureServiceUiMobile.tsx +575 -0
  34. package/src/ui/FeatureServiceUI/FeatureServiceUi.tsx +610 -0
  35. package/src/ui/OfferBanner.tsx +31 -10
  36. package/src/ui/SeatSection/SeatSection.tsx +21 -88
  37. package/src/utils/CommonService.ts +26 -1
package/dist/styles.css CHANGED
@@ -33,6 +33,9 @@
33
33
  .-top-\[11px\] {
34
34
  top: calc(11px * -1);
35
35
  }
36
+ .-top-\[13px\] {
37
+ top: calc(13px * -1);
38
+ }
36
39
  .-top-\[18px\] {
37
40
  top: calc(18px * -1);
38
41
  }
@@ -60,9 +63,15 @@
60
63
  .top-\[88\%\] {
61
64
  top: 88%;
62
65
  }
66
+ .top-\[calc\(100\%\+10px\)\] {
67
+ top: calc(100% + 10px);
68
+ }
63
69
  .right-\[0px\] {
64
70
  right: 0px;
65
71
  }
72
+ .right-\[18px\] {
73
+ right: 18px;
74
+ }
66
75
  .-bottom-\[9\%\] {
67
76
  bottom: calc(9% * -1);
68
77
  }
@@ -75,6 +84,12 @@
75
84
  .-bottom-\[36px\] {
76
85
  bottom: calc(36px * -1);
77
86
  }
87
+ .-bottom-\[44px\] {
88
+ bottom: calc(44px * -1);
89
+ }
90
+ .bottom-\[11px\] {
91
+ bottom: 11px;
92
+ }
78
93
  .bottom-\[35px\] {
79
94
  bottom: 35px;
80
95
  }
@@ -168,9 +183,15 @@
168
183
  .m-\[auto\] {
169
184
  margin: auto;
170
185
  }
186
+ .mx-\[6px\] {
187
+ margin-inline: 6px;
188
+ }
171
189
  .mx-auto {
172
190
  margin-inline: auto;
173
191
  }
192
+ .my-\[8px\] {
193
+ margin-block: 8px;
194
+ }
174
195
  .-mt-\[15px\] {
175
196
  margin-top: calc(15px * -1);
176
197
  }
@@ -189,15 +210,27 @@
189
210
  .mt-\[5px\] {
190
211
  margin-top: 5px;
191
212
  }
213
+ .mt-\[6px\] {
214
+ margin-top: 6px;
215
+ }
192
216
  .mt-\[10px\] {
193
217
  margin-top: 10px;
194
218
  }
219
+ .mt-\[12px\] {
220
+ margin-top: 12px;
221
+ }
195
222
  .mt-\[13px\] {
196
223
  margin-top: 13px;
197
224
  }
225
+ .mt-\[14px\] {
226
+ margin-top: 14px;
227
+ }
198
228
  .mt-\[15px\] {
199
229
  margin-top: 15px;
200
230
  }
231
+ .mt-\[16px\] {
232
+ margin-top: 16px;
233
+ }
201
234
  .mt-\[20px\] {
202
235
  margin-top: 20px;
203
236
  }
@@ -324,6 +357,9 @@
324
357
  .h-\[12px\] {
325
358
  height: 12px;
326
359
  }
360
+ .h-\[13px\] {
361
+ height: 13px;
362
+ }
327
363
  .h-\[14px\] {
328
364
  height: 14px;
329
365
  }
@@ -342,6 +378,9 @@
342
378
  .h-\[24px\] {
343
379
  height: 24px;
344
380
  }
381
+ .h-\[26px\] {
382
+ height: 26px;
383
+ }
345
384
  .h-\[30px\] {
346
385
  height: 30px;
347
386
  }
@@ -369,6 +408,9 @@
369
408
  .w-\[12px\] {
370
409
  width: 12px;
371
410
  }
411
+ .w-\[13px\] {
412
+ width: 13px;
413
+ }
372
414
  .w-\[14px\] {
373
415
  width: 14px;
374
416
  }
@@ -381,6 +423,9 @@
381
423
  .w-\[20px\] {
382
424
  width: 20px;
383
425
  }
426
+ .w-\[26px\] {
427
+ width: 26px;
428
+ }
384
429
  .w-\[50\%\] {
385
430
  width: 50%;
386
431
  }
@@ -396,9 +441,6 @@
396
441
  .w-\[65\%\%\] {
397
442
  width: 65%%;
398
443
  }
399
- .w-\[80\%\] {
400
- width: 80%;
401
- }
402
444
  .w-\[100\%\] {
403
445
  width: 100%;
404
446
  }
@@ -452,6 +494,12 @@
452
494
  .max-w-\[165px\] {
453
495
  max-width: 165px;
454
496
  }
497
+ .max-w-\[220px\] {
498
+ max-width: 220px;
499
+ }
500
+ .max-w-full {
501
+ max-width: 100%;
502
+ }
455
503
  .min-w-\[75px\] {
456
504
  min-width: 75px;
457
505
  }
@@ -473,6 +521,9 @@
473
521
  --tw-translate-y: -10px;
474
522
  translate: var(--tw-translate-x) var(--tw-translate-y);
475
523
  }
524
+ .rotate-0 {
525
+ rotate: 0deg;
526
+ }
476
527
  .rotate-180 {
477
528
  rotate: 180deg;
478
529
  }
@@ -482,6 +533,9 @@
482
533
  .cursor-default {
483
534
  cursor: default;
484
535
  }
536
+ .cursor-not-allowed {
537
+ cursor: not-allowed;
538
+ }
485
539
  .cursor-pointer {
486
540
  cursor: pointer;
487
541
  }
@@ -494,12 +548,21 @@
494
548
  .grid-cols-2 {
495
549
  grid-template-columns: repeat(2, minmax(0, 1fr));
496
550
  }
551
+ .grid-cols-3 {
552
+ grid-template-columns: repeat(3, minmax(0, 1fr));
553
+ }
554
+ .grid-cols-4 {
555
+ grid-template-columns: repeat(4, minmax(0, 1fr));
556
+ }
497
557
  .grid-cols-\[0\.8fr_auto_26\%_1fr\] {
498
558
  grid-template-columns: 0.8fr auto 26% 1fr;
499
559
  }
500
560
  .grid-cols-\[1\.5fr_1fr_auto\] {
501
561
  grid-template-columns: 1.5fr 1fr auto;
502
562
  }
563
+ .grid-cols-\[25\%_48\%_27\%\] {
564
+ grid-template-columns: 25% 48% 27%;
565
+ }
503
566
  .grid-cols-\[26px_auto_26\%_1fr\] {
504
567
  grid-template-columns: 26px auto 26% 1fr;
505
568
  }
@@ -527,6 +590,9 @@
527
590
  .items-start {
528
591
  align-items: flex-start;
529
592
  }
593
+ .items-stretch {
594
+ align-items: stretch;
595
+ }
530
596
  .justify-between {
531
597
  justify-content: space-between;
532
598
  }
@@ -569,6 +635,12 @@
569
635
  .gap-\[14px\] {
570
636
  gap: 14px;
571
637
  }
638
+ .gap-\[16px\] {
639
+ gap: 16px;
640
+ }
641
+ .gap-\[20px\] {
642
+ gap: 20px;
643
+ }
572
644
  .gap-x-\[2\%\] {
573
645
  -moz-column-gap: 2%;
574
646
  column-gap: 2%;
@@ -577,12 +649,20 @@
577
649
  -moz-column-gap: 8px;
578
650
  column-gap: 8px;
579
651
  }
652
+ .truncate {
653
+ overflow: hidden;
654
+ text-overflow: ellipsis;
655
+ white-space: nowrap;
656
+ }
580
657
  .overflow-hidden {
581
658
  overflow: hidden;
582
659
  }
583
660
  .overflow-y-hidden {
584
661
  overflow-y: hidden;
585
662
  }
663
+ .rounded-\[4px\] {
664
+ border-radius: 4px;
665
+ }
586
666
  .rounded-\[8px\] {
587
667
  border-radius: 8px;
588
668
  }
@@ -595,6 +675,9 @@
595
675
  .rounded-\[15px\] {
596
676
  border-radius: 15px;
597
677
  }
678
+ .rounded-\[16px\] {
679
+ border-radius: 16px;
680
+ }
598
681
  .rounded-\[18px\] {
599
682
  border-radius: 18px;
600
683
  }
@@ -638,6 +721,10 @@
638
721
  border-top-style: var(--tw-border-style);
639
722
  border-top-width: 8px;
640
723
  }
724
+ .border-r {
725
+ border-right-style: var(--tw-border-style);
726
+ border-right-width: 1px;
727
+ }
641
728
  .border-r-8 {
642
729
  border-right-style: var(--tw-border-style);
643
730
  border-right-width: 8px;
@@ -666,6 +753,10 @@
666
753
  border-bottom-style: var(--tw-border-style);
667
754
  border-bottom-width: 8px;
668
755
  }
756
+ .border-l {
757
+ border-left-style: var(--tw-border-style);
758
+ border-left-width: 1px;
759
+ }
669
760
  .border-l-8 {
670
761
  border-left-style: var(--tw-border-style);
671
762
  border-left-width: 8px;
@@ -682,6 +773,9 @@
682
773
  --tw-border-style: none;
683
774
  border-style: none;
684
775
  }
776
+ .border-\[\#363c48\] {
777
+ border-color: #363c48;
778
+ }
685
779
  .border-\[\#ccc\] {
686
780
  border-color: #ccc;
687
781
  }
@@ -700,9 +794,24 @@
700
794
  .border-l-transparent {
701
795
  border-left-color: transparent;
702
796
  }
797
+ .bg-\[\#0C1421\] {
798
+ background-color: #0C1421;
799
+ }
800
+ .bg-\[\#2d374d\] {
801
+ background-color: #2d374d;
802
+ }
803
+ .bg-\[\#222b3d\] {
804
+ background-color: #222b3d;
805
+ }
703
806
  .bg-\[\#E6E6E6\] {
704
807
  background-color: #E6E6E6;
705
808
  }
809
+ .bg-\[\#FF5C60\] {
810
+ background-color: #FF5C60;
811
+ }
812
+ .bg-\[\#FF8F45\] {
813
+ background-color: #FF8F45;
814
+ }
706
815
  .bg-\[\#FFF2F2\] {
707
816
  background-color: #FFF2F2;
708
817
  }
@@ -721,6 +830,9 @@
721
830
  .bg-\[lightgray\] {
722
831
  background-color: lightgray;
723
832
  }
833
+ .bg-transparent {
834
+ background-color: transparent;
835
+ }
724
836
  .bg-\[length\:200\%_200\%\] {
725
837
  background-size: 200% 200%;
726
838
  }
@@ -743,6 +855,9 @@
743
855
  .p-\[10px_15px\] {
744
856
  padding: 10px 15px;
745
857
  }
858
+ .p-\[14px\] {
859
+ padding: 14px;
860
+ }
746
861
  .p-\[15px\] {
747
862
  padding: 15px;
748
863
  }
@@ -776,9 +891,18 @@
776
891
  .px-\[15px\] {
777
892
  padding-inline: 15px;
778
893
  }
894
+ .px-\[16px\] {
895
+ padding-inline: 16px;
896
+ }
779
897
  .px-\[20px\] {
780
898
  padding-inline: 20px;
781
899
  }
900
+ .px-\[22px\] {
901
+ padding-inline: 22px;
902
+ }
903
+ .py-\[2px\] {
904
+ padding-block: 2px;
905
+ }
782
906
  .py-\[4px\] {
783
907
  padding-block: 4px;
784
908
  }
@@ -791,6 +915,9 @@
791
915
  .py-\[8px\] {
792
916
  padding-block: 8px;
793
917
  }
918
+ .py-\[9px\] {
919
+ padding-block: 9px;
920
+ }
794
921
  .py-\[10px\] {
795
922
  padding-block: 10px;
796
923
  }
@@ -806,6 +933,9 @@
806
933
  .pt-\[10px\] {
807
934
  padding-top: 10px;
808
935
  }
936
+ .pt-\[14px\] {
937
+ padding-top: 14px;
938
+ }
809
939
  .pt-\[20px\] {
810
940
  padding-top: 20px;
811
941
  }
@@ -821,6 +951,9 @@
821
951
  .pt-\[50px\] {
822
952
  padding-top: 50px;
823
953
  }
954
+ .pr-\[10px\] {
955
+ padding-right: 10px;
956
+ }
824
957
  .pr-\[15px\] {
825
958
  padding-right: 15px;
826
959
  }
@@ -830,6 +963,9 @@
830
963
  .pr-\[22px\] {
831
964
  padding-right: 22px;
832
965
  }
966
+ .pb-\[6px\] {
967
+ padding-bottom: 6px;
968
+ }
833
969
  .pb-\[7px\] {
834
970
  padding-bottom: 7px;
835
971
  }
@@ -848,6 +984,9 @@
848
984
  .pl-\[6px\] {
849
985
  padding-left: 6px;
850
986
  }
987
+ .pl-\[22px\] {
988
+ padding-left: 22px;
989
+ }
851
990
  .text-center {
852
991
  text-align: center;
853
992
  }
@@ -863,9 +1002,6 @@
863
1002
  .text-right {
864
1003
  text-align: right;
865
1004
  }
866
- .text-\[9px\] {
867
- font-size: 9px;
868
- }
869
1005
  .text-\[10px\] {
870
1006
  font-size: 10px;
871
1007
  }
@@ -887,6 +1023,9 @@
887
1023
  .text-\[14px\] {
888
1024
  font-size: 14px;
889
1025
  }
1026
+ .text-\[16px\] {
1027
+ font-size: 16px;
1028
+ }
890
1029
  .text-\[17\.33px\] {
891
1030
  font-size: 17.33px;
892
1031
  }
@@ -899,6 +1038,15 @@
899
1038
  .text-\[22px\] {
900
1039
  font-size: 22px;
901
1040
  }
1041
+ .text-\[24px\] {
1042
+ font-size: 24px;
1043
+ }
1044
+ .text-\[26px\] {
1045
+ font-size: 26px;
1046
+ }
1047
+ .text-\[28px\] {
1048
+ font-size: 28px;
1049
+ }
902
1050
  .text-\[42px\] {
903
1051
  font-size: 42px;
904
1052
  }
@@ -906,6 +1054,10 @@
906
1054
  --tw-leading: 1.3;
907
1055
  line-height: 1.3;
908
1056
  }
1057
+ .leading-\[14px\] {
1058
+ --tw-leading: 14px;
1059
+ line-height: 14px;
1060
+ }
909
1061
  .leading-\[20px\] {
910
1062
  --tw-leading: 20px;
911
1063
  line-height: 20px;
@@ -926,6 +1078,10 @@
926
1078
  --tw-leading: 1;
927
1079
  line-height: 1;
928
1080
  }
1081
+ .font-\[9px\] {
1082
+ --tw-font-weight: 9px;
1083
+ font-weight: 9px;
1084
+ }
929
1085
  .font-\[14px\] {
930
1086
  --tw-font-weight: 14px;
931
1087
  font-weight: 14px;
@@ -947,12 +1103,27 @@
947
1103
  .whitespace-nowrap {
948
1104
  white-space: nowrap;
949
1105
  }
1106
+ .text-\[\#1a1a1a\] {
1107
+ color: #1a1a1a;
1108
+ }
1109
+ .text-\[\#4a4a4a\] {
1110
+ color: #4a4a4a;
1111
+ }
950
1112
  .text-\[\#9f9f9f\] {
951
1113
  color: #9f9f9f;
952
1114
  }
1115
+ .text-\[\#666\] {
1116
+ color: #666;
1117
+ }
1118
+ .text-\[\#272727\] {
1119
+ color: #272727;
1120
+ }
953
1121
  .text-\[\#464647\] {
954
1122
  color: #464647;
955
1123
  }
1124
+ .text-\[\#FF8F45\] {
1125
+ color: #FF8F45;
1126
+ }
956
1127
  .text-\[\#c0c0c0\] {
957
1128
  color: #c0c0c0;
958
1129
  }
@@ -971,6 +1142,9 @@
971
1142
  .text-\[red\] {
972
1143
  color: red;
973
1144
  }
1145
+ .text-\[white\] {
1146
+ color: white;
1147
+ }
974
1148
  .capitalize {
975
1149
  text-transform: capitalize;
976
1150
  }
@@ -990,9 +1164,16 @@
990
1164
  .opacity-0 {
991
1165
  opacity: 0%;
992
1166
  }
1167
+ .opacity-50 {
1168
+ opacity: 50%;
1169
+ }
993
1170
  .opacity-100 {
994
1171
  opacity: 100%;
995
1172
  }
1173
+ .outline {
1174
+ outline-style: var(--tw-outline-style);
1175
+ outline-width: 1px;
1176
+ }
996
1177
  .grayscale {
997
1178
  --tw-grayscale: grayscale(100%);
998
1179
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
@@ -1020,6 +1201,10 @@
1020
1201
  transition-timing-function: var(--tw-ease, ease);
1021
1202
  transition-duration: var(--tw-duration, 0s);
1022
1203
  }
1204
+ .duration-200 {
1205
+ --tw-duration: 200ms;
1206
+ transition-duration: 200ms;
1207
+ }
1023
1208
  .duration-300 {
1024
1209
  --tw-duration: 300ms;
1025
1210
  transition-duration: 300ms;
@@ -1028,6 +1213,11 @@
1028
1213
  --tw-outline-style: none;
1029
1214
  outline-style: none;
1030
1215
  }
1216
+ .select-none {
1217
+ -webkit-user-select: none;
1218
+ -moz-user-select: none;
1219
+ user-select: none;
1220
+ }
1031
1221
  .group-hover\:block {
1032
1222
  &:is(:where(.group):hover *) {
1033
1223
  @media (hover: hover) {
@@ -1167,6 +1357,19 @@
1167
1357
  .hide-scrollbar::-webkit-scrollbar {
1168
1358
  display: none;
1169
1359
  }
1360
+ .kupos-time-dd > summary {
1361
+ list-style: none;
1362
+ }
1363
+ .kupos-time-dd > summary::-webkit-details-marker {
1364
+ display: none;
1365
+ }
1366
+ .kupos-time-chevron {
1367
+ transition: transform 200ms ease;
1368
+ flex-shrink: 0;
1369
+ }
1370
+ .kupos-time-dd[open] .kupos-time-chevron {
1371
+ transform: rotate(180deg);
1372
+ }
1170
1373
  .hide-scrollbar {
1171
1374
  -ms-overflow-style: none;
1172
1375
  scrollbar-width: none;
@@ -1239,6 +1442,11 @@
1239
1442
  syntax: "*";
1240
1443
  inherits: false;
1241
1444
  }
1445
+ @property --tw-outline-style {
1446
+ syntax: "*";
1447
+ inherits: false;
1448
+ initial-value: solid;
1449
+ }
1242
1450
  @property --tw-blur {
1243
1451
  syntax: "*";
1244
1452
  inherits: false;
@@ -1330,6 +1538,7 @@
1330
1538
  --tw-numeric-figure: initial;
1331
1539
  --tw-numeric-spacing: initial;
1332
1540
  --tw-numeric-fraction: initial;
1541
+ --tw-outline-style: solid;
1333
1542
  --tw-blur: initial;
1334
1543
  --tw-brightness: initial;
1335
1544
  --tw-contrast: initial;
@@ -14,7 +14,6 @@ interface ExpandedDropdownProps {
14
14
  ladiesBookedSeats?: string;
15
15
  isDpEnabled?: boolean;
16
16
  renderIcon?: any;
17
- operatorLabel?: string;
18
17
  }
19
- declare function ExpandedDropdown({ serviceItem, isPeru, translation, getAnimationIcon, isChangeTicket, isSoldOut, ladiesBookedSeats, isDpEnabled, renderIcon, operatorLabel, }: ExpandedDropdownProps): React.ReactElement;
18
+ declare function ExpandedDropdown({ serviceItem, isPeru, translation, getAnimationIcon, isChangeTicket, isSoldOut, ladiesBookedSeats, isDpEnabled, renderIcon, }: ExpandedDropdownProps): React.ReactElement;
20
19
  export default ExpandedDropdown;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- function ExpandedDropdown({ serviceItem, isPeru = false, translation = {}, getAnimationIcon, isChangeTicket = false, isSoldOut, ladiesBookedSeats, isDpEnabled, renderIcon, operatorLabel, }) {
2
+ function ExpandedDropdown({ serviceItem, isPeru = false, translation = {}, getAnimationIcon, isChangeTicket = false, isSoldOut, ladiesBookedSeats, isDpEnabled, renderIcon, }) {
3
3
  const hasPetInfo = serviceItem.pet_seat_info &&
4
4
  Object.keys(serviceItem.pet_seat_info).length > 0;
5
5
  return (React.createElement("div", { className: "px-[15px] pt-[26px] pb-[14px] -mt-[16px] pt-[35px] relative -z-9", style: {
@@ -18,9 +18,7 @@ function ExpandedDropdown({ serviceItem, isPeru = false, translation = {}, getAn
18
18
  (serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.change_ticket_hours) || 6,
19
19
  " horas antes"),
20
20
  " ",
21
- "de la salida del bus. El monto ser\u00E1 reembolsado a tu billetera",
22
- " ", operatorLabel !== null && operatorLabel !== void 0 ? operatorLabel : "kupospay",
23
- "."))) : (React.createElement("div", { className: "flex gap-[8px] text-[13.33px]" },
21
+ "de la salida del bus. El monto ser\u00E1 reembolsado a tu billetera kupospay."))) : (React.createElement("div", { className: "flex gap-[8px] text-[13.33px]" },
24
22
  React.createElement("span", null, renderIcon("changeTicketIcon", "16px")),
25
23
  React.createElement("span", null,
26
24
  React.createElement("span", null,
@@ -29,14 +29,14 @@ const HARDCODED_OPERATORS = [
29
29
  },
30
30
  ];
31
31
  const FeatureServiceUiMobile = ({ serviceItem, showTopLabel, colors, isSoldOut, cityOrigin, cityDestination, renderIcon, viewersConfig, isFeatureDropDownExpand, onToggleExpand, ticketQuantity = 1, onIncreaseTicketQuantity, onDecreaseTicketQuantity, onBookButtonPress, selectedTimeSlot = TIME_SLOTS[0], onTimeSlotChange, isTimeDropdownOpen, onTimeDropdownToggle, wowDealData = undefined, }) => {
32
- var _a, _b, _c, _d, _e, _f;
32
+ var _a, _b, _c, _d, _e, _f, _g;
33
33
  // Use wow_deal data if available, otherwise fall back to serviceItem operators or hardcoded
34
- const operators = ((_a = wowDealData === null || wowDealData === void 0 ? void 0 : wowDealData.operators) === null || _a === void 0 ? void 0 : _a.length) > 0
35
- ? wowDealData.operators.map((op) => ({
36
- logo: op.operator_logo_url,
37
- name: op.operator_name,
38
- time: op.starting_departure,
39
- seatsAvailable: `${op.available_seats} disponibles`,
34
+ const operators = ((_a = wowDealData === null || wowDealData === void 0 ? void 0 : wowDealData.services) === null || _a === void 0 ? void 0 : _a.length) > 0
35
+ ? wowDealData.services.slice(0, 3).map((service) => ({
36
+ logo: service.operator_logo_url,
37
+ name: service.operator_name,
38
+ time: service.departure_time,
39
+ seatsAvailable: `${service.available_seats} disponibles`,
40
40
  }))
41
41
  : ((_b = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.operators) === null || _b === void 0 ? void 0 : _b.length) > 0
42
42
  ? serviceItem.operators
@@ -68,6 +68,16 @@ const FeatureServiceUiMobile = ({ serviceItem, showTopLabel, colors, isSoldOut,
68
68
  isFeatureDropDownExpand === true;
69
69
  const isThisTimeDropdownOpen = isTimeDropdownOpen === serviceItem.id;
70
70
  const canDecreaseTicketQuantity = ticketQuantity > 1;
71
+ const departures = (_d = (_c = wowDealData === null || wowDealData === void 0 ? void 0 : wowDealData.services) === null || _c === void 0 ? void 0 : _c.map((s) => s.departure_time)) === null || _d === void 0 ? void 0 : _d.filter(Boolean);
72
+ let departureRange = `Entre ${dealWindowFrom} y ${dealWindowTo}`;
73
+ if (departures === null || departures === void 0 ? void 0 : departures.length) {
74
+ const sorted = [...departures].sort((a, b) => {
75
+ const [ah, am] = a.split(":").map(Number);
76
+ const [bh, bm] = b.split(":").map(Number);
77
+ return ah * 60 + am - (bh * 60 + bm);
78
+ });
79
+ departureRange = `Entre ${sorted[0]} y ${sorted[sorted.length - 1]}`;
80
+ }
71
81
  const HOW_IT_WORKS_STEPS = [
72
82
  {
73
83
  icon: "flexible",
@@ -142,41 +152,13 @@ const FeatureServiceUiMobile = ({ serviceItem, showTopLabel, colors, isSoldOut,
142
152
  React.createElement("div", { className: " text-[white]" },
143
153
  React.createElement("div", { className: "flex flex-col gap-[10px] relative" },
144
154
  React.createElement("div", { className: "flex items-center gap-[6px]" },
145
- React.createElement("img", { src: (_c = serviceItem.icons) === null || _c === void 0 ? void 0 : _c.whiteOrigin, alt: "origin", className: `w-[13px] h-[13px] shrink-0 ${isSoldOut ? "grayscale" : ""}` }),
155
+ React.createElement("img", { src: (_e = serviceItem.icons) === null || _e === void 0 ? void 0 : _e.whiteOrigin, alt: "origin", className: `w-[13px] h-[13px] shrink-0 ${isSoldOut ? "grayscale" : ""}` }),
146
156
  React.createElement("span", { className: "text-[14px] bold-text" }, cityOrigin === null || cityOrigin === void 0 ? void 0 : cityOrigin.label.split(",")[0]),
147
157
  React.createElement("span", { className: "mx-[6px] text-[14px] bold-text" }, "\u2192"),
148
- React.createElement("img", { src: (_d = serviceItem.icons) === null || _d === void 0 ? void 0 : _d.whiteDestination, alt: "destination", className: `w-[13px] h-[13px] shrink-0 ${isSoldOut ? "grayscale" : ""}`, style: { opacity: isSoldOut ? 0.5 : 1 } }),
158
+ React.createElement("img", { src: (_f = serviceItem.icons) === null || _f === void 0 ? void 0 : _f.whiteDestination, alt: "destination", className: `w-[13px] h-[13px] shrink-0 ${isSoldOut ? "grayscale" : ""}`, style: { opacity: isSoldOut ? 0.5 : 1 } }),
149
159
  React.createElement("span", { className: "text-[14px] bold-text" }, cityDestination === null || cityDestination === void 0 ? void 0 : cityDestination.label.split(",")[0])),
150
160
  React.createElement("div", { className: "flex items-center gap-[6px]" },
151
- React.createElement("div", { className: "kupos-time-dd relative", tabIndex: 0, onBlur: (e) => {
152
- if (!e.currentTarget.contains(e.relatedTarget)) {
153
- onTimeDropdownToggle === null || onTimeDropdownToggle === void 0 ? void 0 : onTimeDropdownToggle(null);
154
- }
155
- }, style: { outline: "none" } },
156
- React.createElement("button", { type: "button", onClick: () => onTimeDropdownToggle === null || onTimeDropdownToggle === void 0 ? void 0 : onTimeDropdownToggle(isThisTimeDropdownOpen ? null : serviceItem.id), className: "flex cursor-pointer select-none items-center gap-[6px] border-none bg-transparent p-0 bold-text text-[13px] text-[white]" },
157
- React.createElement("span", null, displayTimeSlot),
158
- React.createElement("img", { src: (_e = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _e === void 0 ? void 0 : _e.downArrow, alt: "down arrow", className: `kupos-time-chevron transition-transform duration-200 ${isThisTimeDropdownOpen ? "rotate-180" : "rotate-0"}`, style: {
159
- width: "12px",
160
- height: "8px",
161
- filter: "brightness(0) invert(1)",
162
- } })),
163
- isThisTimeDropdownOpen && (React.createElement(React.Fragment, null,
164
- React.createElement("div", { className: "absolute left-0 top-[calc(100%+10px)]", style: {
165
- zIndex: 20,
166
- backgroundColor: "#fff",
167
- borderRadius: "14px",
168
- minWidth: "190px",
169
- boxShadow: "0 8px 32px rgba(0,0,0,0.28)",
170
- overflow: "hidden",
171
- padding: "6px 0",
172
- } }, TIME_SLOTS.map((slot) => {
173
- const isActive = slot === selectedTimeSlot;
174
- return (React.createElement("button", { key: slot, type: "button", onClick: () => {
175
- onTimeSlotChange === null || onTimeSlotChange === void 0 ? void 0 : onTimeSlotChange(slot);
176
- onTimeDropdownToggle === null || onTimeDropdownToggle === void 0 ? void 0 : onTimeDropdownToggle(null);
177
- }, className: `flex w-full cursor-pointer items-center gap-[10px] border-none px-[12px] py-[9px] text-left text-[13px] ${isActive ? "bg-[#FF5C60] font-bold text-[white]" : "bg-transparent font-normal text-[#1a1a1a]"}` },
178
- React.createElement("span", null, slot)));
179
- })))))))),
161
+ React.createElement("div", { className: "bold-text text-[12px] text-white" }, departureRange)))),
180
162
  React.createElement("div", { className: "border-t border-[#363c48] my-[8px]" }),
181
163
  React.createElement("div", null,
182
164
  React.createElement("span", { className: "block w-full text-[14px] bold-text text-[white] mb-[10px]", style: { textAlign: "center" } },
@@ -238,8 +220,7 @@ const FeatureServiceUiMobile = ({ serviceItem, showTopLabel, colors, isSoldOut,
238
220
  } },
239
221
  React.createElement("div", { className: "flex flex-col" },
240
222
  React.createElement("span", { className: "text-[18px] font-normal leading-[20px] text-[#9f9f9f] relative", style: { position: "relative" } },
241
- "$",
242
- originalPrice.toLocaleString(),
223
+ `$${((originalPrice * ticketQuantity)).toLocaleString()}`,
243
224
  React.createElement("span", { style: {
244
225
  position: "absolute",
245
226
  left: "-2px",
@@ -265,7 +246,7 @@ const FeatureServiceUiMobile = ({ serviceItem, showTopLabel, colors, isSoldOut,
265
246
  React.createElement(LottiePlayer, { animationData: serviceItem.icons.thunderAnim, width: "16px", height: "16px" }),
266
247
  React.createElement("span", { className: "whitespace-nowrap" }, "\u00A1Lo quiero!")),
267
248
  React.createElement("div", { className: "flex justify-end mt-[10px]", onClick: onToggleExpand },
268
- React.createElement("img", { src: (_f = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _f === void 0 ? void 0 : _f.downArrow, alt: "down arrow", className: `transition-transform duration-300 ease-in-out ${isItemExpanded ? "rotate-180" : ""}`, style: {
249
+ React.createElement("img", { src: (_g = serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.icons) === null || _g === void 0 ? void 0 : _g.downArrow, alt: "down arrow", className: `transition-transform duration-300 ease-in-out ${isItemExpanded ? "rotate-180" : ""}`, style: {
269
250
  width: "14px",
270
251
  height: "8px",
271
252
  filter: "brightness(0) invert(1)",