kupos-ui-components-lib 9.0.5 → 9.0.7
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.
- package/dist/assets/images/anims/service_list/bomb.json +1 -0
- package/dist/components/ServiceItem/ExpandedDropdown.d.ts +19 -0
- package/dist/components/ServiceItem/ExpandedDropdown.js +28 -0
- package/dist/components/ServiceItem/RatingHover.js +31 -31
- package/dist/styles.css +5 -2
- package/dist/ui/BottomAmenities/BottomAmenities.d.ts +26 -0
- package/dist/ui/BottomAmenities/BottomAmenities.js +22 -0
- package/dist/ui/ExpendedDropDown/ExpandedDropdown.d.ts +19 -0
- package/dist/ui/ExpendedDropDown/ExpandedDropdown.js +27 -0
- package/dist/ui/KuposButton/KuposButton.d.ts +12 -0
- package/dist/ui/KuposButton/KuposButton.js +12 -0
- package/dist/ui/SeatSection/SeatSection.d.ts +17 -0
- package/dist/ui/SeatSection/SeatSection.js +92 -0
- package/dist/ui/TopAmenities/TopAmenities.d.ts +12 -0
- package/dist/ui/TopAmenities/TopAmenities.js +32 -0
- package/dist/ui/mobileweb/BottomAmenitiesMobile.d.ts +23 -0
- package/dist/ui/mobileweb/BottomAmenitiesMobile.js +37 -0
- package/dist/ui/mobileweb/DateTimeSectionMobile.d.ts +23 -0
- package/dist/ui/mobileweb/DateTimeSectionMobile.js +57 -0
- package/dist/ui/mobileweb/SeatSectionMobile.d.ts +17 -0
- package/dist/ui/mobileweb/SeatSectionMobile.js +100 -0
- package/dist/ui/mobileweb/TopAmenitieMobile.d.ts +10 -0
- package/dist/ui/mobileweb/TopAmenitieMobile.js +35 -0
- package/package.json +1 -1
- package/src/components/ServiceItem/RatingHover.tsx +51 -51
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"nm":"bomba 3","ddd":0,"h":512,"w":512,"meta":{"g":"@lottiefiles/toolkit-js 0.71.8"},"layers":[{"ty":0,"nm":"Pre-comp 2","sr":1,"st":89,"op":98,"ip":89,"ln":"454","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[163,174]},"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":96},{"s":[0],"t":98}]}},"w":512,"h":512,"refId":"1","ind":1},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":80,"op":89,"ip":80,"ln":"453","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[193,193]},"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":87},{"s":[0],"t":89}]}},"w":512,"h":512,"refId":"1","ind":2,"parent":7},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":75,"op":84,"ip":75,"ln":"452","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[103,135]},"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":82},{"s":[0],"t":84}]}},"w":512,"h":512,"refId":"1","ind":3},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":68,"op":77,"ip":68,"ln":"451","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[136,138]},"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":75},{"s":[0],"t":77}]}},"w":512,"h":512,"refId":"1","ind":4},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":61,"op":70,"ip":61,"ln":"450","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[226,258]},"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":68},{"s":[0],"t":70}]}},"w":512,"h":512,"refId":"1","ind":5},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":56,"op":65,"ip":56,"ln":"449","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[286,138]},"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":63},{"s":[0],"t":65}]}},"w":512,"h":512,"refId":"1","ind":6},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":50,"op":59,"ip":50,"ln":"448","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[286,288]},"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":57},{"s":[0],"t":59}]}},"w":512,"h":512,"refId":"1","ind":7},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":46,"op":55,"ip":46,"ln":"447","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[246,158]},"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":53},{"s":[0],"t":55}]}},"w":512,"h":512,"refId":"1","ind":8},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":41,"op":50,"ip":41,"ln":"446","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[336,238]},"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":48},{"s":[0],"t":50}]}},"w":512,"h":512,"refId":"1","ind":9},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":37,"op":46,"ip":37,"ln":"445","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[246,378]},"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":44},{"s":[0],"t":46}]}},"w":512,"h":512,"refId":"1","ind":10},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":31,"op":40,"ip":31,"ln":"408","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[306,168]},"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":38},{"s":[0],"t":40}]}},"w":512,"h":512,"refId":"1","ind":11},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":27,"op":36,"ip":27,"ln":"406","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[276,420]},"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":34},{"s":[0],"t":36}]}},"w":512,"h":512,"refId":"1","ind":12},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":24,"op":33,"ip":24,"ln":"403","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[310,208]},"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":31},{"s":[0],"t":33}]}},"w":512,"h":512,"refId":"1","ind":13},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":20,"op":29,"ip":20,"ln":"401","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[236,340]},"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":27},{"s":[0],"t":29}]}},"w":512,"h":512,"refId":"1","ind":14},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":14,"op":23,"ip":14,"ln":"402","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[316,190]},"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":21},{"s":[0],"t":23}]}},"w":512,"h":512,"refId":"1","ind":15},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":9,"op":18,"ip":9,"ln":"396","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[80,80]},"p":{"a":0,"k":[306,378]},"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":16},{"s":[0],"t":18}]}},"w":512,"h":512,"refId":"1","ind":16},{"ty":0,"nm":"Pre-comp 2","sr":1,"st":0,"op":9,"ip":0,"ln":"400","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[45,45]},"p":{"a":0,"k":[390,180]},"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":7},{"s":[0],"t":9}]}},"w":512,"h":512,"refId":"1","ind":17},{"ty":0,"nm":"bomba 2","sr":1,"st":0,"op":103,"ip":0,"ln":"380","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":512,"h":512,"refId":"6","ind":18}],"v":"5.7.0","fr":30,"op":103,"ip":0,"assets":[{"nm":"Pre-comp 2","id":"1","fr":30,"layers":[{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"344","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[430.739,227.681]},"r":{"a":0,"k":116},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":19,"h":109,"refId":"2","ind":1},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"343","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[435.753,175.363]},"r":{"a":0,"k":73},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":19,"h":109,"refId":"2","ind":2},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"341","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[303.523,218.915]},"r":{"a":0,"k":-106},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":19,"h":109,"refId":"2","ind":3},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"340","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[307.023,165.915]},"r":{"a":0,"k":-63},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":19,"h":109,"refId":"2","ind":4},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"342","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[345.573,132.231]},"r":{"a":0,"k":-20},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":19,"h":109,"refId":"2","ind":5},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"339","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[400.591,135.469]},"r":{"a":0,"k":28},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":19,"h":109,"refId":"2","ind":6},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"346","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,-100]},"p":{"a":0,"k":[391.073,262.231]},"r":{"a":0,"k":-20},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":19,"h":109,"refId":"2","ind":7},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"345","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,-100]},"p":{"a":0,"k":[337.591,259.469]},"r":{"a":0,"k":28},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":19,"h":109,"refId":"2","ind":8}]},{"nm":"Layer 11 Comp 2","id":"2","fr":30,"layers":[{"ty":2,"nm":"Layer 11","sr":1,"st":0,"op":181,"ip":0,"ln":"315","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,94.5]},"s":{"a":1,"k":[{"s":[100,1,100],"i":{"x":[0.055,0.024,0.667],"y":[1.018,1.025,1]},"o":{"x":[1,1,0.333],"y":[0.283,0,0]},"t":0},{"s":[80,40,100],"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":7}]},"p":{"a":0,"k":[9.5,95.5]},"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":[11],"t":0},{"s":[100],"t":7}]}},"refId":"3","ind":1}]},{"id":"3","e":1,"w":19,"h":105,"p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAABpCAYAAADY6RhrAAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAA70lEQVRYhe3ZTXHDMBRF4fOEQEXQQhCEQDAEQyiEQgmEMEghGIKLoGZwu3Cm43T811ibzNyztfTNSPLuBTNJykALnIA8+TQAF+ASEcPc3r/Qh7YbJL2vIVlStwOadl7C/gvNg9p3tLUagNB42d+bl7neV0S8JcZXO9qrpJIYn79GTeL+PzpSSZUggFwTw5gxY8aMGTNmzJgxY8aMGTNmzJgxY8aMGTNmzNgTYV0CulpYSDoB1wrYCwCSPg+OJM+/pKRyABpuY02mYPsgVGYPLam5LdhTtwhNwKxxrNsvIL2kdm5vbMCF+/lnHxH90vofqo8Sm9+suG8AAAAASUVORK5CYII=","u":""},{"nm":"bomba 2","id":"6","fr":30,"layers":[{"ty":0,"nm":"Pre-comp 4","sr":1,"st":-3,"op":178,"ip":-3,"ln":"444","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[256,256]},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100],"t":59.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[90,90],"t":64.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[85,85],"t":69.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[80,80],"t":74.999},{"s":[60,60],"t":80.999}]},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[488.307,306.46],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[470.307,320.46],"t":7},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[446.307,342.46],"t":16},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[385.315,335.962],"t":19},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[370.307,328.46],"t":20},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[354.307,324.46],"t":23},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[323.907,305.46],"t":25},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[309.507,286.461],"t":27},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[303.308,269.461],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[294.707,236.461],"t":31},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[292.307,214.46],"t":33},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[284.593,189.889],"t":37},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[282.307,178.46],"t":40},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[270.307,142.46],"t":47},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[254.307,166.46],"t":54},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[250.307,176.46],"t":57},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[244.307,190.46],"t":62.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[250.307,188.46],"t":64.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[310.307,192.46],"t":69.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[302.307,200.46],"t":74.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[284.307,188.46],"t":80.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[280.307,192.46],"t":85.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[272.307,202.46],"t":91.999},{"s":[262.307,216.46],"t":121.999}]},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[28],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[38.063],"t":7},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[51],"t":16},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[91],"t":20},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[97],"t":23},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[126],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[155],"t":33},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[155],"t":40},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[155],"t":47},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[120],"t":54},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[106],"t":57},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[89],"t":62.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[84],"t":64.999},{"s":[22],"t":69.999}]},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"w":512,"h":512,"refId":"8","ind":1},{"ty":4,"nm":"Shape Layer 16","sr":1,"st":0,"op":99,"ip":0,"ln":"5781","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0]],"o":[[0,0]],"v":[[-11.652,-94.953]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":2},{"ty":4,"nm":"Shape Layer 15","sr":1,"st":0,"op":93,"ip":0,"ln":"5780","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-4.724,6.627]],"o":[[0,0],[1.57,-2.202]],"v":[[-11.652,-94.953],[-4.748,-106.812]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":3},{"ty":4,"nm":"Shape Layer 14","sr":1,"st":0,"op":88,"ip":0,"ln":"5779","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-4.724,6.627],[-2.145,2.369]],"o":[[0,0],[1.57,-2.202],[1.623,-1.793]],"v":[[-11.652,-94.953],[-4.748,-106.812],[0.818,-113.738]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":4},{"ty":4,"nm":"Shape Layer 13","sr":1,"st":0,"op":82,"ip":0,"ln":"5778","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-4.724,6.627],[-2.145,2.369],[-1.966,1.747]],"o":[[0,0],[1.57,-2.202],[1.623,-1.793],[1.65,-1.465]],"v":[[-11.652,-94.953],[-4.748,-106.812],[0.818,-113.738],[6.2,-119.079]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":5},{"ty":4,"nm":"Shape Layer 12","sr":1,"st":0,"op":77,"ip":0,"ln":"5777","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-4.724,6.627],[-2.145,2.369],[-4.162,2.968]],"o":[[0,0],[1.57,-2.202],[2.986,-3.297],[2.104,-1.5]],"v":[[-11.652,-94.953],[-4.748,-106.812],[0.818,-113.738],[11.522,-123.326]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":6},{"ty":4,"nm":"Shape Layer 11","sr":1,"st":0,"op":70,"ip":0,"ln":"5776","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-4.145,1.103]],"o":[[0,0],[4.495,-4.964],[3.473,-1.824],[4.113,-1.093]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[29.723,-131.968]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":7},{"ty":4,"nm":"Shape Layer 10","sr":1,"st":0,"op":63,"ip":0,"ln":"5775","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":8},{"ty":4,"nm":"Shape Layer 9","sr":1,"st":0,"op":55,"ip":0,"ln":"5774","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232],[-5.426,-4.27],[-3.718,-5.943]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367],[4.312,3.393],[3.108,4.968]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434],[81.128,-124.296],[93.129,-110.45]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":9},{"ty":4,"nm":"Shape Layer 8","sr":1,"st":0,"op":48,"ip":0,"ln":"5773","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232],[-5.426,-4.27],[-3.718,-5.943],[-2.808,-7.158]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367],[4.312,3.393],[3.108,4.968],[1.853,4.723]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434],[81.128,-124.296],[93.129,-110.45],[101.977,-92.354]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":10},{"ty":4,"nm":"Shape Layer 7","sr":1,"st":0,"op":42,"ip":0,"ln":"5772","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232],[-5.426,-4.27],[-3.718,-5.943],[-2.808,-7.158],[-1.759,-5.811],[-1.548,-6.276],[-0.772,-2.958]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367],[4.312,3.393],[3.108,4.968],[1.853,4.723],[1.602,5.29],[0.813,3.294],[1.195,4.581]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434],[81.128,-124.296],[93.129,-110.45],[101.977,-92.354],[107.388,-76.58],[112.108,-59.252],[114.483,-49.879]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":11},{"ty":4,"nm":"Shape Layer 6","sr":1,"st":0,"op":36,"ip":0,"ln":"5771","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232],[-5.426,-4.27],[-3.718,-5.943],[-2.808,-7.158],[-1.759,-5.811],[-1.548,-6.276],[-1.852,-6.303],[-2.354,-5.261]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367],[4.312,3.393],[3.108,4.968],[1.853,4.723],[1.602,5.29],[2.072,8.396],[2.413,8.208],[3.372,7.534]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434],[81.128,-124.296],[93.129,-110.45],[101.977,-92.354],[107.388,-76.58],[112.108,-59.252],[117.954,-37.281],[125.015,-17.249]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":12},{"ty":4,"nm":"Shape Layer 4","sr":1,"st":0,"op":31,"ip":0,"ln":"5769","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232],[-5.426,-4.27],[-3.718,-5.943],[-2.808,-7.158],[-1.759,-5.811],[-1.548,-6.276],[-1.852,-6.303],[-2.354,-5.261],[-4.137,-3.19],[-3.94,-1.337]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367],[4.312,3.393],[3.108,4.968],[1.853,4.723],[1.602,5.29],[2.072,8.396],[2.413,8.208],[3.372,7.534],[3.149,2.428],[4.686,1.589]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434],[81.128,-124.296],[93.129,-110.45],[101.977,-92.354],[107.388,-76.58],[112.108,-59.252],[117.954,-37.281],[125.015,-17.249],[136.017,-1.664],[146.335,4.2]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":13},{"ty":4,"nm":"Shape Layer 3","sr":1,"st":0,"op":26,"ip":0,"ln":"5768","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232],[-5.426,-4.27],[-3.718,-5.943],[-2.808,-7.158],[-1.759,-5.811],[-1.548,-6.276],[-1.852,-6.303],[-2.354,-5.261],[-4.137,-3.19],[-3.94,-1.337],[-7.756,1.293]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367],[4.312,3.393],[3.108,4.968],[1.853,4.723],[1.602,5.29],[2.072,8.396],[2.413,8.208],[3.372,7.534],[3.149,2.428],[4.686,1.589],[6.934,-1.156]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434],[81.128,-124.296],[93.129,-110.45],[101.977,-92.354],[107.388,-76.58],[112.108,-59.252],[117.954,-37.281],[125.015,-17.249],[136.017,-1.664],[146.335,4.2],[164.468,5.008]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":14},{"ty":4,"nm":"Shape Layer 5","sr":1,"st":0,"op":18,"ip":0,"ln":"5770","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232],[-5.426,-4.27],[-3.718,-5.943],[-2.808,-7.158],[-1.759,-5.811],[-1.548,-6.276],[-1.852,-6.303],[-2.354,-5.261],[-4.137,-3.19],[-3.94,-1.337],[-7.756,1.293],[-4.355,3.139],[-2.072,3.749]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367],[4.312,3.393],[3.108,4.968],[1.853,4.723],[1.602,5.29],[2.072,8.396],[2.413,8.208],[3.372,7.534],[3.149,2.428],[4.686,1.589],[6.934,-1.156],[3.422,-2.469],[5.293,-9.577]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434],[81.128,-124.296],[93.129,-110.45],[101.977,-92.354],[107.388,-76.58],[112.108,-59.252],[117.954,-37.281],[125.015,-17.249],[136.017,-1.664],[146.335,4.2],[164.468,5.008],[181.291,-1.41],[189.48,-10.724]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":15},{"ty":4,"nm":"Shape Layer 2","sr":1,"st":0,"op":13,"ip":0,"ln":"5767","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[256,256]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-8.6,9.497],[-7.202,3.783],[-9.641,0.197],[-6.027,-1.232],[-5.426,-4.27],[-3.718,-5.943],[-2.808,-7.158],[-1.759,-5.811],[-1.548,-6.276],[-1.852,-6.303],[-2.354,-5.261],[-4.137,-3.19],[-3.94,-1.337],[-7.756,1.293],[-4.355,3.139],[-2.072,3.749],[0,0]],"o":[[0,0],[4.495,-4.964],[6.92,-3.633],[7.325,-0.15],[6.685,1.367],[4.312,3.393],[3.108,4.968],[1.853,4.723],[1.602,5.29],[2.072,8.396],[2.413,8.208],[3.372,7.534],[3.149,2.428],[4.686,1.589],[6.934,-1.156],[3.423,-2.469],[5.293,-9.577],[0,0]],"v":[[-11.652,-94.953],[0.818,-113.738],[18.302,-127.506],[43.088,-133.826],[63.051,-132.434],[81.128,-124.296],[93.129,-110.45],[101.977,-92.354],[107.388,-76.58],[112.108,-59.252],[117.954,-37.281],[125.015,-17.249],[136.017,-1.664],[146.335,4.2],[164.468,5.008],[181.291,-1.41],[189.48,-10.724],[196.202,-30.692]]}}},{"ty":"st","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":20},"c":{"a":0,"k":[1,1,1]}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":16},{"ty":2,"nm":"Layer 1","sr":1,"st":0,"op":181,"ip":0,"ln":"365","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[143.922,158.682]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[174.341,299.517]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"refId":"9","ind":17}]},{"nm":"Pre-comp 4","id":"8","fr":30,"layers":[{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"432","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[252.239,229.681]},"r":{"a":0,"k":116},"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":67.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":81.999},{"s":[100],"t":94.999}]}},"w":19,"h":109,"refId":"2","ind":1},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"431","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[253.253,177.363]},"r":{"a":0,"k":73},"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":27},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":42},{"s":[100],"t":56}]}},"w":19,"h":109,"refId":"2","ind":2},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"430","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[163.073,134.231]},"r":{"a":0,"k":-20},"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":84.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":96.999},{"s":[100],"t":110.999}]}},"w":19,"h":109,"refId":"2","ind":3},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"429","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[119.523,220.415]},"r":{"a":0,"k":-106},"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":45},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":56},{"s":[100],"t":68.999}]}},"w":19,"h":109,"refId":"2","ind":4},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"428","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[124.523,167.915]},"r":{"a":0,"k":-63},"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":7},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":21},{"s":[100],"t":34}]}},"w":19,"h":109,"refId":"2","ind":5},{"ty":0,"nm":"Layer 11 Comp 2","sr":1,"st":0,"op":181,"ip":0,"ln":"427","hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[9.5,54.5]},"s":{"a":0,"k":[100,100]},"p":{"a":0,"k":[218.091,137.469]},"r":{"a":0,"k":28},"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":94.999},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":114.999},{"s":[100],"t":129.999}]}},"w":19,"h":109,"refId":"2","ind":6}]},{"id":"9","e":1,"w":289,"h":318,"p":"data:image/png;base64,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","u":""}]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface ExpandedDropdownProps {
|
|
3
|
+
serviceItem: {
|
|
4
|
+
pet_seat_info?: Record<string, any>;
|
|
5
|
+
is_change_ticket?: boolean;
|
|
6
|
+
is_tracking_enabled?: boolean;
|
|
7
|
+
};
|
|
8
|
+
showPromo: boolean;
|
|
9
|
+
colors: {
|
|
10
|
+
priceColor?: string;
|
|
11
|
+
};
|
|
12
|
+
grayscaleClass: string;
|
|
13
|
+
translation?: {
|
|
14
|
+
[key: string]: string;
|
|
15
|
+
};
|
|
16
|
+
getAnimationIcon: (icon: string) => any;
|
|
17
|
+
}
|
|
18
|
+
declare function ExpandedDropdown({ serviceItem, showPromo, colors, grayscaleClass, translation, getAnimationIcon, }: ExpandedDropdownProps): React.ReactElement;
|
|
19
|
+
export default ExpandedDropdown;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import LottiePlayer from "../../assets/LottiePlayer";
|
|
3
|
+
function ExpandedDropdown({ serviceItem, showPromo, colors, grayscaleClass, translation, getAnimationIcon, }) {
|
|
4
|
+
const hasPetInfo = serviceItem.pet_seat_info &&
|
|
5
|
+
Object.keys(serviceItem.pet_seat_info).length > 0;
|
|
6
|
+
return (React.createElement("div", { className: "px-[15px] pt-[26px] pb-[14px] -mt-[16px] pt-[20px] relative -z-9", style: {
|
|
7
|
+
backgroundColor: "#f5f5f5",
|
|
8
|
+
borderRadius: "0 0 10px 10px",
|
|
9
|
+
border: showPromo
|
|
10
|
+
? `1px solid ${colors.priceColor}`
|
|
11
|
+
: "1px solid #ccc",
|
|
12
|
+
borderTop: "none",
|
|
13
|
+
} },
|
|
14
|
+
React.createElement("div", { className: "flex flex-col gap-[12px] text-[13px] text-[#464647]" },
|
|
15
|
+
hasPetInfo && (React.createElement("div", { className: "flex items-center gap-[10px]" },
|
|
16
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("petFriendlyAnim"), width: "20px", height: "20px" }),
|
|
17
|
+
React.createElement("div", { className: "h-auto mr-[4px] text-[13px] text-[#464647] bold-text" },
|
|
18
|
+
React.createElement("span", null, translation === null || translation === void 0 ? void 0 : translation.petFriendly)))),
|
|
19
|
+
serviceItem.is_change_ticket && (React.createElement("div", { className: "flex items-center gap-[10px]" },
|
|
20
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("flexibleIcon"), width: "20px", height: "20px" }),
|
|
21
|
+
React.createElement("div", { className: "h-auto mr-[4px] text-[13px] text-[#464647] bold-text" },
|
|
22
|
+
React.createElement("span", null, translation === null || translation === void 0 ? void 0 : translation.flexible)))),
|
|
23
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_tracking_enabled) && (React.createElement("div", { className: `${grayscaleClass} flex items-center gap-[10px]` },
|
|
24
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("locationAnim"), width: "20px", height: "20px" }),
|
|
25
|
+
React.createElement("div", { className: "h-auto mr-[4px] text-[13px] text-[#464647] bold-text" },
|
|
26
|
+
React.createElement("span", null, "GPS Tracker")))))));
|
|
27
|
+
}
|
|
28
|
+
export default ExpandedDropdown;
|
|
@@ -12,7 +12,7 @@ const RatingHover = ({ serviceItem, isSoldOut, colors, t = (key) => key, transla
|
|
|
12
12
|
if (tooltip)
|
|
13
13
|
tooltip.style.display = "none";
|
|
14
14
|
} }),
|
|
15
|
-
React.createElement("div", { className: "hidden group-hover:block absolute left-[80px] -bottom-[160px] z-20 mt-2 w-[
|
|
15
|
+
React.createElement("div", { className: "hidden group-hover:block absolute left-[80px] -bottom-[160px] z-20 mt-2 w-[320px] rounded-lg shadow-service-2 bg-white overflow-hidden rounded-[14px] border-[2px]", style: {
|
|
16
16
|
borderColor: isSoldOut ? "#c0c0c0" : colors.ratingBorderColor,
|
|
17
17
|
color: isSoldOut ? "#c0c0c0" : "",
|
|
18
18
|
} },
|
|
@@ -22,42 +22,42 @@ const RatingHover = ({ serviceItem, isSoldOut, colors, t = (key) => key, transla
|
|
|
22
22
|
React.createElement("div", { className: "text-[12px] bold-text" }, translation === null || translation === void 0 ? void 0 : translation.ratingMouseOverText),
|
|
23
23
|
React.createElement("div", { className: "text-[12px] font-light" }, serviceItem.operator_service_name)),
|
|
24
24
|
React.createElement("div", { className: "px-3 py-2 flex flex-col gap-[10px] font9" },
|
|
25
|
-
React.createElement(RatingItem, { rating: serviceItem.operator_details[
|
|
26
|
-
serviceItem.operator_details[
|
|
27
|
-
serviceItem.operator_details[
|
|
28
|
-
parseFloat(serviceItem.operator_details[
|
|
29
|
-
serviceItem.operator_details[
|
|
30
|
-
? +parseFloat(serviceItem.operator_details[
|
|
31
|
-
serviceItem.operator_details[
|
|
25
|
+
React.createElement(RatingItem, { rating: serviceItem.operator_details[7] &&
|
|
26
|
+
serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
27
|
+
serviceItem.operator_details[7])[0]] &&
|
|
28
|
+
parseFloat(serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
29
|
+
serviceItem.operator_details[7])[0]]).toFixed(1)
|
|
30
|
+
? +parseFloat(serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
31
|
+
serviceItem.operator_details[7])[0]]).toFixed(1)
|
|
32
32
|
: 0, label: translation === null || translation === void 0 ? void 0 : translation.busQuality, isSoldOut: isSoldOut }),
|
|
33
|
-
React.createElement(RatingItem, { rating: serviceItem.operator_details[
|
|
34
|
-
serviceItem.operator_details[
|
|
35
|
-
serviceItem.operator_details[
|
|
36
|
-
parseFloat(serviceItem.operator_details[
|
|
37
|
-
serviceItem.operator_details[
|
|
38
|
-
? +parseFloat(serviceItem.operator_details[
|
|
39
|
-
serviceItem.operator_details[
|
|
33
|
+
React.createElement(RatingItem, { rating: serviceItem.operator_details[7] &&
|
|
34
|
+
serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
35
|
+
serviceItem.operator_details[7])[1]] &&
|
|
36
|
+
parseFloat(serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
37
|
+
serviceItem.operator_details[7])[1]]).toFixed(1)
|
|
38
|
+
? +parseFloat(serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
39
|
+
serviceItem.operator_details[7])[1]]).toFixed(1)
|
|
40
40
|
: 0, label: translation === null || translation === void 0 ? void 0 : translation.punctuality, isSoldOut: isSoldOut }),
|
|
41
|
-
React.createElement(RatingItem, { rating: serviceItem.operator_details[
|
|
42
|
-
serviceItem.operator_details[
|
|
43
|
-
serviceItem.operator_details[
|
|
44
|
-
parseFloat(serviceItem.operator_details[
|
|
45
|
-
serviceItem.operator_details[
|
|
46
|
-
? +parseFloat(serviceItem.operator_details[
|
|
47
|
-
serviceItem.operator_details[
|
|
41
|
+
React.createElement(RatingItem, { rating: serviceItem.operator_details[7] &&
|
|
42
|
+
serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
43
|
+
serviceItem.operator_details[7])[2]] &&
|
|
44
|
+
parseFloat(serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
45
|
+
serviceItem.operator_details[7])[2]]).toFixed(1)
|
|
46
|
+
? +parseFloat(serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
47
|
+
serviceItem.operator_details[7])[2]]).toFixed(1)
|
|
48
48
|
: 0, label: translation === null || translation === void 0 ? void 0 : translation.serviceQuality, isSoldOut: isSoldOut }),
|
|
49
|
-
React.createElement(RatingItem, { rating: serviceItem.operator_details[
|
|
50
|
-
serviceItem.operator_details[
|
|
51
|
-
serviceItem.operator_details[
|
|
52
|
-
parseFloat(serviceItem.operator_details[
|
|
53
|
-
serviceItem.operator_details[
|
|
54
|
-
? +parseFloat(serviceItem.operator_details[
|
|
55
|
-
serviceItem.operator_details[
|
|
49
|
+
React.createElement(RatingItem, { rating: serviceItem.operator_details[7] &&
|
|
50
|
+
serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
51
|
+
serviceItem.operator_details[7])[3]] &&
|
|
52
|
+
parseFloat(serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
53
|
+
serviceItem.operator_details[7])[3]]).toFixed(1)
|
|
54
|
+
? +parseFloat(serviceItem.operator_details[7][Object.keys(serviceItem.operator_details[7] &&
|
|
55
|
+
serviceItem.operator_details[7])[3]]).toFixed(1)
|
|
56
56
|
: 0, label: translation === null || translation === void 0 ? void 0 : translation.serviceRecommendation, isSoldOut: isSoldOut })),
|
|
57
|
-
React.createElement("div", { className: "px-
|
|
57
|
+
React.createElement("div", { className: "px-3 py-2 text-center text-[12px] font9 text-wrap", style: {
|
|
58
58
|
backgroundColor: isSoldOut ? "#f5f5f5" : colors.ratingBottomColor,
|
|
59
59
|
color: isSoldOut ? "#c0c0c1" : "#ff8f45",
|
|
60
|
-
} }, `${translation === null || translation === void 0 ? void 0 : translation.ratingMouseOverCalculationText} ${Object.values(serviceItem.operator_details)[
|
|
60
|
+
} }, `${translation === null || translation === void 0 ? void 0 : translation.ratingMouseOverCalculationText} ${Object.values(serviceItem.operator_details)[6]} ${translation === null || translation === void 0 ? void 0 : translation.ratingMouseOverCalculationUsers}`))),
|
|
61
61
|
React.createElement("span", { className: "text-[#464647] text-[13.33px]" }, typeof serviceItem.operator_details[1] === "number"
|
|
62
62
|
? serviceItem.operator_details[1].toFixed(1)
|
|
63
63
|
: serviceItem.operator_details[1])));
|
package/dist/styles.css
CHANGED
|
@@ -333,8 +333,8 @@
|
|
|
333
333
|
.w-\[260px\] {
|
|
334
334
|
width: 260px;
|
|
335
335
|
}
|
|
336
|
-
.w-\[
|
|
337
|
-
width:
|
|
336
|
+
.w-\[320px\] {
|
|
337
|
+
width: 320px;
|
|
338
338
|
}
|
|
339
339
|
.w-\[auto\] {
|
|
340
340
|
width: auto;
|
|
@@ -690,6 +690,9 @@
|
|
|
690
690
|
--tw-font-weight: 900;
|
|
691
691
|
font-weight: 900;
|
|
692
692
|
}
|
|
693
|
+
.text-wrap {
|
|
694
|
+
text-wrap: wrap;
|
|
695
|
+
}
|
|
693
696
|
.break-normal {
|
|
694
697
|
overflow-wrap: normal;
|
|
695
698
|
word-break: normal;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface ItemEntry {
|
|
3
|
+
key: string;
|
|
4
|
+
render: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
interface BottomAmenitiesProps {
|
|
7
|
+
otherItems: ItemEntry[];
|
|
8
|
+
serviceItem: {
|
|
9
|
+
id: string;
|
|
10
|
+
is_tracking_enabled?: boolean;
|
|
11
|
+
is_change_ticket?: boolean;
|
|
12
|
+
pet_seat_info?: Record<string, any>;
|
|
13
|
+
};
|
|
14
|
+
grayscaleClass: string;
|
|
15
|
+
isSoldOut: boolean;
|
|
16
|
+
isItemExpanded: boolean;
|
|
17
|
+
colors: Record<string, any>;
|
|
18
|
+
translation?: {
|
|
19
|
+
[key: string]: string;
|
|
20
|
+
};
|
|
21
|
+
getAnimationIcon: (icon: string) => any;
|
|
22
|
+
downArrowIcon?: React.ReactNode;
|
|
23
|
+
onToggleExpand: () => void;
|
|
24
|
+
}
|
|
25
|
+
declare function BottomAmenities({ otherItems, serviceItem, grayscaleClass, isSoldOut, isItemExpanded, colors, translation, getAnimationIcon, downArrowIcon, onToggleExpand, }: BottomAmenitiesProps): React.ReactElement;
|
|
26
|
+
export default BottomAmenities;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import LottiePlayer from "../../assets/LottiePlayer";
|
|
3
|
+
import FlexibleBlock from "../FlexibleBlock";
|
|
4
|
+
import PetBlock from "../PetBlock";
|
|
5
|
+
function BottomAmenities({ otherItems, serviceItem, grayscaleClass, isSoldOut, isItemExpanded, colors, translation, getAnimationIcon, downArrowIcon, onToggleExpand, }) {
|
|
6
|
+
const hasPetInfo = serviceItem.pet_seat_info &&
|
|
7
|
+
Object.keys(serviceItem.pet_seat_info).length > 0;
|
|
8
|
+
const showDownArrow = ((serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_change_ticket) && serviceItem.pet_seat_info) ||
|
|
9
|
+
(serviceItem.pet_seat_info &&
|
|
10
|
+
Object.keys(serviceItem.pet_seat_info).length > 0);
|
|
11
|
+
return (React.createElement("div", { className: "flex items-center mt-[15px] border-t border-[#eee] pt-[6px]" },
|
|
12
|
+
React.createElement("div", { className: "grid items-center gap-[2%] flex-1 ", style: {
|
|
13
|
+
gridTemplateColumns: "18% 18% 23% 23%",
|
|
14
|
+
} }, otherItems.map((item) => (React.createElement("div", { key: item.key, className: "flex items-center" }, item.render)))),
|
|
15
|
+
React.createElement("div", { className: "flex items-center justify-end shrink-0 ml-[5px] w-[150px]" },
|
|
16
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_tracking_enabled) && (React.createElement("div", { className: grayscaleClass + " mr-[10px]" },
|
|
17
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("locationAnim"), width: "20px", height: "20px" }))),
|
|
18
|
+
serviceItem.is_change_ticket && (React.createElement(FlexibleBlock, { translation: translation, getAnimationIcon: getAnimationIcon, colors: colors, serviceItem: serviceItem, isSoldOut: isSoldOut })),
|
|
19
|
+
hasPetInfo && (React.createElement(PetBlock, { translation: translation, getAnimationIcon: getAnimationIcon, colors: colors, isSoldOut: isSoldOut })),
|
|
20
|
+
showDownArrow ? (React.createElement("div", { className: "flex items-center cursor-pointer ml-[4px] transition-transform duration-300 w-[14px] h-[14px]", onClick: onToggleExpand }, downArrowIcon)) : null)));
|
|
21
|
+
}
|
|
22
|
+
export default BottomAmenities;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface ExpandedDropdownProps {
|
|
3
|
+
serviceItem: {
|
|
4
|
+
pet_seat_info?: Record<string, any>;
|
|
5
|
+
is_change_ticket?: boolean;
|
|
6
|
+
is_tracking_enabled?: boolean;
|
|
7
|
+
};
|
|
8
|
+
showPromo: boolean;
|
|
9
|
+
colors: {
|
|
10
|
+
priceColor?: string;
|
|
11
|
+
};
|
|
12
|
+
grayscaleClass: string;
|
|
13
|
+
translation?: {
|
|
14
|
+
[key: string]: string;
|
|
15
|
+
};
|
|
16
|
+
getAnimationIcon: (icon: string) => any;
|
|
17
|
+
}
|
|
18
|
+
declare function ExpandedDropdown({ serviceItem, showPromo, colors, grayscaleClass, translation, getAnimationIcon, }: ExpandedDropdownProps): React.ReactElement;
|
|
19
|
+
export default ExpandedDropdown;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import LottiePlayer from "../../assets/LottiePlayer";
|
|
3
|
+
function ExpandedDropdown({ serviceItem, showPromo, colors, grayscaleClass, translation, getAnimationIcon, }) {
|
|
4
|
+
const hasPetInfo = serviceItem.pet_seat_info &&
|
|
5
|
+
Object.keys(serviceItem.pet_seat_info).length > 0;
|
|
6
|
+
return (React.createElement("div", { className: "px-[15px] pt-[26px] pb-[14px] -mt-[16px] pt-[20px] relative -z-9", style: {
|
|
7
|
+
backgroundColor: "#f5f5f5",
|
|
8
|
+
borderRadius: "0 0 10px 10px",
|
|
9
|
+
// border: showPromo ? `1px solid ${colors.priceColor}` : "1px solid #ccc",
|
|
10
|
+
border: `1px solid ${colors.priceColor}`,
|
|
11
|
+
borderTop: "none",
|
|
12
|
+
} },
|
|
13
|
+
React.createElement("div", { className: "flex flex-col gap-[12px] text-[13px] text-[#464647]" },
|
|
14
|
+
hasPetInfo && (React.createElement("div", { className: "flex items-center gap-[10px]" },
|
|
15
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("petFriendlyAnim"), width: "20px", height: "20px" }),
|
|
16
|
+
React.createElement("div", { className: "h-auto mr-[4px] text-[13px] text-[#464647] bold-text" },
|
|
17
|
+
React.createElement("span", null, translation === null || translation === void 0 ? void 0 : translation.petFriendly)))),
|
|
18
|
+
serviceItem.is_change_ticket && (React.createElement("div", { className: "flex items-center gap-[10px]" },
|
|
19
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("flexibleIcon"), width: "20px", height: "20px" }),
|
|
20
|
+
React.createElement("div", { className: "h-auto mr-[4px] text-[13px] text-[#464647] bold-text" },
|
|
21
|
+
React.createElement("span", null, translation === null || translation === void 0 ? void 0 : translation.flexible)))),
|
|
22
|
+
(serviceItem === null || serviceItem === void 0 ? void 0 : serviceItem.is_tracking_enabled) && (React.createElement("div", { className: `${grayscaleClass} flex items-center gap-[10px]` },
|
|
23
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("locationAnim"), width: "20px", height: "20px" }),
|
|
24
|
+
React.createElement("div", { className: "h-auto mr-[4px] text-[13px] text-[#464647] bold-text" },
|
|
25
|
+
React.createElement("span", null, "GPS Tracker")))))));
|
|
26
|
+
}
|
|
27
|
+
export default ExpandedDropdown;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface KuposButtonProps {
|
|
3
|
+
isSoldOut: boolean;
|
|
4
|
+
isLoading: boolean;
|
|
5
|
+
buttonColor?: string;
|
|
6
|
+
buyLabel?: string;
|
|
7
|
+
soldOutLabel?: string;
|
|
8
|
+
soldOutIcon?: React.ReactNode;
|
|
9
|
+
onClick: () => void;
|
|
10
|
+
}
|
|
11
|
+
declare function KuposButton({ isSoldOut, isLoading, buttonColor, buyLabel, soldOutLabel, soldOutIcon, onClick, }: KuposButtonProps): React.ReactElement;
|
|
12
|
+
export default KuposButton;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
function KuposButton({ isSoldOut, isLoading, buttonColor, buyLabel, soldOutLabel, soldOutIcon, onClick, }) {
|
|
3
|
+
const isDisabled = isLoading || isSoldOut;
|
|
4
|
+
return (React.createElement("button", { onClick: () => (!isSoldOut ? onClick() : null), disabled: isLoading, className: "w-full py-[12px] text-[12px] font-bold text-white rounded-[14px] border-none px-[20px] flex items-center justify-center", style: {
|
|
5
|
+
backgroundColor: isDisabled ? "lightgray" : buttonColor,
|
|
6
|
+
cursor: isDisabled ? "not-allowed" : "pointer",
|
|
7
|
+
} },
|
|
8
|
+
React.createElement("span", { className: "min-w-[75px] flex justify-center items-center bold-text uppercase" },
|
|
9
|
+
isSoldOut ? soldOutIcon : null,
|
|
10
|
+
isLoading ? (React.createElement("span", { className: "loader-circle" })) : !isSoldOut ? (buyLabel) : (soldOutLabel))));
|
|
11
|
+
}
|
|
12
|
+
export default KuposButton;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface SeatType {
|
|
3
|
+
label: string;
|
|
4
|
+
fare: number;
|
|
5
|
+
key: any;
|
|
6
|
+
}
|
|
7
|
+
interface SeatSectionProps {
|
|
8
|
+
seatTypes: SeatType[];
|
|
9
|
+
availableSeats: number;
|
|
10
|
+
isSoldOut: boolean;
|
|
11
|
+
priceColor?: string;
|
|
12
|
+
currencySign?: string;
|
|
13
|
+
removeDuplicateSeats?: boolean;
|
|
14
|
+
isPeru?: boolean;
|
|
15
|
+
}
|
|
16
|
+
declare function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currencySign, removeDuplicateSeats, isPeru, }: SeatSectionProps): React.ReactElement;
|
|
17
|
+
export default SeatSection;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import CommonService from "../../utils/CommonService";
|
|
3
|
+
const SEAT_EXCEPTIONS = ["Asiento mascota"];
|
|
4
|
+
function getAllSeatTypes(seatTypes) {
|
|
5
|
+
if (!(seatTypes === null || seatTypes === void 0 ? void 0 : seatTypes.length)) {
|
|
6
|
+
return [{ label: "Salon cama", price: 0 }];
|
|
7
|
+
}
|
|
8
|
+
let seatTypesWithPrices = seatTypes.filter(Boolean).map((val) => ({
|
|
9
|
+
label: val === null || val === void 0 ? void 0 : val.label,
|
|
10
|
+
price: val === null || val === void 0 ? void 0 : val.fare,
|
|
11
|
+
}));
|
|
12
|
+
seatTypesWithPrices.sort((a, b) => a.price - b.price);
|
|
13
|
+
return seatTypesWithPrices;
|
|
14
|
+
}
|
|
15
|
+
function getSortedSeatTypes(seatTypes) {
|
|
16
|
+
if (!(seatTypes === null || seatTypes === void 0 ? void 0 : seatTypes.length)) {
|
|
17
|
+
return [{ label: "Salon cama", price: 0 }];
|
|
18
|
+
}
|
|
19
|
+
let seatTypesWithPrices = getAllSeatTypes(seatTypes);
|
|
20
|
+
const premiumIndex = seatTypesWithPrices.findIndex((item) => item.label === "Premium");
|
|
21
|
+
if (premiumIndex >= 3) {
|
|
22
|
+
seatTypesWithPrices[2] = seatTypesWithPrices[premiumIndex];
|
|
23
|
+
}
|
|
24
|
+
seatTypesWithPrices = seatTypesWithPrices.slice(0, 2);
|
|
25
|
+
return seatTypesWithPrices;
|
|
26
|
+
}
|
|
27
|
+
function getUniqueSeats(seatTypes) {
|
|
28
|
+
const allSeatTypes = getAllSeatTypes(seatTypes);
|
|
29
|
+
const seatMap = new Map();
|
|
30
|
+
allSeatTypes.forEach((seat) => {
|
|
31
|
+
if (SEAT_EXCEPTIONS.includes(seat.label))
|
|
32
|
+
return;
|
|
33
|
+
// Only check if the label already exists in the map, don't compare prices
|
|
34
|
+
if (!seatMap.has(seat.label)) {
|
|
35
|
+
seatMap.set(seat.label, seat);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return Array.from(seatMap.values());
|
|
39
|
+
}
|
|
40
|
+
function getNumberOfSeats(seatTypes) {
|
|
41
|
+
return seatTypes.filter((val) => !SEAT_EXCEPTIONS.includes(val.label)).length;
|
|
42
|
+
}
|
|
43
|
+
function SeatSection({ seatTypes, availableSeats, isSoldOut, priceColor, currencySign, removeDuplicateSeats, isPeru, }) {
|
|
44
|
+
const uniqueSeats = getUniqueSeats(seatTypes);
|
|
45
|
+
const sortedSeatTypes = getSortedSeatTypes(seatTypes);
|
|
46
|
+
const numberOfSeats = getNumberOfSeats(seatTypes);
|
|
47
|
+
const isCentered = numberOfSeats < 2 || removeDuplicateSeats;
|
|
48
|
+
const formatPrice = (price) => availableSeats <= 0
|
|
49
|
+
? CommonService.currency(0, currencySign)
|
|
50
|
+
: CommonService.currency(price, currencySign);
|
|
51
|
+
const renderSeatNames = () => {
|
|
52
|
+
const seats = removeDuplicateSeats ? uniqueSeats : sortedSeatTypes;
|
|
53
|
+
return seats.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"
|
|
54
|
+
? removeDuplicateSeats && isPeru
|
|
55
|
+
? CommonService.truncateSeatLabel(val.label)
|
|
56
|
+
: val.label
|
|
57
|
+
: null)));
|
|
58
|
+
};
|
|
59
|
+
const renderSeatPrices = () => {
|
|
60
|
+
if (removeDuplicateSeats) {
|
|
61
|
+
return uniqueSeats.map((val, key) => (React.createElement("span", { key: key }, formatPrice(val.price))));
|
|
62
|
+
}
|
|
63
|
+
return sortedSeatTypes.map((val, key) => SEAT_EXCEPTIONS.includes(val.label) ? null : (React.createElement("span", { key: key, className: "flex items-center text-[13.33px] bold-text" }, typeof val.price === "string" || typeof val.price === "number"
|
|
64
|
+
? formatPrice(val.price)
|
|
65
|
+
: null)));
|
|
66
|
+
};
|
|
67
|
+
const renderLabels = () => {
|
|
68
|
+
if (isPeru) {
|
|
69
|
+
return (React.createElement(React.Fragment, null,
|
|
70
|
+
React.createElement("span", { className: "text-[13.33px]", style: { color: "#999" } }, "Antes"),
|
|
71
|
+
React.createElement("span", { className: "text-[13.33px]" }, "Desde")));
|
|
72
|
+
}
|
|
73
|
+
return renderSeatNames();
|
|
74
|
+
};
|
|
75
|
+
const strikethroughStyle = Object.assign({ color: "#ccc", display: "flex", textAlign: "end", textDecoration: "line-through" }, (isPeru
|
|
76
|
+
? { position: "relative", top: 0 }
|
|
77
|
+
: { position: "absolute", top: isCentered ? "-10px" : "-18px" }));
|
|
78
|
+
return (React.createElement("div", { className: "relative flex gap-[10px] text-[13.33px] justify-between min-h-[2.5rem]", style: isCentered ? { alignItems: "center" } : {} },
|
|
79
|
+
React.createElement("div", { className: "flex flex-col justify-between", style: { gap: "10px" } }, renderLabels()),
|
|
80
|
+
React.createElement("div", { className: "flex flex-col justify-between absolute inset-y-0 right-0 left-1/2 h-full", style: {
|
|
81
|
+
color: isSoldOut ? "#c0c0c0" : priceColor,
|
|
82
|
+
top: 0,
|
|
83
|
+
bottom: 0,
|
|
84
|
+
left: "clamp(60%, 65% + (100vw - 1300px) * 0.1, 65%)",
|
|
85
|
+
right: 0,
|
|
86
|
+
justifyContent: isCentered ? "center" : "",
|
|
87
|
+
gap: "10px",
|
|
88
|
+
} },
|
|
89
|
+
React.createElement("span", { className: "text-[13.33px]", style: strikethroughStyle }, "$1.000"),
|
|
90
|
+
renderSeatPrices())));
|
|
91
|
+
}
|
|
92
|
+
export default SeatSection;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface TopAmenitiesProps {
|
|
3
|
+
showPromo: boolean;
|
|
4
|
+
showTopLabel: string | boolean;
|
|
5
|
+
isSoldOut: boolean;
|
|
6
|
+
priceColor?: string;
|
|
7
|
+
buttonColor?: string;
|
|
8
|
+
boardingIcon?: React.ReactNode;
|
|
9
|
+
getAnimationIcon: (icon: string) => any;
|
|
10
|
+
}
|
|
11
|
+
declare function TopAmenities({ showPromo, showTopLabel, isSoldOut, priceColor, buttonColor, boardingIcon, getAnimationIcon, }: TopAmenitiesProps): React.ReactElement;
|
|
12
|
+
export default TopAmenities;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import LottiePlayer from "../../assets/LottiePlayer";
|
|
3
|
+
function TopAmenities({ showPromo, showTopLabel, isSoldOut, priceColor, buttonColor, boardingIcon, getAnimationIcon, }) {
|
|
4
|
+
return (React.createElement("div", { style: {
|
|
5
|
+
display: "flex",
|
|
6
|
+
justifyContent: "flex-end",
|
|
7
|
+
position: "relative",
|
|
8
|
+
zIndex: "-1",
|
|
9
|
+
} },
|
|
10
|
+
React.createElement("div", { style: {
|
|
11
|
+
backgroundColor: priceColor,
|
|
12
|
+
position: "relative",
|
|
13
|
+
right: showTopLabel ? "-21px" : "",
|
|
14
|
+
padding: "0 14px",
|
|
15
|
+
borderTopRightRadius: "10px",
|
|
16
|
+
borderTopLeftRadius: "10px",
|
|
17
|
+
} },
|
|
18
|
+
React.createElement("div", { style: { display: "flex", alignItems: "center" } },
|
|
19
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("bombAnimation"), width: "14px", height: "14px" }),
|
|
20
|
+
React.createElement("span", { className: "flex items-center py-[10px] pl-[6px] text-white text-[13.33px] z-20", style: { paddingRight: showTopLabel ? "18px" : "" } },
|
|
21
|
+
React.createElement("span", { className: "bold-text" }, "kuponazo 20%\u00A0"),
|
|
22
|
+
" | Termina en\u00A0",
|
|
23
|
+
React.createElement("span", { className: "bold-text" }, "02:10:30")))),
|
|
24
|
+
showTopLabel && (React.createElement("div", { className: "flex items-center py-[10px] px-[14px] text-[13.33px] z-20", style: {
|
|
25
|
+
backgroundColor: isSoldOut ? "#ddd" : buttonColor,
|
|
26
|
+
borderTopRightRadius: "10px",
|
|
27
|
+
borderTopLeftRadius: "10px",
|
|
28
|
+
} },
|
|
29
|
+
React.createElement(LottiePlayer, { animationData: getAnimationIcon("priorityStageAnim"), width: "14px", height: "14px" }),
|
|
30
|
+
React.createElement("div", { className: "text-white pl-[6px]" }, showTopLabel)))));
|
|
31
|
+
}
|
|
32
|
+
export default TopAmenities;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface BottomAmenitiesMobileProps {
|
|
3
|
+
isSoldOut: boolean;
|
|
4
|
+
amenitiesNodes: React.ReactNode;
|
|
5
|
+
hoursIcon: React.ReactNode;
|
|
6
|
+
duration: string;
|
|
7
|
+
isDirectTrip?: boolean;
|
|
8
|
+
directoColor?: string;
|
|
9
|
+
directoAnim?: any;
|
|
10
|
+
isChangeTicket?: boolean;
|
|
11
|
+
isPetSeat: boolean;
|
|
12
|
+
petSeatInfo?: Record<string, any>;
|
|
13
|
+
petFriendlyAnim?: any;
|
|
14
|
+
flexibleAnim?: any;
|
|
15
|
+
isTrackingEnabled?: boolean;
|
|
16
|
+
locationAnim?: any;
|
|
17
|
+
downArrowIcon?: string;
|
|
18
|
+
showDropdown: boolean;
|
|
19
|
+
setShowDropdown: (val: boolean) => void;
|
|
20
|
+
onDropdownToggle: () => void;
|
|
21
|
+
}
|
|
22
|
+
declare function BottomAmenitiesMobile({ isSoldOut, amenitiesNodes, hoursIcon, duration, isDirectTrip, directoColor, directoAnim, isChangeTicket, isPetSeat, petSeatInfo, petFriendlyAnim, flexibleAnim, isTrackingEnabled, locationAnim, downArrowIcon, showDropdown, setShowDropdown, onDropdownToggle, }: BottomAmenitiesMobileProps): React.ReactElement;
|
|
23
|
+
export default BottomAmenitiesMobile;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import LottiePlayer from "../../assets/LottiePlayer";
|
|
3
|
+
function BottomAmenitiesMobile({ isSoldOut, amenitiesNodes, hoursIcon, duration, isDirectTrip, directoColor, directoAnim, isChangeTicket, isPetSeat, petSeatInfo, petFriendlyAnim, flexibleAnim, isTrackingEnabled, locationAnim, downArrowIcon, showDropdown, setShowDropdown, onDropdownToggle, }) {
|
|
4
|
+
return (React.createElement("div", { className: `${"flex justify-between items-center items-center "}` },
|
|
5
|
+
React.createElement("div", { className: "w-[55%] flex justify-between items-center" },
|
|
6
|
+
React.createElement("div", { style: { opacity: isSoldOut ? 0.5 : 1 } }, amenitiesNodes),
|
|
7
|
+
React.createElement("div", { className: "flex relative ", style: { color: isSoldOut ? "#bbb" : "text-[#464647]" } },
|
|
8
|
+
React.createElement("div", { className: `w-[12px] h-auto mr-[2px] ${isSoldOut ? "grayscale" : ""}` }, hoursIcon),
|
|
9
|
+
"\u00A0",
|
|
10
|
+
React.createElement("div", { className: `cursor-default group min-[420]:text-[13px] text-[12px] ${isSoldOut ? "text-[#c0c0c0]" : ""}`, style: { lineHeight: "normal" } },
|
|
11
|
+
duration,
|
|
12
|
+
"hrs")),
|
|
13
|
+
isDirectTrip && (React.createElement("div", { className: `flex items-center gap-[2px] text-white min-[420]:text-[12px] text-[10px] z-20 `, style: {
|
|
14
|
+
// backgroundColor: isSoldOut ? "#ddd" : colors.tooltipBgColor,
|
|
15
|
+
color: isSoldOut ? "#bbb" : directoColor,
|
|
16
|
+
} },
|
|
17
|
+
React.createElement(LottiePlayer, { animationData: directoAnim, width: "14px", height: "14px" }),
|
|
18
|
+
React.createElement("div", { className: "ml-[5px]" }, "Directo")))),
|
|
19
|
+
React.createElement("div", null, (isChangeTicket || isPetSeat) && (React.createElement("div", { onClick: onDropdownToggle, className: "flex items-center" },
|
|
20
|
+
petSeatInfo && Object.keys(petSeatInfo).length > 0 ? (React.createElement("div", { className: "flex items-center" },
|
|
21
|
+
React.createElement("div", { className: `relative group cursor-default ` },
|
|
22
|
+
React.createElement("div", { className: "flex items-center" },
|
|
23
|
+
React.createElement("div", { className: `mr-[5px] ${isSoldOut ? "grayscale" : ""}` },
|
|
24
|
+
React.createElement(LottiePlayer, { animationData: petFriendlyAnim, width: "16px", height: "16px" })))))) : null,
|
|
25
|
+
isChangeTicket && (React.createElement("div", { className: "flex items-center" },
|
|
26
|
+
React.createElement("div", { className: "relative group cursor-default" },
|
|
27
|
+
React.createElement("div", { className: "flex items-center" },
|
|
28
|
+
React.createElement("div", { className: `mr-[5px] ${isSoldOut ? "grayscale" : ""}` },
|
|
29
|
+
React.createElement(LottiePlayer, { animationData: flexibleAnim, width: "16px", height: "16px" })))))),
|
|
30
|
+
isTrackingEnabled && (React.createElement("div", { className: "flex items-center mr-[10px]" },
|
|
31
|
+
React.createElement("div", { className: `h-auto mr-[4px] min-[420]:text-[13px] text-[11px] text-[#464647] ${isSoldOut ? "grayscale" : ""}` },
|
|
32
|
+
React.createElement(LottiePlayer, { animationData: locationAnim, width: "16px", height: "16px" })))),
|
|
33
|
+
(isChangeTicket || isPetSeat) && (
|
|
34
|
+
// <img src={serviceItem.icons.plus} alt="icon" width={11} />
|
|
35
|
+
React.createElement("img", { src: downArrowIcon, alt: "icon", width: 14, height: 14 })))))));
|
|
36
|
+
}
|
|
37
|
+
export default BottomAmenitiesMobile;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface DateTimeSectionMobileProps {
|
|
3
|
+
onBookButtonPress: () => void;
|
|
4
|
+
isCiva: boolean;
|
|
5
|
+
isSoldOut: boolean;
|
|
6
|
+
isLinatal: boolean;
|
|
7
|
+
isPeru: boolean;
|
|
8
|
+
orignLabel?: React.ReactNode;
|
|
9
|
+
destinationLabel?: React.ReactNode;
|
|
10
|
+
originIcon?: string;
|
|
11
|
+
destinationIcon?: string;
|
|
12
|
+
travelDate: string;
|
|
13
|
+
arrivalDate: string;
|
|
14
|
+
depTime: string;
|
|
15
|
+
arrTime: string;
|
|
16
|
+
seatTypes: any[];
|
|
17
|
+
seatPriceColor: string;
|
|
18
|
+
currencySign: string;
|
|
19
|
+
availableSeats: number;
|
|
20
|
+
removeDuplicateSeats?: boolean;
|
|
21
|
+
}
|
|
22
|
+
declare function DateTimeSectionMobile({ onBookButtonPress, isCiva, isSoldOut, isLinatal, isPeru, orignLabel, destinationLabel, originIcon, destinationIcon, travelDate, arrivalDate, depTime, arrTime, seatTypes, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, }: DateTimeSectionMobileProps): React.ReactElement;
|
|
23
|
+
export default DateTimeSectionMobile;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import DateService from "../../utils/DateService";
|
|
3
|
+
import SeatSectionMobile from "./SeatSectionMobile";
|
|
4
|
+
const pad = (n) => (n < 10 ? "0" + n : String(n));
|
|
5
|
+
const getCleanedDepTime = (raw) => {
|
|
6
|
+
const depTimeStr = raw || "";
|
|
7
|
+
const hasAM = depTimeStr.includes("AM");
|
|
8
|
+
const hasPM = depTimeStr.includes("PM");
|
|
9
|
+
const [timePart] = depTimeStr.split(/AM|PM/).map((s) => s.trim());
|
|
10
|
+
const [hour, minute] = timePart.split(":").map(Number);
|
|
11
|
+
let cleaned;
|
|
12
|
+
if (hasAM) {
|
|
13
|
+
cleaned = hour === 12 ? `00:${pad(minute)}` : `${pad(hour)}:${pad(minute)}`;
|
|
14
|
+
}
|
|
15
|
+
else if (hasPM) {
|
|
16
|
+
cleaned =
|
|
17
|
+
hour === 12 ? `${hour}:${pad(minute)}` : `${hour + 12}:${pad(minute)}`;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
cleaned = timePart;
|
|
21
|
+
}
|
|
22
|
+
return { cleaned, hasAM, hasPM };
|
|
23
|
+
};
|
|
24
|
+
const TimeRow = ({ label, icon, alt, date, timeContent, isSoldOut, }) => (React.createElement("div", { className: `flex items-center min-[420]:text-[13px] text-[12px] justify-between ${isSoldOut ? "text-[#c0c0c0]" : ""}` },
|
|
25
|
+
React.createElement("div", { className: "flex items-center", style: { flex: 1 } },
|
|
26
|
+
React.createElement("div", null,
|
|
27
|
+
" ",
|
|
28
|
+
label ? (React.createElement("div", { className: "w-[60px]" }, label)) : (React.createElement("div", { className: "w-[12px] h-auto mr-[5px]" },
|
|
29
|
+
React.createElement("img", { src: icon, alt: alt, className: `w-[12px] h-auto mr-[5px] ${isSoldOut ? "grayscale" : ""}` })))),
|
|
30
|
+
React.createElement("div", { className: "flex items-center relative capitalize justify-between", style: { flex: 1 } },
|
|
31
|
+
React.createElement("span", { className: "cursor-pointer black-text" }, DateService.getServiceItemDate(date)),
|
|
32
|
+
React.createElement("div", { className: "absolute left-[50%]" }, "\u2022"),
|
|
33
|
+
React.createElement("div", { className: "font-[900] relative black-text" }, timeContent)))));
|
|
34
|
+
function DateTimeSectionMobile({ onBookButtonPress, isCiva, isSoldOut, isLinatal, isPeru, orignLabel, destinationLabel, originIcon, destinationIcon, travelDate, arrivalDate, depTime, arrTime, seatTypes, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, }) {
|
|
35
|
+
const { cleaned: cleanedDepTime, hasAM, hasPM } = getCleanedDepTime(depTime);
|
|
36
|
+
const depTimeContent = isLinatal ? (React.createElement("div", null,
|
|
37
|
+
React.createElement("span", null,
|
|
38
|
+
" ",
|
|
39
|
+
cleanedDepTime,
|
|
40
|
+
" ",
|
|
41
|
+
React.createElement("span", null, hasPM ? "PM" : hasAM ? "AM" : "")),
|
|
42
|
+
React.createElement("span", null, depTime.includes("AM") || depTime.includes("PM")
|
|
43
|
+
? null
|
|
44
|
+
: DateService.ampmOnly(depTime)))) : (DateService.formatTime(depTime));
|
|
45
|
+
return (React.createElement("div", { className: "flex justify-between gap-[5px] w-full", onClick: onBookButtonPress },
|
|
46
|
+
React.createElement("div", { className: "min-h-[2.5rem] flex flex-col justify-between gap-[4px] w-[50%] ", style: { justifyContent: isCiva && "center" } },
|
|
47
|
+
React.createElement(TimeRow, { label: orignLabel, icon: originIcon, alt: "origin", date: travelDate, timeContent: depTimeContent, isSoldOut: isSoldOut }),
|
|
48
|
+
isCiva ? null : (React.createElement(TimeRow, { label: destinationLabel, icon: destinationIcon, alt: "destination", date: arrivalDate, timeContent: DateService.formatTime(arrTime), isSoldOut: isSoldOut }))),
|
|
49
|
+
isPeru ? null : (React.createElement("div", { style: {
|
|
50
|
+
width: "1px",
|
|
51
|
+
height: "2.5rem",
|
|
52
|
+
backgroundColor: "#ccc",
|
|
53
|
+
margin: "auto",
|
|
54
|
+
} })),
|
|
55
|
+
React.createElement(SeatSectionMobile, { seatTypes: seatTypes, isSoldOut: isSoldOut, isPeru: isPeru, seatPriceColor: seatPriceColor, currencySign: currencySign, availableSeats: availableSeats, removeDuplicateSeats: removeDuplicateSeats })));
|
|
56
|
+
}
|
|
57
|
+
export default DateTimeSectionMobile;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface SeatType {
|
|
3
|
+
label: string;
|
|
4
|
+
key?: string;
|
|
5
|
+
fare: number;
|
|
6
|
+
}
|
|
7
|
+
interface SeatSectionMobileProps {
|
|
8
|
+
seatTypes: SeatType[];
|
|
9
|
+
isSoldOut: boolean;
|
|
10
|
+
isPeru: boolean;
|
|
11
|
+
seatPriceColor: string;
|
|
12
|
+
currencySign: string;
|
|
13
|
+
availableSeats: number;
|
|
14
|
+
removeDuplicateSeats?: boolean;
|
|
15
|
+
}
|
|
16
|
+
declare function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, }: SeatSectionMobileProps): React.ReactElement;
|
|
17
|
+
export default SeatSectionMobile;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import commonService from "../../utils/CommonService";
|
|
3
|
+
const EXCEPTIONS = [
|
|
4
|
+
"gy",
|
|
5
|
+
".gy",
|
|
6
|
+
"GY",
|
|
7
|
+
".GY",
|
|
8
|
+
"Gy",
|
|
9
|
+
".Gy",
|
|
10
|
+
"BLANCO",
|
|
11
|
+
"blanco",
|
|
12
|
+
"asiento_mascota",
|
|
13
|
+
];
|
|
14
|
+
const SeatRow = ({ type, index, displayLabel, fare, isSoldOut, seatPriceColor, hasMultipleTypes, textSize, }) => {
|
|
15
|
+
if (EXCEPTIONS.includes(type.label))
|
|
16
|
+
return null;
|
|
17
|
+
const rowClass = hasMultipleTypes
|
|
18
|
+
? "w-[100%] flex flex-row justify-between "
|
|
19
|
+
: "w-[100%] flex flex-row justify-between items-center";
|
|
20
|
+
const labelColor = isSoldOut ? "#bbb" : "#464647";
|
|
21
|
+
const priceColor = isSoldOut ? "#bbb" : seatPriceColor;
|
|
22
|
+
return (React.createElement("div", { className: rowClass, key: index },
|
|
23
|
+
React.createElement("span", { className: `min-[420]:text-[13px] ${textSize} `, style: { color: labelColor } }, displayLabel),
|
|
24
|
+
React.createElement("span", { className: `min-[420]:text-[13px] ${textSize} bold-text`, style: { color: priceColor } }, fare)));
|
|
25
|
+
};
|
|
26
|
+
const getFilteredSeats = (item) => {
|
|
27
|
+
return item;
|
|
28
|
+
};
|
|
29
|
+
const getUniqueSeats = (data, limit) => {
|
|
30
|
+
var _a;
|
|
31
|
+
const seatMap = new Map();
|
|
32
|
+
(_a = data === null || data === void 0 ? void 0 : data.filter((item) => getFilteredSeats(item.label))) === null || _a === void 0 ? void 0 : _a.forEach((item) => {
|
|
33
|
+
if (EXCEPTIONS.includes(item.key))
|
|
34
|
+
return;
|
|
35
|
+
const existing = seatMap.get(item.label);
|
|
36
|
+
if (!existing ||
|
|
37
|
+
parseFloat(item.fare) < parseFloat(existing.fare)) {
|
|
38
|
+
seatMap.set(item.label, item);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return Array.from(seatMap.values())
|
|
42
|
+
.sort((a, b) => a.fare - b.fare)
|
|
43
|
+
.slice(0, limit);
|
|
44
|
+
};
|
|
45
|
+
function SeatSectionMobile({ seatTypes: seatTypesData, isSoldOut, isPeru, seatPriceColor, currencySign, availableSeats, removeDuplicateSeats, }) {
|
|
46
|
+
var _a;
|
|
47
|
+
const hasMultipleTypes = ((_a = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.length) !== null && _a !== void 0 ? _a : 0) > 2;
|
|
48
|
+
const getFare = (fare) => {
|
|
49
|
+
if (removeDuplicateSeats && availableSeats <= 0 && !isPeru) {
|
|
50
|
+
return commonService.currency(0, currencySign);
|
|
51
|
+
}
|
|
52
|
+
return commonService.currency(fare, currencySign);
|
|
53
|
+
};
|
|
54
|
+
const getLowestFare = () => {
|
|
55
|
+
var _a;
|
|
56
|
+
const filtered = (_a = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.filter((item) => getFilteredSeats(item.label))) === null || _a === void 0 ? void 0 : _a.filter((item) => !EXCEPTIONS.includes(item.label));
|
|
57
|
+
if (!filtered || filtered.length === 0)
|
|
58
|
+
return null;
|
|
59
|
+
return filtered.reduce((min, item) => (item.fare < min ? item.fare : min), filtered[0].fare);
|
|
60
|
+
};
|
|
61
|
+
const getHighestFare = () => {
|
|
62
|
+
var _a;
|
|
63
|
+
return (((_a = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.filter((item) => !EXCEPTIONS.includes(item.label))) === null || _a === void 0 ? void 0 : _a.reduce((max, item) => (item.fare > max ? item.fare : max), 0)) || 0);
|
|
64
|
+
};
|
|
65
|
+
const renderPeruSeats = () => {
|
|
66
|
+
const lowestFare = getLowestFare();
|
|
67
|
+
if (lowestFare === null)
|
|
68
|
+
return null;
|
|
69
|
+
const priceColor = isSoldOut ? "#bbb" : seatPriceColor;
|
|
70
|
+
return (React.createElement(React.Fragment, null,
|
|
71
|
+
React.createElement("div", { className: "w-[100%] flex flex-row justify-between items-center" },
|
|
72
|
+
React.createElement("span", { className: "min-[420]:text-[13px] text-[12px]", style: { color: "#bbb" } }, "Antes"),
|
|
73
|
+
React.createElement("span", { className: "min-[420]:text-[13px] text-[12px] line-through", style: { color: "#bbb" } }, commonService.currency(getHighestFare(), currencySign))),
|
|
74
|
+
React.createElement("div", { className: "w-[100%] flex flex-row justify-between items-center" },
|
|
75
|
+
React.createElement("span", { className: "min-[420]:text-[13px] text-[12px] bold-text", style: { color: isSoldOut ? "#bbb" : "#464647" } }, "Desde"),
|
|
76
|
+
React.createElement("span", { className: "min-[420]:text-[13px] text-[12px] bold-text", style: { color: priceColor } }, commonService.currency(lowestFare, currencySign)))));
|
|
77
|
+
};
|
|
78
|
+
const renderSeats = () => {
|
|
79
|
+
var _a, _b, _c;
|
|
80
|
+
if (isPeru) {
|
|
81
|
+
return renderPeruSeats();
|
|
82
|
+
}
|
|
83
|
+
if (removeDuplicateSeats) {
|
|
84
|
+
const uniqueSeats = getUniqueSeats(seatTypesData, 3);
|
|
85
|
+
return uniqueSeats.map((type, i) => (React.createElement(SeatRow, { key: i, type: type, index: i, displayLabel: commonService.truncateSeatLabel(type.label), fare: getFare(type.fare), isSoldOut: isSoldOut, seatPriceColor: seatPriceColor, hasMultipleTypes: hasMultipleTypes, textSize: "text-[11px]" })));
|
|
86
|
+
}
|
|
87
|
+
return (_c = (_b = (_a = seatTypesData === null || seatTypesData === void 0 ? void 0 : seatTypesData.filter((item) => getFilteredSeats(item.label))) === null || _a === void 0 ? void 0 : _a.sort((a, b) => a.fare - b.fare)) === null || _b === void 0 ? void 0 : _b.slice(0, 2)) === null || _c === void 0 ? void 0 : _c.map((type, i) => (React.createElement(SeatRow, { key: i, type: type, index: i, displayLabel: type.label, fare: commonService.currency(type.fare, currencySign), isSoldOut: isSoldOut, seatPriceColor: seatPriceColor, hasMultipleTypes: hasMultipleTypes, textSize: "text-[12px]" })));
|
|
88
|
+
};
|
|
89
|
+
return (React.createElement("div", { className: "content-center relative", style: { width: "40%" } },
|
|
90
|
+
!isPeru && (React.createElement("div", { className: "absolute -top-[16px] right-[0] flex justify-end" },
|
|
91
|
+
React.createElement("span", { className: "min-[420]:text-[13px] text-[12px] line-through", style: { color: "#bbb" } }, "$7.000"))),
|
|
92
|
+
React.createElement("div", { className: "flex flex-col justify-between h-[2.5rem] ", style: {
|
|
93
|
+
gap: isSoldOut ? "0px" : "5px",
|
|
94
|
+
justifyContent: hasMultipleTypes ? "space-between" : "center",
|
|
95
|
+
} },
|
|
96
|
+
renderSeats(),
|
|
97
|
+
isSoldOut ? (React.createElement("div", { className: "flex justify-end" },
|
|
98
|
+
React.createElement("span", { className: "min-[420]:text-[13px] text-[12px] text-[#ccc]" }, "Agotado"))) : null)));
|
|
99
|
+
}
|
|
100
|
+
export default SeatSectionMobile;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface TopAmenitieMobileProps {
|
|
3
|
+
showTopLabel: string | boolean;
|
|
4
|
+
isSoldOut: boolean;
|
|
5
|
+
seatPriceColor?: string;
|
|
6
|
+
bombAnim?: any;
|
|
7
|
+
priorityStageAnim?: any;
|
|
8
|
+
}
|
|
9
|
+
declare function TopAmenitieMobile({ showTopLabel, isSoldOut, seatPriceColor, bombAnim, priorityStageAnim, }: TopAmenitieMobileProps): React.ReactElement;
|
|
10
|
+
export default TopAmenitieMobile;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import LottiePlayer from "../../assets/LottiePlayer";
|
|
3
|
+
function TopAmenitieMobile({ showTopLabel, isSoldOut, seatPriceColor, bombAnim, priorityStageAnim, }) {
|
|
4
|
+
return (React.createElement("div", { style: {
|
|
5
|
+
display: "flex",
|
|
6
|
+
justifyContent: "flex-end",
|
|
7
|
+
position: "relative",
|
|
8
|
+
zIndex: "-1",
|
|
9
|
+
} },
|
|
10
|
+
React.createElement("div", { style: {
|
|
11
|
+
backgroundColor: seatPriceColor,
|
|
12
|
+
position: "relative",
|
|
13
|
+
right: showTopLabel ? "-21px" : "",
|
|
14
|
+
padding: "0 14px",
|
|
15
|
+
borderTopRightRadius: "14px",
|
|
16
|
+
borderTopLeftRadius: "14px",
|
|
17
|
+
} },
|
|
18
|
+
React.createElement("div", { style: { display: "flex", alignItems: "center", color: "#fff" } },
|
|
19
|
+
React.createElement(LottiePlayer, { animationData: bombAnim, width: "12px", height: "12px" }),
|
|
20
|
+
React.createElement("span", { className: "flex items-center gap-[5px] py-[6px] pl-[6px] text-[12px] z-20", style: { paddingRight: showTopLabel ? "20px" : "0" } },
|
|
21
|
+
React.createElement("span", { className: "bold-text" }, "kuponazo 20% "),
|
|
22
|
+
" | 02:10:30"))),
|
|
23
|
+
showTopLabel && (React.createElement("div", { className: `flex items-center gap-[5px] py-[6px] px-[10px] text-[12px] z-20`, style: {
|
|
24
|
+
backgroundColor: isSoldOut ? "#ddd" : "#ff8f45",
|
|
25
|
+
borderTopRightRadius: "10px",
|
|
26
|
+
borderTopLeftRadius: "10px",
|
|
27
|
+
} },
|
|
28
|
+
React.createElement(LottiePlayer, { animationData: priorityStageAnim, width: "12px", height: "12px" }),
|
|
29
|
+
React.createElement("div", { className:
|
|
30
|
+
// isSoldOut ? "text-white" : `text-[${colors.topLabelColor}]`
|
|
31
|
+
`text-white`, style: {
|
|
32
|
+
color: "#fff",
|
|
33
|
+
} }, showTopLabel)))));
|
|
34
|
+
}
|
|
35
|
+
export default TopAmenitieMobile;
|
package/package.json
CHANGED
|
@@ -35,7 +35,7 @@ const RatingHover: React.FC<RatingHoverProps> = ({
|
|
|
35
35
|
}}
|
|
36
36
|
/>
|
|
37
37
|
<div
|
|
38
|
-
className="hidden group-hover:block absolute left-[80px] -bottom-[160px] z-20 mt-2 w-[
|
|
38
|
+
className="hidden group-hover:block absolute left-[80px] -bottom-[160px] z-20 mt-2 w-[320px] rounded-lg shadow-service-2 bg-white overflow-hidden rounded-[14px] border-[2px]"
|
|
39
39
|
style={{
|
|
40
40
|
borderColor: isSoldOut ? "#c0c0c0" : colors.ratingBorderColor,
|
|
41
41
|
color: isSoldOut ? "#c0c0c0" : "",
|
|
@@ -59,28 +59,28 @@ const RatingHover: React.FC<RatingHoverProps> = ({
|
|
|
59
59
|
<div className="px-3 py-2 flex flex-col gap-[10px] font9">
|
|
60
60
|
<RatingItem
|
|
61
61
|
rating={
|
|
62
|
-
serviceItem.operator_details[
|
|
63
|
-
serviceItem.operator_details[
|
|
62
|
+
serviceItem.operator_details[7] &&
|
|
63
|
+
serviceItem.operator_details[7][
|
|
64
64
|
Object.keys(
|
|
65
|
-
serviceItem.operator_details[
|
|
66
|
-
serviceItem.operator_details[
|
|
65
|
+
serviceItem.operator_details[7] &&
|
|
66
|
+
serviceItem.operator_details[7],
|
|
67
67
|
)[0]
|
|
68
68
|
] &&
|
|
69
69
|
parseFloat(
|
|
70
|
-
serviceItem.operator_details[
|
|
70
|
+
serviceItem.operator_details[7][
|
|
71
71
|
Object.keys(
|
|
72
|
-
serviceItem.operator_details[
|
|
73
|
-
serviceItem.operator_details[
|
|
72
|
+
serviceItem.operator_details[7] &&
|
|
73
|
+
serviceItem.operator_details[7],
|
|
74
74
|
)[0]
|
|
75
|
-
]
|
|
75
|
+
],
|
|
76
76
|
).toFixed(1)
|
|
77
77
|
? +parseFloat(
|
|
78
|
-
serviceItem.operator_details[
|
|
78
|
+
serviceItem.operator_details[7][
|
|
79
79
|
Object.keys(
|
|
80
|
-
serviceItem.operator_details[
|
|
81
|
-
serviceItem.operator_details[
|
|
80
|
+
serviceItem.operator_details[7] &&
|
|
81
|
+
serviceItem.operator_details[7],
|
|
82
82
|
)[0]
|
|
83
|
-
]
|
|
83
|
+
],
|
|
84
84
|
).toFixed(1)
|
|
85
85
|
: 0
|
|
86
86
|
}
|
|
@@ -89,28 +89,28 @@ const RatingHover: React.FC<RatingHoverProps> = ({
|
|
|
89
89
|
/>
|
|
90
90
|
<RatingItem
|
|
91
91
|
rating={
|
|
92
|
-
serviceItem.operator_details[
|
|
93
|
-
serviceItem.operator_details[
|
|
92
|
+
serviceItem.operator_details[7] &&
|
|
93
|
+
serviceItem.operator_details[7][
|
|
94
94
|
Object.keys(
|
|
95
|
-
serviceItem.operator_details[
|
|
96
|
-
serviceItem.operator_details[
|
|
95
|
+
serviceItem.operator_details[7] &&
|
|
96
|
+
serviceItem.operator_details[7],
|
|
97
97
|
)[1]
|
|
98
98
|
] &&
|
|
99
99
|
parseFloat(
|
|
100
|
-
serviceItem.operator_details[
|
|
100
|
+
serviceItem.operator_details[7][
|
|
101
101
|
Object.keys(
|
|
102
|
-
serviceItem.operator_details[
|
|
103
|
-
serviceItem.operator_details[
|
|
102
|
+
serviceItem.operator_details[7] &&
|
|
103
|
+
serviceItem.operator_details[7],
|
|
104
104
|
)[1]
|
|
105
|
-
]
|
|
105
|
+
],
|
|
106
106
|
).toFixed(1)
|
|
107
107
|
? +parseFloat(
|
|
108
|
-
serviceItem.operator_details[
|
|
108
|
+
serviceItem.operator_details[7][
|
|
109
109
|
Object.keys(
|
|
110
|
-
serviceItem.operator_details[
|
|
111
|
-
serviceItem.operator_details[
|
|
110
|
+
serviceItem.operator_details[7] &&
|
|
111
|
+
serviceItem.operator_details[7],
|
|
112
112
|
)[1]
|
|
113
|
-
]
|
|
113
|
+
],
|
|
114
114
|
).toFixed(1)
|
|
115
115
|
: 0
|
|
116
116
|
}
|
|
@@ -119,28 +119,28 @@ const RatingHover: React.FC<RatingHoverProps> = ({
|
|
|
119
119
|
/>
|
|
120
120
|
<RatingItem
|
|
121
121
|
rating={
|
|
122
|
-
serviceItem.operator_details[
|
|
123
|
-
serviceItem.operator_details[
|
|
122
|
+
serviceItem.operator_details[7] &&
|
|
123
|
+
serviceItem.operator_details[7][
|
|
124
124
|
Object.keys(
|
|
125
|
-
serviceItem.operator_details[
|
|
126
|
-
serviceItem.operator_details[
|
|
125
|
+
serviceItem.operator_details[7] &&
|
|
126
|
+
serviceItem.operator_details[7],
|
|
127
127
|
)[2]
|
|
128
128
|
] &&
|
|
129
129
|
parseFloat(
|
|
130
|
-
serviceItem.operator_details[
|
|
130
|
+
serviceItem.operator_details[7][
|
|
131
131
|
Object.keys(
|
|
132
|
-
serviceItem.operator_details[
|
|
133
|
-
serviceItem.operator_details[
|
|
132
|
+
serviceItem.operator_details[7] &&
|
|
133
|
+
serviceItem.operator_details[7],
|
|
134
134
|
)[2]
|
|
135
|
-
]
|
|
135
|
+
],
|
|
136
136
|
).toFixed(1)
|
|
137
137
|
? +parseFloat(
|
|
138
|
-
serviceItem.operator_details[
|
|
138
|
+
serviceItem.operator_details[7][
|
|
139
139
|
Object.keys(
|
|
140
|
-
serviceItem.operator_details[
|
|
141
|
-
serviceItem.operator_details[
|
|
140
|
+
serviceItem.operator_details[7] &&
|
|
141
|
+
serviceItem.operator_details[7],
|
|
142
142
|
)[2]
|
|
143
|
-
]
|
|
143
|
+
],
|
|
144
144
|
).toFixed(1)
|
|
145
145
|
: 0
|
|
146
146
|
}
|
|
@@ -149,28 +149,28 @@ const RatingHover: React.FC<RatingHoverProps> = ({
|
|
|
149
149
|
/>
|
|
150
150
|
<RatingItem
|
|
151
151
|
rating={
|
|
152
|
-
serviceItem.operator_details[
|
|
153
|
-
serviceItem.operator_details[
|
|
152
|
+
serviceItem.operator_details[7] &&
|
|
153
|
+
serviceItem.operator_details[7][
|
|
154
154
|
Object.keys(
|
|
155
|
-
serviceItem.operator_details[
|
|
156
|
-
serviceItem.operator_details[
|
|
155
|
+
serviceItem.operator_details[7] &&
|
|
156
|
+
serviceItem.operator_details[7],
|
|
157
157
|
)[3]
|
|
158
158
|
] &&
|
|
159
159
|
parseFloat(
|
|
160
|
-
serviceItem.operator_details[
|
|
160
|
+
serviceItem.operator_details[7][
|
|
161
161
|
Object.keys(
|
|
162
|
-
serviceItem.operator_details[
|
|
163
|
-
serviceItem.operator_details[
|
|
162
|
+
serviceItem.operator_details[7] &&
|
|
163
|
+
serviceItem.operator_details[7],
|
|
164
164
|
)[3]
|
|
165
|
-
]
|
|
165
|
+
],
|
|
166
166
|
).toFixed(1)
|
|
167
167
|
? +parseFloat(
|
|
168
|
-
serviceItem.operator_details[
|
|
168
|
+
serviceItem.operator_details[7][
|
|
169
169
|
Object.keys(
|
|
170
|
-
serviceItem.operator_details[
|
|
171
|
-
serviceItem.operator_details[
|
|
170
|
+
serviceItem.operator_details[7] &&
|
|
171
|
+
serviceItem.operator_details[7],
|
|
172
172
|
)[3]
|
|
173
|
-
]
|
|
173
|
+
],
|
|
174
174
|
).toFixed(1)
|
|
175
175
|
: 0
|
|
176
176
|
}
|
|
@@ -181,14 +181,14 @@ const RatingHover: React.FC<RatingHoverProps> = ({
|
|
|
181
181
|
|
|
182
182
|
{/* Footer */}
|
|
183
183
|
<div
|
|
184
|
-
className="px-
|
|
184
|
+
className="px-3 py-2 text-center text-[12px] font9 text-wrap"
|
|
185
185
|
style={{
|
|
186
186
|
backgroundColor: isSoldOut ? "#f5f5f5" : colors.ratingBottomColor,
|
|
187
187
|
color: isSoldOut ? "#c0c0c1" : "#ff8f45",
|
|
188
188
|
}}
|
|
189
189
|
>
|
|
190
190
|
{`${translation?.ratingMouseOverCalculationText} ${
|
|
191
|
-
Object.values(serviceItem.operator_details)[
|
|
191
|
+
Object.values(serviceItem.operator_details)[6]
|
|
192
192
|
} ${translation?.ratingMouseOverCalculationUsers}`}
|
|
193
193
|
</div>
|
|
194
194
|
</div>
|