@salla.sa/twilight-components 2.14.239 → 2.14.240
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/cjs/{app-globals-DbdvvtOW.js → app-globals-1XGeqf3w.js} +3 -3
- package/dist/cjs/{app-globals-DbdvvtOW.js.map → app-globals-1XGeqf3w.js.map} +1 -1
- package/dist/cjs/{index-BDdHgq9_.js → index-CsWMbEp_.js} +4 -4
- package/dist/cjs/{index-BDdHgq9_.js.map → index-CsWMbEp_.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-accordion-body.cjs.entry.js +1 -1
- package/dist/cjs/salla-accordion-head.cjs.entry.js +1 -1
- package/dist/cjs/salla-accordion.cjs.entry.js +1 -1
- package/dist/cjs/salla-add-product-button_51.cjs.entry.js +1 -1
- package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
- package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
- package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
- package/dist/cjs/salla-booking-field_2.cjs.entry.js +1 -1
- package/dist/cjs/salla-cart-item-offers.cjs.entry.js +1 -1
- package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js +1 -1
- package/dist/cjs/salla-installment.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-program.cjs.entry.js +1 -1
- package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
- package/dist/cjs/salla-notification-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
- package/dist/cjs/salla-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
- package/dist/cjs/salla-orders.cjs.entry.js +1 -1
- package/dist/cjs/salla-payments.cjs.entry.js +1 -1
- package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
- package/dist/cjs/salla-product-options.cjs.entry.js +1 -1
- package/dist/cjs/salla-review-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-reviews-page.cjs.entry.js +1 -1
- package/dist/cjs/salla-reviews.cjs.entry.js +1 -1
- package/dist/cjs/salla-social.cjs.entry.js +1 -1
- package/dist/cjs/salla-tiered-offer.cjs.entry.js +23 -10
- package/dist/cjs/salla-tiered-offer.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-tiered-offer.entry.cjs.js.map +1 -1
- package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/salla-verify.cjs.entry.js +1 -1
- package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/collection/components/salla-tiered-offer/salla-tiered-offer.js +22 -9
- package/dist/collection/components/salla-tiered-offer/salla-tiered-offer.js.map +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/salla-tiered-offer.js +22 -9
- package/dist/components/salla-tiered-offer.js.map +1 -1
- package/dist/esm/{app-globals-Db6Lb5QT.js → app-globals-DfNDI-uR.js} +3 -3
- package/dist/esm/{app-globals-Db6Lb5QT.js.map → app-globals-DfNDI-uR.js.map} +1 -1
- package/dist/esm/{index-Dxu9oA9K.js → index-86S6hMF9.js} +4 -4
- package/dist/esm/{index-Dxu9oA9K.js.map → index-86S6hMF9.js.map} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/salla-accordion-body.entry.js +1 -1
- package/dist/esm/salla-accordion-head.entry.js +1 -1
- package/dist/esm/salla-accordion.entry.js +1 -1
- package/dist/esm/salla-add-product-button_51.entry.js +1 -1
- package/dist/esm/salla-advertisement.entry.js +1 -1
- package/dist/esm/salla-app-install-alert.entry.js +1 -1
- package/dist/esm/salla-apps-icons.entry.js +1 -1
- package/dist/esm/salla-booking-field_2.entry.js +1 -1
- package/dist/esm/salla-cart-item-offers.entry.js +1 -1
- package/dist/esm/salla-conditional-offer.entry.js +1 -1
- package/dist/esm/salla-contacts.entry.js +1 -1
- package/dist/esm/salla-filters-widget.entry.js +1 -1
- package/dist/esm/salla-filters.entry.js +1 -1
- package/dist/esm/salla-installment.entry.js +1 -1
- package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm/salla-loyalty-program.entry.js +1 -1
- package/dist/esm/salla-metadata.entry.js +1 -1
- package/dist/esm/salla-notification-item.entry.js +1 -1
- package/dist/esm/salla-notifications.entry.js +1 -1
- package/dist/esm/salla-offer.entry.js +1 -1
- package/dist/esm/salla-order-summary.entry.js +1 -1
- package/dist/esm/salla-orders.entry.js +1 -1
- package/dist/esm/salla-payments.entry.js +1 -1
- package/dist/esm/salla-price-range.entry.js +1 -1
- package/dist/esm/salla-product-options.entry.js +1 -1
- package/dist/esm/salla-review-card.entry.js +1 -1
- package/dist/esm/salla-reviews-page.entry.js +1 -1
- package/dist/esm/salla-reviews.entry.js +1 -1
- package/dist/esm/salla-social.entry.js +1 -1
- package/dist/esm/salla-tiered-offer.entry.js +23 -10
- package/dist/esm/salla-tiered-offer.entry.js.map +1 -1
- package/dist/esm/salla-tooltip.entry.js +1 -1
- package/dist/esm/salla-verify.entry.js +1 -1
- package/dist/esm/salla-wallet.entry.js +1 -1
- package/dist/esm/twilight.js +3 -3
- package/dist/esm-es5/{app-globals-Db6Lb5QT.js → app-globals-DfNDI-uR.js} +2 -2
- package/dist/esm-es5/{app-globals-Db6Lb5QT.js.map → app-globals-DfNDI-uR.js.map} +1 -1
- package/dist/esm-es5/{index-Dxu9oA9K.js → index-86S6hMF9.js} +3 -3
- package/dist/esm-es5/{index-Dxu9oA9K.js.map → index-86S6hMF9.js.map} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/salla-accordion-body.entry.js +1 -1
- package/dist/esm-es5/salla-accordion-head.entry.js +1 -1
- package/dist/esm-es5/salla-accordion.entry.js +1 -1
- package/dist/esm-es5/salla-add-product-button_51.entry.js +1 -1
- package/dist/esm-es5/salla-advertisement.entry.js +1 -1
- package/dist/esm-es5/salla-app-install-alert.entry.js +1 -1
- package/dist/esm-es5/salla-apps-icons.entry.js +1 -1
- package/dist/esm-es5/salla-booking-field_2.entry.js +1 -1
- package/dist/esm-es5/salla-cart-item-offers.entry.js +1 -1
- package/dist/esm-es5/salla-conditional-offer.entry.js +1 -1
- package/dist/esm-es5/salla-contacts.entry.js +1 -1
- package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
- package/dist/esm-es5/salla-filters.entry.js +1 -1
- package/dist/esm-es5/salla-installment.entry.js +1 -1
- package/dist/esm-es5/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm-es5/salla-loyalty-program.entry.js +2 -2
- package/dist/esm-es5/salla-metadata.entry.js +1 -1
- package/dist/esm-es5/salla-notification-item.entry.js +1 -1
- package/dist/esm-es5/salla-notifications.entry.js +1 -1
- package/dist/esm-es5/salla-offer.entry.js +1 -1
- package/dist/esm-es5/salla-order-summary.entry.js +1 -1
- package/dist/esm-es5/salla-orders.entry.js +1 -1
- package/dist/esm-es5/salla-payments.entry.js +1 -1
- package/dist/esm-es5/salla-price-range.entry.js +1 -1
- package/dist/esm-es5/salla-product-options.entry.js +1 -1
- package/dist/esm-es5/salla-review-card.entry.js +1 -1
- package/dist/esm-es5/salla-reviews-page.entry.js +1 -1
- package/dist/esm-es5/salla-reviews.entry.js +1 -1
- package/dist/esm-es5/salla-social.entry.js +1 -1
- package/dist/esm-es5/salla-tiered-offer.entry.js +2 -2
- package/dist/esm-es5/salla-tiered-offer.entry.js.map +1 -1
- package/dist/esm-es5/salla-tooltip.entry.js +1 -1
- package/dist/esm-es5/salla-verify.entry.js +1 -1
- package/dist/esm-es5/salla-wallet.entry.js +1 -1
- package/dist/esm-es5/twilight.js +1 -1
- package/dist/twilight/{p-67c709ff.entry.js → p-069073a1.entry.js} +2 -2
- package/dist/twilight/{p-28c53329.system.entry.js → p-0d143681.system.entry.js} +2 -2
- package/dist/twilight/{p-4bc9089d.entry.js → p-0f85b7f3.entry.js} +2 -2
- package/dist/twilight/{p-bdf35a25.system.entry.js → p-135ed6e0.system.entry.js} +2 -2
- package/dist/twilight/{p-f8352357.entry.js → p-20eafe54.entry.js} +2 -2
- package/dist/twilight/{p-bd89e063.system.entry.js → p-2235ce4f.system.entry.js} +2 -2
- package/dist/twilight/p-287eb315.entry.js +5 -0
- package/dist/twilight/{p-67d370cb.entry.js → p-2c9e6255.entry.js} +2 -2
- package/dist/twilight/{p-7167cda0.system.entry.js → p-32c96ded.system.entry.js} +2 -2
- package/dist/twilight/{p-ad1bfcf3.entry.js → p-355b3c7c.entry.js} +7 -7
- package/dist/twilight/{p-331c6ed5.system.entry.js → p-36a00ea7.system.entry.js} +2 -2
- package/dist/twilight/{p-3b21bc63.entry.js → p-3b0105e7.entry.js} +2 -2
- package/dist/twilight/{p-5ee8e3ee.system.entry.js → p-3e6a3899.system.entry.js} +2 -2
- package/dist/twilight/{p-c24b8585.system.entry.js → p-3ee96333.system.entry.js} +2 -2
- package/dist/twilight/{p-cf060e6c.system.entry.js → p-48a9be96.system.entry.js} +2 -2
- package/dist/twilight/{p-3917911e.system.entry.js → p-4c69b8db.system.entry.js} +2 -2
- package/dist/twilight/{p-2b6b8c81.entry.js → p-4f069a7a.entry.js} +2 -2
- package/dist/twilight/{p-37ef34af.entry.js → p-4fcfcce9.entry.js} +2 -2
- package/dist/twilight/{p-DNbI4S_I.js → p-5M9uHOyt.js} +2 -2
- package/dist/twilight/{p-DNbI4S_I.js.map → p-5M9uHOyt.js.map} +1 -1
- package/dist/twilight/{p-c698caa6.system.entry.js → p-5a36dbaf.system.entry.js} +2 -2
- package/dist/twilight/{p-5eb4592c.entry.js → p-5daaab56.entry.js} +2 -2
- package/dist/twilight/{p-529f23c6.system.entry.js → p-604025f9.system.entry.js} +2 -2
- package/dist/twilight/{p-462c7109.system.entry.js → p-641a01a6.system.entry.js} +2 -2
- package/dist/twilight/{p-a642fb2d.system.entry.js → p-6751f5ae.system.entry.js} +3 -3
- package/dist/twilight/{p-411b87ef.entry.js → p-683aecb9.entry.js} +2 -2
- package/dist/twilight/{p-cab02e98.system.entry.js → p-697cf606.system.entry.js} +2 -2
- package/dist/twilight/{p-4437951d.system.entry.js → p-6b241620.system.entry.js} +2 -2
- package/dist/twilight/{p-DjvOm_NU.system.js.map → p-7059GOh_.system.js.map} +1 -1
- package/dist/twilight/p-72ce234e.system.entry.js +5 -0
- package/dist/twilight/{p-b24fe018.system.entry.js → p-76e916b0.system.entry.js} +2 -2
- package/dist/twilight/{p-eb410142.entry.js → p-7aff9c5c.entry.js} +2 -2
- package/dist/twilight/{p-4659c645.entry.js → p-8208e1c9.entry.js} +2 -2
- package/dist/twilight/{p-Dxu9oA9K.js → p-86S6hMF9.js} +3 -3
- package/dist/twilight/{p-Dxu9oA9K.js.map → p-86S6hMF9.js.map} +1 -1
- package/dist/twilight/{p-cc5e1937.system.entry.js → p-87ac96e9.system.entry.js} +2 -2
- package/dist/twilight/{p-ab42e437.entry.js → p-893b6070.entry.js} +2 -2
- package/dist/twilight/p-8955eccb.system.entry.js +5 -0
- package/dist/twilight/p-8955eccb.system.entry.js.map +1 -0
- package/dist/twilight/{p-a3cd1fad.entry.js → p-8d5c5550.entry.js} +2 -2
- package/dist/twilight/{p-c695b1d9.system.entry.js → p-8e5cf738.system.entry.js} +2 -2
- package/dist/twilight/{p-3f455e4b.entry.js → p-9013546e.entry.js} +2 -2
- package/dist/twilight/{p-b854bd23.entry.js → p-961929e2.entry.js} +2 -2
- package/dist/twilight/{p-11fe6afc.entry.js → p-99607c5a.entry.js} +2 -2
- package/dist/twilight/{p-63f5db56.system.entry.js → p-9a002229.system.entry.js} +2 -2
- package/dist/twilight/{p-64128588.entry.js → p-9a54ade1.entry.js} +2 -2
- package/dist/twilight/p-9a54ade1.entry.js.map +1 -0
- package/dist/twilight/{p-b3451de7.system.entry.js → p-9f93237a.system.entry.js} +2 -2
- package/dist/twilight/{p-Dzux6KMv.system.js.map → p-B0THOn7q.system.js.map} +1 -1
- package/dist/twilight/{p-E94lGW7o.system.js.map → p-B3bBc5hP.system.js.map} +1 -1
- package/dist/twilight/{p-DdBJaRrc.system.js.map → p-B4Hhvetc.system.js.map} +1 -1
- package/dist/twilight/{p-NfM7SGbO.system.js.map → p-B6wyl2f0.system.js.map} +1 -1
- package/dist/twilight/{p-DyN-KAxy.system.js.map → p-BILc9Pci.system.js.map} +1 -1
- package/dist/twilight/{p-CwLRhDos.system.js.map → p-BO4jwLM4.system.js.map} +1 -1
- package/dist/twilight/{p-D1zqgG9Y.system.js.map → p-BOt1gZ9d.system.js.map} +1 -1
- package/dist/twilight/{p-DdyaaxwR.system.js.map → p-BPx4tWNZ.system.js.map} +1 -1
- package/dist/twilight/{p-dQTzJHLh.system.js.map → p-Bk2ADRk4.system.js.map} +1 -1
- package/dist/twilight/{p-DST6iM3C.system.js.map → p-BlSq4Fq7.system.js.map} +1 -1
- package/dist/twilight/{p-Cr6XPQwf.system.js.map → p-BtFWFs1V.system.js.map} +1 -1
- package/dist/twilight/{p-Dlx1ErOi.system.js.map → p-C2PGa50y.system.js.map} +1 -1
- package/dist/twilight/{p-D2DsyAg6.system.js.map → p-C6nkzTvN.system.js.map} +1 -1
- package/dist/twilight/{p-CRhaoLbg.system.js.map → p-CKO3Xuss.system.js.map} +1 -1
- package/dist/twilight/{p-BbWNHcOU.system.js → p-COZuK4m7.system.js} +2 -2
- package/dist/twilight/{p-BbWNHcOU.system.js.map → p-COZuK4m7.system.js.map} +1 -1
- package/dist/twilight/{p-Cww7QFEI.system.js.map → p-CQCe9z_M.system.js.map} +1 -1
- package/dist/twilight/{p-BUwki4wf.system.js.map → p-CY2AazKj.system.js.map} +1 -1
- package/dist/twilight/{p-Cym5H1Z6.system.js.map → p-CpKEc-QE.system.js.map} +1 -1
- package/dist/twilight/{p-C1Uuu_Iz.system.js.map → p-Cq9YCvnE.system.js.map} +1 -1
- package/dist/twilight/{p-B6bpYnnP.system.js.map → p-CwyhVjVS.system.js.map} +1 -1
- package/dist/twilight/{p-gKm1xaeh.system.js.map → p-Cx16iaWu.system.js.map} +1 -1
- package/dist/twilight/{p-CkkLk7Pj.system.js.map → p-DMoD6Yhr.system.js.map} +1 -1
- package/dist/twilight/{p-BV4kErtd.system.js → p-DSJ3vZFd.system.js} +3 -3
- package/dist/twilight/{p-BV4kErtd.system.js.map → p-DSJ3vZFd.system.js.map} +1 -1
- package/dist/twilight/{p-Cv46yWRf.system.js.map → p-DXdrYrki.system.js.map} +1 -1
- package/dist/twilight/{p-BDyUK9ox.system.js.map → p-Dbg3u7PY.system.js.map} +1 -1
- package/dist/twilight/{p-CFR20olG.system.js.map → p-DcvbCz37.system.js.map} +1 -1
- package/dist/twilight/{p-_oBuExIe.system.js.map → p-EjPVtywF.system.js.map} +1 -1
- package/dist/twilight/{p-DIHPMktR.system.js → p-LnIc2g0K.system.js} +2 -2
- package/dist/twilight/{p-DIHPMktR.system.js.map → p-LnIc2g0K.system.js.map} +1 -1
- package/dist/twilight/{p-DRACrmyE.system.js.map → p-PGo9cpeC.system.js.map} +1 -1
- package/dist/twilight/{p-DNQHLxWG.system.js.map → p-X0bHG-St.system.js.map} +1 -1
- package/dist/twilight/{p-Dl5noMXr.system.js.map → p-X2WECLtP.system.js.map} +1 -1
- package/dist/twilight/{p-DxmXbXHz.system.js.map → p-_nPo7VqN.system.js.map} +1 -1
- package/dist/twilight/{p-efcb6ca0.entry.js → p-a74a0991.entry.js} +2 -2
- package/dist/twilight/{p-01aded94.system.entry.js → p-b00a767e.system.entry.js} +2 -2
- package/dist/twilight/{p-554092d9.system.entry.js → p-b02601bf.system.entry.js} +2 -2
- package/dist/twilight/{p-e651f83f.system.entry.js → p-b0c0b3d6.system.entry.js} +2 -2
- package/dist/twilight/{p-2d41b312.entry.js → p-b3cc4924.entry.js} +2 -2
- package/dist/twilight/{p-3971d884.system.entry.js → p-b3fdd54c.system.entry.js} +2 -2
- package/dist/twilight/{p-142c7169.entry.js → p-b5e2eaf3.entry.js} +2 -2
- package/dist/twilight/{p-7632d96b.system.entry.js → p-bac7b53e.system.entry.js} +2 -2
- package/dist/twilight/{p-ea58fa22.entry.js → p-bbb519fe.entry.js} +2 -2
- package/dist/twilight/{p-03f98d2f.system.entry.js → p-bd36d804.system.entry.js} +2 -2
- package/dist/twilight/{p-12198e85.system.entry.js → p-c5834a66.system.entry.js} +2 -2
- package/dist/twilight/{p-816097f4.entry.js → p-cc790dba.entry.js} +2 -2
- package/dist/twilight/{p-f36b71e2.system.entry.js → p-cd66c46a.system.entry.js} +2 -2
- package/dist/twilight/{p-f6a84618.entry.js → p-ce0e62a8.entry.js} +2 -2
- package/dist/twilight/{p-06af0212.entry.js → p-d61771bf.entry.js} +2 -2
- package/dist/twilight/{p-b5838794.entry.js → p-d78444f7.entry.js} +2 -2
- package/dist/twilight/{p-6f2cf177.entry.js → p-d9107be8.entry.js} +2 -2
- package/dist/twilight/{p-5b5a6101.entry.js → p-deb0b4e3.entry.js} +2 -2
- package/dist/twilight/{p-099c2ddf.entry.js → p-e0c40274.entry.js} +2 -2
- package/dist/twilight/{p-788980fa.entry.js → p-e30ffd83.entry.js} +2 -2
- package/dist/twilight/{p-9110491f.entry.js → p-e64c0047.entry.js} +2 -2
- package/dist/twilight/{p-1b84dff7.system.entry.js → p-f21d1ba7.system.entry.js} +2 -2
- package/dist/twilight/{p-4c9e43fe.system.entry.js → p-f2e9ad0f.system.entry.js} +2 -2
- package/dist/twilight/{p-07f023da.entry.js → p-f9cf641b.entry.js} +2 -2
- package/dist/twilight/{p-79dab8b8.system.entry.js → p-ff6b808f.system.entry.js} +2 -2
- package/dist/twilight/{p-D5r3ATtc.system.js.map → p-m3XPAerg.system.js.map} +1 -1
- package/dist/twilight/{p-Cih6sizk.system.js.map → p-ngc9di4P.system.js.map} +1 -1
- package/dist/twilight/p-trTja1pl.system.js.map +1 -0
- package/dist/twilight/{p-BuTOc-d8.system.js.map → p-yrFyBD8V.system.js.map} +1 -1
- package/dist/twilight/salla-tiered-offer.entry.esm.js.map +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/twilight/twilight.js +1 -1
- package/package.json +5 -5
- package/dist/twilight/p-5273af20.entry.js +0 -5
- package/dist/twilight/p-64128588.entry.js.map +0 -1
- package/dist/twilight/p-STaxwEDu.system.js.map +0 -1
- package/dist/twilight/p-b4b32523.system.entry.js +0 -5
- package/dist/twilight/p-bf84ef7e.system.entry.js +0 -5
- package/dist/twilight/p-bf84ef7e.system.entry.js.map +0 -1
- /package/dist/twilight/{p-67c709ff.entry.js.map → p-069073a1.entry.js.map} +0 -0
- /package/dist/twilight/{p-28c53329.system.entry.js.map → p-0d143681.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-4bc9089d.entry.js.map → p-0f85b7f3.entry.js.map} +0 -0
- /package/dist/twilight/{p-bdf35a25.system.entry.js.map → p-135ed6e0.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-f8352357.entry.js.map → p-20eafe54.entry.js.map} +0 -0
- /package/dist/twilight/{p-bd89e063.system.entry.js.map → p-2235ce4f.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-5273af20.entry.js.map → p-287eb315.entry.js.map} +0 -0
- /package/dist/twilight/{p-67d370cb.entry.js.map → p-2c9e6255.entry.js.map} +0 -0
- /package/dist/twilight/{p-7167cda0.system.entry.js.map → p-32c96ded.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-ad1bfcf3.entry.js.map → p-355b3c7c.entry.js.map} +0 -0
- /package/dist/twilight/{p-331c6ed5.system.entry.js.map → p-36a00ea7.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-3b21bc63.entry.js.map → p-3b0105e7.entry.js.map} +0 -0
- /package/dist/twilight/{p-5ee8e3ee.system.entry.js.map → p-3e6a3899.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-c24b8585.system.entry.js.map → p-3ee96333.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-cf060e6c.system.entry.js.map → p-48a9be96.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-3917911e.system.entry.js.map → p-4c69b8db.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-2b6b8c81.entry.js.map → p-4f069a7a.entry.js.map} +0 -0
- /package/dist/twilight/{p-37ef34af.entry.js.map → p-4fcfcce9.entry.js.map} +0 -0
- /package/dist/twilight/{p-c698caa6.system.entry.js.map → p-5a36dbaf.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-5eb4592c.entry.js.map → p-5daaab56.entry.js.map} +0 -0
- /package/dist/twilight/{p-529f23c6.system.entry.js.map → p-604025f9.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-462c7109.system.entry.js.map → p-641a01a6.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-a642fb2d.system.entry.js.map → p-6751f5ae.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-411b87ef.entry.js.map → p-683aecb9.entry.js.map} +0 -0
- /package/dist/twilight/{p-cab02e98.system.entry.js.map → p-697cf606.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-4437951d.system.entry.js.map → p-6b241620.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-b4b32523.system.entry.js.map → p-72ce234e.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-b24fe018.system.entry.js.map → p-76e916b0.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-eb410142.entry.js.map → p-7aff9c5c.entry.js.map} +0 -0
- /package/dist/twilight/{p-4659c645.entry.js.map → p-8208e1c9.entry.js.map} +0 -0
- /package/dist/twilight/{p-cc5e1937.system.entry.js.map → p-87ac96e9.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-ab42e437.entry.js.map → p-893b6070.entry.js.map} +0 -0
- /package/dist/twilight/{p-a3cd1fad.entry.js.map → p-8d5c5550.entry.js.map} +0 -0
- /package/dist/twilight/{p-c695b1d9.system.entry.js.map → p-8e5cf738.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-3f455e4b.entry.js.map → p-9013546e.entry.js.map} +0 -0
- /package/dist/twilight/{p-b854bd23.entry.js.map → p-961929e2.entry.js.map} +0 -0
- /package/dist/twilight/{p-11fe6afc.entry.js.map → p-99607c5a.entry.js.map} +0 -0
- /package/dist/twilight/{p-63f5db56.system.entry.js.map → p-9a002229.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-b3451de7.system.entry.js.map → p-9f93237a.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-efcb6ca0.entry.js.map → p-a74a0991.entry.js.map} +0 -0
- /package/dist/twilight/{p-01aded94.system.entry.js.map → p-b00a767e.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-554092d9.system.entry.js.map → p-b02601bf.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-e651f83f.system.entry.js.map → p-b0c0b3d6.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-2d41b312.entry.js.map → p-b3cc4924.entry.js.map} +0 -0
- /package/dist/twilight/{p-3971d884.system.entry.js.map → p-b3fdd54c.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-142c7169.entry.js.map → p-b5e2eaf3.entry.js.map} +0 -0
- /package/dist/twilight/{p-7632d96b.system.entry.js.map → p-bac7b53e.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-ea58fa22.entry.js.map → p-bbb519fe.entry.js.map} +0 -0
- /package/dist/twilight/{p-03f98d2f.system.entry.js.map → p-bd36d804.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-12198e85.system.entry.js.map → p-c5834a66.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-816097f4.entry.js.map → p-cc790dba.entry.js.map} +0 -0
- /package/dist/twilight/{p-f36b71e2.system.entry.js.map → p-cd66c46a.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-f6a84618.entry.js.map → p-ce0e62a8.entry.js.map} +0 -0
- /package/dist/twilight/{p-06af0212.entry.js.map → p-d61771bf.entry.js.map} +0 -0
- /package/dist/twilight/{p-b5838794.entry.js.map → p-d78444f7.entry.js.map} +0 -0
- /package/dist/twilight/{p-6f2cf177.entry.js.map → p-d9107be8.entry.js.map} +0 -0
- /package/dist/twilight/{p-5b5a6101.entry.js.map → p-deb0b4e3.entry.js.map} +0 -0
- /package/dist/twilight/{p-099c2ddf.entry.js.map → p-e0c40274.entry.js.map} +0 -0
- /package/dist/twilight/{p-788980fa.entry.js.map → p-e30ffd83.entry.js.map} +0 -0
- /package/dist/twilight/{p-9110491f.entry.js.map → p-e64c0047.entry.js.map} +0 -0
- /package/dist/twilight/{p-1b84dff7.system.entry.js.map → p-f21d1ba7.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-4c9e43fe.system.entry.js.map → p-f2e9ad0f.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-07f023da.entry.js.map → p-f9cf641b.entry.js.map} +0 -0
- /package/dist/twilight/{p-79dab8b8.system.entry.js.map → p-ff6b808f.system.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salla-tiered-offer.entry.cjs.js","sources":["src/components/salla-tiered-offer/interfaces.ts","src/components/salla-tiered-offer/constants.ts","src/components/salla-tiered-offer/utils.ts","src/components/salla-tiered-offer/salla-tiered-offer.scss?tag=salla-tiered-offer","src/components/salla-tiered-offer/salla-tiered-offer.tsx"],"sourcesContent":["export enum DiscountType {\n PERCENTAGE = \"percentage\",\n FIXED = \"fixed\",\n}\n\n\nexport interface Discount {\n name?: string;\n type?: DiscountType;\n value?: number;\n min_spend?: number;\n}\n\nexport interface TieredOfferDetails {\n based_on?: string;\n ends_at?: number;\n start_value?: number;\n end_value?: number;\n current_value?: number;\n discounts?: Discount[];\n with_current_cart?: boolean;\n applied_with_coupon?: boolean;\n}\n\nexport interface Offer {\n id?: number;\n type?: string;\n title?: string;\n description?: string;\n details?: TieredOfferDetails | null;\n}\n\nexport interface TieredOfferTier {\n name: string;\n tier_name: string;\n discount: string;\n icon: string;\n threshold: number;\n text_color?: string;\n index: number;\n}\n\nexport interface TieredOfferData {\n current_tier: string;\n tiers: TieredOfferTier[];\n}\n\nexport interface TieredOfferConfig {\n staticIcons: string[];\n staticColors: string[];\n}\n","import { TieredOfferConfig } from './interfaces';\nimport StarIcon from '../../assets/svg/star-rounded.svg';\nimport StarsIcon from '../../assets/svg/stars.svg';\nimport GoldIcon from '../../assets/svg/gold.svg';\nimport DiamondIcon from '../../assets/svg/diamond-02.svg';\n\nexport const TIERED_OFFER_CONFIG: TieredOfferConfig = {\n staticIcons: [StarIcon, StarsIcon, GoldIcon, DiamondIcon],\n staticColors: ['#993018', '#444444', '#D18F36', '#315F9C']\n};","import { TieredOfferTier } from './interfaces';\n\nexport class TierUtils {\n /**\n * Find tier by index\n */\n static findTierByIndex(tiers: TieredOfferTier[], index: number): TieredOfferTier | null {\n return tiers.find(tier => tier.index === index) || null;\n }\n\n /**\n * Find tier by tier name\n */\n static findTierByName(tiers: TieredOfferTier[], tierName: string): TieredOfferTier | null {\n return tiers.find(tier => tier.tier_name === tierName) || null;\n }\n\n /**\n * Get tier name by index\n */\n static getTierNameByIndex(tiers: TieredOfferTier[], index: number): string | undefined {\n return this.findTierByIndex(tiers, index)?.tier_name;\n }\n\n /**\n * Find current tier index based on current value\n */\n static findCurrentTierIndex(currentValue: number, tiers: TieredOfferTier[]): number {\n if (!tiers) return 0;\n \n for (let i = tiers.length - 1; i >= 0; i--) {\n if (currentValue >= tiers[i].threshold) {\n return tiers[i].index;\n }\n }\n return 0;\n }\n}","\n// SVG styling for milestone icons \n.s-tiered-offer-milestone-icon {\n svg {\n color: currentColor;\n \n path {\n stroke: currentColor;\n fill: none;\n }\n }\n \n // Active and completed states - fill the star icon, keep others as stroke\n &.s-tiered-offer-milestone-active,\n &.s-tiered-offer-milestone-completed {\n svg {\n path {\n fill: currentColor;\n stroke: none;\n }\n \n // For stroke-based icons (crown, stars, diamond) \n &[fill=\"none\"] path {\n fill: none;\n stroke: currentColor;\n }\n }\n }\n}\n\n// RTL Support \n[dir=\"rtl\"] {\n .s-tiered-offer-progress-wrapper {\n .s-tiered-offer-progress-bg {\n transform: scaleX(-1);\n }\n \n .s-tiered-offer-progress-fill {\n transform: scaleX(-1);\n left: auto;\n }\n }\n\n .flip-x {\n transform: scaleX(-1);\n }\n}\n","import { Component, Host, h, State } from '@stencil/core';\nimport { Offer, TieredOfferTier, TieredOfferData, DiscountType } from './interfaces';\nimport { TIERED_OFFER_CONFIG } from './constants';\nimport { TierUtils } from './utils';\n\n@Component({\n tag: 'salla-tiered-offer',\n styleUrl: 'salla-tiered-offer.scss',\n})\nexport class SallaTieredOffer {\n\n constructor() {\n salla.lang.onLoaded(() => {\n this.loyaltyProgramText = salla.lang.get('blocks.tiered_offer.program_title');\n this.currentTierText = salla.lang.get('blocks.tiered_offer.current_tier');\n this.discountText = salla.lang.get('blocks.tiered_offer.discount');\n this.benefitText = salla.lang.get('blocks.tiered_offer.tier_description');\n });\n }\n\n\n @State() tieredOfferData: TieredOfferData;\n @State() apiOfferData: Offer;\n @State() currentTierIndex: number = 0;\n @State() currentTier: string;\n @State() activeTabTier: string;\n\n @State() canRender: boolean = false;\n @State() isLoading: boolean = false;\n\n // Language strings\n @State() loyaltyProgramText: string;\n @State() currentTierText: string;\n @State() discountText: string;\n @State() benefitText: string;\n\n async componentWillLoad() {\n try {\n await salla.onReady();\n \n if (!this.checkFeatureEnabled()) {\n return;\n }\n \n if (!this.checkCartExists()) {\n return;\n }\n \n this.isLoading = true;\n \n const offerData = await this.fetchTieredOfferData();\n if (!offerData) {\n return;\n }\n \n this.initializeComponent(offerData);\n \n } catch (error) {\n this.canRender = false;\n salla.logger.warn('salla-tiered-offer:: ', error);\n } finally {\n this.isLoading = false;\n }\n }\n \n private checkFeatureEnabled(): boolean {\n return salla.config.get('store.features')?.includes('tiered-offer');\n }\n \n private checkCartExists(): boolean {\n return !!salla.storage.get(\"cart\")?.summary?.count;\n }\n \n private validateCouponCompatibility(offerData: Offer, cartCoupon?: any): boolean {\n // If coupon is applied but offer doesn't support coupons, widget should be hidden\n return !(cartCoupon && !offerData.details?.applied_with_coupon);\n }\n \n private async fetchTieredOfferData(): Promise<Offer | null> {\n try {\n const { data }: { data: Offer[] } = await salla.api.cart.offers();\n const tieredOffer = data.find(offer => offer.type === \"tiered_offer\");\n \n if (!tieredOffer) {\n return null;\n }\n \n // Hide widget if coupon is applied and offer doesn't support coupons\n if (!this.validateCouponCompatibility(tieredOffer, salla.storage.get(\"cart\")?.coupon)) {\n this.canRender = false;\n return null;\n }\n \n return tieredOffer;\n } catch (error) {\n throw error;\n }\n }\n \n private initializeComponent(apiOfferData: Offer): void {\n this.apiOfferData = apiOfferData;\n \n // Map tiered details data to component format\n this.tieredOfferData = this.mapApiDataToTiers(this.apiOfferData);\n this.loyaltyProgramText = this.apiOfferData.title || this.loyaltyProgramText;\n \n // Find current tier index based on current_value from API\n const currentValue = this.apiOfferData.details?.current_value || 0;\n const currentTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Only render if user has reached at least the first tier\n if (currentTierIndex === 0) {\n this.canRender = false;\n return;\n }\n \n this.currentTierIndex = currentTierIndex;\n this.currentTier = TierUtils.getTierNameByIndex(this.tieredOfferData.tiers, currentTierIndex);\n this.activeTabTier = this.currentTier;\n this.canRender = true;\n }\n\n componentDidLoad() {\n salla.event.on(\"cart::updated\", (updatedCart) => {\n this.updateOfferValues(updatedCart);\n });\n }\n\n private mapApiDataToTiers(apiData: Offer): TieredOfferData {\n // Sort discounts by min_spend to create proper tier order\n const sortedDiscounts = [...apiData.details.discounts].sort((a, b) => a.min_spend - b.min_spend);\n\n const tiers: TieredOfferTier[] = sortedDiscounts.map((discount, index) => ({\n name: discount.name, \n tier_name: discount.name, \n discount: discount.type === DiscountType.PERCENTAGE ? `${salla.helpers.number(discount.value)}%` : salla.money(discount.value),\n icon: TIERED_OFFER_CONFIG.staticIcons[index] || TIERED_OFFER_CONFIG.staticIcons[0], \n threshold: discount.min_spend,\n text_color: TIERED_OFFER_CONFIG.staticColors[index], \n index: index + 1\n }));\n\n return {\n current_tier: TierUtils.getTierNameByIndex(tiers, this.findCurrentTierIndex(apiData.details.current_value, tiers)),\n tiers\n };\n }\n\n private findCurrentTierIndex(currentValue: number, tiers = this.tieredOfferData?.tiers): number {\n return TierUtils.findCurrentTierIndex(currentValue, tiers || []);\n }\n\n private updateOfferValues(updatedCart: { items: any[], sub_total: number, coupon?: any }) {\n if (!this.apiOfferData || !this.tieredOfferData) {\n return;\n }\n\n // Check coupon compatibility\n if (!this.validateCouponCompatibility(this.apiOfferData, updatedCart.coupon)) {\n this.canRender = false;\n return;\n }\n\n // If no coupon conflict, show widget\n this.canRender = true;\n\n // Check if this offer should update with cart changes\n if (this.apiOfferData.details?.with_current_cart === false) {\n return;\n }\n\n // Update current_value in API offer data\n const currentValue = updatedCart.sub_total;\n this.apiOfferData = {\n ...this.apiOfferData,\n details: {\n ...this.apiOfferData.details,\n current_value: currentValue\n }\n };\n\n // Update current tier based on new value\n const newTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Check if user qualifies for any tier\n if (newTierIndex === 0) {\n this.canRender = false;\n return;\n }\n\n // user qualifies show widget\n this.canRender = true;\n this.currentTierIndex = newTierIndex;\n this.currentTier = TierUtils.getTierNameByIndex(this.tieredOfferData.tiers, newTierIndex);\n \n // Update active tab if needed\n if (this.activeTabTier !== this.currentTier) {\n this.activeTabTier = this.currentTier;\n }\n }\n\n private getLoadingSkeletonView() {\n return <Host>\n <div class=\"s-tiered-offer-container\">\n <div class=\"s-tiered-offer-skeleton-wrapper\">\n <div class=\"s-tiered-offer-skeleton-title\">\n <salla-skeleton height=\"16px\" width=\"40%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-subtitle\">\n <salla-skeleton height=\"20px\" width=\"60%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-progress\">\n <salla-skeleton height=\"16px\" width=\"100%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-tabs\">\n <salla-skeleton height=\"50px\" width=\"100%\" />\n </div>\n </div>\n </div>\n </Host>\n }\n\n private getCurrentTierData(): TieredOfferTier {\n return TierUtils.findTierByIndex(this.tieredOfferData.tiers, this.currentTierIndex) || this.tieredOfferData.tiers[0];\n }\n\n private getProgressWidth(): number {\n const currentValue = this.apiOfferData.details?.current_value || 0;\n const totalTiers = this.tieredOfferData.tiers.length;\n \n // Use existing method to find current tier index (which already handles the logic)\n const currentTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Convert to 0-based index for progress calculation\n const completedTiers = currentTierIndex;\n return (completedTiers / totalTiers) * 100;\n }\n\n private handleTabClick = (tierName: string) => {\n this.activeTabTier = tierName;\n }\n \n private calculateMilestonePosition(index: number, totalTiers: number): string {\n if (totalTiers === 1) {\n return 'calc(100% - 18px)';\n }\n const milestonePercent = ((index + 1) / totalTiers) * 100;\n const offsetPercent = 8 / totalTiers;\n return `${Math.max(2, Math.min(95, milestonePercent - offsetPercent))}%`;\n }\n \n private getMilestoneStyles(tier: TieredOfferTier, index: number, totalTiers: number) {\n const isRtl = document.documentElement.dir === 'rtl';\n const adjustedPercent = this.calculateMilestonePosition(index, totalTiers);\n const alignItems = tier.name.length > 6 ? 'flex-end' : 'center';\n \n return {\n [isRtl ? 'right' : 'left']: adjustedPercent,\n alignItems,\n position: 'absolute' as const,\n transform: isRtl ? 'translateX(50%)' : 'translateX(-50%)'\n };\n }\n \n private getMilestoneIconStyles(tier: TieredOfferTier, isCurrent: boolean, isReached: boolean) {\n if (isCurrent) {\n return { color: tier.text_color };\n }\n if (isReached) {\n return { color: 'var(--color-primary)' };\n }\n return {};\n }\n \n private renderProgressBarBackground(progressWidth: number) {\n return [\n <div class=\"s-tiered-offer-progress-bg\"></div>,\n <div \n class=\"s-tiered-offer-progress-fill\"\n style={{ width: `${progressWidth}%` }}>\n </div>\n ];\n }\n \n private renderMilestoneIcon(tier: TieredOfferTier, isCurrent: boolean, isReached: boolean) {\n const iconClasses = [\n 's-tiered-offer-milestone-icon',\n isCurrent ? 's-tiered-offer-milestone-active' : '',\n isReached ? 's-tiered-offer-milestone-completed' : ''\n ].filter(Boolean).join(' ');\n \n return (\n <div \n class={iconClasses}\n style={this.getMilestoneIconStyles(tier, isCurrent, isReached)}>\n <span innerHTML={tier.icon}></span>\n </div>\n );\n }\n \n private renderMilestoneName(tier: TieredOfferTier, isCurrent: boolean) {\n return (\n <div class=\"s-tiered-offer-milestone-name\">\n {isCurrent && (\n <span style={{ color: tier.text_color }}>\n {tier.name}\n </span>\n )}\n </div>\n );\n }\n \n private renderMilestones(currentValue: number, totalTiers: number) {\n const containerClass = totalTiers === 1 \n ? 's-tiered-offer-single-milestone-justify-end' \n : 's-tiered-offer-milestones';\n \n return (\n <div class=\"s-tiered-offer-milestones-wrapper\">\n <div class={containerClass}>\n {this.tieredOfferData.tiers.map((tier, index) => {\n const isReached = currentValue >= tier.threshold;\n const isCurrent = tier.tier_name === this.currentTier;\n \n return (\n <div \n class=\"s-tiered-offer-milestone\"\n style={this.getMilestoneStyles(tier, index, totalTiers)}>\n {this.renderMilestoneIcon(tier, isCurrent, isReached)}\n {this.renderMilestoneName(tier, isCurrent)}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n private renderProgressBar() {\n const progressWidth = this.getProgressWidth();\n const totalTiers = this.tieredOfferData.tiers.length;\n const currentValue = this.apiOfferData.details?.current_value || 0;\n\n return (\n <div class=\"s-tiered-offer-progress-container\">\n <div class=\"s-tiered-offer-progress-wrapper\">\n {this.renderProgressBarBackground(progressWidth)}\n {this.renderMilestones(currentValue, totalTiers)}\n </div>\n </div>\n );\n }\n\n private renderTabs() {\n return (\n <div class=\"s-tiered-offer-tabs-container\">\n {/* Tab Headers */}\n <div class=\"s-tiered-offer-tab-headers\">\n {this.tieredOfferData.tiers.map(tier => {\n const isActive = tier.tier_name === this.activeTabTier;\n return (\n <button \n class={`s-tiered-offer-tab-header ${isActive ? 's-tiered-offer-tab-active' : ''}`}\n onClick={() => this.handleTabClick(tier.tier_name)}>\n <span>{tier.name}</span>\n </button>\n );\n })}\n </div>\n\n {/* Tab Content */}\n <div class=\"s-tiered-offer-tab-content-wrapper\">\n {(() => {\n const activeTier = TierUtils.findTierByName(this.tieredOfferData.tiers, this.activeTabTier);\n if (!activeTier) return null;\n \n return (\n <div class=\"s-tiered-offer-tab-content\">\n <div class=\"s-tiered-offer-tab-content-inner\">\n <div class=\"s-tiered-offer-discount-section\">\n <p class=\"s-tiered-offer-discount-title\">\n {this.discountText} <span innerHTML={activeTier.discount}></span>\n </p>\n <p class=\"s-tiered-offer-benefit-description\">\n {this.benefitText} {activeTier.name}\n </p>\n </div>\n </div>\n </div>\n );\n })()}\n </div>\n </div>\n );\n }\n\n render() {\n \n if (this.isLoading) {\n return this.getLoadingSkeletonView();\n }\n\n if (!this.canRender || !this.tieredOfferData) {\n return null;\n }\n \n\n const currentTierData = this.getCurrentTierData();\n\n return (\n <Host>\n <div class=\"s-tiered-offer-container\">\n {/* Header Section */}\n <div class=\"s-tiered-offer-header\">\n <div class=\"s-tiered-offer-header-content\">\n <p class=\"s-tiered-offer-program-title\">{this.loyaltyProgramText}</p>\n <div class=\"s-tiered-offer-current-tier-name-wrapper\">\n <h2 class=\"s-tiered-offer-current-tier\">\n {this.currentTierText} <span class=\"s-tiered-offer-tier-name\">{currentTierData.name}</span>\n </h2>\n <span innerHTML={currentTierData.icon}></span>\n </div>\n </div>\n </div>\n\n {/* Progress Bar */}\n {this.renderProgressBar()}\n\n {/* Tabs */}\n {this.renderTabs()}\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"salla-tiered-offer.entry.cjs.js","sources":["src/components/salla-tiered-offer/interfaces.ts","src/components/salla-tiered-offer/constants.ts","src/components/salla-tiered-offer/utils.ts","src/components/salla-tiered-offer/salla-tiered-offer.scss?tag=salla-tiered-offer","src/components/salla-tiered-offer/salla-tiered-offer.tsx"],"sourcesContent":["export enum DiscountType {\n PERCENTAGE = \"percentage\",\n FIXED = \"fixed\",\n}\n\n\nexport interface Discount {\n name?: string;\n type?: DiscountType;\n value?: number;\n min_spend?: number;\n}\n\nexport interface TieredOfferDetails {\n based_on?: string;\n ends_at?: number;\n start_value?: number;\n end_value?: number;\n current_value?: number;\n discounts?: Discount[];\n with_current_cart?: boolean;\n applied_with_coupon?: boolean;\n}\n\nexport interface Offer {\n id?: number;\n type?: string;\n title?: string;\n description?: string;\n details?: TieredOfferDetails | null;\n}\n\nexport interface TieredOfferTier {\n name: string;\n tier_name: string;\n discount: string;\n icon: string;\n threshold: number;\n text_color?: string;\n index: number;\n}\n\nexport interface TieredOfferData {\n current_tier: string;\n tiers: TieredOfferTier[];\n}\n\nexport interface TieredOfferConfig {\n staticIcons: string[];\n staticColors: string[];\n}\n","import { TieredOfferConfig } from './interfaces';\nimport StarIcon from '../../assets/svg/star-rounded.svg';\nimport StarsIcon from '../../assets/svg/stars.svg';\nimport GoldIcon from '../../assets/svg/gold.svg';\nimport DiamondIcon from '../../assets/svg/diamond-02.svg';\n\nexport const TIERED_OFFER_CONFIG: TieredOfferConfig = {\n staticIcons: [StarIcon, StarsIcon, GoldIcon, DiamondIcon],\n staticColors: ['#993018', '#444444', '#D18F36', '#315F9C']\n};","import { TieredOfferTier } from './interfaces';\n\nexport class TierUtils {\n /**\n * Find tier by index\n */\n static findTierByIndex(tiers: TieredOfferTier[], index: number): TieredOfferTier | null {\n return tiers.find(tier => tier.index === index) || null;\n }\n\n /**\n * Find tier by tier name\n */\n static findTierByName(tiers: TieredOfferTier[], tierName: string): TieredOfferTier | null {\n return tiers.find(tier => tier.tier_name === tierName) || null;\n }\n\n /**\n * Get tier name by index\n */\n static getTierNameByIndex(tiers: TieredOfferTier[], index: number): string | undefined {\n return this.findTierByIndex(tiers, index)?.tier_name;\n }\n\n /**\n * Find current tier index based on current value\n */\n static findCurrentTierIndex(currentValue: number, tiers: TieredOfferTier[]): number {\n if (!tiers) return 0;\n \n for (let i = tiers.length - 1; i >= 0; i--) {\n if (currentValue >= tiers[i].threshold) {\n return tiers[i].index;\n }\n }\n return 0;\n }\n}","\n// SVG styling for milestone icons \n.s-tiered-offer-milestone-icon {\n svg {\n color: currentColor;\n \n path {\n stroke: currentColor;\n fill: none;\n }\n }\n \n // Active and completed states - fill the star icon, keep others as stroke\n &.s-tiered-offer-milestone-active,\n &.s-tiered-offer-milestone-completed {\n svg {\n path {\n fill: currentColor;\n stroke: none;\n }\n \n // For stroke-based icons (crown, stars, diamond) \n &[fill=\"none\"] path {\n fill: none;\n stroke: currentColor;\n }\n }\n }\n}\n\n// RTL Support \n[dir=\"rtl\"] {\n .s-tiered-offer-progress-wrapper {\n .s-tiered-offer-progress-bg {\n transform: scaleX(-1);\n }\n \n .s-tiered-offer-progress-fill {\n transform: scaleX(-1);\n left: auto;\n }\n }\n\n .flip-x {\n transform: scaleX(-1);\n }\n}\n","import { Component, Host, h, State } from '@stencil/core';\nimport { Offer, TieredOfferTier, TieredOfferData, DiscountType } from './interfaces';\nimport { TIERED_OFFER_CONFIG } from './constants';\nimport { TierUtils } from './utils';\n\n@Component({\n tag: 'salla-tiered-offer',\n styleUrl: 'salla-tiered-offer.scss',\n})\nexport class SallaTieredOffer {\n\n constructor() {\n salla.lang.onLoaded(() => {\n this.loyaltyProgramText = salla.lang.get('blocks.tiered_offer.program_title');\n this.currentTierText = salla.lang.get('blocks.tiered_offer.current_tier');\n this.discountText = salla.lang.get('blocks.tiered_offer.discount');\n this.benefitText = salla.lang.get('blocks.tiered_offer.tier_description');\n });\n }\n\n\n @State() tieredOfferData: TieredOfferData;\n @State() apiOfferData: Offer;\n @State() currentTierIndex: number = 0;\n @State() currentTier: string;\n @State() activeTabTier: string;\n\n @State() canRender: boolean = false;\n @State() isLoading: boolean = false;\n\n // Language strings\n @State() loyaltyProgramText: string;\n @State() currentTierText: string;\n @State() discountText: string;\n @State() benefitText: string;\n\n async componentWillLoad() {\n try {\n await salla.onReady();\n \n if (!this.checkFeatureEnabled()) {\n return;\n }\n \n if (!this.checkCartExists()) {\n return;\n }\n \n this.isLoading = true;\n \n const offerData = await this.fetchTieredOfferData();\n if (!offerData) {\n return;\n }\n \n this.initializeComponent(offerData);\n \n } catch (error) {\n this.canRender = false;\n salla.logger.warn('salla-tiered-offer:: ', error);\n } finally {\n this.isLoading = false;\n }\n }\n \n private checkFeatureEnabled(): boolean {\n return salla.config.get('store.features')?.includes('tiered-offer');\n }\n \n private checkCartExists(): boolean {\n return !!salla.storage.get(\"cart\")?.summary?.count;\n }\n \n private validateCouponCompatibility(offerData: Offer, cartCoupon?: any): boolean {\n // If coupon is applied but offer doesn't support coupons, widget should be hidden\n return !(cartCoupon && !offerData.details?.applied_with_coupon);\n }\n \n private async fetchTieredOfferData(): Promise<Offer | null> {\n try {\n const { data }: { data: Offer[] } = await salla.api.cart.offers();\n const tieredOffer = data.find(offer => offer.type === \"tiered_offer\");\n \n if (!tieredOffer) {\n return null;\n }\n \n // Hide widget if coupon is applied and offer doesn't support coupons\n if (!this.validateCouponCompatibility(tieredOffer, salla.storage.get(\"cart\")?.coupon)) {\n this.canRender = false;\n return null;\n }\n \n return tieredOffer;\n } catch (error) {\n throw error;\n }\n }\n \n private initializeComponent(apiOfferData: Offer): void {\n this.apiOfferData = apiOfferData;\n \n // Map tiered details data to component format\n this.tieredOfferData = this.mapApiDataToTiers(this.apiOfferData);\n this.loyaltyProgramText = this.apiOfferData.title || this.loyaltyProgramText;\n \n // Find current tier index based on current_value from API\n const currentValue = this.apiOfferData.details?.current_value || 0;\n const currentTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Only render if user has reached at least the first tier\n if (currentTierIndex === 0) {\n this.canRender = false;\n return;\n }\n \n this.currentTierIndex = currentTierIndex;\n this.currentTier = TierUtils.getTierNameByIndex(this.tieredOfferData.tiers, currentTierIndex);\n this.activeTabTier = this.currentTier;\n this.canRender = true;\n }\n\n componentDidLoad() {\n salla.event.on(\"cart::updated\", async (updatedCart) => {\n const offerData = await this.fetchTieredOfferData();\n if (offerData) {\n this.updateOfferValues(updatedCart, offerData);\n }\n });\n }\n\n private mapApiDataToTiers(apiData: Offer): TieredOfferData {\n // Sort discounts by min_spend to create proper tier order\n const sortedDiscounts = [...apiData.details.discounts].sort((a, b) => a.min_spend - b.min_spend);\n\n const tiers: TieredOfferTier[] = sortedDiscounts.map((discount, index) => ({\n name: discount.name, \n tier_name: discount.name, \n discount: discount.type === DiscountType.PERCENTAGE ? `${salla.helpers.number(discount.value)}%` : salla.money(discount.value),\n icon: TIERED_OFFER_CONFIG.staticIcons[index] || TIERED_OFFER_CONFIG.staticIcons[0], \n threshold: discount.min_spend,\n text_color: TIERED_OFFER_CONFIG.staticColors[index], \n index: index + 1\n }));\n\n return {\n current_tier: TierUtils.getTierNameByIndex(tiers, this.findCurrentTierIndex(apiData.details.current_value, tiers)),\n tiers\n };\n }\n\n private findCurrentTierIndex(currentValue: number, tiers = this.tieredOfferData?.tiers): number {\n return TierUtils.findCurrentTierIndex(currentValue, tiers || []);\n }\n\n private updateOfferValues(updatedCart: { items: any[], sub_total: number, coupon?: any }, freshOfferData: Offer) {\n if (!freshOfferData || !this.tieredOfferData) {\n return;\n }\n\n // Check coupon compatibility\n if (!this.validateCouponCompatibility(freshOfferData, updatedCart.coupon)) {\n this.canRender = false;\n return;\n }\n\n // If no coupon conflict, show widget\n this.canRender = true;\n\n // Check if this offer should update with cart changes\n if (freshOfferData.details?.with_current_cart === false) {\n return;\n }\n\n // Update current_value in API offer data\n // const currentValue = updatedCart.sub_total;\n // console.log('currentValue #####3', currentValue);\n // this.apiOfferData = {\n // ...this.apiOfferData,\n // details: {\n // ...this.apiOfferData.details,\n // current_value: currentValue\n // }\n // };\n\n // Use current_value from fresh API data instead of cart sub_total\n const currentValue = freshOfferData.details?.current_value || 0;\n this.apiOfferData = freshOfferData;\n\n // Update current tier based on new value\n const newTierIndex = this.findCurrentTierIndex(currentValue);\n\n // Check if user qualifies for any tier\n if (newTierIndex === 0) {\n this.canRender = false;\n return;\n }\n\n // user qualifies show widget\n this.canRender = true;\n this.currentTierIndex = newTierIndex;\n this.currentTier = TierUtils.getTierNameByIndex(this.tieredOfferData.tiers, newTierIndex);\n\n // Update active tab if needed\n if (this.activeTabTier !== this.currentTier) {\n this.activeTabTier = this.currentTier;\n }\n }\n\n private getLoadingSkeletonView() {\n return <Host>\n <div class=\"s-tiered-offer-container\">\n <div class=\"s-tiered-offer-skeleton-wrapper\">\n <div class=\"s-tiered-offer-skeleton-title\">\n <salla-skeleton height=\"16px\" width=\"40%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-subtitle\">\n <salla-skeleton height=\"20px\" width=\"60%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-progress\">\n <salla-skeleton height=\"16px\" width=\"100%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-tabs\">\n <salla-skeleton height=\"50px\" width=\"100%\" />\n </div>\n </div>\n </div>\n </Host>\n }\n\n private getCurrentTierData(): TieredOfferTier {\n return TierUtils.findTierByIndex(this.tieredOfferData.tiers, this.currentTierIndex) || this.tieredOfferData.tiers[0];\n }\n\n private getProgressWidth(): number {\n const currentValue = this.apiOfferData.details?.current_value || 0;\n const totalTiers = this.tieredOfferData.tiers.length;\n \n // Use existing method to find current tier index (which already handles the logic)\n const currentTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Convert to 0-based index for progress calculation\n const completedTiers = currentTierIndex;\n return (completedTiers / totalTiers) * 100;\n }\n\n private handleTabClick = (tierName: string) => {\n this.activeTabTier = tierName;\n }\n \n private calculateMilestonePosition(index: number, totalTiers: number): string {\n if (totalTiers === 1) {\n return 'calc(100% - 18px)';\n }\n const milestonePercent = ((index + 1) / totalTiers) * 100;\n const offsetPercent = 8 / totalTiers;\n return `${Math.max(2, Math.min(95, milestonePercent - offsetPercent))}%`;\n }\n \n private getMilestoneStyles(tier: TieredOfferTier, index: number, totalTiers: number) {\n const isRtl = document.documentElement.dir === 'rtl';\n const adjustedPercent = this.calculateMilestonePosition(index, totalTiers);\n const alignItems = tier.name.length > 6 ? 'flex-end' : 'center';\n \n return {\n [isRtl ? 'right' : 'left']: adjustedPercent,\n alignItems,\n position: 'absolute' as const,\n transform: isRtl ? 'translateX(50%)' : 'translateX(-50%)'\n };\n }\n \n private getMilestoneIconStyles(tier: TieredOfferTier, isCurrent: boolean, isReached: boolean) {\n if (isCurrent) {\n return { color: tier.text_color };\n }\n if (isReached) {\n return { color: 'var(--color-primary)' };\n }\n return {};\n }\n \n private renderProgressBarBackground(progressWidth: number) {\n return [\n <div class=\"s-tiered-offer-progress-bg\"></div>,\n <div \n class=\"s-tiered-offer-progress-fill\"\n style={{ width: `${progressWidth}%` }}>\n </div>\n ];\n }\n \n private renderMilestoneIcon(tier: TieredOfferTier, isCurrent: boolean, isReached: boolean) {\n const iconClasses = [\n 's-tiered-offer-milestone-icon',\n isCurrent ? 's-tiered-offer-milestone-active' : '',\n isReached ? 's-tiered-offer-milestone-completed' : ''\n ].filter(Boolean).join(' ');\n \n return (\n <div \n class={iconClasses}\n style={this.getMilestoneIconStyles(tier, isCurrent, isReached)}>\n <span innerHTML={tier.icon}></span>\n </div>\n );\n }\n \n private renderMilestoneName(tier: TieredOfferTier, isCurrent: boolean) {\n return (\n <div class=\"s-tiered-offer-milestone-name\">\n {isCurrent && (\n <span style={{ color: tier.text_color }}>\n {tier.name}\n </span>\n )}\n </div>\n );\n }\n \n private renderMilestones(currentValue: number, totalTiers: number) {\n const containerClass = totalTiers === 1 \n ? 's-tiered-offer-single-milestone-justify-end' \n : 's-tiered-offer-milestones';\n \n return (\n <div class=\"s-tiered-offer-milestones-wrapper\">\n <div class={containerClass}>\n {this.tieredOfferData.tiers.map((tier, index) => {\n const isReached = currentValue >= tier.threshold;\n const isCurrent = tier.tier_name === this.currentTier;\n \n return (\n <div \n class=\"s-tiered-offer-milestone\"\n style={this.getMilestoneStyles(tier, index, totalTiers)}>\n {this.renderMilestoneIcon(tier, isCurrent, isReached)}\n {this.renderMilestoneName(tier, isCurrent)}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n private renderProgressBar() {\n const progressWidth = this.getProgressWidth();\n const totalTiers = this.tieredOfferData.tiers.length;\n const currentValue = this.apiOfferData.details?.current_value || 0;\n\n return (\n <div class=\"s-tiered-offer-progress-container\">\n <div class=\"s-tiered-offer-progress-wrapper\">\n {this.renderProgressBarBackground(progressWidth)}\n {this.renderMilestones(currentValue, totalTiers)}\n </div>\n </div>\n );\n }\n\n private renderTabs() {\n return (\n <div class=\"s-tiered-offer-tabs-container\">\n {/* Tab Headers */}\n <div class=\"s-tiered-offer-tab-headers\">\n {this.tieredOfferData.tiers.map(tier => {\n const isActive = tier.tier_name === this.activeTabTier;\n return (\n <button \n class={`s-tiered-offer-tab-header ${isActive ? 's-tiered-offer-tab-active' : ''}`}\n onClick={() => this.handleTabClick(tier.tier_name)}>\n <span>{tier.name}</span>\n </button>\n );\n })}\n </div>\n\n {/* Tab Content */}\n <div class=\"s-tiered-offer-tab-content-wrapper\">\n {(() => {\n const activeTier = TierUtils.findTierByName(this.tieredOfferData.tiers, this.activeTabTier);\n if (!activeTier) return null;\n \n return (\n <div class=\"s-tiered-offer-tab-content\">\n <div class=\"s-tiered-offer-tab-content-inner\">\n <div class=\"s-tiered-offer-discount-section\">\n <p class=\"s-tiered-offer-discount-title\">\n {this.discountText} <span innerHTML={activeTier.discount}></span>\n </p>\n <p class=\"s-tiered-offer-benefit-description\">\n {this.benefitText} {activeTier.name}\n </p>\n </div>\n </div>\n </div>\n );\n })()}\n </div>\n </div>\n );\n }\n\n render() {\n \n if (this.isLoading) {\n return this.getLoadingSkeletonView();\n }\n\n if (!this.canRender || !this.tieredOfferData) {\n return null;\n }\n \n\n const currentTierData = this.getCurrentTierData();\n\n return (\n <Host>\n <div class=\"s-tiered-offer-container\">\n {/* Header Section */}\n <div class=\"s-tiered-offer-header\">\n <div class=\"s-tiered-offer-header-content\">\n <p class=\"s-tiered-offer-program-title\">{this.loyaltyProgramText}</p>\n <div class=\"s-tiered-offer-current-tier-name-wrapper\">\n <h2 class=\"s-tiered-offer-current-tier\">\n {this.currentTierText} <span class=\"s-tiered-offer-tier-name\">{currentTierData.name}</span>\n </h2>\n <span innerHTML={currentTierData.icon}></span>\n </div>\n </div>\n </div>\n\n {/* Progress Bar */}\n {this.renderProgressBar()}\n\n {/* Tabs */}\n {this.renderTabs()}\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host","index"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var index = require('./index-
|
|
6
|
+
var index = require('./index-CsWMbEp_.js');
|
|
7
7
|
|
|
8
8
|
const sallaTooltipCss = ".s-tooltip-container{position:relative;display:inline-block}.s-tooltip-item{position:absolute;-webkit-transform:translateX(-39%);transform:translateX(-39%);background-color:#baf3e6;color:#004d5a;bottom:100%;left:50%;text-align:center;border-radius:5px;z-index:1;white-space:nowrap;opacity:0;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;pointer-events:none;margin:0 0 16px 8px;padding:12px;max-width:150px;width:190px;white-space:normal;opacity:1}.s-tooltip-item::after{content:\"\";position:absolute;bottom:-10px;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#baf3e6 transparent transparent transparent}.s-tooltip-item:dir(ltr){-webkit-transform:translateX(-72%);transform:translateX(-72%)}";
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var index = require('./index-
|
|
6
|
+
var index = require('./index-CsWMbEp_.js');
|
|
7
7
|
|
|
8
8
|
const sallaWalletCss = ".s-wallet-table{min-width:100%}.s-wallet-table-balance-container{display:-ms-flexbox !important;display:flex !important;-ms-flex-align:center !important;align-items:center !important;-ms-flex-pack:start !important;justify-content:flex-start !important;gap:1rem}.s-wallet-table-balance-icon{border-radius:50%;width:52px;height:52px;font-size:25px;padding:16px 13px;background:var(--color-primary-reverse);color:var(--color-primary)}.s-wallet-table-empty-state{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.s-wallet-table-empty-state i{font-size:80px;margin:4rem 0 2rem;color:var(--infinte-color)}.s-wallet-table-transaction-status{padding:6px 19px !important;border-radius:20px;width:-webkit-max-content;width:-moz-max-content;width:max-content;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.s-wallet-table-transaction-status-default{background:#fff6eb;color:#a46f29}.s-wallet-table-transaction-status-cashback{background:#effbf6;color:#00af6c}.s-wallet-table-transaction-status-refund{background:#ecf3fe;color:#5196f3}.s-wallet-table-transaction-status-purchase{background:#feecec;color:#f55157}.s-wallet-table-transaction-status-icons-success{color:#00af6c}";
|
|
9
9
|
|
package/dist/cjs/twilight.cjs.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var index = require('./index-
|
|
7
|
-
var appGlobals = require('./app-globals-
|
|
6
|
+
var index = require('./index-CsWMbEp_.js');
|
|
7
|
+
var appGlobals = require('./app-globals-1XGeqf3w.js');
|
|
8
8
|
|
|
9
9
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
10
10
|
/*
|
|
@@ -96,8 +96,11 @@ export class SallaTieredOffer {
|
|
|
96
96
|
this.canRender = true;
|
|
97
97
|
}
|
|
98
98
|
componentDidLoad() {
|
|
99
|
-
salla.event.on("cart::updated", (updatedCart) => {
|
|
100
|
-
this.
|
|
99
|
+
salla.event.on("cart::updated", async (updatedCart) => {
|
|
100
|
+
const offerData = await this.fetchTieredOfferData();
|
|
101
|
+
if (offerData) {
|
|
102
|
+
this.updateOfferValues(updatedCart, offerData);
|
|
103
|
+
}
|
|
101
104
|
});
|
|
102
105
|
}
|
|
103
106
|
mapApiDataToTiers(apiData) {
|
|
@@ -124,25 +127,35 @@ export class SallaTieredOffer {
|
|
|
124
127
|
}
|
|
125
128
|
return TierUtils.findCurrentTierIndex(currentValue, tiers || []);
|
|
126
129
|
}
|
|
127
|
-
updateOfferValues(updatedCart) {
|
|
128
|
-
var _a;
|
|
129
|
-
if (!
|
|
130
|
+
updateOfferValues(updatedCart, freshOfferData) {
|
|
131
|
+
var _a, _b;
|
|
132
|
+
if (!freshOfferData || !this.tieredOfferData) {
|
|
130
133
|
return;
|
|
131
134
|
}
|
|
132
135
|
// Check coupon compatibility
|
|
133
|
-
if (!this.validateCouponCompatibility(
|
|
136
|
+
if (!this.validateCouponCompatibility(freshOfferData, updatedCart.coupon)) {
|
|
134
137
|
this.canRender = false;
|
|
135
138
|
return;
|
|
136
139
|
}
|
|
137
140
|
// If no coupon conflict, show widget
|
|
138
141
|
this.canRender = true;
|
|
139
142
|
// Check if this offer should update with cart changes
|
|
140
|
-
if (((_a =
|
|
143
|
+
if (((_a = freshOfferData.details) === null || _a === void 0 ? void 0 : _a.with_current_cart) === false) {
|
|
141
144
|
return;
|
|
142
145
|
}
|
|
143
146
|
// Update current_value in API offer data
|
|
144
|
-
const currentValue = updatedCart.sub_total;
|
|
145
|
-
|
|
147
|
+
// const currentValue = updatedCart.sub_total;
|
|
148
|
+
// console.log('currentValue #####3', currentValue);
|
|
149
|
+
// this.apiOfferData = {
|
|
150
|
+
// ...this.apiOfferData,
|
|
151
|
+
// details: {
|
|
152
|
+
// ...this.apiOfferData.details,
|
|
153
|
+
// current_value: currentValue
|
|
154
|
+
// }
|
|
155
|
+
// };
|
|
156
|
+
// Use current_value from fresh API data instead of cart sub_total
|
|
157
|
+
const currentValue = ((_b = freshOfferData.details) === null || _b === void 0 ? void 0 : _b.current_value) || 0;
|
|
158
|
+
this.apiOfferData = freshOfferData;
|
|
146
159
|
// Update current tier based on new value
|
|
147
160
|
const newTierIndex = this.findCurrentTierIndex(currentValue);
|
|
148
161
|
// Check if user qualifies for any tier
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salla-tiered-offer.js","sourceRoot":"","sources":["../../../src/components/salla-tiered-offer/salla-tiered-offer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, State } from '@stencil/core';\nimport { Offer, TieredOfferTier, TieredOfferData, DiscountType } from './interfaces';\nimport { TIERED_OFFER_CONFIG } from './constants';\nimport { TierUtils } from './utils';\n\n@Component({\n tag: 'salla-tiered-offer',\n styleUrl: 'salla-tiered-offer.scss',\n})\nexport class SallaTieredOffer {\n\n constructor() {\n salla.lang.onLoaded(() => {\n this.loyaltyProgramText = salla.lang.get('blocks.tiered_offer.program_title');\n this.currentTierText = salla.lang.get('blocks.tiered_offer.current_tier');\n this.discountText = salla.lang.get('blocks.tiered_offer.discount');\n this.benefitText = salla.lang.get('blocks.tiered_offer.tier_description');\n });\n }\n\n\n @State() tieredOfferData: TieredOfferData;\n @State() apiOfferData: Offer;\n @State() currentTierIndex: number = 0;\n @State() currentTier: string;\n @State() activeTabTier: string;\n\n @State() canRender: boolean = false;\n @State() isLoading: boolean = false;\n\n // Language strings\n @State() loyaltyProgramText: string;\n @State() currentTierText: string;\n @State() discountText: string;\n @State() benefitText: string;\n\n async componentWillLoad() {\n try {\n await salla.onReady();\n \n if (!this.checkFeatureEnabled()) {\n return;\n }\n \n if (!this.checkCartExists()) {\n return;\n }\n \n this.isLoading = true;\n \n const offerData = await this.fetchTieredOfferData();\n if (!offerData) {\n return;\n }\n \n this.initializeComponent(offerData);\n \n } catch (error) {\n this.canRender = false;\n salla.logger.warn('salla-tiered-offer:: ', error);\n } finally {\n this.isLoading = false;\n }\n }\n \n private checkFeatureEnabled(): boolean {\n return salla.config.get('store.features')?.includes('tiered-offer');\n }\n \n private checkCartExists(): boolean {\n return !!salla.storage.get(\"cart\")?.summary?.count;\n }\n \n private validateCouponCompatibility(offerData: Offer, cartCoupon?: any): boolean {\n // If coupon is applied but offer doesn't support coupons, widget should be hidden\n return !(cartCoupon && !offerData.details?.applied_with_coupon);\n }\n \n private async fetchTieredOfferData(): Promise<Offer | null> {\n try {\n const { data }: { data: Offer[] } = await salla.api.cart.offers();\n const tieredOffer = data.find(offer => offer.type === \"tiered_offer\");\n \n if (!tieredOffer) {\n return null;\n }\n \n // Hide widget if coupon is applied and offer doesn't support coupons\n if (!this.validateCouponCompatibility(tieredOffer, salla.storage.get(\"cart\")?.coupon)) {\n this.canRender = false;\n return null;\n }\n \n return tieredOffer;\n } catch (error) {\n throw error;\n }\n }\n \n private initializeComponent(apiOfferData: Offer): void {\n this.apiOfferData = apiOfferData;\n \n // Map tiered details data to component format\n this.tieredOfferData = this.mapApiDataToTiers(this.apiOfferData);\n this.loyaltyProgramText = this.apiOfferData.title || this.loyaltyProgramText;\n \n // Find current tier index based on current_value from API\n const currentValue = this.apiOfferData.details?.current_value || 0;\n const currentTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Only render if user has reached at least the first tier\n if (currentTierIndex === 0) {\n this.canRender = false;\n return;\n }\n \n this.currentTierIndex = currentTierIndex;\n this.currentTier = TierUtils.getTierNameByIndex(this.tieredOfferData.tiers, currentTierIndex);\n this.activeTabTier = this.currentTier;\n this.canRender = true;\n }\n\n componentDidLoad() {\n salla.event.on(\"cart::updated\", (updatedCart) => {\n this.updateOfferValues(updatedCart);\n });\n }\n\n private mapApiDataToTiers(apiData: Offer): TieredOfferData {\n // Sort discounts by min_spend to create proper tier order\n const sortedDiscounts = [...apiData.details.discounts].sort((a, b) => a.min_spend - b.min_spend);\n\n const tiers: TieredOfferTier[] = sortedDiscounts.map((discount, index) => ({\n name: discount.name, \n tier_name: discount.name, \n discount: discount.type === DiscountType.PERCENTAGE ? `${salla.helpers.number(discount.value)}%` : salla.money(discount.value),\n icon: TIERED_OFFER_CONFIG.staticIcons[index] || TIERED_OFFER_CONFIG.staticIcons[0], \n threshold: discount.min_spend,\n text_color: TIERED_OFFER_CONFIG.staticColors[index], \n index: index + 1\n }));\n\n return {\n current_tier: TierUtils.getTierNameByIndex(tiers, this.findCurrentTierIndex(apiData.details.current_value, tiers)),\n tiers\n };\n }\n\n private findCurrentTierIndex(currentValue: number, tiers = this.tieredOfferData?.tiers): number {\n return TierUtils.findCurrentTierIndex(currentValue, tiers || []);\n }\n\n private updateOfferValues(updatedCart: { items: any[], sub_total: number, coupon?: any }) {\n if (!this.apiOfferData || !this.tieredOfferData) {\n return;\n }\n\n // Check coupon compatibility\n if (!this.validateCouponCompatibility(this.apiOfferData, updatedCart.coupon)) {\n this.canRender = false;\n return;\n }\n\n // If no coupon conflict, show widget\n this.canRender = true;\n\n // Check if this offer should update with cart changes\n if (this.apiOfferData.details?.with_current_cart === false) {\n return;\n }\n\n // Update current_value in API offer data\n const currentValue = updatedCart.sub_total;\n this.apiOfferData = {\n ...this.apiOfferData,\n details: {\n ...this.apiOfferData.details,\n current_value: currentValue\n }\n };\n\n // Update current tier based on new value\n const newTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Check if user qualifies for any tier\n if (newTierIndex === 0) {\n this.canRender = false;\n return;\n }\n\n // user qualifies show widget\n this.canRender = true;\n this.currentTierIndex = newTierIndex;\n this.currentTier = TierUtils.getTierNameByIndex(this.tieredOfferData.tiers, newTierIndex);\n \n // Update active tab if needed\n if (this.activeTabTier !== this.currentTier) {\n this.activeTabTier = this.currentTier;\n }\n }\n\n private getLoadingSkeletonView() {\n return <Host>\n <div class=\"s-tiered-offer-container\">\n <div class=\"s-tiered-offer-skeleton-wrapper\">\n <div class=\"s-tiered-offer-skeleton-title\">\n <salla-skeleton height=\"16px\" width=\"40%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-subtitle\">\n <salla-skeleton height=\"20px\" width=\"60%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-progress\">\n <salla-skeleton height=\"16px\" width=\"100%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-tabs\">\n <salla-skeleton height=\"50px\" width=\"100%\" />\n </div>\n </div>\n </div>\n </Host>\n }\n\n private getCurrentTierData(): TieredOfferTier {\n return TierUtils.findTierByIndex(this.tieredOfferData.tiers, this.currentTierIndex) || this.tieredOfferData.tiers[0];\n }\n\n private getProgressWidth(): number {\n const currentValue = this.apiOfferData.details?.current_value || 0;\n const totalTiers = this.tieredOfferData.tiers.length;\n \n // Use existing method to find current tier index (which already handles the logic)\n const currentTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Convert to 0-based index for progress calculation\n const completedTiers = currentTierIndex;\n return (completedTiers / totalTiers) * 100;\n }\n\n private handleTabClick = (tierName: string) => {\n this.activeTabTier = tierName;\n }\n \n private calculateMilestonePosition(index: number, totalTiers: number): string {\n if (totalTiers === 1) {\n return 'calc(100% - 18px)';\n }\n const milestonePercent = ((index + 1) / totalTiers) * 100;\n const offsetPercent = 8 / totalTiers;\n return `${Math.max(2, Math.min(95, milestonePercent - offsetPercent))}%`;\n }\n \n private getMilestoneStyles(tier: TieredOfferTier, index: number, totalTiers: number) {\n const isRtl = document.documentElement.dir === 'rtl';\n const adjustedPercent = this.calculateMilestonePosition(index, totalTiers);\n const alignItems = tier.name.length > 6 ? 'flex-end' : 'center';\n \n return {\n [isRtl ? 'right' : 'left']: adjustedPercent,\n alignItems,\n position: 'absolute' as const,\n transform: isRtl ? 'translateX(50%)' : 'translateX(-50%)'\n };\n }\n \n private getMilestoneIconStyles(tier: TieredOfferTier, isCurrent: boolean, isReached: boolean) {\n if (isCurrent) {\n return { color: tier.text_color };\n }\n if (isReached) {\n return { color: 'var(--color-primary)' };\n }\n return {};\n }\n \n private renderProgressBarBackground(progressWidth: number) {\n return [\n <div class=\"s-tiered-offer-progress-bg\"></div>,\n <div \n class=\"s-tiered-offer-progress-fill\"\n style={{ width: `${progressWidth}%` }}>\n </div>\n ];\n }\n \n private renderMilestoneIcon(tier: TieredOfferTier, isCurrent: boolean, isReached: boolean) {\n const iconClasses = [\n 's-tiered-offer-milestone-icon',\n isCurrent ? 's-tiered-offer-milestone-active' : '',\n isReached ? 's-tiered-offer-milestone-completed' : ''\n ].filter(Boolean).join(' ');\n \n return (\n <div \n class={iconClasses}\n style={this.getMilestoneIconStyles(tier, isCurrent, isReached)}>\n <span innerHTML={tier.icon}></span>\n </div>\n );\n }\n \n private renderMilestoneName(tier: TieredOfferTier, isCurrent: boolean) {\n return (\n <div class=\"s-tiered-offer-milestone-name\">\n {isCurrent && (\n <span style={{ color: tier.text_color }}>\n {tier.name}\n </span>\n )}\n </div>\n );\n }\n \n private renderMilestones(currentValue: number, totalTiers: number) {\n const containerClass = totalTiers === 1 \n ? 's-tiered-offer-single-milestone-justify-end' \n : 's-tiered-offer-milestones';\n \n return (\n <div class=\"s-tiered-offer-milestones-wrapper\">\n <div class={containerClass}>\n {this.tieredOfferData.tiers.map((tier, index) => {\n const isReached = currentValue >= tier.threshold;\n const isCurrent = tier.tier_name === this.currentTier;\n \n return (\n <div \n class=\"s-tiered-offer-milestone\"\n style={this.getMilestoneStyles(tier, index, totalTiers)}>\n {this.renderMilestoneIcon(tier, isCurrent, isReached)}\n {this.renderMilestoneName(tier, isCurrent)}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n private renderProgressBar() {\n const progressWidth = this.getProgressWidth();\n const totalTiers = this.tieredOfferData.tiers.length;\n const currentValue = this.apiOfferData.details?.current_value || 0;\n\n return (\n <div class=\"s-tiered-offer-progress-container\">\n <div class=\"s-tiered-offer-progress-wrapper\">\n {this.renderProgressBarBackground(progressWidth)}\n {this.renderMilestones(currentValue, totalTiers)}\n </div>\n </div>\n );\n }\n\n private renderTabs() {\n return (\n <div class=\"s-tiered-offer-tabs-container\">\n {/* Tab Headers */}\n <div class=\"s-tiered-offer-tab-headers\">\n {this.tieredOfferData.tiers.map(tier => {\n const isActive = tier.tier_name === this.activeTabTier;\n return (\n <button \n class={`s-tiered-offer-tab-header ${isActive ? 's-tiered-offer-tab-active' : ''}`}\n onClick={() => this.handleTabClick(tier.tier_name)}>\n <span>{tier.name}</span>\n </button>\n );\n })}\n </div>\n\n {/* Tab Content */}\n <div class=\"s-tiered-offer-tab-content-wrapper\">\n {(() => {\n const activeTier = TierUtils.findTierByName(this.tieredOfferData.tiers, this.activeTabTier);\n if (!activeTier) return null;\n \n return (\n <div class=\"s-tiered-offer-tab-content\">\n <div class=\"s-tiered-offer-tab-content-inner\">\n <div class=\"s-tiered-offer-discount-section\">\n <p class=\"s-tiered-offer-discount-title\">\n {this.discountText} <span innerHTML={activeTier.discount}></span>\n </p>\n <p class=\"s-tiered-offer-benefit-description\">\n {this.benefitText} {activeTier.name}\n </p>\n </div>\n </div>\n </div>\n );\n })()}\n </div>\n </div>\n );\n }\n\n render() {\n \n if (this.isLoading) {\n return this.getLoadingSkeletonView();\n }\n\n if (!this.canRender || !this.tieredOfferData) {\n return null;\n }\n \n\n const currentTierData = this.getCurrentTierData();\n\n return (\n <Host>\n <div class=\"s-tiered-offer-container\">\n {/* Header Section */}\n <div class=\"s-tiered-offer-header\">\n <div class=\"s-tiered-offer-header-content\">\n <p class=\"s-tiered-offer-program-title\">{this.loyaltyProgramText}</p>\n <div class=\"s-tiered-offer-current-tier-name-wrapper\">\n <h2 class=\"s-tiered-offer-current-tier\">\n {this.currentTierText} <span class=\"s-tiered-offer-tier-name\">{currentTierData.name}</span>\n </h2>\n <span innerHTML={currentTierData.icon}></span>\n </div>\n </div>\n </div>\n\n {/* Progress Bar */}\n {this.renderProgressBar()}\n\n {/* Tabs */}\n {this.renderTabs()}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"salla-tiered-offer.js","sourceRoot":"","sources":["../../../src/components/salla-tiered-offer/salla-tiered-offer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, State } from '@stencil/core';\nimport { Offer, TieredOfferTier, TieredOfferData, DiscountType } from './interfaces';\nimport { TIERED_OFFER_CONFIG } from './constants';\nimport { TierUtils } from './utils';\n\n@Component({\n tag: 'salla-tiered-offer',\n styleUrl: 'salla-tiered-offer.scss',\n})\nexport class SallaTieredOffer {\n\n constructor() {\n salla.lang.onLoaded(() => {\n this.loyaltyProgramText = salla.lang.get('blocks.tiered_offer.program_title');\n this.currentTierText = salla.lang.get('blocks.tiered_offer.current_tier');\n this.discountText = salla.lang.get('blocks.tiered_offer.discount');\n this.benefitText = salla.lang.get('blocks.tiered_offer.tier_description');\n });\n }\n\n\n @State() tieredOfferData: TieredOfferData;\n @State() apiOfferData: Offer;\n @State() currentTierIndex: number = 0;\n @State() currentTier: string;\n @State() activeTabTier: string;\n\n @State() canRender: boolean = false;\n @State() isLoading: boolean = false;\n\n // Language strings\n @State() loyaltyProgramText: string;\n @State() currentTierText: string;\n @State() discountText: string;\n @State() benefitText: string;\n\n async componentWillLoad() {\n try {\n await salla.onReady();\n \n if (!this.checkFeatureEnabled()) {\n return;\n }\n \n if (!this.checkCartExists()) {\n return;\n }\n \n this.isLoading = true;\n \n const offerData = await this.fetchTieredOfferData();\n if (!offerData) {\n return;\n }\n \n this.initializeComponent(offerData);\n \n } catch (error) {\n this.canRender = false;\n salla.logger.warn('salla-tiered-offer:: ', error);\n } finally {\n this.isLoading = false;\n }\n }\n \n private checkFeatureEnabled(): boolean {\n return salla.config.get('store.features')?.includes('tiered-offer');\n }\n \n private checkCartExists(): boolean {\n return !!salla.storage.get(\"cart\")?.summary?.count;\n }\n \n private validateCouponCompatibility(offerData: Offer, cartCoupon?: any): boolean {\n // If coupon is applied but offer doesn't support coupons, widget should be hidden\n return !(cartCoupon && !offerData.details?.applied_with_coupon);\n }\n \n private async fetchTieredOfferData(): Promise<Offer | null> {\n try {\n const { data }: { data: Offer[] } = await salla.api.cart.offers();\n const tieredOffer = data.find(offer => offer.type === \"tiered_offer\");\n \n if (!tieredOffer) {\n return null;\n }\n \n // Hide widget if coupon is applied and offer doesn't support coupons\n if (!this.validateCouponCompatibility(tieredOffer, salla.storage.get(\"cart\")?.coupon)) {\n this.canRender = false;\n return null;\n }\n \n return tieredOffer;\n } catch (error) {\n throw error;\n }\n }\n \n private initializeComponent(apiOfferData: Offer): void {\n this.apiOfferData = apiOfferData;\n \n // Map tiered details data to component format\n this.tieredOfferData = this.mapApiDataToTiers(this.apiOfferData);\n this.loyaltyProgramText = this.apiOfferData.title || this.loyaltyProgramText;\n \n // Find current tier index based on current_value from API\n const currentValue = this.apiOfferData.details?.current_value || 0;\n const currentTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Only render if user has reached at least the first tier\n if (currentTierIndex === 0) {\n this.canRender = false;\n return;\n }\n \n this.currentTierIndex = currentTierIndex;\n this.currentTier = TierUtils.getTierNameByIndex(this.tieredOfferData.tiers, currentTierIndex);\n this.activeTabTier = this.currentTier;\n this.canRender = true;\n }\n\n componentDidLoad() {\n salla.event.on(\"cart::updated\", async (updatedCart) => {\n const offerData = await this.fetchTieredOfferData();\n if (offerData) {\n this.updateOfferValues(updatedCart, offerData);\n }\n });\n }\n\n private mapApiDataToTiers(apiData: Offer): TieredOfferData {\n // Sort discounts by min_spend to create proper tier order\n const sortedDiscounts = [...apiData.details.discounts].sort((a, b) => a.min_spend - b.min_spend);\n\n const tiers: TieredOfferTier[] = sortedDiscounts.map((discount, index) => ({\n name: discount.name, \n tier_name: discount.name, \n discount: discount.type === DiscountType.PERCENTAGE ? `${salla.helpers.number(discount.value)}%` : salla.money(discount.value),\n icon: TIERED_OFFER_CONFIG.staticIcons[index] || TIERED_OFFER_CONFIG.staticIcons[0], \n threshold: discount.min_spend,\n text_color: TIERED_OFFER_CONFIG.staticColors[index], \n index: index + 1\n }));\n\n return {\n current_tier: TierUtils.getTierNameByIndex(tiers, this.findCurrentTierIndex(apiData.details.current_value, tiers)),\n tiers\n };\n }\n\n private findCurrentTierIndex(currentValue: number, tiers = this.tieredOfferData?.tiers): number {\n return TierUtils.findCurrentTierIndex(currentValue, tiers || []);\n }\n\n private updateOfferValues(updatedCart: { items: any[], sub_total: number, coupon?: any }, freshOfferData: Offer) {\n if (!freshOfferData || !this.tieredOfferData) {\n return;\n }\n\n // Check coupon compatibility\n if (!this.validateCouponCompatibility(freshOfferData, updatedCart.coupon)) {\n this.canRender = false;\n return;\n }\n\n // If no coupon conflict, show widget\n this.canRender = true;\n\n // Check if this offer should update with cart changes\n if (freshOfferData.details?.with_current_cart === false) {\n return;\n }\n\n // Update current_value in API offer data\n // const currentValue = updatedCart.sub_total;\n // console.log('currentValue #####3', currentValue);\n // this.apiOfferData = {\n // ...this.apiOfferData,\n // details: {\n // ...this.apiOfferData.details,\n // current_value: currentValue\n // }\n // };\n\n // Use current_value from fresh API data instead of cart sub_total\n const currentValue = freshOfferData.details?.current_value || 0;\n this.apiOfferData = freshOfferData;\n\n // Update current tier based on new value\n const newTierIndex = this.findCurrentTierIndex(currentValue);\n\n // Check if user qualifies for any tier\n if (newTierIndex === 0) {\n this.canRender = false;\n return;\n }\n\n // user qualifies show widget\n this.canRender = true;\n this.currentTierIndex = newTierIndex;\n this.currentTier = TierUtils.getTierNameByIndex(this.tieredOfferData.tiers, newTierIndex);\n\n // Update active tab if needed\n if (this.activeTabTier !== this.currentTier) {\n this.activeTabTier = this.currentTier;\n }\n }\n\n private getLoadingSkeletonView() {\n return <Host>\n <div class=\"s-tiered-offer-container\">\n <div class=\"s-tiered-offer-skeleton-wrapper\">\n <div class=\"s-tiered-offer-skeleton-title\">\n <salla-skeleton height=\"16px\" width=\"40%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-subtitle\">\n <salla-skeleton height=\"20px\" width=\"60%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-progress\">\n <salla-skeleton height=\"16px\" width=\"100%\" />\n </div>\n <div class=\"s-tiered-offer-skeleton-tabs\">\n <salla-skeleton height=\"50px\" width=\"100%\" />\n </div>\n </div>\n </div>\n </Host>\n }\n\n private getCurrentTierData(): TieredOfferTier {\n return TierUtils.findTierByIndex(this.tieredOfferData.tiers, this.currentTierIndex) || this.tieredOfferData.tiers[0];\n }\n\n private getProgressWidth(): number {\n const currentValue = this.apiOfferData.details?.current_value || 0;\n const totalTiers = this.tieredOfferData.tiers.length;\n \n // Use existing method to find current tier index (which already handles the logic)\n const currentTierIndex = this.findCurrentTierIndex(currentValue);\n \n // Convert to 0-based index for progress calculation\n const completedTiers = currentTierIndex;\n return (completedTiers / totalTiers) * 100;\n }\n\n private handleTabClick = (tierName: string) => {\n this.activeTabTier = tierName;\n }\n \n private calculateMilestonePosition(index: number, totalTiers: number): string {\n if (totalTiers === 1) {\n return 'calc(100% - 18px)';\n }\n const milestonePercent = ((index + 1) / totalTiers) * 100;\n const offsetPercent = 8 / totalTiers;\n return `${Math.max(2, Math.min(95, milestonePercent - offsetPercent))}%`;\n }\n \n private getMilestoneStyles(tier: TieredOfferTier, index: number, totalTiers: number) {\n const isRtl = document.documentElement.dir === 'rtl';\n const adjustedPercent = this.calculateMilestonePosition(index, totalTiers);\n const alignItems = tier.name.length > 6 ? 'flex-end' : 'center';\n \n return {\n [isRtl ? 'right' : 'left']: adjustedPercent,\n alignItems,\n position: 'absolute' as const,\n transform: isRtl ? 'translateX(50%)' : 'translateX(-50%)'\n };\n }\n \n private getMilestoneIconStyles(tier: TieredOfferTier, isCurrent: boolean, isReached: boolean) {\n if (isCurrent) {\n return { color: tier.text_color };\n }\n if (isReached) {\n return { color: 'var(--color-primary)' };\n }\n return {};\n }\n \n private renderProgressBarBackground(progressWidth: number) {\n return [\n <div class=\"s-tiered-offer-progress-bg\"></div>,\n <div \n class=\"s-tiered-offer-progress-fill\"\n style={{ width: `${progressWidth}%` }}>\n </div>\n ];\n }\n \n private renderMilestoneIcon(tier: TieredOfferTier, isCurrent: boolean, isReached: boolean) {\n const iconClasses = [\n 's-tiered-offer-milestone-icon',\n isCurrent ? 's-tiered-offer-milestone-active' : '',\n isReached ? 's-tiered-offer-milestone-completed' : ''\n ].filter(Boolean).join(' ');\n \n return (\n <div \n class={iconClasses}\n style={this.getMilestoneIconStyles(tier, isCurrent, isReached)}>\n <span innerHTML={tier.icon}></span>\n </div>\n );\n }\n \n private renderMilestoneName(tier: TieredOfferTier, isCurrent: boolean) {\n return (\n <div class=\"s-tiered-offer-milestone-name\">\n {isCurrent && (\n <span style={{ color: tier.text_color }}>\n {tier.name}\n </span>\n )}\n </div>\n );\n }\n \n private renderMilestones(currentValue: number, totalTiers: number) {\n const containerClass = totalTiers === 1 \n ? 's-tiered-offer-single-milestone-justify-end' \n : 's-tiered-offer-milestones';\n \n return (\n <div class=\"s-tiered-offer-milestones-wrapper\">\n <div class={containerClass}>\n {this.tieredOfferData.tiers.map((tier, index) => {\n const isReached = currentValue >= tier.threshold;\n const isCurrent = tier.tier_name === this.currentTier;\n \n return (\n <div \n class=\"s-tiered-offer-milestone\"\n style={this.getMilestoneStyles(tier, index, totalTiers)}>\n {this.renderMilestoneIcon(tier, isCurrent, isReached)}\n {this.renderMilestoneName(tier, isCurrent)}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n private renderProgressBar() {\n const progressWidth = this.getProgressWidth();\n const totalTiers = this.tieredOfferData.tiers.length;\n const currentValue = this.apiOfferData.details?.current_value || 0;\n\n return (\n <div class=\"s-tiered-offer-progress-container\">\n <div class=\"s-tiered-offer-progress-wrapper\">\n {this.renderProgressBarBackground(progressWidth)}\n {this.renderMilestones(currentValue, totalTiers)}\n </div>\n </div>\n );\n }\n\n private renderTabs() {\n return (\n <div class=\"s-tiered-offer-tabs-container\">\n {/* Tab Headers */}\n <div class=\"s-tiered-offer-tab-headers\">\n {this.tieredOfferData.tiers.map(tier => {\n const isActive = tier.tier_name === this.activeTabTier;\n return (\n <button \n class={`s-tiered-offer-tab-header ${isActive ? 's-tiered-offer-tab-active' : ''}`}\n onClick={() => this.handleTabClick(tier.tier_name)}>\n <span>{tier.name}</span>\n </button>\n );\n })}\n </div>\n\n {/* Tab Content */}\n <div class=\"s-tiered-offer-tab-content-wrapper\">\n {(() => {\n const activeTier = TierUtils.findTierByName(this.tieredOfferData.tiers, this.activeTabTier);\n if (!activeTier) return null;\n \n return (\n <div class=\"s-tiered-offer-tab-content\">\n <div class=\"s-tiered-offer-tab-content-inner\">\n <div class=\"s-tiered-offer-discount-section\">\n <p class=\"s-tiered-offer-discount-title\">\n {this.discountText} <span innerHTML={activeTier.discount}></span>\n </p>\n <p class=\"s-tiered-offer-benefit-description\">\n {this.benefitText} {activeTier.name}\n </p>\n </div>\n </div>\n </div>\n );\n })()}\n </div>\n </div>\n );\n }\n\n render() {\n \n if (this.isLoading) {\n return this.getLoadingSkeletonView();\n }\n\n if (!this.canRender || !this.tieredOfferData) {\n return null;\n }\n \n\n const currentTierData = this.getCurrentTierData();\n\n return (\n <Host>\n <div class=\"s-tiered-offer-container\">\n {/* Header Section */}\n <div class=\"s-tiered-offer-header\">\n <div class=\"s-tiered-offer-header-content\">\n <p class=\"s-tiered-offer-program-title\">{this.loyaltyProgramText}</p>\n <div class=\"s-tiered-offer-current-tier-name-wrapper\">\n <h2 class=\"s-tiered-offer-current-tier\">\n {this.currentTierText} <span class=\"s-tiered-offer-tier-name\">{currentTierData.name}</span>\n </h2>\n <span innerHTML={currentTierData.icon}></span>\n </div>\n </div>\n </div>\n\n {/* Progress Bar */}\n {this.renderProgressBar()}\n\n {/* Tabs */}\n {this.renderTabs()}\n </div>\n </Host>\n );\n }\n}\n"]}
|