@nice2dev/ui-money 1.1.6 → 1.1.9

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 CHANGED
@@ -1,5 +1,106 @@
1
1
  # @nice2dev/ui-money
2
2
 
3
+ ## 1.1.9
4
+
5
+ ### Patch Changes
6
+
7
+ - 1.1.9 — themes reach the controls again, every control has a rendered demo, no breaking changes.
8
+
9
+ **Theming.** `NiceThemeProvider`, `applyTheme` and `NiceThemePreview` write the `--nice-*` tokens
10
+ again, so a theme recolours the controls and not only the app's own CSS — since 1.1.7 only
11
+ light/dark switched. The provider's scope wins over values set on `:root`, as it did before 1.1.7:
12
+ put a brand colour into the theme rather than on `<html>`. Alias tokens are computed in the theme
13
+ scope, not only on `:root`. About 1,600 places that used a text token as a background or border, or
14
+ a surface token as text colour, now use the token of the right role. `--nice-warning-light` and
15
+ `--nice-danger-light` are the light shade of the status colour, like `--nice-success-light`
16
+ (new: `--nice-color-warning-light`, `--nice-color-error-light`); backgrounds use `--nice-*-bg`.
17
+
18
+ **Styles that never shipped.** Six stylesheets in `@nice2dev/ui` were unreachable from its entry
19
+ point, so `NiceLiveDataGrid`, `NiceTaskInbox`, `NiceBPMNDesigner`, `NiceInstanceMonitor`,
20
+ `NiceIntegrationHub`, `NiceRulesEngine` and `NiceVideoEditor` rendered unstyled; eleven more
21
+ components had no stylesheet at all; `workflow.css` read its spacing scale as pixels; and
22
+ `NiceModuleGrid` was styled for a `<table>` it does not render.
23
+
24
+ **Language.** `useNiceTranslation()` returns `{ t, lang }` and dates are formatted in the interface
25
+ language rather than the browser's (`ui-presentations` adds `useNiceLang()`). `NiceInvoiceLineEditor`
26
+ takes its currency and units from the active language unless you pass them. `NiceAuditLog`,
27
+ `NiceRecordingPanel`, the four game-engine editors and `NiceTemplateEditor` are translated, the
28
+ game-engine dictionary is actually registered, and 136 ui-audio strings have English defaults
29
+ instead of rendering raw keys.
30
+
31
+ **Canvas and document colours.** Canvas never resolves `var()`: the QR and barcode generators drew a
32
+ black rectangle, the whiteboard lost its colours and light presets parsed to `NaN`. Data colours are
33
+ resolved first now. Colours stored in documents — slide templates, theme presets, brand kits,
34
+ exports — are literals, so a saved document looks the same in every theme.
35
+
36
+ **Fixes found by the new demos.** All 895 controls now have a rendered showcase demo, and roughly
37
+ every third new demo exposed a bug. `ui-platform`: the service worker re-registered on every
38
+ render, a screen permission prompt appeared on mount, reconnects and start-up tasks ran twice,
39
+ valid EAN-13 codes were rejected. `ui-ai`: `createProviderFromConfig` dropped the endpoint path —
40
+ OpenAI, Anthropic and Groq were called without `/v1` and Azure always threw — and the theme
41
+ generator failed on every request. `ui-communication`: the local participant appeared twice in a
42
+ conference and `activeConversationId` was ignored. `ui-buildings`: automation days were saved as
43
+ indices (both forms are read now), the row toggle changed the selected rule instead of the clicked
44
+ one, and floor-plan devices were drawn in the corner. `ui-mobile`: `NiceTouchTable` rendered invalid
45
+ table markup. `ui-diagrams`: arrowheads grew with the stroke width and transition clicks never fired.
46
+ `ui-3d`: opening a code editor before the 3D view broke the whole app. `ui-presentations`: the editor
47
+ clipped slides in columns narrower than 800 px.
48
+
49
+ **Additive API only.** `@nice2dev/ui-platform` now exports its hooks, provider aliases and Props / Ref
50
+ types. Nothing was renamed or removed.
51
+
52
+ ## 1.1.8
53
+
54
+ No changes in this release.
55
+
56
+ ## 1.1.7
57
+
58
+ ### Patch Changes
59
+
60
+ - Close the three items left open in the 1.1.6 response to OmniVerk.
61
+
62
+ **Every value control works without state in the parent.** The `audit-controllable-state` gate
63
+ counted 87 value props that were required with no `default*`, so the control could not render from a
64
+ manifest without data. It now reports 0 and gates CI at `--max=0`. 48 controls gained `default*` props
65
+ through `useControllableState` (existing `value` + handler call sites behave as before); 33 read-only
66
+ data lists are optional with a stable empty default; 4 props paired with a handler only by name are
67
+ optional; `NiceWhiteboard` and `NiceMetricsDashboard` render an empty state until a session or
68
+ dashboard arrives. Additive API only — nothing renamed or removed.
69
+
70
+ - `NicePivotGrid.fields`, `NiceScheduler.events` and `NiceGitHooks.hooks` are controlled only together
71
+ with their change handler, as `NiceScheduler` already documented for `currentDate`/`view`. A bare
72
+ prop stays an initial value; prop plus handler now always wins (later prop updates used to be
73
+ ignored). `NiceGitHooks.onHookChange` is now called; `onHooksChange` and
74
+ `NiceLocaleManager.onTranslationsChange` are new.
75
+ - `NiceCodeEditor` / `NiceCodeDiffEditor` no longer report a value written from the prop back through
76
+ `onChange`, and call the latest handler rather than the one captured at mount.
77
+ - `NiceHtmlEditor` no longer rewrites its content on every render (React 19 compares the
78
+ `dangerouslySetInnerHTML` object, not its string), which moved the caret; the HTML source and
79
+ Markdown views can be closed again.
80
+ - Selections seeded once from the first item (access manager, automation/scene editors, git diff
81
+ viewer, ribbon, setup wizard) follow data that arrives after mount.
82
+ - `useControllableState`: new `fallbackValue` seed that never triggers the value/default clash warning;
83
+ two functional updates in one tick no longer lose the first; `onChange` is called with one argument
84
+ when there is no meta. `UseControllableStateOptions` is now a union type alias.
85
+
86
+ **`--nice-*` is the source of truth for design tokens.** Controls read only `--nice-*` (9,225 reads in
87
+ 339 files). The unprefixed names (`--color-primary`, `--bg-primary`, `--text-muted`, …) stay declared
88
+ as aliases pointing at the Nice tokens, so reading them works, but setting them no longer repaints Nice
89
+ controls. Apps that relied on that can import `@nice2dev/ui/css/legacy-bg-text-aliases.css` after
90
+ `style.css` (removed in 1.2), or set `--nice-color-primary` and friends directly. 13 tokens that were
91
+ read and never declared (`--color-danger`, `--text-on-primary`, `--color-white`, …) are defined; the
92
+ dark blocks define the canonical names, so `.nice-dark` on `<body>` no longer leaves them on light
93
+ values; `--nice-primary-bg` and `--nice-selected-bg` are a primary tint instead of falling through to
94
+ grey. New gate `audit-token-names`.
95
+
96
+ **Node ESM and `require()`.** `@nice2dev/spatial-core` imports from plain Node ESM (51 relative
97
+ specifiers gained extensions, enforced by `nodenext`), and so does `@nice2dev/ui-buildings`, which
98
+ failed through it. `require()` works for `ui-3d`, `ui-graphics` and `game-engine`. The package-exports
99
+ gate now loads every entry in both module systems.
100
+
101
+ **Hygiene.** Sources are prettier-formatted and CI gates on it; 640 stale `.d.ts` files were removed
102
+ from source trees (never published).
103
+
3
104
  ## 1.1.6
4
105
 
5
106
  No changes in this release.
@@ -2,14 +2,18 @@ import { default as React } from 'react';
2
2
  import { ExchangeRateProvider } from '../exchange';
3
3
  import { Money } from '../types';
4
4
  export interface NiceCurrencyConverterProps {
5
- /** Source money. */
6
- source: Money;
5
+ /** Source money (controlled). Omit it to let the converter keep its own. */
6
+ source?: Money;
7
+ /** Initial source when uncontrolled. Defaults to 0 USD. */
8
+ defaultSource?: Money;
7
9
  /** Setter for the source. */
8
- onSourceChange: (m: Money) => void;
9
- /** Target currency code. */
10
- targetCurrency: string;
10
+ onSourceChange?: (m: Money) => void;
11
+ /** Target currency code (controlled). Omit it to let the converter keep its own. */
12
+ targetCurrency?: string;
13
+ /** Initial target currency when uncontrolled. Defaults to the source currency. */
14
+ defaultTargetCurrency?: string;
11
15
  /** Setter for target currency. */
12
- onTargetCurrencyChange: (code: string) => void;
16
+ onTargetCurrencyChange?: (code: string) => void;
13
17
  /** Provider used to fetch the rate (Frankfurter / OpenExchangeRates / static / …). */
14
18
  provider: ExchangeRateProvider;
15
19
  /** Locale for formatted preview. */
@@ -11,10 +11,12 @@ export interface NicePaymentProviderConfigValue {
11
11
  enabledMethods?: string[];
12
12
  }
13
13
  export interface NicePaymentProviderConfigProps extends NiceBaseProps {
14
- /** Current configuration (controlled). */
15
- value: NicePaymentProviderConfigValue;
14
+ /** Current configuration (controlled). Omit it to let the component keep its own. */
15
+ value?: NicePaymentProviderConfigValue;
16
+ /** Initial configuration when uncontrolled. */
17
+ defaultValue?: NicePaymentProviderConfigValue;
16
18
  /** Change callback. */
17
- onChange: (value: NicePaymentProviderConfigValue) => void;
19
+ onChange?: (value: NicePaymentProviderConfigValue) => void;
18
20
  /** Restrict the provider list to these ids (defaults to all bundled profiles). */
19
21
  providers?: string[];
20
22
  /** Verify credentials. Resolve `{ ok, message }` to show inline feedback. */
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var vt=Object.defineProperty;var kt=(t,e,r)=>e in t?vt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var F=(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"),Te=require("@nice2dev/ui-core"),de=[{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}],Fe=new Map(de.map(t=>[t.code,t]));function J(t){return Fe.get(t.toUpperCase())}function wt(t){Fe.set(t.code.toUpperCase(),t);const e=de.findIndex(r=>r.code===t.code);e>=0?de[e]=t:de.push(t)}function Q(t,e){const r=J(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 ke(t){const e=J(t.currency),r=(e==null?void 0:e.decimals)??2;return t.amount/Math.pow(10,r)}function Ct(t,e){return t.currency.toUpperCase()===e.currency.toUpperCase()}function we(t,e,r){if(!Ct(t,e))throw new Error(`Cannot ${r} different currencies: ${t.currency} vs ${e.currency}`)}function oe(t,e){return we(t,e,"add"),{amount:t.amount+e.amount,currency:t.currency}}function Ke(t,e){return we(t,e,"subtract"),{amount:t.amount-e.amount,currency:t.currency}}function fe(t,e){return{amount:(t.amount*e<0?-1:1)*Math.round(Math.abs(t.amount*e)),currency:t.currency}}function jt(t,e){return we(t,e,"compare"),t.amount-e.amount}function Mt(t){return t.amount===0}function Pt(t){return t.amount<0}function Dt(t){return{amount:-t.amount,currency:t.currency}}function W(t,e={}){const r=J(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,l=c.toFixed(a);return r!=null&&r.symbolFirst?`${s}${l}`:`${l} ${s}`}}function Be(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(","),l=Math.max(c,s);let i,d="";l===-1?i=r:(i=r.slice(0,l).replace(/[.,]/g,""),d=r.slice(l+1).replace(/[.,]/g,""));const u=`${i}.${d||"0"}`,y=parseFloat(u);return Number.isFinite(y)?Q(a?-y:y,e):null}function pe(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 Ce(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 Le(t,e){const r=(t||"").replace(/\D/g,""),a=e??pe(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 St(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??pe(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 je(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 Me(t,e=new Date){const r=je(t);if(!r)return!1;const[a,c]=r.split("/"),s=parseInt(a,10),l=2e3+parseInt(c,10);return new Date(l,s,0,23,59,59,999).getTime()>=e.getTime()}function le(t){return t==="amex"?4:3}function Ne(t,e={}){var u;const r={},a=pe(t.number),c=Ce(t.number);c||(r.number="Invalid card number");const s=Me(t.expiry,e.now);s||(r.expiry="Invalid or expired");const i=(t.cvc||"").replace(/\D/g,"").length===le(a);i||(r.cvc=`CVC must be ${le(a)} digits`);const d=!e.requireHolder||(((u=t.holderName)==null?void 0:u.trim().length)??0)>=2;return d||(r.holderName="Cardholder name required"),{brand:a,numberValid:c,expiryValid:s,cvcValid:i,holderValid:d,isValid:c&&s&&i&&d,errors:r}}class It{constructor(e){F(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(u=>u.base===a&&u.quote===c);if(s)return s;const l=this.rates.find(u=>u.base===c&&u.quote===a);if(l)return{base:a,quote:c,rate:1/l.rate,asOf:l.asOf};const i=this.rates.find(u=>u.base===a&&u.quote==="USD")??this.rates.find(u=>u.base==="USD"&&u.quote===a),d=this.rates.find(u=>u.base==="USD"&&u.quote===c)??this.rates.find(u=>u.base===c&&u.quote==="USD");if(i&&d){const u=i.base==="USD"?1/i.rate:i.rate,y=d.base==="USD"?d.rate:1/d.rate;return{base:a,quote:c,rate:u*y,asOf:new Date().toISOString()}}throw new Error(`No FX rate for ${a}/${c}`)}}class xe{constructor(e={}){F(this,"cache",new Map);F(this,"fetchImpl");F(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 xe{constructor(r={}){super(r);F(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 l=this.getCached(c,s);if(l)return l;const i=`https://api.frankfurter.app/latest?from=${c}&to=${s}`,d=await this.fetchImpl(i);if(!d.ok)throw new Error(`Frankfurter HTTP ${d.status}`);const u=await d.json(),y=u.rates[s];if(y==null)throw new Error(`Frankfurter: no rate for ${c}/${s}`);const x={base:c,quote:s,rate:y,asOf:u.date};return this.setCached(x),x}}class ze extends xe{constructor(r,a={}){super(a);F(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 l=this.getCached(c,s);if(l)return l;const i=`https://openexchangerates.org/api/latest.json?app_id=${this.appId}`,d=await this.fetchImpl(i);if(!d.ok)throw new Error(`OpenExchangeRates HTTP ${d.status}`);const u=await d.json(),y=u.rates[c],x=u.rates[s];if(y==null||x==null)throw new Error(`OpenExchangeRates: missing rate for ${c} or ${s}`);const h={base:c,quote:s,rate:x/y,asOf:new Date(u.timestamp*1e3).toISOString()};return this.setCached(h),h}}class Ye extends xe{constructor(r={}){super(r);F(this,"id","exchangerate.host")}async getRate(r,a){var h;const c=r.toUpperCase(),s=a.toUpperCase();if(c===s)return{base:c,quote:s,rate:1,asOf:new Date().toISOString()};const l=this.getCached(c,s);if(l)return l;const i=`https://api.exchangerate.host/convert?from=${c}&to=${s}`,d=await this.fetchImpl(i);if(!d.ok)throw new Error(`exchangerate.host HTTP ${d.status}`);const u=await d.json(),y=((h=u.info)==null?void 0:h.rate)??u.result,x={base:c,quote:s,rate:y,asOf:u.date};return this.setCached(x),x}}class Ge extends xe{constructor(r={}){super(r);F(this,"id","nbp");F(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 l=this.getCached(c,s);if(l)return l;const i=async x=>{var f;if(x==="PLN")return{rate:1,date:new Date().toISOString().slice(0,10)};const h=`https://api.nbp.pl/api/exchangerates/rates/${this.table}/${x}/?format=json`,p=await this.fetchImpl(h);if(!p.ok)return null;const b=(f=(await p.json()).rates)==null?void 0:f[0];return b?{rate:b.mid??b.ask??0,date:b.effectiveDate}:null},d=await i(c),u=await i(s);if(!d||!u||d.rate===0)throw new Error(`NBP: missing rate for ${c} or ${s}`);const y={base:c,quote:s,rate:d.rate/u.rate,asOf:d.date};return this.setCached(y),y}}class Ze extends He{constructor(){super(...arguments);F(this,"id","ecb")}}class Je extends Ye{constructor(){super(...arguments);F(this,"id","free-forex")}}const Rt=(t={})=>new Ge(t),$t=(t={})=>new Ze(t),At=t=>new ze(t.apiKey,t),Ut=(t={})=>new Je(t);async function Xe(t,e,r){const a=e.toUpperCase();if(t.currency.toUpperCase()===a)return t;const c=J(t.currency),s=J(a),l=(c==null?void 0:c.decimals)??2,i=(s==null?void 0:s.decimals)??2,{rate:d}=await r.getRate(t.currency,a),y=t.amount/Math.pow(10,l)*d;return{currency:a,amount:Math.round(y*Math.pow(10,i))}}class Qe{constructor(e={}){F(this,"id");F(this,"name");F(this,"supportedCurrencies");F(this,"minimums");F(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 G(t,e,r,a,c){const s=l=>{const i=a==null?void 0:a[l];return i||(async()=>{throw new Error(`[ui-money] ${e} adapter is not wired. Pass an \`executor.${String(l)}\` 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 G("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 Ve(t){return G("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 et(t){return G("adyen","Adyen","*",t)}function tt(t){return G("square","Square",["USD","CAD","GBP","AUD","JPY","EUR"],t)}function rt(t){return G("mollie","Mollie","*",t)}function nt(t){return G("braintree","Braintree","*",t)}function at(t){return G("razorpay","Razorpay",["INR","USD","EUR","GBP","AED"],t)}function ct(t){return G("payu","PayU",["PLN","EUR","USD","CZK","HUF","RON","BGN","TRY"],t)}function st(t){return G("przelewy24","Przelewy24",["PLN","EUR"],t)}function it(t={}){return G("tpay","Tpay",["PLN","EUR","USD","GBP"],t)}function ot(t={}){return G("autopay","Autopay",["PLN","EUR","USD","GBP","CZK"],t)}function lt(t={}){const{acquirer:e="native",...r}=t;return G(`blik:${e}`,`BLIK (${e})`,["PLN"],r)}function dt(t){return G("klarna","Klarna",["USD","EUR","GBP","SEK","NOK","DKK","CHF","AUD","CAD","NZD","PLN"],t)}function ut(t){return G("coinbase-commerce","Coinbase Commerce",["BTC","ETH","USDC","USDT","USD","EUR"],t)}const mt={mock:()=>new Qe,stripe:()=>We(),paypal:()=>Ve(),adyen:()=>et(),square:()=>tt(),mollie:()=>rt(),braintree:()=>nt(),razorpay:()=>at(),payu:()=>ct(),przelewy24:()=>st(),tpay:()=>it(),autopay:()=>ot(),blik:()=>lt(),klarna:()=>dt(),"coinbase-commerce":()=>ut()};function Et(t){const e=mt[t];return e?e().supportedCurrencies:"*"}function Tt(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}],me=Object.fromEntries(Ot.map(t=>{const{currencyKey:e,...r}=t,a={...r,supportedCurrencies:Et(e??t.id),webhookPath:Tt(t.id)};return[t.id,a]})),pt=Object.values(me);function qt(t){return me[t]}function Ft(t,e){const r=o.useMemo(()=>"amount"in t?t:Q(t.major,t.currency),[]),[a,c]=o.useState(r),s=o.useCallback(h=>c(p=>Q(h,p.currency)),[]),l=o.useCallback(h=>{c(p=>({...p,currency:h.toUpperCase()}))},[]),i=o.useCallback(h=>c(p=>oe(p,h)),[]),d=o.useCallback(h=>c(p=>Ke(p,h)),[]),u=o.useCallback(h=>c(p=>fe(p,h)),[]),y=o.useMemo(()=>W(a,{locale:e}),[a,e]),x=o.useMemo(()=>ke(a),[a]);return{money:a,setMoney:c,setMajor:s,setCurrency:l,add:i,subtract:d,scale:u,formatted:y,major:x}}function _e(t,e,r){const[a,c]=o.useState(null),[s,l]=o.useState(null),[i,d]=o.useState(!1),u=o.useRef(0);return o.useEffect(()=>{if(!t){c(null);return}const y=++u.current;d(!0),l(null),Xe(t,e,r).then(x=>{u.current===y&&c(x)}).catch(x=>{u.current===y&&(l(x instanceof Error?x:new Error(String(x))),c(null))}).finally(()=>{u.current===y&&d(!1)})},[t==null?void 0:t.amount,t==null?void 0:t.currency,e,r]),{converted:a,loading:i,error:s}}function yt(t){const[e,r]=o.useState("idle"),[a,c]=o.useState(null),[s,l]=o.useState(null),i=o.useCallback(()=>{r("idle"),c(null),l(null)},[]),d=o.useCallback(async h=>{r("authorizing"),l(null);try{const p=await t.authorize(h);return c(p),r(p.status),p}catch(p){const _=p instanceof Error?p:new Error(String(p));throw l(_),r("failed"),_}},[t]),u=o.useCallback(async(h,p)=>{const _=h??(a==null?void 0:a.id);if(!_)throw new Error("No authorization id to capture");r("capturing");try{const b=await t.capture(_,p);return c(b),r(b.status),b}catch(b){const f=b instanceof Error?b:new Error(String(b));throw l(f),r("failed"),f}},[t,a==null?void 0:a.id]),y=o.useCallback(async h=>{const p=h??(a==null?void 0:a.id);if(!p)throw new Error("No payment id to cancel");const _=await t.cancel(p);return c(_),r(_.status),_},[t,a==null?void 0:a.id]),x=o.useCallback(async(h,p)=>{const _=h??(a==null?void 0:a.id);if(!_)throw new Error("No payment id to refund");const b=await t.refund(_,p);return c(b),r(b.status),b},[t,a==null?void 0:a.id]);return{status:e,response:a,error:s,authorize:d,capture:u,cancel:y,refund:x,reset:i}}const ve=o.forwardRef(function({value:e,amount:r,currency:a,locale:c,display:s="symbol",highlightNegative:l=!0,zeroPlaceholder:i,convertTo:d,exchangeProvider:u,className:y,style:x,"aria-label":h},p){const _=o.useMemo(()=>{if(e)return e;if(r!=null&&a){const v=J(a),k=(v==null?void 0:v.decimals)??2;return{amount:Math.round(r*Math.pow(10,k)),currency:a.toUpperCase()}}return null},[e,r,a]),b=o.useMemo(()=>_?_.amount===0&&i!=null?i:W(_,{locale:c,currencyDisplay:s}):"",[_,c,s,i]),{converted:f}=_e(d&&u?_:null,d??"",u);if(!_)return null;const g=_.amount<0,S="nice-money"+(l&&g?" nice-money--negative":"")+(y?` ${y}`:"");return n.jsxs("span",{ref:p,className:S,style:x,"aria-label":h,children:[n.jsx("span",{className:"nice-money__value",children:b}),f&&n.jsxs("span",{className:"nice-money__converted","aria-label":`Converted to ${f.currency}`,children:[" ≈ ",W(f,{locale:c})]})]})}),Kt=de.map(t=>t.code).sort(),Pe=o.forwardRef(function({value:e,onChange:r,options:a=de,recents:c=[],searchable:s,showCode:l=!0,showSymbol:i=!0,compact:d=!1,disabled:u,readOnly:y,loading:x,accessMode:h,label:p,helperText:_,error:b,required:f,size:g="md",labelPlacement:S="top",labelWidth:v,controlWidth:k,className:A,style:E,id:C,name:M,title:N,"data-testid":K,"aria-label":T,placeholder:z},L){const U=h==="hidden",Y=u||h==="disabled"||x,V=y||h==="readOnly",O=o.useId(),ee=C??`nice-cs-${O}`,[B,m]=o.useState(""),w=s??a.length>8,$=o.useMemo(()=>{if(!B.trim())return a;const D=B.trim().toLowerCase();return a.filter(I=>I.code.toLowerCase().includes(D)||I.name.toLowerCase().includes(D)||I.symbol.toLowerCase().includes(D))},[a,B]),P=o.useMemo(()=>{const D=new Set;return c.map(I=>J(I)).filter(I=>!!I&&!D.has(I.code)&&!!D.add(I.code))},[c]),te=o.useCallback(D=>{const I=D.target.value,ae=J(I);ae&&(r==null||r(I,ae))},[r]),re=D=>{if(d)return`${i?D.symbol+" ":""}${D.code}`;const I=[];return i&&I.push(D.symbol),l&&I.push(D.code),I.push("—",D.name),I.join(" ")},j=`nice-currency-selector nice-currency-selector--${g} nice-currency-selector--label-${S}`+(d?" nice-currency-selector--compact":"")+(b?" nice-currency-selector--error":"")+(Y?" nice-currency-selector--disabled":"")+(A?` ${A}`:""),q=S==="left"&&v!=null?{width:typeof v=="number"?`${v}px`:v,flex:"none"}:void 0,ne=k!=null?{width:typeof k=="number"?`${k}px`:k,flex:"none"}:void 0;return U?null:n.jsxs("div",{ref:L,className:j,style:E,title:N,"data-testid":K,children:[p&&n.jsxs("label",{htmlFor:ee,className:"nice-currency-selector__label",style:q,children:[p,f&&n.jsx("span",{className:"nice-currency-selector__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-currency-selector__inner",style:ne,children:[w&&n.jsx("input",{type:"search",className:"nice-currency-selector__search",placeholder:"Search currency…",value:B,onChange:D=>m(D.target.value),disabled:Y||V,"aria-label":"Search currency"}),n.jsxs("select",{id:ee,name:M,className:"nice-currency-selector__select",value:e??"",onChange:te,disabled:Y||V,required:f,"aria-invalid":!!b,"aria-label":T??(typeof p=="string"?p:"Currency"),children:[!e&&n.jsx("option",{value:"",children:z??"Select currency…"}),P.length>0&&n.jsx("optgroup",{label:"Recent",children:P.map(D=>n.jsx("option",{value:D.code,children:re(D)},`r-${D.code}`))}),n.jsx("optgroup",{label:P.length>0?"All":"",children:$.map(D=>n.jsx("option",{value:D.code,children:re(D)},D.code))})]})]}),(b||_)&&n.jsx("span",{className:b?"nice-currency-selector__error":"nice-currency-selector__helper",children:b??_})]})}),De=o.forwardRef(function({value:e,onChange:r,currency:a,onCurrencyChange:c,currencies:s,hideCurrencySelector:l,min:i,max:d,step:u,locale:y,placeholder:x,label:h,helperText:p,error:_,size:b="md",disabled:f,readOnly:g,required:S,loading:v,accessMode:k,labelPlacement:A="top",errorPlacement:E="bottom",labelWidth:C,controlWidth:M,submitOnEnter:N,onSubmit:K,showFormattedPreview:T=!0,showSteppers:z=!1,className:L,style:U,id:Y,name:V,title:O,"data-testid":ee,onBlur:B,onFocus:m,liveGrouping:w,multiplierShortcuts:$=!0,onValidationError:P},te){const re=f||k==="disabled"||v,j=g||k==="readOnly",q=k==="hidden",ne=o.useId(),D=Y??`nice-money-${ne}`,I=((e==null?void 0:e.currency)??a??"USD").toUpperCase(),ae=J(I),Z=(ae==null?void 0:ae.decimals)??2,Se=u??1/Math.pow(10,Z),[ge,ye]=o.useState(()=>e?(e.amount/Math.pow(10,Z)).toFixed(Z):""),[he,Ie]=o.useState(!1);o.useEffect(()=>{if(he)return;if(e==null){ye("");return}const R=J(e.currency),H=(R==null?void 0:R.decimals)??2;ye((e.amount/Math.pow(10,H)).toFixed(H))},[e,he]);const Re=o.useCallback(R=>{let H=R;if($){const se=R.trim().match(/^([+-]?\d+(?:[.,]\d+)?)\s*([kKmMbB])$/);if(se){const ie=se[2].toLowerCase()==="k"?1e3:se[2].toLowerCase()==="m"?1e6:1e9,Ee=Number(se[1].replace(",","."))*ie;if(!Number.isFinite(Ee)){P==null||P(new Error("overflow"));return}H=String(Ee)}}const X=Be(H,I);if(!X){r==null||r(null);return}if(!Number.isSafeInteger(X.amount)){P==null||P(new Error("overflow: amount exceeds Number.MAX_SAFE_INTEGER"));return}const ce=X.amount/Math.pow(10,Z);if(i!=null&&ce<i){P==null||P(new Error(`min: ${i}`)),r==null||r(Q(i,I));return}if(d!=null&&ce>d){P==null||P(new Error(`max: ${d}`)),r==null||r(Q(d,I));return}r==null||r(X)},[I,Z,i,d,r,$,P]),bt=o.useCallback(R=>{const H=R.target.value;ye(H),Re(H)},[Re]),$e=o.useCallback(R=>{const X=(e?e.amount/Math.pow(10,Z):0)+R,ce=Math.min(d??1/0,Math.max(i??-1/0,X));r==null||r(Q(ce,I))},[e,Z,i,d,I,r]),be=o.useMemo(()=>{var R,H;try{const X=new Intl.NumberFormat(y).formatToParts(12345.6),ce=((R=X.find(ie=>ie.type==="group"))==null?void 0:R.value)??",",se=((H=X.find(ie=>ie.type==="decimal"))==null?void 0:H.value)??".";return{group:ce,decimal:se}}catch{return{group:",",decimal:"."}}},[y]),Ae=w??!!be.group,ft=o.useMemo(()=>{if(!Ae||he===!1)return ge;const R=be.decimal,H=be.group,X=ge.replace(new RegExp(`[${H.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}]`,"g"),""),[ce,se]=X.split(R);if(!ce)return X;const ie=ce.replace(/\B(?=(\d{3})+(?!\d))/g,H);return se!=null?`${ie}${R}${se}`:ie},[ge,he,Ae,be]),Ue=o.useMemo(()=>e?W(e,{locale:y}):"",[e,y]),ue=typeof _=="string"?_:void 0,_t=`nice-money-input nice-money-input--${b} nice-money-input--label-${A} nice-money-input--error-${E}`+(ue?" nice-money-input--error":"")+(re?" nice-money-input--disabled":"")+(v?" nice-money-input--loading":"")+(L?` ${L}`:""),xt=R=>{N&&R.key==="Enter"&&K&&(R.preventDefault(),K())},gt=A==="left"&&C!=null?{width:typeof C=="number"?`${C}px`:C,flex:"none"}:void 0,Nt=M!=null?{width:typeof M=="number"?`${M}px`:M,flex:"none"}:void 0;return q?null:n.jsxs("div",{ref:te,className:_t,style:U,title:O,"data-testid":ee,children:[h&&n.jsxs("label",{htmlFor:D,className:"nice-money-input__label",style:gt,children:[h,S&&n.jsx("span",{className:"nice-money-input__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-money-input__row",style:Nt,children:[!l&&n.jsx(Pe,{value:I,compact:!0,options:s?s.map(J).filter(R=>!!R):void 0,onChange:R=>c==null?void 0:c(R),disabled:re||j,className:"nice-money-input__currency","aria-label":"Currency"}),l&&n.jsx("span",{className:"nice-money-input__symbol","aria-hidden":!0,children:(ae==null?void 0:ae.symbol)??I}),z&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--down",onClick:()=>$e(-Se),disabled:re||j||i!=null&&e!=null&&e.amount/Math.pow(10,Z)<=i,"aria-label":"Decrease amount",tabIndex:-1,children:"−"}),n.jsx("input",{id:D,name:V,type:"text",inputMode:"decimal",autoComplete:"transaction-amount",className:"nice-money-input__amount",value:ft,onChange:bt,onKeyDown:xt,onFocus:R=>{Ie(!0),m==null||m(R)},onBlur:R=>{Ie(!1),e&&ye((e.amount/Math.pow(10,Z)).toFixed(Z)),B==null||B(R)},placeholder:x??`0${Z>0?"."+"0".repeat(Z):""}`,disabled:re,readOnly:j,required:S,"aria-invalid":!!ue,"aria-describedby":ue||p?`${D}-help`:void 0}),z&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--up",onClick:()=>$e(Se),disabled:re||j||d!=null&&e!=null&&e.amount/Math.pow(10,Z)>=d,"aria-label":"Increase amount",tabIndex:-1,children:"+"}),v&&n.jsx("span",{className:"nice-money-input__spinner","aria-hidden":!0,children:"⟳"})]}),T&&Ue&&n.jsx("span",{className:"nice-money-input__preview","aria-live":"polite",children:Ue}),(ue||p)&&n.jsx("span",{id:`${D}-help`,className:ue?"nice-money-input__error":"nice-money-input__helper",children:ue??p})]})}),Bt={number:"",expiry:"",cvc:""},ht=o.forwardRef(function({value:e=Bt,onChange:r,showHolderName:a=!0,requireHolderName:c,showPostalCode:s=!1,acceptedBrands:l,showBrandIcon:i=!0,size:d="md",disabled:u,readOnly:y,loading:x,accessMode:h,label:p,helperText:_,error:b,required:f,className:g,style:S,id:v,title:k,"data-testid":A},E){const C=h==="hidden",M=u||h==="disabled"||x,N=y||h==="readOnly",K=o.useId(),T=v??`nice-cc-${K}`,[z,L]=o.useState({number:!1,expiry:!1,cvc:!1,holder:!1,postal:!1}),U=o.useMemo(()=>pe(e.number),[e.number]),Y=o.useMemo(()=>Ne(e,{requireHolder:c??a}),[e,c,a]),V=!l||l.includes(U)||U==="unknown",O=o.useCallback(j=>{const q={...e,...j},ne=Ne(q,{requireHolder:c??a});r==null||r(q,ne)},[e,c,a,r]),ee=o.useCallback(j=>{const q=j.target.value.replace(/\D/g,"").slice(0,19);O({number:q})},[O]),B=o.useCallback(j=>{const q=j.target.value.replace(/\D/g,"").slice(0,4);let ne=q;q.length>=3?ne=`${q.slice(0,2)}/${q.slice(2)}`:q.length===2&&(ne=`${q}/`),O({expiry:ne})},[O]),m=o.useCallback(j=>{const q=j.target.value.replace(/\D/g,"").slice(0,le(U));O({cvc:q})},[U,O]),w=o.useMemo(()=>Le(e.number,U),[e.number,U]),$=z.number&&e.number.length>0&&(Ce(e.number)?V?void 0:"Card brand not accepted":Y.errors.number),P=z.expiry&&e.expiry.length>0&&!Me(e.expiry)?Y.errors.expiry:void 0,te=z.cvc&&e.cvc.length>0&&e.cvc.length!==le(U)?Y.errors.cvc:void 0,re=`nice-credit-card nice-credit-card--${d}`+(M?" nice-credit-card--disabled":"")+(x?" nice-credit-card--loading":"")+(b?" nice-credit-card--error":"")+(g?` ${g}`:"");return C?null:n.jsxs("div",{ref:E,className:re,style:S,title:k,"data-testid":A,children:[p&&n.jsxs("div",{className:"nice-credit-card__title",children:[p,f&&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:"Card number"}),n.jsxs("span",{className:"nice-credit-card__input-wrapper",children:[n.jsx("input",{id:`${T}-number`,type:"text",inputMode:"numeric",autoComplete:"cc-number",placeholder:U==="amex"?"3782 822463 10005":"1234 1234 1234 1234",value:w,onChange:ee,onBlur:()=>L(j=>({...j,number:!0})),disabled:M,readOnly:N,"aria-invalid":!!$,"aria-describedby":$?`${T}-number-err`:void 0,className:"nice-credit-card__input",maxLength:U==="amex"?17:23}),i&&n.jsx(Lt,{brand:U})]}),$&&n.jsx("span",{id:`${T}-number-err`,className:"nice-credit-card__error",children:$})]})}),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:"Expiry"}),n.jsx("input",{id:`${T}-expiry`,type:"text",inputMode:"numeric",autoComplete:"cc-exp",placeholder:"MM/YY",value:e.expiry,onChange:B,onBlur:()=>{L(q=>({...q,expiry:!0}));const j=je(e.expiry);j&&j!==e.expiry&&O({expiry:j})},disabled:M,readOnly:N,"aria-invalid":!!P,"aria-describedby":P?`${T}-expiry-err`:void 0,className:"nice-credit-card__input",maxLength:5}),P&&n.jsx("span",{id:`${T}-expiry-err`,className:"nice-credit-card__error",children:P})]}),n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:U==="amex"?"CID":"CVC"}),n.jsx("input",{id:`${T}-cvc`,type:"text",inputMode:"numeric",autoComplete:"cc-csc",placeholder:"•".repeat(le(U)),value:e.cvc,onChange:m,onBlur:()=>L(j=>({...j,cvc:!0})),disabled:M,readOnly:N,"aria-invalid":!!te,"aria-describedby":te?`${T}-cvc-err`:void 0,className:"nice-credit-card__input",maxLength:le(U)}),te&&n.jsx("span",{id:`${T}-cvc-err`,className:"nice-credit-card__error",children:te})]})]}),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:"Cardholder name"}),n.jsx("input",{id:`${T}-holder`,type:"text",autoComplete:"cc-name",placeholder:"Jane Doe",value:e.holderName??"",onChange:j=>O({holderName:j.target.value}),onBlur:()=>L(j=>({...j,holder:!0})),disabled:M,readOnly:N,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:"Postal code"}),n.jsx("input",{id:`${T}-postal`,type:"text",autoComplete:"postal-code",value:e.postalCode??"",onChange:j=>O({postalCode:j.target.value}),onBlur:()=>L(j=>({...j,postal:!0})),disabled:M,readOnly:N,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 Lt({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:l,metadata:i,autoCapture:d=!0,submitLabel:u="Pay",onSuccess:y,onError:x,consents:h,className:p,style:_},b){const[f,g]=o.useState(r),[S,v]=o.useState(r.currency),[k,A]=o.useState({number:"",expiry:"",cvc:""}),[E,C]=o.useState(null),[M,N]=o.useState(!1),[K,T]=o.useState(null),z=yt(e),L=o.useMemo(()=>e.supportedCurrencies==="*"?!0:e.supportedCurrencies.includes(f.currency.toUpperCase()),[e,f.currency]),U=o.useMemo(()=>{var w;const m=(w=e.minimums)==null?void 0:w[f.currency.toUpperCase()];return m==null||f.amount>=m},[e,f]),Y=o.useMemo(()=>{var w;const m=(w=e.minimums)==null?void 0:w[f.currency.toUpperCase()];return m==null?null:{amount:m,currency:f.currency}},[e,f.currency]),V=!!(E!=null&&E.isValid),O=!M&&L&&U&&V,ee=o.useCallback(async m=>{if(m.preventDefault(),!!O){T(null),N(!0);try{const w={amount:f,card:k,customer:c,description:l,metadata:i,idempotencyKey:zt()},$=await z.authorize(w);if(d&&$.status==="authorized"){const P=await z.capture($.id,f);y==null||y(P)}else y==null||y($)}catch(w){const $=w instanceof Error?w:new Error(String(w));T($.message),x==null||x($)}finally{N(!1)}}},[O,f,k,c,l,i,d,z,y,x]),B=J(f.currency);return n.jsxs("form",{ref:b,className:"nice-payment-form"+(p?` ${p}`:""),style:_,onSubmit:ee,"aria-busy":M,children:[n.jsx("div",{className:"nice-payment-form__amount",children:a?n.jsx(De,{label:"Amount",value:f,currency:S,currencies:s,onChange:m=>m&&g(m),onCurrencyChange:m=>{v(m),g(w=>({...w,currency:m}))},disabled:M,required:!0,showFormattedPreview:!0}):n.jsxs("div",{className:"nice-payment-form__total",children:[n.jsx("span",{className:"nice-payment-form__total-label",children:"Total"}),n.jsx(ve,{value:f})]})}),l&&n.jsx("p",{className:"nice-payment-form__description",children:l}),n.jsx("div",{className:"nice-payment-form__card",children:n.jsx(ht,{value:k,onChange:(m,w)=>{A(m),C(w)},disabled:M})}),!L&&n.jsxs("div",{className:"nice-payment-form__warning",role:"alert",children:[e.name," does not accept ",(B==null?void 0:B.name)??f.currency,"."]}),!U&&Y&&n.jsxs("div",{className:"nice-payment-form__warning",role:"alert",children:["Minimum charge for ",e.name," is ",n.jsx(ve,{value:Y}),"."]}),h&&n.jsx("div",{className:"nice-payment-form__consents",children:h}),K&&n.jsx("div",{className:"nice-payment-form__error",role:"alert",children:K}),n.jsx("button",{type:"submit",className:"nice-payment-form__submit",disabled:!O,"aria-disabled":!O,children:M?"Processing…":u}),n.jsxs("p",{className:"nice-payment-form__processor",children:["Secured by ",n.jsx("strong",{children:e.name})]})]})});function zt(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`idem_${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`}const Yt=o.forwardRef(function({price:e,originalPrice:r,period:a,prefix:c,suffix:s,showDiscountBadge:l=!0,size:i="md",locale:d,className:u,style:y},x){const h=r&&r.currency===e.currency&&r.amount>e.amount,p=o.useMemo(()=>!h||!r?null:Math.round((r.amount-e.amount)/r.amount*100),[h,r,e.amount]),_=`nice-price-tag nice-price-tag--${i}`+(u?` ${u}`:"");return n.jsxs("div",{ref:x,className:_,style:y,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:W(e,{locale:d})}),a&&n.jsx("span",{className:"nice-price-tag__period",children:a})]}),h&&r&&n.jsx("span",{className:"nice-price-tag__original","aria-label":"Original price",children:n.jsx("s",{children:W(r,{locale:d})})}),h&&l&&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})]})}),Gt=o.forwardRef(function({source:e,onSourceChange:r,targetCurrency:a,onTargetCurrencyChange:c,provider:s,locale:l,showRateLine:i=!0,className:d,style:u},y){const{converted:x,loading:h,error:p}=_e(e,a,s),_=o.useMemo(()=>({amount:Math.pow(10,2),currency:e.currency}),[e.currency]),{converted:b}=_e(i?_:null,a,s);return n.jsxs("div",{ref:y,className:"nice-currency-converter"+(d?` ${d}`:""),style:u,children:[n.jsx("div",{className:"nice-currency-converter__row",children:n.jsx(De,{label:"From",value:e,onChange:f=>f&&r(f),currency:e.currency,onCurrencyChange:f=>r({...e,currency:f}),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(Pe,{value:a,onChange:f=>c(f),compact:!0}),n.jsx("span",{className:"nice-currency-converter__amount",children:h?"…":p?"—":x?W(x,{locale:l}):""})]})]}),i&&b&&n.jsxs("p",{className:"nice-currency-converter__rate",children:["1 ",e.currency," = ",W(b,{locale:l})," ",n.jsxs("span",{className:"nice-currency-converter__inverse",children:["· 1 ",a," ="," ",W(Q(1/ke(b),e.currency),{locale:l})]})]}),p&&n.jsx("p",{className:"nice-currency-converter__error",role:"alert",children:p.message})]})});function qe(t){return{amount:Math.round(t.amount),currency:t.currency}}const Zt=o.forwardRef(function({lines:e,locale:r,rounding:a="line",showTotals:c=!0,showGrandTotal:s=!0,hideRateColumn:l=!1,labels:i,density:d="comfortable",className:u,style:y,id:x},h){const p={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"},_=o.useMemo(()=>{if(a==="total"){const g=new Map;for(const v of e){let k=g.get(v.vatRate);k||(k=[],g.set(v.vatRate,k)),k.push(v.netAmount)}const S=[];for(const[v,k]of g){const A=k.reduce((M,N)=>oe(M,N),Q(0,k[0].currency)),E=qe(fe(A,v)),C=oe(A,E);S.push({rate:v,net:A,vat:E,gross:C})}return S}return e.map(g=>{const S=qe(fe(g.netAmount,g.vatRate)),v=oe(g.netAmount,S);return{label:g.label,rate:g.vatRate,net:g.netAmount,vat:S,gross:v}})},[e,a]),b=o.useMemo(()=>{if(_.length===0)return null;const g=_[0].net.currency;let S=Q(0,g),v=Q(0,g),k=Q(0,g);for(const A of _)S=oe(S,A.net),v=oe(v,A.vat),k=oe(k,A.gross);return{net:S,vat:v,gross:k}},[_]),f=g=>W(g,{locale:r});return n.jsxs("table",{ref:h,id:x,className:`nice-tax-breakdown nice-tax-breakdown--${d} ${u??""}`,style:y,role:"table","aria-label":p.total,children:[n.jsx("thead",{children:n.jsxs("tr",{children:[_.some(g=>g.label!==void 0)&&n.jsx("th",{scope:"col",children:p.label}),!l&&n.jsx("th",{scope:"col",className:"nice-tax-breakdown__rate",children:p.rate}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:p.net}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:p.vat}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:p.gross})]})}),n.jsx("tbody",{children:_.map((g,S)=>n.jsxs("tr",{children:[_.some(v=>v.label!==void 0)&&n.jsx("td",{children:g.label??""}),!l&&n.jsxs("td",{className:"nice-tax-breakdown__rate",children:[(g.rate*100).toLocaleString(r,{maximumFractionDigits:2}),"%"]}),n.jsx("td",{className:"nice-tax-breakdown__num",children:f(g.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:f(g.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:f(g.gross)})]},`${g.rate}-${S}`))}),c&&b&&n.jsx("tfoot",{children:s&&n.jsxs("tr",{className:"nice-tax-breakdown__totals",children:[_.some(g=>g.label!==void 0)&&n.jsx("td",{children:p.total}),!l&&n.jsx("td",{}),n.jsx("td",{className:"nice-tax-breakdown__num",children:f(b.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:f(b.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:f(b.gross)})]})})]})}),Jt=o.forwardRef(function(e,r){const{methods:a,value:c,onChange:s,layout:l="list",columns:i=2,currency:d,label:u,name:y,readOnly:x=!1,className:h,style:p,id:_,accessMode:b,"data-testid":f}=e,g=o.useId(),S=y??`nice-pm-${g}`,v=o.useMemo(()=>{if(!d)return a;const C=d.toUpperCase();return a.filter(M=>!M.currencies||M.currencies.map(N=>N.toUpperCase()).includes(C))},[a,d]);if(b==="hidden")return null;const k=x||b==="disabled"||b==="readOnly",A=`nice-payment-method-selector nice-payment-method-selector--${l}`+(h?` ${h}`:""),E=l==="grid"?{gridTemplateColumns:`repeat(${i}, minmax(0, 1fr))`}:void 0;return n.jsxs("div",{ref:r,id:_,className:A,style:p,"data-testid":f,children:[u&&n.jsx("div",{className:"nice-payment-method-selector__label",children:u}),n.jsxs("div",{className:"nice-payment-method-selector__options",style:E,role:"radiogroup","aria-label":u??"Payment method",children:[v.map(C=>{const M=C.id===c,N=k||C.disabled;return n.jsxs("label",{className:"nice-payment-method-selector__option"+(M?" nice-payment-method-selector__option--selected":"")+(N?" nice-payment-method-selector__option--disabled":""),children:[n.jsx("input",{type:"radio",className:"nice-payment-method-selector__radio",name:S,value:C.id,checked:M,disabled:N,onChange:()=>s==null?void 0:s(C.id)}),C.icon&&n.jsx("span",{className:"nice-payment-method-selector__icon",children:C.icon}),n.jsxs("span",{className:"nice-payment-method-selector__text",children:[n.jsx("span",{className:"nice-payment-method-selector__name",children:C.label}),C.description&&n.jsx("span",{className:"nice-payment-method-selector__desc",children:C.description})]})]},C.id)}),v.length===0&&n.jsx("div",{className:"nice-payment-method-selector__empty",children:"No methods available."})]})]})}),Xt=[{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"}],Qt=o.forwardRef(function(e,r){const{value:a,onChange:c,providers:s,onTestConnection:l,showWebhookUrl:i=!0,baseUrl:d,readOnly:u=!1,testLabel:y="Test connection",tutorial:x,className:h,style:p,id:_,accessMode:b,"data-testid":f}=e,g=o.useId(),[S,v]=o.useState(new Set),[k,A]=o.useState(!1),[E,C]=o.useState(null),M=o.useMemo(()=>s?s.map(m=>me[m]).filter(m=>!!m):pt,[s]),N=me[a.providerId];if(b==="hidden")return null;const K=u||b==="disabled"||b==="readOnly",T=m=>{C(null),v(new Set),c({providerId:m,mode:a.mode,credentials:{},enabledMethods:[]})},z=(m,w)=>{c({...a,credentials:{...a.credentials,[m]:w}})},L=m=>{const w=new Set(a.enabledMethods??[]);w.has(m)?w.delete(m):w.add(m),c({...a,enabledMethods:[...w]})},U=m=>{v(w=>{const $=new Set(w);return $.has(m)?$.delete(m):$.add(m),$})},Y=async()=>{if(l){A(!0),C(null);try{C(await l(a))}catch(m){C({ok:!1,message:m instanceof Error?m.message:String(m)})}finally{A(!1)}}},V=N!=null&&N.webhookPath?`${(d??"").replace(/\/$/,"")}${N.webhookPath}`:"",O=(N==null?void 0:N.supportedCurrencies)==="*"?"All currencies":((N==null?void 0:N.supportedCurrencies)??[]).join(", "),ee="nice-payment-provider-config"+(h?` ${h}`:""),B=((N==null?void 0:N.credentials)??[]).filter(m=>!m.testOnly||a.mode==="test");return n.jsxs("div",{ref:r,id:_,className:ee,style:p,"data-testid":f,children:[x&&n.jsx("div",{className:"nice-payment-provider-config__tutorial",children:n.jsx(Te.NiceTutorialButton,{steps:Te.resolveTutorial(x,Xt)})}),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:"Provider"}),n.jsxs("select",{className:"nice-payment-provider-config__select",value:a.providerId,disabled:K,onChange:m=>T(m.target.value),children:[n.jsx("option",{value:"",children:"— select provider —"}),M.map(m=>n.jsx("option",{value:m.id,children:m.name},m.id))]})]}),(N==null?void 0:N.hasTestMode)&&n.jsxs("div",{className:"nice-payment-provider-config__mode",role:"group","aria-label":"Mode",children:[n.jsx("button",{type:"button",className:"nice-payment-provider-config__mode-btn"+(a.mode==="test"?" nice-payment-provider-config__mode-btn--active":""),onClick:()=>c({...a,mode:"test"}),disabled:K,children:"Test"}),n.jsx("button",{type:"button",className:"nice-payment-provider-config__mode-btn"+(a.mode==="live"?" nice-payment-provider-config__mode-btn--active":""),onClick:()=>c({...a,mode:"live"}),disabled:K,children:"Live"})]})]}),N&&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:N.type}),n.jsx("span",{className:"nice-payment-provider-config__currencies",children:O})]}),n.jsx("div",{className:"nice-payment-provider-config__credentials",children:B.map(m=>{const w=`${g}-${m.key}`,$=m.secret,P=S.has(m.key);return n.jsxs("div",{className:"nice-payment-provider-config__field",children:[n.jsxs("label",{className:"nice-payment-provider-config__field-label",htmlFor:w,children:[m.label,m.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:w,type:$&&!P?"password":"text",className:"nice-payment-provider-config__input",value:a.credentials[m.key]??"",readOnly:K,autoComplete:$?"new-password":"off",onChange:te=>z(m.key,te.target.value)}),$&&n.jsx("button",{type:"button",className:"nice-payment-provider-config__reveal",onClick:()=>U(m.key),"aria-label":P?"Hide":"Reveal","aria-pressed":P,children:P?"🙈":"👁"})]}),m.help&&n.jsx("span",{className:"nice-payment-provider-config__help",children:m.help})]},m.key)})}),N.supportedMethods&&N.supportedMethods.length>0&&n.jsxs("div",{className:"nice-payment-provider-config__methods",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:"Enabled methods"}),n.jsx("div",{className:"nice-payment-provider-config__method-list",children:N.supportedMethods.map(m=>n.jsxs("label",{className:"nice-payment-provider-config__method",children:[n.jsx("input",{type:"checkbox",checked:(a.enabledMethods??[]).includes(m),disabled:K,onChange:()=>L(m)}),m]},m))})]}),i&&N.webhookPath&&n.jsxs("div",{className:"nice-payment-provider-config__field",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:"Webhook URL"}),n.jsx("code",{className:"nice-payment-provider-config__webhook",children:V})]}),l&&n.jsxs("div",{className:"nice-payment-provider-config__test",children:[n.jsx("button",{type:"button",className:"nice-payment-provider-config__test-btn",onClick:()=>void Y(),disabled:K||k,children:k?"Testing…":y}),E&&n.jsxs("span",{className:"nice-payment-provider-config__test-result nice-payment-provider-config__test-result--"+(E.ok?"ok":"error"),children:[E.ok?"✓":"✕"," ",E.message??(E.ok?"OK":"Failed")]})]})]})]})});exports.EcbRatesProvider=Ze;exports.ExchangeRateHostProvider=Ye;exports.FrankfurterProvider=He;exports.FreeForexApiProvider=Je;exports.MockPaymentProcessor=Qe;exports.NICE_CURRENCY_CATALOG=de;exports.NICE_CURRENCY_CODES=Kt;exports.NICE_PAYMENT_PROCESSORS=mt;exports.NICE_PAYMENT_PROVIDER_LIST=pt;exports.NICE_PAYMENT_PROVIDER_PROFILES=me;exports.NbpRatesProvider=Ge;exports.NiceCreditCardInput=ht;exports.NiceCurrencyConverter=Gt;exports.NiceCurrencySelector=Pe;exports.NiceMoney=ve;exports.NiceMoneyInput=De;exports.NicePaymentForm=Ht;exports.NicePaymentMethodSelector=Jt;exports.NicePaymentProviderConfig=Qt;exports.NicePriceTag=Yt;exports.NiceTaxBreakdown=Zt;exports.OpenExchangeRatesProvider=ze;exports.StaticExchangeRateProvider=It;exports.addMoney=oe;exports.compareMoney=jt;exports.convertMoney=Xe;exports.createEcbRatesProvider=$t;exports.createFreeForexApiProvider=Ut;exports.createNbpRatesProvider=Rt;exports.createOpenExchangeRatesProvider=At;exports.detectCardBrand=pe;exports.expectedCvcLength=le;exports.findCurrency=J;exports.findPaymentProviderProfile=qt;exports.formatCardNumber=Le;exports.formatMoney=W;exports.fromMoney=ke;exports.isExpiryValid=Me;exports.isNegative=Pt;exports.isZero=Mt;exports.luhnCheck=Ce;exports.makeAdyenAdapter=et;exports.makeAutopayAdapter=ot;exports.makeBlikAdapter=lt;exports.makeBraintreeAdapter=nt;exports.makeCoinbaseCommerceAdapter=ut;exports.makeKlarnaAdapter=dt;exports.makeMollieAdapter=rt;exports.makePayPalAdapter=Ve;exports.makePayUAdapter=ct;exports.makePrzelewy24Adapter=st;exports.makeRazorpayAdapter=at;exports.makeSquareAdapter=tt;exports.makeStripeAdapter=We;exports.makeTpayAdapter=it;exports.maskCardNumber=St;exports.multiplyMoney=fe;exports.negateMoney=Dt;exports.normaliseExpiry=je;exports.parseMoney=Be;exports.registerCurrency=wt;exports.subtractMoney=Ke;exports.toMoney=Q;exports.useNiceExchangeRate=_e;exports.useNiceMoney=Ft;exports.useNicePayment=yt;exports.validateCreditCard=Ne;
1
+ "use strict";var vt=Object.defineProperty;var kt=(t,e,r)=>e in t?vt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var z=(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"),le=require("@nice2dev/ui-core"),ue=[{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}],Fe=new Map(ue.map(t=>[t.code,t]));function X(t){return Fe.get(t.toUpperCase())}function wt(t){Fe.set(t.code.toUpperCase(),t);const e=ue.findIndex(r=>r.code===t.code);e>=0?ue[e]=t:ue.push(t)}function W(t,e){const r=X(e),c=(r==null?void 0:r.decimals)??2,a=Math.pow(10,c);return{amount:(t<0?-1:1)*Math.round(Math.abs(t)*a),currency:e.toUpperCase()}}function we(t){const e=X(t.currency),r=(e==null?void 0:e.decimals)??2;return t.amount/Math.pow(10,r)}function Ct(t,e){return t.currency.toUpperCase()===e.currency.toUpperCase()}function Ce(t,e,r){if(!Ct(t,e))throw new Error(`Cannot ${r} different currencies: ${t.currency} vs ${e.currency}`)}function oe(t,e){return Ce(t,e,"add"),{amount:t.amount+e.amount,currency:t.currency}}function Ke(t,e){return Ce(t,e,"subtract"),{amount:t.amount-e.amount,currency:t.currency}}function _e(t,e){return{amount:(t.amount*e<0?-1:1)*Math.round(Math.abs(t.amount*e)),currency:t.currency}}function jt(t,e){return Ce(t,e,"compare"),t.amount-e.amount}function Mt(t){return t.amount===0}function Pt(t){return t.amount<0}function St(t){return{amount:-t.amount,currency:t.currency}}function ee(t,e={}){const r=X(t.currency),c=e.decimals??(r==null?void 0:r.decimals)??2,a=t.amount/Math.pow(10,c);try{return new Intl.NumberFormat(e.locale,{style:"currency",currency:t.currency,minimumFractionDigits:c,maximumFractionDigits:c,currencyDisplay:e.currencyDisplay??"symbol"}).format(a)}catch{const s=(r==null?void 0:r.symbol)??t.currency,m=a.toFixed(c);return r!=null&&r.symbolFirst?`${s}${m}`:`${m} ${s}`}}function Be(t,e){if(!t)return null;let r=t.replace(/[^\d.,\-]/g,"").trim();if(!r||r==="-")return null;const c=r.startsWith("-");c&&(r=r.slice(1));const a=r.lastIndexOf("."),s=r.lastIndexOf(","),m=Math.max(a,s);let i,l="";m===-1?i=r:(i=r.slice(0,m).replace(/[.,]/g,""),l=r.slice(m+1).replace(/[.,]/g,""));const d=`${i}.${l||"0"}`,y=parseFloat(d);return Number.isFinite(y)?W(c?-y:y,e):null}function ye(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 je(t){const e=(t||"").replace(/\D/g,"");if(e.length<12||e.length>19)return!1;let r=0,c=!1;for(let a=e.length-1;a>=0;a--){let s=e.charCodeAt(a)-48;c&&(s*=2,s>9&&(s-=9)),r+=s,c=!c}return r%10===0}function Le(t,e){const r=(t||"").replace(/\D/g,""),c=e??ye(r);return c==="amex"?[r.slice(0,4),r.slice(4,10),r.slice(10,15)].filter(Boolean).join(" "):c==="diners"?[r.slice(0,4),r.slice(4,10),r.slice(10,14)].filter(Boolean).join(" "):(r.match(/.{1,4}/g)??[]).join(" ").trim()}function Dt(t,e){const r=(t||"").replace(/\D/g,"");if(r.length<4)return r;const c=r.slice(-4),a="*".repeat(r.length-4)+c,s=e??ye(r);return s==="amex"?[a.slice(0,4),a.slice(4,10),a.slice(10,15)].filter(Boolean).join(" "):s==="diners"?[a.slice(0,4),a.slice(4,10),a.slice(10,14)].filter(Boolean).join(" "):(a.match(/.{1,4}/g)??[]).join(" ").trim()}function Me(t){const e=(t||"").replace(/\D/g,"");if(e.length<3)return null;const r=e.slice(0,2),c=e.length>=4?e.slice(-2):e.slice(2,4),a=parseInt(r,10);return!Number.isFinite(a)||a<1||a>12?null:`${r}/${c}`}function Pe(t,e=new Date){const r=Me(t);if(!r)return!1;const[c,a]=r.split("/"),s=parseInt(c,10),m=2e3+parseInt(a,10);return new Date(m,s,0,23,59,59,999).getTime()>=e.getTime()}function de(t){return t==="amex"?4:3}function ve(t,e={}){var d;const r={},c=ye(t.number),a=je(t.number);a||(r.number="Invalid card number");const s=Pe(t.expiry,e.now);s||(r.expiry="Invalid or expired");const i=(t.cvc||"").replace(/\D/g,"").length===de(c);i||(r.cvc=`CVC must be ${de(c)} digits`);const l=!e.requireHolder||(((d=t.holderName)==null?void 0:d.trim().length)??0)>=2;return l||(r.holderName="Cardholder name required"),{brand:c,numberValid:a,expiryValid:s,cvcValid:i,holderValid:l,isValid:a&&s&&i&&l,errors:r}}class It{constructor(e){z(this,"id","static");this.rates=e}async getRate(e,r){const c=e.toUpperCase(),a=r.toUpperCase();if(c===a)return{base:c,quote:a,rate:1,asOf:new Date().toISOString()};const s=this.rates.find(d=>d.base===c&&d.quote===a);if(s)return s;const m=this.rates.find(d=>d.base===a&&d.quote===c);if(m)return{base:c,quote:a,rate:1/m.rate,asOf:m.asOf};const i=this.rates.find(d=>d.base===c&&d.quote==="USD")??this.rates.find(d=>d.base==="USD"&&d.quote===c),l=this.rates.find(d=>d.base==="USD"&&d.quote===a)??this.rates.find(d=>d.base===a&&d.quote==="USD");if(i&&l){const d=i.base==="USD"?1/i.rate:i.rate,y=l.base==="USD"?l.rate:1/l.rate;return{base:c,quote:a,rate:d*y,asOf:new Date().toISOString()}}throw new Error(`No FX rate for ${c}/${a}`)}}class ge{constructor(e={}){z(this,"cache",new Map);z(this,"fetchImpl");z(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 c=this.cacheKey(e,r),a=this.cache.get(c);return a&&a.expires>Date.now()?a.rate:(a&&this.cache.delete(c),null)}setCached(e){this.cache.set(this.cacheKey(e.base,e.quote),{expires:Date.now()+this.ttl,rate:e})}}class ze extends ge{constructor(r={}){super(r);z(this,"id","frankfurter")}async getRate(r,c){const a=r.toUpperCase(),s=c.toUpperCase();if(a===s)return{base:a,quote:s,rate:1,asOf:new Date().toISOString()};const m=this.getCached(a,s);if(m)return m;const i=`https://api.frankfurter.app/latest?from=${a}&to=${s}`,l=await this.fetchImpl(i);if(!l.ok)throw new Error(`Frankfurter HTTP ${l.status}`);const d=await l.json(),y=d.rates[s];if(y==null)throw new Error(`Frankfurter: no rate for ${a}/${s}`);const g={base:a,quote:s,rate:y,asOf:d.date};return this.setCached(g),g}}class He extends ge{constructor(r,c={}){super(c);z(this,"id","openexchangerates");this.appId=r}async getRate(r,c){const a=r.toUpperCase(),s=c.toUpperCase();if(a===s)return{base:a,quote:s,rate:1,asOf:new Date().toISOString()};const m=this.getCached(a,s);if(m)return m;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(),y=d.rates[a],g=d.rates[s];if(y==null||g==null)throw new Error(`OpenExchangeRates: missing rate for ${a} or ${s}`);const h={base:a,quote:s,rate:g/y,asOf:new Date(d.timestamp*1e3).toISOString()};return this.setCached(h),h}}class Ye extends ge{constructor(r={}){super(r);z(this,"id","exchangerate.host")}async getRate(r,c){var h;const a=r.toUpperCase(),s=c.toUpperCase();if(a===s)return{base:a,quote:s,rate:1,asOf:new Date().toISOString()};const m=this.getCached(a,s);if(m)return m;const i=`https://api.exchangerate.host/convert?from=${a}&to=${s}`,l=await this.fetchImpl(i);if(!l.ok)throw new Error(`exchangerate.host HTTP ${l.status}`);const d=await l.json(),y=((h=d.info)==null?void 0:h.rate)??d.result,g={base:a,quote:s,rate:y,asOf:d.date};return this.setCached(g),g}}class Ge extends ge{constructor(r={}){super(r);z(this,"id","nbp");z(this,"table");this.table=r.table??"A"}async getRate(r,c){const a=r.toUpperCase(),s=c.toUpperCase();if(a===s)return{base:a,quote:s,rate:1,asOf:new Date().toISOString()};const m=this.getCached(a,s);if(m)return m;const i=async g=>{var x;if(g==="PLN")return{rate:1,date:new Date().toISOString().slice(0,10)};const h=`https://api.nbp.pl/api/exchangerates/rates/${this.table}/${g}/?format=json`,u=await this.fetchImpl(h);if(!u.ok)return null;const f=(x=(await u.json()).rates)==null?void 0:x[0];return f?{rate:f.mid??f.ask??0,date:f.effectiveDate}:null},l=await i(a),d=await i(s);if(!l||!d||l.rate===0)throw new Error(`NBP: missing rate for ${a} or ${s}`);const y={base:a,quote:s,rate:l.rate/d.rate,asOf:l.date};return this.setCached(y),y}}class Ze extends ze{constructor(){super(...arguments);z(this,"id","ecb")}}class Je extends Ye{constructor(){super(...arguments);z(this,"id","free-forex")}}const Rt=(t={})=>new Ge(t),$t=(t={})=>new Ze(t),At=t=>new He(t.apiKey,t),Ut=(t={})=>new Je(t);async function Ve(t,e,r){const c=e.toUpperCase();if(t.currency.toUpperCase()===c)return t;const a=X(t.currency),s=X(c),m=(a==null?void 0:a.decimals)??2,i=(s==null?void 0:s.decimals)??2,{rate:l}=await r.getRate(t.currency,c),y=t.amount/Math.pow(10,m)*l;return{currency:c,amount:Math.round(y*Math.pow(10,i))}}class Xe{constructor(e={}){z(this,"id");z(this,"name");z(this,"supportedCurrencies");z(this,"minimums");z(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 J(t,e,r,c,a){const s=m=>{const i=c==null?void 0:c[m];return i||(async()=>{throw new Error(`[ui-money] ${e} adapter is not wired. Pass an \`executor.${String(m)}\` implementation that calls the ${e} SDK.`)})};return{id:t,name:e,supportedCurrencies:r,minimums:a,authorize:s("authorize"),capture:s("capture"),cancel:s("cancel"),refund:s("refund")}}function Qe(t){return J("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 We(t){return J("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 et(t){return J("adyen","Adyen","*",t)}function tt(t){return J("square","Square",["USD","CAD","GBP","AUD","JPY","EUR"],t)}function rt(t){return J("mollie","Mollie","*",t)}function nt(t){return J("braintree","Braintree","*",t)}function at(t){return J("razorpay","Razorpay",["INR","USD","EUR","GBP","AED"],t)}function ct(t){return J("payu","PayU",["PLN","EUR","USD","CZK","HUF","RON","BGN","TRY"],t)}function st(t){return J("przelewy24","Przelewy24",["PLN","EUR"],t)}function it(t={}){return J("tpay","Tpay",["PLN","EUR","USD","GBP"],t)}function ot(t={}){return J("autopay","Autopay",["PLN","EUR","USD","GBP","CZK"],t)}function lt(t={}){const{acquirer:e="native",...r}=t;return J(`blik:${e}`,`BLIK (${e})`,["PLN"],r)}function dt(t){return J("klarna","Klarna",["USD","EUR","GBP","SEK","NOK","DKK","CHF","AUD","CAD","NZD","PLN"],t)}function ut(t){return J("coinbase-commerce","Coinbase Commerce",["BTC","ETH","USDC","USDT","USD","EUR"],t)}const mt={mock:()=>new Xe,stripe:()=>Qe(),paypal:()=>We(),adyen:()=>et(),square:()=>tt(),mollie:()=>rt(),braintree:()=>nt(),razorpay:()=>at(),payu:()=>ct(),przelewy24:()=>st(),tpay:()=>it(),autopay:()=>ot(),blik:()=>lt(),klarna:()=>dt(),"coinbase-commerce":()=>ut()};function Et(t){const e=mt[t];return e?e().supportedCurrencies:"*"}function Tt(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}],pe=Object.fromEntries(Ot.map(t=>{const{currencyKey:e,...r}=t,c={...r,supportedCurrencies:Et(e??t.id),webhookPath:Tt(t.id)};return[t.id,c]})),pt=Object.values(pe);function qt(t){return pe[t]}function Ft(t,e){const r=o.useMemo(()=>"amount"in t?t:W(t.major,t.currency),[]),[c,a]=o.useState(r),s=o.useCallback(h=>a(u=>W(h,u.currency)),[]),m=o.useCallback(h=>{a(u=>({...u,currency:h.toUpperCase()}))},[]),i=o.useCallback(h=>a(u=>oe(u,h)),[]),l=o.useCallback(h=>a(u=>Ke(u,h)),[]),d=o.useCallback(h=>a(u=>_e(u,h)),[]),y=o.useMemo(()=>ee(c,{locale:e}),[c,e]),g=o.useMemo(()=>we(c),[c]);return{money:c,setMoney:a,setMajor:s,setCurrency:m,add:i,subtract:l,scale:d,formatted:y,major:g}}function xe(t,e,r){const[c,a]=o.useState(null),[s,m]=o.useState(null),[i,l]=o.useState(!1),d=o.useRef(0);return o.useEffect(()=>{if(!t){a(null);return}const y=++d.current;l(!0),m(null),Ve(t,e,r).then(g=>{d.current===y&&a(g)}).catch(g=>{d.current===y&&(m(g instanceof Error?g:new Error(String(g))),a(null))}).finally(()=>{d.current===y&&l(!1)})},[t==null?void 0:t.amount,t==null?void 0:t.currency,e,r]),{converted:c,loading:i,error:s}}function yt(t){const[e,r]=o.useState("idle"),[c,a]=o.useState(null),[s,m]=o.useState(null),i=o.useCallback(()=>{r("idle"),a(null),m(null)},[]),l=o.useCallback(async h=>{r("authorizing"),m(null);try{const u=await t.authorize(h);return a(u),r(u.status),u}catch(u){const b=u instanceof Error?u:new Error(String(u));throw m(b),r("failed"),b}},[t]),d=o.useCallback(async(h,u)=>{const b=h??(c==null?void 0:c.id);if(!b)throw new Error("No authorization id to capture");r("capturing");try{const f=await t.capture(b,u);return a(f),r(f.status),f}catch(f){const x=f instanceof Error?f:new Error(String(f));throw m(x),r("failed"),x}},[t,c==null?void 0:c.id]),y=o.useCallback(async h=>{const u=h??(c==null?void 0:c.id);if(!u)throw new Error("No payment id to cancel");const b=await t.cancel(u);return a(b),r(b.status),b},[t,c==null?void 0:c.id]),g=o.useCallback(async(h,u)=>{const b=h??(c==null?void 0:c.id);if(!b)throw new Error("No payment id to refund");const f=await t.refund(b,u);return a(f),r(f.status),f},[t,c==null?void 0:c.id]);return{status:e,response:c,error:s,authorize:l,capture:d,cancel:y,refund:g,reset:i}}const ke=o.forwardRef(function({value:e,amount:r,currency:c,locale:a,display:s="symbol",highlightNegative:m=!0,zeroPlaceholder:i,convertTo:l,exchangeProvider:d,className:y,style:g,"aria-label":h},u){const b=o.useMemo(()=>{if(e)return e;if(r!=null&&c){const N=X(c),C=(N==null?void 0:N.decimals)??2;return{amount:Math.round(r*Math.pow(10,C)),currency:c.toUpperCase()}}return null},[e,r,c]),f=o.useMemo(()=>b?b.amount===0&&i!=null?i:ee(b,{locale:a,currencyDisplay:s}):"",[b,a,s,i]),{converted:x}=xe(l&&d?b:null,l??"",d);if(!b)return null;const _=b.amount<0,v="nice-money"+(m&&_?" nice-money--negative":"")+(y?` ${y}`:"");return n.jsxs("span",{ref:u,className:v,style:g,"aria-label":h,children:[n.jsx("span",{className:"nice-money__value",children:f}),x&&n.jsxs("span",{className:"nice-money__converted","aria-label":`Converted to ${x.currency}`,children:[" ≈ ",ee(x,{locale:a})]})]})}),Kt=ue.map(t=>t.code).sort(),Se=o.forwardRef(function({value:e,onChange:r,options:c=ue,recents:a=[],searchable:s,showCode:m=!0,showSymbol:i=!0,compact:l=!1,disabled:d,readOnly:y,loading:g,accessMode:h,label:u,helperText:b,error:f,required:x,size:_="md",labelPlacement:v="top",labelWidth:N,controlWidth:C,className:I,style:A,id:P,name:j,title:R,"data-testid":G,"aria-label":O,placeholder:k},q){const E=h==="hidden",Z=d||h==="disabled"||g,te=y||h==="readOnly",F=o.useId(),re=P??`nice-cs-${F}`,[H,$]=o.useState(""),U=s??c.length>8,L=o.useMemo(()=>{if(!H.trim())return c;const M=H.trim().toLowerCase();return c.filter(S=>S.code.toLowerCase().includes(M)||S.name.toLowerCase().includes(M)||S.symbol.toLowerCase().includes(M))},[c,H]),p=o.useMemo(()=>{const M=new Set;return a.map(S=>X(S)).filter(S=>!!S&&!M.has(S.code)&&!!M.add(S.code))},[a]),K=o.useCallback(M=>{const S=M.target.value,ae=X(S);ae&&(r==null||r(S,ae))},[r]),B=M=>{if(l)return`${i?M.symbol+" ":""}${M.code}`;const S=[];return i&&S.push(M.symbol),m&&S.push(M.code),S.push("—",M.name),S.join(" ")},w=`nice-currency-selector nice-currency-selector--${_} nice-currency-selector--label-${v}`+(l?" nice-currency-selector--compact":"")+(f?" nice-currency-selector--error":"")+(Z?" nice-currency-selector--disabled":"")+(I?` ${I}`:""),T=v==="left"&&N!=null?{width:typeof N=="number"?`${N}px`:N,flex:"none"}:void 0,ne=C!=null?{width:typeof C=="number"?`${C}px`:C,flex:"none"}:void 0;return E?null:n.jsxs("div",{ref:q,className:w,style:A,title:R,"data-testid":G,children:[u&&n.jsxs("label",{htmlFor:re,className:"nice-currency-selector__label",style:T,children:[u,x&&n.jsx("span",{className:"nice-currency-selector__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-currency-selector__inner",style:ne,children:[U&&n.jsx("input",{type:"search",className:"nice-currency-selector__search",placeholder:"Search currency…",value:H,onChange:M=>$(M.target.value),disabled:Z||te,"aria-label":"Search currency"}),n.jsxs("select",{id:re,name:j,className:"nice-currency-selector__select",value:e??"",onChange:K,disabled:Z||te,required:x,"aria-invalid":!!f,"aria-label":O??(typeof u=="string"?u:"Currency"),children:[!e&&n.jsx("option",{value:"",children:k??"Select currency…"}),p.length>0&&n.jsx("optgroup",{label:"Recent",children:p.map(M=>n.jsx("option",{value:M.code,children:B(M)},`r-${M.code}`))}),n.jsx("optgroup",{label:p.length>0?"All":"",children:L.map(M=>n.jsx("option",{value:M.code,children:B(M)},M.code))})]})]}),(f||b)&&n.jsx("span",{className:f?"nice-currency-selector__error":"nice-currency-selector__helper",children:f??b})]})}),De=o.forwardRef(function({value:e,onChange:r,currency:c,onCurrencyChange:a,currencies:s,hideCurrencySelector:m,min:i,max:l,step:d,locale:y,placeholder:g,label:h,helperText:u,error:b,size:f="md",disabled:x,readOnly:_,required:v,loading:N,accessMode:C,labelPlacement:I="top",errorPlacement:A="bottom",labelWidth:P,controlWidth:j,submitOnEnter:R,onSubmit:G,showFormattedPreview:O=!0,showSteppers:k=!1,className:q,style:E,id:Z,name:te,title:F,"data-testid":re,onBlur:H,onFocus:$,liveGrouping:U,multiplierShortcuts:L=!0,onValidationError:p},K){const B=x||C==="disabled"||N,w=_||C==="readOnly",T=C==="hidden",ne=o.useId(),M=Z??`nice-money-${ne}`,S=((e==null?void 0:e.currency)??c??"USD").toUpperCase(),ae=X(S),V=(ae==null?void 0:ae.decimals)??2,Ie=d??1/Math.pow(10,V),[Ne,he]=o.useState(()=>e?(e.amount/Math.pow(10,V)).toFixed(V):""),[be,Re]=o.useState(!1);o.useEffect(()=>{if(be)return;if(e==null){he("");return}const D=X(e.currency),Y=(D==null?void 0:D.decimals)??2;he((e.amount/Math.pow(10,Y)).toFixed(Y))},[e,be]);const $e=o.useCallback(D=>{let Y=D;if(L){const se=D.trim().match(/^([+-]?\d+(?:[.,]\d+)?)\s*([kKmMbB])$/);if(se){const ie=se[2].toLowerCase()==="k"?1e3:se[2].toLowerCase()==="m"?1e6:1e9,Te=Number(se[1].replace(",","."))*ie;if(!Number.isFinite(Te)){p==null||p(new Error("overflow"));return}Y=String(Te)}}const Q=Be(Y,S);if(!Q){r==null||r(null);return}if(!Number.isSafeInteger(Q.amount)){p==null||p(new Error("overflow: amount exceeds Number.MAX_SAFE_INTEGER"));return}const ce=Q.amount/Math.pow(10,V);if(i!=null&&ce<i){p==null||p(new Error(`min: ${i}`)),r==null||r(W(i,S));return}if(l!=null&&ce>l){p==null||p(new Error(`max: ${l}`)),r==null||r(W(l,S));return}r==null||r(Q)},[S,V,i,l,r,L,p]),bt=o.useCallback(D=>{const Y=D.target.value;he(Y),$e(Y)},[$e]),Ae=o.useCallback(D=>{const Q=(e?e.amount/Math.pow(10,V):0)+D,ce=Math.min(l??1/0,Math.max(i??-1/0,Q));r==null||r(W(ce,S))},[e,V,i,l,S,r]),fe=o.useMemo(()=>{var D,Y;try{const Q=new Intl.NumberFormat(y).formatToParts(12345.6),ce=((D=Q.find(ie=>ie.type==="group"))==null?void 0:D.value)??",",se=((Y=Q.find(ie=>ie.type==="decimal"))==null?void 0:Y.value)??".";return{group:ce,decimal:se}}catch{return{group:",",decimal:"."}}},[y]),Ue=U??!!fe.group,ft=o.useMemo(()=>{if(!Ue||be===!1)return Ne;const D=fe.decimal,Y=fe.group,Q=Ne.replace(new RegExp(`[${Y.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}]`,"g"),""),[ce,se]=Q.split(D);if(!ce)return Q;const ie=ce.replace(/\B(?=(\d{3})+(?!\d))/g,Y);return se!=null?`${ie}${D}${se}`:ie},[Ne,be,Ue,fe]),Ee=o.useMemo(()=>e?ee(e,{locale:y}):"",[e,y]),me=typeof b=="string"?b:void 0,_t=`nice-money-input nice-money-input--${f} nice-money-input--label-${I} nice-money-input--error-${A}`+(me?" nice-money-input--error":"")+(B?" nice-money-input--disabled":"")+(N?" nice-money-input--loading":"")+(q?` ${q}`:""),xt=D=>{R&&D.key==="Enter"&&G&&(D.preventDefault(),G())},gt=I==="left"&&P!=null?{width:typeof P=="number"?`${P}px`:P,flex:"none"}:void 0,Nt=j!=null?{width:typeof j=="number"?`${j}px`:j,flex:"none"}:void 0;return T?null:n.jsxs("div",{ref:K,className:_t,style:E,title:F,"data-testid":re,children:[h&&n.jsxs("label",{htmlFor:M,className:"nice-money-input__label",style:gt,children:[h,v&&n.jsx("span",{className:"nice-money-input__required","aria-hidden":!0,children:"*"})]}),n.jsxs("div",{className:"nice-money-input__row",style:Nt,children:[!m&&n.jsx(Se,{value:S,compact:!0,options:s?s.map(X).filter(D=>!!D):void 0,onChange:D=>a==null?void 0:a(D),disabled:B||w,className:"nice-money-input__currency","aria-label":"Currency"}),m&&n.jsx("span",{className:"nice-money-input__symbol","aria-hidden":!0,children:(ae==null?void 0:ae.symbol)??S}),k&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--down",onClick:()=>Ae(-Ie),disabled:B||w||i!=null&&e!=null&&e.amount/Math.pow(10,V)<=i,"aria-label":"Decrease amount",tabIndex:-1,children:"−"}),n.jsx("input",{id:M,name:te,type:"text",inputMode:"decimal",autoComplete:"transaction-amount",className:"nice-money-input__amount",value:ft,onChange:bt,onKeyDown:xt,onFocus:D=>{Re(!0),$==null||$(D)},onBlur:D=>{Re(!1),e&&he((e.amount/Math.pow(10,V)).toFixed(V)),H==null||H(D)},placeholder:g??`0${V>0?"."+"0".repeat(V):""}`,disabled:B,readOnly:w,required:v,"aria-invalid":!!me,"aria-describedby":me||u?`${M}-help`:void 0}),k&&n.jsx("button",{type:"button",className:"nice-money-input__step nice-money-input__step--up",onClick:()=>Ae(Ie),disabled:B||w||l!=null&&e!=null&&e.amount/Math.pow(10,V)>=l,"aria-label":"Increase amount",tabIndex:-1,children:"+"}),N&&n.jsx("span",{className:"nice-money-input__spinner","aria-hidden":!0,children:n.jsx(le.NiceIcon,{name:"refresh",size:14})})]}),O&&Ee&&n.jsx("span",{className:"nice-money-input__preview","aria-live":"polite",children:Ee}),(me||u)&&n.jsx("span",{id:`${M}-help`,className:me?"nice-money-input__error":"nice-money-input__helper",children:me??u})]})}),Bt={number:"",expiry:"",cvc:""},ht=o.forwardRef(function({value:e=Bt,onChange:r,showHolderName:c=!0,requireHolderName:a,showPostalCode:s=!1,acceptedBrands:m,showBrandIcon:i=!0,size:l="md",disabled:d,readOnly:y,loading:g,accessMode:h,label:u,helperText:b,error:f,required:x,className:_,style:v,id:N,title:C,"data-testid":I},A){const P=h==="hidden",j=d||h==="disabled"||g,R=y||h==="readOnly",G=o.useId(),O=N??`nice-cc-${G}`,[k,q]=o.useState({number:!1,expiry:!1,cvc:!1,holder:!1,postal:!1}),E=o.useMemo(()=>ye(e.number),[e.number]),Z=o.useMemo(()=>ve(e,{requireHolder:a??c}),[e,a,c]),te=!m||m.includes(E)||E==="unknown",F=o.useCallback(w=>{const T={...e,...w},ne=ve(T,{requireHolder:a??c});r==null||r(T,ne)},[e,a,c,r]),re=o.useCallback(w=>{const T=w.target.value.replace(/\D/g,"").slice(0,19);F({number:T})},[F]),H=o.useCallback(w=>{const T=w.target.value.replace(/\D/g,"").slice(0,4);let ne=T;T.length>=3?ne=`${T.slice(0,2)}/${T.slice(2)}`:T.length===2&&(ne=`${T}/`),F({expiry:ne})},[F]),$=o.useCallback(w=>{const T=w.target.value.replace(/\D/g,"").slice(0,de(E));F({cvc:T})},[E,F]),U=o.useMemo(()=>Le(e.number,E),[e.number,E]),L=k.number&&e.number.length>0&&(je(e.number)?te?void 0:"Card brand not accepted":Z.errors.number),p=k.expiry&&e.expiry.length>0&&!Pe(e.expiry)?Z.errors.expiry:void 0,K=k.cvc&&e.cvc.length>0&&e.cvc.length!==de(E)?Z.errors.cvc:void 0,B=`nice-credit-card nice-credit-card--${l}`+(j?" nice-credit-card--disabled":"")+(g?" nice-credit-card--loading":"")+(f?" nice-credit-card--error":"")+(_?` ${_}`:"");return P?null:n.jsxs("div",{ref:A,className:B,style:v,title:C,"data-testid":I,children:[u&&n.jsxs("div",{className:"nice-credit-card__title",children:[u,x&&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:"Card number"}),n.jsxs("span",{className:"nice-credit-card__input-wrapper",children:[n.jsx("input",{id:`${O}-number`,type:"text",inputMode:"numeric",autoComplete:"cc-number",placeholder:E==="amex"?"3782 822463 10005":"1234 1234 1234 1234",value:U,onChange:re,onBlur:()=>q(w=>({...w,number:!0})),disabled:j,readOnly:R,"aria-invalid":!!L,"aria-describedby":L?`${O}-number-err`:void 0,className:"nice-credit-card__input",maxLength:E==="amex"?17:23}),i&&n.jsx(Lt,{brand:E})]}),L&&n.jsx("span",{id:`${O}-number-err`,className:"nice-credit-card__error",children:L})]})}),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:"Expiry"}),n.jsx("input",{id:`${O}-expiry`,type:"text",inputMode:"numeric",autoComplete:"cc-exp",placeholder:"MM/YY",value:e.expiry,onChange:H,onBlur:()=>{q(T=>({...T,expiry:!0}));const w=Me(e.expiry);w&&w!==e.expiry&&F({expiry:w})},disabled:j,readOnly:R,"aria-invalid":!!p,"aria-describedby":p?`${O}-expiry-err`:void 0,className:"nice-credit-card__input",maxLength:5}),p&&n.jsx("span",{id:`${O}-expiry-err`,className:"nice-credit-card__error",children:p})]}),n.jsxs("label",{className:"nice-credit-card__field",children:[n.jsx("span",{className:"nice-credit-card__label",children:E==="amex"?"CID":"CVC"}),n.jsx("input",{id:`${O}-cvc`,type:"text",inputMode:"numeric",autoComplete:"cc-csc",placeholder:"•".repeat(de(E)),value:e.cvc,onChange:$,onBlur:()=>q(w=>({...w,cvc:!0})),disabled:j,readOnly:R,"aria-invalid":!!K,"aria-describedby":K?`${O}-cvc-err`:void 0,className:"nice-credit-card__input",maxLength:de(E)}),K&&n.jsx("span",{id:`${O}-cvc-err`,className:"nice-credit-card__error",children:K})]})]}),c&&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:"Cardholder name"}),n.jsx("input",{id:`${O}-holder`,type:"text",autoComplete:"cc-name",placeholder:"Jane Doe",value:e.holderName??"",onChange:w=>F({holderName:w.target.value}),onBlur:()=>q(w=>({...w,holder:!0})),disabled:j,readOnly:R,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:"Postal code"}),n.jsx("input",{id:`${O}-postal`,type:"text",autoComplete:"postal-code",value:e.postalCode??"",onChange:w=>F({postalCode:w.target.value}),onBlur:()=>q(w=>({...w,postal:!0})),disabled:j,readOnly:R,className:"nice-credit-card__input",maxLength:16})]})}),(f||b)&&n.jsx("div",{className:f?"nice-credit-card__form-error":"nice-credit-card__helper",role:f?"alert":void 0,children:f??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 Lt({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 zt=o.forwardRef(function({processor:e,amount:r,editableAmount:c,customer:a,currencies:s,description:m,metadata:i,autoCapture:l=!0,submitLabel:d="Pay",onSuccess:y,onError:g,consents:h,className:u,style:b},f){const[x,_]=o.useState(r),[v,N]=o.useState(r.currency),[C,I]=o.useState({number:"",expiry:"",cvc:""}),[A,P]=o.useState(null),[j,R]=o.useState(!1),[G,O]=o.useState(null),k=yt(e),q=o.useMemo(()=>e.supportedCurrencies==="*"?!0:e.supportedCurrencies.includes(x.currency.toUpperCase()),[e,x.currency]),E=o.useMemo(()=>{var U;const $=(U=e.minimums)==null?void 0:U[x.currency.toUpperCase()];return $==null||x.amount>=$},[e,x]),Z=o.useMemo(()=>{var U;const $=(U=e.minimums)==null?void 0:U[x.currency.toUpperCase()];return $==null?null:{amount:$,currency:x.currency}},[e,x.currency]),te=!!(A!=null&&A.isValid),F=!j&&q&&E&&te,re=o.useCallback(async $=>{if($.preventDefault(),!!F){O(null),R(!0);try{const U={amount:x,card:C,customer:a,description:m,metadata:i,idempotencyKey:Ht()},L=await k.authorize(U);if(l&&L.status==="authorized"){const p=await k.capture(L.id,x);y==null||y(p)}else y==null||y(L)}catch(U){const L=U instanceof Error?U:new Error(String(U));O(L.message),g==null||g(L)}finally{R(!1)}}},[F,x,C,a,m,i,l,k,y,g]),H=X(x.currency);return n.jsxs("form",{ref:f,className:"nice-payment-form"+(u?` ${u}`:""),style:b,onSubmit:re,"aria-busy":j,children:[n.jsx("div",{className:"nice-payment-form__amount",children:c?n.jsx(De,{label:"Amount",value:x,currency:v,currencies:s,onChange:$=>$&&_($),onCurrencyChange:$=>{N($),_(U=>({...U,currency:$}))},disabled:j,required:!0,showFormattedPreview:!0}):n.jsxs("div",{className:"nice-payment-form__total",children:[n.jsx("span",{className:"nice-payment-form__total-label",children:"Total"}),n.jsx(ke,{value:x})]})}),m&&n.jsx("p",{className:"nice-payment-form__description",children:m}),n.jsx("div",{className:"nice-payment-form__card",children:n.jsx(ht,{value:C,onChange:($,U)=>{I($),P(U)},disabled:j})}),!q&&n.jsxs("div",{className:"nice-payment-form__warning",role:"alert",children:[e.name," does not accept ",(H==null?void 0:H.name)??x.currency,"."]}),!E&&Z&&n.jsxs("div",{className:"nice-payment-form__warning",role:"alert",children:["Minimum charge for ",e.name," is ",n.jsx(ke,{value:Z}),"."]}),h&&n.jsx("div",{className:"nice-payment-form__consents",children:h}),G&&n.jsx("div",{className:"nice-payment-form__error",role:"alert",children:G}),n.jsx("button",{type:"submit",className:"nice-payment-form__submit",disabled:!F,"aria-disabled":!F,children:j?"Processing…":d}),n.jsxs("p",{className:"nice-payment-form__processor",children:["Secured by ",n.jsx("strong",{children:e.name})]})]})});function Ht(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`idem_${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`}const Yt=o.forwardRef(function({price:e,originalPrice:r,period:c,prefix:a,suffix:s,showDiscountBadge:m=!0,size:i="md",locale:l,className:d,style:y},g){const h=r&&r.currency===e.currency&&r.amount>e.amount,u=o.useMemo(()=>!h||!r?null:Math.round((r.amount-e.amount)/r.amount*100),[h,r,e.amount]),b=`nice-price-tag nice-price-tag--${i}`+(d?` ${d}`:"");return n.jsxs("div",{ref:g,className:b,style:y,children:[a&&n.jsx("span",{className:"nice-price-tag__prefix",children:a}),n.jsxs("span",{className:"nice-price-tag__main",children:[n.jsx("span",{className:"nice-price-tag__amount",children:ee(e,{locale:l})}),c&&n.jsx("span",{className:"nice-price-tag__period",children:c})]}),h&&r&&n.jsx("span",{className:"nice-price-tag__original","aria-label":"Original price",children:n.jsx("s",{children:ee(r,{locale:l})})}),h&&m&&u!=null&&u>0&&n.jsxs("span",{className:"nice-price-tag__discount","aria-label":`${u} percent off`,children:["−",u,"%"]}),s&&n.jsx("span",{className:"nice-price-tag__suffix",children:s})]})}),Gt={amount:0,currency:"USD"},Zt=o.forwardRef(function({source:e,defaultSource:r,onSourceChange:c,targetCurrency:a,defaultTargetCurrency:s,onTargetCurrencyChange:m,provider:i,locale:l,showRateLine:d=!0,className:y,style:g},h){const[u,b]=le.useControllableState({value:e,defaultValue:r,fallbackValue:Gt,onChange:c,componentName:"NiceCurrencyConverter"}),[f,x]=le.useControllableState({value:a,defaultValue:s,fallbackValue:u.currency,onChange:m,componentName:"NiceCurrencyConverter"}),{converted:_,loading:v,error:N}=xe(u,f,i),C=o.useMemo(()=>({amount:Math.pow(10,2),currency:u.currency}),[u.currency]),{converted:I}=xe(d?C:null,f,i);return n.jsxs("div",{ref:h,className:"nice-currency-converter"+(y?` ${y}`:""),style:g,children:[n.jsx("div",{className:"nice-currency-converter__row",children:n.jsx(De,{label:"From",value:u,onChange:A=>A&&b(A),currency:u.currency,onCurrencyChange:A=>b({...u,currency:A}),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(Se,{value:f,onChange:A=>x(A),compact:!0}),n.jsx("span",{className:"nice-currency-converter__amount",children:v?"…":N?"—":_?ee(_,{locale:l}):""})]})]}),d&&I&&n.jsxs("p",{className:"nice-currency-converter__rate",children:["1 ",u.currency," = ",ee(I,{locale:l})," ",n.jsxs("span",{className:"nice-currency-converter__inverse",children:["· 1 ",f," ="," ",ee(W(1/we(I),u.currency),{locale:l})]})]}),N&&n.jsx("p",{className:"nice-currency-converter__error",role:"alert",children:N.message})]})});function qe(t){return{amount:Math.round(t.amount),currency:t.currency}}const Jt=o.forwardRef(function({lines:e,locale:r,rounding:c="line",showTotals:a=!0,showGrandTotal:s=!0,hideRateColumn:m=!1,labels:i,density:l="comfortable",className:d,style:y,id:g},h){const u={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"},b=o.useMemo(()=>{if(c==="total"){const _=new Map;for(const N of e){let C=_.get(N.vatRate);C||(C=[],_.set(N.vatRate,C)),C.push(N.netAmount)}const v=[];for(const[N,C]of _){const I=C.reduce((j,R)=>oe(j,R),W(0,C[0].currency)),A=qe(_e(I,N)),P=oe(I,A);v.push({rate:N,net:I,vat:A,gross:P})}return v}return e.map(_=>{const v=qe(_e(_.netAmount,_.vatRate)),N=oe(_.netAmount,v);return{label:_.label,rate:_.vatRate,net:_.netAmount,vat:v,gross:N}})},[e,c]),f=o.useMemo(()=>{if(b.length===0)return null;const _=b[0].net.currency;let v=W(0,_),N=W(0,_),C=W(0,_);for(const I of b)v=oe(v,I.net),N=oe(N,I.vat),C=oe(C,I.gross);return{net:v,vat:N,gross:C}},[b]),x=_=>ee(_,{locale:r});return n.jsxs("table",{ref:h,id:g,className:`nice-tax-breakdown nice-tax-breakdown--${l} ${d??""}`,style:y,role:"table","aria-label":u.total,children:[n.jsx("thead",{children:n.jsxs("tr",{children:[b.some(_=>_.label!==void 0)&&n.jsx("th",{scope:"col",children:u.label}),!m&&n.jsx("th",{scope:"col",className:"nice-tax-breakdown__rate",children:u.rate}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:u.net}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:u.vat}),n.jsx("th",{scope:"col",className:"nice-tax-breakdown__num",children:u.gross})]})}),n.jsx("tbody",{children:b.map((_,v)=>n.jsxs("tr",{children:[b.some(N=>N.label!==void 0)&&n.jsx("td",{children:_.label??""}),!m&&n.jsxs("td",{className:"nice-tax-breakdown__rate",children:[(_.rate*100).toLocaleString(r,{maximumFractionDigits:2}),"%"]}),n.jsx("td",{className:"nice-tax-breakdown__num",children:x(_.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:x(_.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:x(_.gross)})]},`${_.rate}-${v}`))}),a&&f&&n.jsx("tfoot",{children:s&&n.jsxs("tr",{className:"nice-tax-breakdown__totals",children:[b.some(_=>_.label!==void 0)&&n.jsx("td",{children:u.total}),!m&&n.jsx("td",{children:b.some(_=>_.label!==void 0)?null:u.total}),n.jsx("td",{className:"nice-tax-breakdown__num",children:x(f.net)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:x(f.vat)}),n.jsx("td",{className:"nice-tax-breakdown__num",children:x(f.gross)})]})})]})}),Vt=o.forwardRef(function(e,r){const{methods:c,value:a,onChange:s,layout:m="list",columns:i=2,currency:l,label:d,name:y,readOnly:g=!1,className:h,style:u,id:b,accessMode:f,"data-testid":x}=e,_=o.useId(),v=y??`nice-pm-${_}`,N=o.useMemo(()=>{if(!l)return c;const P=l.toUpperCase();return c.filter(j=>!j.currencies||j.currencies.map(R=>R.toUpperCase()).includes(P))},[c,l]);if(f==="hidden")return null;const C=g||f==="disabled"||f==="readOnly",I=`nice-payment-method-selector nice-payment-method-selector--${m}`+(h?` ${h}`:""),A=m==="grid"?{gridTemplateColumns:`repeat(${i}, minmax(0, 1fr))`}:void 0;return n.jsxs("div",{ref:r,id:b,className:I,style:u,"data-testid":x,children:[d&&n.jsx("div",{className:"nice-payment-method-selector__label",children:d}),n.jsxs("div",{className:"nice-payment-method-selector__options",style:A,role:"radiogroup","aria-label":d??"Payment method",children:[N.map(P=>{const j=P.id===a,R=C||P.disabled;return n.jsxs("label",{className:"nice-payment-method-selector__option"+(j?" nice-payment-method-selector__option--selected":"")+(R?" nice-payment-method-selector__option--disabled":""),children:[n.jsx("input",{type:"radio",className:"nice-payment-method-selector__radio",name:v,value:P.id,checked:j,disabled:R,onChange:()=>s==null?void 0:s(P.id)}),P.icon&&n.jsx("span",{className:"nice-payment-method-selector__icon",children:P.icon}),n.jsxs("span",{className:"nice-payment-method-selector__text",children:[n.jsx("span",{className:"nice-payment-method-selector__name",children:P.label}),P.description&&n.jsx("span",{className:"nice-payment-method-selector__desc",children:P.description})]})]},P.id)}),N.length===0&&n.jsx("div",{className:"nice-payment-method-selector__empty",children:"No methods available."})]})]})}),Xt=[{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"}],Qt={providerId:"",mode:"test",credentials:{},enabledMethods:[]},Wt=o.forwardRef(function(e,r){const{value:c,defaultValue:a,onChange:s,providers:m,onTestConnection:i,showWebhookUrl:l=!0,baseUrl:d,readOnly:y=!1,testLabel:g="Test connection",tutorial:h,className:u,style:b,id:f,accessMode:x,"data-testid":_}=e,[v,N]=le.useControllableState({value:c,defaultValue:a,fallbackValue:Qt,onChange:s,componentName:"NicePaymentProviderConfig"}),C=o.useId(),[I,A]=o.useState(new Set),[P,j]=o.useState(!1),[R,G]=o.useState(null),O=o.useMemo(()=>m?m.map(p=>pe[p]).filter(p=>!!p):pt,[m]),k=pe[v.providerId];if(x==="hidden")return null;const q=y||x==="disabled"||x==="readOnly",E=p=>{G(null),A(new Set),N({providerId:p,mode:v.mode,credentials:{},enabledMethods:[]})},Z=(p,K)=>{N({...v,credentials:{...v.credentials,[p]:K}})},te=p=>{const K=new Set(v.enabledMethods??[]);K.has(p)?K.delete(p):K.add(p),N({...v,enabledMethods:[...K]})},F=p=>{A(K=>{const B=new Set(K);return B.has(p)?B.delete(p):B.add(p),B})},re=async()=>{if(i){j(!0),G(null);try{G(await i(v))}catch(p){G({ok:!1,message:p instanceof Error?p.message:String(p)})}finally{j(!1)}}},H=k!=null&&k.webhookPath?`${(d??"").replace(/\/$/,"")}${k.webhookPath}`:"",$=(k==null?void 0:k.supportedCurrencies)==="*"?"All currencies":((k==null?void 0:k.supportedCurrencies)??[]).join(", "),U="nice-payment-provider-config"+(u?` ${u}`:""),L=((k==null?void 0:k.credentials)??[]).filter(p=>!p.testOnly||v.mode==="test");return n.jsxs("div",{ref:r,id:f,className:U,style:b,"data-testid":_,children:[h&&n.jsx("div",{className:"nice-payment-provider-config__tutorial",children:n.jsx(le.NiceTutorialButton,{steps:le.resolveTutorial(h,Xt)})}),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:"Provider"}),n.jsxs("select",{className:"nice-payment-provider-config__select",value:v.providerId,disabled:q,onChange:p=>E(p.target.value),children:[n.jsx("option",{value:"",children:"— select provider —"}),O.map(p=>n.jsx("option",{value:p.id,children:p.name},p.id))]})]}),(k==null?void 0:k.hasTestMode)&&n.jsxs("div",{className:"nice-payment-provider-config__mode",role:"group","aria-label":"Mode",children:[n.jsx("button",{type:"button",className:"nice-payment-provider-config__mode-btn"+(v.mode==="test"?" nice-payment-provider-config__mode-btn--active":""),onClick:()=>N({...v,mode:"test"}),disabled:q,children:"Test"}),n.jsx("button",{type:"button",className:"nice-payment-provider-config__mode-btn"+(v.mode==="live"?" nice-payment-provider-config__mode-btn--active":""),onClick:()=>N({...v,mode:"live"}),disabled:q,children:"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:$})]}),n.jsx("div",{className:"nice-payment-provider-config__credentials",children:L.map(p=>{const K=`${C}-${p.key}`,B=p.secret,w=I.has(p.key);return n.jsxs("div",{className:"nice-payment-provider-config__field",children:[n.jsxs("label",{className:"nice-payment-provider-config__field-label",htmlFor:K,children:[p.label,p.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:K,type:B&&!w?"password":"text",className:"nice-payment-provider-config__input",value:v.credentials[p.key]??"",readOnly:q,autoComplete:B?"new-password":"off",onChange:T=>Z(p.key,T.target.value)}),B&&n.jsx("button",{type:"button",className:"nice-payment-provider-config__reveal",onClick:()=>F(p.key),"aria-label":w?"Hide":"Reveal","aria-pressed":w,children:n.jsx(le.NiceIcon,{name:w?"eye-off":"eye",size:14})})]}),p.help&&n.jsx("span",{className:"nice-payment-provider-config__help",children:p.help})]},p.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:"Enabled methods"}),n.jsx("div",{className:"nice-payment-provider-config__method-list",children:k.supportedMethods.map(p=>n.jsxs("label",{className:"nice-payment-provider-config__method",children:[n.jsx("input",{type:"checkbox",checked:(v.enabledMethods??[]).includes(p),disabled:q,onChange:()=>te(p)}),p]},p))})]}),l&&k.webhookPath&&n.jsxs("div",{className:"nice-payment-provider-config__field",children:[n.jsx("span",{className:"nice-payment-provider-config__field-label",children:"Webhook URL"}),n.jsx("code",{className:"nice-payment-provider-config__webhook",children:H})]}),i&&n.jsxs("div",{className:"nice-payment-provider-config__test",children:[n.jsx("button",{type:"button",className:"nice-payment-provider-config__test-btn",onClick:()=>void re(),disabled:q||P,children:P?"Testing…":g}),R&&n.jsxs("span",{className:"nice-payment-provider-config__test-result nice-payment-provider-config__test-result--"+(R.ok?"ok":"error"),children:[n.jsx(le.NiceIcon,{name:R.ok?"check":"close",size:14})," ",R.message??(R.ok?"OK":"Failed")]})]})]})]})});exports.EcbRatesProvider=Ze;exports.ExchangeRateHostProvider=Ye;exports.FrankfurterProvider=ze;exports.FreeForexApiProvider=Je;exports.MockPaymentProcessor=Xe;exports.NICE_CURRENCY_CATALOG=ue;exports.NICE_CURRENCY_CODES=Kt;exports.NICE_PAYMENT_PROCESSORS=mt;exports.NICE_PAYMENT_PROVIDER_LIST=pt;exports.NICE_PAYMENT_PROVIDER_PROFILES=pe;exports.NbpRatesProvider=Ge;exports.NiceCreditCardInput=ht;exports.NiceCurrencyConverter=Zt;exports.NiceCurrencySelector=Se;exports.NiceMoney=ke;exports.NiceMoneyInput=De;exports.NicePaymentForm=zt;exports.NicePaymentMethodSelector=Vt;exports.NicePaymentProviderConfig=Wt;exports.NicePriceTag=Yt;exports.NiceTaxBreakdown=Jt;exports.OpenExchangeRatesProvider=He;exports.StaticExchangeRateProvider=It;exports.addMoney=oe;exports.compareMoney=jt;exports.convertMoney=Ve;exports.createEcbRatesProvider=$t;exports.createFreeForexApiProvider=Ut;exports.createNbpRatesProvider=Rt;exports.createOpenExchangeRatesProvider=At;exports.detectCardBrand=ye;exports.expectedCvcLength=de;exports.findCurrency=X;exports.findPaymentProviderProfile=qt;exports.formatCardNumber=Le;exports.formatMoney=ee;exports.fromMoney=we;exports.isExpiryValid=Pe;exports.isNegative=Pt;exports.isZero=Mt;exports.luhnCheck=je;exports.makeAdyenAdapter=et;exports.makeAutopayAdapter=ot;exports.makeBlikAdapter=lt;exports.makeBraintreeAdapter=nt;exports.makeCoinbaseCommerceAdapter=ut;exports.makeKlarnaAdapter=dt;exports.makeMollieAdapter=rt;exports.makePayPalAdapter=We;exports.makePayUAdapter=ct;exports.makePrzelewy24Adapter=st;exports.makeRazorpayAdapter=at;exports.makeSquareAdapter=tt;exports.makeStripeAdapter=Qe;exports.makeTpayAdapter=it;exports.maskCardNumber=Dt;exports.multiplyMoney=_e;exports.negateMoney=St;exports.normaliseExpiry=Me;exports.parseMoney=Be;exports.registerCurrency=wt;exports.subtractMoney=Ke;exports.toMoney=W;exports.useNiceExchangeRate=xe;exports.useNiceMoney=Ft;exports.useNicePayment=yt;exports.validateCreditCard=ve;