@reevit/react 0.4.8 → 0.4.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/dist/index.mjs CHANGED
@@ -56,61 +56,45 @@ function detectNetwork(phone) {
56
56
  }
57
57
  return null;
58
58
  }
59
- function createThemeVariables(theme) {
60
- const variables = {};
61
- if (theme.primaryColor) {
62
- variables["--reevit-primary"] = theme.primaryColor;
63
- if (theme.primaryForegroundColor) {
64
- variables["--reevit-primary-foreground"] = theme.primaryForegroundColor;
65
- } else {
66
- const contrast = getContrastingColor(theme.primaryColor);
67
- if (contrast) {
68
- variables["--reevit-primary-foreground"] = contrast;
69
- }
70
- }
71
- }
72
- if (theme.backgroundColor) {
73
- variables["--reevit-background"] = theme.backgroundColor;
74
- }
75
- if (theme.surfaceColor) {
76
- variables["--reevit-surface"] = theme.surfaceColor;
77
- }
78
- if (theme.textColor) {
79
- variables["--reevit-text"] = theme.textColor;
80
- }
81
- if (theme.mutedTextColor) {
82
- variables["--reevit-text-secondary"] = theme.mutedTextColor;
83
- }
84
- if (theme.borderRadius) {
85
- variables["--reevit-radius"] = theme.borderRadius;
86
- variables["--reevit-radius-sm"] = theme.borderRadius;
87
- variables["--reevit-radius-lg"] = theme.borderRadius;
88
- }
89
- if (theme.fontFamily) {
90
- variables["--reevit-font"] = theme.fontFamily;
91
- }
92
- return variables;
59
+ function cn(...classes) {
60
+ return classes.filter(Boolean).join(" ");
93
61
  }
94
- function getContrastingColor(color) {
95
- const hex = color.trim();
96
- if (!hex.startsWith("#")) {
97
- return null;
98
- }
99
- const normalized = hex.length === 4 ? `#${hex[1]}${hex[1]}${hex[2]}${hex[2]}${hex[3]}${hex[3]}` : hex;
100
- if (normalized.length !== 7) {
101
- return null;
62
+ function getCountryFromCurrency(currency) {
63
+ const currencyToCountry = {
64
+ GHS: "GH",
65
+ NGN: "NG",
66
+ KES: "KE",
67
+ ZAR: "ZA",
68
+ USD: "US",
69
+ GBP: "GB",
70
+ EUR: "EU"
71
+ };
72
+ return currencyToCountry[currency.toUpperCase()] || "GH";
73
+ }
74
+ function getMethodLogos(country, method) {
75
+ const c = country.toUpperCase();
76
+ const LOGOS = {
77
+ visa: "https://js.stripe.com/v3/fingerprinted/img/visa-729c05c240c4bdb47b03ac81d9945bfe.svg",
78
+ mastercard: "https://js.stripe.com/v3/fingerprinted/img/mastercard-4d8844094130711885b5e41b28c9848f.svg",
79
+ apple_pay: "https://js.stripe.com/v3/fingerprinted/img/apple_pay_mark-ea40d9a0f83ff6c94c3aa5c2c1ba4427.svg",
80
+ google_pay: "https://js.stripe.com/v3/fingerprinted/img/google_pay_mark-ed0c5a85e00a6e95f57a3c89e9d2a69c.svg",
81
+ mtn: "https://play-lh.googleusercontent.com/WdLBv6Ck6Xk4VJQvPxODXXjLNmxEGHDnXML_TVqWOBBzXpWLV1K3xXlStCfFLrl0Tw=w240-h480-rw",
82
+ vodafone: "https://play-lh.googleusercontent.com/cTpsmMl_ZXKvPLKWwCvC0VaKgT1ISyH0fNDgVbXHMGJl4PYvGMnlFFe8Kj3vTqz0Xg=w240-h480-rw",
83
+ airtel: "https://play-lh.googleusercontent.com/Mh2OxhKPKMfxCn2Y7J3gD3TLvkvOeFXwPLLGqrDHD5qJ5le_ph7Y6PmfwwZKJMZWcYU=w240-h480-rw",
84
+ mpesa: "https://play-lh.googleusercontent.com/2wd-PssHqg1Xv0HnKzH7ecFfozXo_vr5M-Hf7k7X7kqxMGqj5PmKWnFhTqCYXCPCAYE=w240-h480-rw"
85
+ };
86
+ if (method === "card") {
87
+ return [LOGOS.visa, LOGOS.mastercard];
102
88
  }
103
- const r = parseInt(normalized.slice(1, 3), 16);
104
- const g = parseInt(normalized.slice(3, 5), 16);
105
- const b = parseInt(normalized.slice(5, 7), 16);
106
- if (Number.isNaN(r) || Number.isNaN(g) || Number.isNaN(b)) {
107
- return null;
89
+ if (method === "apple_pay") return [LOGOS.apple_pay];
90
+ if (method === "google_pay") return [LOGOS.google_pay];
91
+ if (method === "mobile_money") {
92
+ if (c === "GH") return [LOGOS.mtn, LOGOS.vodafone, LOGOS.airtel];
93
+ if (c === "KE") return [LOGOS.mpesa, LOGOS.airtel];
94
+ if (c === "NG") return [LOGOS.mtn, LOGOS.airtel];
95
+ return [LOGOS.mtn];
108
96
  }
109
- const brightness = (r * 299 + g * 587 + b * 114) / 1e3;
110
- return brightness >= 140 ? "#0b1120" : "#ffffff";
111
- }
112
- function cn(...classes) {
113
- return classes.filter(Boolean).join(" ");
97
+ return [];
114
98
  }
115
99
 
116
100
  // src/api/client.ts
@@ -388,6 +372,10 @@ function normalizeBranding(branding) {
388
372
  setIf("pspSelectorTextColor", getString(raw.pspSelectorTextColor ?? raw.psp_selector_text_color));
389
373
  setIf("pspSelectorBorderColor", getString(raw.pspSelectorBorderColor ?? raw.psp_selector_border_color));
390
374
  setIf("pspSelectorUseBorder", getBoolean(raw.pspSelectorUseBorder ?? raw.psp_selector_use_border));
375
+ setIf("selectedBackgroundColor", getString(raw.selectedBackgroundColor ?? raw.selected_background_color));
376
+ setIf("selectedTextColor", getString(raw.selectedTextColor ?? raw.selected_text_color));
377
+ setIf("selectedDescriptionColor", getString(raw.selectedDescriptionColor ?? raw.selected_description_color));
378
+ setIf("selectedBorderColor", getString(raw.selectedBorderColor ?? raw.selected_border_color));
391
379
  return theme;
392
380
  }
393
381
  function mapToPaymentIntent(response, config) {
@@ -395,6 +383,7 @@ function mapToPaymentIntent(response, config) {
395
383
  id: response.id,
396
384
  clientSecret: response.client_secret,
397
385
  pspPublicKey: response.psp_public_key,
386
+ pspCredentials: response.psp_credentials,
398
387
  amount: response.amount,
399
388
  currency: response.currency,
400
389
  status: response.status,
@@ -694,59 +683,90 @@ function PaymentMethodSelector({
694
683
  disabled = false,
695
684
  provider,
696
685
  layout = "list",
697
- showLabel = true
686
+ showLabel = true,
687
+ country = "GH",
688
+ selectedTheme
698
689
  }) {
699
690
  const getMethodLabel = (method, psp) => {
700
691
  const config = methodConfig[method];
701
692
  return config.label;
702
693
  };
703
- const getMethodDescription = (method, psp) => {
704
- const config = methodConfig[method];
705
- if (psp?.toLowerCase().includes("hubtel")) {
706
- return config.description;
694
+ const getMethodDescription = (method, psp, countryCode) => {
695
+ const c = (country).toUpperCase();
696
+ if (method === "mobile_money") {
697
+ const mobileMoneyDescriptions = {
698
+ GH: "MTN, Vodafone Cash, AirtelTigo Money",
699
+ KE: "M-Pesa, Airtel Money",
700
+ NG: "MTN MoMo, Airtel Money",
701
+ ZA: "Mobile Money"
702
+ };
703
+ return mobileMoneyDescriptions[c] || "Mobile Money";
707
704
  }
708
- return config.description;
705
+ if (method === "card") {
706
+ return "Pay with Visa, Mastercard, or other cards";
707
+ }
708
+ if (method === "bank_transfer") {
709
+ return "Pay directly from your bank account";
710
+ }
711
+ return "";
709
712
  };
710
713
  const isGrid = layout === "grid";
711
714
  return /* @__PURE__ */ jsxs("div", { className: cn("reevit-method-selector", isGrid && "reevit-method-selector--grid"), children: [
712
715
  showLabel && /* @__PURE__ */ jsx("div", { className: "reevit-method-selector__label", children: "Select payment method" }),
713
- /* @__PURE__ */ jsx("div", { className: cn(
714
- "reevit-method-selector__options",
715
- isGrid ? "reevit-method-selector__options--grid" : "reevit-method-selector__options--list"
716
- ), children: methods.map((method, index) => {
717
- const config = methodConfig[method];
718
- const isSelected = selectedMethod === method;
719
- const methodLabel = getMethodLabel(method);
720
- const methodDescription = getMethodDescription(method, provider);
721
- return /* @__PURE__ */ jsxs(
722
- "button",
723
- {
724
- type: "button",
725
- className: cn(
726
- "reevit-method-option",
727
- isGrid ? "reevit-method-option--grid" : "reevit-method-option--list",
728
- isSelected && "reevit-method-option--selected",
729
- disabled && "reevit-method-option--disabled"
730
- ),
731
- style: {
732
- animationDelay: `${index * 0.05}s`
733
- },
734
- onClick: () => onSelect(method),
735
- disabled,
736
- "aria-pressed": isSelected,
737
- children: [
738
- /* @__PURE__ */ jsx("span", { className: "reevit-method-option__icon-wrapper", children: /* @__PURE__ */ jsx("span", { className: "reevit-method-option__icon", children: config.icon }) }),
739
- /* @__PURE__ */ jsxs("div", { className: "reevit-method-option__content", children: [
740
- /* @__PURE__ */ jsx("span", { className: "reevit-method-option__label", children: methodLabel }),
741
- !isGrid && /* @__PURE__ */ jsx("span", { className: "reevit-method-option__description", children: methodDescription })
742
- ] }),
743
- !isGrid && isSelected && /* @__PURE__ */ jsx("span", { className: "reevit-method-option__check", children: /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
744
- !isGrid && !isSelected && /* @__PURE__ */ jsx("span", { className: "reevit-method-option__chevron", children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "9 18 15 12 9 6" }) }) })
745
- ]
746
- },
747
- method
748
- );
749
- }) })
716
+ /* @__PURE__ */ jsx(
717
+ "div",
718
+ {
719
+ className: cn(
720
+ "reevit-method-selector__options",
721
+ isGrid ? "reevit-method-selector__options--grid" : "reevit-method-selector__options--list"
722
+ ),
723
+ style: selectedTheme?.backgroundColor ? { backgroundColor: selectedTheme.backgroundColor } : void 0,
724
+ children: methods.map((method, index) => {
725
+ const config = methodConfig[method];
726
+ const isSelected = selectedMethod === method;
727
+ const methodLabel = getMethodLabel(method);
728
+ const methodDescription = getMethodDescription(method);
729
+ const logos = getMethodLogos(country, method);
730
+ return /* @__PURE__ */ jsxs(
731
+ "button",
732
+ {
733
+ type: "button",
734
+ className: cn(
735
+ "reevit-method-option",
736
+ isGrid ? "reevit-method-option--grid" : "reevit-method-option--list",
737
+ isSelected && "reevit-method-option--selected",
738
+ disabled && "reevit-method-option--disabled"
739
+ ),
740
+ style: {
741
+ animationDelay: `${index * 0.05}s`,
742
+ borderBottomColor: selectedTheme?.borderColor
743
+ },
744
+ onClick: () => onSelect(method),
745
+ disabled,
746
+ "aria-pressed": isSelected,
747
+ children: [
748
+ /* @__PURE__ */ jsx("span", { className: "reevit-method-option__icon-wrapper", children: logos.length > 0 ? /* @__PURE__ */ jsx("span", { className: "reevit-method-option__logos", children: logos.slice(0, 3).map((logo, i) => /* @__PURE__ */ jsx(
749
+ "img",
750
+ {
751
+ src: logo,
752
+ alt: "",
753
+ className: "reevit-method-option__logo-img"
754
+ },
755
+ i
756
+ )) }) : /* @__PURE__ */ jsx("span", { className: "reevit-method-option__icon", children: config.icon }) }),
757
+ /* @__PURE__ */ jsxs("div", { className: "reevit-method-option__content", children: [
758
+ /* @__PURE__ */ jsx("span", { className: "reevit-method-option__label", style: selectedTheme?.textColor ? { color: selectedTheme.textColor } : void 0, children: methodLabel }),
759
+ !isGrid && /* @__PURE__ */ jsx("span", { className: "reevit-method-option__description", style: selectedTheme?.descriptionColor ? { color: selectedTheme.descriptionColor } : void 0, children: methodDescription })
760
+ ] }),
761
+ !isGrid && isSelected && /* @__PURE__ */ jsx("span", { className: "reevit-method-option__check", children: /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" }) }) }),
762
+ !isGrid && !isSelected && /* @__PURE__ */ jsx("span", { className: "reevit-method-option__chevron", children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("polyline", { points: "9 18 15 12 9 6" }) }) })
763
+ ]
764
+ },
765
+ method
766
+ );
767
+ })
768
+ }
769
+ )
750
770
  ] });
751
771
  }
752
772
  var networks = [
@@ -914,28 +934,11 @@ function ProviderSelector({
914
934
  onSelect,
915
935
  disabled = false,
916
936
  theme,
937
+ country = "GH",
917
938
  selectedMethod,
918
939
  onMethodSelect,
919
940
  renderMethodContent
920
941
  }) {
921
- const useBorder = theme?.pspSelectorUseBorder ?? false;
922
- const bgColor = theme?.pspSelectorBgColor || "#0a0a0a";
923
- const textColor = theme?.pspSelectorTextColor || "#ffffff";
924
- const borderColor = theme?.pspSelectorBorderColor || "#374151";
925
- const getOptionStyle = (isSelected) => {
926
- if (useBorder) {
927
- return {
928
- backgroundColor: "transparent",
929
- border: `2px solid ${isSelected ? borderColor : "#374151"}`,
930
- color: isSelected ? textColor : "var(--reevit-text)"
931
- };
932
- }
933
- return {
934
- backgroundColor: isSelected ? bgColor : "transparent",
935
- border: `2px solid ${isSelected ? bgColor : "#374151"}`,
936
- color: isSelected ? textColor : "var(--reevit-text)"
937
- };
938
- };
939
942
  return /* @__PURE__ */ jsxs("div", { className: "reevit-psp-selector", children: [
940
943
  /* @__PURE__ */ jsx("div", { className: "reevit-psp-selector__label", children: "Select payment provider" }),
941
944
  /* @__PURE__ */ jsx("div", { className: "reevit-psp-selector__options", children: providers.map((provider) => {
@@ -946,7 +949,7 @@ function ProviderSelector({
946
949
  const providerMethods = sanitizeMethods(provider.provider, provider.methods);
947
950
  const isSelected = selectedProvider === provider.provider;
948
951
  const fallbackInitial = provider.name.slice(0, 1).toUpperCase();
949
- const optionStyle = getOptionStyle(isSelected);
952
+ const providerCountry = provider.countries?.[0] || country;
950
953
  return /* @__PURE__ */ jsxs("div", { className: "reevit-psp-accordion", children: [
951
954
  /* @__PURE__ */ jsxs(
952
955
  "button",
@@ -957,7 +960,6 @@ function ProviderSelector({
957
960
  isSelected && "reevit-psp-option--selected",
958
961
  disabled && "reevit-psp-option--disabled"
959
962
  ),
960
- style: optionStyle,
961
963
  onClick: () => onSelect(provider.provider),
962
964
  disabled,
963
965
  "aria-expanded": isSelected,
@@ -972,27 +974,46 @@ function ProviderSelector({
972
974
  }
973
975
  ) : /* @__PURE__ */ jsx("span", { className: "reevit-psp-option__logo-fallback", children: fallbackInitial }) }),
974
976
  /* @__PURE__ */ jsxs("div", { className: "reevit-psp-option__content", children: [
975
- /* @__PURE__ */ jsx("span", { className: "reevit-psp-option__name", children: provider.name }),
977
+ /* @__PURE__ */ jsxs("span", { className: "reevit-psp-option__name", children: [
978
+ "Pay with ",
979
+ provider.name
980
+ ] }),
976
981
  /* @__PURE__ */ jsx("span", { className: "reevit-psp-option__methods", children: formatMethods(providerMethods) || meta.hint })
977
982
  ] })
978
983
  ]
979
984
  }
980
985
  ),
981
- isSelected && onMethodSelect && /* @__PURE__ */ jsxs("div", { className: "reevit-psp-accordion__content", children: [
982
- /* @__PURE__ */ jsx("div", { className: "reevit-psp-methods", children: /* @__PURE__ */ jsx(
983
- PaymentMethodSelector,
984
- {
985
- methods: providerMethods,
986
- selectedMethod: selectedMethod || null,
987
- onSelect: onMethodSelect,
988
- disabled,
989
- provider: provider.provider,
990
- layout: "list",
991
- showLabel: false
992
- }
993
- ) }),
994
- selectedMethod && renderMethodContent && /* @__PURE__ */ jsx("div", { className: "reevit-psp-accordion__method-content", children: renderMethodContent(provider.provider, selectedMethod) })
995
- ] })
986
+ isSelected && onMethodSelect && /* @__PURE__ */ jsxs(
987
+ "div",
988
+ {
989
+ className: "reevit-psp-accordion__content",
990
+ style: theme?.selectedBorderColor ? {
991
+ borderTop: `1px solid ${theme.selectedBorderColor}`
992
+ } : void 0,
993
+ children: [
994
+ /* @__PURE__ */ jsx("div", { className: "reevit-psp-methods", children: /* @__PURE__ */ jsx(
995
+ PaymentMethodSelector,
996
+ {
997
+ methods: providerMethods,
998
+ selectedMethod: selectedMethod || null,
999
+ onSelect: onMethodSelect,
1000
+ disabled,
1001
+ provider: provider.provider,
1002
+ layout: "list",
1003
+ showLabel: false,
1004
+ country: providerCountry,
1005
+ selectedTheme: theme ? {
1006
+ backgroundColor: theme.selectedBackgroundColor,
1007
+ textColor: theme.selectedTextColor,
1008
+ descriptionColor: theme.selectedDescriptionColor,
1009
+ borderColor: theme.selectedBorderColor
1010
+ } : void 0
1011
+ }
1012
+ ) }),
1013
+ selectedMethod && renderMethodContent && /* @__PURE__ */ jsx("div", { className: "reevit-psp-accordion__method-content", children: renderMethodContent(provider.provider, selectedMethod) })
1014
+ ]
1015
+ }
1016
+ )
996
1017
  ] }, provider.provider);
997
1018
  }) })
998
1019
  ] });
@@ -2215,7 +2236,29 @@ function ReevitCheckout({
2215
2236
  ...theme || {}
2216
2237
  };
2217
2238
  }, [paymentIntent?.branding, theme]);
2218
- const themeStyles = resolvedTheme ? createThemeVariables(resolvedTheme) : {};
2239
+ const themeStyles = useMemo(() => {
2240
+ if (!resolvedTheme) return {};
2241
+ const vars = {};
2242
+ if (resolvedTheme.backgroundColor) {
2243
+ vars["--reevit-background"] = resolvedTheme.backgroundColor;
2244
+ vars["--reevit-surface"] = resolvedTheme.backgroundColor;
2245
+ }
2246
+ if (resolvedTheme.primaryColor) {
2247
+ vars["--reevit-text"] = resolvedTheme.primaryColor;
2248
+ }
2249
+ if (resolvedTheme.primaryForegroundColor) {
2250
+ vars["--reevit-text-secondary"] = resolvedTheme.primaryForegroundColor;
2251
+ vars["--reevit-muted"] = resolvedTheme.primaryForegroundColor;
2252
+ }
2253
+ if (resolvedTheme.borderColor) {
2254
+ vars["--reevit-border"] = resolvedTheme.borderColor;
2255
+ }
2256
+ if (resolvedTheme.borderRadius) {
2257
+ vars["--reevit-radius"] = resolvedTheme.borderRadius;
2258
+ vars["--reevit-radius-lg"] = resolvedTheme.borderRadius;
2259
+ }
2260
+ return vars;
2261
+ }, [resolvedTheme]);
2219
2262
  const brandName = resolvedTheme?.companyName;
2220
2263
  const themeMode = resolvedTheme?.darkMode;
2221
2264
  const dataTheme = useMemo(() => {
@@ -2413,6 +2456,7 @@ function ReevitCheckout({
2413
2456
  onSelect: handleProviderSelect,
2414
2457
  disabled: isLoading,
2415
2458
  theme: resolvedTheme,
2459
+ country: getCountryFromCurrency(currency),
2416
2460
  selectedMethod,
2417
2461
  onMethodSelect: handleMethodSelect,
2418
2462
  renderMethodContent
@@ -2429,7 +2473,14 @@ function ReevitCheckout({
2429
2473
  disabled: isLoading,
2430
2474
  provider: psp,
2431
2475
  layout: "list",
2432
- showLabel: false
2476
+ showLabel: false,
2477
+ country: getCountryFromCurrency(currency),
2478
+ selectedTheme: resolvedTheme ? {
2479
+ backgroundColor: resolvedTheme.selectedBackgroundColor,
2480
+ textColor: resolvedTheme.selectedTextColor,
2481
+ descriptionColor: resolvedTheme.selectedDescriptionColor,
2482
+ borderColor: resolvedTheme.selectedBorderColor
2483
+ } : void 0
2433
2484
  }
2434
2485
  ),
2435
2486
  selectedMethod && /* @__PURE__ */ jsx("div", { className: "reevit-method-step__actions reevit-animate-slide-up", children: selectedMethod === "mobile_money" && pspLower.includes("mpesa") && !phone ? /* @__PURE__ */ jsx(MobileMoneyForm, { onSubmit: handleMomoSubmit, onCancel: () => selectMethod(null), isLoading, initialPhone: phone }) : /* @__PURE__ */ jsxs("div", { className: "reevit-card-info reevit-animate-fade-in", children: [
@@ -2460,17 +2511,20 @@ function ReevitCheckout({
2460
2511
  children: [
2461
2512
  /* @__PURE__ */ jsxs("div", { className: "reevit-modal__header", children: [
2462
2513
  /* @__PURE__ */ jsxs("div", { className: "reevit-modal__branding", children: [
2463
- /* @__PURE__ */ jsx(
2514
+ resolvedTheme?.logoUrl && /* @__PURE__ */ jsx(
2464
2515
  "img",
2465
2516
  {
2466
- src: resolvedTheme?.logoUrl || "https://i.imgur.com/bzUR5Lm.png",
2467
- alt: brandName || "Reevit",
2517
+ src: resolvedTheme.logoUrl,
2518
+ alt: brandName || "",
2468
2519
  className: "reevit-modal__logo"
2469
2520
  }
2470
2521
  ),
2471
2522
  brandName && /* @__PURE__ */ jsx("span", { className: "reevit-modal__brand-name", children: brandName })
2472
2523
  ] }),
2473
- /* @__PURE__ */ jsx("button", { className: "reevit-modal__close", onClick: handleClose, "aria-label": "Close", children: "\u2715" })
2524
+ /* @__PURE__ */ jsx("button", { className: "reevit-modal__close", onClick: handleClose, "aria-label": "Close", children: /* @__PURE__ */ jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
2525
+ /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
2526
+ /* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
2527
+ ] }) })
2474
2528
  ] }),
2475
2529
  /* @__PURE__ */ jsxs("div", { className: "reevit-modal__amount", children: [
2476
2530
  /* @__PURE__ */ jsx("span", { className: "reevit-modal__amount-label", children: "Amount" }),