@nice2dev/ui-money 1.2.1 → 1.3.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.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var kt=Object.defineProperty;var Ct=(t,e,r)=>e in t?kt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var H=(t,e,r)=>Ct(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),n=require("react/jsx-runtime"),G=require("@nice2dev/ui-core"),me=[{code:"USD",numeric:840,symbol:"$",name:"US Dollar",decimals:2,symbolFirst:!0},{code:"EUR",numeric:978,symbol:"€",name:"Euro",decimals:2,symbolFirst:!0},{code:"GBP",numeric:826,symbol:"£",name:"Pound Sterling",decimals:2,symbolFirst:!0},{code:"JPY",numeric:392,symbol:"¥",name:"Japanese Yen",decimals:0,symbolFirst:!0},{code:"CHF",numeric:756,symbol:"Fr",name:"Swiss Franc",decimals:2},{code:"CAD",numeric:124,symbol:"CA$",name:"Canadian Dollar",decimals:2,symbolFirst:!0},{code:"AUD",numeric:36,symbol:"A$",name:"Australian Dollar",decimals:2,symbolFirst:!0},{code:"NZD",numeric:554,symbol:"NZ$",name:"New Zealand Dollar",decimals:2,symbolFirst:!0},{code:"CNY",numeric:156,symbol:"¥",name:"Chinese Yuan Renminbi",decimals:2,symbolFirst:!0},{code:"HKD",numeric:344,symbol:"HK$",name:"Hong Kong Dollar",decimals:2,symbolFirst:!0},{code:"SGD",numeric:702,symbol:"S$",name:"Singapore Dollar",decimals:2,symbolFirst:!0},{code:"PLN",numeric:985,symbol:"zł",name:"Polish Złoty",decimals:2},{code:"CZK",numeric:203,symbol:"Kč",name:"Czech Koruna",decimals:2},{code:"HUF",numeric:348,symbol:"Ft",name:"Hungarian Forint",decimals:2},{code:"RON",numeric:946,symbol:"lei",name:"Romanian Leu",decimals:2},{code:"BGN",numeric:975,symbol:"лв",name:"Bulgarian Lev",decimals:2},{code:"HRK",numeric:191,symbol:"kn",name:"Croatian Kuna",decimals:2},{code:"DKK",numeric:208,symbol:"kr",name:"Danish Krone",decimals:2},{code:"SEK",numeric:752,symbol:"kr",name:"Swedish Krona",decimals:2},{code:"NOK",numeric:578,symbol:"kr",name:"Norwegian Krone",decimals:2},{code:"ISK",numeric:352,symbol:"kr",name:"Icelandic Króna",decimals:0},{code:"RUB",numeric:643,symbol:"₽",name:"Russian Ruble",decimals:2},{code:"UAH",numeric:980,symbol:"₴",name:"Ukrainian Hryvnia",decimals:2},{code:"TRY",numeric:949,symbol:"₺",name:"Turkish Lira",decimals:2,symbolFirst:!0},{code:"MXN",numeric:484,symbol:"Mex$",name:"Mexican Peso",decimals:2,symbolFirst:!0},{code:"BRL",numeric:986,symbol:"R$",name:"Brazilian Real",decimals:2,symbolFirst:!0},{code:"ARS",numeric:32,symbol:"AR$",name:"Argentine Peso",decimals:2,symbolFirst:!0},{code:"CLP",numeric:152,symbol:"CL$",name:"Chilean Peso",decimals:0,symbolFirst:!0},{code:"COP",numeric:170,symbol:"CO$",name:"Colombian Peso",decimals:2,symbolFirst:!0},{code:"PEN",numeric:604,symbol:"S/",name:"Peruvian Sol",decimals:2,symbolFirst:!0},{code:"UYU",numeric:858,symbol:"$U",name:"Uruguayan Peso",decimals:2,symbolFirst:!0},{code:"INR",numeric:356,symbol:"₹",name:"Indian Rupee",decimals:2,symbolFirst:!0},{code:"IDR",numeric:360,symbol:"Rp",name:"Indonesian Rupiah",decimals:2,symbolFirst:!0},{code:"KRW",numeric:410,symbol:"₩",name:"South Korean Won",decimals:0,symbolFirst:!0},{code:"MYR",numeric:458,symbol:"RM",name:"Malaysian Ringgit",decimals:2,symbolFirst:!0},{code:"PHP",numeric:608,symbol:"₱",name:"Philippine Peso",decimals:2,symbolFirst:!0},{code:"THB",numeric:764,symbol:"฿",name:"Thai Baht",decimals:2,symbolFirst:!0},{code:"VND",numeric:704,symbol:"₫",name:"Vietnamese Đồng",decimals:0},{code:"TWD",numeric:901,symbol:"NT$",name:"New Taiwan Dollar",decimals:2,symbolFirst:!0},{code:"PKR",numeric:586,symbol:"₨",name:"Pakistani Rupee",decimals:2},{code:"BDT",numeric:50,symbol:"৳",name:"Bangladeshi Taka",decimals:2},{code:"LKR",numeric:144,symbol:"Rs",name:"Sri Lankan Rupee",decimals:2},{code:"AED",numeric:784,symbol:"د.إ",name:"UAE Dirham",decimals:2},{code:"SAR",numeric:682,symbol:"ر.س",name:"Saudi Riyal",decimals:2},{code:"QAR",numeric:634,symbol:"ر.ق",name:"Qatari Riyal",decimals:2},{code:"KWD",numeric:414,symbol:"د.ك",name:"Kuwaiti Dinar",decimals:3},{code:"BHD",numeric:48,symbol:".د.ب",name:"Bahraini Dinar",decimals:3},{code:"OMR",numeric:512,symbol:"ر.ع",name:"Omani Rial",decimals:3},{code:"JOD",numeric:400,symbol:"د.أ",name:"Jordanian Dinar",decimals:3},{code:"ILS",numeric:376,symbol:"₪",name:"Israeli New Shekel",decimals:2,symbolFirst:!0},{code:"EGP",numeric:818,symbol:"E£",name:"Egyptian Pound",decimals:2,symbolFirst:!0},{code:"ZAR",numeric:710,symbol:"R",name:"South African Rand",decimals:2,symbolFirst:!0},{code:"NGN",numeric:566,symbol:"₦",name:"Nigerian Naira",decimals:2,symbolFirst:!0},{code:"KES",numeric:404,symbol:"KSh",name:"Kenyan Shilling",decimals:2},{code:"GHS",numeric:936,symbol:"₵",name:"Ghanaian Cedi",decimals:2},{code:"MAD",numeric:504,symbol:"د.م.",name:"Moroccan Dirham",decimals:2},{code:"TND",numeric:788,symbol:"د.ت",name:"Tunisian Dinar",decimals:3},{code:"BTC",numeric:0,symbol:"₿",name:"Bitcoin",decimals:8,symbolFirst:!0},{code:"ETH",numeric:0,symbol:"Ξ",name:"Ether",decimals:8,symbolFirst:!0},{code:"USDC",numeric:0,symbol:"USDC",name:"USD Coin",decimals:6},{code:"USDT",numeric:0,symbol:"USDT",name:"Tether",decimals:6}],Ke=new Map(me.map(t=>[t.code,t]));function W(t){return Ke.get(t.toUpperCase())}function wt(t){Ke.set(t.code.toUpperCase(),t);const e=me.findIndex(r=>r.code===t.code);e>=0?me[e]=t:me.push(t)}function re(t,e){const r=W(e),a=(r==null?void 0:r.decimals)??2,c=Math.pow(10,a);return{amount:(t<0?-1:1)*Math.round(Math.abs(t)*c),currency:e.toUpperCase()}}function we(t){const e=W(t.currency),r=(e==null?void 0:e.decimals)??2;return t.amount/Math.pow(10,r)}function jt(t,e){return t.currency.toUpperCase()===e.currency.toUpperCase()}function je(t,e,r){if(!jt(t,e))throw new Error(`Cannot ${r} different currencies: ${t.currency} vs ${e.currency}`)}function de(t,e){return je(t,e,"add"),{amount:t.amount+e.amount,currency:t.currency}}function Be(t,e){return je(t,e,"subtract"),{amount:t.amount-e.amount,currency:t.currency}}function ge(t,e){return{amount:(t.amount*e<0?-1:1)*Math.round(Math.abs(t.amount*e)),currency:t.currency}}function Mt(t,e){return je(t,e,"compare"),t.amount-e.amount}function Pt(t){return t.amount===0}function St(t){return t.amount<0}function Dt(t){return{amount:-t.amount,currency:t.currency}}function ne(t,e={}){const r=W(t.currency),a=e.decimals??(r==null?void 0:r.decimals)??2,c=t.amount/Math.pow(10,a);try{return new Intl.NumberFormat(e.locale,{style:"currency",currency:t.currency,minimumFractionDigits:a,maximumFractionDigits:a,currencyDisplay:e.currencyDisplay??"symbol"}).format(c)}catch{const s=(r==null?void 0:r.symbol)??t.currency,u=c.toFixed(a);return r!=null&&r.symbolFirst?`${s}${u}`:`${u} ${s}`}}function Le(t,e){if(!t)return null;let r=t.replace(/[^\d.,-]/g,"").trim();if(!r||r==="-")return null;const a=r.startsWith("-");a&&(r=r.slice(1));const c=r.lastIndexOf("."),s=r.lastIndexOf(","),u=Math.max(c,s);let i,l="";u===-1?i=r:(i=r.slice(0,u).replace(/[.,]/g,""),l=r.slice(u+1).replace(/[.,]/g,""));const d=`${i}.${l||"0"}`,h=parseFloat(d);return Number.isFinite(h)?re(a?-h:h,e):null}function he(t){const e=(t||"").replace(/\D/g,"");return e?/^4/.test(e)?"visa":/^(5[1-5]|2(2[2-9]|[3-6]\d|7[01]|720))/.test(e)?"mastercard":/^3[47]/.test(e)?"amex":/^(6011|65|64[4-9]|622(12[6-9]|1[3-9]\d|[2-8]\d\d|9[01]\d|92[0-5]))/.test(e)?"discover":/^3(0[0-5]|[68])/.test(e)?"diners":/^35(2[89]|[3-8])/.test(e)?"jcb":/^62/.test(e)?"unionpay":/^(50|5[6-9]|6[0-9])/.test(e)?"maestro":/^(2200|2201|2202|2203|2204)/.test(e)?"mir":/^(4011|4312|4389|4514|4576|5041|5066|5067|509|6277|6362|6363|650|6516|6550)/.test(e)?"elo":/^(606282|3841)/.test(e)?"hipercard":"unknown":"unknown"}function Me(t){const e=(t||"").replace(/\D/g,"");if(e.length<12||e.length>19)return!1;let r=0,a=!1;for(let c=e.length-1;c>=0;c--){let s=e.charCodeAt(c)-48;a&&(s*=2,s>9&&(s-=9)),r+=s,a=!a}return r%10===0}function ze(t,e){const r=(t||"").replace(/\D/g,""),a=e??he(r);return a==="amex"?[r.slice(0,4),r.slice(4,10),r.slice(10,15)].filter(Boolean).join(" "):a==="diners"?[r.slice(0,4),r.slice(4,10),r.slice(10,14)].filter(Boolean).join(" "):(r.match(/.{1,4}/g)??[]).join(" ").trim()}function It(t,e){const r=(t||"").replace(/\D/g,"");if(r.length<4)return r;const a=r.slice(-4),c="*".repeat(r.length-4)+a,s=e??he(r);return s==="amex"?[c.slice(0,4),c.slice(4,10),c.slice(10,15)].filter(Boolean).join(" "):s==="diners"?[c.slice(0,4),c.slice(4,10),c.slice(10,14)].filter(Boolean).join(" "):(c.match(/.{1,4}/g)??[]).join(" ").trim()}function Pe(t){const e=(t||"").replace(/\D/g,"");if(e.length<3)return null;const r=e.slice(0,2),a=e.length>=4?e.slice(-2):e.slice(2,4),c=parseInt(r,10);return!Number.isFinite(c)||c<1||c>12?null:`${r}/${a}`}function Se(t,e=new Date){const r=Pe(t);if(!r)return!1;const[a,c]=r.split("/"),s=parseInt(a,10),u=2e3+parseInt(c,10);return new Date(u,s,0,23,59,59,999).getTime()>=e.getTime()}function ue(t){return t==="amex"?4:3}function ke(t,e={}){var d;const r={},a=he(t.number),c=Me(t.number);c||(r.number="Invalid card number");const s=Se(t.expiry,e.now);s||(r.expiry="Invalid or expired");const i=(t.cvc||"").replace(/\D/g,"").length===ue(a);i||(r.cvc=`CVC must be ${ue(a)} digits`);const l=!e.requireHolder||(((d=t.holderName)==null?void 0:d.trim().length)??0)>=2;return l||(r.holderName="Cardholder name required"),{brand:a,numberValid:c,expiryValid:s,cvcValid:i,holderValid:l,isValid:c&&s&&i&&l,errors:r}}class Rt{constructor(e){H(this,"id","static");this.rates=e}async getRate(e,r){const a=e.toUpperCase(),c=r.toUpperCase();if(a===c)return{base:a,quote:c,rate:1,asOf:new Date().toISOString()};const s=this.rates.find(d=>d.base===a&&d.quote===c);if(s)return s;const u=this.rates.find(d=>d.base===c&&d.quote===a);if(u)return{base:a,quote:c,rate:1/u.rate,asOf:u.asOf};const i=this.rates.find(d=>d.base===a&&d.quote==="USD")??this.rates.find(d=>d.base==="USD"&&d.quote===a),l=this.rates.find(d=>d.base==="USD"&&d.quote===c)??this.rates.find(d=>d.base===c&&d.quote==="USD");if(i&&l){const d=i.base==="USD"?1/i.rate:i.rate,h=l.base==="USD"?l.rate:1/l.rate;return{base:a,quote:c,rate:d*h,asOf:new Date().toISOString()}}throw new Error(`No FX rate for ${a}/${c}`)}}class Ne{constructor(e={}){H(this,"cache",new Map);H(this,"fetchImpl");H(this,"ttl");this.fetchImpl=e.fetchImpl??fetch,this.ttl=e.cacheTtl??6e4}cacheKey(e,r){return`${this.id}:${e.toUpperCase()}/${r.toUpperCase()}`}getCached(e,r){const a=this.cacheKey(e,r),c=this.cache.get(a);return c&&c.expires>Date.now()?c.rate:(c&&this.cache.delete(a),null)}setCached(e){this.cache.set(this.cacheKey(e.base,e.quote),{expires:Date.now()+this.ttl,rate:e})}}class He extends Ne{constructor(r={}){super(r);H(this,"id","frankfurter")}async getRate(r,a){const c=r.toUpperCase(),s=a.toUpperCase();if(c===s)return{base:c,quote:s,rate:1,asOf:new Date().toISOString()};const u=this.getCached(c,s);if(u)return u;const i=`https://api.frankfurter.app/latest?from=${c}&to=${s}`,l=await this.fetchImpl(i);if(!l.ok)throw new Error(`Frankfurter HTTP ${l.status}`);const d=await l.json(),h=d.rates[s];if(h==null)throw new Error(`Frankfurter: no rate for ${c}/${s}`);const x={base:c,quote:s,rate:h,asOf:d.date};return this.setCached(x),x}}class Ye extends Ne{constructor(r,a={}){super(a);H(this,"id","openexchangerates");this.appId=r}async getRate(r,a){const c=r.toUpperCase(),s=a.toUpperCase();if(c===s)return{base:c,quote:s,rate:1,asOf:new Date().toISOString()};const u=this.getCached(c,s);if(u)return u;const i=`https://openexchangerates.org/api/latest.json?app_id=${this.appId}`,l=await this.fetchImpl(i);if(!l.ok)throw new Error(`OpenExchangeRates HTTP ${l.status}`);const d=await l.json(),h=d.rates[c],x=d.rates[s];if(h==null||x==null)throw new Error(`OpenExchangeRates: missing rate for ${c} or ${s}`);const f={base:c,quote:s,rate:x/h,asOf:new Date(d.timestamp*1e3).toISOString()};return this.setCached(f),f}}class Ge extends Ne{constructor(r={}){super(r);H(this,"id","exchangerate.host")}async getRate(r,a){var f;const c=r.toUpperCase(),s=a.toUpperCase();if(c===s)return{base:c,quote:s,rate:1,asOf:new Date().toISOString()};const u=this.getCached(c,s);if(u)return u;const i=`https://api.exchangerate.host/convert?from=${c}&to=${s}`,l=await this.fetchImpl(i);if(!l.ok)throw new Error(`exchangerate.host HTTP ${l.status}`);const d=await l.json(),h=((f=d.info)==null?void 0:f.rate)??d.result,x={base:c,quote:s,rate:h,asOf:d.date};return this.setCached(x),x}}class Ze extends Ne{constructor(r={}){super(r);H(this,"id","nbp");H(this,"table");this.table=r.table??"A"}async getRate(r,a){const c=r.toUpperCase(),s=a.toUpperCase();if(c===s)return{base:c,quote:s,rate:1,asOf:new Date().toISOString()};const u=this.getCached(c,s);if(u)return u;const i=async x=>{var N;if(x==="PLN")return{rate:1,date:new Date().toISOString().slice(0,10)};const f=`https://api.nbp.pl/api/exchangerates/rates/${this.table}/${x}/?format=json`,m=await this.fetchImpl(f);if(!m.ok)return null;const g=(N=(await m.json()).rates)==null?void 0:N[0];return g?{rate:g.mid??g.ask??0,date:g.effectiveDate}:null},l=await i(c),d=await i(s);if(!l||!d||l.rate===0)throw new Error(`NBP: missing rate for ${c} or ${s}`);const h={base:c,quote:s,rate:l.rate/d.rate,asOf:l.date};return this.setCached(h),h}}class Je extends He{constructor(){super(...arguments);H(this,"id","ecb")}}class Ve extends Ge{constructor(){super(...arguments);H(this,"id","free-forex")}}const $t=(t={})=>new Ze(t),At=(t={})=>new Je(t),Et=t=>new Ye(t.apiKey,t),Ut=(t={})=>new Ve(t);async function Xe(t,e,r){const a=e.toUpperCase();if(t.currency.toUpperCase()===a)return t;const c=W(t.currency),s=W(a),u=(c==null?void 0:c.decimals)??2,i=(s==null?void 0:s.decimals)??2,{rate:l}=await r.getRate(t.currency,a),h=t.amount/Math.pow(10,u)*l;return{currency:a,amount:Math.round(h*Math.pow(10,i))}}class Qe{constructor(e={}){H(this,"id");H(this,"name");H(this,"supportedCurrencies");H(this,"minimums");H(this,"counter",0);this.id=e.id??"mock",this.name=e.name??"Mock Processor",this.supportedCurrencies=e.supportedCurrencies??"*"}newId(e){return this.counter+=1,`${e}_${Date.now().toString(36)}_${this.counter}`}async authorize(e){return{id:this.newId("auth"),status:"authorized",processor:this.id,amount:e.amount,raw:{mock:!0,request:e}}}async capture(e,r){return{id:e.replace("auth_","cap_"),status:"captured",processor:this.id,amount:r}}async cancel(e){return{id:e,status:"cancelled",processor:this.id}}async refund(e,r){return{id:e.replace(/^[a-z]+_/,"ref_"),status:"refunded",processor:this.id,amount:r}}}function V(t,e,r,a,c){const s=u=>{const i=a==null?void 0:a[u];return i||(async()=>{throw new Error(`[ui-money] ${e} adapter is not wired. Pass an \`executor.${String(u)}\` implementation that calls the ${e} SDK.`)})};return{id:t,name:e,supportedCurrencies:r,minimums:c,authorize:s("authorize"),capture:s("capture"),cancel:s("cancel"),refund:s("refund")}}function We(t){return V("stripe","Stripe","*",t,{USD:50,EUR:50,GBP:30,JPY:50,AUD:50,CAD:50,CHF:50,DKK:250,NOK:300,SEK:300,PLN:200})}function et(t){return V("paypal","PayPal",["USD","EUR","GBP","AUD","CAD","JPY","CHF","NZD","SEK","NOK","DKK","PLN","CZK","HUF","BRL","MXN","HKD","SGD","TWD","THB","PHP","ILS"],t)}function tt(t){return V("adyen","Adyen","*",t)}function rt(t){return V("square","Square",["USD","CAD","GBP","AUD","JPY","EUR"],t)}function nt(t){return V("mollie","Mollie","*",t)}function at(t){return V("braintree","Braintree","*",t)}function ct(t){return V("razorpay","Razorpay",["INR","USD","EUR","GBP","AED"],t)}function st(t){return V("payu","PayU",["PLN","EUR","USD","CZK","HUF","RON","BGN","TRY"],t)}function it(t){return V("przelewy24","Przelewy24",["PLN","EUR"],t)}function ot(t={}){return V("tpay","Tpay",["PLN","EUR","USD","GBP"],t)}function lt(t={}){return V("autopay","Autopay",["PLN","EUR","USD","GBP","CZK"],t)}function dt(t={}){const{acquirer:e="native",...r}=t;return V(`blik:${e}`,`BLIK (${e})`,["PLN"],r)}function ut(t){return V("klarna","Klarna",["USD","EUR","GBP","SEK","NOK","DKK","CHF","AUD","CAD","NZD","PLN"],t)}function mt(t){return V("coinbase-commerce","Coinbase Commerce",["BTC","ETH","USDC","USDT","USD","EUR"],t)}const pt={mock:()=>new Qe,stripe:()=>We(),paypal:()=>et(),adyen:()=>tt(),square:()=>rt(),mollie:()=>nt(),braintree:()=>at(),razorpay:()=>ct(),payu:()=>st(),przelewy24:()=>it(),tpay:()=>ot(),autopay:()=>lt(),blik:()=>dt(),klarna:()=>ut(),"coinbase-commerce":()=>mt()};function Tt(t){const e=pt[t];return e?e().supportedCurrencies:"*"}function Ot(t){return`/api/payments/${t}/webhook`}const Ft=[{id:"stripe",name:"Stripe",type:"card",credentials:[{key:"apiKey",label:"Secret API key",secret:!0,required:!0,help:"sk_live_… / sk_test_…"},{key:"publishableKey",label:"Publishable key",required:!0,help:"pk_live_… / pk_test_…"},{key:"webhookSecret",label:"Webhook signing secret",secret:!0,help:"whsec_…"}],supportedMethods:["card","applepay","googlepay","link"],allowedDomains:["api.stripe.com"],hasTestMode:!0},{id:"paypal",name:"PayPal",type:"wallet",credentials:[{key:"clientId",label:"Client ID",required:!0},{key:"clientSecret",label:"Client secret",secret:!0,required:!0},{key:"webhookId",label:"Webhook ID"}],supportedMethods:["paypal","card","paylater"],allowedDomains:["api-m.paypal.com","api-m.sandbox.paypal.com"],hasTestMode:!0},{id:"adyen",name:"Adyen",type:"aggregator",credentials:[{key:"apiKey",label:"API key",secret:!0,required:!0},{key:"merchantAccount",label:"Merchant account",required:!0},{key:"hmacKey",label:"HMAC key (webhooks)",secret:!0},{key:"clientKey",label:"Client key"}],supportedMethods:["card","ideal","bancontact","applepay","googlepay"],allowedDomains:["checkout-test.adyen.com","checkout-live.adyen.com"],hasTestMode:!0},{id:"square",name:"Square",type:"card",credentials:[{key:"accessToken",label:"Access token",secret:!0,required:!0},{key:"applicationId",label:"Application ID",required:!0},{key:"locationId",label:"Location ID",required:!0}],supportedMethods:["card","applepay","googlepay"],allowedDomains:["connect.squareup.com","connect.squareupsandbox.com"],hasTestMode:!0},{id:"mollie",name:"Mollie",type:"aggregator",credentials:[{key:"apiKey",label:"API key",secret:!0,required:!0,help:"live_… / test_…"}],supportedMethods:["card","ideal","bancontact","blik","applepay"],allowedDomains:["api.mollie.com"],hasTestMode:!0},{id:"braintree",name:"Braintree",type:"card",credentials:[{key:"merchantId",label:"Merchant ID",required:!0},{key:"publicKey",label:"Public key",required:!0},{key:"privateKey",label:"Private key",secret:!0,required:!0}],supportedMethods:["card","paypal","applepay","googlepay"],allowedDomains:["api.braintreegateway.com","api.sandbox.braintreegateway.com"],hasTestMode:!0},{id:"razorpay",name:"Razorpay",type:"aggregator",credentials:[{key:"keyId",label:"Key ID",required:!0},{key:"keySecret",label:"Key secret",secret:!0,required:!0},{key:"webhookSecret",label:"Webhook secret",secret:!0}],supportedMethods:["card","upi","netbanking","wallet"],allowedDomains:["api.razorpay.com"],hasTestMode:!0},{id:"payu",name:"PayU",type:"aggregator",credentials:[{key:"posId",label:"POS ID",required:!0},{key:"clientId",label:"OAuth client ID",required:!0},{key:"clientSecret",label:"OAuth client secret",secret:!0,required:!0},{key:"secondKey",label:"Second key (MD5)",secret:!0}],supportedMethods:["card","blik","transfer","googlepay"],allowedDomains:["secure.payu.com","secure.snd.payu.com"],hasTestMode:!0},{id:"przelewy24",name:"Przelewy24",type:"bank",credentials:[{key:"merchantId",label:"Merchant ID",required:!0},{key:"posId",label:"POS ID",required:!0},{key:"crcKey",label:"CRC key",secret:!0,required:!0},{key:"apiKey",label:"API key",secret:!0,required:!0}],supportedMethods:["transfer","blik","card"],allowedDomains:["secure.przelewy24.pl","sandbox.przelewy24.pl"],hasTestMode:!0},{id:"tpay",name:"Tpay",type:"aggregator",credentials:[{key:"merchantId",label:"Merchant ID",required:!0},{key:"apiKey",label:"API key",secret:!0,required:!0},{key:"apiPassword",label:"API password",secret:!0,required:!0}],supportedMethods:["card","blik","transfer","applepay"],allowedDomains:["api.tpay.com","secure.tpay.com"],hasTestMode:!0},{id:"autopay",name:"Autopay",type:"aggregator",credentials:[{key:"serviceId",label:"Service ID",required:!0},{key:"sharedSecret",label:"Shared secret",secret:!0,required:!0}],supportedMethods:["card","blik","transfer"],allowedDomains:["pay.autopay.eu","testpay.autopay.eu"],hasTestMode:!0},{id:"blik",name:"BLIK",type:"bank",credentials:[{key:"acquirer",label:"Acquirer (p24 / tpay / payu / native)",required:!0,help:"Underlying acquirer routing BLIK."}],supportedMethods:["blik"],hasTestMode:!0},{id:"klarna",name:"Klarna",type:"bnpl",credentials:[{key:"username",label:"API username (UID)",required:!0},{key:"password",label:"API password",secret:!0,required:!0},{key:"region",label:"Region (eu / na / oc)",help:"Selects the Klarna API host."}],supportedMethods:["paylater","installments","paynow"],allowedDomains:["api.klarna.com","api.playground.klarna.com"],hasTestMode:!0},{id:"coinbase-commerce",name:"Coinbase Commerce",type:"crypto",credentials:[{key:"apiKey",label:"API key",secret:!0,required:!0},{key:"webhookSharedSecret",label:"Webhook shared secret",secret:!0}],supportedMethods:["crypto"],allowedDomains:["api.commerce.coinbase.com"],hasTestMode:!1},{id:"wallet",name:"In-app Wallet",type:"wallet",currencyKey:"mock",credentials:[{key:"ledgerAccount",label:"Ledger account",required:!0,help:"Account the wallet debits/credits."}],supportedMethods:["wallet"],hasTestMode:!0}],ye=Object.fromEntries(Ft.map(t=>{const{currencyKey:e,...r}=t,a={...r,supportedCurrencies:Tt(e??t.id),webhookPath:Ot(t.id)};return[t.id,a]})),yt=Object.values(ye);function qt(t){return ye[t]}function Kt(t,e){const r=o.useMemo(()=>"amount"in t?t:re(t.major,t.currency),[]),[a,c]=o.useState(r),s=o.useCallback(f=>c(m=>re(f,m.currency)),[]),u=o.useCallback(f=>{c(m=>({...m,currency:f.toUpperCase()}))},[]),i=o.useCallback(f=>c(m=>de(m,f)),[]),l=o.useCallback(f=>c(m=>Be(m,f)),[]),d=o.useCallback(f=>c(m=>ge(m,f)),[]),h=o.useMemo(()=>ne(a,{locale:e}),[a,e]),x=o.useMemo(()=>we(a),[a]);return{money:a,setMoney:c,setMajor:s,setCurrency:u,add:i,subtract:l,scale:d,formatted:h,major:x}}function xe(t,e,r){const[a,c]=o.useState(null),[s,u]=o.useState(null),[i,l]=o.useState(!1),d=o.useRef(0);return o.useEffect(()=>{if(!t){c(null);return}const h=++d.current;l(!0),u(null),Xe(t,e,r).then(x=>{d.current===h&&c(x)}).catch(x=>{d.current===h&&(u(x instanceof Error?x:new Error(String(x))),c(null))}).finally(()=>{d.current===h&&l(!1)})},[t==null?void 0:t.amount,t==null?void 0:t.currency,e,r]),{converted:a,loading:i,error:s}}function ht(t){const[e,r]=o.useState("idle"),[a,c]=o.useState(null),[s,u]=o.useState(null),i=o.useCallback(()=>{r("idle"),c(null),u(null)},[]),l=o.useCallback(async f=>{r("authorizing"),u(null);try{const m=await t.authorize(f);return c(m),r(m.status),m}catch(m){const p=m instanceof Error?m:new Error(String(m));throw u(p),r("failed"),p}},[t]),d=o.useCallback(async(f,m)=>{const p=f??(a==null?void 0:a.id);if(!p)throw new Error("No authorization id to capture");r("capturing");try{const g=await t.capture(p,m);return c(g),r(g.status),g}catch(g){const N=g instanceof Error?g:new Error(String(g));throw u(N),r("failed"),N}},[t,a==null?void 0:a.id]),h=o.useCallback(async f=>{const m=f??(a==null?void 0:a.id);if(!m)throw new Error("No payment id to cancel");const p=await t.cancel(m);return c(p),r(p.status),p},[t,a==null?void 0:a.id]),x=o.useCallback(async(f,m)=>{const p=f??(a==null?void 0:a.id);if(!p)throw new Error("No payment id to refund");const g=await t.refund(p,m);return c(g),r(g.status),g},[t,a==null?void 0:a.id]);return{status:e,response:a,error:s,authorize:l,capture:d,cancel:h,refund:x,reset:i}}const Ce=o.forwardRef(function({value:e,amount:r,currency:a,locale:c,display:s="symbol",highlightNegative:u=!0,zeroPlaceholder:i,convertTo:l,exchangeProvider:d,className:h,style:x,"aria-label":f},m){const p=o.useMemo(()=>{if(e)return e;if(r!=null&&a){const _=W(a),v=(_==null?void 0:_.decimals)??2;return{amount:Math.round(r*Math.pow(10,v)),currency:a.toUpperCase()}}return null},[e,r,a]),g=o.useMemo(()=>p?p.amount===0&&i!=null?i:ne(p,{locale:c,currencyDisplay:s}):"",[p,c,s,i]),{converted:N}=xe(l&&d?p:null,l??"",d);if(!p)return null;const y=p.amount<0,w="nice-money"+(u&&y?" nice-money--negative":"")+(h?` ${h}`:"");return n.jsxs("span",{ref:m,className:w,style:x,"aria-label":f,children:[n.jsx("span",{className:"nice-money__value",children:g}),N&&n.jsxs("span",{className:"nice-money__converted","aria-label":`Converted to ${N.currency}`,children:[" ≈ ",ne(N,{locale:c})]})]})}),Bt=me.map(t=>t.code).sort(),De=o.forwardRef(function({value:e,onChange:r,options:a=me,recents:c=[],searchable:s,showCode:u=!0,showSymbol:i=!0,compact:l=!1,disabled:d,readOnly:h,loading:x,accessMode:f,label:m,helperText:p,error:g,required:N,size:y="md",labelPlacement:w="top",labelWidth:_,controlWidth:v,className:$,style:z,id:j,name:S,title:D,"data-testid":A,"aria-label":X,placeholder:F},k){const{t:q}=G.useNiceTranslation(),T=f==="hidden",J=d||f==="disabled"||x,ae=h||f==="readOnly",B=o.useId(),ee=j??`nice-cs-${B}`,[Y,U]=o.useState(""),E=s??a.length>8,M=o.useMemo(()=>{if(!Y.trim())return a;const P=Y.trim().toLowerCase();return a.filter(I=>I.code.toLowerCase().includes(P)||I.name.toLowerCase().includes(P)||I.symbol.toLowerCase().includes(P))},[a,Y]),b=o.useMemo(()=>{const P=new Set;return c.map(I=>W(I)).filter(I=>!!I&&!P.has(I.code)&&!!P.add(I.code))},[c]),O=o.useCallback(P=>{const I=P.target.value,se=W(I);se&&(r==null||r(I,se))},[r]),L=P=>{if(l)return`${i?P.symbol+" ":""}${P.code}`;const I=[];return i&&I.push(P.symbol),u&&I.push(P.code),I.push("—",P.name),I.join(" ")},C=`nice-currency-selector nice-currency-selector--${y} nice-currency-selector--label-${w}`+(l?" nice-currency-selector--compact":"")+(g?" nice-currency-selector--error":"")+(J?" nice-currency-selector--disabled":"")+($?` ${$}`:""),K=w==="left"&&_!=null?{width:typeof _=="number"?`${_}px`:_,flex:"none"}:void 0,ce=v!=null?{width:typeof v=="number"?`${v}px`:v,flex:"none"}:void 0;return T?null:n.jsxs("div",{ref:k,className:C,style:z,title:D,"data-testid":A,children:[m&&n.jsxs("label",{htmlFor:ee,className:"nice-currency-selector__label",style:K,children:[m,N&&n.jsx("span",{className:"nice-currency-selector__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-currency-selector__inner",style:ce,children:[E&&n.jsx("input",{type:"search",className:"nice-currency-selector__search",placeholder:q("currencySelector.searchCurrency","Search currency…"),value:Y,onChange:P=>U(P.target.value),disabled:J||ae,"aria-label":q("currencySelector.searchCurrency2","Search currency")}),n.jsxs("select",{id:ee,name:S,className:"nice-currency-selector__select",value:e??"",onChange:O,disabled:J||ae,required:N,"aria-invalid":!!g,"aria-label":X??(typeof m=="string"?m:"Currency"),children:[!e&&n.jsx("option",{value:"",children:F??"Select currency…"}),b.length>0&&n.jsx("optgroup",{label:q("currencySelector.recent","Recent"),children:b.map(P=>n.jsx("option",{value:P.code,children:L(P)},`r-${P.code}`))}),n.jsx("optgroup",{label:b.length>0?"All":"",children:M.map(P=>n.jsx("option",{value:P.code,children:L(P)},P.code))})]})]}),(g||p)&&n.jsx("span",{className:g?"nice-currency-selector__error":"nice-currency-selector__helper",children:g??p})]})}),Ie=o.forwardRef(function({value:e,onChange:r,currency:a,onCurrencyChange:c,currencies:s,hideCurrencySelector:u,min:i,max:l,step:d,locale:h,placeholder:x,label:f,helperText:m,error:p,size:g="md",disabled:N,readOnly:y,required:w,loading:_,accessMode:v,labelPlacement:$="top",errorPlacement:z="bottom",labelWidth:j,controlWidth:S,submitOnEnter:D,onSubmit:A,showFormattedPreview:X=!0,showSteppers:F=!1,className:k,style:q,id:T,name:J,title:ae,"data-testid":B,onBlur:ee,onFocus:Y,liveGrouping:U,multiplierShortcuts:E=!0,onValidationError:M},b){const{t:O}=G.useNiceTranslation(),L=N||v==="disabled"||_,C=y||v==="readOnly",K=v==="hidden",ce=o.useId(),P=T??`nice-money-${ce}`,I=((e==null?void 0:e.currency)??a??"USD").toUpperCase(),se=W(I),Q=(se==null?void 0:se.decimals)??2,Re=d??1/Math.pow(10,Q),[ve,be]=o.useState(()=>e?(e.amount/Math.pow(10,Q)).toFixed(Q):""),[fe,$e]=o.useState(!1);o.useEffect(()=>{if(fe)return;if(e==null){be("");return}const R=W(e.currency),Z=(R==null?void 0:R.decimals)??2;be((e.amount/Math.pow(10,Z)).toFixed(Z))},[e,fe]);const Ae=o.useCallback(R=>{let Z=R;if(E){const oe=R.trim().match(/^([+-]?\d+(?:[.,]\d+)?)\s*([kKmMbB])$/);if(oe){const le=oe[2].toLowerCase()==="k"?1e3:oe[2].toLowerCase()==="m"?1e6:1e9,Oe=Number(oe[1].replace(",","."))*le;if(!Number.isFinite(Oe)){M==null||M(new Error("overflow"));return}Z=String(Oe)}}const te=Le(Z,I);if(!te){r==null||r(null);return}if(!Number.isSafeInteger(te.amount)){M==null||M(new Error("overflow: amount exceeds Number.MAX_SAFE_INTEGER"));return}const ie=te.amount/Math.pow(10,Q);if(i!=null&&ie<i){M==null||M(new Error(`min: ${i}`)),r==null||r(re(i,I));return}if(l!=null&&ie>l){M==null||M(new Error(`max: ${l}`)),r==null||r(re(l,I));return}r==null||r(te)},[I,Q,i,l,r,E,M]),ft=o.useCallback(R=>{const Z=R.target.value;be(Z),Ae(Z)},[Ae]),Ee=o.useCallback(R=>{const te=(e?e.amount/Math.pow(10,Q):0)+R,ie=Math.min(l??1/0,Math.max(i??-1/0,te));r==null||r(re(ie,I))},[e,Q,i,l,I,r]),_e=o.useMemo(()=>{var R,Z;try{const te=new Intl.NumberFormat(h).formatToParts(12345.6),ie=((R=te.find(le=>le.type==="group"))==null?void 0:R.value)??",",oe=((Z=te.find(le=>le.type==="decimal"))==null?void 0:Z.value)??".";return{group:ie,decimal:oe}}catch{return{group:",",decimal:"."}}},[h]),Ue=U??!!_e.group,_t=o.useMemo(()=>{if(!Ue||fe===!1)return ve;const R=_e.decimal,Z=_e.group,te=ve.replace(new RegExp(`[${Z.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}]`,"g"),""),[ie,oe]=te.split(R);if(!ie)return te;const le=ie.replace(/\B(?=(\d{3})+(?!\d))/g,Z);return oe!=null?`${le}${R}${oe}`:le},[ve,fe,Ue,_e]),Te=o.useMemo(()=>e?ne(e,{locale:h}):"",[e,h]),pe=typeof p=="string"?p:void 0,gt=`nice-money-input nice-money-input--${g} nice-money-input--label-${$} nice-money-input--error-${z}`+(pe?" nice-money-input--error":"")+(L?" nice-money-input--disabled":"")+(_?" nice-money-input--loading":"")+(k?` ${k}`:""),xt=R=>{D&&R.key==="Enter"&&A&&(R.preventDefault(),A())},Nt=$==="left"&&j!=null?{width:typeof j=="number"?`${j}px`:j,flex:"none"}:void 0,vt=S!=null?{width:typeof S=="number"?`${S}px`:S,flex:"none"}:void 0;return K?null:n.jsxs("div",{ref:b,className:gt,style:q,title:ae,"data-testid":B,children:[f&&n.jsxs("label",{htmlFor:P,className:"nice-money-input__label",style:Nt,children:[f,w&&n.jsx("span",{className:"nice-money-input__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-money-input__row",style:vt,children:[!u&&n.jsx(De,{value:I,compact:!0,options:s?s.map(W).filter(R=>!!R):void 0,onChange:R=>c==null?void 0:c(R),disabled:L||C,className:"nice-money-input__currency","aria-label":O("moneyInput.currency","Currency")}),u&&n.jsx("span",{className:"nice-money-input__symbol","aria-hidden":!0,children:(se==null?void 0:se.symbol)??I}),F&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--down",onClick:()=>Ee(-Re),disabled:L||C||i!=null&&e!=null&&e.amount/Math.pow(10,Q)<=i,"aria-label":O("moneyInput.decreaseAmount","Decrease amount"),tabIndex:-1,children:"−"}),n.jsx("input",{id:P,name:J,type:"text",inputMode:"decimal",autoComplete:"transaction-amount",className:"nice-money-input__amount",value:_t,onChange:ft,onKeyDown:xt,onFocus:R=>{$e(!0),Y==null||Y(R)},onBlur:R=>{$e(!1),e&&be((e.amount/Math.pow(10,Q)).toFixed(Q)),ee==null||ee(R)},placeholder:x??`0${Q>0?"."+"0".repeat(Q):""}`,disabled:L,readOnly:C,required:w,"aria-invalid":!!pe,"aria-describedby":pe||m?`${P}-help`:void 0}),F&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--up",onClick:()=>Ee(Re),disabled:L||C||l!=null&&e!=null&&e.amount/Math.pow(10,Q)>=l,"aria-label":O("moneyInput.increaseAmount","Increase amount"),tabIndex:-1,children:"+"}),_&&n.jsx("span",{className:"nice-money-input__spinner","aria-hidden":!0,children:n.jsx(G.NiceIcon,{name:"refresh",size:14})})]}),X&&Te&&n.jsx("span",{className:"nice-money-input__preview","aria-live":"polite",children:Te}),(pe||m)&&n.jsx("span",{id:`${P}-help`,className:pe?"nice-money-input__error":"nice-money-input__helper",children:pe??m})]})}),Lt={number:"",expiry:"",cvc:""},bt=o.forwardRef(function({value:e=Lt,onChange:r,showHolderName:a=!0,requireHolderName:c,showPostalCode:s=!1,acceptedBrands:u,showBrandIcon:i=!0,size:l="md",disabled:d,readOnly:h,loading:x,accessMode:f,label:m,helperText:p,error:g,required:N,className:y,style:w,id:_,title:v,"data-testid":$},z){const{t:j}=G.useNiceTranslation(),S=f==="hidden",D=d||f==="disabled"||x,A=h||f==="readOnly",X=o.useId(),F=_??`nice-cc-${X}`,[k,q]=o.useState({number:!1,expiry:!1,cvc:!1,holder:!1,postal:!1}),T=o.useMemo(()=>he(e.number),[e.number]),J=o.useMemo(()=>ke(e,{requireHolder:c??a}),[e,c,a]),ae=!u||u.includes(T)||T==="unknown",B=o.useCallback(C=>{const K={...e,...C},ce=ke(K,{requireHolder:c??a});r==null||r(K,ce)},[e,c,a,r]),ee=o.useCallback(C=>{const K=C.target.value.replace(/\D/g,"").slice(0,19);B({number:K})},[B]),Y=o.useCallback(C=>{const K=C.target.value.replace(/\D/g,"").slice(0,4);let ce=K;K.length>=3?ce=`${K.slice(0,2)}/${K.slice(2)}`:K.length===2&&(ce=`${K}/`),B({expiry:ce})},[B]),U=o.useCallback(C=>{const K=C.target.value.replace(/\D/g,"").slice(0,ue(T));B({cvc:K})},[T,B]),E=o.useMemo(()=>ze(e.number,T),[e.number,T]),M=k.number&&e.number.length>0&&(Me(e.number)?ae?void 0:"Card brand not accepted":J.errors.number),b=k.expiry&&e.expiry.length>0&&!Se(e.expiry)?J.errors.expiry:void 0,O=k.cvc&&e.cvc.length>0&&e.cvc.length!==ue(T)?J.errors.cvc:void 0,L=`nice-credit-card nice-credit-card--${l}`+(D?" nice-credit-card--disabled":"")+(x?" nice-credit-card--loading":"")+(g?" nice-credit-card--error":"")+(y?` ${y}`:"");return S?null:n.jsxs("div",{ref:z,className:L,style:w,title:v,"data-testid":$,children:[m&&n.jsxs("div",{className:"nice-credit-card__title",children:[m,N&&n.jsx("span",{className:"nice-credit-card__required","aria-hidden":!0,children:"*"})]}),n.jsx("div",{className:"nice-credit-card__row",children:n.jsxs("label",{className:"nice-credit-card__field nice-credit-card__field--number",children:[n.jsx("span",{className:"nice-credit-card__label",children:j("creditCardInput.cardNumber","Card number")}),n.jsxs("span",{className:"nice-credit-card__input-wrapper",children:[n.jsx("input",{id:`${F}-number`,type:"text",inputMode:"numeric",autoComplete:"cc-number",placeholder:T==="amex"?"3782 822463 10005":"1234 1234 1234 1234",value:E,onChange:ee,onBlur:()=>q(C=>({...C,number:!0})),disabled:D,readOnly:A,"aria-invalid":!!M,"aria-describedby":M?`${F}-number-err`:void 0,className:"nice-credit-card__input",maxLength:T==="amex"?17:23}),i&&n.jsx(zt,{brand:T})]}),M&&n.jsx("span",{id:`${F}-number-err`,className:"nice-credit-card__error",children:M})]})}),n.jsxs("div",{className:"nice-credit-card__row nice-credit-card__row--split",children:[n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:j("creditCardInput.expiry","Expiry")}),n.jsx("input",{id:`${F}-expiry`,type:"text",inputMode:"numeric",autoComplete:"cc-exp",placeholder:j("creditCardInput.mmYy","MM/YY"),value:e.expiry,onChange:Y,onBlur:()=>{q(K=>({...K,expiry:!0}));const C=Pe(e.expiry);C&&C!==e.expiry&&B({expiry:C})},disabled:D,readOnly:A,"aria-invalid":!!b,"aria-describedby":b?`${F}-expiry-err`:void 0,className:"nice-credit-card__input",maxLength:5}),b&&n.jsx("span",{id:`${F}-expiry-err`,className:"nice-credit-card__error",children:b})]}),n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:T==="amex"?"CID":"CVC"}),n.jsx("input",{id:`${F}-cvc`,type:"text",inputMode:"numeric",autoComplete:"cc-csc",placeholder:"•".repeat(ue(T)),value:e.cvc,onChange:U,onBlur:()=>q(C=>({...C,cvc:!0})),disabled:D,readOnly:A,"aria-invalid":!!O,"aria-describedby":O?`${F}-cvc-err`:void 0,className:"nice-credit-card__input",maxLength:ue(T)}),O&&n.jsx("span",{id:`${F}-cvc-err`,className:"nice-credit-card__error",children:O})]})]}),a&&n.jsx("div",{className:"nice-credit-card__row",children:n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:j("creditCardInput.cardholderName","Cardholder name")}),n.jsx("input",{id:`${F}-holder`,type:"text",autoComplete:"cc-name",placeholder:j("creditCardInput.janeDoe","Jane Doe"),value:e.holderName??"",onChange:C=>B({holderName:C.target.value}),onBlur:()=>q(C=>({...C,holder:!0})),disabled:D,readOnly:A,className:"nice-credit-card__input",maxLength:120})]})}),s&&n.jsx("div",{className:"nice-credit-card__row",children:n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:j("creditCardInput.postalCode","Postal code")}),n.jsx("input",{id:`${F}-postal`,type:"text",autoComplete:"postal-code",value:e.postalCode??"",onChange:C=>B({postalCode:C.target.value}),onBlur:()=>q(C=>({...C,postal:!0})),disabled:D,readOnly:A,className:"nice-credit-card__input",maxLength:16})]})}),(g||p)&&n.jsx("div",{className:g?"nice-credit-card__form-error":"nice-credit-card__helper",role:g?"alert":void 0,children:g??p})]})}),Fe={visa:"VISA",mastercard:"MasterCard",amex:"AMEX",discover:"Discover",diners:"Diners",jcb:"JCB",unionpay:"UnionPay",maestro:"Maestro",mir:"MIR",elo:"Elo",hipercard:"Hipercard",unknown:""};function zt({brand:t}){return t==="unknown"?null:n.jsx("span",{className:`nice-credit-card__brand nice-credit-card__brand--${t}`,"aria-label":Fe[t],children:Fe[t]})}const Ht=o.forwardRef(function({processor:e,amount:r,editableAmount:a,customer:c,currencies:s,description:u,metadata:i,autoCapture:l=!0,submitLabel:d="Pay",onSuccess:h,onError:x,consents:f,className:m,style:p},g){const{t:N}=G.useNiceTranslation(),[y,w]=o.useState(r),[_,v]=o.useState(r.currency),[$,z]=o.useState({number:"",expiry:"",cvc:""}),[j,S]=o.useState(null),[D,A]=o.useState(!1),[X,F]=o.useState(null),k=ht(e),q=o.useMemo(()=>e.supportedCurrencies==="*"?!0:e.supportedCurrencies.includes(y.currency.toUpperCase()),[e,y.currency]),T=o.useMemo(()=>{var E;const U=(E=e.minimums)==null?void 0:E[y.currency.toUpperCase()];return U==null||y.amount>=U},[e,y]),J=o.useMemo(()=>{var E;const U=(E=e.minimums)==null?void 0:E[y.currency.toUpperCase()];return U==null?null:{amount:U,currency:y.currency}},[e,y.currency]),ae=!!(j!=null&&j.isValid),B=!D&&q&&T&&ae,ee=o.useCallback(async U=>{if(U.preventDefault(),!!B){F(null),A(!0);try{const E={amount:y,card:$,customer:c,description:u,metadata:i,idempotencyKey:Yt()},M=await k.authorize(E);if(l&&M.status==="authorized"){const b=await k.capture(M.id,y);h==null||h(b)}else h==null||h(M)}catch(E){const M=E instanceof Error?E:new Error(String(E));F(M.message),x==null||x(M)}finally{A(!1)}}},[B,y,$,c,u,i,l,k,h,x]),Y=W(y.currency);return n.jsxs("form",{ref:g,className:"nice-payment-form"+(m?` ${m}`:""),style:p,onSubmit:ee,"aria-busy":D,children:[n.jsx("div",{className:"nice-payment-form__amount",children:a?n.jsx(Ie,{label:N("paymentForm.amount","Amount"),value:y,currency:_,currencies:s,onChange:U=>U&&w(U),onCurrencyChange:U=>{v(U),w(E=>({...E,currency:U}))},disabled:D,required:!0,showFormattedPreview:!0}):n.jsxs("div",{className:"nice-payment-form__total",children:[n.jsx("span",{className:"nice-payment-form__total-label",children:N("paymentForm.total","Total")}),n.jsx(Ce,{value:y})]})}),u&&n.jsx("p",{className:"nice-payment-form__description",children:u}),n.jsx("div",{className:"nice-payment-form__card",children:n.jsx(bt,{value:$,onChange:(U,E)=>{z(U),S(E)},disabled:D})}),!q&&n.jsxs("div",{className:"nice-payment-form__warning",role:"alert",children:[e.name," does not accept ",(Y==null?void 0:Y.name)??y.currency,"."]}),!T&&J&&n.jsxs("div",{className:"nice-payment-form__warning",role:"alert",children:[N("paymentForm.minimumChargeForIs","Minimum charge for {name} is").replace("{name}",String(e.name))," ",n.jsx(Ce,{value:J}),"."]}),f&&n.jsx("div",{className:"nice-payment-form__consents",children:f}),X&&n.jsx("div",{className:"nice-payment-form__error",role:"alert",children:X}),n.jsx("button",{type:"submit",className:"nice-payment-form__submit",disabled:!B,"aria-disabled":!B,children:D?"Processing…":d}),n.jsxs("p",{className:"nice-payment-form__processor",children:[N("paymentForm.securedBy","Secured by")," ",n.jsx("strong",{children:e.name})]})]})});function Yt(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`idem_${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`}const Gt=o.forwardRef(function({price:e,originalPrice:r,period:a,prefix:c,suffix:s,showDiscountBadge:u=!0,size:i="md",locale:l,className:d,style:h},x){const{t:f}=G.useNiceTranslation(),m=r&&r.currency===e.currency&&r.amount>e.amount,p=o.useMemo(()=>!m||!r?null:Math.round((r.amount-e.amount)/r.amount*100),[m,r,e.amount]),g=`nice-price-tag nice-price-tag--${i}`+(d?` ${d}`:"");return n.jsxs("div",{ref:x,className:g,style:h,children:[c&&n.jsx("span",{className:"nice-price-tag__prefix",children:c}),n.jsxs("span",{className:"nice-price-tag__main",children:[n.jsx("span",{className:"nice-price-tag__amount",children:ne(e,{locale:l})}),a&&n.jsx("span",{className:"nice-price-tag__period",children:a})]}),m&&r&&n.jsx("span",{className:"nice-price-tag__original","aria-label":f("priceTag.originalPrice","Original price"),children:n.jsx("s",{children:ne(r,{locale:l})})}),m&&u&&p!=null&&p>0&&n.jsxs("span",{className:"nice-price-tag__discount","aria-label":`${p} percent off`,children:["−",p,"%"]}),s&&n.jsx("span",{className:"nice-price-tag__suffix",children:s})]})}),Zt={amount:0,currency:"USD"},Jt=o.forwardRef(function({source:e,defaultSource:r,onSourceChange:a,targetCurrency:c,defaultTargetCurrency:s,onTargetCurrencyChange:u,provider:i,locale:l,showRateLine:d=!0,className:h,style:x},f){const{t:m}=G.useNiceTranslation(),[p,g]=G.useControllableState({value:e,defaultValue:r,fallbackValue:Zt,onChange:a,componentName:"NiceCurrencyConverter"}),[N,y]=G.useControllableState({value:c,defaultValue:s,fallbackValue:p.currency,onChange:u,componentName:"NiceCurrencyConverter"}),{converted:w,loading:_,error:v}=xe(p,N,i),$=o.useMemo(()=>({amount:Math.pow(10,2),currency:p.currency}),[p.currency]),{converted:z}=xe(d?$:null,N,i);return n.jsxs("div",{ref:f,className:"nice-currency-converter"+(h?` ${h}`:""),style:x,children:[n.jsx("div",{className:"nice-currency-converter__row",children:n.jsx(Ie,{label:m("currencyConverter.from","From"),value:p,onChange:j=>j&&g(j),currency:p.currency,onCurrencyChange:j=>g({...p,currency:j}),showFormattedPreview:!1})}),n.jsxs("div",{className:"nice-currency-converter__row",children:[n.jsx("label",{className:"nice-currency-converter__label",children:"To"}),n.jsxs("div",{className:"nice-currency-converter__output",children:[n.jsx(De,{value:N,onChange:j=>y(j),compact:!0}),n.jsx("span",{className:"nice-currency-converter__amount",children:_?"…":v?"—":w?ne(w,{locale:l}):""})]})]}),d&&z&&n.jsxs("p",{className:"nice-currency-converter__rate",children:["1 ",p.currency," = ",ne(z,{locale:l})," ",n.jsxs("span",{className:"nice-currency-converter__inverse",children:["· 1 ",N," ="," ",ne(re(1/we(z),p.currency),{locale:l})]})]}),v&&n.jsx("p",{className:"nice-currency-converter__error",role:"alert",children:v.message})]})}),Vt=[];function qe(t){return{amount:Math.round(t.amount),currency:t.currency}}const Xt=o.forwardRef(function({lines:e=Vt,locale:r,rounding:a="line",showTotals:c=!0,showGrandTotal:s=!0,hideRateColumn:u=!1,labels:i,density:l="comfortable",className:d,style:h,id:x},f){const m={label:(i==null?void 0:i.label)??"Item",rate:(i==null?void 0:i.rate)??"VAT",net:(i==null?void 0:i.net)??"Net",vat:(i==null?void 0:i.vat)??"Tax",gross:(i==null?void 0:i.gross)??"Gross",total:(i==null?void 0:i.total)??"Total"},p=o.useMemo(()=>{if(a==="total"){const y=new Map;for(const _ of e){let v=y.get(_.vatRate);v||(v=[],y.set(_.vatRate,v)),v.push(_.netAmount)}const w=[];for(const[_,v]of y){const $=v.reduce((S,D)=>de(S,D),re(0,v[0].currency)),z=qe(ge($,_)),j=de($,z);w.push({rate:_,net:$,vat:z,gross:j})}return w}return e.map(y=>{const w=qe(ge(y.netAmount,y.vatRate)),_=de(y.netAmount,w);return{label:y.label,rate:y.vatRate,net:y.netAmount,vat:w,gross:_}})},[e,a]),g=o.useMemo(()=>{if(p.length===0)return null;const y=p[0].net.currency;let w=re(0,y),_=re(0,y),v=re(0,y);for(const $ of p)w=de(w,$.net),_=de(_,$.vat),v=de(v,$.gross);return{net:w,vat:_,gross:v}},[p]),N=y=>ne(y,{locale:r});return n.jsxs("table",{ref:f,id:x,className:`nice-tax-breakdown nice-tax-breakdown--${l} ${d??""}`,style:h,role:"table","aria-label":m.total,children:[n.jsx("thead",{children:n.jsxs("tr",{children:[p.some(y=>y.label!==void 0)&&n.jsx("th",{scope:"col",children:m.label}),!u&&n.jsx("th",{scope:"col",className:"nice-tax-breakdown__rate",children:m.rate}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:m.net}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:m.vat}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:m.gross})]})}),n.jsx("tbody",{children:p.map((y,w)=>n.jsxs("tr",{children:[p.some(_=>_.label!==void 0)&&n.jsx("td",{children:y.label??""}),!u&&n.jsxs("td",{className:"nice-tax-breakdown__rate",children:[(y.rate*100).toLocaleString(r,{maximumFractionDigits:2}),"%"]}),n.jsx("td",{className:"nice-tax-breakdown__num",children:N(y.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:N(y.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:N(y.gross)})]},`${y.rate}-${w}`))}),c&&g&&n.jsx("tfoot",{children:s&&n.jsxs("tr",{className:"nice-tax-breakdown__totals",children:[p.some(y=>y.label!==void 0)&&n.jsx("td",{children:m.total}),!u&&n.jsx("td",{children:p.some(y=>y.label!==void 0)?null:m.total}),n.jsx("td",{className:"nice-tax-breakdown__num",children:N(g.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:N(g.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:N(g.gross)})]})})]})}),Qt=[],Wt=o.forwardRef(function(e,r){const{t:a}=G.useNiceTranslation(),{methods:c=Qt,value:s,onChange:u,layout:i="list",columns:l=2,currency:d,label:h,name:x,readOnly:f=!1,className:m,style:p,id:g,accessMode:N,"data-testid":y}=e,w=o.useId(),_=x??`nice-pm-${w}`,v=o.useMemo(()=>{if(!d)return c;const S=d.toUpperCase();return c.filter(D=>!D.currencies||D.currencies.map(A=>A.toUpperCase()).includes(S))},[c,d]);if(N==="hidden")return null;const $=f||N==="disabled"||N==="readOnly",z=`nice-payment-method-selector nice-payment-method-selector--${i}`+(m?` ${m}`:""),j=i==="grid"?{gridTemplateColumns:`repeat(${l}, minmax(0, 1fr))`}:void 0;return n.jsxs("div",{ref:r,id:g,className:z,style:p,"data-testid":y,children:[h&&n.jsx("div",{className:"nice-payment-method-selector__label",children:h}),n.jsxs("div",{className:"nice-payment-method-selector__options",style:j,role:"radiogroup","aria-label":h??"Payment method",children:[v.map(S=>{const D=S.id===s,A=$||S.disabled;return n.jsxs("label",{className:"nice-payment-method-selector__option"+(D?" nice-payment-method-selector__option--selected":"")+(A?" nice-payment-method-selector__option--disabled":""),children:[n.jsx("input",{type:"radio",className:"nice-payment-method-selector__radio",name:_,value:S.id,checked:D,disabled:A,onChange:()=>u==null?void 0:u(S.id)}),S.icon&&n.jsx("span",{className:"nice-payment-method-selector__icon",children:S.icon}),n.jsxs("span",{className:"nice-payment-method-selector__text",children:[n.jsx("span",{className:"nice-payment-method-selector__name",children:S.label}),S.description&&n.jsx("span",{className:"nice-payment-method-selector__desc",children:S.description})]})]},S.id)}),v.length===0&&n.jsx("div",{className:"nice-payment-method-selector__empty",children:a("paymentMethodSelector.noMethodsAvailable","No methods available.")})]})]})}),er=[{target:".nice-payment-provider-config",titleKey:"tutorial.paymentProviderConfig.intro.title",title:"Payment provider",contentKey:"tutorial.paymentProviderConfig.intro.content",content:"Pick a provider, fill its credentials (secrets are masked), choose test/live, enable methods and copy the webhook URL.",placement:"auto"}],tr={providerId:"",mode:"test",credentials:{},enabledMethods:[]},rr=o.forwardRef(function(e,r){const{t:a}=G.useNiceTranslation(),{value:c,defaultValue:s,onChange:u,providers:i,onTestConnection:l,showWebhookUrl:d=!0,baseUrl:h,readOnly:x=!1,testLabel:f="Test connection",tutorial:m,className:p,style:g,id:N,accessMode:y,"data-testid":w}=e,[_,v]=G.useControllableState({value:c,defaultValue:s,fallbackValue:tr,onChange:u,componentName:"NicePaymentProviderConfig"}),$=o.useId(),[z,j]=o.useState(new Set),[S,D]=o.useState(!1),[A,X]=o.useState(null),F=o.useMemo(()=>i?i.map(b=>ye[b]).filter(b=>!!b):yt,[i]),k=ye[_.providerId];if(y==="hidden")return null;const q=x||y==="disabled"||y==="readOnly",T=b=>{X(null),j(new Set),v({providerId:b,mode:_.mode,credentials:{},enabledMethods:[]})},J=(b,O)=>{v({..._,credentials:{..._.credentials,[b]:O}})},ae=b=>{const O=new Set(_.enabledMethods??[]);O.has(b)?O.delete(b):O.add(b),v({..._,enabledMethods:[...O]})},B=b=>{j(O=>{const L=new Set(O);return L.has(b)?L.delete(b):L.add(b),L})},ee=async()=>{if(l){D(!0),X(null);try{X(await l(_))}catch(b){X({ok:!1,message:b instanceof Error?b.message:String(b)})}finally{D(!1)}}},Y=k!=null&&k.webhookPath?`${(h??"").replace(/\/$/,"")}${k.webhookPath}`:"",U=(k==null?void 0:k.supportedCurrencies)==="*"?"All currencies":((k==null?void 0:k.supportedCurrencies)??[]).join(", "),E="nice-payment-provider-config"+(p?` ${p}`:""),M=((k==null?void 0:k.credentials)??[]).filter(b=>!b.testOnly||_.mode==="test");return n.jsxs("div",{ref:r,id:N,className:E,style:g,"data-testid":w,children:[m&&n.jsx("div",{className:"nice-payment-provider-config__tutorial",children:n.jsx(G.NiceTutorialButton,{steps:G.resolveTutorial(m,er)})}),n.jsxs("div",{className:"nice-payment-provider-config__row",children:[n.jsxs("label",{className:"nice-payment-provider-config__field",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:a("paymentProviderConfig.provider","Provider")}),n.jsxs("select",{className:"nice-payment-provider-config__select",value:_.providerId,disabled:q,onChange:b=>T(b.target.value),children:[n.jsx("option",{value:"",children:"— select provider —"}),F.map(b=>n.jsx("option",{value:b.id,children:b.name},b.id))]})]}),(k==null?void 0:k.hasTestMode)&&n.jsxs("div",{className:"nice-payment-provider-config__mode",role:"group","aria-label":a("paymentProviderConfig.mode","Mode"),children:[n.jsx("button",{type:"button",className:"nice-payment-provider-config__mode-btn"+(_.mode==="test"?" nice-payment-provider-config__mode-btn--active":""),onClick:()=>v({..._,mode:"test"}),disabled:q,children:a("paymentProviderConfig.test","Test")}),n.jsx("button",{type:"button",className:"nice-payment-provider-config__mode-btn"+(_.mode==="live"?" nice-payment-provider-config__mode-btn--active":""),onClick:()=>v({..._,mode:"live"}),disabled:q,children:a("paymentProviderConfig.live","Live")})]})]}),k&&n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"nice-payment-provider-config__meta",children:[n.jsx("span",{className:"nice-payment-provider-config__badge",children:k.type}),n.jsx("span",{className:"nice-payment-provider-config__currencies",children:U})]}),n.jsx("div",{className:"nice-payment-provider-config__credentials",children:M.map(b=>{const O=`${$}-${b.key}`,L=b.secret,C=z.has(b.key);return n.jsxs("div",{className:"nice-payment-provider-config__field",children:[n.jsxs("label",{className:"nice-payment-provider-config__field-label",htmlFor:O,children:[b.label,b.required&&n.jsx("span",{className:"nice-payment-provider-config__required",children:" *"})]}),n.jsxs("div",{className:"nice-payment-provider-config__input-wrap",children:[n.jsx("input",{id:O,type:L&&!C?"password":"text",className:"nice-payment-provider-config__input",value:_.credentials[b.key]??"",readOnly:q,autoComplete:L?"new-password":"off",onChange:K=>J(b.key,K.target.value)}),L&&n.jsx("button",{type:"button",className:"nice-payment-provider-config__reveal",onClick:()=>B(b.key),"aria-label":C?"Hide":"Reveal","aria-pressed":C,children:n.jsx(G.NiceIcon,{name:C?"eye-off":"eye",size:14})})]}),b.help&&n.jsx("span",{className:"nice-payment-provider-config__help",children:b.help})]},b.key)})}),k.supportedMethods&&k.supportedMethods.length>0&&n.jsxs("div",{className:"nice-payment-provider-config__methods",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:a("paymentProviderConfig.enabledMethods","Enabled methods")}),n.jsx("div",{className:"nice-payment-provider-config__method-list",children:k.supportedMethods.map(b=>n.jsxs("label",{className:"nice-payment-provider-config__method",children:[n.jsx("input",{type:"checkbox",checked:(_.enabledMethods??[]).includes(b),disabled:q,onChange:()=>ae(b)}),b]},b))})]}),d&&k.webhookPath&&n.jsxs("div",{className:"nice-payment-provider-config__field",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:a("paymentProviderConfig.webhookUrl","Webhook URL")}),n.jsx("code",{className:"nice-payment-provider-config__webhook",children:Y})]}),l&&n.jsxs("div",{className:"nice-payment-provider-config__test",children:[n.jsx("button",{type:"button",className:"nice-payment-provider-config__test-btn",onClick:()=>void ee(),disabled:q||S,children:S?"Testing…":f}),A&&n.jsxs("span",{className:"nice-payment-provider-config__test-result nice-payment-provider-config__test-result--"+(A.ok?"ok":"error"),children:[n.jsx(G.NiceIcon,{name:A.ok?"check":"close",size:14})," ",A.message??(A.ok?"OK":"Failed")]})]})]})]})});exports.EcbRatesProvider=Je;exports.ExchangeRateHostProvider=Ge;exports.FrankfurterProvider=He;exports.FreeForexApiProvider=Ve;exports.MockPaymentProcessor=Qe;exports.NICE_CURRENCY_CATALOG=me;exports.NICE_CURRENCY_CODES=Bt;exports.NICE_PAYMENT_PROCESSORS=pt;exports.NICE_PAYMENT_PROVIDER_LIST=yt;exports.NICE_PAYMENT_PROVIDER_PROFILES=ye;exports.NbpRatesProvider=Ze;exports.NiceCreditCardInput=bt;exports.NiceCurrencyConverter=Jt;exports.NiceCurrencySelector=De;exports.NiceMoney=Ce;exports.NiceMoneyInput=Ie;exports.NicePaymentForm=Ht;exports.NicePaymentMethodSelector=Wt;exports.NicePaymentProviderConfig=rr;exports.NicePriceTag=Gt;exports.NiceTaxBreakdown=Xt;exports.OpenExchangeRatesProvider=Ye;exports.StaticExchangeRateProvider=Rt;exports.addMoney=de;exports.compareMoney=Mt;exports.convertMoney=Xe;exports.createEcbRatesProvider=At;exports.createFreeForexApiProvider=Ut;exports.createNbpRatesProvider=$t;exports.createOpenExchangeRatesProvider=Et;exports.detectCardBrand=he;exports.expectedCvcLength=ue;exports.findCurrency=W;exports.findPaymentProviderProfile=qt;exports.formatCardNumber=ze;exports.formatMoney=ne;exports.fromMoney=we;exports.isExpiryValid=Se;exports.isNegative=St;exports.isZero=Pt;exports.luhnCheck=Me;exports.makeAdyenAdapter=tt;exports.makeAutopayAdapter=lt;exports.makeBlikAdapter=dt;exports.makeBraintreeAdapter=at;exports.makeCoinbaseCommerceAdapter=mt;exports.makeKlarnaAdapter=ut;exports.makeMollieAdapter=nt;exports.makePayPalAdapter=et;exports.makePayUAdapter=st;exports.makePrzelewy24Adapter=it;exports.makeRazorpayAdapter=ct;exports.makeSquareAdapter=rt;exports.makeStripeAdapter=We;exports.makeTpayAdapter=ot;exports.maskCardNumber=It;exports.multiplyMoney=ge;exports.negateMoney=Dt;exports.normaliseExpiry=Pe;exports.parseMoney=Le;exports.registerCurrency=wt;exports.subtractMoney=Be;exports.toMoney=re;exports.useNiceExchangeRate=xe;exports.useNiceMoney=Kt;exports.useNicePayment=ht;exports.validateCreditCard=ke;
1
+ "use strict";var Mt=Object.defineProperty;var Pt=(t,e,r)=>e in t?Mt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Y=(t,e,r)=>Pt(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),n=require("react/jsx-runtime"),L=require("@nice2dev/ui-core"),me=[{code:"USD",numeric:840,symbol:"$",name:"US Dollar",decimals:2,symbolFirst:!0},{code:"EUR",numeric:978,symbol:"€",name:"Euro",decimals:2,symbolFirst:!0},{code:"GBP",numeric:826,symbol:"£",name:"Pound Sterling",decimals:2,symbolFirst:!0},{code:"JPY",numeric:392,symbol:"¥",name:"Japanese Yen",decimals:0,symbolFirst:!0},{code:"CHF",numeric:756,symbol:"Fr",name:"Swiss Franc",decimals:2},{code:"CAD",numeric:124,symbol:"CA$",name:"Canadian Dollar",decimals:2,symbolFirst:!0},{code:"AUD",numeric:36,symbol:"A$",name:"Australian Dollar",decimals:2,symbolFirst:!0},{code:"NZD",numeric:554,symbol:"NZ$",name:"New Zealand Dollar",decimals:2,symbolFirst:!0},{code:"CNY",numeric:156,symbol:"¥",name:"Chinese Yuan Renminbi",decimals:2,symbolFirst:!0},{code:"HKD",numeric:344,symbol:"HK$",name:"Hong Kong Dollar",decimals:2,symbolFirst:!0},{code:"SGD",numeric:702,symbol:"S$",name:"Singapore Dollar",decimals:2,symbolFirst:!0},{code:"PLN",numeric:985,symbol:"zł",name:"Polish Złoty",decimals:2},{code:"CZK",numeric:203,symbol:"Kč",name:"Czech Koruna",decimals:2},{code:"HUF",numeric:348,symbol:"Ft",name:"Hungarian Forint",decimals:2},{code:"RON",numeric:946,symbol:"lei",name:"Romanian Leu",decimals:2},{code:"BGN",numeric:975,symbol:"лв",name:"Bulgarian Lev",decimals:2},{code:"HRK",numeric:191,symbol:"kn",name:"Croatian Kuna",decimals:2},{code:"DKK",numeric:208,symbol:"kr",name:"Danish Krone",decimals:2},{code:"SEK",numeric:752,symbol:"kr",name:"Swedish Krona",decimals:2},{code:"NOK",numeric:578,symbol:"kr",name:"Norwegian Krone",decimals:2},{code:"ISK",numeric:352,symbol:"kr",name:"Icelandic Króna",decimals:0},{code:"RUB",numeric:643,symbol:"₽",name:"Russian Ruble",decimals:2},{code:"UAH",numeric:980,symbol:"₴",name:"Ukrainian Hryvnia",decimals:2},{code:"TRY",numeric:949,symbol:"₺",name:"Turkish Lira",decimals:2,symbolFirst:!0},{code:"MXN",numeric:484,symbol:"Mex$",name:"Mexican Peso",decimals:2,symbolFirst:!0},{code:"BRL",numeric:986,symbol:"R$",name:"Brazilian Real",decimals:2,symbolFirst:!0},{code:"ARS",numeric:32,symbol:"AR$",name:"Argentine Peso",decimals:2,symbolFirst:!0},{code:"CLP",numeric:152,symbol:"CL$",name:"Chilean Peso",decimals:0,symbolFirst:!0},{code:"COP",numeric:170,symbol:"CO$",name:"Colombian Peso",decimals:2,symbolFirst:!0},{code:"PEN",numeric:604,symbol:"S/",name:"Peruvian Sol",decimals:2,symbolFirst:!0},{code:"UYU",numeric:858,symbol:"$U",name:"Uruguayan Peso",decimals:2,symbolFirst:!0},{code:"INR",numeric:356,symbol:"₹",name:"Indian Rupee",decimals:2,symbolFirst:!0},{code:"IDR",numeric:360,symbol:"Rp",name:"Indonesian Rupiah",decimals:2,symbolFirst:!0},{code:"KRW",numeric:410,symbol:"₩",name:"South Korean Won",decimals:0,symbolFirst:!0},{code:"MYR",numeric:458,symbol:"RM",name:"Malaysian Ringgit",decimals:2,symbolFirst:!0},{code:"PHP",numeric:608,symbol:"₱",name:"Philippine Peso",decimals:2,symbolFirst:!0},{code:"THB",numeric:764,symbol:"฿",name:"Thai Baht",decimals:2,symbolFirst:!0},{code:"VND",numeric:704,symbol:"₫",name:"Vietnamese Đồng",decimals:0},{code:"TWD",numeric:901,symbol:"NT$",name:"New Taiwan Dollar",decimals:2,symbolFirst:!0},{code:"PKR",numeric:586,symbol:"₨",name:"Pakistani Rupee",decimals:2},{code:"BDT",numeric:50,symbol:"৳",name:"Bangladeshi Taka",decimals:2},{code:"LKR",numeric:144,symbol:"Rs",name:"Sri Lankan Rupee",decimals:2},{code:"AED",numeric:784,symbol:"د.إ",name:"UAE Dirham",decimals:2},{code:"SAR",numeric:682,symbol:"ر.س",name:"Saudi Riyal",decimals:2},{code:"QAR",numeric:634,symbol:"ر.ق",name:"Qatari Riyal",decimals:2},{code:"KWD",numeric:414,symbol:"د.ك",name:"Kuwaiti Dinar",decimals:3},{code:"BHD",numeric:48,symbol:".د.ب",name:"Bahraini Dinar",decimals:3},{code:"OMR",numeric:512,symbol:"ر.ع",name:"Omani Rial",decimals:3},{code:"JOD",numeric:400,symbol:"د.أ",name:"Jordanian Dinar",decimals:3},{code:"ILS",numeric:376,symbol:"₪",name:"Israeli New Shekel",decimals:2,symbolFirst:!0},{code:"EGP",numeric:818,symbol:"E£",name:"Egyptian Pound",decimals:2,symbolFirst:!0},{code:"ZAR",numeric:710,symbol:"R",name:"South African Rand",decimals:2,symbolFirst:!0},{code:"NGN",numeric:566,symbol:"₦",name:"Nigerian Naira",decimals:2,symbolFirst:!0},{code:"KES",numeric:404,symbol:"KSh",name:"Kenyan Shilling",decimals:2},{code:"GHS",numeric:936,symbol:"₵",name:"Ghanaian Cedi",decimals:2},{code:"MAD",numeric:504,symbol:"د.م.",name:"Moroccan Dirham",decimals:2},{code:"TND",numeric:788,symbol:"د.ت",name:"Tunisian Dinar",decimals:3},{code:"BTC",numeric:0,symbol:"₿",name:"Bitcoin",decimals:8,symbolFirst:!0},{code:"ETH",numeric:0,symbol:"Ξ",name:"Ether",decimals:8,symbolFirst:!0},{code:"USDC",numeric:0,symbol:"USDC",name:"USD Coin",decimals:6},{code:"USDT",numeric:0,symbol:"USDT",name:"Tether",decimals:6}],ze=new Map(me.map(t=>[t.code,t]));function W(t){return ze.get(t.toUpperCase())}function St(t){ze.set(t.code.toUpperCase(),t);const e=me.findIndex(r=>r.code===t.code);e>=0?me[e]=t:me.push(t)}function ee(t,e){const r=W(e),a=(r==null?void 0:r.decimals)??2,c=Math.pow(10,a);return{amount:(t<0?-1:1)*Math.round(Math.abs(t)*c),currency:e.toUpperCase()}}function De(t){const e=W(t.currency),r=(e==null?void 0:e.decimals)??2;return t.amount/Math.pow(10,r)}function Dt(t,e){return t.currency.toUpperCase()===e.currency.toUpperCase()}function Ie(t,e,r){if(!Dt(t,e))throw new Error(`Cannot ${r} different currencies: ${t.currency} vs ${e.currency}`)}function le(t,e){return Ie(t,e,"add"),{amount:t.amount+e.amount,currency:t.currency}}function He(t,e){return Ie(t,e,"subtract"),{amount:t.amount-e.amount,currency:t.currency}}function Ne(t,e){return{amount:(t.amount*e<0?-1:1)*Math.round(Math.abs(t.amount*e)),currency:t.currency}}function It(t,e){return Ie(t,e,"compare"),t.amount-e.amount}function Rt(t){return t.amount===0}function At(t){return t.amount<0}function $t(t){return{amount:-t.amount,currency:t.currency}}function ne(t,e={}){const r=W(t.currency),a=e.decimals??(r==null?void 0:r.decimals)??2,c=t.amount/Math.pow(10,a);try{return new Intl.NumberFormat(e.locale,{style:"currency",currency:t.currency,minimumFractionDigits:a,maximumFractionDigits:a,currencyDisplay:e.currencyDisplay??"symbol"}).format(c)}catch{const i=(r==null?void 0:r.symbol)??t.currency,u=c.toFixed(a);return r!=null&&r.symbolFirst?`${i}${u}`:`${u} ${i}`}}function Ye(t,e){if(!t)return null;let r=t.replace(/[^\d.,-]/g,"").trim();if(!r||r==="-")return null;const a=r.startsWith("-");a&&(r=r.slice(1));const c=r.lastIndexOf("."),i=r.lastIndexOf(","),u=Math.max(c,i);let s,l="";u===-1?s=r:(s=r.slice(0,u).replace(/[.,]/g,""),l=r.slice(u+1).replace(/[.,]/g,""));const d=`${s}.${l||"0"}`,h=parseFloat(d);return Number.isFinite(h)?ee(a?-h:h,e):null}function be(t){const e=(t||"").replace(/\D/g,"");return e?/^4/.test(e)?"visa":/^(5[1-5]|2(2[2-9]|[3-6]\d|7[01]|720))/.test(e)?"mastercard":/^3[47]/.test(e)?"amex":/^(6011|65|64[4-9]|622(12[6-9]|1[3-9]\d|[2-8]\d\d|9[01]\d|92[0-5]))/.test(e)?"discover":/^3(0[0-5]|[68])/.test(e)?"diners":/^35(2[89]|[3-8])/.test(e)?"jcb":/^62/.test(e)?"unionpay":/^(50|5[6-9]|6[0-9])/.test(e)?"maestro":/^(2200|2201|2202|2203|2204)/.test(e)?"mir":/^(4011|4312|4389|4514|4576|5041|5066|5067|509|6277|6362|6363|650|6516|6550)/.test(e)?"elo":/^(606282|3841)/.test(e)?"hipercard":"unknown":"unknown"}function Re(t){const e=(t||"").replace(/\D/g,"");if(e.length<12||e.length>19)return!1;let r=0,a=!1;for(let c=e.length-1;c>=0;c--){let i=e.charCodeAt(c)-48;a&&(i*=2,i>9&&(i-=9)),r+=i,a=!a}return r%10===0}function Ge(t,e){const r=(t||"").replace(/\D/g,""),a=e??be(r);return a==="amex"?[r.slice(0,4),r.slice(4,10),r.slice(10,15)].filter(Boolean).join(" "):a==="diners"?[r.slice(0,4),r.slice(4,10),r.slice(10,14)].filter(Boolean).join(" "):(r.match(/.{1,4}/g)??[]).join(" ").trim()}function Et(t,e){const r=(t||"").replace(/\D/g,"");if(r.length<4)return r;const a=r.slice(-4),c="*".repeat(r.length-4)+a,i=e??be(r);return i==="amex"?[c.slice(0,4),c.slice(4,10),c.slice(10,15)].filter(Boolean).join(" "):i==="diners"?[c.slice(0,4),c.slice(4,10),c.slice(10,14)].filter(Boolean).join(" "):(c.match(/.{1,4}/g)??[]).join(" ").trim()}function Ae(t){const e=(t||"").replace(/\D/g,"");if(e.length<3)return null;const r=e.slice(0,2),a=e.length>=4?e.slice(-2):e.slice(2,4),c=parseInt(r,10);return!Number.isFinite(c)||c<1||c>12?null:`${r}/${a}`}function $e(t,e=new Date){const r=Ae(t);if(!r)return!1;const[a,c]=r.split("/"),i=parseInt(a,10),u=2e3+parseInt(c,10);return new Date(u,i,0,23,59,59,999).getTime()>=e.getTime()}function ue(t){return t==="amex"?4:3}function Pe(t,e={}){var d;const r={},a=be(t.number),c=Re(t.number);c||(r.number="Invalid card number");const i=$e(t.expiry,e.now);i||(r.expiry="Invalid or expired");const s=(t.cvc||"").replace(/\D/g,"").length===ue(a);s||(r.cvc=`CVC must be ${ue(a)} digits`);const l=!e.requireHolder||(((d=t.holderName)==null?void 0:d.trim().length)??0)>=2;return l||(r.holderName="Cardholder name required"),{brand:a,numberValid:c,expiryValid:i,cvcValid:s,holderValid:l,isValid:c&&i&&s&&l,errors:r}}class Ut{constructor(e){Y(this,"id","static");this.rates=e}async getRate(e,r){const a=e.toUpperCase(),c=r.toUpperCase();if(a===c)return{base:a,quote:c,rate:1,asOf:new Date().toISOString()};const i=this.rates.find(d=>d.base===a&&d.quote===c);if(i)return i;const u=this.rates.find(d=>d.base===c&&d.quote===a);if(u)return{base:a,quote:c,rate:1/u.rate,asOf:u.asOf};const s=this.rates.find(d=>d.base===a&&d.quote==="USD")??this.rates.find(d=>d.base==="USD"&&d.quote===a),l=this.rates.find(d=>d.base==="USD"&&d.quote===c)??this.rates.find(d=>d.base===c&&d.quote==="USD");if(s&&l){const d=s.base==="USD"?1/s.rate:s.rate,h=l.base==="USD"?l.rate:1/l.rate;return{base:a,quote:c,rate:d*h,asOf:new Date().toISOString()}}throw new Error(`No FX rate for ${a}/${c}`)}}class ke{constructor(e={}){Y(this,"cache",new Map);Y(this,"fetchImpl");Y(this,"ttl");this.fetchImpl=e.fetchImpl??fetch,this.ttl=e.cacheTtl??6e4}cacheKey(e,r){return`${this.id}:${e.toUpperCase()}/${r.toUpperCase()}`}getCached(e,r){const a=this.cacheKey(e,r),c=this.cache.get(a);return c&&c.expires>Date.now()?c.rate:(c&&this.cache.delete(a),null)}setCached(e){this.cache.set(this.cacheKey(e.base,e.quote),{expires:Date.now()+this.ttl,rate:e})}}class Ze extends ke{constructor(r={}){super(r);Y(this,"id","frankfurter")}async getRate(r,a){const c=r.toUpperCase(),i=a.toUpperCase();if(c===i)return{base:c,quote:i,rate:1,asOf:new Date().toISOString()};const u=this.getCached(c,i);if(u)return u;const s=`https://api.frankfurter.app/latest?from=${c}&to=${i}`,l=await this.fetchImpl(s);if(!l.ok)throw new Error(`Frankfurter HTTP ${l.status}`);const d=await l.json(),h=d.rates[i];if(h==null)throw new Error(`Frankfurter: no rate for ${c}/${i}`);const v={base:c,quote:i,rate:h,asOf:d.date};return this.setCached(v),v}}class Je extends ke{constructor(r,a={}){super(a);Y(this,"id","openexchangerates");this.appId=r}async getRate(r,a){const c=r.toUpperCase(),i=a.toUpperCase();if(c===i)return{base:c,quote:i,rate:1,asOf:new Date().toISOString()};const u=this.getCached(c,i);if(u)return u;const s=`https://openexchangerates.org/api/latest.json?app_id=${this.appId}`,l=await this.fetchImpl(s);if(!l.ok)throw new Error(`OpenExchangeRates HTTP ${l.status}`);const d=await l.json(),h=d.rates[c],v=d.rates[i];if(h==null||v==null)throw new Error(`OpenExchangeRates: missing rate for ${c} or ${i}`);const b={base:c,quote:i,rate:v/h,asOf:new Date(d.timestamp*1e3).toISOString()};return this.setCached(b),b}}class Ve extends ke{constructor(r={}){super(r);Y(this,"id","exchangerate.host")}async getRate(r,a){var b;const c=r.toUpperCase(),i=a.toUpperCase();if(c===i)return{base:c,quote:i,rate:1,asOf:new Date().toISOString()};const u=this.getCached(c,i);if(u)return u;const s=`https://api.exchangerate.host/convert?from=${c}&to=${i}`,l=await this.fetchImpl(s);if(!l.ok)throw new Error(`exchangerate.host HTTP ${l.status}`);const d=await l.json(),h=((b=d.info)==null?void 0:b.rate)??d.result,v={base:c,quote:i,rate:h,asOf:d.date};return this.setCached(v),v}}class Xe extends ke{constructor(r={}){super(r);Y(this,"id","nbp");Y(this,"table");this.table=r.table??"A"}async getRate(r,a){const c=r.toUpperCase(),i=a.toUpperCase();if(c===i)return{base:c,quote:i,rate:1,asOf:new Date().toISOString()};const u=this.getCached(c,i);if(u)return u;const s=async v=>{var C;if(v==="PLN")return{rate:1,date:new Date().toISOString().slice(0,10)};const b=`https://api.nbp.pl/api/exchangerates/rates/${this.table}/${v}/?format=json`,m=await this.fetchImpl(b);if(!m.ok)return null;const f=(C=(await m.json()).rates)==null?void 0:C[0];return f?{rate:f.mid??f.ask??0,date:f.effectiveDate}:null},l=await s(c),d=await s(i);if(!l||!d||l.rate===0)throw new Error(`NBP: missing rate for ${c} or ${i}`);const h={base:c,quote:i,rate:l.rate/d.rate,asOf:l.date};return this.setCached(h),h}}class Qe extends Ze{constructor(){super(...arguments);Y(this,"id","ecb")}}class We extends Ve{constructor(){super(...arguments);Y(this,"id","free-forex")}}const Tt=(t={})=>new Xe(t),Ft=(t={})=>new Qe(t),Ot=t=>new Je(t.apiKey,t),qt=(t={})=>new We(t);async function et(t,e,r){const a=e.toUpperCase();if(t.currency.toUpperCase()===a)return t;const c=W(t.currency),i=W(a),u=(c==null?void 0:c.decimals)??2,s=(i==null?void 0:i.decimals)??2,{rate:l}=await r.getRate(t.currency,a),h=t.amount/Math.pow(10,u)*l;return{currency:a,amount:Math.round(h*Math.pow(10,s))}}class tt{constructor(e={}){Y(this,"id");Y(this,"name");Y(this,"supportedCurrencies");Y(this,"minimums");Y(this,"counter",0);this.id=e.id??"mock",this.name=e.name??"Mock Processor",this.supportedCurrencies=e.supportedCurrencies??"*"}newId(e){return this.counter+=1,`${e}_${Date.now().toString(36)}_${this.counter}`}async authorize(e){return{id:this.newId("auth"),status:"authorized",processor:this.id,amount:e.amount,raw:{mock:!0,request:e}}}async capture(e,r){return{id:e.replace("auth_","cap_"),status:"captured",processor:this.id,amount:r}}async cancel(e){return{id:e,status:"cancelled",processor:this.id}}async refund(e,r){return{id:e.replace(/^[a-z]+_/,"ref_"),status:"refunded",processor:this.id,amount:r}}}function X(t,e,r,a,c){const i=u=>{const s=a==null?void 0:a[u];return s||(async()=>{throw new Error(`[ui-money] ${e} adapter is not wired. Pass an \`executor.${String(u)}\` implementation that calls the ${e} SDK.`)})};return{id:t,name:e,supportedCurrencies:r,minimums:c,authorize:i("authorize"),capture:i("capture"),cancel:i("cancel"),refund:i("refund")}}function rt(t){return X("stripe","Stripe","*",t,{USD:50,EUR:50,GBP:30,JPY:50,AUD:50,CAD:50,CHF:50,DKK:250,NOK:300,SEK:300,PLN:200})}function nt(t){return X("paypal","PayPal",["USD","EUR","GBP","AUD","CAD","JPY","CHF","NZD","SEK","NOK","DKK","PLN","CZK","HUF","BRL","MXN","HKD","SGD","TWD","THB","PHP","ILS"],t)}function at(t){return X("adyen","Adyen","*",t)}function ct(t){return X("square","Square",["USD","CAD","GBP","AUD","JPY","EUR"],t)}function st(t){return X("mollie","Mollie","*",t)}function it(t){return X("braintree","Braintree","*",t)}function ot(t){return X("razorpay","Razorpay",["INR","USD","EUR","GBP","AED"],t)}function lt(t){return X("payu","PayU",["PLN","EUR","USD","CZK","HUF","RON","BGN","TRY"],t)}function dt(t){return X("przelewy24","Przelewy24",["PLN","EUR"],t)}function ut(t={}){return X("tpay","Tpay",["PLN","EUR","USD","GBP"],t)}function mt(t={}){return X("autopay","Autopay",["PLN","EUR","USD","GBP","CZK"],t)}function pt(t={}){const{acquirer:e="native",...r}=t;return X(`blik:${e}`,`BLIK (${e})`,["PLN"],r)}function yt(t){return X("klarna","Klarna",["USD","EUR","GBP","SEK","NOK","DKK","CHF","AUD","CAD","NZD","PLN"],t)}function ht(t){return X("coinbase-commerce","Coinbase Commerce",["BTC","ETH","USDC","USDT","USD","EUR"],t)}const ft={mock:()=>new tt,stripe:()=>rt(),paypal:()=>nt(),adyen:()=>at(),square:()=>ct(),mollie:()=>st(),braintree:()=>it(),razorpay:()=>ot(),payu:()=>lt(),przelewy24:()=>dt(),tpay:()=>ut(),autopay:()=>mt(),blik:()=>pt(),klarna:()=>yt(),"coinbase-commerce":()=>ht()};function Kt(t){const e=ft[t];return e?e().supportedCurrencies:"*"}function Bt(t){return`/api/payments/${t}/webhook`}const Lt=[{id:"stripe",name:"Stripe",type:"card",credentials:[{key:"apiKey",label:"Secret API key",secret:!0,required:!0,help:"sk_live_… / sk_test_…"},{key:"publishableKey",label:"Publishable key",required:!0,help:"pk_live_… / pk_test_…"},{key:"webhookSecret",label:"Webhook signing secret",secret:!0,help:"whsec_…"}],supportedMethods:["card","applepay","googlepay","link"],allowedDomains:["api.stripe.com"],hasTestMode:!0},{id:"paypal",name:"PayPal",type:"wallet",credentials:[{key:"clientId",label:"Client ID",required:!0},{key:"clientSecret",label:"Client secret",secret:!0,required:!0},{key:"webhookId",label:"Webhook ID"}],supportedMethods:["paypal","card","paylater"],allowedDomains:["api-m.paypal.com","api-m.sandbox.paypal.com"],hasTestMode:!0},{id:"adyen",name:"Adyen",type:"aggregator",credentials:[{key:"apiKey",label:"API key",secret:!0,required:!0},{key:"merchantAccount",label:"Merchant account",required:!0},{key:"hmacKey",label:"HMAC key (webhooks)",secret:!0},{key:"clientKey",label:"Client key"}],supportedMethods:["card","ideal","bancontact","applepay","googlepay"],allowedDomains:["checkout-test.adyen.com","checkout-live.adyen.com"],hasTestMode:!0},{id:"square",name:"Square",type:"card",credentials:[{key:"accessToken",label:"Access token",secret:!0,required:!0},{key:"applicationId",label:"Application ID",required:!0},{key:"locationId",label:"Location ID",required:!0}],supportedMethods:["card","applepay","googlepay"],allowedDomains:["connect.squareup.com","connect.squareupsandbox.com"],hasTestMode:!0},{id:"mollie",name:"Mollie",type:"aggregator",credentials:[{key:"apiKey",label:"API key",secret:!0,required:!0,help:"live_… / test_…"}],supportedMethods:["card","ideal","bancontact","blik","applepay"],allowedDomains:["api.mollie.com"],hasTestMode:!0},{id:"braintree",name:"Braintree",type:"card",credentials:[{key:"merchantId",label:"Merchant ID",required:!0},{key:"publicKey",label:"Public key",required:!0},{key:"privateKey",label:"Private key",secret:!0,required:!0}],supportedMethods:["card","paypal","applepay","googlepay"],allowedDomains:["api.braintreegateway.com","api.sandbox.braintreegateway.com"],hasTestMode:!0},{id:"razorpay",name:"Razorpay",type:"aggregator",credentials:[{key:"keyId",label:"Key ID",required:!0},{key:"keySecret",label:"Key secret",secret:!0,required:!0},{key:"webhookSecret",label:"Webhook secret",secret:!0}],supportedMethods:["card","upi","netbanking","wallet"],allowedDomains:["api.razorpay.com"],hasTestMode:!0},{id:"payu",name:"PayU",type:"aggregator",credentials:[{key:"posId",label:"POS ID",required:!0},{key:"clientId",label:"OAuth client ID",required:!0},{key:"clientSecret",label:"OAuth client secret",secret:!0,required:!0},{key:"secondKey",label:"Second key (MD5)",secret:!0}],supportedMethods:["card","blik","transfer","googlepay"],allowedDomains:["secure.payu.com","secure.snd.payu.com"],hasTestMode:!0},{id:"przelewy24",name:"Przelewy24",type:"bank",credentials:[{key:"merchantId",label:"Merchant ID",required:!0},{key:"posId",label:"POS ID",required:!0},{key:"crcKey",label:"CRC key",secret:!0,required:!0},{key:"apiKey",label:"API key",secret:!0,required:!0}],supportedMethods:["transfer","blik","card"],allowedDomains:["secure.przelewy24.pl","sandbox.przelewy24.pl"],hasTestMode:!0},{id:"tpay",name:"Tpay",type:"aggregator",credentials:[{key:"merchantId",label:"Merchant ID",required:!0},{key:"apiKey",label:"API key",secret:!0,required:!0},{key:"apiPassword",label:"API password",secret:!0,required:!0}],supportedMethods:["card","blik","transfer","applepay"],allowedDomains:["api.tpay.com","secure.tpay.com"],hasTestMode:!0},{id:"autopay",name:"Autopay",type:"aggregator",credentials:[{key:"serviceId",label:"Service ID",required:!0},{key:"sharedSecret",label:"Shared secret",secret:!0,required:!0}],supportedMethods:["card","blik","transfer"],allowedDomains:["pay.autopay.eu","testpay.autopay.eu"],hasTestMode:!0},{id:"blik",name:"BLIK",type:"bank",credentials:[{key:"acquirer",label:"Acquirer (p24 / tpay / payu / native)",required:!0,help:"Underlying acquirer routing BLIK."}],supportedMethods:["blik"],hasTestMode:!0},{id:"klarna",name:"Klarna",type:"bnpl",credentials:[{key:"username",label:"API username (UID)",required:!0},{key:"password",label:"API password",secret:!0,required:!0},{key:"region",label:"Region (eu / na / oc)",help:"Selects the Klarna API host."}],supportedMethods:["paylater","installments","paynow"],allowedDomains:["api.klarna.com","api.playground.klarna.com"],hasTestMode:!0},{id:"coinbase-commerce",name:"Coinbase Commerce",type:"crypto",credentials:[{key:"apiKey",label:"API key",secret:!0,required:!0},{key:"webhookSharedSecret",label:"Webhook shared secret",secret:!0}],supportedMethods:["crypto"],allowedDomains:["api.commerce.coinbase.com"],hasTestMode:!1},{id:"wallet",name:"In-app Wallet",type:"wallet",currencyKey:"mock",credentials:[{key:"ledgerAccount",label:"Ledger account",required:!0,help:"Account the wallet debits/credits."}],supportedMethods:["wallet"],hasTestMode:!0}],fe=Object.fromEntries(Lt.map(t=>{const{currencyKey:e,...r}=t,a={...r,supportedCurrencies:Kt(e??t.id),webhookPath:Bt(t.id)};return[t.id,a]})),bt=Object.values(fe);function zt(t){return fe[t]}function Ht(t,e){const r=o.useMemo(()=>"amount"in t?t:ee(t.major,t.currency),[]),[a,c]=o.useState(r),i=o.useCallback(b=>c(m=>ee(b,m.currency)),[]),u=o.useCallback(b=>{c(m=>({...m,currency:b.toUpperCase()}))},[]),s=o.useCallback(b=>c(m=>le(m,b)),[]),l=o.useCallback(b=>c(m=>He(m,b)),[]),d=o.useCallback(b=>c(m=>Ne(m,b)),[]),h=o.useMemo(()=>ne(a,{locale:e}),[a,e]),v=o.useMemo(()=>De(a),[a]);return{money:a,setMoney:c,setMajor:i,setCurrency:u,add:s,subtract:l,scale:d,formatted:h,major:v}}function Ce(t,e,r){const[a,c]=o.useState(null),[i,u]=o.useState(null),[s,l]=o.useState(!1),d=o.useRef(0),h=t==null?void 0:t.amount,v=t==null?void 0:t.currency;return o.useEffect(()=>{if(h===void 0||v===void 0){c(null);return}const b=++d.current;l(!0),u(null),et({amount:h,currency:v},e,r).then(m=>{d.current===b&&c(m)}).catch(m=>{d.current===b&&(u(m instanceof Error?m:new Error(String(m))),c(null))}).finally(()=>{d.current===b&&l(!1)})},[h,v,e,r]),{converted:a,loading:s,error:i}}function _t(t){const[e,r]=o.useState("idle"),[a,c]=o.useState(null),[i,u]=o.useState(null),s=o.useCallback(()=>{r("idle"),c(null),u(null)},[]),l=o.useCallback(async b=>{r("authorizing"),u(null);try{const m=await t.authorize(b);return c(m),r(m.status),m}catch(m){const _=m instanceof Error?m:new Error(String(m));throw u(_),r("failed"),_}},[t]),d=o.useCallback(async(b,m)=>{const _=b??(a==null?void 0:a.id);if(!_)throw new Error("No authorization id to capture");r("capturing");try{const f=await t.capture(_,m);return c(f),r(f.status),f}catch(f){const C=f instanceof Error?f:new Error(String(f));throw u(C),r("failed"),C}},[t,a==null?void 0:a.id]),h=o.useCallback(async b=>{const m=b??(a==null?void 0:a.id);if(!m)throw new Error("No payment id to cancel");const _=await t.cancel(m);return c(_),r(_.status),_},[t,a==null?void 0:a.id]),v=o.useCallback(async(b,m)=>{const _=b??(a==null?void 0:a.id);if(!_)throw new Error("No payment id to refund");const f=await t.refund(_,m);return c(f),r(f.status),f},[t,a==null?void 0:a.id]);return{status:e,response:a,error:i,authorize:l,capture:d,cancel:h,refund:v,reset:s}}const Se=o.forwardRef(function({value:e,amount:r,currency:a,locale:c,display:i="symbol",highlightNegative:u=!0,zeroPlaceholder:s,convertTo:l,exchangeProvider:d,className:h,style:v,"aria-label":b},m){const{t:_}=L.useNiceTranslation(),f=o.useMemo(()=>{if(e)return e;if(r!=null&&a){const x=W(a),S=(x==null?void 0:x.decimals)??2;return{amount:Math.round(r*Math.pow(10,S)),currency:a.toUpperCase()}}return null},[e,r,a]),C=o.useMemo(()=>f?f.amount===0&&s!=null?s:ne(f,{locale:c,currencyDisplay:i}):"",[f,c,i,s]),{converted:R}=Ce(l&&d?f:null,l??"",d);if(!f)return null;const p=f.amount<0,g="nice-money"+(u&&p?" nice-money--negative":"")+(h?` ${h}`:"");return n.jsxs("span",{ref:m,className:g,style:v,"aria-label":b,children:[n.jsx("span",{className:"nice-money__value",children:C}),R&&n.jsxs("span",{className:"nice-money__converted","aria-label":_("money.convertedTo","Converted to {currency}").replace("{currency}",String(R.currency)),children:[" ≈ ",ne(R,{locale:c})]})]})}),Yt=me.map(t=>t.code).sort(),Ee=o.forwardRef(function({value:e,onChange:r,options:a=me,recents:c=[],searchable:i,showCode:u=!0,showSymbol:s=!0,compact:l=!1,disabled:d,readOnly:h,loading:v,accessMode:b,label:m,helperText:_,error:f,required:C,size:R="md",labelPlacement:p="top",labelWidth:g,controlWidth:x,className:S,style:E,id:M,name:P,title:O,"data-testid":D,"aria-label":Q,placeholder:$},j){const{t:U}=L.useNiceTranslation(),q=b==="hidden",J=d||b==="disabled"||v,te=h||b==="readOnly",H=o.useId(),Z=M??`nice-cs-${H}`,[V,re]=o.useState(""),T=i??a.length>8,k=o.useMemo(()=>{if(!V.trim())return a;const I=V.trim().toLowerCase();return a.filter(A=>A.code.toLowerCase().includes(I)||A.name.toLowerCase().includes(I)||A.symbol.toLowerCase().includes(I))},[a,V]),y=o.useMemo(()=>{const I=new Set;return c.map(A=>W(A)).filter(A=>!!A&&!I.has(A.code)&&!!I.add(A.code))},[c]),F=o.useCallback(I=>{const A=I.target.value,se=W(A);se&&(r==null||r(A,se))},[r]),K=I=>{if(l)return`${s?I.symbol+" ":""}${I.code}`;const A=[];return s&&A.push(I.symbol),u&&A.push(I.code),A.push("—",I.name),A.join(" ")},w=`nice-currency-selector nice-currency-selector--${R} nice-currency-selector--label-${p}`+(l?" nice-currency-selector--compact":"")+(f?" nice-currency-selector--error":"")+(J?" nice-currency-selector--disabled":"")+(S?` ${S}`:""),B=p==="left"&&g!=null?{width:typeof g=="number"?`${g}px`:g,flex:"none"}:void 0,ce=x!=null?{width:typeof x=="number"?`${x}px`:x,flex:"none"}:void 0;return q?null:n.jsxs("div",{ref:j,className:w,style:E,title:O,"data-testid":D,children:[m&&n.jsxs("label",{htmlFor:Z,className:"nice-currency-selector__label",style:B,children:[m,C&&n.jsx("span",{className:"nice-currency-selector__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-currency-selector__inner",style:ce,children:[T&&n.jsx("input",{type:"search",className:"nice-currency-selector__search",placeholder:U("currencySelector.searchCurrency","Search currency…"),value:V,onChange:I=>re(I.target.value),disabled:J||te,"aria-label":U("currencySelector.searchCurrency2","Search currency")}),n.jsxs("select",{id:Z,name:P,className:"nice-currency-selector__select",value:e??"",onChange:F,disabled:J||te,required:C,"aria-invalid":!!f,"aria-label":Q??(typeof m=="string"?m:U("currencySelector.currency","Currency")),children:[!e&&n.jsx("option",{value:"",children:$??U("currencySelector.selectCurrency","Select currency…")}),y.length>0&&n.jsx("optgroup",{label:U("currencySelector.recent","Recent"),children:y.map(I=>n.jsx("option",{value:I.code,children:K(I)},`r-${I.code}`))}),n.jsx("optgroup",{label:y.length>0?U("currencySelector.all","All"):"",children:k.map(I=>n.jsx("option",{value:I.code,children:K(I)},I.code))})]})]}),(f||_)&&n.jsx("span",{className:f?"nice-currency-selector__error":"nice-currency-selector__helper",children:f??_})]})}),Ue=o.forwardRef(function({value:e,onChange:r,currency:a,onCurrencyChange:c,currencies:i,hideCurrencySelector:u,min:s,max:l,step:d,locale:h,placeholder:v,label:b,helperText:m,error:_,size:f="md",disabled:C,readOnly:R,required:p,loading:g,accessMode:x,labelPlacement:S="top",errorPlacement:E="bottom",labelWidth:M,controlWidth:P,submitOnEnter:O,onSubmit:D,showFormattedPreview:Q=!0,showSteppers:$=!1,className:j,style:U,id:q,name:J,title:te,"data-testid":H,onBlur:Z,onFocus:V,liveGrouping:re,multiplierShortcuts:T=!0,onValidationError:k},y){const{t:F}=L.useNiceTranslation(),K=C||x==="disabled"||g,w=R||x==="readOnly",B=x==="hidden",ce=o.useId(),I=q??`nice-money-${ce}`,A=((e==null?void 0:e.currency)??a??"USD").toUpperCase(),se=W(A),G=(se==null?void 0:se.decimals)??2,we=d??1/Math.pow(10,G),[_e,pe]=o.useState(()=>e?(e.amount/Math.pow(10,G)).toFixed(G):""),[ge,Te]=o.useState(!1);o.useEffect(()=>{if(ge)return;if(e==null){pe("");return}const N=W(e.currency),z=(N==null?void 0:N.decimals)??2;pe((e.amount/Math.pow(10,z)).toFixed(z))},[e,ge]);const Fe=o.useCallback(N=>{let z=N;if(T){const ie=N.trim().match(/^([+-]?\d+(?:[.,]\d+)?)\s*([kKmMbB])$/);if(ie){const oe=ie[2].toLowerCase()==="k"?1e3:ie[2].toLowerCase()==="m"?1e6:1e9,Ke=Number(ie[1].replace(",","."))*oe;if(!Number.isFinite(Ke)){k==null||k(new Error("overflow"));return}z=String(Ke)}}const ae=Ye(z,A);if(!ae){r==null||r(null);return}if(!Number.isSafeInteger(ae.amount)){k==null||k(new Error("overflow: amount exceeds Number.MAX_SAFE_INTEGER"));return}const de=ae.amount/Math.pow(10,G);if(s!=null&&de<s){k==null||k(new Error(`min: ${s}`)),r==null||r(ee(s,A));return}if(l!=null&&de>l){k==null||k(new Error(`max: ${l}`)),r==null||r(ee(l,A));return}r==null||r(ae)},[A,G,s,l,r,T,k]),xt=o.useCallback(N=>{const z=N.target.value;pe(z),Fe(z)},[Fe]),xe=o.useCallback(N=>{const z=Math.min(l??1/0,Math.max(s??-1/0,N));pe(z.toFixed(G)),r==null||r(ee(z,A))},[G,s,l,A,r]),je=o.useCallback(N=>xe((e?e.amount/Math.pow(10,G):0)+N),[e,G,xe]),Oe=o.useRef(null),he=o.useRef(null),vt=$&&!K&&!w;L.useEngage(Oe,{kind:$?"value":"text",disabled:K||w,restoreOnCancel:$,onEngage:()=>{he.current={value:e??null,draft:_e}},onRelease:N=>{N&&$&&he.current&&(pe(he.current.draft),r==null||r(he.current.value)),he.current=null}});const ve=o.useMemo(()=>{var N,z;try{const ae=new Intl.NumberFormat(h).formatToParts(12345.6),de=((N=ae.find(oe=>oe.type==="group"))==null?void 0:N.value)??",",ie=((z=ae.find(oe=>oe.type==="decimal"))==null?void 0:z.value)??".";return{group:de,decimal:ie}}catch{return{group:",",decimal:"."}}},[h]),qe=re??!!ve.group,Nt=o.useMemo(()=>{if(!qe||ge===!1)return _e;const N=ve.decimal,z=ve.group,ae=_e.replace(new RegExp(`[${z.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}]`,"g"),""),[de,ie]=ae.split(N);if(!de)return ae;const oe=de.replace(/\B(?=(\d{3})+(?!\d))/g,z);return ie!=null?`${oe}${N}${ie}`:oe},[_e,ge,qe,ve]),Me=o.useMemo(()=>e?ne(e,{locale:h}):"",[e,h]),ye=typeof _=="string"?_:void 0,Ct=`nice-money-input nice-money-input--${f} nice-money-input--label-${S} nice-money-input--error-${E}`+(ye?" nice-money-input--error":"")+(K?" nice-money-input--disabled":"")+(g?" nice-money-input--loading":"")+(j?` ${j}`:""),kt=N=>{if(O&&N.key==="Enter"&&D){N.preventDefault(),D();return}if(!vt)return;const z=N.key==="ArrowUp"?1:N.key==="ArrowDown"?-1:N.key==="PageUp"?10:N.key==="PageDown"?-10:0;z?(N.preventDefault(),je(z*we)):N.key==="Home"&&s!=null?(N.preventDefault(),xe(s)):N.key==="End"&&l!=null&&(N.preventDefault(),xe(l))},wt=S==="left"&&M!=null?{width:typeof M=="number"?`${M}px`:M,flex:"none"}:void 0,jt=P!=null?{width:typeof P=="number"?`${P}px`:P,flex:"none"}:void 0;return B?null:n.jsxs("div",{ref:y,className:Ct,style:U,title:te,"data-testid":H,children:[b&&n.jsxs("label",{htmlFor:I,className:"nice-money-input__label",style:wt,children:[b,p&&n.jsx("span",{className:"nice-money-input__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-money-input__row",style:jt,children:[!u&&n.jsx(Ee,{value:A,compact:!0,options:i?i.map(W).filter(N=>!!N):void 0,onChange:N=>c==null?void 0:c(N),disabled:K||w,className:"nice-money-input__currency","aria-label":F("moneyInput.currency","Currency")}),u&&n.jsx("span",{className:"nice-money-input__symbol","aria-hidden":!0,children:(se==null?void 0:se.symbol)??A}),$&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--down",onClick:()=>je(-we),disabled:K||w||s!=null&&e!=null&&e.amount/Math.pow(10,G)<=s,"aria-label":F("moneyInput.decreaseAmount","Decrease amount"),tabIndex:-1,children:n.jsx(L.NiceIcon,{name:"minus",size:14})}),n.jsx("input",{ref:Oe,id:I,name:J,type:"text",inputMode:"decimal",autoComplete:"transaction-amount",className:"nice-money-input__amount",value:Nt,onChange:xt,onKeyDown:kt,onFocus:N=>{Te(!0),V==null||V(N)},onBlur:N=>{Te(!1),e&&pe((e.amount/Math.pow(10,G)).toFixed(G)),Z==null||Z(N)},placeholder:v??`0${G>0?"."+"0".repeat(G):""}`,disabled:K,readOnly:w,required:p,"aria-invalid":!!ye,"aria-describedby":ye||m?`${I}-help`:void 0,...$&&{role:"spinbutton","aria-valuenow":e?e.amount/Math.pow(10,G):void 0,"aria-valuemin":s,"aria-valuemax":l,"aria-valuetext":Me||void 0}}),$&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--up",onClick:()=>je(we),disabled:K||w||l!=null&&e!=null&&e.amount/Math.pow(10,G)>=l,"aria-label":F("moneyInput.increaseAmount","Increase amount"),tabIndex:-1,children:n.jsx(L.NiceIcon,{name:"plus",size:14})}),g&&n.jsx("span",{className:"nice-money-input__spinner","aria-hidden":!0,children:n.jsx(L.NiceIcon,{name:"refresh",size:14})})]}),Q&&Me&&n.jsx("span",{className:"nice-money-input__preview","aria-live":"polite",children:Me}),(ye||m)&&n.jsx("span",{id:`${I}-help`,className:ye?"nice-money-input__error":"nice-money-input__helper",children:ye??m})]})}),Gt={number:"",expiry:"",cvc:""},gt=o.forwardRef(function({value:e=Gt,onChange:r,showHolderName:a=!0,requireHolderName:c,showPostalCode:i=!1,acceptedBrands:u,showBrandIcon:s=!0,size:l="md",disabled:d,readOnly:h,loading:v,accessMode:b,label:m,helperText:_,error:f,required:C,className:R,style:p,id:g,title:x,"data-testid":S},E){const{t:M}=L.useNiceTranslation(),P=b==="hidden",O=d||b==="disabled"||v,D=h||b==="readOnly",Q=o.useId(),$=g??`nice-cc-${Q}`,[j,U]=o.useState({number:!1,expiry:!1,cvc:!1,holder:!1,postal:!1}),q=o.useMemo(()=>be(e.number),[e.number]),J=o.useMemo(()=>Pe(e,{requireHolder:c??a}),[e,c,a]),te=!u||u.includes(q)||q==="unknown",H=o.useCallback(w=>{const B={...e,...w},ce=Pe(B,{requireHolder:c??a});r==null||r(B,ce)},[e,c,a,r]),Z=o.useCallback(w=>{const B=w.target.value.replace(/\D/g,"").slice(0,19);H({number:B})},[H]),V=o.useCallback(w=>{const B=w.target.value.replace(/\D/g,"").slice(0,4);let ce=B;B.length>=3?ce=`${B.slice(0,2)}/${B.slice(2)}`:B.length===2&&(ce=`${B}/`),H({expiry:ce})},[H]),re=o.useCallback(w=>{const B=w.target.value.replace(/\D/g,"").slice(0,ue(q));H({cvc:B})},[q,H]),T=o.useMemo(()=>Ge(e.number,q),[e.number,q]),k=j.number&&e.number.length>0&&(Re(e.number)?te?void 0:"Card brand not accepted":J.errors.number),y=j.expiry&&e.expiry.length>0&&!$e(e.expiry)?J.errors.expiry:void 0,F=j.cvc&&e.cvc.length>0&&e.cvc.length!==ue(q)?J.errors.cvc:void 0,K=`nice-credit-card nice-credit-card--${l}`+(O?" nice-credit-card--disabled":"")+(v?" nice-credit-card--loading":"")+(f?" nice-credit-card--error":"")+(R?` ${R}`:"");return P?null:n.jsxs("div",{ref:E,className:K,style:p,title:x,"data-testid":S,children:[m&&n.jsxs("div",{className:"nice-credit-card__title",children:[m,C&&n.jsx("span",{className:"nice-credit-card__required","aria-hidden":!0,children:"*"})]}),n.jsx("div",{className:"nice-credit-card__row",children:n.jsxs("label",{className:"nice-credit-card__field nice-credit-card__field--number",children:[n.jsx("span",{className:"nice-credit-card__label",children:M("creditCardInput.cardNumber","Card number")}),n.jsxs("span",{className:"nice-credit-card__input-wrapper",children:[n.jsx("input",{id:`${$}-number`,type:"text",inputMode:"numeric",autoComplete:"cc-number",placeholder:q==="amex"?"3782 822463 10005":"1234 1234 1234 1234",value:T,onChange:Z,onBlur:()=>U(w=>({...w,number:!0})),disabled:O,readOnly:D,"aria-invalid":!!k,"aria-describedby":k?`${$}-number-err`:void 0,className:"nice-credit-card__input",maxLength:q==="amex"?17:23}),s&&n.jsx(Zt,{brand:q})]}),k&&n.jsx("span",{id:`${$}-number-err`,className:"nice-credit-card__error",children:k})]})}),n.jsxs("div",{className:"nice-credit-card__row nice-credit-card__row--split",children:[n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:M("creditCardInput.expiry","Expiry")}),n.jsx("input",{id:`${$}-expiry`,type:"text",inputMode:"numeric",autoComplete:"cc-exp",placeholder:M("creditCardInput.mmYy","MM/YY"),value:e.expiry,onChange:V,onBlur:()=>{U(B=>({...B,expiry:!0}));const w=Ae(e.expiry);w&&w!==e.expiry&&H({expiry:w})},disabled:O,readOnly:D,"aria-invalid":!!y,"aria-describedby":y?`${$}-expiry-err`:void 0,className:"nice-credit-card__input",maxLength:5}),y&&n.jsx("span",{id:`${$}-expiry-err`,className:"nice-credit-card__error",children:y})]}),n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:q==="amex"?M("creditCardInput.cid","CID"):M("creditCardInput.cvc","CVC")}),n.jsx("input",{id:`${$}-cvc`,type:"text",inputMode:"numeric",autoComplete:"cc-csc",placeholder:"•".repeat(ue(q)),value:e.cvc,onChange:re,onBlur:()=>U(w=>({...w,cvc:!0})),disabled:O,readOnly:D,"aria-invalid":!!F,"aria-describedby":F?`${$}-cvc-err`:void 0,className:"nice-credit-card__input",maxLength:ue(q)}),F&&n.jsx("span",{id:`${$}-cvc-err`,className:"nice-credit-card__error",children:F})]})]}),a&&n.jsx("div",{className:"nice-credit-card__row",children:n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:M("creditCardInput.cardholderName","Cardholder name")}),n.jsx("input",{id:`${$}-holder`,type:"text",autoComplete:"cc-name",placeholder:M("creditCardInput.janeDoe","Jane Doe"),value:e.holderName??"",onChange:w=>H({holderName:w.target.value}),onBlur:()=>U(w=>({...w,holder:!0})),disabled:O,readOnly:D,className:"nice-credit-card__input",maxLength:120})]})}),i&&n.jsx("div",{className:"nice-credit-card__row",children:n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:M("creditCardInput.postalCode","Postal code")}),n.jsx("input",{id:`${$}-postal`,type:"text",autoComplete:"postal-code",value:e.postalCode??"",onChange:w=>H({postalCode:w.target.value}),onBlur:()=>U(w=>({...w,postal:!0})),disabled:O,readOnly:D,className:"nice-credit-card__input",maxLength:16})]})}),(f||_)&&n.jsx("div",{className:f?"nice-credit-card__form-error":"nice-credit-card__helper",role:f?"alert":void 0,children:f??_})]})}),Be={visa:"VISA",mastercard:"MasterCard",amex:"AMEX",discover:"Discover",diners:"Diners",jcb:"JCB",unionpay:"UnionPay",maestro:"Maestro",mir:"MIR",elo:"Elo",hipercard:"Hipercard",unknown:""};function Zt({brand:t}){return t==="unknown"?null:n.jsx("span",{className:`nice-credit-card__brand nice-credit-card__brand--${t}`,"aria-label":Be[t],children:Be[t]})}const Jt=o.forwardRef(function({processor:e,amount:r,editableAmount:a,customer:c,currencies:i,description:u,metadata:s,autoCapture:l=!0,submitLabel:d,onSuccess:h,onError:v,consents:b,className:m,style:_},f){const{t:C}=L.useNiceTranslation(),R=d??C("paymentForm.pay","Pay"),[p,g]=o.useState(r),[x,S]=o.useState(r.currency),[E,M]=o.useState({number:"",expiry:"",cvc:""}),[P,O]=o.useState(null),[D,Q]=o.useState(!1),[$,j]=o.useState(null),U=_t(e),q=o.useMemo(()=>e.supportedCurrencies==="*"?!0:e.supportedCurrencies.includes(p.currency.toUpperCase()),[e,p.currency]),J=o.useMemo(()=>{var k;const T=(k=e.minimums)==null?void 0:k[p.currency.toUpperCase()];return T==null||p.amount>=T},[e,p]),te=o.useMemo(()=>{var k;const T=(k=e.minimums)==null?void 0:k[p.currency.toUpperCase()];return T==null?null:{amount:T,currency:p.currency}},[e,p.currency]),H=!!(P!=null&&P.isValid),Z=!D&&q&&J&&H,V=o.useCallback(async T=>{if(T.preventDefault(),!!Z){j(null),Q(!0);try{const k={amount:p,card:E,customer:c,description:u,metadata:s,idempotencyKey:Vt()},y=await U.authorize(k);if(l&&y.status==="authorized"){const F=await U.capture(y.id,p);h==null||h(F)}else h==null||h(y)}catch(k){const y=k instanceof Error?k:new Error(String(k));j(y.message),v==null||v(y)}finally{Q(!1)}}},[Z,p,E,c,u,s,l,U,h,v]),re=W(p.currency);return n.jsxs("form",{ref:f,className:"nice-payment-form"+(m?` ${m}`:""),style:_,onSubmit:V,"aria-busy":D,children:[n.jsx("div",{className:"nice-payment-form__amount",children:a?n.jsx(Ue,{label:C("paymentForm.amount","Amount"),value:p,currency:x,currencies:i,onChange:T=>T&&g(T),onCurrencyChange:T=>{S(T),g(k=>({...k,currency:T}))},disabled:D,required:!0,showFormattedPreview:!0}):n.jsxs("div",{className:"nice-payment-form__total",children:[n.jsx("span",{className:"nice-payment-form__total-label",children:C("paymentForm.total","Total")}),n.jsx(Se,{value:p})]})}),u&&n.jsx("p",{className:"nice-payment-form__description",children:u}),n.jsx("div",{className:"nice-payment-form__card",children:n.jsx(gt,{value:E,onChange:(T,k)=>{M(T),O(k)},disabled:D})}),!q&&n.jsx("div",{className:"nice-payment-form__warning",role:"alert",children:C("paymentForm.doesNotAccept","{provider} does not accept {currency}.").replace("{provider}",String(e.name)).replace("{currency}",String((re==null?void 0:re.name)??p.currency))}),!J&&te&&n.jsxs("div",{className:"nice-payment-form__warning",role:"alert",children:[C("paymentForm.minimumChargeForIs","Minimum charge for {name} is").replace("{name}",String(e.name))," ",n.jsx(Se,{value:te}),"."]}),b&&n.jsx("div",{className:"nice-payment-form__consents",children:b}),$&&n.jsx("div",{className:"nice-payment-form__error",role:"alert",children:$}),n.jsx("button",{type:"submit",className:"nice-payment-form__submit",disabled:!Z,"aria-disabled":!Z,children:D?C("paymentForm.processing","Processing…"):R}),n.jsxs("p",{className:"nice-payment-form__processor",children:[C("paymentForm.securedBy","Secured by")," ",n.jsx("strong",{children:e.name})]})]})});function Vt(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`idem_${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`}const Xt=o.forwardRef(function({price:e,originalPrice:r,period:a,prefix:c,suffix:i,showDiscountBadge:u=!0,size:s="md",locale:l,className:d,style:h},v){const{t:b}=L.useNiceTranslation(),m=r&&r.currency===e.currency&&r.amount>e.amount,_=o.useMemo(()=>!m||!r?null:Math.round((r.amount-e.amount)/r.amount*100),[m,r,e.amount]),f=`nice-price-tag nice-price-tag--${s}`+(d?` ${d}`:"");return n.jsxs("div",{ref:v,className:f,style:h,children:[c&&n.jsx("span",{className:"nice-price-tag__prefix",children:c}),n.jsxs("span",{className:"nice-price-tag__main",children:[n.jsx("span",{className:"nice-price-tag__amount",children:ne(e,{locale:l})}),a&&n.jsx("span",{className:"nice-price-tag__period",children:a})]}),m&&r&&n.jsx("span",{className:"nice-price-tag__original","aria-label":b("priceTag.originalPrice","Original price"),children:n.jsx("s",{children:ne(r,{locale:l})})}),m&&u&&_!=null&&_>0&&n.jsxs("span",{className:"nice-price-tag__discount","aria-label":b("priceTag.percentOff","{pct} percent off").replace("{pct}",String(_)),children:["−",_,"%"]}),i&&n.jsx("span",{className:"nice-price-tag__suffix",children:i})]})}),Qt={amount:0,currency:"USD"},Wt=o.forwardRef(function({source:e,defaultSource:r,onSourceChange:a,targetCurrency:c,defaultTargetCurrency:i,onTargetCurrencyChange:u,provider:s,locale:l,showRateLine:d=!0,className:h,style:v},b){const{t:m}=L.useNiceTranslation(),[_,f]=L.useControllableState({value:e,defaultValue:r,fallbackValue:Qt,onChange:a,componentName:"NiceCurrencyConverter"}),[C,R]=L.useControllableState({value:c,defaultValue:i,fallbackValue:_.currency,onChange:u,componentName:"NiceCurrencyConverter"}),{converted:p,loading:g,error:x}=Ce(_,C,s),S=o.useMemo(()=>({amount:Math.pow(10,2),currency:_.currency}),[_.currency]),{converted:E}=Ce(d?S:null,C,s);return n.jsxs("div",{ref:b,className:"nice-currency-converter"+(h?` ${h}`:""),style:v,children:[n.jsx("div",{className:"nice-currency-converter__row",children:n.jsx(Ue,{label:m("currencyConverter.from","From"),value:_,onChange:M=>M&&f(M),currency:_.currency,onCurrencyChange:M=>f({..._,currency:M}),showFormattedPreview:!1})}),n.jsxs("div",{className:"nice-currency-converter__row",children:[n.jsx("label",{className:"nice-currency-converter__label",children:m("currencyConverter.to","To")}),n.jsxs("div",{className:"nice-currency-converter__output",children:[n.jsx(Ee,{value:C,onChange:M=>R(M),compact:!0}),n.jsx("span",{className:"nice-currency-converter__amount",children:g?"…":x?"—":p?ne(p,{locale:l}):""})]})]}),d&&E&&n.jsxs("p",{className:"nice-currency-converter__rate",children:["1 ",_.currency," = ",ne(E,{locale:l})," ",n.jsxs("span",{className:"nice-currency-converter__inverse",children:["· 1 ",C," ="," ",ne(ee(1/De(E),_.currency),{locale:l})]})]}),x&&n.jsx("p",{className:"nice-currency-converter__error",role:"alert",children:x.message})]})}),er=[];function Le(t){return{amount:Math.round(t.amount),currency:t.currency}}const tr=o.forwardRef(function({lines:e=er,locale:r,rounding:a="line",showTotals:c=!0,showGrandTotal:i=!0,hideRateColumn:u=!1,labels:s,density:l="comfortable",className:d,style:h,id:v},b){const{t:m}=L.useNiceTranslation(),_={label:(s==null?void 0:s.label)??m("taxBreakdown.item","Item"),rate:(s==null?void 0:s.rate)??"VAT",net:(s==null?void 0:s.net)??"Net",vat:(s==null?void 0:s.vat)??"Tax",gross:(s==null?void 0:s.gross)??"Gross",total:(s==null?void 0:s.total)??"Total"},f=o.useMemo(()=>{if(a==="total"){const p=new Map;for(const x of e){let S=p.get(x.vatRate);S||(S=[],p.set(x.vatRate,S)),S.push(x.netAmount)}const g=[];for(const[x,S]of p){const E=S.reduce((O,D)=>le(O,D),ee(0,S[0].currency)),M=Le(Ne(E,x)),P=le(E,M);g.push({rate:x,net:E,vat:M,gross:P})}return g}return e.map(p=>{const g=Le(Ne(p.netAmount,p.vatRate)),x=le(p.netAmount,g);return{label:p.label,rate:p.vatRate,net:p.netAmount,vat:g,gross:x}})},[e,a]),C=o.useMemo(()=>{if(f.length===0)return null;const p=f[0].net.currency;let g=ee(0,p),x=ee(0,p),S=ee(0,p);for(const E of f)g=le(g,E.net),x=le(x,E.vat),S=le(S,E.gross);return{net:g,vat:x,gross:S}},[f]),R=p=>ne(p,{locale:r});return n.jsxs("table",{ref:b,id:v,className:`nice-tax-breakdown nice-tax-breakdown--${l} ${d??""}`,style:h,role:"table","aria-label":_.total,children:[n.jsx("thead",{children:n.jsxs("tr",{children:[f.some(p=>p.label!==void 0)&&n.jsx("th",{scope:"col",children:_.label}),!u&&n.jsx("th",{scope:"col",className:"nice-tax-breakdown__rate",children:_.rate}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:_.net}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:_.vat}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:_.gross})]})}),n.jsx("tbody",{children:f.map((p,g)=>n.jsxs("tr",{children:[f.some(x=>x.label!==void 0)&&n.jsx("td",{children:p.label??""}),!u&&n.jsxs("td",{className:"nice-tax-breakdown__rate",children:[(p.rate*100).toLocaleString(r,{maximumFractionDigits:2}),"%"]}),n.jsx("td",{className:"nice-tax-breakdown__num",children:R(p.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:R(p.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:R(p.gross)})]},`${p.rate}-${g}`))}),c&&C&&n.jsx("tfoot",{children:i&&n.jsxs("tr",{className:"nice-tax-breakdown__totals",children:[f.some(p=>p.label!==void 0)&&n.jsx("td",{children:_.total}),!u&&n.jsx("td",{children:f.some(p=>p.label!==void 0)?null:_.total}),n.jsx("td",{className:"nice-tax-breakdown__num",children:R(C.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:R(C.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:R(C.gross)})]})})]})}),rr=[],nr=o.forwardRef(function(e,r){const{t:a}=L.useNiceTranslation(),{methods:c=rr,value:i,onChange:u,layout:s="list",columns:l=2,currency:d,label:h,name:v,readOnly:b=!1,className:m,style:_,id:f,accessMode:C,"data-testid":R}=e,p=o.useId(),g=v??`nice-pm-${p}`,x=o.useMemo(()=>{if(!d)return c;const P=d.toUpperCase();return c.filter(O=>!O.currencies||O.currencies.map(D=>D.toUpperCase()).includes(P))},[c,d]);if(C==="hidden")return null;const S=b||C==="disabled"||C==="readOnly",E=`nice-payment-method-selector nice-payment-method-selector--${s}`+(m?` ${m}`:""),M=s==="grid"?{gridTemplateColumns:`repeat(${l}, minmax(0, 1fr))`}:void 0;return n.jsxs("div",{ref:r,id:f,className:E,style:_,"data-testid":R,children:[h&&n.jsx("div",{className:"nice-payment-method-selector__label",children:h}),n.jsxs("div",{className:"nice-payment-method-selector__options",style:M,role:"radiogroup","aria-label":h??a("paymentMethodSelector.paymentMethod","Payment method"),children:[x.map(P=>{const O=P.id===i,D=S||P.disabled;return n.jsxs("label",{className:"nice-payment-method-selector__option"+(O?" nice-payment-method-selector__option--selected":"")+(D?" nice-payment-method-selector__option--disabled":""),children:[n.jsx("input",{type:"radio",className:"nice-payment-method-selector__radio",name:g,value:P.id,checked:O,disabled:D,onChange:()=>u==null?void 0:u(P.id)}),P.icon&&n.jsx("span",{className:"nice-payment-method-selector__icon",children:P.icon}),n.jsxs("span",{className:"nice-payment-method-selector__text",children:[n.jsx("span",{className:"nice-payment-method-selector__name",children:P.label}),P.description&&n.jsx("span",{className:"nice-payment-method-selector__desc",children:P.description})]})]},P.id)}),x.length===0&&n.jsx("div",{className:"nice-payment-method-selector__empty",children:a("paymentMethodSelector.noMethodsAvailable","No methods available.")})]})]})}),ar=[{target:".nice-payment-provider-config",titleKey:"tutorial.paymentProviderConfig.intro.title",title:"Payment provider",contentKey:"tutorial.paymentProviderConfig.intro.content",content:"Pick a provider, fill its credentials (secrets are masked), choose test/live, enable methods and copy the webhook URL.",placement:"auto"}],cr={providerId:"",mode:"test",credentials:{},enabledMethods:[]},sr=o.forwardRef(function(e,r){const{t:a}=L.useNiceTranslation(),{value:c,defaultValue:i,onChange:u,providers:s,onTestConnection:l,showWebhookUrl:d=!0,baseUrl:h,readOnly:v=!1,testLabel:b=a("paymentProviderConfig.testConnection","Test connection"),tutorial:m,className:_,style:f,id:C,accessMode:R,"data-testid":p}=e,[g,x]=L.useControllableState({value:c,defaultValue:i,fallbackValue:cr,onChange:u,componentName:"NicePaymentProviderConfig"}),S=o.useId(),[E,M]=o.useState(new Set),[P,O]=o.useState(!1),[D,Q]=o.useState(null),$=o.useMemo(()=>s?s.map(y=>fe[y]).filter(y=>!!y):bt,[s]),j=fe[g.providerId];if(R==="hidden")return null;const U=v||R==="disabled"||R==="readOnly",q=y=>{Q(null),M(new Set),x({providerId:y,mode:g.mode,credentials:{},enabledMethods:[]})},J=(y,F)=>{x({...g,credentials:{...g.credentials,[y]:F}})},te=y=>{const F=new Set(g.enabledMethods??[]);F.has(y)?F.delete(y):F.add(y),x({...g,enabledMethods:[...F]})},H=y=>{M(F=>{const K=new Set(F);return K.has(y)?K.delete(y):K.add(y),K})},Z=async()=>{if(l){O(!0),Q(null);try{Q(await l(g))}catch(y){Q({ok:!1,message:y instanceof Error?y.message:String(y)})}finally{O(!1)}}},V=j!=null&&j.webhookPath?`${(h??"").replace(/\/$/,"")}${j.webhookPath}`:"",re=(j==null?void 0:j.supportedCurrencies)==="*"?a("paymentProviderConfig.allCurrencies","All currencies"):((j==null?void 0:j.supportedCurrencies)??[]).join(", "),T="nice-payment-provider-config"+(_?` ${_}`:""),k=((j==null?void 0:j.credentials)??[]).filter(y=>!y.testOnly||g.mode==="test");return n.jsxs("div",{ref:r,id:C,className:T,style:f,"data-testid":p,children:[m&&n.jsx("div",{className:"nice-payment-provider-config__tutorial",children:n.jsx(L.NiceTutorialButton,{steps:L.resolveTutorial(m,ar)})}),n.jsxs("div",{className:"nice-payment-provider-config__row",children:[n.jsxs("label",{className:"nice-payment-provider-config__field",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:a("paymentProviderConfig.provider","Provider")}),n.jsxs("select",{className:"nice-payment-provider-config__select",value:g.providerId,disabled:U,onChange:y=>q(y.target.value),children:[n.jsx("option",{value:"",children:a("paymentProviderConfig.selectProvider","— select provider —")}),$.map(y=>n.jsx("option",{value:y.id,children:y.name},y.id))]})]}),(j==null?void 0:j.hasTestMode)&&n.jsxs("div",{className:"nice-payment-provider-config__mode",role:"group","aria-label":a("paymentProviderConfig.mode","Mode"),children:[n.jsx("button",{type:"button",className:"nice-payment-provider-config__mode-btn"+(g.mode==="test"?" nice-payment-provider-config__mode-btn--active":""),onClick:()=>x({...g,mode:"test"}),disabled:U,children:a("paymentProviderConfig.test","Test")}),n.jsx("button",{type:"button",className:"nice-payment-provider-config__mode-btn"+(g.mode==="live"?" nice-payment-provider-config__mode-btn--active":""),onClick:()=>x({...g,mode:"live"}),disabled:U,children:a("paymentProviderConfig.live","Live")})]})]}),j&&n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"nice-payment-provider-config__meta",children:[n.jsx("span",{className:"nice-payment-provider-config__badge",children:j.type}),n.jsx("span",{className:"nice-payment-provider-config__currencies",children:re})]}),n.jsx("div",{className:"nice-payment-provider-config__credentials",children:k.map(y=>{const F=`${S}-${y.key}`,K=y.secret,w=E.has(y.key);return n.jsxs("div",{className:"nice-payment-provider-config__field",children:[n.jsxs("label",{className:"nice-payment-provider-config__field-label",htmlFor:F,children:[y.label,y.required&&n.jsx("span",{className:"nice-payment-provider-config__required",children:" *"})]}),n.jsxs("div",{className:"nice-payment-provider-config__input-wrap",children:[n.jsx("input",{id:F,type:K&&!w?"password":"text",className:"nice-payment-provider-config__input",value:g.credentials[y.key]??"",readOnly:U,autoComplete:K?"new-password":"off",onChange:B=>J(y.key,B.target.value)}),K&&n.jsx("button",{type:"button",className:"nice-payment-provider-config__reveal",onClick:()=>H(y.key),"aria-label":w?a("paymentProviderConfig.hide","Hide"):a("paymentProviderConfig.reveal","Reveal"),"aria-pressed":w,children:n.jsx(L.NiceIcon,{name:w?"eye-off":"eye",size:14})})]}),y.help&&n.jsx("span",{className:"nice-payment-provider-config__help",children:y.help})]},y.key)})}),j.supportedMethods&&j.supportedMethods.length>0&&n.jsxs("div",{className:"nice-payment-provider-config__methods",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:a("paymentProviderConfig.enabledMethods","Enabled methods")}),n.jsx("div",{className:"nice-payment-provider-config__method-list",children:j.supportedMethods.map(y=>n.jsxs("label",{className:"nice-payment-provider-config__method",children:[n.jsx("input",{type:"checkbox",checked:(g.enabledMethods??[]).includes(y),disabled:U,onChange:()=>te(y)}),y]},y))})]}),d&&j.webhookPath&&n.jsxs("div",{className:"nice-payment-provider-config__field",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:a("paymentProviderConfig.webhookUrl","Webhook URL")}),n.jsx("code",{className:"nice-payment-provider-config__webhook",children:V})]}),l&&n.jsxs("div",{className:"nice-payment-provider-config__test",children:[n.jsx("button",{type:"button",className:"nice-payment-provider-config__test-btn",onClick:()=>void Z(),disabled:U||P,children:P?a("paymentProviderConfig.testing","Testing…"):b}),D&&n.jsxs("span",{className:"nice-payment-provider-config__test-result nice-payment-provider-config__test-result--"+(D.ok?"ok":"error"),children:[n.jsx(L.NiceIcon,{name:D.ok?"check":"close",size:14})," ",D.message??(D.ok?a("paymentProviderConfig.ok","OK"):a("paymentProviderConfig.failed","Failed"))]})]})]})]})});exports.EcbRatesProvider=Qe;exports.ExchangeRateHostProvider=Ve;exports.FrankfurterProvider=Ze;exports.FreeForexApiProvider=We;exports.MockPaymentProcessor=tt;exports.NICE_CURRENCY_CATALOG=me;exports.NICE_CURRENCY_CODES=Yt;exports.NICE_PAYMENT_PROCESSORS=ft;exports.NICE_PAYMENT_PROVIDER_LIST=bt;exports.NICE_PAYMENT_PROVIDER_PROFILES=fe;exports.NbpRatesProvider=Xe;exports.NiceCreditCardInput=gt;exports.NiceCurrencyConverter=Wt;exports.NiceCurrencySelector=Ee;exports.NiceMoney=Se;exports.NiceMoneyInput=Ue;exports.NicePaymentForm=Jt;exports.NicePaymentMethodSelector=nr;exports.NicePaymentProviderConfig=sr;exports.NicePriceTag=Xt;exports.NiceTaxBreakdown=tr;exports.OpenExchangeRatesProvider=Je;exports.StaticExchangeRateProvider=Ut;exports.addMoney=le;exports.compareMoney=It;exports.convertMoney=et;exports.createEcbRatesProvider=Ft;exports.createFreeForexApiProvider=qt;exports.createNbpRatesProvider=Tt;exports.createOpenExchangeRatesProvider=Ot;exports.detectCardBrand=be;exports.expectedCvcLength=ue;exports.findCurrency=W;exports.findPaymentProviderProfile=zt;exports.formatCardNumber=Ge;exports.formatMoney=ne;exports.fromMoney=De;exports.isExpiryValid=$e;exports.isNegative=At;exports.isZero=Rt;exports.luhnCheck=Re;exports.makeAdyenAdapter=at;exports.makeAutopayAdapter=mt;exports.makeBlikAdapter=pt;exports.makeBraintreeAdapter=it;exports.makeCoinbaseCommerceAdapter=ht;exports.makeKlarnaAdapter=yt;exports.makeMollieAdapter=st;exports.makePayPalAdapter=nt;exports.makePayUAdapter=lt;exports.makePrzelewy24Adapter=dt;exports.makeRazorpayAdapter=ot;exports.makeSquareAdapter=ct;exports.makeStripeAdapter=rt;exports.makeTpayAdapter=ut;exports.maskCardNumber=Et;exports.multiplyMoney=Ne;exports.negateMoney=$t;exports.normaliseExpiry=Ae;exports.parseMoney=Ye;exports.registerCurrency=St;exports.subtractMoney=He;exports.toMoney=ee;exports.useNiceExchangeRate=Ce;exports.useNiceMoney=Ht;exports.useNicePayment=_t;exports.validateCreditCard=Pe;