bitsnap-react 1.12.0 → 1.13.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 (90) hide show
  1. package/README.md +40 -3
  2. package/dist/CartProvider-F7ER3WSS.js +2 -0
  3. package/dist/CartProvider-F7ER3WSS.js.map +1 -0
  4. package/dist/CartProvider-N73XNL7S.mjs +2 -0
  5. package/dist/analytics.js +1 -1
  6. package/dist/analytics.js.map +1 -1
  7. package/dist/analytics.mjs +1 -1
  8. package/dist/catalog.js +1 -1
  9. package/dist/catalog.js.map +1 -1
  10. package/dist/catalog.mjs +1 -1
  11. package/dist/{chunk-ICFYSZTV.js → chunk-3A4YOO7Z.js} +2 -2
  12. package/dist/chunk-3A4YOO7Z.js.map +1 -0
  13. package/dist/{chunk-UCESDAEC.mjs → chunk-3DGHF373.mjs} +2 -2
  14. package/dist/chunk-5GMWRCHK.mjs +4 -0
  15. package/dist/chunk-5GMWRCHK.mjs.map +1 -0
  16. package/dist/{chunk-MLSKHOA3.js → chunk-6CUCRTIK.js} +2 -2
  17. package/dist/chunk-6CUCRTIK.js.map +1 -0
  18. package/dist/{chunk-DGUIG334.js → chunk-EWLOGFF2.js} +2 -2
  19. package/dist/chunk-EWLOGFF2.js.map +1 -0
  20. package/dist/chunk-GAVLY6RX.mjs +2 -0
  21. package/dist/chunk-GAVLY6RX.mjs.map +1 -0
  22. package/dist/{chunk-XTIY6PXH.js → chunk-IP4OOWZ6.js} +2 -2
  23. package/dist/chunk-IP4OOWZ6.js.map +1 -0
  24. package/dist/chunk-JSDGZ4NY.js.map +1 -1
  25. package/dist/{chunk-3QG7H2AI.mjs → chunk-K2EITRNW.mjs} +2 -2
  26. package/dist/{chunk-5R3WR22A.mjs → chunk-KH7DFTJY.mjs} +2 -2
  27. package/dist/chunk-KOYBZORL.js.map +1 -1
  28. package/dist/{chunk-E5DCEFI2.mjs → chunk-L6J6H73J.mjs} +2 -2
  29. package/dist/chunk-M4KEUK6I.js +2 -0
  30. package/dist/chunk-M4KEUK6I.js.map +1 -0
  31. package/dist/{chunk-QSIKRVZL.mjs → chunk-OC7YS3UY.mjs} +2 -2
  32. package/dist/chunk-TMBC2BHN.js +4 -0
  33. package/dist/chunk-TMBC2BHN.js.map +1 -0
  34. package/dist/{chunk-DF2IK2GN.js → chunk-TSJCVFOX.js} +2 -2
  35. package/dist/chunk-TSJCVFOX.js.map +1 -0
  36. package/dist/{chunk-6IACFTJR.js → chunk-UFQVOGBS.js} +2 -2
  37. package/dist/chunk-UFQVOGBS.js.map +1 -0
  38. package/dist/chunk-XIHGWNTS.js.map +1 -1
  39. package/dist/{chunk-FF2ICGFQ.mjs → chunk-YNGXQJPE.mjs} +2 -2
  40. package/dist/{chunk-FF2ICGFQ.mjs.map → chunk-YNGXQJPE.mjs.map} +1 -1
  41. package/dist/consent.js.map +1 -1
  42. package/dist/course.js +1 -1
  43. package/dist/course.js.map +1 -1
  44. package/dist/course.mjs +1 -1
  45. package/dist/embed/analytics.js +1 -1
  46. package/dist/errors.js.map +1 -1
  47. package/dist/index.css +1 -1
  48. package/dist/index.css.map +1 -1
  49. package/dist/index.d.mts +59 -2
  50. package/dist/index.d.ts +59 -2
  51. package/dist/index.js +1 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/index.mjs +1 -1
  54. package/dist/index.mjs.map +1 -1
  55. package/dist/internal.js.map +1 -1
  56. package/dist/methods-ADH5XI4I.js +2 -0
  57. package/dist/methods-ADH5XI4I.js.map +1 -0
  58. package/dist/methods-BCR54EWX.mjs +2 -0
  59. package/dist/models.js.map +1 -1
  60. package/dist/returns.js +1 -1
  61. package/dist/returns.js.map +1 -1
  62. package/dist/returns.mjs +1 -1
  63. package/package.json +26 -51
  64. package/dist/CartProvider-XNFSUOCB.js +0 -2
  65. package/dist/CartProvider-XNFSUOCB.js.map +0 -1
  66. package/dist/CartProvider-YMJ7RFO4.mjs +0 -2
  67. package/dist/chunk-4BW6J7FP.js +0 -4
  68. package/dist/chunk-4BW6J7FP.js.map +0 -1
  69. package/dist/chunk-6IACFTJR.js.map +0 -1
  70. package/dist/chunk-DF2IK2GN.js.map +0 -1
  71. package/dist/chunk-DGUIG334.js.map +0 -1
  72. package/dist/chunk-ERL4Z7M7.js +0 -2
  73. package/dist/chunk-ERL4Z7M7.js.map +0 -1
  74. package/dist/chunk-ICFYSZTV.js.map +0 -1
  75. package/dist/chunk-MLSKHOA3.js.map +0 -1
  76. package/dist/chunk-P4Q5KXKS.mjs +0 -2
  77. package/dist/chunk-P4Q5KXKS.mjs.map +0 -1
  78. package/dist/chunk-PNTO3L2C.mjs +0 -4
  79. package/dist/chunk-PNTO3L2C.mjs.map +0 -1
  80. package/dist/chunk-XTIY6PXH.js.map +0 -1
  81. package/dist/methods-DDGOXLP6.mjs +0 -2
  82. package/dist/methods-RQPDIUUN.js +0 -2
  83. package/dist/methods-RQPDIUUN.js.map +0 -1
  84. /package/dist/{CartProvider-YMJ7RFO4.mjs.map → CartProvider-N73XNL7S.mjs.map} +0 -0
  85. /package/dist/{chunk-UCESDAEC.mjs.map → chunk-3DGHF373.mjs.map} +0 -0
  86. /package/dist/{chunk-3QG7H2AI.mjs.map → chunk-K2EITRNW.mjs.map} +0 -0
  87. /package/dist/{chunk-5R3WR22A.mjs.map → chunk-KH7DFTJY.mjs.map} +0 -0
  88. /package/dist/{chunk-E5DCEFI2.mjs.map → chunk-L6J6H73J.mjs.map} +0 -0
  89. /package/dist/{chunk-QSIKRVZL.mjs.map → chunk-OC7YS3UY.mjs.map} +0 -0
  90. /package/dist/{methods-DDGOXLP6.mjs.map → methods-BCR54EWX.mjs.map} +0 -0
package/README.md CHANGED
@@ -154,6 +154,8 @@ built-in styles):
154
154
  | `countrySearch` | Country search field |
155
155
  | `countryOption` | Single country option |
156
156
  | `paymentButtons` | Apple Pay / Google Pay wrappers |
157
+ | `paymentMethods` | "How would you like to pay?" group (online, transfer / BLIK to a phone, cash on delivery) |
158
+ | `paymentMethodOption`| Single payment method card |
157
159
  | `checkoutButton` | "Next step" button |
158
160
  | `emptyState` | Empty cart message |
159
161
  | `error` | Checkout error message |
@@ -183,10 +185,10 @@ conflicting Tailwind utilities from the library are resolved in your favor.
183
185
  | `fontFamily` | The whole checkout |
184
186
  | `fontSize` | The whole checkout |
185
187
  | `background` | Panel, country trigger |
186
- | `surface` | Country dropdown, search bar, loading skeletons |
188
+ | `surface` | Country dropdown, search bar, loading skeletons, selected payment method |
187
189
  | `foreground` | Titles, prices, total |
188
190
  | `mutedForeground` | Empty cart, delivery note, country label, search field |
189
- | `border` | Country trigger, dropdown, product separators |
191
+ | `border` | Country trigger, dropdown, product separators, payment method cards |
190
192
  | `buttonBackground` | "Next step" button |
191
193
  | `buttonForeground` | "Next step" button |
192
194
  | `buttonHoverBackground` | "Next step" button on hover |
@@ -355,7 +357,42 @@ copy per language, pass a different object.
355
357
  Checkout keys (`CheckoutTexts`): `cart`, `emptyCart`, `total`, `delivery`,
356
358
  `chooseCountry`, `nextStep`, `unavailableProducts`, `checkoutFailed`,
357
359
  `noPaymentGateway`, `gatewayNotConfigured`, `shippingNotConfigured`,
358
- `mixedRecurring`, `currencyUnsupported`, `priceChanged`.
360
+ `mixedRecurring`, `currencyUnsupported`, `priceChanged`, `paymentMethodLegend`,
361
+ `paymentMethodOnline`, `paymentMethodOnlineDescription`,
362
+ `paymentMethodManualTransfer`, `paymentMethodManualBlik`,
363
+ `paymentMethodManualBoth`, `paymentMethodManualDescription`,
364
+ `paymentMethodManualBlikNote`, `paymentMethodCod`,
365
+ `paymentMethodCodDescription`, `paymentMethodCodUnavailable`.
366
+
367
+ ### Paying online, by transfer / BLIK to a phone or on delivery
368
+
369
+ When the shop turned on manual payments with "show at checkout", the cart asks
370
+ the buyer how they want to pay before "Next step": online (card, BLIK code,
371
+ instant transfer through the shop's gateway) or by hand (bank transfer and/or
372
+ BLIK to the seller's phone number; the label follows the accounts the seller
373
+ has). The first option is the seller's preferred one and is selected. The
374
+ seller's account and phone number are shown only after the order is placed, on
375
+ the Bitsnap payment page the cart redirects to; the order waits for the payment
376
+ there and the cart is cleared.
377
+
378
+ When the shop offers cash on delivery and the cart qualifies (delivery to
379
+ Poland, at least one shipped product, no subscription), the cart lists
380
+ "Płatność przy odbiorze" / "Cash on delivery" last. The buyer pays the courier.
381
+ Like any order, the cart is kept until the buyer has finished the order's
382
+ details form: the order is then "placed" (or "paid" once the seller marks it)
383
+ and its lines leave the cart. A buyer who goes back from the form still has the
384
+ cart. The cart asks again when the buyer changes the country; until the answer
385
+ arrives it keeps showing the last choice without cash on delivery. If the shop refuses cash on delivery for the order
386
+ anyway, the cart shows `paymentMethodCodUnavailable` and asks for the methods
387
+ again.
388
+
389
+ The cart asks `POST /public-commerce/payment-methods` (same body as `/buy`) once
390
+ per cart content. `choice: null`, an error, a timeout (5 s) or an older
391
+ bitsnap.pl that does not have the endpoint leave the cart as before: no choice
392
+ and a plain `/buy`. `/buy` gets `paymentMethod: "online" | "manual" | "cod"`
393
+ only when the choice was shown; the choice appears whenever the answer lists
394
+ two or more methods this version knows (others are ignored). Apple Pay and Google Pay are online payments and do not
395
+ change.
359
396
 
360
397
  When "Next step" fails, the cart shows the text of the backend error code
361
398
  (`noPaymentGateway`, `gatewayNotConfigured`, `shippingNotConfigured`,
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkTMBC2BHNjs = require('./chunk-TMBC2BHN.js');require('./chunk-6CUCRTIK.js');require('./chunk-KOYBZORL.js');require('./chunk-EWLOGFF2.js');require('./chunk-UFQVOGBS.js');var _chunkM4KEUK6Ijs = require('./chunk-M4KEUK6I.js');require('./chunk-TSJCVFOX.js');require('./chunk-XIHGWNTS.js');require('./chunk-JSDGZ4NY.js');exports.MARKETING_AGREEMENT_ID = _chunkTMBC2BHNjs.L; exports.bitsnapProjectID = _chunkTMBC2BHNjs.M; exports.default = _chunkTMBC2BHNjs.T; exports.getCartLines = _chunkTMBC2BHNjs.Q; exports.getCheckoutMethods = _chunkTMBC2BHNjs.U; exports.getCheckoutSelection = _chunkTMBC2BHNjs.P; exports.getLocale = _chunkM4KEUK6Ijs.m; exports.getProjectID = _chunkTMBC2BHNjs.O; exports.reconcileOrderOfLastPayment = _chunkTMBC2BHNjs.R; exports.setLocale = _chunkM4KEUK6Ijs.l; exports.setProjectID = _chunkTMBC2BHNjs.N; exports.useCartProvider = _chunkTMBC2BHNjs.S;
2
+ //# sourceMappingURL=CartProvider-F7ER3WSS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/CartProvider-F7ER3WSS.js"],"names":[],"mappings":"AAAA,+HAAsG,+BAA4B,+BAA4B,+BAA4B,+BAA4B,sDAA+C,+BAA4B,+BAA4B,+BAA4B,siBAAmQ","file":"/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/CartProvider-F7ER3WSS.js"}
@@ -0,0 +1,2 @@
1
+ import{L as c,M as d,N as e,O as f,P as g,Q as h,R as i,S as j,T as k,U as l}from"./chunk-5GMWRCHK.mjs";import"./chunk-KH7DFTJY.mjs";import"./chunk-KOVKUJAW.mjs";import"./chunk-K2EITRNW.mjs";import"./chunk-3DGHF373.mjs";import{l as a,m as b}from"./chunk-GAVLY6RX.mjs";import"./chunk-YNGXQJPE.mjs";import"./chunk-ADYVTMGH.mjs";import"./chunk-U6FLIRIV.mjs";export{c as MARKETING_AGREEMENT_ID,d as bitsnapProjectID,k as default,h as getCartLines,l as getCheckoutMethods,g as getCheckoutSelection,b as getLocale,f as getProjectID,i as reconcileOrderOfLastPayment,a as setLocale,e as setProjectID,j as useCartProvider};
2
+ //# sourceMappingURL=CartProvider-N73XNL7S.mjs.map
package/dist/analytics.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkDF2IK2GNjs = require('./chunk-DF2IK2GN.js');require('./chunk-XIHGWNTS.js');require('./chunk-JSDGZ4NY.js');exports.BitsnapAnalyticsProvider = _chunkDF2IK2GNjs.i; exports.DEFAULT_ENDPOINT = _chunkDF2IK2GNjs.c; exports.InstrumentProvider = _chunkDF2IK2GNjs.l; exports.createTracker = _chunkDF2IK2GNjs.d; exports.getTracker = _chunkDF2IK2GNjs.f; exports.initTracker = _chunkDF2IK2GNjs.e; exports.noopInstrument = _chunkDF2IK2GNjs.k; exports.resetTracker = _chunkDF2IK2GNjs.g; exports.scoreBucket = _chunkDF2IK2GNjs.r; exports.startAutoPageViews = _chunkDF2IK2GNjs.b; exports.useAnalytics = _chunkDF2IK2GNjs.j; exports.useInstrument = _chunkDF2IK2GNjs.n; exports.useInstrumentContext = _chunkDF2IK2GNjs.m;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkTSJCVFOXjs = require('./chunk-TSJCVFOX.js');require('./chunk-XIHGWNTS.js');require('./chunk-JSDGZ4NY.js');exports.BitsnapAnalyticsProvider = _chunkTSJCVFOXjs.i; exports.DEFAULT_ENDPOINT = _chunkTSJCVFOXjs.c; exports.InstrumentProvider = _chunkTSJCVFOXjs.l; exports.createTracker = _chunkTSJCVFOXjs.d; exports.getTracker = _chunkTSJCVFOXjs.f; exports.initTracker = _chunkTSJCVFOXjs.e; exports.noopInstrument = _chunkTSJCVFOXjs.k; exports.resetTracker = _chunkTSJCVFOXjs.g; exports.scoreBucket = _chunkTSJCVFOXjs.r; exports.startAutoPageViews = _chunkTSJCVFOXjs.b; exports.useAnalytics = _chunkTSJCVFOXjs.j; exports.useInstrument = _chunkTSJCVFOXjs.n; exports.useInstrumentContext = _chunkTSJCVFOXjs.m;
2
2
  //# sourceMappingURL=analytics.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/emems/web/bitsnap/bitsnap/bitsnap-react/dist/analytics.js"],"names":[],"mappings":"AAAA,+HAAsH,+BAA4B,+BAA4B,klBAAsR","file":"/home/emems/web/bitsnap/bitsnap/bitsnap-react/dist/analytics.js"}
1
+ {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/analytics.js"],"names":[],"mappings":"AAAA,+HAAsH,+BAA4B,+BAA4B,klBAAsR","file":"/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/analytics.js"}
@@ -1,2 +1,2 @@
1
- import{b as e,c as t,d as r,e as n,f as o,g as a,i as s,j as p,k as c,l as i,m,n as u,r as v}from"./chunk-FF2ICGFQ.mjs";import"./chunk-ADYVTMGH.mjs";import"./chunk-U6FLIRIV.mjs";export{s as BitsnapAnalyticsProvider,t as DEFAULT_ENDPOINT,i as InstrumentProvider,r as createTracker,o as getTracker,n as initTracker,c as noopInstrument,a as resetTracker,v as scoreBucket,e as startAutoPageViews,p as useAnalytics,u as useInstrument,m as useInstrumentContext};
1
+ import{b as e,c as t,d as r,e as n,f as o,g as a,i as s,j as p,k as c,l as i,m,n as u,r as v}from"./chunk-YNGXQJPE.mjs";import"./chunk-ADYVTMGH.mjs";import"./chunk-U6FLIRIV.mjs";export{s as BitsnapAnalyticsProvider,t as DEFAULT_ENDPOINT,i as InstrumentProvider,r as createTracker,o as getTracker,n as initTracker,c as noopInstrument,a as resetTracker,v as scoreBucket,e as startAutoPageViews,p as useAnalytics,u as useInstrument,m as useInstrumentContext};
2
2
  //# sourceMappingURL=analytics.mjs.map
package/dist/catalog.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXTIY6PXHjs = require('./chunk-XTIY6PXH.js');require('./chunk-KOYBZORL.js');require('./chunk-ERL4Z7M7.js');require('./chunk-DF2IK2GN.js');require('./chunk-XIHGWNTS.js');require('./chunk-JSDGZ4NY.js');exports.PRODUCT_LIST_SLOT_NAMES = _chunkXTIY6PXHjs.a; exports.ProductList = _chunkXTIY6PXHjs.d; exports.formatProductPrice = _chunkXTIY6PXHjs.b; exports.useProducts = _chunkXTIY6PXHjs.c;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIP4OOWZ6js = require('./chunk-IP4OOWZ6.js');require('./chunk-KOYBZORL.js');require('./chunk-M4KEUK6I.js');require('./chunk-TSJCVFOX.js');require('./chunk-XIHGWNTS.js');require('./chunk-JSDGZ4NY.js');exports.PRODUCT_LIST_SLOT_NAMES = _chunkIP4OOWZ6js.a; exports.ProductList = _chunkIP4OOWZ6js.d; exports.formatProductPrice = _chunkIP4OOWZ6js.b; exports.useProducts = _chunkIP4OOWZ6js.c;
2
2
  //# sourceMappingURL=catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/emems/web/bitsnap/bitsnap/bitsnap-react/dist/catalog.js"],"names":[],"mappings":"AAAA,+HAA4D,+BAA4B,+BAA4B,+BAA4B,+BAA4B,+BAA4B,0LAA+F","file":"/home/emems/web/bitsnap/bitsnap/bitsnap-react/dist/catalog.js"}
1
+ {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/catalog.js"],"names":[],"mappings":"AAAA,+HAA4D,+BAA4B,+BAA4B,+BAA4B,+BAA4B,+BAA4B,0LAA+F","file":"/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/catalog.js"}
package/dist/catalog.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{a as o,b as r,c as e,d as f}from"./chunk-QSIKRVZL.mjs";import"./chunk-KOVKUJAW.mjs";import"./chunk-P4Q5KXKS.mjs";import"./chunk-FF2ICGFQ.mjs";import"./chunk-ADYVTMGH.mjs";import"./chunk-U6FLIRIV.mjs";export{o as PRODUCT_LIST_SLOT_NAMES,f as ProductList,r as formatProductPrice,e as useProducts};
1
+ import{a as o,b as r,c as e,d as f}from"./chunk-OC7YS3UY.mjs";import"./chunk-KOVKUJAW.mjs";import"./chunk-GAVLY6RX.mjs";import"./chunk-YNGXQJPE.mjs";import"./chunk-ADYVTMGH.mjs";import"./chunk-U6FLIRIV.mjs";export{o as PRODUCT_LIST_SLOT_NAMES,f as ProductList,r as formatProductPrice,e as useProducts};
2
2
  //# sourceMappingURL=catalog.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkMLSKHOA3js = require('./chunk-MLSKHOA3.js');var _chunkERL4Z7M7js = require('./chunk-ERL4Z7M7.js');var B=["orders","order","confirmation","result","myReturns","myReturn"];function P(e){return B.includes(e)}function f(e){return e?{name:"orders"}:{name:"email"}}function C(e,n){switch(n.type){case"SESSION_EXPIRED":return P(e.name)?{name:"email"}:e;case"CODE_SENT":return e.name==="email"?{name:"code"}:e;case"AUTHENTICATED":return e.name==="email"||e.name==="code"?{name:"orders"}:e;case"SELECT_ORDER":return e.name==="orders"?{name:"order",orderId:n.orderId}:e;case"REVIEW":return e.name==="order"?{name:"confirmation",orderId:e.orderId,items:n.items,note:n.note}:e;case"SUBMITTED":return e.name==="confirmation"?{name:"result",returnId:n.returnId}:e;case"OPEN_MY_RETURNS":return e.name==="orders"||e.name==="result"?{name:"myReturns"}:e;case"SELECT_RETURN":return e.name==="myReturns"?{name:"myReturn",returnId:n.returnId}:e;case"CONTINUE":return e.name==="result"?{name:"orders"}:e;case"BACK":switch(e.name){case"code":return{name:"email"};case"order":case"myReturns":return{name:"orders"};case"confirmation":return{name:"order",orderId:e.orderId,items:e.items,note:e.note};case"myReturn":return{name:"myReturns"};default:return e}}}var x={email:1,code:2,orders:3,order:4,confirmation:5,result:6},_=6;function O(e){return x[e]}var _react = require('react');var _jsxruntime = require('react/jsx-runtime');function g({current:e}){let n=_chunkMLSKHOA3js.i.call(void 0, ),r=_chunkMLSKHOA3js.f.call(void 0, "stepIndicator");return _jsxruntime.jsx.call(void 0, "p",{"data-bitsnap-returns-slot":"stepIndicator",className:_chunkERL4Z7M7js.d.call(void 0, "text-xs",r.className),style:r.style,children:n("stepIndicator",{current:e,total:_})})}function b({panelToken:e}){let{status:n}=_chunkMLSKHOA3js.j.call(void 0, "BitsnapReturns"),[r,t]=_react.useReducer.call(void 0, C,f(!1));if(_react.useEffect.call(void 0, ()=>{n==="authenticated"?t({type:"AUTHENTICATED"}):n==="anonymous"&&t({type:"SESSION_EXPIRED"})},[n]),n==="exchanging"||n==="hydrating"&&e)return _jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.s,{});let s=O(r.name);return _jsxruntime.jsxs.call(void 0, "div",{className:"flex flex-col gap-4",children:[s!=null&&_jsxruntime.jsx.call(void 0, g,{current:s}),r.name==="email"&&_jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.t,{onSubmitted:()=>t({type:"CODE_SENT"})}),r.name==="code"&&_jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.u,{onVerified:()=>t({type:"AUTHENTICATED"}),onBack:()=>t({type:"BACK"})}),r.name==="orders"&&_jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.v,{showLogout:!e,onSelectOrder:u=>t({type:"SELECT_ORDER",orderId:u}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="order"&&_jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.w,{orderId:r.orderId,initialItems:r.items,initialNote:r.note,onBack:()=>t({type:"BACK"}),onContinue:({items:u,note:U})=>t({type:"REVIEW",items:u,note:U})}),r.name==="confirmation"&&_jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.x,{orderId:r.orderId,items:r.items,note:r.note,onBack:()=>t({type:"BACK"}),onSubmitted:u=>t({type:"SUBMITTED",returnId:u})}),r.name==="result"&&_jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.y,{returnId:r.returnId,onContinue:()=>t({type:"CONTINUE"}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="myReturns"&&_jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.z,{onSelectReturn:u=>t({type:"SELECT_RETURN",returnId:u}),onBack:()=>t({type:"BACK"})}),r.name==="myReturn"&&_jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.A,{returnId:r.returnId,onBack:()=>t({type:"BACK"})})]})}function q(e){return _jsxruntime.jsx.call(void 0, _chunkMLSKHOA3js.k,{...e,children:_jsxruntime.jsx.call(void 0, b,{panelToken:e.panelAccessToken!=null&&e.panelAccessToken!==""})})}exports.a = q;
2
- //# sourceMappingURL=chunk-ICFYSZTV.js.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk6CUCRTIKjs = require('./chunk-6CUCRTIK.js');var _chunkM4KEUK6Ijs = require('./chunk-M4KEUK6I.js');var B=["orders","order","confirmation","result","myReturns","myReturn"];function P(e){return B.includes(e)}function f(e){return e?{name:"orders"}:{name:"email"}}function C(e,n){switch(n.type){case"SESSION_EXPIRED":return P(e.name)?{name:"email"}:e;case"CODE_SENT":return e.name==="email"?{name:"code"}:e;case"AUTHENTICATED":return e.name==="email"||e.name==="code"?{name:"orders"}:e;case"SELECT_ORDER":return e.name==="orders"?{name:"order",orderId:n.orderId}:e;case"REVIEW":return e.name==="order"?{name:"confirmation",orderId:e.orderId,items:n.items,note:n.note}:e;case"SUBMITTED":return e.name==="confirmation"?{name:"result",returnId:n.returnId}:e;case"OPEN_MY_RETURNS":return e.name==="orders"||e.name==="result"?{name:"myReturns"}:e;case"SELECT_RETURN":return e.name==="myReturns"?{name:"myReturn",returnId:n.returnId}:e;case"CONTINUE":return e.name==="result"?{name:"orders"}:e;case"BACK":switch(e.name){case"code":return{name:"email"};case"order":case"myReturns":return{name:"orders"};case"confirmation":return{name:"order",orderId:e.orderId,items:e.items,note:e.note};case"myReturn":return{name:"myReturns"};default:return e}}}var x={email:1,code:2,orders:3,order:4,confirmation:5,result:6},_=6;function O(e){return x[e]}var _react = require('react');var _jsxruntime = require('react/jsx-runtime');function g({current:e}){let n=_chunk6CUCRTIKjs.i.call(void 0, ),r=_chunk6CUCRTIKjs.f.call(void 0, "stepIndicator");return _jsxruntime.jsx.call(void 0, "p",{"data-bitsnap-returns-slot":"stepIndicator",className:_chunkM4KEUK6Ijs.d.call(void 0, "text-xs",r.className),style:r.style,children:n("stepIndicator",{current:e,total:_})})}function b({panelToken:e}){let{status:n}=_chunk6CUCRTIKjs.j.call(void 0, "BitsnapReturns"),[r,t]=_react.useReducer.call(void 0, C,f(!1));if(_react.useEffect.call(void 0, ()=>{n==="authenticated"?t({type:"AUTHENTICATED"}):n==="anonymous"&&t({type:"SESSION_EXPIRED"})},[n]),n==="exchanging"||n==="hydrating"&&e)return _jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.s,{});let s=O(r.name);return _jsxruntime.jsxs.call(void 0, "div",{className:"flex flex-col gap-4",children:[s!=null&&_jsxruntime.jsx.call(void 0, g,{current:s}),r.name==="email"&&_jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.t,{onSubmitted:()=>t({type:"CODE_SENT"})}),r.name==="code"&&_jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.u,{onVerified:()=>t({type:"AUTHENTICATED"}),onBack:()=>t({type:"BACK"})}),r.name==="orders"&&_jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.v,{showLogout:!e,onSelectOrder:u=>t({type:"SELECT_ORDER",orderId:u}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="order"&&_jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.w,{orderId:r.orderId,initialItems:r.items,initialNote:r.note,onBack:()=>t({type:"BACK"}),onContinue:({items:u,note:U})=>t({type:"REVIEW",items:u,note:U})}),r.name==="confirmation"&&_jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.x,{orderId:r.orderId,items:r.items,note:r.note,onBack:()=>t({type:"BACK"}),onSubmitted:u=>t({type:"SUBMITTED",returnId:u})}),r.name==="result"&&_jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.y,{returnId:r.returnId,onContinue:()=>t({type:"CONTINUE"}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="myReturns"&&_jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.z,{onSelectReturn:u=>t({type:"SELECT_RETURN",returnId:u}),onBack:()=>t({type:"BACK"})}),r.name==="myReturn"&&_jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.A,{returnId:r.returnId,onBack:()=>t({type:"BACK"})})]})}function q(e){return _jsxruntime.jsx.call(void 0, _chunk6CUCRTIKjs.k,{...e,children:_jsxruntime.jsx.call(void 0, b,{panelToken:e.panelAccessToken!=null&&e.panelAccessToken!==""})})}exports.a = q;
2
+ //# sourceMappingURL=chunk-3A4YOO7Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/chunk-3A4YOO7Z.js","../src/components/returns/state-machine.ts","../src/components/returns/BitsnapReturns.tsx"],"names":["STEPS_WITH_SESSION","stepRequiresSession","step","initialReturnsStep","hasSession","reduceReturnsStep","event","STEP_NUMBERS","RETURNS_STEP_COUNT","returnsStepNumber","StepIndicator","current","text","useReturnsText","slot","useReturnsSlot","jsx","cn","ReturnsRouter","panelToken","status","useReturnsContext","dispatch","useReducer","useEffect","SkeletonRows","stepNumber","jsxs","ReturnsEmailStep","ReturnsCodeStep","ReturnsOrderList","orderId","ReturnsOrderDetail","items","note","ReturnsConfirmation","returnId","ReturnsResult","ReturnsMyReturnsList","ReturnsMyReturnDetail","BitsnapReturns","props","ReturnsProvider"],"mappings":"AAAA,+HAAsH,sDAAwC,IC8CxJA,CAAAA,CAAiD,CACrD,QAAA,CACA,OAAA,CACA,cAAA,CACA,QAAA,CACA,WAAA,CACA,UACF,CAAA,CAGO,SAASC,CAAAA,CAAoBC,CAAAA,CAAgC,CAClE,OAAOF,CAAAA,CAAmB,QAAA,CAASE,CAAI,CACzC,CAGO,SAASC,CAAAA,CAAmBC,CAAAA,CAAkC,CACnE,OAAOA,CAAAA,CAAa,CAAE,IAAA,CAAM,QAAS,CAAA,CAAI,CAAE,IAAA,CAAM,OAAQ,CAC3D,CAMO,SAASC,CAAAA,CACdH,CAAAA,CACAI,CAAAA,CACa,CACb,MAAA,CAAQA,CAAAA,CAAM,IAAA,CAAM,CAClB,IAAK,iBAAA,CAEH,OAAOL,CAAAA,CAAoBC,CAAAA,CAAK,IAAI,CAAA,CAAI,CAAE,IAAA,CAAM,OAAQ,CAAA,CAAIA,CAAAA,CAC9D,IAAK,WAAA,CACH,OAAOA,CAAAA,CAAK,IAAA,GAAS,OAAA,CAAU,CAAE,IAAA,CAAM,MAAO,CAAA,CAAIA,CAAAA,CACpD,IAAK,eAAA,CACH,OAAOA,CAAAA,CAAK,IAAA,GAAS,OAAA,EAAWA,CAAAA,CAAK,IAAA,GAAS,MAAA,CAC1C,CAAE,IAAA,CAAM,QAAS,CAAA,CACjBA,CAAAA,CACN,IAAK,cAAA,CACH,OAAOA,CAAAA,CAAK,IAAA,GAAS,QAAA,CACjB,CAAE,IAAA,CAAM,OAAA,CAAS,OAAA,CAASI,CAAAA,CAAM,OAAQ,CAAA,CACxCJ,CAAAA,CACN,IAAK,QAAA,CACH,OAAOA,CAAAA,CAAK,IAAA,GAAS,OAAA,CACjB,CACE,IAAA,CAAM,cAAA,CACN,OAAA,CAASA,CAAAA,CAAK,OAAA,CACd,KAAA,CAAOI,CAAAA,CAAM,KAAA,CACb,IAAA,CAAMA,CAAAA,CAAM,IACd,CAAA,CACAJ,CAAAA,CACN,IAAK,WAAA,CACH,OAAOA,CAAAA,CAAK,IAAA,GAAS,cAAA,CACjB,CAAE,IAAA,CAAM,QAAA,CAAU,QAAA,CAAUI,CAAAA,CAAM,QAAS,CAAA,CAC3CJ,CAAAA,CACN,IAAK,iBAAA,CACH,OAAOA,CAAAA,CAAK,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAK,IAAA,GAAS,QAAA,CAC3C,CAAE,IAAA,CAAM,WAAY,CAAA,CACpBA,CAAAA,CACN,IAAK,eAAA,CACH,OAAOA,CAAAA,CAAK,IAAA,GAAS,WAAA,CACjB,CAAE,IAAA,CAAM,UAAA,CAAY,QAAA,CAAUI,CAAAA,CAAM,QAAS,CAAA,CAC7CJ,CAAAA,CACN,IAAK,UAAA,CACH,OAAOA,CAAAA,CAAK,IAAA,GAAS,QAAA,CAAW,CAAE,IAAA,CAAM,QAAS,CAAA,CAAIA,CAAAA,CACvD,IAAK,MAAA,CACH,MAAA,CAAQA,CAAAA,CAAK,IAAA,CAAM,CACjB,IAAK,MAAA,CACH,MAAO,CAAE,IAAA,CAAM,OAAQ,CAAA,CACzB,IAAK,OAAA,CACL,IAAK,WAAA,CACH,MAAO,CAAE,IAAA,CAAM,QAAS,CAAA,CAC1B,IAAK,cAAA,CACH,MAAO,CACL,IAAA,CAAM,OAAA,CACN,OAAA,CAASA,CAAAA,CAAK,OAAA,CACd,KAAA,CAAOA,CAAAA,CAAK,KAAA,CACZ,IAAA,CAAMA,CAAAA,CAAK,IACb,CAAA,CACF,IAAK,UAAA,CACH,MAAO,CAAE,IAAA,CAAM,WAAY,CAAA,CAC7B,OAAA,CACE,OAAOA,CACX,CACJ,CACF,CAEA,IAAMK,CAAAA,CAAyD,CAC7D,KAAA,CAAO,CAAA,CACP,IAAA,CAAM,CAAA,CACN,MAAA,CAAQ,CAAA,CACR,KAAA,CAAO,CAAA,CACP,YAAA,CAAc,CAAA,CACd,MAAA,CAAQ,CACV,CAAA,CAEaC,CAAAA,CAAqB,CAAA,CAG3B,SAASC,CAAAA,CAAkBP,CAAAA,CAA2C,CAC3E,OAAOK,CAAAA,CAAaL,CAAI,CAC1B,CClJA,8BAAsC,+CAgClC,SALKQ,CAAAA,CAAc,CAAE,OAAA,CAAAC,CAAQ,CAAA,CAAwB,CACvD,IAAMC,CAAAA,CAAOC,gCAAAA,CAAe,CACtBC,CAAAA,CAAOC,gCAAAA,eAA8B,CAAA,CAE3C,OACEC,6BAAAA,GAAC,CAAA,CACC,2BAAA,CAA0B,eAAA,CAC1B,SAAA,CAAWC,gCAAAA,SAAG,CAAWH,CAAAA,CAAK,SAAS,CAAA,CACvC,KAAA,CAAOA,CAAAA,CAAK,KAAA,CAEX,QAAA,CAAAF,CAAAA,CAAK,eAAA,CAAiB,CAAE,OAAA,CAAAD,CAAAA,CAAS,KAAA,CAAOH,CAAmB,CAAC,CAAA,CAC/D,CAEJ,CAGA,SAASU,CAAAA,CAAc,CAAE,UAAA,CAAAC,CAAW,CAAA,CAA4B,CAC9D,GAAM,CAAE,MAAA,CAAAC,CAAO,CAAA,CAAIC,gCAAAA,gBAAkC,CAAA,CAC/C,CAACnB,CAAAA,CAAMoB,CAAQ,CAAA,CAAIC,+BAAAA,CACvBlB,CACAF,CAAAA,CAAmB,CAAA,CAAK,CAC1B,CAAA,CAcA,EAAA,CAVAqB,8BAAAA,CAAU,CAAA,EAAM,CACVJ,CAAAA,GAAW,eAAA,CACbE,CAAAA,CAAS,CAAE,IAAA,CAAM,eAAgB,CAAC,CAAA,CACzBF,CAAAA,GAAW,WAAA,EACpBE,CAAAA,CAAS,CAAE,IAAA,CAAM,iBAAkB,CAAC,CAExC,CAAA,CAAG,CAACF,CAAM,CAAC,CAAA,CAIPA,CAAAA,GAAW,YAAA,EAAiBA,CAAAA,GAAW,WAAA,EAAeD,CAAAA,CACxD,OAAOH,6BAAAA,kBAACS,CAAA,CAAA,CAAa,CAAA,CAGvB,IAAMC,CAAAA,CAAajB,CAAAA,CAAkBP,CAAAA,CAAK,IAAI,CAAA,CAE9C,OACEyB,8BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,qBAAA,CACZ,QAAA,CAAA,CAAAD,CAAAA,EAAc,IAAA,EAAQV,6BAAAA,CAACN,CAAA,CAAc,OAAA,CAASgB,CAAAA,CAAY,CAAA,CAC1DxB,CAAAA,CAAK,IAAA,GAAS,OAAA,EACbc,6BAAAA,kBAACY,CAAA,CAAiB,WAAA,CAAa,CAAA,CAAA,EAAMN,CAAAA,CAAS,CAAE,IAAA,CAAM,WAAY,CAAC,CAAA,CAAG,CAAA,CAEvEpB,CAAAA,CAAK,IAAA,GAAS,MAAA,EACbc,6BAAAA,kBAACa,CAAA,CACC,UAAA,CAAY,CAAA,CAAA,EAAMP,CAAAA,CAAS,CAAE,IAAA,CAAM,eAAgB,CAAC,CAAA,CACpD,MAAA,CAAQ,CAAA,CAAA,EAAMA,CAAAA,CAAS,CAAE,IAAA,CAAM,MAAO,CAAC,CAAA,CACzC,CAAA,CAEDpB,CAAAA,CAAK,IAAA,GAAS,QAAA,EACbc,6BAAAA,kBAACc,CAAA,CACC,UAAA,CAAY,CAACX,CAAAA,CACb,aAAA,CAAgBY,CAAAA,EACdT,CAAAA,CAAS,CAAE,IAAA,CAAM,cAAA,CAAgB,OAAA,CAAAS,CAAQ,CAAC,CAAA,CAE5C,eAAA,CAAiB,CAAA,CAAA,EAAMT,CAAAA,CAAS,CAAE,IAAA,CAAM,iBAAkB,CAAC,CAAA,CAC7D,CAAA,CAEDpB,CAAAA,CAAK,IAAA,GAAS,OAAA,EACbc,6BAAAA,kBAACgB,CAAA,CACC,OAAA,CAAS9B,CAAAA,CAAK,OAAA,CACd,YAAA,CAAcA,CAAAA,CAAK,KAAA,CACnB,WAAA,CAAaA,CAAAA,CAAK,IAAA,CAClB,MAAA,CAAQ,CAAA,CAAA,EAAMoB,CAAAA,CAAS,CAAE,IAAA,CAAM,MAAO,CAAC,CAAA,CACvC,UAAA,CAAY,CAAC,CAAE,KAAA,CAAAW,CAAAA,CAAO,IAAA,CAAAC,CAAK,CAAA,CAAA,EACzBZ,CAAAA,CAAS,CAAE,IAAA,CAAM,QAAA,CAAU,KAAA,CAAAW,CAAAA,CAAO,IAAA,CAAAC,CAAK,CAAC,CAAA,CAE5C,CAAA,CAEDhC,CAAAA,CAAK,IAAA,GAAS,cAAA,EACbc,6BAAAA,kBAACmB,CAAA,CACC,OAAA,CAASjC,CAAAA,CAAK,OAAA,CACd,KAAA,CAAOA,CAAAA,CAAK,KAAA,CACZ,IAAA,CAAMA,CAAAA,CAAK,IAAA,CACX,MAAA,CAAQ,CAAA,CAAA,EAAMoB,CAAAA,CAAS,CAAE,IAAA,CAAM,MAAO,CAAC,CAAA,CACvC,WAAA,CAAcc,CAAAA,EACZd,CAAAA,CAAS,CAAE,IAAA,CAAM,WAAA,CAAa,QAAA,CAAAc,CAAS,CAAC,CAAA,CAE5C,CAAA,CAEDlC,CAAAA,CAAK,IAAA,GAAS,QAAA,EACbc,6BAAAA,kBAACqB,CAAA,CACC,QAAA,CAAUnC,CAAAA,CAAK,QAAA,CACf,UAAA,CAAY,CAAA,CAAA,EAAMoB,CAAAA,CAAS,CAAE,IAAA,CAAM,UAAW,CAAC,CAAA,CAC/C,eAAA,CAAiB,CAAA,CAAA,EAAMA,CAAAA,CAAS,CAAE,IAAA,CAAM,iBAAkB,CAAC,CAAA,CAC7D,CAAA,CAEDpB,CAAAA,CAAK,IAAA,GAAS,WAAA,EACbc,6BAAAA,kBAACsB,CAAA,CACC,cAAA,CAAiBF,CAAAA,EACfd,CAAAA,CAAS,CAAE,IAAA,CAAM,eAAA,CAAiB,QAAA,CAAAc,CAAS,CAAC,CAAA,CAE9C,MAAA,CAAQ,CAAA,CAAA,EAAMd,CAAAA,CAAS,CAAE,IAAA,CAAM,MAAO,CAAC,CAAA,CACzC,CAAA,CAEDpB,CAAAA,CAAK,IAAA,GAAS,UAAA,EACbc,6BAAAA,kBAACuB,CAAA,CACC,QAAA,CAAUrC,CAAAA,CAAK,QAAA,CACf,MAAA,CAAQ,CAAA,CAAA,EAAMoB,CAAAA,CAAS,CAAE,IAAA,CAAM,MAAO,CAAC,CAAA,CACzC,CAAA,CAAA,CAEJ,CAEJ,CAYO,SAASkB,CAAAA,CAAeC,CAAAA,CAA4B,CACzD,OACEzB,6BAAAA,kBAAC0B,CAAA,CAAiB,GAAGD,CAAAA,CACnB,QAAA,CAAAzB,6BAAAA,CAACE,CAAA,CAAc,UAAA,CAAYuB,CAAAA,CAAM,gBAAA,EAAoB,IAAA,EAAQA,CAAAA,CAAM,gBAAA,GAAqB,EAAA,CAAI,CAAA,CAC9F,CAEJ,CAAA,cAAA","file":"/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/chunk-3A4YOO7Z.js","sourcesContent":[null,"/** One line chosen for return. */\nexport type SelectedReturnLine = {\n lineId: string;\n quantity: number;\n};\n\n/** Where the default flow of `BitsnapReturns` currently is. */\nexport type ReturnsStep =\n | { name: \"email\" }\n | { name: \"code\" }\n | { name: \"orders\" }\n | {\n name: \"order\";\n orderId: string;\n /** Selection to restore when coming back from the confirmation. */\n items?: SelectedReturnLine[];\n note?: string;\n }\n | {\n name: \"confirmation\";\n orderId: string;\n items: SelectedReturnLine[];\n note: string;\n }\n | { name: \"result\"; returnId: string }\n | { name: \"myReturns\" }\n | { name: \"myReturn\"; returnId: string };\n\nexport type ReturnsStepName = ReturnsStep[\"name\"];\n\nexport type ReturnsStepEvent =\n /** A verification code was requested. */\n | { type: \"CODE_SENT\" }\n /** The session became valid: code verified, stored session or panel token. */\n | { type: \"AUTHENTICATED\" }\n /** The session was dropped by the backend, expiry or logout. */\n | { type: \"SESSION_EXPIRED\" }\n | { type: \"SELECT_ORDER\"; orderId: string }\n | { type: \"REVIEW\"; items: SelectedReturnLine[]; note: string }\n | { type: \"SUBMITTED\"; returnId: string }\n | { type: \"OPEN_MY_RETURNS\" }\n | { type: \"SELECT_RETURN\"; returnId: string }\n | { type: \"BACK\" }\n /** Leave the result screen for the order list. */\n | { type: \"CONTINUE\" };\n\nconst STEPS_WITH_SESSION: readonly ReturnsStepName[] = [\n \"orders\",\n \"order\",\n \"confirmation\",\n \"result\",\n \"myReturns\",\n \"myReturn\",\n];\n\n/** Steps that cannot be shown without a returns session. */\nexport function stepRequiresSession(step: ReturnsStepName): boolean {\n return STEPS_WITH_SESSION.includes(step);\n}\n\n/** Starts at the orders when a session exists, otherwise at the email. */\nexport function initialReturnsStep(hasSession: boolean): ReturnsStep {\n return hasSession ? { name: \"orders\" } : { name: \"email\" };\n}\n\n/**\n * Pure transition function of the default flow. Events that do not apply to\n * the current step leave it unchanged.\n */\nexport function reduceReturnsStep(\n step: ReturnsStep,\n event: ReturnsStepEvent,\n): ReturnsStep {\n switch (event.type) {\n case \"SESSION_EXPIRED\":\n // Email and code do not need a session; keep a pending verification.\n return stepRequiresSession(step.name) ? { name: \"email\" } : step;\n case \"CODE_SENT\":\n return step.name === \"email\" ? { name: \"code\" } : step;\n case \"AUTHENTICATED\":\n return step.name === \"email\" || step.name === \"code\"\n ? { name: \"orders\" }\n : step;\n case \"SELECT_ORDER\":\n return step.name === \"orders\"\n ? { name: \"order\", orderId: event.orderId }\n : step;\n case \"REVIEW\":\n return step.name === \"order\"\n ? {\n name: \"confirmation\",\n orderId: step.orderId,\n items: event.items,\n note: event.note,\n }\n : step;\n case \"SUBMITTED\":\n return step.name === \"confirmation\"\n ? { name: \"result\", returnId: event.returnId }\n : step;\n case \"OPEN_MY_RETURNS\":\n return step.name === \"orders\" || step.name === \"result\"\n ? { name: \"myReturns\" }\n : step;\n case \"SELECT_RETURN\":\n return step.name === \"myReturns\"\n ? { name: \"myReturn\", returnId: event.returnId }\n : step;\n case \"CONTINUE\":\n return step.name === \"result\" ? { name: \"orders\" } : step;\n case \"BACK\":\n switch (step.name) {\n case \"code\":\n return { name: \"email\" };\n case \"order\":\n case \"myReturns\":\n return { name: \"orders\" };\n case \"confirmation\":\n return {\n name: \"order\",\n orderId: step.orderId,\n items: step.items,\n note: step.note,\n };\n case \"myReturn\":\n return { name: \"myReturns\" };\n default:\n return step;\n }\n }\n}\n\nconst STEP_NUMBERS: Partial<Record<ReturnsStepName, number>> = {\n email: 1,\n code: 2,\n orders: 3,\n order: 4,\n confirmation: 5,\n result: 6,\n};\n\nexport const RETURNS_STEP_COUNT = 6;\n\n/** Position of a step in the return flow, `undefined` for the \"my returns\" views. */\nexport function returnsStepNumber(step: ReturnsStepName): number | undefined {\n return STEP_NUMBERS[step];\n}\n","import { useEffect, useReducer } from \"react\";\nimport { cn } from \"@/src/lib/utils\";\nimport { useReturnsSlot } from \"./appearance.context\";\nimport { ReturnsCodeStep, ReturnsEmailStep } from \"./AuthSteps\";\nimport { SkeletonRows } from \"./internal\";\nimport { ReturnsMyReturnDetail, ReturnsMyReturnsList } from \"./MyReturns\";\nimport {\n ReturnsConfirmation,\n ReturnsOrderDetail,\n ReturnsOrderList,\n ReturnsResult,\n} from \"./OrderSteps\";\nimport {\n ReturnsProvider,\n useReturnsContext,\n type ReturnsProviderProps,\n} from \"./ReturnsProvider\";\nimport {\n initialReturnsStep,\n reduceReturnsStep,\n RETURNS_STEP_COUNT,\n returnsStepNumber,\n} from \"./state-machine\";\nimport { useReturnsText } from \"./texts.context\";\n\nexport type BitsnapReturnsProps = Omit<ReturnsProviderProps, \"children\">;\n\nfunction StepIndicator({ current }: { current: number }) {\n const text = useReturnsText();\n const slot = useReturnsSlot(\"stepIndicator\");\n\n return (\n <p\n data-bitsnap-returns-slot=\"stepIndicator\"\n className={cn(\"text-xs\", slot.className)}\n style={slot.style}\n >\n {text(\"stepIndicator\", { current, total: RETURNS_STEP_COUNT })}\n </p>\n );\n}\n\n/** Default step router. All transitions come from the pure state machine. */\nfunction ReturnsRouter({ panelToken }: { panelToken: boolean }) {\n const { status } = useReturnsContext(\"BitsnapReturns\");\n const [step, dispatch] = useReducer(\n reduceReturnsStep,\n initialReturnsStep(false),\n );\n\n // A valid session (verified code, stored session, exchanged panel token)\n // moves on to the orders; a dropped one returns to the start.\n useEffect(() => {\n if (status === \"authenticated\") {\n dispatch({ type: \"AUTHENTICATED\" });\n } else if (status === \"anonymous\") {\n dispatch({ type: \"SESSION_EXPIRED\" });\n }\n }, [status]);\n\n // Without a panel token the server render and the first client render show\n // the email step; a stored session switches to the orders after hydration.\n if (status === \"exchanging\" || (status === \"hydrating\" && panelToken)) {\n return <SkeletonRows />;\n }\n\n const stepNumber = returnsStepNumber(step.name);\n\n return (\n <div className=\"flex flex-col gap-4\">\n {stepNumber != null && <StepIndicator current={stepNumber} />}\n {step.name === \"email\" && (\n <ReturnsEmailStep onSubmitted={() => dispatch({ type: \"CODE_SENT\" })} />\n )}\n {step.name === \"code\" && (\n <ReturnsCodeStep\n onVerified={() => dispatch({ type: \"AUTHENTICATED\" })}\n onBack={() => dispatch({ type: \"BACK\" })}\n />\n )}\n {step.name === \"orders\" && (\n <ReturnsOrderList\n showLogout={!panelToken}\n onSelectOrder={(orderId) =>\n dispatch({ type: \"SELECT_ORDER\", orderId })\n }\n onOpenMyReturns={() => dispatch({ type: \"OPEN_MY_RETURNS\" })}\n />\n )}\n {step.name === \"order\" && (\n <ReturnsOrderDetail\n orderId={step.orderId}\n initialItems={step.items}\n initialNote={step.note}\n onBack={() => dispatch({ type: \"BACK\" })}\n onContinue={({ items, note }) =>\n dispatch({ type: \"REVIEW\", items, note })\n }\n />\n )}\n {step.name === \"confirmation\" && (\n <ReturnsConfirmation\n orderId={step.orderId}\n items={step.items}\n note={step.note}\n onBack={() => dispatch({ type: \"BACK\" })}\n onSubmitted={(returnId) =>\n dispatch({ type: \"SUBMITTED\", returnId })\n }\n />\n )}\n {step.name === \"result\" && (\n <ReturnsResult\n returnId={step.returnId}\n onContinue={() => dispatch({ type: \"CONTINUE\" })}\n onOpenMyReturns={() => dispatch({ type: \"OPEN_MY_RETURNS\" })}\n />\n )}\n {step.name === \"myReturns\" && (\n <ReturnsMyReturnsList\n onSelectReturn={(returnId) =>\n dispatch({ type: \"SELECT_RETURN\", returnId })\n }\n onBack={() => dispatch({ type: \"BACK\" })}\n />\n )}\n {step.name === \"myReturn\" && (\n <ReturnsMyReturnDetail\n returnId={step.returnId}\n onBack={() => dispatch({ type: \"BACK\" })}\n />\n )}\n </div>\n );\n}\n\n/**\n * Customer return flow: email, code, orders, line selection, confirmation and\n * result, plus the list of earlier returns. It is `ReturnsProvider` with the\n * default step router; compose your own page from the step components to\n * change the layout.\n *\n * ```tsx\n * <BitsnapReturns projectID=\"…\" appearance={brand} texts={{ emailStepTitle: \"Return a product\" }} />\n * ```\n */\nexport function BitsnapReturns(props: BitsnapReturnsProps) {\n return (\n <ReturnsProvider {...props}>\n <ReturnsRouter panelToken={props.panelAccessToken != null && props.panelAccessToken !== \"\"} />\n </ReturnsProvider>\n );\n}\n"]}