@retinalabsllc/zairusjs 5.1.8 → 5.1.15

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
@@ -566,6 +566,7 @@ declare const Banner: React.FC<BannerProps>;
566
566
  interface UniversalOrganizationPageProps {
567
567
  initialOrgName: string;
568
568
  initialSlug: string;
569
+ initialUsername?: string;
569
570
  orgId: string;
570
571
  isReadOnly?: boolean;
571
572
  slugPrefixUrl?: string;
@@ -1035,7 +1036,7 @@ interface UniversalTransactionPageProps {
1035
1036
  activeTypeFilter: string;
1036
1037
  onTypeFilterChange: (type: string) => void;
1037
1038
  onReportTransaction?: (tx: UniversalTransaction) => void;
1038
- onGenerateReceipt?: (tx: UniversalTransaction) => void;
1039
+ onGenerateReceipt?: (tx: UniversalTransaction) => void | Promise<void>;
1039
1040
  }
1040
1041
  declare const UniversalTransactionPage: React.FC<UniversalTransactionPageProps>;
1041
1042
 
package/dist/index.d.ts CHANGED
@@ -566,6 +566,7 @@ declare const Banner: React.FC<BannerProps>;
566
566
  interface UniversalOrganizationPageProps {
567
567
  initialOrgName: string;
568
568
  initialSlug: string;
569
+ initialUsername?: string;
569
570
  orgId: string;
570
571
  isReadOnly?: boolean;
571
572
  slugPrefixUrl?: string;
@@ -1035,7 +1036,7 @@ interface UniversalTransactionPageProps {
1035
1036
  activeTypeFilter: string;
1036
1037
  onTypeFilterChange: (type: string) => void;
1037
1038
  onReportTransaction?: (tx: UniversalTransaction) => void;
1038
- onGenerateReceipt?: (tx: UniversalTransaction) => void;
1039
+ onGenerateReceipt?: (tx: UniversalTransaction) => void | Promise<void>;
1039
1040
  }
1040
1041
  declare const UniversalTransactionPage: React.FC<UniversalTransactionPageProps>;
1041
1042
 
package/dist/index.js CHANGED
@@ -784,7 +784,7 @@ function AuthFormInner2({
784
784
  className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-black focus:ring-black cursor-pointer",
785
785
  required: true
786
786
  }
787
- ), /* @__PURE__ */ import_react6.default.createElement("label", { htmlFor: "zairus-terms", className: "text-[11px] text-neutral-500 cursor-pointer leading-snug" }, "I agree to ", companyName, "'s ", /* @__PURE__ */ import_react6.default.createElement("a", { href: termsUrl, target: "_blank", rel: "noreferrer", className: "text-[#1f26d6] underline " }, "Terms of Service"), " and ", /* @__PURE__ */ import_react6.default.createElement("a", { href: privacyUrl, target: "_blank", rel: "noreferrer", className: "text-[#1f26d6] underline " }, "Privacy Policy"), "."))), /* @__PURE__ */ import_react6.default.createElement(
787
+ ), /* @__PURE__ */ import_react6.default.createElement("label", { htmlFor: "zairus-terms", className: "text-[11px] text-neutral-500 cursor-pointer leading-snug" }, "I agree to ", companyName, "'s ", /* @__PURE__ */ import_react6.default.createElement("a", { href: termsUrl, target: "_blank", rel: "noreferrer", className: "text-[#1f26d6] " }, "Terms of Service"), " and ", /* @__PURE__ */ import_react6.default.createElement("a", { href: privacyUrl, target: "_blank", rel: "noreferrer", className: "text-[#1f26d6] " }, "Privacy Policy"), "."))), /* @__PURE__ */ import_react6.default.createElement(
788
788
  ThreeDActionButton,
789
789
  {
790
790
  type: "submit",
@@ -2361,6 +2361,7 @@ var InputSpinner4 = () => /* @__PURE__ */ import_react43.default.createElement("
2361
2361
  var UniversalOrganizationPage = ({
2362
2362
  initialOrgName,
2363
2363
  initialSlug,
2364
+ initialUsername,
2364
2365
  orgId,
2365
2366
  isReadOnly = false,
2366
2367
  slugPrefixUrl = ".aeona.eth",
@@ -2368,8 +2369,9 @@ var UniversalOrganizationPage = ({
2368
2369
  onSaveConfiguration,
2369
2370
  onCheckSlugAvailability
2370
2371
  }) => {
2372
+ const resolvedInitialUsername = initialUsername || initialSlug;
2371
2373
  const [web3Name, setWeb3Name] = (0, import_react43.useState)(initialOrgName);
2372
- const [username, setUsername] = (0, import_react43.useState)(initialSlug);
2374
+ const [username, setUsername] = (0, import_react43.useState)(resolvedInitialUsername);
2373
2375
  const [slug, setSlug] = (0, import_react43.useState)(initialSlug);
2374
2376
  const [isCheckingSlug, setIsCheckingSlug] = (0, import_react43.useState)(false);
2375
2377
  const [slugAvailable, setSlugAvailable] = (0, import_react43.useState)(null);
@@ -2377,8 +2379,8 @@ var UniversalOrganizationPage = ({
2377
2379
  (0, import_react43.useEffect)(() => {
2378
2380
  setWeb3Name(initialOrgName || "");
2379
2381
  setSlug(initialSlug || "");
2380
- setUsername(initialSlug || "");
2381
- }, [initialOrgName, initialSlug]);
2382
+ setUsername(initialUsername || initialSlug || "");
2383
+ }, [initialOrgName, initialSlug, initialUsername]);
2382
2384
  const handleWeb3NameChange = (val) => {
2383
2385
  setWeb3Name(val.replace(/[^a-zA-Z0-9\s-]/g, "").substring(0, 50));
2384
2386
  };
@@ -2426,7 +2428,7 @@ var UniversalOrganizationPage = ({
2426
2428
  organizationId: orgId,
2427
2429
  organizationName: web3Name !== initialOrgName ? web3Name : void 0,
2428
2430
  slug: slug !== initialSlug ? slug : void 0,
2429
- username: username !== initialSlug ? username : void 0
2431
+ username: username !== resolvedInitialUsername ? username : void 0
2430
2432
  // Transmit extra input parameter cleanly
2431
2433
  };
2432
2434
  const responseData = await onSaveConfiguration(payload);
@@ -2442,9 +2444,9 @@ var UniversalOrganizationPage = ({
2442
2444
  setIsSubmitting(false);
2443
2445
  }
2444
2446
  };
2445
- const hasChanges = web3Name !== initialOrgName || slug !== initialSlug || username !== initialSlug;
2447
+ const hasChanges = web3Name !== initialOrgName || slug !== initialSlug || username !== resolvedInitialUsername;
2446
2448
  const isSaveDisabled = isSubmitting || isReadOnly || isCheckingSlug || !hasChanges || web3Name.length < 3 || slug.length < 3 || username.length < 3 || slug !== initialSlug && slugAvailable === false;
2447
- return /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react43.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react43.default.createElement("div", null, /* @__PURE__ */ import_react43.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Defi Profile"), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your financial payment handle identifiers and global public cryptographic signature identity details.")), isReadOnly && /* @__PURE__ */ import_react43.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full shrink-0" }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ import_react43.default.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react43.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react43.default.createElement(
2449
+ return /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ import_react43.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react43.default.createElement("div", null, /* @__PURE__ */ import_react43.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your financial payment handle identifiers and global public cryptographic signature identity details.")), isReadOnly && /* @__PURE__ */ import_react43.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full shrink-0" }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons11.CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ import_react43.default.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react43.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react43.default.createElement(
2448
2450
  TextInput,
2449
2451
  {
2450
2452
  label: "Display Name",
@@ -2492,7 +2494,7 @@ var UniversalOrganizationPage = ({
2492
2494
  onClick: () => {
2493
2495
  setWeb3Name(initialOrgName);
2494
2496
  setSlug(initialSlug);
2495
- setUsername(initialSlug);
2497
+ setUsername(resolvedInitialUsername);
2496
2498
  },
2497
2499
  className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors outline-none"
2498
2500
  },
@@ -3918,6 +3920,7 @@ var UniversalTrashView = ({
3918
3920
  // src/components/UniversalTransactionPage.tsx
3919
3921
  var import_react72 = __toESM(require("react"));
3920
3922
  var import_react73 = require("@hugeicons/react");
3923
+ var import_react_hot_toast10 = __toESM(require("react-hot-toast"));
3921
3924
  var import_core_free_icons25 = require("@hugeicons/core-free-icons");
3922
3925
  var PageSpinner6 = () => /* @__PURE__ */ import_react72.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
3923
3926
  var formatDate3 = (dateInput) => {
@@ -3951,6 +3954,7 @@ var UniversalTransactionPage = ({
3951
3954
  onGenerateReceipt
3952
3955
  }) => {
3953
3956
  const [selectedTransaction, setSelectedTransaction] = (0, import_react72.useState)(null);
3957
+ const [isGeneratingReceipt, setIsGeneratingReceipt] = (0, import_react72.useState)(false);
3954
3958
  const [localSearchQuery, setLocalSearchQuery] = (0, import_react72.useState)(searchQuery);
3955
3959
  const [isTyping, setIsTyping] = (0, import_react72.useState)(false);
3956
3960
  const [isDirectionModalOpen, setIsDirectionModalOpen] = (0, import_react72.useState)(false);
@@ -3987,6 +3991,18 @@ var UniversalTransactionPage = ({
3987
3991
  if (tx.metadata?.description) return tx.metadata.description;
3988
3992
  return tx.type === "CARD_TRANSACTION" ? "Card Transaction" : "Wallet Transaction";
3989
3993
  };
3994
+ const handleGenerateReceipt = async () => {
3995
+ if (!onGenerateReceipt || !selectedTransaction) return;
3996
+ setIsGeneratingReceipt(true);
3997
+ try {
3998
+ await onGenerateReceipt(selectedTransaction);
3999
+ import_react_hot_toast10.default.success("Receipt generated successfully.");
4000
+ } catch (error) {
4001
+ import_react_hot_toast10.default.error("Failed to generate receipt.");
4002
+ } finally {
4003
+ setIsGeneratingReceipt(false);
4004
+ }
4005
+ };
3990
4006
  const isListLoading = isLoading || isTyping;
3991
4007
  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)`;
3992
4008
  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)`;
@@ -4041,37 +4057,59 @@ var UniversalTransactionPage = ({
4041
4057
  className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
4042
4058
  },
4043
4059
  /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.ArrowRight01Icon, size: 14 })
4044
- )))))), selectedTransaction && /* @__PURE__ */ import_react72.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ import_react72.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_react72.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react72.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ import_react72.default.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react72.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 ${selectedTransaction.direction === "CREDIT" ? "bg-neutral-100 text-neutral-6000" : "bg-neutral-100 text-neutral-600"}` }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: selectedTransaction.direction === "CREDIT" ? import_core_free_icons25.ArrowDownRight01Icon : import_core_free_icons25.ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ import_react72.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50" }, selectedTransaction.status)), /* @__PURE__ */ import_react72.default.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10" }, /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black break-all" }, selectedTransaction.reference)), /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black" }, formatDate3(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase()))), /* @__PURE__ */ import_react72.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react72.default.createElement(
4060
+ )))))), selectedTransaction && /* @__PURE__ */ import_react72.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ import_react72.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_react72.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react72.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ import_react72.default.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react72.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 ${selectedTransaction.direction === "CREDIT" ? "bg-neutral-100 text-neutral-6000" : "bg-neutral-100 text-neutral-600"}` }, /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: selectedTransaction.direction === "CREDIT" ? import_core_free_icons25.ArrowDownRight01Icon : import_core_free_icons25.ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ import_react72.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50" }, selectedTransaction.status), selectedTransaction.type === "WALLET_TRANSACTION" && /* @__PURE__ */ import_react72.default.createElement(
4061
+ "a",
4062
+ {
4063
+ href: `https://basescan.org/tx/${selectedTransaction.reference}`,
4064
+ target: "_blank",
4065
+ rel: "noopener noreferrer",
4066
+ className: "text-[11px] text-[#1f26d6] mt-4 transition-colors tracking-wide"
4067
+ },
4068
+ "View in block explorer"
4069
+ )), /* @__PURE__ */ import_react72.default.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black break-all" }, selectedTransaction.reference)), /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black" }, formatDate3(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ import_react72.default.createElement("div", null, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
4070
+ if (value === null || value === void 0 || typeof value === "object") return null;
4071
+ const formattedKey = key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase());
4072
+ return /* @__PURE__ */ import_react72.default.createElement("div", { key }, /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, formattedKey), /* @__PURE__ */ import_react72.default.createElement("span", { className: "text-[13px] text-black break-all" }, String(value)));
4073
+ })), /* @__PURE__ */ import_react72.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react72.default.createElement(
4045
4074
  "button",
4046
4075
  {
4047
- onClick: () => onReportTransaction && onReportTransaction(selectedTransaction),
4048
- className: "relative w-full flex items-center justify-center py-2 rounded-full bg-neutral-950 text-white transition-all duration-150 select-none outline-none active:translate-y-0.5",
4049
- style: { boxShadow: primaryBaseShadow },
4076
+ onClick: handleGenerateReceipt,
4077
+ disabled: isGeneratingReceipt,
4078
+ className: "relative w-full flex items-center justify-center py-2 rounded-full bg-neutral-950 text-white transition-all duration-150 select-none outline-none disabled:opacity-70 disabled:cursor-not-allowed",
4079
+ style: !isGeneratingReceipt ? { boxShadow: primaryBaseShadow } : {},
4050
4080
  onMouseEnter: (e) => {
4051
- e.currentTarget.style.boxShadow = primaryHoverShadow;
4052
- e.currentTarget.style.transform = "translateY(-1px)";
4081
+ if (!isGeneratingReceipt) {
4082
+ e.currentTarget.style.boxShadow = primaryHoverShadow;
4083
+ e.currentTarget.style.transform = "translateY(-1px)";
4084
+ }
4053
4085
  },
4054
4086
  onMouseLeave: (e) => {
4055
- e.currentTarget.style.boxShadow = primaryBaseShadow;
4056
- e.currentTarget.style.transform = "translateY(0px)";
4087
+ if (!isGeneratingReceipt) {
4088
+ e.currentTarget.style.boxShadow = primaryBaseShadow;
4089
+ e.currentTarget.style.transform = "translateY(0px)";
4090
+ }
4057
4091
  },
4058
4092
  onMouseDown: (e) => {
4059
- e.currentTarget.style.boxShadow = primaryActiveShadow;
4060
- e.currentTarget.style.transform = "translateY(2px)";
4093
+ if (!isGeneratingReceipt) {
4094
+ e.currentTarget.style.boxShadow = primaryActiveShadow;
4095
+ e.currentTarget.style.transform = "translateY(2px)";
4096
+ }
4061
4097
  },
4062
4098
  onMouseUp: (e) => {
4063
- e.currentTarget.style.transform = "translateY(-1px)";
4099
+ if (!isGeneratingReceipt) {
4100
+ e.currentTarget.style.transform = "translateY(-1px)";
4101
+ }
4064
4102
  }
4065
4103
  },
4066
4104
  /* @__PURE__ */ import_react72.default.createElement("span", { className: "absolute inset-0 rounded-full bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none" }),
4067
- /* @__PURE__ */ import_react72.default.createElement("span", { className: "relative z-10 text-[13px] tracking-wide" }, "Report Transaction")
4105
+ /* @__PURE__ */ import_react72.default.createElement("span", { className: "relative z-10 flex items-center justify-center gap-2 text-[13px] tracking-wide" }, isGeneratingReceipt ? /* @__PURE__ */ import_react72.default.createElement(import_react73.HugeiconsIcon, { icon: import_core_free_icons25.Loading03Icon, size: 14, className: "animate-spin" }) : null, isGeneratingReceipt ? "Generating..." : "Generate Receipt")
4068
4106
  ), /* @__PURE__ */ import_react72.default.createElement(
4069
4107
  "button",
4070
4108
  {
4071
- onClick: () => onGenerateReceipt && onGenerateReceipt(selectedTransaction),
4072
- className: "w-full flex items-center justify-center py-2 rounded-full border border-neutral-200 text-black outline-none text-[13px] tracking-wide"
4109
+ onClick: () => onReportTransaction && onReportTransaction(selectedTransaction),
4110
+ className: "w-full flex items-center justify-center py-2 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-[13px] tracking-wide"
4073
4111
  },
4074
- "Generate Receipt"
4112
+ "Report Transaction"
4075
4113
  ))))), isDirectionModalOpen && /* @__PURE__ */ import_react72.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsDirectionModalOpen(false) }), /* @__PURE__ */ import_react72.default.createElement("div", { ref: directionDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react72.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react72.default.createElement("h3", { className: "text-[14px] text-black tracking-tight" }, "Payment Type")), /* @__PURE__ */ import_react72.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, ["ALL", "CREDIT", "DEBIT"].map((option) => /* @__PURE__ */ import_react72.default.createElement(
4076
4114
  "button",
4077
4115
  {
@@ -4216,7 +4254,8 @@ var UniversalHomeView = ({
4216
4254
  {
4217
4255
  ...transactionsProps,
4218
4256
  hideControls: true,
4219
- hideBalanceAmounts: isBalanceHidden
4257
+ hideBalanceAmounts: isBalanceHidden,
4258
+ hidePagination: true
4220
4259
  }
4221
4260
  )));
4222
4261
  };
@@ -4294,7 +4333,15 @@ var UniversalWalletPage = ({
4294
4333
  } }), /* @__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
4334
  setSelectedWallet(null);
4296
4335
  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(
4336
+ }, 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-6" }, renderQrCode(selectedWallet)), /* @__PURE__ */ import_react76.default.createElement("div", { className: "mb-5" }, /* @__PURE__ */ import_react76.default.createElement(
4337
+ Banner,
4338
+ {
4339
+ type: "warning",
4340
+ title: "Important Deposit Warning",
4341
+ message: `Please send exactly ${selectedWallet.currency} to this address, and ensure you select the ${selectedWallet.network} network. Sending a different coin or using the wrong network will result in the permanent loss of your funds.`,
4342
+ isDismissible: false
4343
+ }
4344
+ )), /* @__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(
4298
4345
  "button",
4299
4346
  {
4300
4347
  disabled: isGeneratingStatement,
@@ -4439,7 +4486,7 @@ var Stagger = ({ steps, currentStep }) => {
4439
4486
 
4440
4487
  // src/components/UniversalRegistrationFlow.tsx
4441
4488
  var import_react88 = __toESM(require("react"));
4442
- var import_react_hot_toast10 = __toESM(require("react-hot-toast"));
4489
+ var import_react_hot_toast11 = __toESM(require("react-hot-toast"));
4443
4490
  var import_react89 = require("@hugeicons/react");
4444
4491
  var import_core_free_icons32 = require("@hugeicons/core-free-icons");
4445
4492
  var MACRO_STEPS = ["Details", "Documents", "Review", "Submit"];
@@ -4641,7 +4688,7 @@ var UniversalRegistrationFlow = ({
4641
4688
  if (data.appStatus === "QUEUED" || data.appStatus === "REJECTED") setMacroStep(0);
4642
4689
  }
4643
4690
  }).catch(() => {
4644
- import_react_hot_toast10.default.error("Uh oh! Something went wrong while loading.");
4691
+ import_react_hot_toast11.default.error("Uh oh! Something went wrong while loading.");
4645
4692
  }).finally(() => setIsBooting(false));
4646
4693
  }, [applicationId, type, apiEndpoint]);
4647
4694
  const saveProgress = async (newFormData = formData, newFormState = formState, newMacro = macroStep) => {
@@ -4653,11 +4700,11 @@ var UniversalRegistrationFlow = ({
4653
4700
  setIsAborting(true);
4654
4701
  const data = await baseApi("abort");
4655
4702
  if (data.success) {
4656
- import_react_hot_toast10.default.success("Application aborted.");
4703
+ import_react_hot_toast11.default.success("Application aborted.");
4657
4704
  setAppStatus("DRAFT");
4658
4705
  setMacroStep(0);
4659
4706
  setIsAbortModalOpen(false);
4660
- } else import_react_hot_toast10.default.error(data.error || "Uh oh! Something went wrong.");
4707
+ } else import_react_hot_toast11.default.error(data.error || "Uh oh! Something went wrong.");
4661
4708
  setIsAborting(false);
4662
4709
  };
4663
4710
  const handleBack = () => {
@@ -4700,7 +4747,7 @@ var UniversalRegistrationFlow = ({
4700
4747
  setIsAnalyzingNature(true);
4701
4748
  const data = await baseApi("analyze_nature", { description: formData.businessDesc });
4702
4749
  if (data.success) setSuggestedNature(data.data);
4703
- else import_react_hot_toast10.default.error(data.error || "Uh oh! Something went wrong.");
4750
+ else import_react_hot_toast11.default.error(data.error || "Uh oh! Something went wrong.");
4704
4751
  setIsAnalyzingNature(false);
4705
4752
  };
4706
4753
  const pollNameCheckJob = async (jobId) => {
@@ -4709,7 +4756,7 @@ var UniversalRegistrationFlow = ({
4709
4756
  setNameCheckResult(poll.data.result);
4710
4757
  setIsCheckingName(false);
4711
4758
  } else if (poll.success && poll.data.status === "error") {
4712
- import_react_hot_toast10.default.error(poll.data.error || "Uh oh! Something went wrong.");
4759
+ import_react_hot_toast11.default.error(poll.data.error || "Uh oh! Something went wrong.");
4713
4760
  setIsCheckingName(false);
4714
4761
  } else setTimeout(() => pollNameCheckJob(jobId), 3e3);
4715
4762
  };
@@ -4727,7 +4774,7 @@ var UniversalRegistrationFlow = ({
4727
4774
  const data = await baseApi("check_name_start", { name: nameToCheck, lineOfBusiness: formData.natureOfBusiness?.specificLabel });
4728
4775
  if (data.success && data.data.jobId) pollNameCheckJob(data.data.jobId);
4729
4776
  else {
4730
- import_react_hot_toast10.default.error(data.error || "Uh oh! Something went wrong.");
4777
+ import_react_hot_toast11.default.error(data.error || "Uh oh! Something went wrong.");
4731
4778
  setIsCheckingName(false);
4732
4779
  }
4733
4780
  };
@@ -4752,7 +4799,7 @@ var UniversalRegistrationFlow = ({
4752
4799
  throw new Error(data.error || "Failed to secure upload URL.");
4753
4800
  }
4754
4801
  } catch (error) {
4755
- import_react_hot_toast10.default.error(error.message);
4802
+ import_react_hot_toast11.default.error(error.message);
4756
4803
  } finally {
4757
4804
  if (optType === "other1") {
4758
4805
  setIsUploadingOther1(false);
@@ -4803,7 +4850,7 @@ var UniversalRegistrationFlow = ({
4803
4850
  const maxAllowed = Math.max(0, 100 - otherSharesSum);
4804
4851
  if (numValue > maxAllowed) {
4805
4852
  numValue = maxAllowed;
4806
- import_react_hot_toast10.default.error(`Total shares cannot exceed 100%. Remaining: ${maxAllowed}%`, { id: "share-limit" });
4853
+ import_react_hot_toast11.default.error(`Total shares cannot exceed 100%. Remaining: ${maxAllowed}%`, { id: "share-limit" });
4807
4854
  } else if (numValue < 0) numValue = 0;
4808
4855
  updated[index] = { ...updated[index], [key]: numValue.toString() };
4809
4856
  }
@@ -4834,7 +4881,7 @@ var UniversalRegistrationFlow = ({
4834
4881
  updatedMembers[memberIndex] = { ...updatedMembers[memberIndex], idExtractedData: data.data, idFileUrl: uploadData.data.fileUrl, idMetadata: { fileName: file.name, contentType: file.type, fileSizeInBytes: file.size } };
4835
4882
  setFormData({ ...formData, members: updatedMembers });
4836
4883
  saveProgress({ ...formData, members: updatedMembers });
4837
- } else import_react_hot_toast10.default.error(data.error || "Uh oh! Something went wrong.");
4884
+ } else import_react_hot_toast11.default.error(data.error || "Uh oh! Something went wrong.");
4838
4885
  } else {
4839
4886
  if (docType === "passport") setGlobalUploadingPassport(true);
4840
4887
  else setGlobalUploadingSignature(true);
@@ -4851,10 +4898,10 @@ var UniversalRegistrationFlow = ({
4851
4898
  }
4852
4899
  setFormData({ ...formData, members: updatedMembers });
4853
4900
  saveProgress({ ...formData, members: updatedMembers });
4854
- } else import_react_hot_toast10.default.error(`Failed to secure upload URL for ${docType}.`);
4901
+ } else import_react_hot_toast11.default.error(`Failed to secure upload URL for ${docType}.`);
4855
4902
  }
4856
4903
  } catch (error) {
4857
- import_react_hot_toast10.default.error(error.message);
4904
+ import_react_hot_toast11.default.error(error.message);
4858
4905
  } finally {
4859
4906
  if (docType === "id") setGlobalExtractingId(false);
4860
4907
  else if (docType === "passport") setGlobalUploadingPassport(false);
@@ -4903,7 +4950,7 @@ var UniversalRegistrationFlow = ({
4903
4950
  setFormData(updatedForm);
4904
4951
  saveProgress(updatedForm);
4905
4952
  } else {
4906
- import_react_hot_toast10.default.error(data.error || "Uh oh! Something went wrong.");
4953
+ import_react_hot_toast11.default.error(data.error || "Uh oh! Something went wrong.");
4907
4954
  setAiTasks([{ id: "1", label: "Document Scanned", status: "success" }, { id: "2", label: "Extraction Failed", status: "error" }]);
4908
4955
  }
4909
4956
  } else {
@@ -4923,10 +4970,10 @@ var UniversalRegistrationFlow = ({
4923
4970
  approveSection("signatureApproved", updatedForm);
4924
4971
  }
4925
4972
  setFormData(updatedForm);
4926
- } else import_react_hot_toast10.default.error(data.error || `Failed to upload ${docType}.`);
4973
+ } else import_react_hot_toast11.default.error(data.error || `Failed to upload ${docType}.`);
4927
4974
  }
4928
4975
  } catch (error) {
4929
- import_react_hot_toast10.default.error(error.message);
4976
+ import_react_hot_toast11.default.error(error.message);
4930
4977
  } finally {
4931
4978
  if (docType === "id") {
4932
4979
  setGlobalExtractingId(false);
@@ -5009,10 +5056,10 @@ var UniversalRegistrationFlow = ({
5009
5056
  }
5010
5057
  const data = await baseApi("submit", finalJsonPayload);
5011
5058
  if (data.success) {
5012
- import_react_hot_toast10.default.success("Application Submitted!");
5059
+ import_react_hot_toast11.default.success("Application Submitted!");
5013
5060
  onRedirectToApplication(applicationId);
5014
5061
  } else {
5015
- import_react_hot_toast10.default.error(data.error || "Uh oh! Something went wrong.");
5062
+ import_react_hot_toast11.default.error(data.error || "Uh oh! Something went wrong.");
5016
5063
  setIsSubmitting(false);
5017
5064
  }
5018
5065
  };
@@ -5061,7 +5108,7 @@ var UniversalRegistrationFlow = ({
5061
5108
 
5062
5109
  // src/components/UniversalDeveloperSettings.tsx
5063
5110
  var import_react90 = __toESM(require("react"));
5064
- var import_react_hot_toast11 = require("react-hot-toast");
5111
+ var import_react_hot_toast12 = require("react-hot-toast");
5065
5112
  var import_react91 = require("@hugeicons/react");
5066
5113
  var import_core_free_icons33 = require("@hugeicons/core-free-icons");
5067
5114
  var ButtonSpinner5 = () => /* @__PURE__ */ import_react90.default.createElement(import_react91.HugeiconsIcon, { icon: import_core_free_icons33.Loading03Icon, size: 16, className: "animate-spin text-current" });
@@ -5108,13 +5155,13 @@ SECRET_KEY="${secKey}"
5108
5155
  if (res.success && res.data) {
5109
5156
  setPublicKey(res.data.publicKey);
5110
5157
  downloadEnvironmentFile(res.data.publicKey, res.data.secretKey);
5111
- import_react_hot_toast11.toast.success("Keys generated. Check your downloads folder.");
5158
+ import_react_hot_toast12.toast.success("Keys generated. Check your downloads folder.");
5112
5159
  setIsRollModalOpen(false);
5113
5160
  } else {
5114
- import_react_hot_toast11.toast.error(res.error || "Uh oh! Something went wrong.");
5161
+ import_react_hot_toast12.toast.error(res.error || "Uh oh! Something went wrong.");
5115
5162
  }
5116
5163
  } catch (error) {
5117
- import_react_hot_toast11.toast.error("Uh oh! Something went wrong.");
5164
+ import_react_hot_toast12.toast.error("Uh oh! Something went wrong.");
5118
5165
  } finally {
5119
5166
  setIsGenerating(false);
5120
5167
  }
@@ -5127,12 +5174,12 @@ SECRET_KEY="${secKey}"
5127
5174
  const res = await onSaveWebhook(webhookUrl);
5128
5175
  if (res.success && res.data) {
5129
5176
  setWebhookUrl(res.data.webhookUrl || "");
5130
- import_react_hot_toast11.toast.success("Webhook URL updated.");
5177
+ import_react_hot_toast12.toast.success("Webhook URL updated.");
5131
5178
  } else {
5132
- import_react_hot_toast11.toast.error(res.error || "Uh oh! Something went wrong.");
5179
+ import_react_hot_toast12.toast.error(res.error || "Uh oh! Something went wrong.");
5133
5180
  }
5134
5181
  } catch (error) {
5135
- import_react_hot_toast11.toast.error("Uh oh! Something went wrong.");
5182
+ import_react_hot_toast12.toast.error("Uh oh! Something went wrong.");
5136
5183
  } finally {
5137
5184
  setIsSavingWebhook(false);
5138
5185
  }
package/dist/index.mjs CHANGED
@@ -689,7 +689,7 @@ function AuthFormInner2({
689
689
  className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-black focus:ring-black cursor-pointer",
690
690
  required: true
691
691
  }
692
- ), /* @__PURE__ */ React5.createElement("label", { htmlFor: "zairus-terms", className: "text-[11px] text-neutral-500 cursor-pointer leading-snug" }, "I agree to ", companyName, "'s ", /* @__PURE__ */ React5.createElement("a", { href: termsUrl, target: "_blank", rel: "noreferrer", className: "text-[#1f26d6] underline " }, "Terms of Service"), " and ", /* @__PURE__ */ React5.createElement("a", { href: privacyUrl, target: "_blank", rel: "noreferrer", className: "text-[#1f26d6] underline " }, "Privacy Policy"), "."))), /* @__PURE__ */ React5.createElement(
692
+ ), /* @__PURE__ */ React5.createElement("label", { htmlFor: "zairus-terms", className: "text-[11px] text-neutral-500 cursor-pointer leading-snug" }, "I agree to ", companyName, "'s ", /* @__PURE__ */ React5.createElement("a", { href: termsUrl, target: "_blank", rel: "noreferrer", className: "text-[#1f26d6] " }, "Terms of Service"), " and ", /* @__PURE__ */ React5.createElement("a", { href: privacyUrl, target: "_blank", rel: "noreferrer", className: "text-[#1f26d6] " }, "Privacy Policy"), "."))), /* @__PURE__ */ React5.createElement(
693
693
  ThreeDActionButton,
694
694
  {
695
695
  type: "submit",
@@ -2280,6 +2280,7 @@ var InputSpinner4 = () => /* @__PURE__ */ React29.createElement("svg", { classNa
2280
2280
  var UniversalOrganizationPage = ({
2281
2281
  initialOrgName,
2282
2282
  initialSlug,
2283
+ initialUsername,
2283
2284
  orgId,
2284
2285
  isReadOnly = false,
2285
2286
  slugPrefixUrl = ".aeona.eth",
@@ -2287,8 +2288,9 @@ var UniversalOrganizationPage = ({
2287
2288
  onSaveConfiguration,
2288
2289
  onCheckSlugAvailability
2289
2290
  }) => {
2291
+ const resolvedInitialUsername = initialUsername || initialSlug;
2290
2292
  const [web3Name, setWeb3Name] = useState17(initialOrgName);
2291
- const [username, setUsername] = useState17(initialSlug);
2293
+ const [username, setUsername] = useState17(resolvedInitialUsername);
2292
2294
  const [slug, setSlug] = useState17(initialSlug);
2293
2295
  const [isCheckingSlug, setIsCheckingSlug] = useState17(false);
2294
2296
  const [slugAvailable, setSlugAvailable] = useState17(null);
@@ -2296,8 +2298,8 @@ var UniversalOrganizationPage = ({
2296
2298
  useEffect13(() => {
2297
2299
  setWeb3Name(initialOrgName || "");
2298
2300
  setSlug(initialSlug || "");
2299
- setUsername(initialSlug || "");
2300
- }, [initialOrgName, initialSlug]);
2301
+ setUsername(initialUsername || initialSlug || "");
2302
+ }, [initialOrgName, initialSlug, initialUsername]);
2301
2303
  const handleWeb3NameChange = (val) => {
2302
2304
  setWeb3Name(val.replace(/[^a-zA-Z0-9\s-]/g, "").substring(0, 50));
2303
2305
  };
@@ -2345,7 +2347,7 @@ var UniversalOrganizationPage = ({
2345
2347
  organizationId: orgId,
2346
2348
  organizationName: web3Name !== initialOrgName ? web3Name : void 0,
2347
2349
  slug: slug !== initialSlug ? slug : void 0,
2348
- username: username !== initialSlug ? username : void 0
2350
+ username: username !== resolvedInitialUsername ? username : void 0
2349
2351
  // Transmit extra input parameter cleanly
2350
2352
  };
2351
2353
  const responseData = await onSaveConfiguration(payload);
@@ -2361,9 +2363,9 @@ var UniversalOrganizationPage = ({
2361
2363
  setIsSubmitting(false);
2362
2364
  }
2363
2365
  };
2364
- const hasChanges = web3Name !== initialOrgName || slug !== initialSlug || username !== initialSlug;
2366
+ const hasChanges = web3Name !== initialOrgName || slug !== initialSlug || username !== resolvedInitialUsername;
2365
2367
  const isSaveDisabled = isSubmitting || isReadOnly || isCheckingSlug || !hasChanges || web3Name.length < 3 || slug.length < 3 || username.length < 3 || slug !== initialSlug && slugAvailable === false;
2366
- return /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ React29.createElement(ManagedToaster, null), /* @__PURE__ */ React29.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Defi Profile"), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your financial payment handle identifiers and global public cryptographic signature identity details.")), isReadOnly && /* @__PURE__ */ React29.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full shrink-0" }, /* @__PURE__ */ React29.createElement(HugeiconsIcon15, { icon: CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ React29.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ React29.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ React29.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ React29.createElement(
2368
+ return /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl rounded-2xl p-6 bg-white fade-in duration-300 " }, /* @__PURE__ */ React29.createElement(ManagedToaster, null), /* @__PURE__ */ React29.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your financial payment handle identifiers and global public cryptographic signature identity details.")), isReadOnly && /* @__PURE__ */ React29.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-50 text-neutral-500 rounded-full shrink-0" }, /* @__PURE__ */ React29.createElement(HugeiconsIcon15, { icon: CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ React29.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ React29.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ React29.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ React29.createElement(
2367
2369
  TextInput,
2368
2370
  {
2369
2371
  label: "Display Name",
@@ -2411,7 +2413,7 @@ var UniversalOrganizationPage = ({
2411
2413
  onClick: () => {
2412
2414
  setWeb3Name(initialOrgName);
2413
2415
  setSlug(initialSlug);
2414
- setUsername(initialSlug);
2416
+ setUsername(resolvedInitialUsername);
2415
2417
  },
2416
2418
  className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors outline-none"
2417
2419
  },
@@ -3901,6 +3903,7 @@ var UniversalTrashView = ({
3901
3903
  // src/components/UniversalTransactionPage.tsx
3902
3904
  import React44, { useState as useState28, useEffect as useEffect19, useRef as useRef12 } from "react";
3903
3905
  import { HugeiconsIcon as HugeiconsIcon29 } from "@hugeicons/react";
3906
+ import toast9 from "react-hot-toast";
3904
3907
  import {
3905
3908
  ArrowLeft01Icon as ArrowLeft01Icon10,
3906
3909
  ArrowRight01Icon as ArrowRight01Icon10,
@@ -3944,6 +3947,7 @@ var UniversalTransactionPage = ({
3944
3947
  onGenerateReceipt
3945
3948
  }) => {
3946
3949
  const [selectedTransaction, setSelectedTransaction] = useState28(null);
3950
+ const [isGeneratingReceipt, setIsGeneratingReceipt] = useState28(false);
3947
3951
  const [localSearchQuery, setLocalSearchQuery] = useState28(searchQuery);
3948
3952
  const [isTyping, setIsTyping] = useState28(false);
3949
3953
  const [isDirectionModalOpen, setIsDirectionModalOpen] = useState28(false);
@@ -3980,6 +3984,18 @@ var UniversalTransactionPage = ({
3980
3984
  if (tx.metadata?.description) return tx.metadata.description;
3981
3985
  return tx.type === "CARD_TRANSACTION" ? "Card Transaction" : "Wallet Transaction";
3982
3986
  };
3987
+ const handleGenerateReceipt = async () => {
3988
+ if (!onGenerateReceipt || !selectedTransaction) return;
3989
+ setIsGeneratingReceipt(true);
3990
+ try {
3991
+ await onGenerateReceipt(selectedTransaction);
3992
+ toast9.success("Receipt generated successfully.");
3993
+ } catch (error) {
3994
+ toast9.error("Failed to generate receipt.");
3995
+ } finally {
3996
+ setIsGeneratingReceipt(false);
3997
+ }
3998
+ };
3983
3999
  const isListLoading = isLoading || isTyping;
3984
4000
  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)`;
3985
4001
  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)`;
@@ -4034,37 +4050,59 @@ var UniversalTransactionPage = ({
4034
4050
  className: "p-2 border border-neutral-100 rounded-full bg-white text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
4035
4051
  },
4036
4052
  /* @__PURE__ */ React44.createElement(HugeiconsIcon29, { icon: ArrowRight01Icon10, size: 14 })
4037
- )))))), selectedTransaction && /* @__PURE__ */ React44.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ React44.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__ */ React44.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React44.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ React44.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React44.createElement(HugeiconsIcon29, { icon: CancelCircleIcon2, size: 18 }))), /* @__PURE__ */ React44.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ React44.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 ${selectedTransaction.direction === "CREDIT" ? "bg-neutral-100 text-neutral-6000" : "bg-neutral-100 text-neutral-600"}` }, /* @__PURE__ */ React44.createElement(HugeiconsIcon29, { icon: selectedTransaction.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ React44.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ React44.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50" }, selectedTransaction.status)), /* @__PURE__ */ React44.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10" }, /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black break-all" }, selectedTransaction.reference)), /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black" }, formatDate3(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase()))), /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React44.createElement(
4053
+ )))))), selectedTransaction && /* @__PURE__ */ React44.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ React44.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__ */ React44.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React44.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ React44.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React44.createElement(HugeiconsIcon29, { icon: CancelCircleIcon2, size: 18 }))), /* @__PURE__ */ React44.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ React44.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 ${selectedTransaction.direction === "CREDIT" ? "bg-neutral-100 text-neutral-6000" : "bg-neutral-100 text-neutral-600"}` }, /* @__PURE__ */ React44.createElement(HugeiconsIcon29, { icon: selectedTransaction.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ React44.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ React44.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50" }, selectedTransaction.status), selectedTransaction.type === "WALLET_TRANSACTION" && /* @__PURE__ */ React44.createElement(
4054
+ "a",
4055
+ {
4056
+ href: `https://basescan.org/tx/${selectedTransaction.reference}`,
4057
+ target: "_blank",
4058
+ rel: "noopener noreferrer",
4059
+ className: "text-[11px] text-[#1f26d6] mt-4 transition-colors tracking-wide"
4060
+ },
4061
+ "View in block explorer"
4062
+ )), /* @__PURE__ */ React44.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black break-all" }, selectedTransaction.reference)), /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black" }, formatDate3(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
4063
+ if (value === null || value === void 0 || typeof value === "object") return null;
4064
+ const formattedKey = key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase());
4065
+ return /* @__PURE__ */ React44.createElement("div", { key }, /* @__PURE__ */ React44.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, formattedKey), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black break-all" }, String(value)));
4066
+ })), /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React44.createElement(
4038
4067
  "button",
4039
4068
  {
4040
- onClick: () => onReportTransaction && onReportTransaction(selectedTransaction),
4041
- className: "relative w-full flex items-center justify-center py-2 rounded-full bg-neutral-950 text-white transition-all duration-150 select-none outline-none active:translate-y-0.5",
4042
- style: { boxShadow: primaryBaseShadow },
4069
+ onClick: handleGenerateReceipt,
4070
+ disabled: isGeneratingReceipt,
4071
+ className: "relative w-full flex items-center justify-center py-2 rounded-full bg-neutral-950 text-white transition-all duration-150 select-none outline-none disabled:opacity-70 disabled:cursor-not-allowed",
4072
+ style: !isGeneratingReceipt ? { boxShadow: primaryBaseShadow } : {},
4043
4073
  onMouseEnter: (e) => {
4044
- e.currentTarget.style.boxShadow = primaryHoverShadow;
4045
- e.currentTarget.style.transform = "translateY(-1px)";
4074
+ if (!isGeneratingReceipt) {
4075
+ e.currentTarget.style.boxShadow = primaryHoverShadow;
4076
+ e.currentTarget.style.transform = "translateY(-1px)";
4077
+ }
4046
4078
  },
4047
4079
  onMouseLeave: (e) => {
4048
- e.currentTarget.style.boxShadow = primaryBaseShadow;
4049
- e.currentTarget.style.transform = "translateY(0px)";
4080
+ if (!isGeneratingReceipt) {
4081
+ e.currentTarget.style.boxShadow = primaryBaseShadow;
4082
+ e.currentTarget.style.transform = "translateY(0px)";
4083
+ }
4050
4084
  },
4051
4085
  onMouseDown: (e) => {
4052
- e.currentTarget.style.boxShadow = primaryActiveShadow;
4053
- e.currentTarget.style.transform = "translateY(2px)";
4086
+ if (!isGeneratingReceipt) {
4087
+ e.currentTarget.style.boxShadow = primaryActiveShadow;
4088
+ e.currentTarget.style.transform = "translateY(2px)";
4089
+ }
4054
4090
  },
4055
4091
  onMouseUp: (e) => {
4056
- e.currentTarget.style.transform = "translateY(-1px)";
4092
+ if (!isGeneratingReceipt) {
4093
+ e.currentTarget.style.transform = "translateY(-1px)";
4094
+ }
4057
4095
  }
4058
4096
  },
4059
4097
  /* @__PURE__ */ React44.createElement("span", { className: "absolute inset-0 rounded-full bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none" }),
4060
- /* @__PURE__ */ React44.createElement("span", { className: "relative z-10 text-[13px] tracking-wide" }, "Report Transaction")
4098
+ /* @__PURE__ */ React44.createElement("span", { className: "relative z-10 flex items-center justify-center gap-2 text-[13px] tracking-wide" }, isGeneratingReceipt ? /* @__PURE__ */ React44.createElement(HugeiconsIcon29, { icon: Loading03Icon15, size: 14, className: "animate-spin" }) : null, isGeneratingReceipt ? "Generating..." : "Generate Receipt")
4061
4099
  ), /* @__PURE__ */ React44.createElement(
4062
4100
  "button",
4063
4101
  {
4064
- onClick: () => onGenerateReceipt && onGenerateReceipt(selectedTransaction),
4065
- className: "w-full flex items-center justify-center py-2 rounded-full border border-neutral-200 text-black outline-none text-[13px] tracking-wide"
4102
+ onClick: () => onReportTransaction && onReportTransaction(selectedTransaction),
4103
+ className: "w-full flex items-center justify-center py-2 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-[13px] tracking-wide"
4066
4104
  },
4067
- "Generate Receipt"
4105
+ "Report Transaction"
4068
4106
  ))))), isDirectionModalOpen && /* @__PURE__ */ React44.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setIsDirectionModalOpen(false) }), /* @__PURE__ */ React44.createElement("div", { ref: directionDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React44.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ React44.createElement("h3", { className: "text-[14px] text-black tracking-tight" }, "Payment Type")), /* @__PURE__ */ React44.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, ["ALL", "CREDIT", "DEBIT"].map((option) => /* @__PURE__ */ React44.createElement(
4069
4107
  "button",
4070
4108
  {
@@ -4209,7 +4247,8 @@ var UniversalHomeView = ({
4209
4247
  {
4210
4248
  ...transactionsProps,
4211
4249
  hideControls: true,
4212
- hideBalanceAmounts: isBalanceHidden
4250
+ hideBalanceAmounts: isBalanceHidden,
4251
+ hidePagination: true
4213
4252
  }
4214
4253
  )));
4215
4254
  };
@@ -4291,7 +4330,15 @@ var UniversalWalletPage = ({
4291
4330
  } }), /* @__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
4331
  setSelectedWallet(null);
4293
4332
  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(
4333
+ }, 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-6" }, renderQrCode(selectedWallet)), /* @__PURE__ */ React46.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React46.createElement(
4334
+ Banner,
4335
+ {
4336
+ type: "warning",
4337
+ title: "Important Deposit Warning",
4338
+ message: `Please send exactly ${selectedWallet.currency} to this address, and ensure you select the ${selectedWallet.network} network. Sending a different coin or using the wrong network will result in the permanent loss of your funds.`,
4339
+ isDismissible: false
4340
+ }
4341
+ )), /* @__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(
4295
4342
  "button",
4296
4343
  {
4297
4344
  disabled: isGeneratingStatement,
@@ -4436,7 +4483,7 @@ var Stagger = ({ steps, currentStep }) => {
4436
4483
 
4437
4484
  // src/components/UniversalRegistrationFlow.tsx
4438
4485
  import React53, { useState as useState32, useEffect as useEffect21, useRef as useRef13 } from "react";
4439
- import toast9 from "react-hot-toast";
4486
+ import toast10 from "react-hot-toast";
4440
4487
  import { HugeiconsIcon as HugeiconsIcon36 } from "@hugeicons/react";
4441
4488
  import { CheckmarkBadge01Icon as CheckmarkBadge01Icon2, Upload01Icon as Upload01Icon3, Loading03Icon as Loading03Icon18, PencilEdit01Icon as PencilEdit01Icon2, Delete02Icon as Delete02Icon3, SignatureIcon, IdentificationIcon, ArrowLeft01Icon as ArrowLeft01Icon11, HourglassIcon } from "@hugeicons/core-free-icons";
4442
4489
  var MACRO_STEPS = ["Details", "Documents", "Review", "Submit"];
@@ -4638,7 +4685,7 @@ var UniversalRegistrationFlow = ({
4638
4685
  if (data.appStatus === "QUEUED" || data.appStatus === "REJECTED") setMacroStep(0);
4639
4686
  }
4640
4687
  }).catch(() => {
4641
- toast9.error("Uh oh! Something went wrong while loading.");
4688
+ toast10.error("Uh oh! Something went wrong while loading.");
4642
4689
  }).finally(() => setIsBooting(false));
4643
4690
  }, [applicationId, type, apiEndpoint]);
4644
4691
  const saveProgress = async (newFormData = formData, newFormState = formState, newMacro = macroStep) => {
@@ -4650,11 +4697,11 @@ var UniversalRegistrationFlow = ({
4650
4697
  setIsAborting(true);
4651
4698
  const data = await baseApi("abort");
4652
4699
  if (data.success) {
4653
- toast9.success("Application aborted.");
4700
+ toast10.success("Application aborted.");
4654
4701
  setAppStatus("DRAFT");
4655
4702
  setMacroStep(0);
4656
4703
  setIsAbortModalOpen(false);
4657
- } else toast9.error(data.error || "Uh oh! Something went wrong.");
4704
+ } else toast10.error(data.error || "Uh oh! Something went wrong.");
4658
4705
  setIsAborting(false);
4659
4706
  };
4660
4707
  const handleBack = () => {
@@ -4697,7 +4744,7 @@ var UniversalRegistrationFlow = ({
4697
4744
  setIsAnalyzingNature(true);
4698
4745
  const data = await baseApi("analyze_nature", { description: formData.businessDesc });
4699
4746
  if (data.success) setSuggestedNature(data.data);
4700
- else toast9.error(data.error || "Uh oh! Something went wrong.");
4747
+ else toast10.error(data.error || "Uh oh! Something went wrong.");
4701
4748
  setIsAnalyzingNature(false);
4702
4749
  };
4703
4750
  const pollNameCheckJob = async (jobId) => {
@@ -4706,7 +4753,7 @@ var UniversalRegistrationFlow = ({
4706
4753
  setNameCheckResult(poll.data.result);
4707
4754
  setIsCheckingName(false);
4708
4755
  } else if (poll.success && poll.data.status === "error") {
4709
- toast9.error(poll.data.error || "Uh oh! Something went wrong.");
4756
+ toast10.error(poll.data.error || "Uh oh! Something went wrong.");
4710
4757
  setIsCheckingName(false);
4711
4758
  } else setTimeout(() => pollNameCheckJob(jobId), 3e3);
4712
4759
  };
@@ -4724,7 +4771,7 @@ var UniversalRegistrationFlow = ({
4724
4771
  const data = await baseApi("check_name_start", { name: nameToCheck, lineOfBusiness: formData.natureOfBusiness?.specificLabel });
4725
4772
  if (data.success && data.data.jobId) pollNameCheckJob(data.data.jobId);
4726
4773
  else {
4727
- toast9.error(data.error || "Uh oh! Something went wrong.");
4774
+ toast10.error(data.error || "Uh oh! Something went wrong.");
4728
4775
  setIsCheckingName(false);
4729
4776
  }
4730
4777
  };
@@ -4749,7 +4796,7 @@ var UniversalRegistrationFlow = ({
4749
4796
  throw new Error(data.error || "Failed to secure upload URL.");
4750
4797
  }
4751
4798
  } catch (error) {
4752
- toast9.error(error.message);
4799
+ toast10.error(error.message);
4753
4800
  } finally {
4754
4801
  if (optType === "other1") {
4755
4802
  setIsUploadingOther1(false);
@@ -4800,7 +4847,7 @@ var UniversalRegistrationFlow = ({
4800
4847
  const maxAllowed = Math.max(0, 100 - otherSharesSum);
4801
4848
  if (numValue > maxAllowed) {
4802
4849
  numValue = maxAllowed;
4803
- toast9.error(`Total shares cannot exceed 100%. Remaining: ${maxAllowed}%`, { id: "share-limit" });
4850
+ toast10.error(`Total shares cannot exceed 100%. Remaining: ${maxAllowed}%`, { id: "share-limit" });
4804
4851
  } else if (numValue < 0) numValue = 0;
4805
4852
  updated[index] = { ...updated[index], [key]: numValue.toString() };
4806
4853
  }
@@ -4831,7 +4878,7 @@ var UniversalRegistrationFlow = ({
4831
4878
  updatedMembers[memberIndex] = { ...updatedMembers[memberIndex], idExtractedData: data.data, idFileUrl: uploadData.data.fileUrl, idMetadata: { fileName: file.name, contentType: file.type, fileSizeInBytes: file.size } };
4832
4879
  setFormData({ ...formData, members: updatedMembers });
4833
4880
  saveProgress({ ...formData, members: updatedMembers });
4834
- } else toast9.error(data.error || "Uh oh! Something went wrong.");
4881
+ } else toast10.error(data.error || "Uh oh! Something went wrong.");
4835
4882
  } else {
4836
4883
  if (docType === "passport") setGlobalUploadingPassport(true);
4837
4884
  else setGlobalUploadingSignature(true);
@@ -4848,10 +4895,10 @@ var UniversalRegistrationFlow = ({
4848
4895
  }
4849
4896
  setFormData({ ...formData, members: updatedMembers });
4850
4897
  saveProgress({ ...formData, members: updatedMembers });
4851
- } else toast9.error(`Failed to secure upload URL for ${docType}.`);
4898
+ } else toast10.error(`Failed to secure upload URL for ${docType}.`);
4852
4899
  }
4853
4900
  } catch (error) {
4854
- toast9.error(error.message);
4901
+ toast10.error(error.message);
4855
4902
  } finally {
4856
4903
  if (docType === "id") setGlobalExtractingId(false);
4857
4904
  else if (docType === "passport") setGlobalUploadingPassport(false);
@@ -4900,7 +4947,7 @@ var UniversalRegistrationFlow = ({
4900
4947
  setFormData(updatedForm);
4901
4948
  saveProgress(updatedForm);
4902
4949
  } else {
4903
- toast9.error(data.error || "Uh oh! Something went wrong.");
4950
+ toast10.error(data.error || "Uh oh! Something went wrong.");
4904
4951
  setAiTasks([{ id: "1", label: "Document Scanned", status: "success" }, { id: "2", label: "Extraction Failed", status: "error" }]);
4905
4952
  }
4906
4953
  } else {
@@ -4920,10 +4967,10 @@ var UniversalRegistrationFlow = ({
4920
4967
  approveSection("signatureApproved", updatedForm);
4921
4968
  }
4922
4969
  setFormData(updatedForm);
4923
- } else toast9.error(data.error || `Failed to upload ${docType}.`);
4970
+ } else toast10.error(data.error || `Failed to upload ${docType}.`);
4924
4971
  }
4925
4972
  } catch (error) {
4926
- toast9.error(error.message);
4973
+ toast10.error(error.message);
4927
4974
  } finally {
4928
4975
  if (docType === "id") {
4929
4976
  setGlobalExtractingId(false);
@@ -5006,10 +5053,10 @@ var UniversalRegistrationFlow = ({
5006
5053
  }
5007
5054
  const data = await baseApi("submit", finalJsonPayload);
5008
5055
  if (data.success) {
5009
- toast9.success("Application Submitted!");
5056
+ toast10.success("Application Submitted!");
5010
5057
  onRedirectToApplication(applicationId);
5011
5058
  } else {
5012
- toast9.error(data.error || "Uh oh! Something went wrong.");
5059
+ toast10.error(data.error || "Uh oh! Something went wrong.");
5013
5060
  setIsSubmitting(false);
5014
5061
  }
5015
5062
  };
@@ -5058,7 +5105,7 @@ var UniversalRegistrationFlow = ({
5058
5105
 
5059
5106
  // src/components/UniversalDeveloperSettings.tsx
5060
5107
  import React54, { useState as useState33, useEffect as useEffect22 } from "react";
5061
- import { toast as toast10 } from "react-hot-toast";
5108
+ import { toast as toast11 } from "react-hot-toast";
5062
5109
  import { HugeiconsIcon as HugeiconsIcon37 } from "@hugeicons/react";
5063
5110
  import { Loading03Icon as Loading03Icon19, CircleLock02Icon as CircleLock02Icon5 } from "@hugeicons/core-free-icons";
5064
5111
  var ButtonSpinner5 = () => /* @__PURE__ */ React54.createElement(HugeiconsIcon37, { icon: Loading03Icon19, size: 16, className: "animate-spin text-current" });
@@ -5105,13 +5152,13 @@ SECRET_KEY="${secKey}"
5105
5152
  if (res.success && res.data) {
5106
5153
  setPublicKey(res.data.publicKey);
5107
5154
  downloadEnvironmentFile(res.data.publicKey, res.data.secretKey);
5108
- toast10.success("Keys generated. Check your downloads folder.");
5155
+ toast11.success("Keys generated. Check your downloads folder.");
5109
5156
  setIsRollModalOpen(false);
5110
5157
  } else {
5111
- toast10.error(res.error || "Uh oh! Something went wrong.");
5158
+ toast11.error(res.error || "Uh oh! Something went wrong.");
5112
5159
  }
5113
5160
  } catch (error) {
5114
- toast10.error("Uh oh! Something went wrong.");
5161
+ toast11.error("Uh oh! Something went wrong.");
5115
5162
  } finally {
5116
5163
  setIsGenerating(false);
5117
5164
  }
@@ -5124,12 +5171,12 @@ SECRET_KEY="${secKey}"
5124
5171
  const res = await onSaveWebhook(webhookUrl);
5125
5172
  if (res.success && res.data) {
5126
5173
  setWebhookUrl(res.data.webhookUrl || "");
5127
- toast10.success("Webhook URL updated.");
5174
+ toast11.success("Webhook URL updated.");
5128
5175
  } else {
5129
- toast10.error(res.error || "Uh oh! Something went wrong.");
5176
+ toast11.error(res.error || "Uh oh! Something went wrong.");
5130
5177
  }
5131
5178
  } catch (error) {
5132
- toast10.error("Uh oh! Something went wrong.");
5179
+ toast11.error("Uh oh! Something went wrong.");
5133
5180
  } finally {
5134
5181
  setIsSavingWebhook(false);
5135
5182
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "5.1.8",
3
+ "version": "5.1.15",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",