@volr/react-ui 0.1.133 → 0.1.135

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.d.cts CHANGED
@@ -171,12 +171,12 @@ declare const en: {
171
171
  readonly alreadyExists: "Biometric login is already set up.";
172
172
  readonly notSupported: "Your device doesn't support biometric login.";
173
173
  readonly prfNotSupported: "Setup failed. Please use your device's biometric (Touch ID, Face ID) directly. Using other devices or apps may not work.";
174
- readonly prfNotSupportedWindows: "Setup failed. Windows Hello doesn't support PRF. In the passkey picker, choose \"Use a phone or tablet\".";
174
+ readonly prfNotSupportedWindows: "Setup failed. The selected passkey provider doesn't support PRF. In the passkey picker, choose \"Use a phone or tablet\" and complete with Google Password Manager on the device.";
175
175
  readonly generic: "Setup failed. Please try again.";
176
176
  };
177
177
  readonly compatibility: {
178
178
  readonly title: "Browser Update Required";
179
- readonly inAppBrowser: "Secure login is not available in this app browser. Please open in Safari or Chrome.";
179
+ readonly inAppBrowser: "Passkeys are not supported in in-app browsers. Please open in your device browser (Chrome/Edge on Android, Safari on iOS).";
180
180
  readonly outdatedChrome: "Chrome 109 or later is required. Please update your browser.";
181
181
  readonly outdatedEdge: "Edge 109 or later is required. Please update your browser.";
182
182
  readonly outdatedSafari: "Safari 17.4 or later is required. Please update macOS/iOS.";
@@ -198,7 +198,7 @@ declare const en: {
198
198
  readonly linux: "Scan the QR code on screen with your phone camera.";
199
199
  readonly default: "Please use this device's biometric.";
200
200
  readonly note: "Using other devices or apps may not work.";
201
- readonly windowsNote: "This PC will use Face ID or fingerprint from your phone.";
201
+ readonly windowsNote: "Complete on your phone or tablet with Google Password Manager for best compatibility.";
202
202
  };
203
203
  readonly migration: {
204
204
  readonly title: "Set up passkey for this site";
@@ -322,6 +322,16 @@ declare const en: {
322
322
  readonly default: "Processing...";
323
323
  readonly doNotClose: "Please don't close this window";
324
324
  };
325
+ readonly result: {
326
+ readonly successTitle: "Payment Complete";
327
+ readonly failureTitle: "Payment Failed";
328
+ readonly successMessage: "Your payment has been processed successfully";
329
+ readonly failureMessage: "Something went wrong. Please try again.";
330
+ readonly amountLabel: "Amount";
331
+ readonly usdValueLabel: "USD Value";
332
+ readonly transactionLabel: "Transaction";
333
+ readonly reportIssue: "Report an issue";
334
+ };
325
335
  };
326
336
  readonly errors: {
327
337
  readonly webauthnNotSupported: "WebAuthn API is not supported";
package/dist/index.d.ts CHANGED
@@ -171,12 +171,12 @@ declare const en: {
171
171
  readonly alreadyExists: "Biometric login is already set up.";
172
172
  readonly notSupported: "Your device doesn't support biometric login.";
173
173
  readonly prfNotSupported: "Setup failed. Please use your device's biometric (Touch ID, Face ID) directly. Using other devices or apps may not work.";
174
- readonly prfNotSupportedWindows: "Setup failed. Windows Hello doesn't support PRF. In the passkey picker, choose \"Use a phone or tablet\".";
174
+ readonly prfNotSupportedWindows: "Setup failed. The selected passkey provider doesn't support PRF. In the passkey picker, choose \"Use a phone or tablet\" and complete with Google Password Manager on the device.";
175
175
  readonly generic: "Setup failed. Please try again.";
176
176
  };
177
177
  readonly compatibility: {
178
178
  readonly title: "Browser Update Required";
179
- readonly inAppBrowser: "Secure login is not available in this app browser. Please open in Safari or Chrome.";
179
+ readonly inAppBrowser: "Passkeys are not supported in in-app browsers. Please open in your device browser (Chrome/Edge on Android, Safari on iOS).";
180
180
  readonly outdatedChrome: "Chrome 109 or later is required. Please update your browser.";
181
181
  readonly outdatedEdge: "Edge 109 or later is required. Please update your browser.";
182
182
  readonly outdatedSafari: "Safari 17.4 or later is required. Please update macOS/iOS.";
@@ -198,7 +198,7 @@ declare const en: {
198
198
  readonly linux: "Scan the QR code on screen with your phone camera.";
199
199
  readonly default: "Please use this device's biometric.";
200
200
  readonly note: "Using other devices or apps may not work.";
201
- readonly windowsNote: "This PC will use Face ID or fingerprint from your phone.";
201
+ readonly windowsNote: "Complete on your phone or tablet with Google Password Manager for best compatibility.";
202
202
  };
203
203
  readonly migration: {
204
204
  readonly title: "Set up passkey for this site";
@@ -322,6 +322,16 @@ declare const en: {
322
322
  readonly default: "Processing...";
323
323
  readonly doNotClose: "Please don't close this window";
324
324
  };
325
+ readonly result: {
326
+ readonly successTitle: "Payment Complete";
327
+ readonly failureTitle: "Payment Failed";
328
+ readonly successMessage: "Your payment has been processed successfully";
329
+ readonly failureMessage: "Something went wrong. Please try again.";
330
+ readonly amountLabel: "Amount";
331
+ readonly usdValueLabel: "USD Value";
332
+ readonly transactionLabel: "Transaction";
333
+ readonly reportIssue: "Report an issue";
334
+ };
325
335
  };
326
336
  readonly errors: {
327
337
  readonly webauthnNotSupported: "WebAuthn API is not supported";
package/dist/index.js CHANGED
@@ -547,12 +547,12 @@ var en = {
547
547
  alreadyExists: "Biometric login is already set up.",
548
548
  notSupported: "Your device doesn't support biometric login.",
549
549
  prfNotSupported: "Setup failed. Please use your device's biometric (Touch ID, Face ID) directly. Using other devices or apps may not work.",
550
- prfNotSupportedWindows: `Setup failed. Windows Hello doesn't support PRF. In the passkey picker, choose "Use a phone or tablet".`,
550
+ prfNotSupportedWindows: `Setup failed. The selected passkey provider doesn't support PRF. In the passkey picker, choose "Use a phone or tablet" and complete with Google Password Manager on the device.`,
551
551
  generic: "Setup failed. Please try again."
552
552
  },
553
553
  compatibility: {
554
554
  title: "Browser Update Required",
555
- inAppBrowser: "Secure login is not available in this app browser. Please open in Safari or Chrome.",
555
+ inAppBrowser: "Passkeys are not supported in in-app browsers. Please open in your device browser (Chrome/Edge on Android, Safari on iOS).",
556
556
  outdatedChrome: "Chrome 109 or later is required. Please update your browser.",
557
557
  outdatedEdge: "Edge 109 or later is required. Please update your browser.",
558
558
  outdatedSafari: "Safari 17.4 or later is required. Please update macOS/iOS.",
@@ -574,7 +574,7 @@ var en = {
574
574
  linux: "Scan the QR code on screen with your phone camera.",
575
575
  default: "Please use this device's biometric.",
576
576
  note: "Using other devices or apps may not work.",
577
- windowsNote: "This PC will use Face ID or fingerprint from your phone."
577
+ windowsNote: "Complete on your phone or tablet with Google Password Manager for best compatibility."
578
578
  },
579
579
  migration: {
580
580
  title: "Set up passkey for this site",
@@ -698,6 +698,16 @@ var en = {
698
698
  confirming: "Almost done...",
699
699
  default: "Processing...",
700
700
  doNotClose: "Please don't close this window"
701
+ },
702
+ result: {
703
+ successTitle: "Payment Complete",
704
+ failureTitle: "Payment Failed",
705
+ successMessage: "Your payment has been processed successfully",
706
+ failureMessage: "Something went wrong. Please try again.",
707
+ amountLabel: "Amount",
708
+ usdValueLabel: "USD Value",
709
+ transactionLabel: "Transaction",
710
+ reportIssue: "Report an issue"
701
711
  }
702
712
  },
703
713
  errors: {
@@ -794,12 +804,12 @@ var ko = {
794
804
  alreadyExists: "\uC774\uBBF8 \uC0DD\uCCB4 \uB85C\uADF8\uC778\uC774 \uC124\uC815\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.",
795
805
  notSupported: "\uC774 \uAE30\uAE30\uB294 \uC0DD\uCCB4 \uB85C\uADF8\uC778\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.",
796
806
  prfNotSupported: "\uC124\uC815\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uC774 \uAE30\uAE30\uC758 \uC0DD\uCCB4 \uC778\uC99D(Touch ID, Face ID)\uC744 \uC9C1\uC811 \uC120\uD0DD\uD574\uC8FC\uC138\uC694. \uB2E4\uB978 \uAE30\uAE30\uB098 \uC571 \uC0AC\uC6A9 \uC2DC \uB3D9\uC791\uD558\uC9C0 \uC54A\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",
797
- prfNotSupportedWindows: '\uC124\uC815\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. Windows Hello\uB294 PRF\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uD328\uC2A4\uD0A4 \uC120\uD0DD \uD654\uBA74\uC5D0\uC11C "\uD734\uB300\uD3F0/\uD0DC\uBE14\uB9BF \uC0AC\uC6A9"\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694.',
807
+ prfNotSupportedWindows: '\uC124\uC815\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uC120\uD0DD\uD55C \uD328\uC2A4\uD0A4 \uC81C\uACF5\uC790\uAC00 PRF\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uD328\uC2A4\uD0A4 \uC120\uD0DD \uD654\uBA74\uC5D0\uC11C "\uD734\uB300\uD3F0/\uD0DC\uBE14\uB9BF \uC0AC\uC6A9"\uC744 \uC120\uD0DD\uD558\uACE0, \uD734\uB300\uD3F0/\uD0DC\uBE14\uB9BF\uC5D0\uC11C\uB294 Google Password Manager\uB85C \uC9C4\uD589\uD574\uC8FC\uC138\uC694.',
798
808
  generic: "\uC124\uC815\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694."
799
809
  },
800
810
  compatibility: {
801
811
  title: "\uBE0C\uB77C\uC6B0\uC800 \uC5C5\uB370\uC774\uD2B8 \uD544\uC694",
802
- inAppBrowser: "\uD604\uC7AC \uC571 \uB0B4 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB294 \uBCF4\uC548 \uB85C\uADF8\uC778\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Safari \uB610\uB294 Chrome\uC5D0\uC11C \uC5F4\uC5B4\uC8FC\uC138\uC694.",
812
+ inAppBrowser: "\uC571 \uB0B4 \uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C\uB294 \uD328\uC2A4\uD0A4 \uB85C\uADF8\uC778\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uAE30\uBCF8 \uBE0C\uB77C\uC6B0\uC800(\uC548\uB4DC\uB85C\uC774\uB4DC: Chrome/Edge, iOS: Safari)\uC5D0\uC11C \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694.",
803
813
  outdatedChrome: "Chrome 109 \uC774\uC0C1 \uBC84\uC804\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uB97C \uC5C5\uB370\uC774\uD2B8\uD574\uC8FC\uC138\uC694.",
804
814
  outdatedEdge: "Edge 109 \uC774\uC0C1 \uBC84\uC804\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. \uBE0C\uB77C\uC6B0\uC800\uB97C \uC5C5\uB370\uC774\uD2B8\uD574\uC8FC\uC138\uC694.",
805
815
  outdatedSafari: "Safari 17.4 \uC774\uC0C1 \uBC84\uC804\uC774 \uD544\uC694\uD569\uB2C8\uB2E4. macOS/iOS\uB97C \uC5C5\uB370\uC774\uD2B8\uD574\uC8FC\uC138\uC694.",
@@ -821,7 +831,7 @@ var ko = {
821
831
  linux: "\uD734\uB300\uD3F0 \uCE74\uBA54\uB77C\uB85C \uD654\uBA74\uC758 QR \uCF54\uB4DC\uB97C \uC2A4\uCE94\uD574\uC8FC\uC138\uC694.",
822
832
  default: "\uC774 \uAE30\uAE30\uC758 \uC0DD\uCCB4 \uC778\uC99D\uC744 \uC0AC\uC6A9\uD574\uC8FC\uC138\uC694.",
823
833
  note: "\uB2E4\uB978 \uAE30\uAE30\uB098 \uC571 \uC0AC\uC6A9 \uC2DC \uB3D9\uC791\uD558\uC9C0 \uC54A\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4.",
824
- windowsNote: "\uC774 PC\uC5D0\uC11C\uB294 \uD734\uB300\uD3F0\uC758 Face ID \uB610\uB294 \uC9C0\uBB38 \uC778\uC2DD\uC744 \uC0AC\uC6A9\uD569\uB2C8\uB2E4."
834
+ windowsNote: "\uD734\uB300\uD3F0/\uD0DC\uBE14\uB9BF\uC5D0\uC11C\uB294 Google Password Manager\uB85C \uC9C4\uD589\uD558\uBA74 \uC548\uC815\uC801\uC785\uB2C8\uB2E4."
825
835
  },
826
836
  migration: {
827
837
  title: "\uC774 \uC0AC\uC774\uD2B8\uC6A9 \uD328\uC2A4\uD0A4 \uC124\uC815",
@@ -970,6 +980,16 @@ var ko = {
970
980
  confirming: "\uAC70\uC758 \uC644\uB8CC...",
971
981
  default: "\uCC98\uB9AC \uC911...",
972
982
  doNotClose: "\uCC3D\uC744 \uB2EB\uC9C0 \uB9C8\uC138\uC694"
983
+ },
984
+ result: {
985
+ successTitle: "\uACB0\uC81C \uC644\uB8CC",
986
+ failureTitle: "\uACB0\uC81C \uC2E4\uD328",
987
+ successMessage: "\uACB0\uC81C\uAC00 \uC815\uC0C1\uC801\uC73C\uB85C \uCC98\uB9AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
988
+ failureMessage: "\uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694.",
989
+ amountLabel: "\uAE08\uC561",
990
+ usdValueLabel: "USD \uAC00\uCE58",
991
+ transactionLabel: "\uD2B8\uB79C\uC7AD\uC158",
992
+ reportIssue: "\uBB38\uC81C \uC2E0\uACE0\uD558\uAE30"
973
993
  }
974
994
  },
975
995
  errors: {
@@ -6001,6 +6021,15 @@ function usePaymentModalState(open, onOpenChange) {
6001
6021
  });
6002
6022
  createdPaymentId = payment.id;
6003
6023
  dispatch({ type: "SET_CREATED_PAYMENT", payment });
6024
+ if (payment.status !== "PENDING") {
6025
+ const alreadyProcessedError = new Error(
6026
+ payment.status === "CONFIRMED" ? "This payment has already been completed. If you used an idempotencyKey, the original payment was already processed." : `Payment already processed with status: ${payment.status}. If you used an idempotencyKey, the original payment was already processed.`
6027
+ );
6028
+ alreadyProcessedError.code = "PAYMENT_ALREADY_PROCESSED";
6029
+ alreadyProcessedError.paymentStatus = payment.status;
6030
+ alreadyProcessedError.payment = payment;
6031
+ throw alreadyProcessedError;
6032
+ }
6004
6033
  paymentOptions.options.handlers?.onCreated?.({ id: payment.id });
6005
6034
  const evmClient = evm.client(tokenInfo.chainId);
6006
6035
  dispatch({ type: "SET_PROCESSING_STEP", step: "broadcasting" });
@@ -6046,13 +6075,28 @@ function usePaymentModalState(open, onOpenChange) {
6046
6075
  }
6047
6076
  } catch (err) {
6048
6077
  console.error("Payment failed:", err);
6049
- if (createdPaymentId) {
6078
+ const isAlreadyProcessed = err.code === "PAYMENT_ALREADY_PROCESSED";
6079
+ if (createdPaymentId && !isAlreadyProcessed) {
6050
6080
  try {
6051
6081
  await failPendingPayment(createdPaymentId);
6052
6082
  } catch (failErr) {
6053
6083
  console.error("Failed to mark payment as failed:", failErr);
6054
6084
  }
6055
6085
  }
6086
+ if (isAlreadyProcessed && err.payment) {
6087
+ dispatch({ type: "PAYMENT_SUCCESS", payment: err.payment });
6088
+ if (err.payment.status === "CONFIRMED") {
6089
+ paymentOptions?.onComplete?.(err.payment);
6090
+ } else {
6091
+ const paymentError2 = {
6092
+ code: err.code || "PAYMENT_ALREADY_PROCESSED",
6093
+ message: err.message || "Payment already processed."
6094
+ };
6095
+ dispatch({ type: "PAYMENT_ERROR", error: paymentError2 });
6096
+ paymentOptions?.onError?.(paymentError2);
6097
+ }
6098
+ return;
6099
+ }
6056
6100
  const paymentError = {
6057
6101
  code: err.code || "PAYMENT_FAILED",
6058
6102
  message: err.message || "Payment failed. Please try again."
@@ -6612,8 +6656,14 @@ var PaymentResultView = ({
6612
6656
  onRetry,
6613
6657
  onReport
6614
6658
  }) => {
6659
+ const { t } = useI18n();
6615
6660
  const isSuccess = payment.status === "CONFIRMED";
6616
6661
  payment.status === "FAILED" || !!error;
6662
+ const isInAppBrowserError = error?.code === "INAPP_BROWSER_NOT_SUPPORTED";
6663
+ const handleOpenExternalBrowser = () => {
6664
+ if (typeof window === "undefined") return;
6665
+ window.open(window.location.href, "_system");
6666
+ };
6617
6667
  return /* @__PURE__ */ jsxs("div", { className: "volr:space-y-6", children: [
6618
6668
  /* @__PURE__ */ jsx("div", { className: "volr:flex volr:justify-center volr:pt-2", children: isSuccess ? /* @__PURE__ */ jsx("div", { className: "volr:w-14 volr:h-14 volr:rounded-full volr:bg-green-50 volr:flex volr:items-center volr:justify-center", children: /* @__PURE__ */ jsx(
6619
6669
  "svg",
@@ -6651,12 +6701,12 @@ var PaymentResultView = ({
6651
6701
  }
6652
6702
  ) }) }),
6653
6703
  /* @__PURE__ */ jsxs("div", { className: "volr:text-center volr:space-y-1", children: [
6654
- /* @__PURE__ */ jsx("h3", { className: "volr:text-lg volr:font-semibold volr:text-slate-900", children: isSuccess ? "Payment Complete" : "Payment Failed" }),
6655
- /* @__PURE__ */ jsx("p", { className: "volr:text-sm volr:text-slate-500", children: isSuccess ? "Your payment has been processed successfully" : error?.message || "Something went wrong. Please try again." })
6704
+ /* @__PURE__ */ jsx("h3", { className: "volr:text-lg volr:font-semibold volr:text-slate-900", children: isSuccess ? t("payment.result.successTitle") : t("payment.result.failureTitle") }),
6705
+ /* @__PURE__ */ jsx("p", { className: "volr:text-sm volr:text-slate-500", children: isSuccess ? t("payment.result.successMessage") : isInAppBrowserError ? t("passkey.compatibility.inAppBrowser") : error?.message || t("payment.result.failureMessage") })
6656
6706
  ] }),
6657
6707
  isSuccess && payment.txHash && /* @__PURE__ */ jsxs("div", { className: "volr:bg-slate-50 volr:rounded-lg volr:p-4 volr:space-y-2", children: [
6658
6708
  /* @__PURE__ */ jsxs("div", { className: "volr:flex volr:justify-between volr:text-sm", children: [
6659
- /* @__PURE__ */ jsx("span", { className: "volr:text-slate-500", children: "Amount" }),
6709
+ /* @__PURE__ */ jsx("span", { className: "volr:text-slate-500", children: t("payment.result.amountLabel") }),
6660
6710
  /* @__PURE__ */ jsxs("span", { className: "volr:font-medium volr:text-slate-900", children: [
6661
6711
  (Number(payment.amount) / Math.pow(10, payment.token.decimals)).toLocaleString(),
6662
6712
  " ",
@@ -6664,14 +6714,14 @@ var PaymentResultView = ({
6664
6714
  ] })
6665
6715
  ] }),
6666
6716
  payment.totalUsd && /* @__PURE__ */ jsxs("div", { className: "volr:flex volr:justify-between volr:text-sm", children: [
6667
- /* @__PURE__ */ jsx("span", { className: "volr:text-slate-500", children: "USD Value" }),
6717
+ /* @__PURE__ */ jsx("span", { className: "volr:text-slate-500", children: t("payment.result.usdValueLabel") }),
6668
6718
  /* @__PURE__ */ jsxs("span", { className: "volr:text-slate-600", children: [
6669
6719
  "$",
6670
6720
  parseFloat(payment.totalUsd).toFixed(2)
6671
6721
  ] })
6672
6722
  ] }),
6673
6723
  /* @__PURE__ */ jsxs("div", { className: "volr:flex volr:justify-between volr:text-sm", children: [
6674
- /* @__PURE__ */ jsx("span", { className: "volr:text-slate-500", children: "Transaction" }),
6724
+ /* @__PURE__ */ jsx("span", { className: "volr:text-slate-500", children: t("payment.result.transactionLabel") }),
6675
6725
  /* @__PURE__ */ jsxs("code", { className: "volr:text-xs volr:text-slate-600 volr:font-mono", children: [
6676
6726
  payment.txHash.slice(0, 8),
6677
6727
  "...",
@@ -6679,14 +6729,23 @@ var PaymentResultView = ({
6679
6729
  ] })
6680
6730
  ] })
6681
6731
  ] }),
6682
- /* @__PURE__ */ jsx("div", { className: "volr:space-y-4", children: isSuccess ? /* @__PURE__ */ jsx(Button, { onClick: onDone, className: "volr:w-full", children: "Done" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
6683
- /* @__PURE__ */ jsx(Button, { onClick: onRetry, className: "volr:w-full", children: "Try Again" }),
6732
+ /* @__PURE__ */ jsx("div", { className: "volr:space-y-4", children: isSuccess ? /* @__PURE__ */ jsx(Button, { onClick: onDone, className: "volr:w-full", children: t("common.done") }) : /* @__PURE__ */ jsxs(Fragment, { children: [
6733
+ isInAppBrowserError && /* @__PURE__ */ jsx(Button, { onClick: handleOpenExternalBrowser, className: "volr:w-full", children: t("passkey.compatibility.openInExternalBrowser") }),
6734
+ /* @__PURE__ */ jsx(
6735
+ Button,
6736
+ {
6737
+ onClick: onRetry,
6738
+ className: "volr:w-full",
6739
+ variant: isInAppBrowserError ? "secondary" : void 0,
6740
+ children: t("common.tryAgain")
6741
+ }
6742
+ ),
6684
6743
  /* @__PURE__ */ jsx(
6685
6744
  "button",
6686
6745
  {
6687
6746
  onClick: onReport,
6688
6747
  className: "volr:w-full volr:text-sm volr:text-slate-400 hover:volr:text-slate-600 volr:transition-colors volr:py-2",
6689
- children: "Report an issue"
6748
+ children: t("payment.result.reportIssue")
6690
6749
  }
6691
6750
  )
6692
6751
  ] }) }),