@nice2dev/ui-money 1.2.1 → 1.2.2
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/CHANGELOG.md +39 -0
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +677 -665
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @nice2dev/ui-money
|
|
2
2
|
|
|
3
|
+
## 1.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 06eb0d2: 1.2.2 — library texts through the translator, a translator in the packages that had none, and the
|
|
8
|
+
end of the hook-dependency warnings. Nothing removed or renamed. Upgrade notes:
|
|
9
|
+
`documentation/omniverk/OMNIVERK_UPGRADE_1.2.2.md`.
|
|
10
|
+
|
|
11
|
+
**Translations.** 2,825 new keys in the global dictionary (en, pl, de, fr, es, uk), 80 in the local
|
|
12
|
+
dictionaries of ui-math, ui-diagrams and ui-presentations: column headers, option labels, texts in
|
|
13
|
+
conditions and templates, messages given to setters, labels returned by helpers, Polish texts that
|
|
14
|
+
were the English default. Relative dates through `Intl.RelativeTimeFormat`, plural forms through
|
|
15
|
+
`…One` / `…Many` keys. ui-science, ui-platform, ui-mobile, auth, licensing, templates, social and
|
|
16
|
+
the icon tools translate through `useNiceTranslation` (new peer `@nice2dev/ui-core ^1.2.0`);
|
|
17
|
+
ui-security reads the global translator when its own provider is absent.
|
|
18
|
+
|
|
19
|
+
**Additions.** `labelKey` on ui-mobile `TabItem` and `SwipeAction` (the presets set it);
|
|
20
|
+
`registerWebAuthn` / `authenticateWebAuthn` take the WebAuthn options `NiceWebAuthnButton` used to
|
|
21
|
+
drop (defaults unchanged); `NiceKeyboardHint` shows `descriptionKey`. Eight icons in
|
|
22
|
+
`@nice2dev/icons` — `NtdPoint`, `NtdSegment`, `NtdPerpendicular`, `NtdParallel`, `NtdMidpoint`,
|
|
23
|
+
`NtdAngleBisector`, `NtdGroup`, `NtdUngroup` — and the same names as `NiceIcon` built-ins.
|
|
24
|
+
|
|
25
|
+
**Behaviour changes, agreed.** ui-math, ui-diagrams and ui-presentations follow the app's global
|
|
26
|
+
`NiceI18nProvider` language when their own provider is absent (they stayed English);
|
|
27
|
+
`NicePresentationEditor` without `lang` takes the surrounding language. Icons drawn as glyphs are
|
|
28
|
+
Nice icons: the `NiceGeometry` tools, Align / Group / Ungroup / Layout of the diagram toolbar, the
|
|
29
|
+
presentation grid toggle, zoom and "Add Track" of `NiceDMXTimeline`. icons-gaming and
|
|
30
|
+
icons-filetypes name an icon by its `title` and are decorative without one, like `createIcon`
|
|
31
|
+
(screen readers read "GiHeart" or "DOCX file icon"); new optional `title` on the gaming icon props.
|
|
32
|
+
|
|
33
|
+
**Hook dependencies (161 → 0).** Fixed along the way: `NiceLowPowerMode` re-rendered forever from
|
|
34
|
+
mount and overflowed the stack on wake; `GenericPlayer` / `NiceGenericPlayerStage` restarted the
|
|
35
|
+
track on a volume change; `NiceDMXTimeline` called `onPlay` on every frame and missed cues added
|
|
36
|
+
during playback; `NiceConflictResolution` `autoResolve` never resolved; `NiceMAM` selected by the
|
|
37
|
+
previous filter; `NiceRulesEngine` "Run All" kept only the last result; `NiceCodeEditor` saved with
|
|
38
|
+
the first render's `onSave`; a consumer's cursor handler switched off `NiceCodeEditorAI`
|
|
39
|
+
completion; `useRadioStream` lost a volume set before the first play; `NiceGameEditor` shortcuts,
|
|
40
|
+
`useVoiceControl` continuous sessions, `NiceDeviceTrust` with a host storing the score.
|
|
41
|
+
|
|
3
42
|
## 1.2.1
|
|
4
43
|
|
|
5
44
|
### Patch Changes
|
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 Ct=Object.defineProperty;var kt=(t,e,r)=>e in t?Ct(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var H=(t,e,r)=>kt(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}],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 te(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 ae(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)?te(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 Ce(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 ve{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 ve{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 v={base:c,quote:s,rate:h,asOf:d.date};return this.setCached(v),v}}class Ye extends ve{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],v=d.rates[s];if(h==null||v==null)throw new Error(`OpenExchangeRates: missing rate for ${c} or ${s}`);const f={base:c,quote:s,rate:v/h,asOf:new Date(d.timestamp*1e3).toISOString()};return this.setCached(f),f}}class Ge extends ve{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,v={base:c,quote:s,rate:h,asOf:d.date};return this.setCached(v),v}}class Ze extends ve{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 v=>{var N;if(v==="PLN")return{rate:1,date:new Date().toISOString().slice(0,10)};const f=`https://api.nbp.pl/api/exchangerates/rates/${this.table}/${v}/?format=json`,m=await this.fetchImpl(f);if(!m.ok)return null;const b=(N=(await m.json()).rates)==null?void 0:N[0];return b?{rate:b.mid??b.ask??0,date:b.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 Ft(t){return`/api/payments/${t}/webhook`}const Ot=[{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(Ot.map(t=>{const{currencyKey:e,...r}=t,a={...r,supportedCurrencies:Tt(e??t.id),webhookPath:Ft(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:te(t.major,t.currency),[]),[a,c]=o.useState(r),s=o.useCallback(f=>c(m=>te(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(()=>ae(a,{locale:e}),[a,e]),v=o.useMemo(()=>we(a),[a]);return{money:a,setMoney:c,setMajor:s,setCurrency:u,add:i,subtract:l,scale:d,formatted:h,major:v}}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),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 f=++d.current;l(!0),u(null),Xe({amount:h,currency:v},e,r).then(m=>{d.current===f&&c(m)}).catch(m=>{d.current===f&&(u(m instanceof Error?m:new Error(String(m))),c(null))}).finally(()=>{d.current===f&&l(!1)})},[h,v,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 _=m instanceof Error?m:new Error(String(m));throw u(_),r("failed"),_}},[t]),d=o.useCallback(async(f,m)=>{const _=f??(a==null?void 0:a.id);if(!_)throw new Error("No authorization id to capture");r("capturing");try{const b=await t.capture(_,m);return c(b),r(b.status),b}catch(b){const N=b instanceof Error?b:new Error(String(b));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 _=await t.cancel(m);return c(_),r(_.status),_},[t,a==null?void 0:a.id]),v=o.useCallback(async(f,m)=>{const _=f??(a==null?void 0:a.id);if(!_)throw new Error("No payment id to refund");const b=await t.refund(_,m);return c(b),r(b.status),b},[t,a==null?void 0:a.id]);return{status:e,response:a,error:s,authorize:l,capture:d,cancel:h,refund:v,reset:i}}const ke=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:v,"aria-label":f},m){const{t:_}=L.useNiceTranslation(),b=o.useMemo(()=>{if(e)return e;if(r!=null&&a){const x=W(a),P=(x==null?void 0:x.decimals)??2;return{amount:Math.round(r*Math.pow(10,P)),currency:a.toUpperCase()}}return null},[e,r,a]),N=o.useMemo(()=>b?b.amount===0&&i!=null?i:ae(b,{locale:c,currencyDisplay:s}):"",[b,c,s,i]),{converted:I}=xe(l&&d?b:null,l??"",d);if(!b)return null;const p=b.amount<0,g="nice-money"+(u&&p?" nice-money--negative":"")+(h?` ${h}`:"");return n.jsxs("span",{ref:m,className:g,style:v,"aria-label":f,children:[n.jsx("span",{className:"nice-money__value",children:N}),I&&n.jsxs("span",{className:"nice-money__converted","aria-label":_("money.convertedTo","Converted to {currency}").replace("{currency}",String(I.currency)),children:[" ≈ ",ae(I,{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:v,accessMode:f,label:m,helperText:_,error:b,required:N,size:I="md",labelPlacement:p="top",labelWidth:g,controlWidth:x,className:P,style:A,id:j,name:M,title:F,"data-testid":S,"aria-label":X,placeholder:q},w){const{t:E}=L.useNiceTranslation(),O=f==="hidden",Z=d||f==="disabled"||v,re=h||f==="readOnly",z=o.useId(),Y=j??`nice-cs-${z}`,[J,ne]=o.useState(""),U=s??a.length>8,C=o.useMemo(()=>{if(!J.trim())return a;const D=J.trim().toLowerCase();return a.filter(R=>R.code.toLowerCase().includes(D)||R.name.toLowerCase().includes(D)||R.symbol.toLowerCase().includes(D))},[a,J]),y=o.useMemo(()=>{const D=new Set;return c.map(R=>W(R)).filter(R=>!!R&&!D.has(R.code)&&!!D.add(R.code))},[c]),T=o.useCallback(D=>{const R=D.target.value,se=W(R);se&&(r==null||r(R,se))},[r]),B=D=>{if(l)return`${i?D.symbol+" ":""}${D.code}`;const R=[];return i&&R.push(D.symbol),u&&R.push(D.code),R.push("—",D.name),R.join(" ")},k=`nice-currency-selector nice-currency-selector--${I} nice-currency-selector--label-${p}`+(l?" nice-currency-selector--compact":"")+(b?" nice-currency-selector--error":"")+(Z?" nice-currency-selector--disabled":"")+(P?` ${P}`:""),K=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 O?null:n.jsxs("div",{ref:w,className:k,style:A,title:F,"data-testid":S,children:[m&&n.jsxs("label",{htmlFor:Y,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:[U&&n.jsx("input",{type:"search",className:"nice-currency-selector__search",placeholder:E("currencySelector.searchCurrency","Search currency…"),value:J,onChange:D=>ne(D.target.value),disabled:Z||re,"aria-label":E("currencySelector.searchCurrency2","Search currency")}),n.jsxs("select",{id:Y,name:M,className:"nice-currency-selector__select",value:e??"",onChange:T,disabled:Z||re,required:N,"aria-invalid":!!b,"aria-label":X??(typeof m=="string"?m:E("currencySelector.currency","Currency")),children:[!e&&n.jsx("option",{value:"",children:q??E("currencySelector.selectCurrency","Select currency…")}),y.length>0&&n.jsx("optgroup",{label:E("currencySelector.recent","Recent"),children:y.map(D=>n.jsx("option",{value:D.code,children:B(D)},`r-${D.code}`))}),n.jsx("optgroup",{label:y.length>0?E("currencySelector.all","All"):"",children:C.map(D=>n.jsx("option",{value:D.code,children:B(D)},D.code))})]})]}),(b||_)&&n.jsx("span",{className:b?"nice-currency-selector__error":"nice-currency-selector__helper",children:b??_})]})}),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:v,label:f,helperText:m,error:_,size:b="md",disabled:N,readOnly:I,required:p,loading:g,accessMode:x,labelPlacement:P="top",errorPlacement:A="bottom",labelWidth:j,controlWidth:M,submitOnEnter:F,onSubmit:S,showFormattedPreview:X=!0,showSteppers:q=!1,className:w,style:E,id:O,name:Z,title:re,"data-testid":z,onBlur:Y,onFocus:J,liveGrouping:ne,multiplierShortcuts:U=!0,onValidationError:C},y){const{t:T}=L.useNiceTranslation(),B=N||x==="disabled"||g,k=I||x==="readOnly",K=x==="hidden",ce=o.useId(),D=O??`nice-money-${ce}`,R=((e==null?void 0:e.currency)??a??"USD").toUpperCase(),se=W(R),Q=(se==null?void 0:se.decimals)??2,Re=d??1/Math.pow(10,Q),[Ne,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 $=W(e.currency),G=($==null?void 0:$.decimals)??2;be((e.amount/Math.pow(10,G)).toFixed(G))},[e,fe]);const Ae=o.useCallback($=>{let G=$;if(U){const oe=$.trim().match(/^([+-]?\d+(?:[.,]\d+)?)\s*([kKmMbB])$/);if(oe){const le=oe[2].toLowerCase()==="k"?1e3:oe[2].toLowerCase()==="m"?1e6:1e9,Fe=Number(oe[1].replace(",","."))*le;if(!Number.isFinite(Fe)){C==null||C(new Error("overflow"));return}G=String(Fe)}}const ee=Le(G,R);if(!ee){r==null||r(null);return}if(!Number.isSafeInteger(ee.amount)){C==null||C(new Error("overflow: amount exceeds Number.MAX_SAFE_INTEGER"));return}const ie=ee.amount/Math.pow(10,Q);if(i!=null&&ie<i){C==null||C(new Error(`min: ${i}`)),r==null||r(te(i,R));return}if(l!=null&&ie>l){C==null||C(new Error(`max: ${l}`)),r==null||r(te(l,R));return}r==null||r(ee)},[R,Q,i,l,r,U,C]),ft=o.useCallback($=>{const G=$.target.value;be(G),Ae(G)},[Ae]),Ee=o.useCallback($=>{const ee=(e?e.amount/Math.pow(10,Q):0)+$,ie=Math.min(l??1/0,Math.max(i??-1/0,ee));r==null||r(te(ie,R))},[e,Q,i,l,R,r]),_e=o.useMemo(()=>{var $,G;try{const ee=new Intl.NumberFormat(h).formatToParts(12345.6),ie=(($=ee.find(le=>le.type==="group"))==null?void 0:$.value)??",",oe=((G=ee.find(le=>le.type==="decimal"))==null?void 0:G.value)??".";return{group:ie,decimal:oe}}catch{return{group:",",decimal:"."}}},[h]),Ue=ne??!!_e.group,_t=o.useMemo(()=>{if(!Ue||fe===!1)return Ne;const $=_e.decimal,G=_e.group,ee=Ne.replace(new RegExp(`[${G.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}]`,"g"),""),[ie,oe]=ee.split($);if(!ie)return ee;const le=ie.replace(/\B(?=(\d{3})+(?!\d))/g,G);return oe!=null?`${le}${$}${oe}`:le},[Ne,fe,Ue,_e]),Te=o.useMemo(()=>e?ae(e,{locale:h}):"",[e,h]),pe=typeof _=="string"?_:void 0,gt=`nice-money-input nice-money-input--${b} nice-money-input--label-${P} nice-money-input--error-${A}`+(pe?" nice-money-input--error":"")+(B?" nice-money-input--disabled":"")+(g?" nice-money-input--loading":"")+(w?` ${w}`:""),xt=$=>{F&&$.key==="Enter"&&S&&($.preventDefault(),S())},vt=P==="left"&&j!=null?{width:typeof j=="number"?`${j}px`:j,flex:"none"}:void 0,Nt=M!=null?{width:typeof M=="number"?`${M}px`:M,flex:"none"}:void 0;return K?null:n.jsxs("div",{ref:y,className:gt,style:E,title:re,"data-testid":z,children:[f&&n.jsxs("label",{htmlFor:D,className:"nice-money-input__label",style:vt,children:[f,p&&n.jsx("span",{className:"nice-money-input__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-money-input__row",style:Nt,children:[!u&&n.jsx(De,{value:R,compact:!0,options:s?s.map(W).filter($=>!!$):void 0,onChange:$=>c==null?void 0:c($),disabled:B||k,className:"nice-money-input__currency","aria-label":T("moneyInput.currency","Currency")}),u&&n.jsx("span",{className:"nice-money-input__symbol","aria-hidden":!0,children:(se==null?void 0:se.symbol)??R}),q&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--down",onClick:()=>Ee(-Re),disabled:B||k||i!=null&&e!=null&&e.amount/Math.pow(10,Q)<=i,"aria-label":T("moneyInput.decreaseAmount","Decrease amount"),tabIndex:-1,children:"−"}),n.jsx("input",{id:D,name:Z,type:"text",inputMode:"decimal",autoComplete:"transaction-amount",className:"nice-money-input__amount",value:_t,onChange:ft,onKeyDown:xt,onFocus:$=>{$e(!0),J==null||J($)},onBlur:$=>{$e(!1),e&&be((e.amount/Math.pow(10,Q)).toFixed(Q)),Y==null||Y($)},placeholder:v??`0${Q>0?"."+"0".repeat(Q):""}`,disabled:B,readOnly:k,required:p,"aria-invalid":!!pe,"aria-describedby":pe||m?`${D}-help`:void 0}),q&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--up",onClick:()=>Ee(Re),disabled:B||k||l!=null&&e!=null&&e.amount/Math.pow(10,Q)>=l,"aria-label":T("moneyInput.increaseAmount","Increase amount"),tabIndex:-1,children:"+"}),g&&n.jsx("span",{className:"nice-money-input__spinner","aria-hidden":!0,children:n.jsx(L.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:`${D}-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:v,accessMode:f,label:m,helperText:_,error:b,required:N,className:I,style:p,id:g,title:x,"data-testid":P},A){const{t:j}=L.useNiceTranslation(),M=f==="hidden",F=d||f==="disabled"||v,S=h||f==="readOnly",X=o.useId(),q=g??`nice-cc-${X}`,[w,E]=o.useState({number:!1,expiry:!1,cvc:!1,holder:!1,postal:!1}),O=o.useMemo(()=>he(e.number),[e.number]),Z=o.useMemo(()=>Ce(e,{requireHolder:c??a}),[e,c,a]),re=!u||u.includes(O)||O==="unknown",z=o.useCallback(k=>{const K={...e,...k},ce=Ce(K,{requireHolder:c??a});r==null||r(K,ce)},[e,c,a,r]),Y=o.useCallback(k=>{const K=k.target.value.replace(/\D/g,"").slice(0,19);z({number:K})},[z]),J=o.useCallback(k=>{const K=k.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}/`),z({expiry:ce})},[z]),ne=o.useCallback(k=>{const K=k.target.value.replace(/\D/g,"").slice(0,ue(O));z({cvc:K})},[O,z]),U=o.useMemo(()=>ze(e.number,O),[e.number,O]),C=w.number&&e.number.length>0&&(Me(e.number)?re?void 0:"Card brand not accepted":Z.errors.number),y=w.expiry&&e.expiry.length>0&&!Se(e.expiry)?Z.errors.expiry:void 0,T=w.cvc&&e.cvc.length>0&&e.cvc.length!==ue(O)?Z.errors.cvc:void 0,B=`nice-credit-card nice-credit-card--${l}`+(F?" nice-credit-card--disabled":"")+(v?" nice-credit-card--loading":"")+(b?" nice-credit-card--error":"")+(I?` ${I}`:"");return M?null:n.jsxs("div",{ref:A,className:B,style:p,title:x,"data-testid":P,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:`${q}-number`,type:"text",inputMode:"numeric",autoComplete:"cc-number",placeholder:O==="amex"?"3782 822463 10005":"1234 1234 1234 1234",value:U,onChange:Y,onBlur:()=>E(k=>({...k,number:!0})),disabled:F,readOnly:S,"aria-invalid":!!C,"aria-describedby":C?`${q}-number-err`:void 0,className:"nice-credit-card__input",maxLength:O==="amex"?17:23}),i&&n.jsx(zt,{brand:O})]}),C&&n.jsx("span",{id:`${q}-number-err`,className:"nice-credit-card__error",children:C})]})}),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:`${q}-expiry`,type:"text",inputMode:"numeric",autoComplete:"cc-exp",placeholder:j("creditCardInput.mmYy","MM/YY"),value:e.expiry,onChange:J,onBlur:()=>{E(K=>({...K,expiry:!0}));const k=Pe(e.expiry);k&&k!==e.expiry&&z({expiry:k})},disabled:F,readOnly:S,"aria-invalid":!!y,"aria-describedby":y?`${q}-expiry-err`:void 0,className:"nice-credit-card__input",maxLength:5}),y&&n.jsx("span",{id:`${q}-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:O==="amex"?j("creditCardInput.cid","CID"):j("creditCardInput.cvc","CVC")}),n.jsx("input",{id:`${q}-cvc`,type:"text",inputMode:"numeric",autoComplete:"cc-csc",placeholder:"•".repeat(ue(O)),value:e.cvc,onChange:ne,onBlur:()=>E(k=>({...k,cvc:!0})),disabled:F,readOnly:S,"aria-invalid":!!T,"aria-describedby":T?`${q}-cvc-err`:void 0,className:"nice-credit-card__input",maxLength:ue(O)}),T&&n.jsx("span",{id:`${q}-cvc-err`,className:"nice-credit-card__error",children:T})]})]}),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:`${q}-holder`,type:"text",autoComplete:"cc-name",placeholder:j("creditCardInput.janeDoe","Jane Doe"),value:e.holderName??"",onChange:k=>z({holderName:k.target.value}),onBlur:()=>E(k=>({...k,holder:!0})),disabled:F,readOnly:S,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:`${q}-postal`,type:"text",autoComplete:"postal-code",value:e.postalCode??"",onChange:k=>z({postalCode:k.target.value}),onBlur:()=>E(k=>({...k,postal:!0})),disabled:F,readOnly:S,className:"nice-credit-card__input",maxLength:16})]})}),(b||_)&&n.jsx("div",{className:b?"nice-credit-card__form-error":"nice-credit-card__helper",role:b?"alert":void 0,children:b??_})]})}),Oe={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":Oe[t],children:Oe[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,onSuccess:h,onError:v,consents:f,className:m,style:_},b){const{t:N}=L.useNiceTranslation(),I=d??N("paymentForm.pay","Pay"),[p,g]=o.useState(r),[x,P]=o.useState(r.currency),[A,j]=o.useState({number:"",expiry:"",cvc:""}),[M,F]=o.useState(null),[S,X]=o.useState(!1),[q,w]=o.useState(null),E=ht(e),O=o.useMemo(()=>e.supportedCurrencies==="*"?!0:e.supportedCurrencies.includes(p.currency.toUpperCase()),[e,p.currency]),Z=o.useMemo(()=>{var C;const U=(C=e.minimums)==null?void 0:C[p.currency.toUpperCase()];return U==null||p.amount>=U},[e,p]),re=o.useMemo(()=>{var C;const U=(C=e.minimums)==null?void 0:C[p.currency.toUpperCase()];return U==null?null:{amount:U,currency:p.currency}},[e,p.currency]),z=!!(M!=null&&M.isValid),Y=!S&&O&&Z&&z,J=o.useCallback(async U=>{if(U.preventDefault(),!!Y){w(null),X(!0);try{const C={amount:p,card:A,customer:c,description:u,metadata:i,idempotencyKey:Yt()},y=await E.authorize(C);if(l&&y.status==="authorized"){const T=await E.capture(y.id,p);h==null||h(T)}else h==null||h(y)}catch(C){const y=C instanceof Error?C:new Error(String(C));w(y.message),v==null||v(y)}finally{X(!1)}}},[Y,p,A,c,u,i,l,E,h,v]),ne=W(p.currency);return n.jsxs("form",{ref:b,className:"nice-payment-form"+(m?` ${m}`:""),style:_,onSubmit:J,"aria-busy":S,children:[n.jsx("div",{className:"nice-payment-form__amount",children:a?n.jsx(Ie,{label:N("paymentForm.amount","Amount"),value:p,currency:x,currencies:s,onChange:U=>U&&g(U),onCurrencyChange:U=>{P(U),g(C=>({...C,currency:U}))},disabled:S,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(ke,{value:p})]})}),u&&n.jsx("p",{className:"nice-payment-form__description",children:u}),n.jsx("div",{className:"nice-payment-form__card",children:n.jsx(bt,{value:A,onChange:(U,C)=>{j(U),F(C)},disabled:S})}),!O&&n.jsx("div",{className:"nice-payment-form__warning",role:"alert",children:N("paymentForm.doesNotAccept","{provider} does not accept {currency}.").replace("{provider}",String(e.name)).replace("{currency}",String((ne==null?void 0:ne.name)??p.currency))}),!Z&&re&&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(ke,{value:re}),"."]}),f&&n.jsx("div",{className:"nice-payment-form__consents",children:f}),q&&n.jsx("div",{className:"nice-payment-form__error",role:"alert",children:q}),n.jsx("button",{type:"submit",className:"nice-payment-form__submit",disabled:!Y,"aria-disabled":!Y,children:S?N("paymentForm.processing","Processing…"):I}),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},v){const{t:f}=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]),b=`nice-price-tag nice-price-tag--${i}`+(d?` ${d}`:"");return n.jsxs("div",{ref:v,className:b,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:ae(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:ae(r,{locale:l})})}),m&&u&&_!=null&&_>0&&n.jsxs("span",{className:"nice-price-tag__discount","aria-label":f("priceTag.percentOff","{pct} percent off").replace("{pct}",String(_)),children:["−",_,"%"]}),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:v},f){const{t:m}=L.useNiceTranslation(),[_,b]=L.useControllableState({value:e,defaultValue:r,fallbackValue:Zt,onChange:a,componentName:"NiceCurrencyConverter"}),[N,I]=L.useControllableState({value:c,defaultValue:s,fallbackValue:_.currency,onChange:u,componentName:"NiceCurrencyConverter"}),{converted:p,loading:g,error:x}=xe(_,N,i),P=o.useMemo(()=>({amount:Math.pow(10,2),currency:_.currency}),[_.currency]),{converted:A}=xe(d?P:null,N,i);return n.jsxs("div",{ref:f,className:"nice-currency-converter"+(h?` ${h}`:""),style:v,children:[n.jsx("div",{className:"nice-currency-converter__row",children:n.jsx(Ie,{label:m("currencyConverter.from","From"),value:_,onChange:j=>j&&b(j),currency:_.currency,onCurrencyChange:j=>b({..._,currency:j}),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(De,{value:N,onChange:j=>I(j),compact:!0}),n.jsx("span",{className:"nice-currency-converter__amount",children:g?"…":x?"—":p?ae(p,{locale:l}):""})]})]}),d&&A&&n.jsxs("p",{className:"nice-currency-converter__rate",children:["1 ",_.currency," = ",ae(A,{locale:l})," ",n.jsxs("span",{className:"nice-currency-converter__inverse",children:["· 1 ",N," ="," ",ae(te(1/we(A),_.currency),{locale:l})]})]}),x&&n.jsx("p",{className:"nice-currency-converter__error",role:"alert",children:x.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:v},f){const{t:m}=L.useNiceTranslation(),_={label:(i==null?void 0:i.label)??m("taxBreakdown.item","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"},b=o.useMemo(()=>{if(a==="total"){const p=new Map;for(const x of e){let P=p.get(x.vatRate);P||(P=[],p.set(x.vatRate,P)),P.push(x.netAmount)}const g=[];for(const[x,P]of p){const A=P.reduce((F,S)=>de(F,S),te(0,P[0].currency)),j=qe(ge(A,x)),M=de(A,j);g.push({rate:x,net:A,vat:j,gross:M})}return g}return e.map(p=>{const g=qe(ge(p.netAmount,p.vatRate)),x=de(p.netAmount,g);return{label:p.label,rate:p.vatRate,net:p.netAmount,vat:g,gross:x}})},[e,a]),N=o.useMemo(()=>{if(b.length===0)return null;const p=b[0].net.currency;let g=te(0,p),x=te(0,p),P=te(0,p);for(const A of b)g=de(g,A.net),x=de(x,A.vat),P=de(P,A.gross);return{net:g,vat:x,gross:P}},[b]),I=p=>ae(p,{locale:r});return n.jsxs("table",{ref:f,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:[b.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:b.map((p,g)=>n.jsxs("tr",{children:[b.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:I(p.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:I(p.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:I(p.gross)})]},`${p.rate}-${g}`))}),c&&N&&n.jsx("tfoot",{children:s&&n.jsxs("tr",{className:"nice-tax-breakdown__totals",children:[b.some(p=>p.label!==void 0)&&n.jsx("td",{children:_.total}),!u&&n.jsx("td",{children:b.some(p=>p.label!==void 0)?null:_.total}),n.jsx("td",{className:"nice-tax-breakdown__num",children:I(N.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:I(N.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:I(N.gross)})]})})]})}),Qt=[],Wt=o.forwardRef(function(e,r){const{t:a}=L.useNiceTranslation(),{methods:c=Qt,value:s,onChange:u,layout:i="list",columns:l=2,currency:d,label:h,name:v,readOnly:f=!1,className:m,style:_,id:b,accessMode:N,"data-testid":I}=e,p=o.useId(),g=v??`nice-pm-${p}`,x=o.useMemo(()=>{if(!d)return c;const M=d.toUpperCase();return c.filter(F=>!F.currencies||F.currencies.map(S=>S.toUpperCase()).includes(M))},[c,d]);if(N==="hidden")return null;const P=f||N==="disabled"||N==="readOnly",A=`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:b,className:A,style:_,"data-testid":I,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??a("paymentMethodSelector.paymentMethod","Payment method"),children:[x.map(M=>{const F=M.id===s,S=P||M.disabled;return n.jsxs("label",{className:"nice-payment-method-selector__option"+(F?" nice-payment-method-selector__option--selected":"")+(S?" nice-payment-method-selector__option--disabled":""),children:[n.jsx("input",{type:"radio",className:"nice-payment-method-selector__radio",name:g,value:M.id,checked:F,disabled:S,onChange:()=>u==null?void 0:u(M.id)}),M.icon&&n.jsx("span",{className:"nice-payment-method-selector__icon",children:M.icon}),n.jsxs("span",{className:"nice-payment-method-selector__text",children:[n.jsx("span",{className:"nice-payment-method-selector__name",children:M.label}),M.description&&n.jsx("span",{className:"nice-payment-method-selector__desc",children:M.description})]})]},M.id)}),x.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}=L.useNiceTranslation(),{value:c,defaultValue:s,onChange:u,providers:i,onTestConnection:l,showWebhookUrl:d=!0,baseUrl:h,readOnly:v=!1,testLabel:f=a("paymentProviderConfig.testConnection","Test connection"),tutorial:m,className:_,style:b,id:N,accessMode:I,"data-testid":p}=e,[g,x]=L.useControllableState({value:c,defaultValue:s,fallbackValue:tr,onChange:u,componentName:"NicePaymentProviderConfig"}),P=o.useId(),[A,j]=o.useState(new Set),[M,F]=o.useState(!1),[S,X]=o.useState(null),q=o.useMemo(()=>i?i.map(y=>ye[y]).filter(y=>!!y):yt,[i]),w=ye[g.providerId];if(I==="hidden")return null;const E=v||I==="disabled"||I==="readOnly",O=y=>{X(null),j(new Set),x({providerId:y,mode:g.mode,credentials:{},enabledMethods:[]})},Z=(y,T)=>{x({...g,credentials:{...g.credentials,[y]:T}})},re=y=>{const T=new Set(g.enabledMethods??[]);T.has(y)?T.delete(y):T.add(y),x({...g,enabledMethods:[...T]})},z=y=>{j(T=>{const B=new Set(T);return B.has(y)?B.delete(y):B.add(y),B})},Y=async()=>{if(l){F(!0),X(null);try{X(await l(g))}catch(y){X({ok:!1,message:y instanceof Error?y.message:String(y)})}finally{F(!1)}}},J=w!=null&&w.webhookPath?`${(h??"").replace(/\/$/,"")}${w.webhookPath}`:"",ne=(w==null?void 0:w.supportedCurrencies)==="*"?a("paymentProviderConfig.allCurrencies","All currencies"):((w==null?void 0:w.supportedCurrencies)??[]).join(", "),U="nice-payment-provider-config"+(_?` ${_}`:""),C=((w==null?void 0:w.credentials)??[]).filter(y=>!y.testOnly||g.mode==="test");return n.jsxs("div",{ref:r,id:N,className:U,style:b,"data-testid":p,children:[m&&n.jsx("div",{className:"nice-payment-provider-config__tutorial",children:n.jsx(L.NiceTutorialButton,{steps:L.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:g.providerId,disabled:E,onChange:y=>O(y.target.value),children:[n.jsx("option",{value:"",children:a("paymentProviderConfig.selectProvider","— select provider —")}),q.map(y=>n.jsx("option",{value:y.id,children:y.name},y.id))]})]}),(w==null?void 0:w.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:E,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:E,children:a("paymentProviderConfig.live","Live")})]})]}),w&&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:w.type}),n.jsx("span",{className:"nice-payment-provider-config__currencies",children:ne})]}),n.jsx("div",{className:"nice-payment-provider-config__credentials",children:C.map(y=>{const T=`${P}-${y.key}`,B=y.secret,k=A.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:T,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:T,type:B&&!k?"password":"text",className:"nice-payment-provider-config__input",value:g.credentials[y.key]??"",readOnly:E,autoComplete:B?"new-password":"off",onChange:K=>Z(y.key,K.target.value)}),B&&n.jsx("button",{type:"button",className:"nice-payment-provider-config__reveal",onClick:()=>z(y.key),"aria-label":k?a("paymentProviderConfig.hide","Hide"):a("paymentProviderConfig.reveal","Reveal"),"aria-pressed":k,children:n.jsx(L.NiceIcon,{name:k?"eye-off":"eye",size:14})})]}),y.help&&n.jsx("span",{className:"nice-payment-provider-config__help",children:y.help})]},y.key)})}),w.supportedMethods&&w.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:w.supportedMethods.map(y=>n.jsxs("label",{className:"nice-payment-provider-config__method",children:[n.jsx("input",{type:"checkbox",checked:(g.enabledMethods??[]).includes(y),disabled:E,onChange:()=>re(y)}),y]},y))})]}),d&&w.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:J})]}),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 Y(),disabled:E||M,children:M?a("paymentProviderConfig.testing","Testing…"):f}),S&&n.jsxs("span",{className:"nice-payment-provider-config__test-result nice-payment-provider-config__test-result--"+(S.ok?"ok":"error"),children:[n.jsx(L.NiceIcon,{name:S.ok?"check":"close",size:14})," ",S.message??(S.ok?a("paymentProviderConfig.ok","OK"):a("paymentProviderConfig.failed","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=ke;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=ae;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=te;exports.useNiceExchangeRate=xe;exports.useNiceMoney=Kt;exports.useNicePayment=ht;exports.validateCreditCard=Ce;
|