@returnflows/shop-overlay 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +976 -0
  2. package/dist/index.esm.css +3 -0
  3. package/dist/index.esm.js +12494 -0
  4. package/dist/index.esm.js.map +1 -0
  5. package/dist/messages/da.json +1 -0
  6. package/dist/messages/de.json +1 -0
  7. package/dist/messages/en.json +1 -0
  8. package/dist/messages/es.json +1 -0
  9. package/dist/messages/fi.json +1 -0
  10. package/dist/messages/fr.json +1 -0
  11. package/dist/messages/it.json +1 -0
  12. package/dist/messages/nb.json +1 -0
  13. package/dist/messages/nl.json +1 -0
  14. package/dist/messages/pl.json +1 -0
  15. package/dist/messages/sv.json +1 -0
  16. package/dist/types/api/index.d.ts +6 -0
  17. package/dist/types/api/state-bridge.d.ts +37 -0
  18. package/dist/types/api/storefront-cart.d.ts +3 -0
  19. package/dist/types/api/types.d.ts +402 -0
  20. package/dist/types/api/widget-api.d.ts +20 -0
  21. package/dist/types/index.d.ts +2 -0
  22. package/dist/types/widget/components/dialog/common/dialog-backdrop.d.ts +6 -0
  23. package/dist/types/widget/components/dialog/common/dialog-button.d.ts +6 -0
  24. package/dist/types/widget/components/dialog/common/dialog-modal.d.ts +9 -0
  25. package/dist/types/widget/components/dialog/common/dialog-subtitle.d.ts +2 -0
  26. package/dist/types/widget/components/dialog/common/dialog-title.d.ts +2 -0
  27. package/dist/types/widget/components/dialog/common/index.d.ts +10 -0
  28. package/dist/types/widget/components/dialog/return-decision-dialog.d.ts +2 -0
  29. package/dist/types/widget/components/drawer/adjustments/exchange-adjustments.d.ts +2 -0
  30. package/dist/types/widget/components/drawer/adjustments/exchange-banner.d.ts +2 -0
  31. package/dist/types/widget/components/drawer/adjustments/table/adjustments-table-skeleton.d.ts +2 -0
  32. package/dist/types/widget/components/drawer/adjustments/table/adjustments-table.d.ts +2 -0
  33. package/dist/types/widget/components/drawer/annoucement-bar.d.ts +2 -0
  34. package/dist/types/widget/components/drawer/error-screen.d.ts +6 -0
  35. package/dist/types/widget/components/drawer/exchange-confirmation.d.ts +2 -0
  36. package/dist/types/widget/components/drawer/exchange-drawer.d.ts +5 -0
  37. package/dist/types/widget/components/drawer/exchange-header.d.ts +2 -0
  38. package/dist/types/widget/components/drawer/exchange-placeholder.d.ts +2 -0
  39. package/dist/types/widget/components/drawer/product/product-actions.d.ts +8 -0
  40. package/dist/types/widget/components/drawer/product/product-attributes.d.ts +14 -0
  41. package/dist/types/widget/components/drawer/product/product-errors.d.ts +2 -0
  42. package/dist/types/widget/components/drawer/product/product-image.d.ts +7 -0
  43. package/dist/types/widget/components/drawer/product/product-list.d.ts +2 -0
  44. package/dist/types/widget/components/drawer/product/product.d.ts +9 -0
  45. package/dist/types/widget/components/drawer/product/quantity-picker.d.ts +20 -0
  46. package/dist/types/widget/components/drawer/return/return-product-actions.d.ts +10 -0
  47. package/dist/types/widget/components/drawer/return/return-product-badge.d.ts +7 -0
  48. package/dist/types/widget/components/drawer/return/return-product-list.d.ts +2 -0
  49. package/dist/types/widget/components/drawer/return/return-product-skeleton.d.ts +2 -0
  50. package/dist/types/widget/components/drawer/return/return-product.d.ts +14 -0
  51. package/dist/types/widget/components/drawer/scroll-indicator.d.ts +5 -0
  52. package/dist/types/widget/components/handlers/dialog-handler.d.ts +2 -0
  53. package/dist/types/widget/components/handlers/initialization-handler.d.ts +2 -0
  54. package/dist/types/widget/components/icons/arrow-down.d.ts +2 -0
  55. package/dist/types/widget/components/icons/arrow-left.d.ts +2 -0
  56. package/dist/types/widget/components/icons/arrow-right.d.ts +2 -0
  57. package/dist/types/widget/components/icons/bag.d.ts +2 -0
  58. package/dist/types/widget/components/icons/banner/action.d.ts +2 -0
  59. package/dist/types/widget/components/icons/banner/info.d.ts +2 -0
  60. package/dist/types/widget/components/icons/cart.d.ts +2 -0
  61. package/dist/types/widget/components/icons/chevron.d.ts +2 -0
  62. package/dist/types/widget/components/icons/giftcard.d.ts +2 -0
  63. package/dist/types/widget/components/icons/icon.d.ts +17 -0
  64. package/dist/types/widget/components/icons/spinner.d.ts +2 -0
  65. package/dist/types/widget/components/icons/star.d.ts +2 -0
  66. package/dist/types/widget/components/icons/warning.d.ts +2 -0
  67. package/dist/types/widget/components/icons/x.d.ts +2 -0
  68. package/dist/types/widget/components/is-mounted.d.ts +4 -0
  69. package/dist/types/widget/components/providers/error-provider.d.ts +4 -0
  70. package/dist/types/widget/components/providers/return-context-provider.d.ts +17 -0
  71. package/dist/types/widget/components/providers/root-provider.d.ts +2 -0
  72. package/dist/types/widget/components/providers/widget-context-provider.d.ts +6 -0
  73. package/dist/types/widget/components/return-avatar-stack.d.ts +2 -0
  74. package/dist/types/widget/components/summary/back-button.d.ts +2 -0
  75. package/dist/types/widget/components/summary/exchange-summary.d.ts +2 -0
  76. package/dist/types/widget/components/summary/exchange-total-skeleton.d.ts +2 -0
  77. package/dist/types/widget/components/summary/exchange-total.d.ts +2 -0
  78. package/dist/types/widget/components/toast/toast-container.d.ts +2 -0
  79. package/dist/types/widget/components/toast/toast-provider.d.ts +4 -0
  80. package/dist/types/widget/components/toast/toast.d.ts +16 -0
  81. package/dist/types/widget/components/ui/avatar/avatar-stack-skeleton.d.ts +2 -0
  82. package/dist/types/widget/components/ui/avatar/avatar-stack.d.ts +12 -0
  83. package/dist/types/widget/components/ui/avatar/avatar.d.ts +10 -0
  84. package/dist/types/widget/components/ui/banner/banner-skeleton.d.ts +2 -0
  85. package/dist/types/widget/components/ui/banner/banner.d.ts +13 -0
  86. package/dist/types/widget/components/ui/button.d.ts +11 -0
  87. package/dist/types/widget/components/ui/expander.d.ts +8 -0
  88. package/dist/types/widget/components/ui/image.d.ts +5 -0
  89. package/dist/types/widget/components/ui/link.d.ts +7 -0
  90. package/dist/types/widget/components/ui/price.d.ts +7 -0
  91. package/dist/types/widget/components/ui/skeleton/skeleton-container.d.ts +6 -0
  92. package/dist/types/widget/components/ui/skeleton/skeleton.d.ts +2 -0
  93. package/dist/types/widget/components/widget-container.d.ts +3 -0
  94. package/dist/types/widget/components/widget.d.ts +2 -0
  95. package/dist/types/widget/lib/constants.d.ts +13 -0
  96. package/dist/types/widget/lib/context/dialog-context.d.ts +3 -0
  97. package/dist/types/widget/lib/context/error-context.d.ts +10 -0
  98. package/dist/types/widget/lib/context/return-context.d.ts +12 -0
  99. package/dist/types/widget/lib/context/root-context.d.ts +2 -0
  100. package/dist/types/widget/lib/context/toast-context.d.ts +13 -0
  101. package/dist/types/widget/lib/context/widget-context.d.ts +9 -0
  102. package/dist/types/widget/lib/hooks/common/use-array.d.ts +14 -0
  103. package/dist/types/widget/lib/hooks/common/use-async-state.d.ts +40 -0
  104. package/dist/types/widget/lib/hooks/common/use-dialog.d.ts +11 -0
  105. package/dist/types/widget/lib/hooks/common/use-is-mounted.d.ts +2 -0
  106. package/dist/types/widget/lib/hooks/common/use-once.d.ts +3 -0
  107. package/dist/types/widget/lib/hooks/common/use-value-state.d.ts +7 -0
  108. package/dist/types/widget/lib/hooks/common/use-y-scrollable.d.ts +10 -0
  109. package/dist/types/widget/lib/hooks/context/use-calculation.d.ts +12 -0
  110. package/dist/types/widget/lib/hooks/context/use-cart-items.d.ts +9 -0
  111. package/dist/types/widget/lib/hooks/context/use-currency.d.ts +12 -0
  112. package/dist/types/widget/lib/hooks/context/use-errors.d.ts +2 -0
  113. package/dist/types/widget/lib/hooks/context/use-navigation.d.ts +6 -0
  114. package/dist/types/widget/lib/hooks/context/use-return-context.d.ts +2 -0
  115. package/dist/types/widget/lib/hooks/context/use-root.d.ts +2 -0
  116. package/dist/types/widget/lib/hooks/context/use-theme.d.ts +5 -0
  117. package/dist/types/widget/lib/hooks/context/use-toast.d.ts +2 -0
  118. package/dist/types/widget/lib/hooks/context/use-widget-context.d.ts +2 -0
  119. package/dist/types/widget/lib/hooks/feature/use-api-bridge.d.ts +6 -0
  120. package/dist/types/widget/lib/hooks/feature/use-cart-activator.d.ts +2 -0
  121. package/dist/types/widget/lib/hooks/feature/use-external-events.d.ts +2 -0
  122. package/dist/types/widget/lib/hooks/feature/use-fetch-interceptor.d.ts +4 -0
  123. package/dist/types/widget/lib/hooks/feature/use-override-scroll-blocking.d.ts +2 -0
  124. package/dist/types/widget/lib/types.d.ts +382 -0
  125. package/dist/types/widget/lib/utils/api.d.ts +26 -0
  126. package/dist/types/widget/lib/utils/cart-provider-store.d.ts +3 -0
  127. package/dist/types/widget/lib/utils/cart.d.ts +17 -0
  128. package/dist/types/widget/lib/utils/custom-events.d.ts +48 -0
  129. package/dist/types/widget/lib/utils/dom.d.ts +2 -0
  130. package/dist/types/widget/lib/utils/errors.d.ts +6 -0
  131. package/dist/types/widget/lib/utils/helpers.d.ts +24 -0
  132. package/dist/types/widget/lib/utils/i18n.d.ts +8 -0
  133. package/dist/types/widget/lib/utils/initialization/dataset.d.ts +5 -0
  134. package/dist/types/widget/lib/utils/initialization/font.d.ts +7 -0
  135. package/dist/types/widget/lib/utils/initialization/index.d.ts +6 -0
  136. package/dist/types/widget/lib/utils/initialization/styles.d.ts +4 -0
  137. package/dist/types/widget/lib/utils/initialization/types.d.ts +51 -0
  138. package/dist/types/widget/lib/utils/interceptor/fetch.d.ts +5 -0
  139. package/dist/types/widget/lib/utils/interceptor/index.d.ts +26 -0
  140. package/dist/types/widget/lib/utils/interceptor/xhr.d.ts +5 -0
  141. package/dist/types/widget/lib/utils/logger.d.ts +13 -0
  142. package/dist/types/widget/lib/utils/navigation.d.ts +7 -0
  143. package/dist/types/widget/lib/utils/session.d.ts +54 -0
  144. package/dist/types/widget/lib/utils/shopify.d.ts +6 -0
  145. package/dist/types/widget/lib/utils/storage.d.ts +33 -0
  146. package/dist/variables.css +1 -0
  147. package/dist/widget.css +3 -0
  148. package/dist/widget.js +12006 -0
  149. package/package.json +112 -0
@@ -0,0 +1 @@
1
+ {"common":{"and":"og","title":"Din ombytning","close":"Luk"},"return_products":{"action":"Vis returprodukter","banner":{"giftcard":"Nogle produkter udbetales som gavekort."}},"exchange_placeholder":{"prompt_text":"Vælg de produkter, du vil bytte til","continue":"Shop nu"},"scroll":"Scroll","dialog":{"return_decision":{"cart_detection":{"title":"Er du i gang med en ombytning?","subtext":"For at gennemføre din returnering, skal du bruge knappen herunder.","confirm":"Jeg vil fortsætte med at bytte","reject":"Jeg vil lave et nyt køb"},"cookie_detection":{"title":"Er du i gang med en ombytning?","subtext":"Det ligner du er i gang med en ombytning. Vil du fortsætte, hvor du slap?","confirm":"Fortsæt ombytning","reject":"Luk ombytning"}}},"price_details":{"products":"Din ombytning","price_change":"Rabat på ombytning","giftcard":"Gavekort","return_label":"Returlabel"},"confirmation":{"title_refund":"Refundering","title_checkout":"Til betaling","confirm":"Færdiggør returneringen","disclaimer":"Du bekræfter først din ombytning på næste side."},"banner":{"fast_exchange":"Hurtig ombytning: Vi sender, når du indleverer!","free_shipping_label":"Din returlabel er gratis, fordi du bytter.","exchange_info":"Byt til præcis det produkt, du ønsker."},"toast":{"product_exchange_error":"Der kan desværre ikke ombyttes til <b>{product_name}</b>.","bundle_exchange_error":"Der kan desværre ikke ombyttes til bundles som <b>{product_name}</b>."},"announcement":{"this_step":"Dette trin:","step_1":"Vælg produkter til ombytning","step_2":"Færdiggør ombytningen"},"product":{"go_to_product":"Gå til produkt","remove":"Fjern","badge":{"giftcard":"Gavekort"},"error":{"network_error":"Der opstod en netværksfejl. Prøv igen.","product_unavailable":"Dette produkt er desværre ikke tilgængeligt.","unknown_error":"Der opstod en uventet fejl.","product_limit":"Du kan desværre ikke tilføje flere af dette produkt","refund_expired":"Da din frist for refundering er udløbet, skal du i stedet vælge en ombytning for at færdiggøre din returnering.","no_refund":"Refundering er ikke muligt på <b>{product_name}</b>. Du skal derfor vælge en ombytning for at færdiggøre din returnering."}},"summary":{"back":"Gå tilbage","cancel":"Annuller","title":"Ombytning i gang","order":"Ordre","cart_contents":"I din kurv","view_cart":"Vis kurv"},"piece":"{count} stk."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"und","title":"Dein Umtausch","close":"Schließen"},"return_products":{"action":"Rückgabeprodukte anzeigen","banner":{"giftcard":"Einige Produkte werden als Geschenkkarten ausgezahlt."}},"exchange_placeholder":{"prompt_text":"Wähle die Produkte, die du umtauschen möchtest","continue":"Weiter shoppen"},"scroll":"Scrollen","dialog":{"return_decision":{"cart_detection":{"title":"Bist du mitten in einem Umtausch?","subtext":"Um deine Rückgabe abzuschließen, benutze den Button unten.","confirm":"Ich möchte mit dem Umtausch fortfahren","reject":"Ich möchte einen neuen Kauf tätigen"},"cookie_detection":{"title":"Bist du mitten in einem Umtausch?","subtext":"Es sieht so aus, als wärst du mitten in einem Umtausch. Möchtest du fortfahren?","confirm":"Umtausch fortsetzen","reject":"Umtausch schließen"}}},"price_details":{"products":"Dein Umtausch","price_change":"Rabatt auf Umtausch","giftcard":"Gutschein","return_label":"Rücksendeetikett"},"confirmation":{"title_refund":"Rückerstattung","title_checkout":"Zur Kasse","confirm":"Rückgabe abschließen","disclaimer":"Du bestätigst deinen Umtausch auf der nächsten Seite."},"banner":{"fast_exchange":"Schneller Umtausch: Wir versenden, sobald du abgibst!","free_shipping_label":"Dein Rücksendeetikett ist kostenlos, da du umtauschst.","exchange_info":"Tausche genau zu dem Produkt, das du willst."},"toast":{"product_exchange_error":"Leider kann <b>{product_name}</b> nicht umgetauscht werden.","bundle_exchange_error":"Leider können Bundles wie <b>{product_name}</b> nicht umgetauscht werden."},"announcement":{"this_step":"Dieser Schritt:","step_1":"Umtausch wählen","step_2":"Umtausch abschließen"},"product":{"go_to_product":"Zum Produkt","remove":"Entfernen","badge":{"giftcard":"Geschenkkarte"},"error":{"network_error":"Netzwerkfehler aufgetreten. Bitte versuchen Sie es erneut.","product_unavailable":"Dieses Produkt ist derzeit nicht verfügbar.","unknown_error":"Ein unerwarteter Fehler ist aufgetreten.","product_limit":"Leider können Sie nicht mehr von diesem Produkt hinzufügen.","refund_expired":"Da Ihre Frist für die Rückerstattung abgelaufen ist, müssen Sie stattdessen einen Umtausch wählen, um Ihre Rückgabe abzuschließen.","no_refund":"Eine Rückerstattung ist für <b>{product_name}</b> nicht möglich. Sie müssen daher einen Umtausch wählen, um Ihre Rückgabe abzuschließen."}},"summary":{"back":"Zurück","cancel":"Abbrechen","title":"Umtausch läuft","order":"Bestellung","cart_contents":"In deinem Warenkorb","view_cart":"Warenkorb"},"piece":"{count} Stk."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"and","title":"Your exchange","close":"Close"},"return_products":{"action":"Show return products","banner":{"giftcard":"Some products are paid out as gift cards."}},"exchange_placeholder":{"prompt_text":"Select the products you want to exchange to","continue":"Continue shopping"},"scroll":"Scroll","dialog":{"return_decision":{"cart_detection":{"title":"Are you in the middle of an exchange?","subtext":"To complete your return, use the button below.","confirm":"I want to continue exchanging","reject":"I want to make a new purchase"},"cookie_detection":{"title":"Are you in the middle of an exchange?","subtext":"It looks like you're in the middle of an exchange. Want to continue where you left off?","confirm":"Continue exchange","reject":"Close exchange"}}},"price_details":{"products":"Your exchange","price_change":"Exchange discount","giftcard":"Giftcard","return_label":"Return label"},"confirmation":{"title_refund":"Refund","title_checkout":"To checkout","confirm":"Complete return","disclaimer":"You will confirm your exchange on the next page."},"banner":{"fast_exchange":"Fast exchange: We ship when you drop off!","free_shipping_label":"Your return label is free because you're exchanging.","exchange_info":"Exchange to exactly the product you want."},"toast":{"product_exchange_error":"Unfortunately, <b>{product_name}</b> cannot be exchanged.","bundle_exchange_error":"Unfortunately, bundles like <b>{product_name}</b> cannot be exchanged."},"announcement":{"this_step":"This step:","step_1":"Select exchanges","step_2":"Complete exchange"},"product":{"go_to_product":"Go to product","remove":"Remove","badge":{"giftcard":"Gift card"},"error":{"network_error":"Network error occurred. Please try again.","product_unavailable":"This product is currently unavailable.","unknown_error":"An unexpected error occurred.","product_limit":"Unfortunately, you cannot add more of this product.","refund_expired":"Since your refund deadline has expired, you must instead choose an exchange to complete your return.","no_refund":"Refund is not possible for <b>{product_name}</b>. You must therefore choose an exchange to complete your return."}},"summary":{"back":"Go back","cancel":"Cancel","title":"Exchange in progress","order":"Order","cart_contents":"In your cart","view_cart":"View cart"},"piece":"{count} pcs."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"y","title":"Tu cambio","close":"Cerrar"},"return_products":{"action":"Mostrar productos para devolución","banner":{"giftcard":"Algunos productos se reembolsan como tarjetas de regalo."}},"exchange_placeholder":{"prompt_text":"Selecciona los productos que deseas cambiar","continue":"Continuar comprando"},"scroll":"Desplazar","dialog":{"return_decision":{"cart_detection":{"title":"¿Estás en medio de un cambio?","subtext":"Para completar tu devolución, usa el botón de abajo.","confirm":"Quiero continuar con el cambio","reject":"Quiero hacer una nueva compra"},"cookie_detection":{"title":"¿Estás en medio de un cambio?","subtext":"Parece que estás en medio de un cambio. ¿Quieres continuar donde lo dejaste?","confirm":"Continuar con el cambio","reject":"Cerrar el cambio"}}},"price_details":{"products":"Tu cambio","price_change":"Descuento por cambio","giftcard":"Tarjeta de regalo","return_label":"Etiqueta de devolución"},"confirmation":{"title_refund":"Reembolso","title_checkout":"Para finalizar la compra","confirm":"Completar la devolución","disclaimer":"Confirmarás tu cambio en la siguiente página."},"banner":{"fast_exchange":"Cambio rápido: ¡enviamos cuando entregues!","free_shipping_label":"La etiqueta de devolución es gratuita porque estás realizando un cambio.","exchange_info":"Cambia por exactamente el producto que deseas."},"toast":{"product_exchange_error":"Desafortunadamente, <b>{product_name}</b> no puede ser cambiado.","bundle_exchange_error":"Desafortunadamente, los bundles como <b>{product_name}</b> no pueden ser cambiados."},"announcement":{"this_step":"Este paso:","step_1":"Seleccionar cambios","step_2":"Completar el cambio"},"product":{"go_to_product":"Ir al producto","remove":"Eliminar","badge":{"giftcard":"Tarjeta de regalo"},"error":{"network_error":"Ocurrió un error de red. Por favor, intenta de nuevo.","product_unavailable":"Este producto no está disponible actualmente.","unknown_error":"Ocurrió un error inesperado.","product_limit":"Desafortunadamente, no puedes añadir más de este producto.","refund_expired":"Dado que la fecha límite para el reembolso ha expirado, debes elegir un cambio para completar tu devolución.","no_refund":"El reembolso no es posible para <b>{product_name}</b>. Por lo tanto, debes elegir un cambio para completar tu devolución."}},"summary":{"back":"Volver","cancel":"Cancelar","title":"Cambio en curso","order":"Pedido","cart_contents":"En tu carrito","view_cart":"Carrito"},"piece":"{count} uds."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"ja","title":"Vaihtosi","close":"Sulje"},"return_products":{"action":"Näytä palautettavat tuotteet","banner":{"giftcard":"Jotkut tuotteet maksetaan lahjakorteilla."}},"exchange_placeholder":{"prompt_text":"Valitse tuotteet, jotka haluat vaihtaa","continue":"Jatka ostoksia"},"scroll":"Vieritä","dialog":{"return_decision":{"cart_detection":{"title":"Oletko kesken vaihdon?","subtext":"Viimeistele palautus käyttämällä alla olevaa painiketta.","confirm":"Haluan jatkaa vaihtoa","reject":"Haluan tehdä uuden ostoksen"},"cookie_detection":{"title":"Oletko kesken vaihdon?","subtext":"Näyttää siltä, että olet kesken vaihdon. Haluatko jatkaa siitä, mihin jäit?","confirm":"Jatka vaihtoa","reject":"Sulje vaihto"}}},"price_details":{"products":"Vaihtosi","price_change":"Vaihtoalennus","giftcard":"Lahjakortti","return_label":"Palautusetiketti"},"confirmation":{"title_refund":"Hyvitys","title_checkout":"Kassalle","confirm":"Viimeistele palautus","disclaimer":"Vahvistat vaihdon seuraavalla sivulla."},"banner":{"fast_exchange":"Nopea vaihto: Lähetämme, kun palautat!","free_shipping_label":"Palautusetikettisi on ilmainen, koska vaihdat.","exchange_info":"Vaihda juuri haluamaasi tuotteeseen."},"toast":{"product_exchange_error":"Valitettavasti <b>{product_name}</b> ei voi vaihtaa.","bundle_exchange_error":"Valitettavasti bundle-tuotteita kuten <b>{product_name}</b> ei voi vaihtaa."},"announcement":{"this_step":"Tämä vaihe:","step_1":"Valitse vaihdot","step_2":"Viimeistele vaihto"},"product":{"go_to_product":"Siirry tuotteeseen","remove":"Poista","badge":{"giftcard":"Lahjakortti"},"error":{"network_error":"Verkkovirhe tapahtui. Yritä uudelleen.","product_unavailable":"Tämä tuote ei ole tällä hetkellä saatavilla.","unknown_error":"Odottamaton virhe tapahtui.","product_limit":"Valitettavasti et voi lisätä enempää tätä tuotetta.","refund_expired":"Koska hyvitysaikasi on umpeutunut, sinun on valittava vaihto palauttaaksesi.","no_refund":"Hyvitys ei ole mahdollinen tuotteelle <b>{product_name}</b>. Sinun on siksi valittava vaihto palauttaaksesi."}},"summary":{"back":"Palaa takaisin","cancel":"Peruuta","title":"Vaihto käynnissä","order":"Tilaus","cart_contents":"Ostoskorissasi","view_cart":"Ostoskori"},"piece":"{count} kpl"}
@@ -0,0 +1 @@
1
+ {"common":{"and":"et","title":"Votre échange","close":"Fermer"},"return_products":{"action":"Afficher les produits de retour","banner":{"giftcard":"Certains produits sont remboursés sous forme de cartes cadeaux."}},"exchange_placeholder":{"prompt_text":"Sélectionnez les produits que vous souhaitez échanger","continue":"Continuer les achats"},"scroll":"Faire défiler","dialog":{"return_decision":{"cart_detection":{"title":"Êtes-vous en cours d'échange ?","subtext":"Pour terminer votre retour, utilisez le bouton ci-dessous.","confirm":"Je veux continuer l'échange","reject":"Je veux faire un nouvel achat"},"cookie_detection":{"title":"Êtes-vous en cours d'échange ?","subtext":"Il semble que vous soyez en cours d'échange. Voulez-vous continuer où vous vous êtes arrêté ?","confirm":"Continuer l'échange","reject":"Fermer l'échange"}}},"price_details":{"products":"Votre échange","price_change":"Remise sur l'échange","giftcard":"Carte cadeau","return_label":"Étiquette de retour"},"confirmation":{"title_refund":"Remboursement","title_checkout":"Vers la caisse","confirm":"Terminer le retour","disclaimer":"Vous confirmerez votre échange sur la page suivante."},"banner":{"fast_exchange":"Échange rapide : Nous expédions quand vous déposez !","free_shipping_label":"Votre étiquette de retour est gratuite car vous échangez.","exchange_info":"Échangez exactement contre le produit que vous voulez."},"toast":{"product_exchange_error":"Malheureusement, <b>{product_name}</b> ne peut pas être échangé.","bundle_exchange_error":"Malheureusement, les bundles comme <b>{product_name}</b> ne peuvent pas être échangés."},"announcement":{"this_step":"Cette étape :","step_1":"Sélectionner les échanges","step_2":"Terminer l'échange"},"product":{"go_to_product":"Aller au produit","remove":"Supprimer","badge":{"giftcard":"Carte cadeau"},"error":{"network_error":"Une erreur réseau s'est produite. Veuillez réessayer.","product_unavailable":"Ce produit n'est actuellement pas disponible.","unknown_error":"Une erreur inattendue s'est produite.","product_limit":"Malheureusement, vous ne pouvez pas ajouter plus de ce produit.","refund_expired":"Comme votre délai de remboursement a expiré, vous devez plutôt choisir un échange pour terminer votre retour.","no_refund":"Le remboursement n'est pas possible pour <b>{product_name}</b>. Vous devez donc choisir un échange pour terminer votre retour."}},"summary":{"back":"Retour","cancel":"Annuler","title":"Échange en cours","order":"Commande","cart_contents":"Dans votre panier","view_cart":"Panier"},"piece":"{count} pcs."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"e","title":"Il tuo cambio","close":"Chiudi"},"return_products":{"action":"Mostra prodotti da restituire","banner":{"giftcard":"Alcuni prodotti vengono rimborsati come buoni regalo."}},"exchange_placeholder":{"prompt_text":"Seleziona i prodotti che desideri cambiare","continue":"Continua a fare acquisti"},"scroll":"Scorri","dialog":{"return_decision":{"cart_detection":{"title":"Sei nel mezzo di un cambio?","subtext":"Per completare il tuo reso, usa il pulsante qui sotto.","confirm":"Voglio continuare con il cambio","reject":"Voglio effettuare un nuovo acquisto"},"cookie_detection":{"title":"Sei nel mezzo di un cambio?","subtext":"Sembra che tu sia nel mezzo di un cambio. Vuoi continuare da dove hai lasciato?","confirm":"Continua il cambio","reject":"Chiudi il cambio"}}},"price_details":{"products":"Il tuo cambio","price_change":"Sconto sul cambio","giftcard":"Buono regalo","return_label":"Etichetta di reso"},"confirmation":{"title_refund":"Rimborso","title_checkout":"Per procedere al pagamento","confirm":"Completa il reso","disclaimer":"Confermerai il tuo cambio nella pagina successiva."},"banner":{"fast_exchange":"Cambio rapido: spediamo quando consegni!","free_shipping_label":"L'etichetta di reso è gratuita perché stai effettuando un cambio.","exchange_info":"Cambia con esattamente il prodotto che desideri."},"toast":{"product_exchange_error":"Sfortunatamente, <b>{product_name}</b> non può essere cambiato.","bundle_exchange_error":"Sfortunatamente, i bundle come <b>{product_name}</b> non possono essere cambiati."},"announcement":{"this_step":"Questo passaggio:","step_1":"Seleziona i cambi","step_2":"Completa il cambio"},"product":{"go_to_product":"Vai al prodotto","remove":"Rimuovi","badge":{"giftcard":"Buono regalo"},"error":{"network_error":"Si è verificato un errore di rete. Riprova.","product_unavailable":"Questo prodotto è attualmente non disponibile.","unknown_error":"Si è verificato un errore imprevisto.","product_limit":"Sfortunatamente, non puoi aggiungere altri di questo prodotto.","refund_expired":"Poiché la scadenza per il rimborso è scaduta, devi invece scegliere un cambio per completare il reso.","no_refund":"Il rimborso non è possibile per <b>{product_name}</b>. Devi quindi scegliere un cambio per completare il reso."}},"summary":{"back":"Torna indietro","cancel":"Annulla","title":"Cambio in corso","order":"Ordine","cart_contents":"Nel tuo carrello","view_cart":"Carrello"},"piece":"{count} pz."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"og","title":"Byttet ditt","close":"Lukk"},"return_products":{"action":"Vis returprodukter","banner":{"giftcard":"Noen produkter utbetales som gavekort."}},"exchange_placeholder":{"prompt_text":"Velg produktene du vil bytte til","continue":"Shop nu"},"scroll":"Bla","dialog":{"return_decision":{"cart_detection":{"title":"Er du i gang med et bytte?","subtext":"Bruk knappen under for å fullføre returen din.","confirm":"Jeg vil fortsette å bytte","reject":"Jeg vil gjøre et nytt kjøp"},"cookie_detection":{"title":"Er du i gang med et bytte?","subtext":"Det ser ut som du er i gang med et bytte. Vil du fortsette der du slapp?","confirm":"Fortsett bytte","reject":"Lukk bytte"}}},"price_details":{"products":"Ditt bytte","price_change":"Rabatt på bytte","giftcard":"Gavekort","return_label":"Returetikett"},"confirmation":{"title_refund":"Refusjon","title_checkout":"Til kassen","confirm":"Fullfør retur","disclaimer":"Du bekrefter byttet ditt på neste side."},"banner":{"fast_exchange":"Raskt bytte: Vi sender når du leverer!","free_shipping_label":"Returetiketten din er gratis fordi du bytter.","exchange_info":"Bytt til akkurat det produktet du ønsker."},"toast":{"product_exchange_error":"Dessverre kan ikke <b>{product_name}</b> byttes.","bundle_exchange_error":"Dessverre kan ikke bundles som <b>{product_name}</b> byttes."},"announcement":{"this_step":"Dette trinnet:","step_1":"Velg bytter","step_2":"Fullfør bytte"},"product":{"go_to_product":"Gå til produkt","remove":"Fjern","badge":{"giftcard":"Gavekort"},"error":{"network_error":"Nettverksfeil oppstod. Vennligst prøv igjen.","product_unavailable":"Dette produktet er for øyeblikket ikke tilgjengelig.","unknown_error":"En uventet feil oppstod.","product_limit":"Beklager, du kan ikke legge til flere av dette produktet.","refund_expired":"Siden fristen for refusjon har utløpt, må du i stedet velge et bytte for å fullføre returen.","no_refund":"Refusjon er ikke mulig for <b>{product_name}</b>. Du må derfor velge et bytte for å fullføre returen."}},"summary":{"back":"Gå tilbake","cancel":"Avbryt","title":"Bytte pågår","order":"Bestilling","cart_contents":"I handlekurven din","view_cart":"Handlekurv"},"piece":"{count} stk."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"en","title":"Je omruiling","close":"Sluiten"},"return_products":{"action":"Retourproducten tonen","banner":{"giftcard":"Sommige producten worden uitbetaald als cadeaukaarten."}},"exchange_placeholder":{"prompt_text":"Kies de producten waarvoor je wilt ruilen","continue":"Shop verder"},"scroll":"Scrollen","dialog":{"return_decision":{"cart_detection":{"title":"Ben je bezig met een omruiling?","subtext":"Gebruik de knop hieronder om je retour af te ronden.","confirm":"Ik wil doorgaan met omruilen","reject":"Ik wil een nieuwe aankoop doen"},"cookie_detection":{"title":"Ben je bezig met een omruiling?","subtext":"Het lijkt erop dat je midden in een omruiling zit. Wil je doorgaan?","confirm":"Doorgaan met omruiling","reject":"Omruiling sluiten"}}},"price_details":{"products":"Jouw omruiling","price_change":"Korting op omruiling","giftcard":"Cadeaubon","return_label":"Retourlabel"},"confirmation":{"title_refund":"Terugbetaling","title_checkout":"Naar afrekenen","confirm":"Retour afronden","disclaimer":"Je bevestigt je omruiling op de volgende pagina."},"banner":{"fast_exchange":"Snelle omruiling: We verzenden zodra je afgeeft!","free_shipping_label":"Je retourlabel is gratis omdat je omruilt.","exchange_info":"Ruil voor precies het product dat je wilt."},"toast":{"product_exchange_error":"Helaas kan <b>{product_name}</b> niet omgeruild worden.","bundle_exchange_error":"Helaas kunnen bundles zoals <b>{product_name}</b> niet omgeruild worden."},"announcement":{"this_step":"Deze stap:","step_1":"Kies omruilingen","step_2":"Omruiling voltooien"},"product":{"go_to_product":"Ga naar product","remove":"Verwijderen","badge":{"giftcard":"Cadeaukaart"},"error":{"network_error":"Netwerkfout opgetreden. Probeer het opnieuw.","product_unavailable":"Dit product is momenteel niet beschikbaar.","unknown_error":"Er is een onverwachte fout opgetreden.","product_limit":"Helaas kun je niet meer van dit product toevoegen.","refund_expired":"Omdat je termijn voor terugbetaling is verlopen, moet je in plaats daarvan een omruiling kiezen om je retour te voltooien.","no_refund":"Terugbetaling is niet mogelijk voor <b>{product_name}</b>. Je moet daarom een omruiling kiezen om je retour te voltooien."}},"summary":{"back":"Ga terug","cancel":"Annuleren","title":"Omruiling bezig","order":"Bestelling","cart_contents":"In je winkelwagen","view_cart":"Winkelwagen"},"piece":"{count} st."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"i","title":"Twoja wymiana","close":"Zamknij"},"return_products":{"action":"Pokaż produkty zwrotu","banner":{"giftcard":"Niektóre produkty są wypłacane jako karty podarunkowe."}},"exchange_placeholder":{"prompt_text":"Wybierz produkty, na które chcesz wymienić","continue":"Kontynuuj zakupy"},"scroll":"Przewiń","dialog":{"return_decision":{"cart_detection":{"title":"Czy jesteś w trakcie wymiany?","subtext":"Aby zakończyć zwrot, użyj przycisku poniżej.","confirm":"Chcę kontynuować wymianę","reject":"Chcę dokonać nowego zakupu"},"cookie_detection":{"title":"Czy jesteś w trakcie wymiany?","subtext":"Wygląda na to, że jesteś w trakcie wymiany. Chcesz kontynuować tam, gdzie skończyłeś?","confirm":"Kontynuuj wymianę","reject":"Zamknij wymianę"}}},"price_details":{"products":"Twoja wymiana","price_change":"Rabat na wymianę","giftcard":"Karta podarunkowa","return_label":"Etykieta zwrotu"},"confirmation":{"title_refund":"Zwrot pieniędzy","title_checkout":"Do kasy","confirm":"Zakończ zwrot","disclaimer":"Potwierdzisz swoją wymianę na następnej stronie."},"banner":{"fast_exchange":"Szybka wymiana: Wysyłamy gdy oddajesz!","free_shipping_label":"Twoja etykieta zwrotu jest darmowa, ponieważ wymieniasz.","exchange_info":"Wymień na dokładnie ten produkt, który chcesz."},"toast":{"product_exchange_error":"Niestety, <b>{product_name}</b> nie może być wymieniony.","bundle_exchange_error":"Niestety, zestawy takie jak <b>{product_name}</b> nie mogą być wymienione."},"announcement":{"this_step":"Ten krok:","step_1":"Wybierz wymiany","step_2":"Zakończ wymianę"},"product":{"go_to_product":"Przejdź do produktu","remove":"Usuń","badge":{"giftcard":"Karta podarunkowa"},"error":{"network_error":"Wystąpił błąd sieci. Spróbuj ponownie.","product_unavailable":"Ten produkt jest obecnie niedostępny.","unknown_error":"Wystąpił nieoczekiwany błąd.","product_limit":"Niestety, nie możesz dodać więcej tego produktu.","refund_expired":"Ponieważ minął termin zwrotu pieniędzy, musisz wybrać wymianę, aby zakończyć zwrot.","no_refund":"Zwrot pieniędzy nie jest możliwy dla <b>{product_name}</b>. Musisz więc wybrać wymianę, aby zakończyć zwrot."}},"summary":{"back":"Wstecz","cancel":"Anuluj","title":"Wymiana w toku","order":"Zamówienie","cart_contents":"W twoim koszyku","view_cart":"Koszyk"},"piece":"{count} szt."}
@@ -0,0 +1 @@
1
+ {"common":{"and":"och","title":"Ditt byte","close":"Stäng"},"return_products":{"action":"Visa returprodukter","banner":{"giftcard":"Vissa produkter betalas ut som presentkort."}},"exchange_placeholder":{"prompt_text":"Välj produkterna du vill byta till","continue":"Shoppa vidare"},"scroll":"Skrolla","dialog":{"return_decision":{"cart_detection":{"title":"Byter du något just nu?","subtext":"För att slutföra returen, använd knappen nedan.","confirm":"Jag vill fortsätta byta","reject":"Jag vill göra ett nytt köp"},"cookie_detection":{"title":"Byter du något just nu?","subtext":"Det verkar som att du håller på med ett byte. Vill du fortsätta?","confirm":"Fortsätt byte","reject":"Stäng byte"}}},"price_details":{"products":"Ditt byte","price_change":"Rabatt på utbyte","giftcard":"Presentkort","return_label":"Returetikett"},"confirmation":{"title_refund":"Återbetalning","title_checkout":"Till kassan","confirm":"Slutför retur","disclaimer":"Du bekräftar ditt byte på nästa sida."},"banner":{"fast_exchange":"Snabbt byte: Vi skickar när du lämnar in!","free_shipping_label":"Din returetikett är gratis eftersom du byter.","exchange_info":"Byt till exakt den produkt du vill ha."},"toast":{"product_exchange_error":"Tyvärr kan <b>{product_name}</b> inte bytas.","bundle_exchange_error":"Tyvärr kan bundles som <b>{product_name}</b> inte bytas."},"announcement":{"this_step":"Detta steg:","step_1":"Välj byten","step_2":"Slutför byte"},"product":{"go_to_product":"Gå till produkt","remove":"Ta bort","badge":{"giftcard":"Presentkort"},"error":{"network_error":"Nätverksfel inträffade. Vänligen försök igen.","product_unavailable":"Den här produkten är för närvarande inte tillgänglig.","unknown_error":"Ett oväntat fel inträffade.","product_limit":"Tyvärr kan du inte lägga till fler av denna produkt.","refund_expired":"Eftersom din frist för återbetalning har gått ut, måste du istället välja ett byte för att slutföra din retur.","no_refund":"Återbetalning är inte möjlig för <b>{product_name}</b>. Du måste därför välja ett byte för att slutföra din retur."}},"summary":{"back":"Gå tillbaka","cancel":"Avbryt","title":"Byte pågår","order":"Order","cart_contents":"I din kundvagn","view_cart":"Kundvagn"},"piece":"{count} st."}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * API module exports
3
+ */
4
+ export { Returnflows, default } from "./widget-api";
5
+ export * from "./types";
6
+ export * from "./state-bridge";
@@ -0,0 +1,37 @@
1
+ import type { IReturnContext } from "../widget/lib/context/return-context";
2
+ import type { IToastContext } from "../widget/lib/context/toast-context";
3
+ import type { ValueState } from "../widget/lib/hooks/common/use-value-state";
4
+ import { CalculationResponse, ShopifyCart, WidgetViewState } from "../widget/lib/types";
5
+ import type { WidgetConfiguration } from "../widget/lib/utils/initialization/types";
6
+ import type { CartInput, CartProvider, EventCallback, EventName, OrderData, SetCartOutput } from "./types";
7
+ export declare function registerBridge({ widgetViewState, returnContext, toastContext, config }: {
8
+ widgetViewState: ValueState<WidgetViewState>;
9
+ returnContext: IReturnContext;
10
+ toastContext: IToastContext;
11
+ config: WidgetConfiguration;
12
+ }): void;
13
+ export declare function unregisterBridge(): void;
14
+ export declare function setCartProvider(provider: CartProvider | null): void;
15
+ export declare function getCartProvider(): CartProvider | null;
16
+ export declare function isInitialized(): boolean;
17
+ export declare function getDrawerState(): WidgetViewState | null;
18
+ export declare function setDrawerState(state: WidgetViewState): void;
19
+ export declare function isDrawerOpen(): boolean;
20
+ export declare function getCart(): ShopifyCart | null;
21
+ export declare function getCalculation(): CalculationResponse | null;
22
+ export declare function getOrder(): OrderData | null;
23
+ export declare function isLoading(): boolean;
24
+ export declare function setCart(cart: CartInput): Promise<SetCartOutput>;
25
+ export declare function refetchCart(): Promise<SetCartOutput | void>;
26
+ export declare function clearCart(): Promise<SetCartOutput | void>;
27
+ export declare function showToast(options: {
28
+ message: string;
29
+ tone?: "info" | "tip" | "action" | "error" | "giftcard";
30
+ duration?: number;
31
+ onClose?: () => void;
32
+ }): string;
33
+ export declare function dismissToast(id: string): void;
34
+ export declare function clearToasts(): void;
35
+ export declare function addEventListener<K extends EventName>(event: K, callback: EventCallback<K>): void;
36
+ export declare function removeEventListener<K extends EventName>(event: K, callback: EventCallback<K>): void;
37
+ export declare function emitEvent<K extends EventName>(event: K, ...args: K extends "error" ? [Error] : K extends "calculation:updated" ? [CalculationResponse] : K extends "cart:updated" ? [ShopifyCart] : []): void;
@@ -0,0 +1,3 @@
1
+ import type { CartInput, CartProvider, ShopifyCart } from "./types";
2
+ export declare function normalizeCartInput(cart: CartInput): ShopifyCart;
3
+ export declare function wrapCartProvider(provider: CartProvider): CartProvider;
@@ -0,0 +1,402 @@
1
+ import { CommonOptions } from "../widget/lib/utils/initialization/types";
2
+ export declare enum WidgetViewState {
3
+ Collapsed = "COLLAPSED",
4
+ Open = "OPEN"
5
+ }
6
+ export interface ShopifyCartItem {
7
+ variant_id: number;
8
+ quantity: number;
9
+ title: string;
10
+ price: number;
11
+ product_id: number;
12
+ product_title: string;
13
+ handle: string;
14
+ image: string;
15
+ grams: number;
16
+ line_price: number;
17
+ final_price: number;
18
+ final_line_price: number;
19
+ id?: number;
20
+ line_id?: string;
21
+ merchandise_id?: string;
22
+ properties?: Record<string, unknown>;
23
+ key?: string;
24
+ variant_title?: string;
25
+ quantity_rule?: {
26
+ min: number | null;
27
+ max: number | null;
28
+ increment: number | null;
29
+ };
30
+ original_price?: number;
31
+ presentment_price?: number;
32
+ discounted_price?: number;
33
+ original_line_price?: number;
34
+ total_discount?: number;
35
+ discounts?: Array<unknown>;
36
+ sku?: string;
37
+ vendor?: string;
38
+ taxable?: boolean;
39
+ product_has_only_default_variant?: boolean;
40
+ gift_card?: boolean;
41
+ url?: string;
42
+ featured_image?: {
43
+ aspect_ratio: number;
44
+ alt: string;
45
+ height: number;
46
+ url: string;
47
+ width: number;
48
+ };
49
+ requires_shipping?: boolean;
50
+ product_type?: string;
51
+ product_description?: string;
52
+ variant_options?: Array<string>;
53
+ options_with_values?: Array<{
54
+ name: string;
55
+ value: string;
56
+ }>;
57
+ line_level_discount_allocations?: Array<unknown>;
58
+ line_level_total_discount?: number;
59
+ has_components?: boolean;
60
+ }
61
+ export interface ShopifyCart {
62
+ items: Array<ShopifyCartItem>;
63
+ item_count: number;
64
+ token?: string;
65
+ note?: string;
66
+ attributes?: Record<string, unknown>;
67
+ original_total_price?: number;
68
+ total_price?: number;
69
+ total_discount?: number;
70
+ total_weight?: number;
71
+ requires_shipping?: boolean;
72
+ currency?: string;
73
+ items_subtotal_price?: number;
74
+ cart_level_discount_applications?: Array<unknown>;
75
+ discount_codes?: Array<unknown>;
76
+ }
77
+ export interface CalculationExchangeProduct {
78
+ variantId: string | undefined;
79
+ productId: string;
80
+ productTitle: string;
81
+ price: number;
82
+ compareAtPrice: number | null;
83
+ coverage: {
84
+ originalProductId: string;
85
+ originalVariantId: string;
86
+ quantityCovered: number;
87
+ originalUnitPrice: number;
88
+ exchangeUnitPrice: number;
89
+ coveredAmount: number;
90
+ } | null;
91
+ }
92
+ export interface CalculationLineItem {
93
+ id: string;
94
+ lineItemId: string;
95
+ variantId: string;
96
+ productId: string;
97
+ quantity: number;
98
+ lineItemDistributionKey: number;
99
+ action: "NOT_DECIDED" | "REFUND" | "EXCHANGE" | "SWAP" | "GIFTCARD";
100
+ originalPrice: number;
101
+ price: number;
102
+ discountedPrice: number;
103
+ originalTotal: number;
104
+ total: number;
105
+ discountedTotal: number;
106
+ metafield: {
107
+ namespace: unknown;
108
+ key: unknown;
109
+ value: unknown;
110
+ };
111
+ }
112
+ export interface CalculationResponse {
113
+ percentageOfReturn: number;
114
+ returnLabelPrice: number;
115
+ giftCardBonusAmount: number;
116
+ refundMethods: {
117
+ refund: number;
118
+ giftcard: number;
119
+ exchange: number;
120
+ };
121
+ distributionKeysByAction: {
122
+ REFUND: number;
123
+ EXCHANGE: number;
124
+ GIFTCARD: number;
125
+ };
126
+ shipping: {
127
+ amount: number;
128
+ amountInCurrency: number;
129
+ originalOrderShipping: number;
130
+ };
131
+ orderDiscounts: Array<unknown>;
132
+ discountSummary: {
133
+ originalDiscountTotal: number;
134
+ adjustedDiscountTotal: number;
135
+ appliedToReturnSubtotal: number;
136
+ hasDiscounts: boolean;
137
+ hasAdjustedDiscounts: boolean;
138
+ discountAppliedToExchange: boolean;
139
+ discountAddedToReturnSubtotal: boolean;
140
+ shippingRefundAppliedToReturnSubtotal: boolean;
141
+ };
142
+ lineItems: Array<CalculationLineItem>;
143
+ exchange: {
144
+ originalTotal: number;
145
+ newTotal: number;
146
+ priceDifference: number;
147
+ isUpsell: boolean;
148
+ additionalCharge: number;
149
+ totalCoveredAmount: number;
150
+ discountSummary: {
151
+ originalDiscountTotal: number;
152
+ adjustedDiscountTotal: number;
153
+ appliedToReturnSubtotal: number;
154
+ hasDiscounts: boolean;
155
+ hasAdjustedDiscounts: boolean;
156
+ discountAppliedToExchange: boolean;
157
+ discountAddedToReturnSubtotal: boolean;
158
+ shippingRefundAppliedToReturnSubtotal: boolean;
159
+ };
160
+ exchangeDetails: Array<CalculationExchangeProduct>;
161
+ };
162
+ currency: {
163
+ localCurrency: string;
164
+ shopCurrency: string;
165
+ exchangeRate: number;
166
+ };
167
+ options: {
168
+ coverPriceChange: boolean;
169
+ orderDiscountMatch: boolean;
170
+ productDiscountMatch: boolean;
171
+ giftCardBonusPercentage: number;
172
+ refundOriginalShippingType: string;
173
+ };
174
+ returnSubtotal: number;
175
+ orderSubtotal: number;
176
+ preferedLabelDeduction: string;
177
+ total: number;
178
+ calculatedAt: string;
179
+ detailedBreakdown: {
180
+ originalOrder: {
181
+ subtotal: number;
182
+ shipping: number;
183
+ discounts: Array<unknown>;
184
+ total: number;
185
+ };
186
+ return: {
187
+ subtotal: {
188
+ items: number;
189
+ returnLabelPrice: number;
190
+ shippingRefund: number;
191
+ discounts: Array<unknown>;
192
+ total: number;
193
+ };
194
+ refundMethods: {
195
+ refund: {
196
+ amount: number;
197
+ description: string;
198
+ };
199
+ giftcard: {
200
+ baseAmount: number;
201
+ bonusAmount: number;
202
+ bonusPercentage: number;
203
+ totalAmount: number;
204
+ };
205
+ exchange: {
206
+ amount: number;
207
+ priceDifference: number;
208
+ finalAmount: number;
209
+ };
210
+ };
211
+ total: number;
212
+ };
213
+ preferedLabelDeduction: string;
214
+ currency: {
215
+ localCurrency: string;
216
+ shopCurrency: string;
217
+ exchangeRate: number;
218
+ };
219
+ };
220
+ }
221
+ export type Environment = "development" | "test" | "production";
222
+ export interface ThemeVariables {
223
+ "accent-background"?: string;
224
+ "accent-foreground"?: string;
225
+ "brand-background"?: string;
226
+ "brand-foreground"?: string;
227
+ }
228
+ export type Connection<T extends object> = Array<T> | Array<Edge<T>> | {
229
+ edges: Array<Edge<T>>;
230
+ };
231
+ export type Edge<T> = {
232
+ node: T;
233
+ };
234
+ export interface StorefrontCartCost {
235
+ totalAmount: {
236
+ amount: string;
237
+ currencyCode: string;
238
+ };
239
+ subtotalAmount?: {
240
+ amount: string;
241
+ currencyCode: string;
242
+ };
243
+ }
244
+ export interface StorefrontCartLineCost extends StorefrontCartCost {
245
+ amountPerQuantity?: {
246
+ amount: string;
247
+ currencyCode: string;
248
+ };
249
+ compareAtAmountPerQuantity?: {
250
+ amount: string;
251
+ currencyCode: string;
252
+ };
253
+ }
254
+ export interface StorefrontCartImage {
255
+ id?: string;
256
+ url: string;
257
+ altText?: string | null;
258
+ width?: number;
259
+ height?: number;
260
+ }
261
+ export interface StorefrontCartLineMerchandise {
262
+ id: string;
263
+ title?: string;
264
+ availableForSale?: boolean;
265
+ sku?: string;
266
+ price?: {
267
+ amount: string;
268
+ currencyCode: string;
269
+ };
270
+ compareAtPrice?: {
271
+ amount: string;
272
+ currencyCode: string;
273
+ } | null;
274
+ requiresShipping?: boolean;
275
+ image?: StorefrontCartImage | null;
276
+ product: {
277
+ id: string;
278
+ handle: string;
279
+ title: string;
280
+ productType?: string;
281
+ vendor?: string;
282
+ tags?: string[];
283
+ images?: Connection<StorefrontCartImage>;
284
+ featuredImage?: StorefrontCartImage | null;
285
+ collections?: Array<{
286
+ handle: string;
287
+ title: string;
288
+ }>;
289
+ };
290
+ }
291
+ export interface StorefrontCartLine {
292
+ id?: string;
293
+ quantity: number;
294
+ attributes?: Array<{
295
+ key: string;
296
+ value: string;
297
+ }>;
298
+ cost?: StorefrontCartLineCost | null;
299
+ merchandise: StorefrontCartLineMerchandise;
300
+ discountAllocations?: Array<unknown>;
301
+ }
302
+ export interface StorefrontCart {
303
+ id?: string;
304
+ totalQuantity?: number;
305
+ lines: Connection<StorefrontCartLine>;
306
+ checkoutUrl?: string;
307
+ createdAt?: string;
308
+ updatedAt?: string;
309
+ note?: string;
310
+ discountCodes?: Array<unknown>;
311
+ discountAllocations?: Array<unknown>;
312
+ cost?: StorefrontCartCost;
313
+ }
314
+ export type CartInput = ShopifyCart | StorefrontCart;
315
+ export type CartAddItem = {
316
+ merchandiseId: string;
317
+ quantity: number;
318
+ };
319
+ export type CartUpdateItem = {
320
+ id: string;
321
+ merchandiseId: string;
322
+ quantity: number;
323
+ };
324
+ export interface CartProvider<T extends CartInput = CartInput> {
325
+ getCart(): Promise<T | undefined>;
326
+ clearCart(): Promise<T>;
327
+ addItems(items: CartAddItem[]): Promise<T>;
328
+ updateItems(items: CartUpdateItem[]): Promise<T>;
329
+ removeItems(lineIds: string[]): Promise<T>;
330
+ }
331
+ export type ReturnflowsConfig = Partial<CommonOptions & {
332
+ debug: boolean;
333
+ cartProvider: CartProvider;
334
+ onReady: () => void;
335
+ onError: (error: Error) => void;
336
+ }>;
337
+ export interface DrawerAPI {
338
+ open(): void;
339
+ close(): void;
340
+ toggle(): void;
341
+ isOpen(): boolean;
342
+ }
343
+ export interface DataAPI {
344
+ getCart(): ShopifyCart | null;
345
+ getCalculation(): CalculationResponse | null;
346
+ getOrder(): OrderData | null;
347
+ isLoading(): boolean;
348
+ }
349
+ export interface CartAPI {
350
+ setCart(cart: CartInput): Promise<SetCartOutput>;
351
+ refetch(): Promise<void>;
352
+ clear(): Promise<void>;
353
+ }
354
+ export type SetCartOutput = {
355
+ cart: ShopifyCart | null;
356
+ calculation: CalculationResponse | null;
357
+ hasChanged: boolean;
358
+ };
359
+ export type ToastTone = "info" | "tip" | "action" | "error" | "giftcard";
360
+ export interface ToastOptions {
361
+ message: string;
362
+ tone?: ToastTone;
363
+ duration?: number;
364
+ onClose?: () => void;
365
+ }
366
+ export interface ToastAPI {
367
+ show(options: ToastOptions): string;
368
+ dismiss(id: string): void;
369
+ clear(): void;
370
+ }
371
+ export type EventName = "ready" | "drawer:open" | "drawer:close" | "cart:updated" | "calculation:updated" | "error";
372
+ export type EventCallback<K extends EventName> = K extends "error" ? (error: Error) => void : K extends "calculation:updated" ? (calculation: CalculationResponse) => void : K extends "cart:updated" ? (cart: ShopifyCart) => void : () => void;
373
+ export interface OrderData {
374
+ id: string;
375
+ orderId: string;
376
+ orderName: string;
377
+ instantExchange: boolean;
378
+ freeExchangeLabel: boolean;
379
+ productsToExchange: Array<{
380
+ id: string;
381
+ shopifyLineId: string;
382
+ title: string;
383
+ variantTitle: string;
384
+ image: string;
385
+ handle: string;
386
+ price: number;
387
+ quantity: number;
388
+ }>;
389
+ totalPrice: number;
390
+ }
391
+ export interface ReturnflowsAPI {
392
+ init(config?: ReturnflowsConfig): Promise<void>;
393
+ destroy(): void;
394
+ isInitialized(): boolean;
395
+ readonly drawer: DrawerAPI;
396
+ readonly data: DataAPI;
397
+ readonly cart: CartAPI;
398
+ readonly toast: ToastAPI;
399
+ on<K extends EventName>(event: K, callback: EventCallback<K>): () => void;
400
+ off<K extends EventName>(event: K, callback: EventCallback<K>): void;
401
+ readonly version: string;
402
+ }
@@ -0,0 +1,20 @@
1
+ import type { CartAPI, CartProvider, DataAPI, DrawerAPI, EventCallback, EventName, ReturnflowsAPI, ReturnflowsConfig, ToastAPI } from "./types";
2
+ declare class ReturnflowsWidget implements ReturnflowsAPI {
3
+ private _initPromise;
4
+ /** @internal */
5
+ _cartProvider: CartProvider | null;
6
+ readonly version: string;
7
+ readonly drawer: DrawerAPI;
8
+ readonly data: DataAPI;
9
+ readonly cart: CartAPI;
10
+ readonly toast: ToastAPI;
11
+ init(config?: ReturnflowsConfig): Promise<void>;
12
+ destroy(): void;
13
+ isInitialized(): boolean;
14
+ on<K extends EventName>(event: K, callback: EventCallback<K>): () => void;
15
+ off<K extends EventName>(event: K, callback: EventCallback<K>): void;
16
+ private _ensureInitialized;
17
+ private _waitForBridge;
18
+ }
19
+ export declare const Returnflows: ReturnflowsWidget;
20
+ export default Returnflows;
@@ -0,0 +1,2 @@
1
+ export type { CalculationResponse, CartAddItem, CartAPI, CartInput, CartProvider, CartUpdateItem, DataAPI, DrawerAPI, Environment, EventCallback, EventName, OrderData, ReturnflowsAPI, ReturnflowsConfig, ShopifyCart, ShopifyCartItem, StorefrontCart, StorefrontCartLine, ThemeVariables, ToastAPI, ToastOptions, ToastTone, WidgetViewState } from "./api/types";
2
+ export { default, Returnflows } from "./api/widget-api";
@@ -0,0 +1,6 @@
1
+ interface DialogBackdropProps extends React.HTMLAttributes<HTMLElement> {
2
+ isVisible?: boolean;
3
+ onClick?: () => void;
4
+ }
5
+ declare const DialogBackdrop: ({ onClick, className, children, isVisible, ...props }: DialogBackdropProps) => import("preact").JSX.Element;
6
+ export default DialogBackdrop;
@@ -0,0 +1,6 @@
1
+ import { ButtonProps } from "../../ui/button";
2
+ declare const _default: {
3
+ Accept: ({ className, ...props }: ButtonProps) => import("preact").JSX.Element;
4
+ Reject: ({ className, ...props }: ButtonProps) => import("preact").JSX.Element;
5
+ };
6
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import { UseDialogRegisterReturn } from "../../../lib/hooks/common/use-dialog";
2
+ export interface DialogModalProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onClose">, UseDialogRegisterReturn {
3
+ fadeIn?: boolean;
4
+ showBackdrop?: boolean;
5
+ dismissOnBackdropClick?: boolean;
6
+ dismissOnEscape?: boolean;
7
+ }
8
+ declare const DialogModal: ({ isOpen, onClose, fadeIn, showBackdrop, dismissOnBackdropClick, dismissOnEscape, className, ...props }: DialogModalProps) => import("preact").VNode<any> | null;
9
+ export default DialogModal;
@@ -0,0 +1,2 @@
1
+ declare const DialogSubtitle: ({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) => import("preact").JSX.Element;
2
+ export default DialogSubtitle;
@@ -0,0 +1,2 @@
1
+ declare const DialogTitle: ({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) => import("preact").JSX.Element;
2
+ export default DialogTitle;
@@ -0,0 +1,10 @@
1
+ import { type DialogModalProps } from "./dialog-modal";
2
+ export type { DialogModalProps };
3
+ declare const Dialog: {
4
+ Modal: ({ isOpen, onClose, fadeIn, showBackdrop, dismissOnBackdropClick, dismissOnEscape, className, ...props }: DialogModalProps) => import("preact").VNode<any> | null;
5
+ Title: ({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) => import("preact").JSX.Element;
6
+ Subtitle: ({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) => import("preact").JSX.Element;
7
+ Accept: ({ className, ...props }: import("../../ui/button").ButtonProps) => import("preact").JSX.Element;
8
+ Reject: ({ className, ...props }: import("../../ui/button").ButtonProps) => import("preact").JSX.Element;
9
+ };
10
+ export default Dialog;
@@ -0,0 +1,2 @@
1
+ declare const ReturnDecisionDialog: () => import("preact").JSX.Element | null;
2
+ export default ReturnDecisionDialog;
@@ -0,0 +1,2 @@
1
+ declare const ExchangeAdjustments: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => import("preact").JSX.Element;
2
+ export default ExchangeAdjustments;
@@ -0,0 +1,2 @@
1
+ declare const ExchangeBanner: () => import("preact").JSX.Element;
2
+ export default ExchangeBanner;
@@ -0,0 +1,2 @@
1
+ declare const AdjustmentsTableSkeleton: () => import("preact").JSX.Element;
2
+ export default AdjustmentsTableSkeleton;