@retinalabsllc/zairusjs 5.1.5 → 5.1.8

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.mts CHANGED
@@ -1079,6 +1079,7 @@ interface UniversalWalletPageProps {
1079
1079
  headerDescription?: string;
1080
1080
  hideControls?: boolean;
1081
1081
  hideBalanceAmounts?: boolean;
1082
+ isGeneratingStatement?: boolean;
1082
1083
  wallets: UniversalWallet[];
1083
1084
  isLoading?: boolean;
1084
1085
  renderQrCode?: (wallet: UniversalWallet) => React.ReactNode;
package/dist/index.d.ts CHANGED
@@ -1079,6 +1079,7 @@ interface UniversalWalletPageProps {
1079
1079
  headerDescription?: string;
1080
1080
  hideControls?: boolean;
1081
1081
  hideBalanceAmounts?: boolean;
1082
+ isGeneratingStatement?: boolean;
1082
1083
  wallets: UniversalWallet[];
1083
1084
  isLoading?: boolean;
1084
1085
  renderQrCode?: (wallet: UniversalWallet) => React.ReactNode;
package/dist/index.js CHANGED
@@ -4243,6 +4243,7 @@ var UniversalWalletPage = ({
4243
4243
  headerDescription,
4244
4244
  hideControls = false,
4245
4245
  hideBalanceAmounts = false,
4246
+ isGeneratingStatement = false,
4246
4247
  wallets,
4247
4248
  isLoading = false,
4248
4249
  renderQrCode,
@@ -4251,6 +4252,7 @@ var UniversalWalletPage = ({
4251
4252
  }) => {
4252
4253
  const [selectedWallet, setSelectedWallet] = (0, import_react76.useState)(null);
4253
4254
  const [localSearchQuery, setLocalSearchQuery] = (0, import_react76.useState)("");
4255
+ const [showToast, setShowToast] = (0, import_react76.useState)(false);
4254
4256
  const filteredWallets = wallets.filter((wallet) => {
4255
4257
  const q = localSearchQuery.toLowerCase();
4256
4258
  return wallet.name.toLowerCase().includes(q) || wallet.currency.toLowerCase().includes(q) || wallet.network.toLowerCase().includes(q);
@@ -4258,6 +4260,16 @@ var UniversalWalletPage = ({
4258
4260
  const primaryBaseShadow = `inset 0 1.5px 0 0 rgba(255, 255, 255, 0.3), inset 0 -2px 0 0 rgba(0, 0, 0, 0.5), 0 3px 0 0 #0c0c0c, 0 6px 10px rgba(0, 0, 0, 0.3)`;
4259
4261
  const primaryHoverShadow = `inset 0 1.5px 0 0 rgba(255, 255, 255, 0.35), inset 0 -2px 0 0 rgba(0, 0, 0, 0.5), 0 4px 0 0 #0c0c0c, 0 8px 12px rgba(0, 0, 0, 0.35)`;
4260
4262
  const primaryActiveShadow = `inset 0 1px 0 0 rgba(255, 255, 255, 0.1), inset 0 -1px 0 0 rgba(0, 0, 0, 0.5), 0 1px 0 0 #0c0c0c, 0 2px 4px rgba(0, 0, 0, 0.2)`;
4263
+ const disabledShadow = `inset 0 1px 0 0 rgba(255, 255, 255, 0.15), inset 0 -1px 0 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 #1c1c1c`;
4264
+ const handleCopy = (wallet) => {
4265
+ if (onCopyAddress) onCopyAddress(wallet);
4266
+ if (typeof navigator !== "undefined" && navigator.clipboard) {
4267
+ navigator.clipboard.writeText(wallet.address).catch(() => {
4268
+ });
4269
+ }
4270
+ setShowToast(true);
4271
+ setTimeout(() => setShowToast(false), 2500);
4272
+ };
4261
4273
  return /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col gap-6 animate-in max-w-5xl fade-in duration-300" }, !hideControls && /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 w-full" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "relative w-full sm:w-96" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react76.default.createElement(
4262
4274
  "input",
4263
4275
  {
@@ -4276,34 +4288,49 @@ var UniversalWalletPage = ({
4276
4288
  },
4277
4289
  /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react76.default.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), /* @__PURE__ */ import_react76.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react76.default.createElement("p", { className: "text-[13px] text-black truncate font-medium" }, wallet.name), /* @__PURE__ */ import_react76.default.createElement("p", { className: `text-[13px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, wallet.balance, " ", wallet.currency))),
4278
4290
  /* @__PURE__ */ import_react76.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[10px] tracking-wide text-neutral-500 bg-neutral-100/80 px-2.5 py-1 rounded-full uppercase" }, wallet.network))
4279
- )))))), selectedWallet && /* @__PURE__ */ import_react76.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ import_react76.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react76.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ import_react76.default.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ import_react76.default.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14 mb-4" }), /* @__PURE__ */ import_react76.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 font-medium ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.balance, " ", selectedWallet.currency), /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50 uppercase mt-1" }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ import_react76.default.createElement("div", { className: "w-full flex justify-center mb-8" }, renderQrCode(selectedWallet)), /* @__PURE__ */ import_react76.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ import_react76.default.createElement("div", null, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[13px] text-black break-all font-medium" }, selectedWallet.address)), /* @__PURE__ */ import_react76.default.createElement("div", null, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Name"), /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[13px] text-black" }, selectedWallet.name))), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react76.default.createElement(
4291
+ )))))), selectedWallet && /* @__PURE__ */ import_react76.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => {
4292
+ setSelectedWallet(null);
4293
+ setShowToast(false);
4294
+ } }), /* @__PURE__ */ import_react76.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, showToast && /* @__PURE__ */ import_react76.default.createElement("div", { className: "absolute top-4 left-1/2 -translate-x-1/2 z-50 bg-neutral-900 text-white px-5 py-2.5 rounded-full text-[12px] font-medium tracking-wide shadow-xl animate-in slide-in-from-top-4 fade-in duration-200 pointer-events-none whitespace-nowrap" }, "Address copied to clipboard"), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react76.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ import_react76.default.createElement("button", { onClick: () => {
4295
+ setSelectedWallet(null);
4296
+ setShowToast(false);
4297
+ }, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ import_react76.default.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14 mb-4" }), /* @__PURE__ */ import_react76.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 font-medium ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.balance, " ", selectedWallet.currency), /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50 uppercase mt-1" }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ import_react76.default.createElement("div", { className: "w-full flex justify-center mb-8" }, renderQrCode(selectedWallet)), /* @__PURE__ */ import_react76.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ import_react76.default.createElement("div", null, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[13px] text-black break-all font-medium" }, selectedWallet.address)), /* @__PURE__ */ import_react76.default.createElement("div", null, /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Name"), /* @__PURE__ */ import_react76.default.createElement("span", { className: "text-[13px] text-black" }, selectedWallet.name))), /* @__PURE__ */ import_react76.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react76.default.createElement(
4280
4298
  "button",
4281
4299
  {
4300
+ disabled: isGeneratingStatement,
4282
4301
  onClick: () => onDownloadPayId && onDownloadPayId(selectedWallet),
4283
- className: "relative w-full flex items-center justify-center py-3 rounded-full bg-neutral-950 text-white transition-all duration-150 select-none outline-none active:translate-y-0.5",
4284
- style: { boxShadow: primaryBaseShadow },
4302
+ className: `
4303
+ relative w-full flex items-center justify-center py-3 rounded-full bg-neutral-950 text-white
4304
+ transition-all duration-150 select-none outline-none
4305
+ ${isGeneratingStatement ? "opacity-50 cursor-not-allowed" : "active:translate-y-0.5"}
4306
+ `,
4307
+ style: { boxShadow: isGeneratingStatement ? disabledShadow : primaryBaseShadow },
4285
4308
  onMouseEnter: (e) => {
4309
+ if (isGeneratingStatement) return;
4286
4310
  e.currentTarget.style.boxShadow = primaryHoverShadow;
4287
4311
  e.currentTarget.style.transform = "translateY(-1px)";
4288
4312
  },
4289
4313
  onMouseLeave: (e) => {
4314
+ if (isGeneratingStatement) return;
4290
4315
  e.currentTarget.style.boxShadow = primaryBaseShadow;
4291
4316
  e.currentTarget.style.transform = "translateY(0px)";
4292
4317
  },
4293
4318
  onMouseDown: (e) => {
4319
+ if (isGeneratingStatement) return;
4294
4320
  e.currentTarget.style.boxShadow = primaryActiveShadow;
4295
4321
  e.currentTarget.style.transform = "translateY(2px)";
4296
4322
  },
4297
4323
  onMouseUp: (e) => {
4324
+ if (isGeneratingStatement) return;
4298
4325
  e.currentTarget.style.transform = "translateY(-1px)";
4299
4326
  }
4300
4327
  },
4301
- /* @__PURE__ */ import_react76.default.createElement("span", { className: "absolute inset-0 rounded-full bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none" }),
4302
- /* @__PURE__ */ import_react76.default.createElement("span", { className: "relative z-10 text-[13px] tracking-wide font-medium" }, "Download Pay ID")
4328
+ /* @__PURE__ */ import_react76.default.createElement("span", { className: "absolute inset-0 rounded-full py-2 bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none" }),
4329
+ /* @__PURE__ */ import_react76.default.createElement("span", { className: "relative z-10 flex items-center justify-center gap-2 text-[13px] tracking-wide font-medium" }, isGeneratingStatement ? /* @__PURE__ */ import_react76.default.createElement(import_react77.HugeiconsIcon, { icon: import_core_free_icons27.Loading03Icon, size: 16, className: "animate-spin text-white" }) : "Generate Statement")
4303
4330
  ), /* @__PURE__ */ import_react76.default.createElement(
4304
4331
  "button",
4305
4332
  {
4306
- onClick: () => onCopyAddress && onCopyAddress(selectedWallet),
4333
+ onClick: () => handleCopy(selectedWallet),
4307
4334
  className: "w-full flex items-center justify-center py-2 rounded-full border border-neutral-200 text-black outline-none text-[13px] tracking-wide"
4308
4335
  },
4309
4336
  "Copy Wallet Address"
package/dist/index.mjs CHANGED
@@ -4240,6 +4240,7 @@ var UniversalWalletPage = ({
4240
4240
  headerDescription,
4241
4241
  hideControls = false,
4242
4242
  hideBalanceAmounts = false,
4243
+ isGeneratingStatement = false,
4243
4244
  wallets,
4244
4245
  isLoading = false,
4245
4246
  renderQrCode,
@@ -4248,6 +4249,7 @@ var UniversalWalletPage = ({
4248
4249
  }) => {
4249
4250
  const [selectedWallet, setSelectedWallet] = useState30(null);
4250
4251
  const [localSearchQuery, setLocalSearchQuery] = useState30("");
4252
+ const [showToast, setShowToast] = useState30(false);
4251
4253
  const filteredWallets = wallets.filter((wallet) => {
4252
4254
  const q = localSearchQuery.toLowerCase();
4253
4255
  return wallet.name.toLowerCase().includes(q) || wallet.currency.toLowerCase().includes(q) || wallet.network.toLowerCase().includes(q);
@@ -4255,6 +4257,16 @@ var UniversalWalletPage = ({
4255
4257
  const primaryBaseShadow = `inset 0 1.5px 0 0 rgba(255, 255, 255, 0.3), inset 0 -2px 0 0 rgba(0, 0, 0, 0.5), 0 3px 0 0 #0c0c0c, 0 6px 10px rgba(0, 0, 0, 0.3)`;
4256
4258
  const primaryHoverShadow = `inset 0 1.5px 0 0 rgba(255, 255, 255, 0.35), inset 0 -2px 0 0 rgba(0, 0, 0, 0.5), 0 4px 0 0 #0c0c0c, 0 8px 12px rgba(0, 0, 0, 0.35)`;
4257
4259
  const primaryActiveShadow = `inset 0 1px 0 0 rgba(255, 255, 255, 0.1), inset 0 -1px 0 0 rgba(0, 0, 0, 0.5), 0 1px 0 0 #0c0c0c, 0 2px 4px rgba(0, 0, 0, 0.2)`;
4260
+ const disabledShadow = `inset 0 1px 0 0 rgba(255, 255, 255, 0.15), inset 0 -1px 0 0 rgba(0, 0, 0, 0.3), 0 1px 0 0 #1c1c1c`;
4261
+ const handleCopy = (wallet) => {
4262
+ if (onCopyAddress) onCopyAddress(wallet);
4263
+ if (typeof navigator !== "undefined" && navigator.clipboard) {
4264
+ navigator.clipboard.writeText(wallet.address).catch(() => {
4265
+ });
4266
+ }
4267
+ setShowToast(true);
4268
+ setTimeout(() => setShowToast(false), 2500);
4269
+ };
4258
4270
  return /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-6 animate-in max-w-5xl fade-in duration-300" }, !hideControls && /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 w-full" }, /* @__PURE__ */ React46.createElement("div", { className: "relative w-full sm:w-96" }, /* @__PURE__ */ React46.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon31, { icon: Search01Icon3, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React46.createElement(
4259
4271
  "input",
4260
4272
  {
@@ -4273,34 +4285,49 @@ var UniversalWalletPage = ({
4273
4285
  },
4274
4286
  /* @__PURE__ */ React46.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React46.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), /* @__PURE__ */ React46.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React46.createElement("p", { className: "text-[13px] text-black truncate font-medium" }, wallet.name), /* @__PURE__ */ React46.createElement("p", { className: `text-[13px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, wallet.balance, " ", wallet.currency))),
4275
4287
  /* @__PURE__ */ React46.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React46.createElement("span", { className: "text-[10px] tracking-wide text-neutral-500 bg-neutral-100/80 px-2.5 py-1 rounded-full uppercase" }, wallet.network))
4276
- )))))), selectedWallet && /* @__PURE__ */ React46.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React46.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ React46.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ React46.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React46.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ React46.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon31, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React46.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React46.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14 mb-4" }), /* @__PURE__ */ React46.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 font-medium ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.balance, " ", selectedWallet.currency), /* @__PURE__ */ React46.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50 uppercase mt-1" }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ React46.createElement("div", { className: "w-full flex justify-center mb-8" }, renderQrCode(selectedWallet)), /* @__PURE__ */ React46.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React46.createElement("div", null, /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React46.createElement("span", { className: "text-[13px] text-black break-all font-medium" }, selectedWallet.address)), /* @__PURE__ */ React46.createElement("div", null, /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Name"), /* @__PURE__ */ React46.createElement("span", { className: "text-[13px] text-black" }, selectedWallet.name))), /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React46.createElement(
4288
+ )))))), selectedWallet && /* @__PURE__ */ React46.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React46.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => {
4289
+ setSelectedWallet(null);
4290
+ setShowToast(false);
4291
+ } }), /* @__PURE__ */ React46.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, showToast && /* @__PURE__ */ React46.createElement("div", { className: "absolute top-4 left-1/2 -translate-x-1/2 z-50 bg-neutral-900 text-white px-5 py-2.5 rounded-full text-[12px] font-medium tracking-wide shadow-xl animate-in slide-in-from-top-4 fade-in duration-200 pointer-events-none whitespace-nowrap" }, "Address copied to clipboard"), /* @__PURE__ */ React46.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React46.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ React46.createElement("button", { onClick: () => {
4292
+ setSelectedWallet(null);
4293
+ setShowToast(false);
4294
+ }, className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React46.createElement(HugeiconsIcon31, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React46.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React46.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14 mb-4" }), /* @__PURE__ */ React46.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 font-medium ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.balance, " ", selectedWallet.currency), /* @__PURE__ */ React46.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50 uppercase mt-1" }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ React46.createElement("div", { className: "w-full flex justify-center mb-8" }, renderQrCode(selectedWallet)), /* @__PURE__ */ React46.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React46.createElement("div", null, /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React46.createElement("span", { className: "text-[13px] text-black break-all font-medium" }, selectedWallet.address)), /* @__PURE__ */ React46.createElement("div", null, /* @__PURE__ */ React46.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Name"), /* @__PURE__ */ React46.createElement("span", { className: "text-[13px] text-black" }, selectedWallet.name))), /* @__PURE__ */ React46.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React46.createElement(
4277
4295
  "button",
4278
4296
  {
4297
+ disabled: isGeneratingStatement,
4279
4298
  onClick: () => onDownloadPayId && onDownloadPayId(selectedWallet),
4280
- className: "relative w-full flex items-center justify-center py-3 rounded-full bg-neutral-950 text-white transition-all duration-150 select-none outline-none active:translate-y-0.5",
4281
- style: { boxShadow: primaryBaseShadow },
4299
+ className: `
4300
+ relative w-full flex items-center justify-center py-3 rounded-full bg-neutral-950 text-white
4301
+ transition-all duration-150 select-none outline-none
4302
+ ${isGeneratingStatement ? "opacity-50 cursor-not-allowed" : "active:translate-y-0.5"}
4303
+ `,
4304
+ style: { boxShadow: isGeneratingStatement ? disabledShadow : primaryBaseShadow },
4282
4305
  onMouseEnter: (e) => {
4306
+ if (isGeneratingStatement) return;
4283
4307
  e.currentTarget.style.boxShadow = primaryHoverShadow;
4284
4308
  e.currentTarget.style.transform = "translateY(-1px)";
4285
4309
  },
4286
4310
  onMouseLeave: (e) => {
4311
+ if (isGeneratingStatement) return;
4287
4312
  e.currentTarget.style.boxShadow = primaryBaseShadow;
4288
4313
  e.currentTarget.style.transform = "translateY(0px)";
4289
4314
  },
4290
4315
  onMouseDown: (e) => {
4316
+ if (isGeneratingStatement) return;
4291
4317
  e.currentTarget.style.boxShadow = primaryActiveShadow;
4292
4318
  e.currentTarget.style.transform = "translateY(2px)";
4293
4319
  },
4294
4320
  onMouseUp: (e) => {
4321
+ if (isGeneratingStatement) return;
4295
4322
  e.currentTarget.style.transform = "translateY(-1px)";
4296
4323
  }
4297
4324
  },
4298
- /* @__PURE__ */ React46.createElement("span", { className: "absolute inset-0 rounded-full bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none" }),
4299
- /* @__PURE__ */ React46.createElement("span", { className: "relative z-10 text-[13px] tracking-wide font-medium" }, "Download Pay ID")
4325
+ /* @__PURE__ */ React46.createElement("span", { className: "absolute inset-0 rounded-full py-2 bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none" }),
4326
+ /* @__PURE__ */ React46.createElement("span", { className: "relative z-10 flex items-center justify-center gap-2 text-[13px] tracking-wide font-medium" }, isGeneratingStatement ? /* @__PURE__ */ React46.createElement(HugeiconsIcon31, { icon: Loading03Icon16, size: 16, className: "animate-spin text-white" }) : "Generate Statement")
4300
4327
  ), /* @__PURE__ */ React46.createElement(
4301
4328
  "button",
4302
4329
  {
4303
- onClick: () => onCopyAddress && onCopyAddress(selectedWallet),
4330
+ onClick: () => handleCopy(selectedWallet),
4304
4331
  className: "w-full flex items-center justify-center py-2 rounded-full border border-neutral-200 text-black outline-none text-[13px] tracking-wide"
4305
4332
  },
4306
4333
  "Copy Wallet Address"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "5.1.5",
3
+ "version": "5.1.8",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",