bitsnap-react 1.12.1 → 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 (65) hide show
  1. package/README.md +18 -5
  2. package/dist/CartProvider-F7ER3WSS.js +2 -0
  3. package/dist/{CartProvider-YPZ3HD7W.js.map → CartProvider-F7ER3WSS.js.map} +1 -1
  4. package/dist/CartProvider-N73XNL7S.mjs +2 -0
  5. package/dist/analytics.js +1 -1
  6. package/dist/analytics.mjs +1 -1
  7. package/dist/catalog.js +1 -1
  8. package/dist/catalog.mjs +1 -1
  9. package/dist/{chunk-MZSLLGFS.js → chunk-3A4YOO7Z.js} +2 -2
  10. package/dist/{chunk-MZSLLGFS.js.map → chunk-3A4YOO7Z.js.map} +1 -1
  11. package/dist/{chunk-VF62KDNS.mjs → chunk-3DGHF373.mjs} +2 -2
  12. package/dist/{chunk-GJNFDUJN.mjs → chunk-5GMWRCHK.mjs} +3 -3
  13. package/dist/chunk-5GMWRCHK.mjs.map +1 -0
  14. package/dist/{chunk-STVEBT6M.js → chunk-6CUCRTIK.js} +2 -2
  15. package/dist/{chunk-STVEBT6M.js.map → chunk-6CUCRTIK.js.map} +1 -1
  16. package/dist/{chunk-I6BRDRPB.js → chunk-EWLOGFF2.js} +2 -2
  17. package/dist/{chunk-I6BRDRPB.js.map → chunk-EWLOGFF2.js.map} +1 -1
  18. package/dist/chunk-GAVLY6RX.mjs +2 -0
  19. package/dist/chunk-GAVLY6RX.mjs.map +1 -0
  20. package/dist/{chunk-3ITTSNWG.js → chunk-IP4OOWZ6.js} +2 -2
  21. package/dist/{chunk-3ITTSNWG.js.map → chunk-IP4OOWZ6.js.map} +1 -1
  22. package/dist/{chunk-HBPSSGYN.mjs → chunk-K2EITRNW.mjs} +2 -2
  23. package/dist/{chunk-G3VVAVG7.mjs → chunk-KH7DFTJY.mjs} +2 -2
  24. package/dist/{chunk-DRAKVCD7.mjs → chunk-L6J6H73J.mjs} +2 -2
  25. package/dist/chunk-M4KEUK6I.js +2 -0
  26. package/dist/{chunk-4BV5IUZH.js.map → chunk-M4KEUK6I.js.map} +1 -1
  27. package/dist/{chunk-VDLJW4JJ.mjs → chunk-OC7YS3UY.mjs} +2 -2
  28. package/dist/{chunk-VRL3IF5J.js → chunk-TMBC2BHN.js} +3 -3
  29. package/dist/{chunk-VRL3IF5J.js.map → chunk-TMBC2BHN.js.map} +1 -1
  30. package/dist/{chunk-HDLCLZOK.js → chunk-TSJCVFOX.js} +2 -2
  31. package/dist/{chunk-HDLCLZOK.js.map → chunk-TSJCVFOX.js.map} +1 -1
  32. package/dist/{chunk-4ZFIL5S7.js → chunk-UFQVOGBS.js} +2 -2
  33. package/dist/{chunk-4ZFIL5S7.js.map → chunk-UFQVOGBS.js.map} +1 -1
  34. package/dist/{chunk-T2YSOHJM.mjs → chunk-YNGXQJPE.mjs} +2 -2
  35. package/dist/{chunk-T2YSOHJM.mjs.map → chunk-YNGXQJPE.mjs.map} +1 -1
  36. package/dist/course.js +1 -1
  37. package/dist/course.mjs +1 -1
  38. package/dist/embed/analytics.js +1 -1
  39. package/dist/index.d.mts +17 -7
  40. package/dist/index.d.ts +17 -7
  41. package/dist/index.js +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/index.mjs +1 -1
  44. package/dist/index.mjs.map +1 -1
  45. package/dist/methods-ADH5XI4I.js +2 -0
  46. package/dist/{methods-ISVX5JQ7.js.map → methods-ADH5XI4I.js.map} +1 -1
  47. package/dist/methods-BCR54EWX.mjs +2 -0
  48. package/dist/returns.js +1 -1
  49. package/dist/returns.mjs +1 -1
  50. package/package.json +1 -1
  51. package/dist/CartProvider-WPJWECBS.mjs +0 -2
  52. package/dist/CartProvider-YPZ3HD7W.js +0 -2
  53. package/dist/chunk-4BV5IUZH.js +0 -2
  54. package/dist/chunk-GJNFDUJN.mjs.map +0 -1
  55. package/dist/chunk-T3PAOMHI.mjs +0 -2
  56. package/dist/chunk-T3PAOMHI.mjs.map +0 -1
  57. package/dist/methods-FVDH6Y57.mjs +0 -2
  58. package/dist/methods-ISVX5JQ7.js +0 -2
  59. /package/dist/{CartProvider-WPJWECBS.mjs.map → CartProvider-N73XNL7S.mjs.map} +0 -0
  60. /package/dist/{chunk-VF62KDNS.mjs.map → chunk-3DGHF373.mjs.map} +0 -0
  61. /package/dist/{chunk-HBPSSGYN.mjs.map → chunk-K2EITRNW.mjs.map} +0 -0
  62. /package/dist/{chunk-G3VVAVG7.mjs.map → chunk-KH7DFTJY.mjs.map} +0 -0
  63. /package/dist/{chunk-DRAKVCD7.mjs.map → chunk-L6J6H73J.mjs.map} +0 -0
  64. /package/dist/{chunk-VDLJW4JJ.mjs.map → chunk-OC7YS3UY.mjs.map} +0 -0
  65. /package/dist/{methods-FVDH6Y57.mjs.map → methods-BCR54EWX.mjs.map} +0 -0
package/README.md CHANGED
@@ -154,7 +154,7 @@ 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 or transfer / BLIK to a phone) |
157
+ | `paymentMethods` | "How would you like to pay?" group (online, transfer / BLIK to a phone, cash on delivery) |
158
158
  | `paymentMethodOption`| Single payment method card |
159
159
  | `checkoutButton` | "Next step" button |
160
160
  | `emptyState` | Empty cart message |
@@ -361,9 +361,10 @@ Checkout keys (`CheckoutTexts`): `cart`, `emptyCart`, `total`, `delivery`,
361
361
  `paymentMethodOnline`, `paymentMethodOnlineDescription`,
362
362
  `paymentMethodManualTransfer`, `paymentMethodManualBlik`,
363
363
  `paymentMethodManualBoth`, `paymentMethodManualDescription`,
364
- `paymentMethodManualBlikNote`.
364
+ `paymentMethodManualBlikNote`, `paymentMethodCod`,
365
+ `paymentMethodCodDescription`, `paymentMethodCodUnavailable`.
365
366
 
366
- ### Paying online or by transfer / BLIK to a phone
367
+ ### Paying online, by transfer / BLIK to a phone or on delivery
367
368
 
368
369
  When the shop turned on manual payments with "show at checkout", the cart asks
369
370
  the buyer how they want to pay before "Next step": online (card, BLIK code,
@@ -374,11 +375,23 @@ seller's account and phone number are shown only after the order is placed, on
374
375
  the Bitsnap payment page the cart redirects to; the order waits for the payment
375
376
  there and the cart is cleared.
376
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
+
377
389
  The cart asks `POST /public-commerce/payment-methods` (same body as `/buy`) once
378
390
  per cart content. `choice: null`, an error, a timeout (5 s) or an older
379
391
  bitsnap.pl that does not have the endpoint leave the cart as before: no choice
380
- and a plain `/buy`. `/buy` gets `paymentMethod: "online" | "manual"` only when
381
- the choice was shown. Apple Pay and Google Pay are online payments and do not
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
382
395
  change.
383
396
 
384
397
  When "Next step" fails, the cart shows the text of the backend error code
@@ -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
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/CartProvider-YPZ3HD7W.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-YPZ3HD7W.js"}
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 _chunkHDLCLZOKjs = require('./chunk-HDLCLZOK.js');require('./chunk-XIHGWNTS.js');require('./chunk-JSDGZ4NY.js');exports.BitsnapAnalyticsProvider = _chunkHDLCLZOKjs.i; exports.DEFAULT_ENDPOINT = _chunkHDLCLZOKjs.c; exports.InstrumentProvider = _chunkHDLCLZOKjs.l; exports.createTracker = _chunkHDLCLZOKjs.d; exports.getTracker = _chunkHDLCLZOKjs.f; exports.initTracker = _chunkHDLCLZOKjs.e; exports.noopInstrument = _chunkHDLCLZOKjs.k; exports.resetTracker = _chunkHDLCLZOKjs.g; exports.scoreBucket = _chunkHDLCLZOKjs.r; exports.startAutoPageViews = _chunkHDLCLZOKjs.b; exports.useAnalytics = _chunkHDLCLZOKjs.j; exports.useInstrument = _chunkHDLCLZOKjs.n; exports.useInstrumentContext = _chunkHDLCLZOKjs.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,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-T2YSOHJM.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 _chunk3ITTSNWGjs = require('./chunk-3ITTSNWG.js');require('./chunk-KOYBZORL.js');require('./chunk-4BV5IUZH.js');require('./chunk-HDLCLZOK.js');require('./chunk-XIHGWNTS.js');require('./chunk-JSDGZ4NY.js');exports.PRODUCT_LIST_SLOT_NAMES = _chunk3ITTSNWGjs.a; exports.ProductList = _chunk3ITTSNWGjs.d; exports.formatProductPrice = _chunk3ITTSNWGjs.b; exports.useProducts = _chunk3ITTSNWGjs.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
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-VDLJW4JJ.mjs";import"./chunk-KOVKUJAW.mjs";import"./chunk-T3PAOMHI.mjs";import"./chunk-T2YSOHJM.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 _chunkSTVEBT6Mjs = require('./chunk-STVEBT6M.js');var _chunk4BV5IUZHjs = require('./chunk-4BV5IUZH.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=_chunkSTVEBT6Mjs.i.call(void 0, ),r=_chunkSTVEBT6Mjs.f.call(void 0, "stepIndicator");return _jsxruntime.jsx.call(void 0, "p",{"data-bitsnap-returns-slot":"stepIndicator",className:_chunk4BV5IUZHjs.d.call(void 0, "text-xs",r.className),style:r.style,children:n("stepIndicator",{current:e,total:_})})}function b({panelToken:e}){let{status:n}=_chunkSTVEBT6Mjs.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, _chunkSTVEBT6Mjs.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, _chunkSTVEBT6Mjs.t,{onSubmitted:()=>t({type:"CODE_SENT"})}),r.name==="code"&&_jsxruntime.jsx.call(void 0, _chunkSTVEBT6Mjs.u,{onVerified:()=>t({type:"AUTHENTICATED"}),onBack:()=>t({type:"BACK"})}),r.name==="orders"&&_jsxruntime.jsx.call(void 0, _chunkSTVEBT6Mjs.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, _chunkSTVEBT6Mjs.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, _chunkSTVEBT6Mjs.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, _chunkSTVEBT6Mjs.y,{returnId:r.returnId,onContinue:()=>t({type:"CONTINUE"}),onOpenMyReturns:()=>t({type:"OPEN_MY_RETURNS"})}),r.name==="myReturns"&&_jsxruntime.jsx.call(void 0, _chunkSTVEBT6Mjs.z,{onSelectReturn:u=>t({type:"SELECT_RETURN",returnId:u}),onBack:()=>t({type:"BACK"})}),r.name==="myReturn"&&_jsxruntime.jsx.call(void 0, _chunkSTVEBT6Mjs.A,{returnId:r.returnId,onBack:()=>t({type:"BACK"})})]})}function q(e){return _jsxruntime.jsx.call(void 0, _chunkSTVEBT6Mjs.k,{...e,children:_jsxruntime.jsx.call(void 0, b,{panelToken:e.panelAccessToken!=null&&e.panelAccessToken!==""})})}exports.a = q;
2
- //# sourceMappingURL=chunk-MZSLLGFS.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
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/chunk-MZSLLGFS.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":"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","file":"/home/emems/.t3/worktrees/bitsnap-react/cart-payment-method/dist/chunk-MZSLLGFS.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"]}
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":"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","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"]}