@retinalabsllc/zairusjs 5.1.50 → 5.1.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -108,7 +108,7 @@ var ThreeDButton = ({
108
108
  {
109
109
  href,
110
110
  onClick,
111
- className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-semibold transition-all duration-150 select-none group overflow-hidden ${className}`,
111
+ className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-medium transition-all duration-150 select-none group overflow-hidden ${className}`,
112
112
  style: {
113
113
  backgroundImage: silverBg,
114
114
  backgroundSize: "cover",
@@ -165,7 +165,7 @@ var ThreeDActionButton = ({
165
165
  "aria-label": ariaLabel,
166
166
  className: `
167
167
  relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
168
- text-neutral-900 text-xs font-semibold tracking-widest
168
+ text-neutral-900 text-xs font-medium tracking-widest
169
169
  transition-all duration-150 select-none group outline-none overflow-hidden
170
170
  ${isInteractionDisabled ? "opacity-70 cursor-not-allowed" : "active:translate-y-0.5"}
171
171
  ${className}
@@ -920,7 +920,7 @@ var HeroSection = ({
920
920
  Link4,
921
921
  {
922
922
  href: secondaryCtaHref,
923
- className: "w-full sm:w-60 inline-flex font-semibold items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3 bg-black/40 backdrop-blur-md text-center text-white text-xs hover:bg-neutral-800 hover:border-neutral-500 outline-none transition-all drop-shadow-lg"
923
+ className: "w-full sm:w-60 inline-flex font-medium items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3 bg-black/40 backdrop-blur-md text-center text-white text-xs hover:border-neutral-500 outline-none transition-all drop-shadow-lg"
924
924
  },
925
925
  secondaryCtaText
926
926
  )), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React8.createElement("div", { className: "w-full flex flex-col items-center mt-4" }, appsText && /* @__PURE__ */ React8.createElement("p", { className: "text-[9px] tracking-[0.2em] text-neutral-300 mb-5 " }, appsText), /* @__PURE__ */ React8.createElement("div", { className: "flex flex-wrap justify-center items-center gap-6 opacity-90" }, appLogos.map((logo, idx) => /* @__PURE__ */ React8.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-8 sm:w-8 flex items-center justify-center cursor-default filter invert" }, /* @__PURE__ */ React8.createElement(
@@ -1190,7 +1190,7 @@ var ManagedDocument = ({
1190
1190
  "a",
1191
1191
  {
1192
1192
  href: `mailto:${contactEmail}`,
1193
- className: "text-white decoration-neutral-600 decoration-1 underline-offset-4 ml-1 transition-colors hover:decoration-white"
1193
+ className: "text-white decoration-neutral-600 decoration-1 ml-1 transition-colors hover:decoration-white"
1194
1194
  },
1195
1195
  contactEmail
1196
1196
  ))))))
@@ -1306,7 +1306,7 @@ var ManagedPricingBlock = ({
1306
1306
  {
1307
1307
  key: idx,
1308
1308
  onClick: () => setActiveTabIndex(idx),
1309
- className: `px-4 sm:px-6 py-1.5 sm:py-2 rounded-full text-[11px] sm:text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-800 text-white" : "text-neutral-500 hover:text-white hover:bg-neutral-800/50"}`
1309
+ className: `px-4 sm:px-6 py-1.5 sm:py-2 rounded-full text-[11px] sm:text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-800 text-white" : "text-neutral-500 hover:text-white /50"}`
1310
1310
  },
1311
1311
  tab.label
1312
1312
  );
@@ -1337,7 +1337,7 @@ var ManagedPricingBlock = ({
1337
1337
  Link5,
1338
1338
  {
1339
1339
  href: plan.ctaHref,
1340
- className: "w-full py-2.5 px-5 rounded-full font-semibold border border-neutral-700 text-center text-white text-xs hover:bg-neutral-800 hover:border-neutral-600 transition-colors mb-6 outline-none block"
1340
+ className: "w-full py-2.5 px-5 rounded-full font-medium border border-neutral-700 text-center text-white text-xs hover:border-neutral-600 transition-colors mb-6 outline-none block"
1341
1341
  },
1342
1342
  plan.ctaText
1343
1343
  ),
@@ -1406,7 +1406,7 @@ var ManagedBoardBlock = ({
1406
1406
  label: "LinkedIn",
1407
1407
  name: member.name
1408
1408
  }
1409
- ))))))), (contactText || contactEmail) && /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[11px] text-neutral-500 text-left" }, contactText, contactEmail && /* @__PURE__ */ React15.createElement("a", { href: `mailto:${contactEmail}`, className: "text-white decoration-white decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
1409
+ ))))))), (contactText || contactEmail) && /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[11px] text-neutral-500 text-left" }, contactText, contactEmail && /* @__PURE__ */ React15.createElement("a", { href: `mailto:${contactEmail}`, className: "text-white decoration-white decoration-2 ml-1 transition-colors" }, contactEmail))))));
1410
1410
  };
1411
1411
 
1412
1412
  // src/components/ManagedNotFoundBlock.tsx
@@ -1430,7 +1430,7 @@ var ManagedNotFoundBlock = ({
1430
1430
  Link6,
1431
1431
  {
1432
1432
  href: backLinkHref,
1433
- className: "inline-flex items-center justify-center px-8 py-2.5 border border-neutral-800 text-white hover:bg-neutral-800 transition-colors rounded-full text-[11px] tracking-widest outline-none"
1433
+ className: "inline-flex items-center justify-center px-8 py-2.5 border border-neutral-800 text-white transition-colors rounded-full text-[11px] tracking-widest outline-none"
1434
1434
  },
1435
1435
  backLinkText
1436
1436
  )));
@@ -1670,7 +1670,7 @@ var PortfolioHero = ({
1670
1670
  href: socialLinkHref,
1671
1671
  target: "_blank",
1672
1672
  rel: "noopener noreferrer",
1673
- className: "text-[11px] md:text-[14px] text-neutral-300 hover:text-white transition-colors mt-1 underline underline-offset-4 decoration-neutral-700 hover:decoration-white"
1673
+ className: "text-[11px] md:text-[14px] text-neutral-300 hover:text-white transition-colors mt-1 decoration-neutral-700 hover:decoration-white"
1674
1674
  },
1675
1675
  socialLinkText
1676
1676
  ))),
@@ -1686,7 +1686,7 @@ var PortfolioHero = ({
1686
1686
  Link7,
1687
1687
  {
1688
1688
  href: secondaryCtaHref,
1689
- className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-[11px] tracking-[0.2em] rounded-full px-8 py-2.5 border border-neutral-700 transition-colors text-white hover:bg-neutral-700 outline-none"
1689
+ className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-[11px] tracking-[0.2em] rounded-full px-8 py-2.5 border border-neutral-700 transition-colors text-white outline-none"
1690
1690
  },
1691
1691
  secondaryCtaText,
1692
1692
  /* @__PURE__ */ React21.createElement(HugeiconsIcon9, { icon: ArrowRight01Icon2, size: 16 })
@@ -1817,7 +1817,7 @@ var UniversalSidebar = ({
1817
1817
  "div",
1818
1818
  {
1819
1819
  onClick: handleCopyWallet,
1820
- className: "flex items-center gap-2 bg-neutral-900 rounded-full p-1 pr-3 cursor-pointer hover:bg-neutral-800 transition-colors",
1820
+ className: "flex items-center gap-2 bg-neutral-900 rounded-full p-1 pr-3 cursor-pointer transition-colors",
1821
1821
  title: "Copy Address"
1822
1822
  },
1823
1823
  web3Avatar ? /* @__PURE__ */ React23.createElement("img", { src: web3Avatar, alt: "Avatar", className: "w-6 h-6 rounded-full bg-neutral-800 object-cover shrink-0" }) : /* @__PURE__ */ React23.createElement("div", { className: "w-6 h-6 rounded-full bg-neutral-800 flex items-center justify-center text-[9px] text-white shrink-0" }, userInitials.substring(0, 2)),
@@ -1829,7 +1829,7 @@ var UniversalSidebar = ({
1829
1829
  setShowNotifDialog(true);
1830
1830
  setSelectedNotif(null);
1831
1831
  },
1832
- className: "relative w-8 h-8 shrink-0 bg-neutral-900 rounded-full flex items-center justify-center text-neutral-400 hover:text-white hover:bg-neutral-800 transition-all duration-300 outline-none"
1832
+ className: "relative w-8 h-8 shrink-0 bg-neutral-900 rounded-full flex items-center justify-center text-neutral-400 hover:text-white transition-all duration-300 outline-none"
1833
1833
  },
1834
1834
  /* @__PURE__ */ React23.createElement(HugeiconsIcon11, { icon: Notification01Icon, size: 14 }),
1835
1835
  unreadNotificationsCount > 0 && /* @__PURE__ */ React23.createElement("span", { className: "absolute top-2 right-2.5 w-2 h-2 bg-blue-500 rounded-full border border-neutral-900" })
@@ -1837,7 +1837,7 @@ var UniversalSidebar = ({
1837
1837
  Link8,
1838
1838
  {
1839
1839
  href: backUrl,
1840
- className: "w-10 h-10 shrink-0 bg-neutral-900 rounded-full flex items-center justify-center text-neutral-400 hover:text-white hover:bg-neutral-800 transition-all duration-300 outline-none",
1840
+ className: "w-10 h-10 shrink-0 bg-neutral-900 rounded-full flex items-center justify-center text-neutral-400 hover:text-white transition-all duration-300 outline-none",
1841
1841
  "aria-label": "Go Back"
1842
1842
  },
1843
1843
  /* @__PURE__ */ React23.createElement(HugeiconsIcon11, { icon: ArrowLeft01Icon2, size: 18 })
@@ -1884,7 +1884,7 @@ var UniversalSidebar = ({
1884
1884
  key: item.name,
1885
1885
  href: item.path,
1886
1886
  onClick: (e) => onNavClick ? onNavClick(e, item.path) : void 0,
1887
- className: `flex items-center gap-3 px-3 py-2 rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-neutral-800 text-white" : "text-neutral-400 hover:text-white hover:bg-neutral-800/50"}`,
1887
+ className: `flex items-center gap-3 px-3 py-2 rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-neutral-800 text-white" : "text-neutral-400 hover:text-white /50"}`,
1888
1888
  title: isCollapsed && !isMobileOpen ? item.name : void 0
1889
1889
  },
1890
1890
  /* @__PURE__ */ React23.createElement(
@@ -1902,7 +1902,7 @@ var UniversalSidebar = ({
1902
1902
  "button",
1903
1903
  {
1904
1904
  onClick: () => setShowLogoutDialog(true),
1905
- className: "w-8 h-8 shrink-0 rounded-full bg-neutral-800 flex items-center justify-center text-neutral-400 hover:text-white hover:bg-neutral-700 transition-all outline-none",
1905
+ className: "w-8 h-8 shrink-0 rounded-full bg-neutral-800 flex items-center justify-center text-neutral-400 hover:text-white transition-all outline-none",
1906
1906
  title: "Secure Logout"
1907
1907
  },
1908
1908
  /* @__PURE__ */ React23.createElement(HugeiconsIcon11, { icon: LogoutCircle02Icon, size: 16 })
@@ -1910,7 +1910,7 @@ var UniversalSidebar = ({
1910
1910
  "button",
1911
1911
  {
1912
1912
  onClick: () => setIsCollapsed(!isCollapsed),
1913
- className: "flex items-center justify-center md:justify-start gap-3 w-full p-2.5 rounded-full text-neutral-400 hover:text-white hover:bg-neutral-800 transition-colors outline-none"
1913
+ className: "flex items-center justify-center md:justify-start gap-3 w-full p-2.5 rounded-full text-neutral-400 hover:text-white transition-colors outline-none"
1914
1914
  },
1915
1915
  /* @__PURE__ */ React23.createElement(HugeiconsIcon11, { icon: SidebarLeft01Icon, size: 18, className: "shrink-0 text-neutral-500" }),
1916
1916
  !isCollapsed && /* @__PURE__ */ React23.createElement("span", { className: "text-xs " }, "Collapse")
@@ -1923,7 +1923,7 @@ var UniversalSidebar = ({
1923
1923
  setSelectedNotif(notif);
1924
1924
  onNotificationClick?.(notif);
1925
1925
  },
1926
- className: "p-3 flex items-start gap-3 hover:bg-neutral-800 cursor-pointer transition-colors"
1926
+ className: "p-3 flex items-start gap-3 cursor-pointer transition-colors"
1927
1927
  },
1928
1928
  /* @__PURE__ */ React23.createElement("div", { className: "mt-1.5 shrink-0" }, !notif.isRead ? /* @__PURE__ */ React23.createElement("div", { className: "w-1.5 h-1.5 bg-blue-500 rounded-full" }) : /* @__PURE__ */ React23.createElement("div", { className: "w-1.5 h-1.5 bg-transparent" })),
1929
1929
  /* @__PURE__ */ React23.createElement("div", { className: "flex-1 min-w-0 text-left" }, /* @__PURE__ */ React23.createElement("h5", { className: `text-[12px] truncate ${notif.isRead ? "text-neutral-400" : "text-white"}` }, notif.title), /* @__PURE__ */ React23.createElement("p", { className: "text-[11px] text-neutral-500 truncate mt-0.5" }, notif.message), /* @__PURE__ */ React23.createElement("span", { className: "text-[9px] text-neutral-600 tracking-widest mt-2 block" }, formatNotifDate(notif.createdAt)))
@@ -1932,7 +1932,7 @@ var UniversalSidebar = ({
1932
1932
  {
1933
1933
  disabled: notificationPage <= 1,
1934
1934
  onClick: () => onNotificationPageChange?.(notificationPage - 1),
1935
- className: "w-7 h-7 flex items-center justify-center rounded-full border border-neutral-700 text-neutral-400 disabled:opacity-30 outline-none hover:bg-neutral-700 hover:text-white transition-colors"
1935
+ className: "w-7 h-7 flex items-center justify-center rounded-full border border-neutral-700 text-neutral-400 disabled:opacity-30 outline-none hover:text-white transition-colors"
1936
1936
  },
1937
1937
  /* @__PURE__ */ React23.createElement(HugeiconsIcon11, { icon: ArrowLeft01Icon2, size: 12 })
1938
1938
  ), /* @__PURE__ */ React23.createElement(
@@ -1940,7 +1940,7 @@ var UniversalSidebar = ({
1940
1940
  {
1941
1941
  disabled: notificationPage >= notificationTotalPages || notificationTotalPages === 0,
1942
1942
  onClick: () => onNotificationPageChange?.(notificationPage + 1),
1943
- className: "w-7 h-7 flex items-center justify-center rounded-full border border-neutral-700 text-neutral-400 disabled:opacity-30 outline-none hover:bg-neutral-700 hover:text-white transition-colors"
1943
+ className: "w-7 h-7 flex items-center justify-center rounded-full border border-neutral-700 text-neutral-400 disabled:opacity-30 outline-none hover:text-white transition-colors"
1944
1944
  },
1945
1945
  /* @__PURE__ */ React23.createElement(HugeiconsIcon11, { icon: ArrowRight01Icon3, size: 12 })
1946
1946
  ))))), showLogoutDialog && showLogoutAction && /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React23.createElement(
@@ -1954,7 +1954,7 @@ var UniversalSidebar = ({
1954
1954
  {
1955
1955
  onClick: () => setShowLogoutDialog(false),
1956
1956
  disabled: isLoggingOut,
1957
- className: "flex-1 py-3 text-[13px] text-neutral-400 hover:bg-neutral-800 hover:text-white transition-colors disabled:opacity-50 outline-none"
1957
+ className: "flex-1 py-3 text-[13px] text-neutral-400 hover:text-white transition-colors disabled:opacity-50 outline-none"
1958
1958
  },
1959
1959
  "Cancel"
1960
1960
  ), /* @__PURE__ */ React23.createElement(
@@ -1962,7 +1962,7 @@ var UniversalSidebar = ({
1962
1962
  {
1963
1963
  onClick: handleLogoutInitiation,
1964
1964
  disabled: isLoggingOut,
1965
- className: "flex-1 py-3 text-[13px] text-red-400 hover:bg-neutral-800 hover:text-red-300 transition-colors disabled:opacity-50 flex justify-center items-center outline-none"
1965
+ className: "flex-1 py-3 text-[13px] text-red-400 hover:text-red-300 transition-colors disabled:opacity-50 flex justify-center items-center outline-none"
1966
1966
  },
1967
1967
  isLoggingOut ? /* @__PURE__ */ React23.createElement(ButtonSpinner, null) : "Log Out"
1968
1968
  )))), showInterceptDialog && /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React23.createElement(
@@ -1975,14 +1975,14 @@ var UniversalSidebar = ({
1975
1975
  "button",
1976
1976
  {
1977
1977
  onClick: onCancelIntercept,
1978
- className: "flex-1 py-3 text-[13px] text-neutral-400 hover:bg-neutral-800 hover:text-white transition-colors outline-none"
1978
+ className: "flex-1 py-3 text-[13px] text-neutral-400 hover:text-white transition-colors outline-none"
1979
1979
  },
1980
1980
  "Cancel"
1981
1981
  ), /* @__PURE__ */ React23.createElement(
1982
1982
  "button",
1983
1983
  {
1984
1984
  onClick: onConfirmIntercept,
1985
- className: "flex-1 py-3 text-[13px] text-white hover:bg-neutral-800 transition-colors flex justify-center items-center outline-none"
1985
+ className: "flex-1 py-3 text-[13px] text-white transition-colors flex justify-center items-center outline-none"
1986
1986
  },
1987
1987
  "Leave"
1988
1988
  )))));
@@ -2209,7 +2209,9 @@ import React26, { useState as useState15, useEffect as useEffect13 } from "react
2209
2209
  import toast5 from "react-hot-toast";
2210
2210
  import { HugeiconsIcon as HugeiconsIcon14 } from "@hugeicons/react";
2211
2211
  import {
2212
- CircleLock02Icon as CircleLock02Icon2
2212
+ CircleLock02Icon as CircleLock02Icon2,
2213
+ CancelCircleIcon as CancelCircleIcon2,
2214
+ Loading03Icon as Loading03Icon5
2213
2215
  } from "@hugeicons/core-free-icons";
2214
2216
  var UniversalProfileSettings = ({
2215
2217
  initialFirstName,
@@ -2219,11 +2221,19 @@ var UniversalProfileSettings = ({
2219
2221
  memberSince,
2220
2222
  isReadOnly = false,
2221
2223
  bannerProps,
2224
+ hasPin = false,
2225
+ isPinLoading = false,
2226
+ onSavePin,
2222
2227
  onSaveProfile
2223
2228
  }) => {
2224
2229
  const [firstName, setFirstName] = useState15(initialFirstName);
2225
2230
  const [lastName, setLastName] = useState15(initialLastName);
2226
2231
  const [isSubmitting, setIsSubmitting] = useState15(false);
2232
+ const [isPinModalOpen, setIsPinModalOpen] = useState15(false);
2233
+ const [oldPin, setOldPin] = useState15("");
2234
+ const [newPin, setNewPin] = useState15("");
2235
+ const [confirmPin, setConfirmPin] = useState15("");
2236
+ const [isPinSubmitting, setIsPinSubmitting] = useState15(false);
2227
2237
  useEffect13(() => {
2228
2238
  setFirstName(initialFirstName || "");
2229
2239
  setLastName(initialLastName || "");
@@ -2252,9 +2262,45 @@ var UniversalProfileSettings = ({
2252
2262
  setIsSubmitting(false);
2253
2263
  }
2254
2264
  };
2265
+ const closePinModal = () => {
2266
+ if (isPinSubmitting) return;
2267
+ setIsPinModalOpen(false);
2268
+ setOldPin("");
2269
+ setNewPin("");
2270
+ setConfirmPin("");
2271
+ };
2272
+ const handlePinInput = (val, setter) => {
2273
+ setter(val.replace(/\D/g, "").substring(0, 4));
2274
+ };
2275
+ const handlePinSubmit = async (e) => {
2276
+ e.preventDefault();
2277
+ if (!onSavePin) return;
2278
+ if (hasPin && oldPin.length !== 4) return toast5.error("Old PIN must be exactly 4 digits.");
2279
+ if (newPin.length !== 4) return toast5.error("New PIN must be exactly 4 digits.");
2280
+ if (newPin !== confirmPin) return toast5.error("New PINs do not match.");
2281
+ setIsPinSubmitting(true);
2282
+ try {
2283
+ const action = hasPin ? "change_pin" : "create_pin";
2284
+ const res = await onSavePin({
2285
+ action,
2286
+ oldPin: hasPin ? oldPin : void 0,
2287
+ newPin
2288
+ });
2289
+ if (res.success) {
2290
+ toast5.success(res.message || "PIN updated successfully.");
2291
+ closePinModal();
2292
+ } else {
2293
+ toast5.error(res.error || "Failed to update PIN.");
2294
+ }
2295
+ } catch (error) {
2296
+ toast5.error("Uh oh! Something went wrong.");
2297
+ } finally {
2298
+ setIsPinSubmitting(false);
2299
+ }
2300
+ };
2255
2301
  const hasChanges = firstName !== initialFirstName || lastName !== initialLastName;
2256
2302
  const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || firstName.trim().length === 0 || lastName.trim().length === 0;
2257
- return /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 bg-neutral-900 gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ React26.createElement(ManagedToaster, null), /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ React26.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React26.createElement("h1", { className: "text-white text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ React26.createElement("p", { className: "text-xs text-neutral-400 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ React26.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-800 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon14, { icon: CircleLock02Icon2, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ React26.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ React26.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ React26.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ React26.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React26.createElement(
2303
+ return /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 bg-neutral-900 gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ React26.createElement(ManagedToaster, null), /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ React26.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React26.createElement("h1", { className: "text-white text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ React26.createElement("p", { className: "text-xs text-neutral-400 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ React26.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-800 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon14, { icon: CircleLock02Icon2, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ React26.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ React26.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ React26.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ React26.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React26.createElement(
2258
2304
  TextInput,
2259
2305
  {
2260
2306
  label: "First Name",
@@ -2281,7 +2327,15 @@ var UniversalProfileSettings = ({
2281
2327
  },
2282
2328
  disabled: true
2283
2329
  }
2284
- ), /* @__PURE__ */ React26.createElement("p", { className: "text-[11px] text-neutral-500 mt-1 truncate" }, "To change your email address, please contact support.")), /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4" }, /* @__PURE__ */ React26.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ React26.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React26.createElement("span", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block truncate" }, "Account Status"), /* @__PURE__ */ React26.createElement("span", { className: "text-xs text-white block truncate" }, accountStatus)), /* @__PURE__ */ React26.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React26.createElement("span", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block truncate" }, "Member Since"), /* @__PURE__ */ React26.createElement("span", { className: "text-xs text-white block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A"))), /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ React26.createElement(
2330
+ ), /* @__PURE__ */ React26.createElement("div", { className: "flex items-center justify-between mt-1" }, /* @__PURE__ */ React26.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, "To change your email address, please contact support."), /* @__PURE__ */ React26.createElement(
2331
+ "button",
2332
+ {
2333
+ type: "button",
2334
+ onClick: () => setIsPinModalOpen(true),
2335
+ className: "text-[11px] text-neutral-400 hover:text-white transition-colors underline-offset-4 outline-none"
2336
+ },
2337
+ "PIN Management Settings"
2338
+ ))), /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4" }, /* @__PURE__ */ React26.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ React26.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React26.createElement("span", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block truncate" }, "Account Status"), /* @__PURE__ */ React26.createElement("span", { className: "text-xs text-white block truncate" }, accountStatus)), /* @__PURE__ */ React26.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React26.createElement("span", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block truncate" }, "Member Since"), /* @__PURE__ */ React26.createElement("span", { className: "text-xs text-white block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A"))), /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ React26.createElement(
2285
2339
  "button",
2286
2340
  {
2287
2341
  type: "button",
@@ -2301,7 +2355,49 @@ var UniversalProfileSettings = ({
2301
2355
  className: "min-w-32 w-full sm:w-auto"
2302
2356
  },
2303
2357
  "Save Changes"
2304
- ))))));
2358
+ ))))), isPinModalOpen && /* @__PURE__ */ React26.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React26.createElement("div", { className: "absolute inset-0 bg-black/60", onClick: closePinModal }), /* @__PURE__ */ React26.createElement("div", { className: "relative w-full max-w-sm bg-neutral-900 rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React26.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React26.createElement("h3", { className: "text-[15px] text-white tracking-tight" }, hasPin ? "Change PIN" : "Create PIN"), /* @__PURE__ */ React26.createElement("button", { onClick: closePinModal, disabled: isPinSubmitting, className: "text-neutral-500 hover:text-white transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon14, { icon: CancelCircleIcon2, size: 18 }))), /* @__PURE__ */ React26.createElement("div", { className: "p-6" }, isPinLoading ? /* @__PURE__ */ React26.createElement("div", { className: "flex flex-col items-center justify-center py-10" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon14, { icon: Loading03Icon5, size: 28, className: "animate-spin text-neutral-500 mb-4" })) : /* @__PURE__ */ React26.createElement("form", { onSubmit: handlePinSubmit, className: "flex flex-col gap-5" }, hasPin && /* @__PURE__ */ React26.createElement("div", null, /* @__PURE__ */ React26.createElement("label", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Old PIN"), /* @__PURE__ */ React26.createElement(
2359
+ "input",
2360
+ {
2361
+ type: "password",
2362
+ maxLength: 4,
2363
+ disabled: isPinSubmitting,
2364
+ value: oldPin,
2365
+ onChange: (e) => handlePinInput(e.target.value, setOldPin),
2366
+ className: "w-full px-4 py-2.5 bg-neutral-950 border border-neutral-800 rounded-xl text-white text-[13px] outline-none focus:border-neutral-600 transition-colors placeholder-neutral-700 tracking-[0.2em]",
2367
+ placeholder: "\u2022\u2022\u2022\u2022"
2368
+ }
2369
+ )), /* @__PURE__ */ React26.createElement("div", null, /* @__PURE__ */ React26.createElement("label", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, hasPin ? "New PIN" : "Enter 4-Digit PIN"), /* @__PURE__ */ React26.createElement(
2370
+ "input",
2371
+ {
2372
+ type: "password",
2373
+ maxLength: 4,
2374
+ disabled: isPinSubmitting,
2375
+ value: newPin,
2376
+ onChange: (e) => handlePinInput(e.target.value, setNewPin),
2377
+ className: "w-full px-4 py-2.5 bg-neutral-950 border border-neutral-800 rounded-xl text-white text-[13px] outline-none focus:border-neutral-600 transition-colors placeholder-neutral-700 tracking-[0.2em]",
2378
+ placeholder: "\u2022\u2022\u2022\u2022"
2379
+ }
2380
+ )), /* @__PURE__ */ React26.createElement("div", null, /* @__PURE__ */ React26.createElement("label", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Retype New PIN"), /* @__PURE__ */ React26.createElement(
2381
+ "input",
2382
+ {
2383
+ type: "password",
2384
+ maxLength: 4,
2385
+ disabled: isPinSubmitting,
2386
+ value: confirmPin,
2387
+ onChange: (e) => handlePinInput(e.target.value, setConfirmPin),
2388
+ className: "w-full px-4 py-2.5 bg-neutral-950 border border-neutral-800 rounded-xl text-white text-[13px] outline-none focus:border-neutral-600 transition-colors placeholder-neutral-700 tracking-[0.2em]",
2389
+ placeholder: "\u2022\u2022\u2022\u2022"
2390
+ }
2391
+ )), /* @__PURE__ */ React26.createElement("div", { className: "pt-4" }, /* @__PURE__ */ React26.createElement(
2392
+ ThreeDActionButton,
2393
+ {
2394
+ type: "submit",
2395
+ disabled: isPinSubmitting || newPin.length !== 4 || confirmPin.length !== 4 || hasPin && oldPin.length !== 4,
2396
+ isLoading: isPinSubmitting,
2397
+ className: "w-full py-3"
2398
+ },
2399
+ hasPin ? "Update PIN" : "Set PIN"
2400
+ )))))));
2305
2401
  };
2306
2402
 
2307
2403
  // src/components/UniversalErrorView.tsx
@@ -2342,7 +2438,7 @@ var UniversalErrorView = ({
2342
2438
  "button",
2343
2439
  {
2344
2440
  onClick: () => window.location.href = returnUrl,
2345
- className: "px-6 py-2 bg-neutral-800 hover:bg-neutral-700 text-white border border-neutral-700 rounded-full text-[11px] tracking-widest transition-colors w-full sm:w-auto outline-none"
2441
+ className: "px-6 py-2 text-white border border-neutral-700 rounded-full text-[11px] tracking-widest transition-colors w-full sm:w-auto outline-none"
2346
2442
  },
2347
2443
  returnLabel
2348
2444
  ) : (
@@ -2351,14 +2447,14 @@ var UniversalErrorView = ({
2351
2447
  "button",
2352
2448
  {
2353
2449
  onClick: () => window.location.href = returnUrl,
2354
- className: "px-6 py-2 bg-transparent border border-neutral-700 hover:bg-neutral-800 text-neutral-400 hover:text-white rounded-full text-[11px] tracking-widest transition-colors w-full sm:w-auto outline-none"
2450
+ className: "px-6 py-2 bg-transparent border border-neutral-700 text-neutral-400 hover:text-white rounded-full text-[11px] tracking-widest transition-colors w-full sm:w-auto outline-none"
2355
2451
  },
2356
2452
  "Back Home"
2357
2453
  ), /* @__PURE__ */ React27.createElement(
2358
2454
  "button",
2359
2455
  {
2360
2456
  onClick: onRetry,
2361
- className: "px-6 py-2 bg-white hover:bg-neutral-200 text-black rounded-full text-[11px] tracking-widest transition-colors w-full sm:w-auto outline-none capitalize"
2457
+ className: "px-6 py-2 bg-white text-black rounded-full text-[11px] tracking-widest transition-colors w-full sm:w-auto outline-none capitalize"
2362
2458
  },
2363
2459
  "Refresh ",
2364
2460
  envName
@@ -2375,15 +2471,15 @@ import toast6 from "react-hot-toast";
2375
2471
  import {
2376
2472
  ArrowLeft01Icon as ArrowLeft01Icon3,
2377
2473
  ArrowRight01Icon as ArrowRight01Icon4,
2378
- Loading03Icon as Loading03Icon5,
2474
+ Loading03Icon as Loading03Icon6,
2379
2475
  ArrowDownRight01Icon,
2380
2476
  ArrowUpRight01Icon,
2381
2477
  Search01Icon,
2382
2478
  SearchList02Icon,
2383
2479
  ListSettingIcon,
2384
- CancelCircleIcon as CancelCircleIcon2
2480
+ CancelCircleIcon as CancelCircleIcon3
2385
2481
  } from "@hugeicons/core-free-icons";
2386
- var PageSpinner2 = () => /* @__PURE__ */ React28.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: Loading03Icon5, size: 32, className: "animate-spin mb-4 text-white" }));
2482
+ var PageSpinner2 = () => /* @__PURE__ */ React28.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: Loading03Icon6, size: 32, className: "animate-spin mb-4 text-white" }));
2387
2483
  var formatDate = (dateInput) => {
2388
2484
  const d = new Date(dateInput);
2389
2485
  const day = d.getDate();
@@ -2394,6 +2490,10 @@ var formatDate = (dateInput) => {
2394
2490
  var formatTime = (dateInput) => {
2395
2491
  return new Date(dateInput).toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit" });
2396
2492
  };
2493
+ var truncateAddress = (address) => {
2494
+ if (!address || address.length < 12) return address;
2495
+ return `${address.substring(0, 6)}...${address.substring(address.length - 4)}`;
2496
+ };
2397
2497
  var UniversalTransactionPage = ({
2398
2498
  headerTitle,
2399
2499
  headerDescription,
@@ -2478,7 +2578,7 @@ var UniversalTransactionPage = ({
2478
2578
  "button",
2479
2579
  {
2480
2580
  onClick: () => setIsDirectionModalOpen(true),
2481
- className: "flex items-center gap-2 whitespace-nowrap border border-neutral-800 px-5 py-2 rounded-full text-[12px] text-neutral-400 hover:text-white hover:bg-neutral-800 transition-colors outline-none"
2581
+ className: "flex items-center gap-2 whitespace-nowrap border border-neutral-800 px-5 py-2 rounded-full text-[12px] text-neutral-400 hover:text-white transition-colors outline-none"
2482
2582
  },
2483
2583
  /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: SearchList02Icon, size: 12 }),
2484
2584
  activeDirectionFilter === "ALL" ? "Payment Type" : activeDirectionFilter
@@ -2486,7 +2586,7 @@ var UniversalTransactionPage = ({
2486
2586
  "button",
2487
2587
  {
2488
2588
  onClick: () => setIsTypeModalOpen(true),
2489
- className: "flex items-center gap-2 whitespace-nowrap border border-neutral-800 px-5 py-2 rounded-full text-[12px] text-neutral-400 hover:text-white hover:bg-neutral-800 transition-colors outline-none"
2589
+ className: "flex items-center gap-2 whitespace-nowrap border border-neutral-800 px-5 py-2 rounded-full text-[12px] text-neutral-400 hover:text-white transition-colors outline-none"
2490
2590
  },
2491
2591
  /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: ListSettingIcon, size: 14 }),
2492
2592
  activeTypeFilter === "ALL" ? "All Transactions" : activeTypeFilter.replace("_", " ")
@@ -2495,7 +2595,7 @@ var UniversalTransactionPage = ({
2495
2595
  {
2496
2596
  key: tx.id,
2497
2597
  onClick: () => setSelectedTransaction(tx),
2498
- className: "flex items-center justify-between py-4 hover:bg-neutral-800/50 transition-colors cursor-pointer group min-w-0 px-2 -mx-2 rounded-xl"
2598
+ className: "flex items-center justify-between py-4 /50 transition-colors cursor-pointer group min-w-0 px-2 -mx-2 rounded-xl"
2499
2599
  },
2500
2600
  /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React28.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-700 text-white` }, /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: tx.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ React28.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React28.createElement("p", { className: "text-[13px] text-white truncate" }, getDisplayName(tx)), /* @__PURE__ */ React28.createElement("p", { className: `text-[13px] text-neutral-400 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, tx.direction === "CREDIT" ? "+" : "-", tx.amount, " ", tx.currency))),
2501
2601
  /* @__PURE__ */ React28.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] text-neutral-500" }, formatDate(tx.createdAt)), /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] text-neutral-500 capitalize" }, tx.direction.toLowerCase()))
@@ -2515,16 +2615,8 @@ var UniversalTransactionPage = ({
2515
2615
  className: "p-2 border border-neutral-800 rounded-full text-neutral-500 hover:text-white hover:border-neutral-600 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
2516
2616
  },
2517
2617
  /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: ArrowRight01Icon4, size: 14 })
2518
- )))))), selectedTransaction && /* @__PURE__ */ React28.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React28.createElement("div", { className: "absolute inset-0 bg-black/60", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ React28.createElement("div", { className: "relative w-full max-w-sm bg-neutral-900 rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ React28.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React28.createElement("h3", { className: "text-[15px] text-white tracking-tight" }, "Details"), /* @__PURE__ */ React28.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-500 hover:text-white transition-colors outline-none" }, /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: CancelCircleIcon2, size: 18 }))), /* @__PURE__ */ React28.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ React28.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 bg-neutral-700 text-white` }, /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: selectedTransaction.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ React28.createElement("h2", { className: `text-2xl text-white mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ React28.createElement("span", { className: "text-[9px] tracking-widest text-neutral-400 px-4 py-1.5 rounded-full border border-neutral-800" }, selectedTransaction.status), selectedTransaction.type === "WALLET_TRANSACTION" && /* @__PURE__ */ React28.createElement(
2519
- "a",
2520
- {
2521
- href: `https://basescan.org/tx/${selectedTransaction.reference}`,
2522
- target: "_blank",
2523
- rel: "noopener noreferrer",
2524
- className: "text-[11px] text-white mt-4 transition-colors tracking-wide hover:text-neutral-300"
2525
- },
2526
- "View in block explorer"
2527
- )), /* @__PURE__ */ React28.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Reference ID"), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white break-all" }, selectedTransaction.reference)), /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Date & Time"), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white" }, formatDate(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Transaction Type"), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Flow Direction"), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
2618
+ )))))), selectedTransaction && /* @__PURE__ */ React28.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React28.createElement("div", { className: "absolute inset-0 bg-black/60", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ React28.createElement("div", { className: "relative w-full max-w-sm bg-neutral-900 rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ React28.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React28.createElement("h3", { className: "text-[15px] text-white tracking-tight" }, "Details"), /* @__PURE__ */ React28.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-500 hover:text-white transition-colors outline-none" }, /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React28.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ React28.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 bg-neutral-700 text-white` }, /* @__PURE__ */ React28.createElement(HugeiconsIcon16, { icon: selectedTransaction.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ React28.createElement("h2", { className: `text-2xl text-white mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ React28.createElement("span", { className: "text-[9px] tracking-widest text-neutral-400 px-4 py-1.5 rounded-full border border-neutral-800" }, selectedTransaction.status)), /* @__PURE__ */ React28.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Reference ID"), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white break-all" }, selectedTransaction.reference)), /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Date & Time"), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white" }, formatDate(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Transaction Type"), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Flow Direction"), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Transfer Route"), /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-2 text-[13px] text-white" }, /* @__PURE__ */ React28.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ React28.createElement("span", { className: "text-neutral-500" }, "\u2192"), /* @__PURE__ */ React28.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
2619
+ if (key === "fromAddress" || key === "toAddress") return null;
2528
2620
  if (value === null || value === void 0 || typeof value === "object") return null;
2529
2621
  const formattedKey = key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase());
2530
2622
  return /* @__PURE__ */ React28.createElement("div", { key }, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, formattedKey), /* @__PURE__ */ React28.createElement("span", { className: "text-[13px] text-white break-all" }, String(value)));
@@ -2540,9 +2632,18 @@ var UniversalTransactionPage = ({
2540
2632
  "button",
2541
2633
  {
2542
2634
  onClick: () => onReportTransaction && onReportTransaction(selectedTransaction),
2543
- className: "w-full flex items-center font-semibold justify-center py-2.5 rounded-full border border-neutral-700 text-white hover:bg-neutral-800 transition-colors outline-none text-[13px] tracking-wide mt-2"
2635
+ className: "w-full flex items-center font-medium justify-center py-2.5 rounded-full border border-neutral-700 text-white transition-colors outline-none text-[13px] tracking-wide mt-2"
2544
2636
  },
2545
2637
  "Report Transaction"
2638
+ ), selectedTransaction.type === "WALLET_TRANSACTION" && /* @__PURE__ */ React28.createElement(
2639
+ "a",
2640
+ {
2641
+ href: `https://basescan.org/tx/${selectedTransaction.reference}`,
2642
+ target: "_blank",
2643
+ rel: "noopener noreferrer",
2644
+ className: "w-full flex items-center font-medium justify-center py-2.5 rounded-full border border-neutral-700 text-white transition-colors outline-none text-[13px] tracking-wide mt-2"
2645
+ },
2646
+ "View in block explorer"
2546
2647
  ))))), isDirectionModalOpen && /* @__PURE__ */ React28.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React28.createElement("div", { className: "absolute inset-0 bg-black/60", onClick: () => setIsDirectionModalOpen(false) }), /* @__PURE__ */ React28.createElement("div", { ref: directionDropdownRef, className: "relative w-72 bg-neutral-900 shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React28.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ React28.createElement("h3", { className: "text-[14px] text-white tracking-tight" }, "Payment Type")), /* @__PURE__ */ React28.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, ["ALL", "CREDIT", "DEBIT"].map((option) => /* @__PURE__ */ React28.createElement(
2547
2648
  "button",
2548
2649
  {
@@ -2551,14 +2652,14 @@ var UniversalTransactionPage = ({
2551
2652
  onDirectionFilterChange(option);
2552
2653
  setIsDirectionModalOpen(false);
2553
2654
  },
2554
- className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeDirectionFilter === option ? "bg-neutral-800 text-white" : "text-neutral-400 hover:bg-neutral-800 hover:text-white"}`
2655
+ className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeDirectionFilter === option ? "bg-neutral-800 text-white" : "text-neutral-400 hover:text-white"}`
2555
2656
  },
2556
2657
  /* @__PURE__ */ React28.createElement("span", { className: "truncate pr-2" }, option.charAt(0).toUpperCase() + option.slice(1).toLowerCase())
2557
2658
  ))), /* @__PURE__ */ React28.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ React28.createElement(
2558
2659
  "button",
2559
2660
  {
2560
2661
  onClick: () => setIsDirectionModalOpen(false),
2561
- className: "w-full py-3 text-[13px] text-neutral-500 hover:bg-neutral-800 hover:text-white transition-colors outline-none"
2662
+ className: "w-full py-3 text-[13px] text-neutral-500 hover:text-white transition-colors outline-none"
2562
2663
  },
2563
2664
  "Cancel"
2564
2665
  )))), isTypeModalOpen && /* @__PURE__ */ React28.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React28.createElement("div", { className: "absolute inset-0 bg-black/60", onClick: () => setIsTypeModalOpen(false) }), /* @__PURE__ */ React28.createElement("div", { ref: typeDropdownRef, className: "relative w-72 bg-neutral-900 shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React28.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ React28.createElement("h3", { className: "text-[14px] text-white tracking-tight" }, "Transactions Type")), /* @__PURE__ */ React28.createElement("div", { className: "w-full flex flex-col pl-2 pr-2" }, [
@@ -2573,14 +2674,14 @@ var UniversalTransactionPage = ({
2573
2674
  onTypeFilterChange(option.value);
2574
2675
  setIsTypeModalOpen(false);
2575
2676
  },
2576
- className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeTypeFilter === option.value ? "bg-neutral-800 text-white" : "text-neutral-400 hover:bg-neutral-800 hover:text-white"}`
2677
+ className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeTypeFilter === option.value ? "bg-neutral-800 text-white" : "text-neutral-400 hover:text-white"}`
2577
2678
  },
2578
2679
  /* @__PURE__ */ React28.createElement("span", { className: "truncate pr-2" }, option.label.charAt(0).toUpperCase() + option.label.slice(1).toLowerCase())
2579
2680
  ))), /* @__PURE__ */ React28.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ React28.createElement(
2580
2681
  "button",
2581
2682
  {
2582
2683
  onClick: () => setIsTypeModalOpen(false),
2583
- className: "w-full py-3 text-[13px] text-neutral-500 hover:bg-neutral-800 hover:text-white transition-colors outline-none"
2684
+ className: "w-full py-3 text-[13px] text-neutral-500 hover:text-white transition-colors outline-none"
2584
2685
  },
2585
2686
  "Cancel"
2586
2687
  )))));
@@ -2671,12 +2772,12 @@ var UniversalHomeView = ({
2671
2772
  }
2672
2773
  },
2673
2774
  /* @__PURE__ */ React29.createElement("span", { className: "absolute inset-0 bg-linear-to-r from-white/30 to-transparent pointer-events-none" }),
2674
- /* @__PURE__ */ React29.createElement("span", { className: "relative z-10 flex items-center gap-1.5 leading-none text-[13px] tracking-wide font-semibold drop-shadow-[0_1px_1px_rgba(255,255,255,0.8)]" }, primaryAction.label, primaryAction.icon && /* @__PURE__ */ React29.createElement(HugeiconsIcon17, { icon: primaryAction.icon, size: 16 }))
2775
+ /* @__PURE__ */ React29.createElement("span", { className: "relative z-10 flex items-center gap-1.5 leading-none text-[13px] tracking-wide font-medium drop-shadow-[0_1px_1px_rgba(255,255,255,0.8)]" }, primaryAction.label, primaryAction.icon && /* @__PURE__ */ React29.createElement(HugeiconsIcon17, { icon: primaryAction.icon, size: 16 }))
2675
2776
  ), secondaryAction && /* @__PURE__ */ React29.createElement(
2676
2777
  "button",
2677
2778
  {
2678
2779
  onClick: secondaryAction.onClick,
2679
- className: "flex items-center gap-1.5 px-8 py-2 rounded-full border border-neutral-800 text-white transition-colors hover:bg-neutral-800 outline-none"
2780
+ className: "flex items-center gap-1.5 px-8 py-2 rounded-full border border-neutral-800 text-white transition-colors outline-none"
2680
2781
  },
2681
2782
  /* @__PURE__ */ React29.createElement("span", { className: "text-[13px] tracking-wide" }, secondaryAction.label),
2682
2783
  secondaryAction.icon && /* @__PURE__ */ React29.createElement(HugeiconsIcon17, { icon: secondaryAction.icon, size: 16 })
@@ -2685,9 +2786,9 @@ var UniversalHomeView = ({
2685
2786
  {
2686
2787
  key: action.id,
2687
2788
  onClick: action.onClick,
2688
- className: `w-full h-23.75 sm:h-28.75 rounded-2xl bg-neutral-900 hover:bg-neutral-800 p-2.5 sm:p-3 flex flex-col justify-between items-start cursor-pointer active:scale-[0.98] transition-all outline-none`
2789
+ className: `w-full h-23.75 sm:h-28.75 rounded-2xl border border-neutral-800 p-2.5 sm:p-3 flex flex-col justify-between items-start cursor-pointer active:scale-[0.98] transition-all outline-none`
2689
2790
  },
2690
- /* @__PURE__ */ React29.createElement("div", { className: `w-7 h-7 sm:w-9 sm:h-9 rounded-full flex items-center justify-center bg-neutral-700 text-white}` }, /* @__PURE__ */ React29.createElement("div", { className: "scale-75 sm:scale-100 text-white flex items-center justify-center" }, /* @__PURE__ */ React29.createElement(HugeiconsIcon17, { icon: action.icon, size: 18 }))),
2791
+ /* @__PURE__ */ React29.createElement("div", { className: `w-7 h-7 sm:w-9 sm:h-9 rounded-full flex items-center justify-center border border-neutral-800 text-white}` }, /* @__PURE__ */ React29.createElement("div", { className: "scale-75 sm:scale-100 text-white flex items-center justify-center" }, /* @__PURE__ */ React29.createElement(HugeiconsIcon17, { icon: action.icon, size: 18 }))),
2691
2792
  /* @__PURE__ */ React29.createElement("span", { className: "text-[10px] sm:text-[12px] text-neutral-300 text-left leading-[1.2] whitespace-pre-line mt-1" }, action.label)
2692
2793
  )))), /* @__PURE__ */ React29.createElement("div", { className: "w-full" }, /* @__PURE__ */ React29.createElement(
2693
2794
  UniversalTransactionPage,
@@ -2705,13 +2806,13 @@ import React30, { useState as useState18 } from "react";
2705
2806
  import { HugeiconsIcon as HugeiconsIcon18 } from "@hugeicons/react";
2706
2807
  import {
2707
2808
  Search01Icon as Search01Icon2,
2708
- CancelCircleIcon as CancelCircleIcon3,
2709
- Loading03Icon as Loading03Icon6
2809
+ CancelCircleIcon as CancelCircleIcon4,
2810
+ Loading03Icon as Loading03Icon7
2710
2811
  } from "@hugeicons/core-free-icons";
2711
- var PageSpinner3 = () => /* @__PURE__ */ React30.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React30.createElement(HugeiconsIcon18, { icon: Loading03Icon6, size: 32, className: "animate-spin mb-4 text-white" }));
2812
+ var PageSpinner3 = () => /* @__PURE__ */ React30.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React30.createElement(HugeiconsIcon18, { icon: Loading03Icon7, size: 32, className: "animate-spin mb-4 text-white" }));
2712
2813
  var WalletLogo = ({ src, alt, sizeClass = "w-10 h-10" }) => {
2713
2814
  const [isLoaded, setIsLoaded] = useState18(false);
2714
- return /* @__PURE__ */ React30.createElement("div", { className: `relative shrink-0 rounded-full bg-black flex items-center justify-center overflow-hidden ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React30.createElement(HugeiconsIcon18, { icon: Loading03Icon6, size: 16, className: "animate-spin text-neutral-600 absolute" }), /* @__PURE__ */ React30.createElement(
2815
+ return /* @__PURE__ */ React30.createElement("div", { className: `relative shrink-0 rounded-full bg-black flex items-center justify-center overflow-hidden ${sizeClass}` }, !isLoaded && /* @__PURE__ */ React30.createElement(HugeiconsIcon18, { icon: Loading03Icon7, size: 16, className: "animate-spin text-neutral-600 absolute" }), /* @__PURE__ */ React30.createElement(
2715
2816
  "img",
2716
2817
  {
2717
2818
  src,
@@ -2763,7 +2864,7 @@ var UniversalWalletPage = ({
2763
2864
  {
2764
2865
  key: wallet.id,
2765
2866
  onClick: () => setSelectedWallet(wallet),
2766
- className: "flex items-center justify-between py-4 hover:bg-neutral-800/50 transition-colors cursor-pointer group min-w-0 px-2 -mx-2 rounded-xl"
2867
+ className: "flex items-center justify-between py-4 /50 transition-colors cursor-pointer group min-w-0 px-2 -mx-2 rounded-xl"
2767
2868
  },
2768
2869
  /* @__PURE__ */ React30.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React30.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), /* @__PURE__ */ React30.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React30.createElement("p", { className: "text-[13px] text-white truncate font-medium" }, wallet.name), /* @__PURE__ */ React30.createElement("p", { className: `text-[13px] text-neutral-400 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, wallet.balance, " ", wallet.currency))),
2769
2870
  /* @__PURE__ */ React30.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React30.createElement("span", { className: "text-[10px] tracking-wide text-neutral-400 bg-neutral-800 px-2.5 py-1 rounded-full " }, wallet.network))
@@ -2773,7 +2874,7 @@ var UniversalWalletPage = ({
2773
2874
  } }), /* @__PURE__ */ React30.createElement("div", { className: "relative w-full max-w-sm bg-neutral-900 rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, showToast && /* @__PURE__ */ React30.createElement("div", { className: "absolute top-4 left-1/2 -translate-x-1/2 z-50 bg-neutral-800 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__ */ React30.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React30.createElement("h3", { className: "text-[15px] text-white tracking-tight" }, "Wallet Details"), /* @__PURE__ */ React30.createElement("button", { onClick: () => {
2774
2875
  setSelectedWallet(null);
2775
2876
  setShowToast(false);
2776
- }, className: "text-neutral-500 hover:text-white transition-colors outline-none" }, /* @__PURE__ */ React30.createElement(HugeiconsIcon18, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React30.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React30.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14 mb-4" }), /* @__PURE__ */ React30.createElement("h2", { className: `text-2xl text-white mb-2 transition-all duration-300 font-medium ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.balance, " ", selectedWallet.currency), /* @__PURE__ */ React30.createElement("span", { className: "text-[9px] tracking-widest text-neutral-400 px-4 py-1.5 rounded-full border border-neutral-800 uppercase mt-1" }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ React30.createElement("div", { className: "w-full flex justify-center mb-6" }, renderQrCode(selectedWallet)), /* @__PURE__ */ React30.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React30.createElement("div", null, /* @__PURE__ */ React30.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React30.createElement("span", { className: "text-[13px] text-white break-all font-medium" }, selectedWallet.address)), /* @__PURE__ */ React30.createElement("div", null, /* @__PURE__ */ React30.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Wallet Name"), /* @__PURE__ */ React30.createElement("span", { className: "text-[13px] text-white" }, selectedWallet.name))), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React30.createElement(
2877
+ }, className: "text-neutral-500 hover:text-white transition-colors outline-none" }, /* @__PURE__ */ React30.createElement(HugeiconsIcon18, { icon: CancelCircleIcon4, size: 18 }))), /* @__PURE__ */ React30.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React30.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14 mb-4" }), /* @__PURE__ */ React30.createElement("h2", { className: `text-2xl text-white mb-2 transition-all duration-300 font-medium ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.balance, " ", selectedWallet.currency), /* @__PURE__ */ React30.createElement("span", { className: "text-[9px] tracking-widest text-neutral-400 px-4 py-1.5 rounded-full border border-neutral-800 uppercase mt-1" }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ React30.createElement("div", { className: "w-full flex justify-center mb-6" }, renderQrCode(selectedWallet)), /* @__PURE__ */ React30.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React30.createElement("div", null, /* @__PURE__ */ React30.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React30.createElement("span", { className: "text-[13px] text-white break-all font-medium" }, selectedWallet.address)), /* @__PURE__ */ React30.createElement("div", null, /* @__PURE__ */ React30.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 block mb-2" }, "Wallet Name"), /* @__PURE__ */ React30.createElement("span", { className: "text-[13px] text-white" }, selectedWallet.name))), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React30.createElement(
2777
2878
  ThreeDActionButton,
2778
2879
  {
2779
2880
  onClick: () => onDownloadPayId && onDownloadPayId(selectedWallet),
@@ -2785,7 +2886,7 @@ var UniversalWalletPage = ({
2785
2886
  "button",
2786
2887
  {
2787
2888
  onClick: () => handleCopy(selectedWallet),
2788
- className: "w-full flex font-semibold items-center justify-center py-2.5 rounded-full border border-neutral-700 text-white hover:bg-neutral-800 outline-none text-[13px] tracking-wide"
2889
+ className: "w-full flex font-medium items-center justify-center py-2.5 rounded-full border border-neutral-700 text-white outline-none text-[13px] tracking-wide"
2789
2890
  },
2790
2891
  "Copy Wallet Address"
2791
2892
  ))))));
@@ -2877,10 +2978,10 @@ var MedicalFeatureStatsBlock = ({
2877
2978
  import React34, { useState as useState20 } from "react";
2878
2979
  import Image10 from "next/image";
2879
2980
  import { HugeiconsIcon as HugeiconsIcon20 } from "@hugeicons/react";
2880
- import { Loading03Icon as Loading03Icon7 } from "@hugeicons/core-free-icons";
2981
+ import { Loading03Icon as Loading03Icon8 } from "@hugeicons/core-free-icons";
2881
2982
  var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
2882
2983
  const [isLoading, setIsLoading] = useState20(true);
2883
- return /* @__PURE__ */ React34.createElement("div", { className: `absolute inset-0 bg-neutral-900 ${className}` }, isLoading && /* @__PURE__ */ React34.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-900/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React34.createElement(HugeiconsIcon20, { icon: Loading03Icon7, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React34.createElement(
2984
+ return /* @__PURE__ */ React34.createElement("div", { className: `absolute inset-0 bg-neutral-900 ${className}` }, isLoading && /* @__PURE__ */ React34.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-900/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React34.createElement(HugeiconsIcon20, { icon: Loading03Icon8, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React34.createElement(
2884
2985
  Image10,
2885
2986
  {
2886
2987
  src,
@@ -2973,7 +3074,7 @@ var ConsultantShowcase = ({
2973
3074
  import React35, { useState as useState21 } from "react";
2974
3075
  import Image11 from "next/image";
2975
3076
  import { HugeiconsIcon as HugeiconsIcon21 } from "@hugeicons/react";
2976
- import { Loading03Icon as Loading03Icon8 } from "@hugeicons/core-free-icons";
3077
+ import { Loading03Icon as Loading03Icon9 } from "@hugeicons/core-free-icons";
2977
3078
  var ContentGridBlock = ({
2978
3079
  header,
2979
3080
  leftCard,
@@ -3008,7 +3109,7 @@ var ManagedProjectsBlock = ({
3008
3109
  }
3009
3110
  ), /* @__PURE__ */ React36.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React36.createElement(GridSection, null, tagline && /* @__PURE__ */ React36.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block" }, tagline), /* @__PURE__ */ React36.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), projects.map((project, index) => {
3010
3111
  const isLast = index === projects.length - 1;
3011
- const projectContent = /* @__PURE__ */ React36.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ React36.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ React36.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ React36.createElement("h2", { className: "text-[16px] text-white transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ React36.createElement("span", { className: "text-[11px] text-neutral-500 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 group-hover:text-white transition-all duration-300" }, project.isExternal ? "\u2197" : "\u2192")), /* @__PURE__ */ React36.createElement("span", { className: `text-[9px] px-2.5 py-1 rounded-full tracking-[0.15em] transition-colors ${project.status.toLowerCase() === "production" ? "bg-white text-black" : "bg-neutral-800 text-neutral-400 group-hover:bg-neutral-700 group-hover:text-white"}` }, project.status)), /* @__PURE__ */ React36.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0" }, project.date)), /* @__PURE__ */ React36.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 max-w-4xl text-left transition-colors group-hover:text-neutral-300" }, project.description));
3112
+ const projectContent = /* @__PURE__ */ React36.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ React36.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ React36.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ React36.createElement("h2", { className: "text-[16px] text-white transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ React36.createElement("span", { className: "text-[11px] text-neutral-500 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 group-hover:text-white transition-all duration-300" }, project.isExternal ? "\u2197" : "\u2192")), /* @__PURE__ */ React36.createElement("span", { className: `text-[9px] px-2.5 py-1 rounded-full tracking-[0.15em] transition-colors ${project.status.toLowerCase() === "production" ? "bg-white text-black" : "bg-neutral-800 text-neutral-400 group- group-hover:text-white"}` }, project.status)), /* @__PURE__ */ React36.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0" }, project.date)), /* @__PURE__ */ React36.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 max-w-4xl text-left transition-colors group-hover:text-neutral-300" }, project.description));
3012
3113
  return /* @__PURE__ */ React36.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ React36.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ React36.createElement(Link9, { href: project.link, className: "block outline-none" }, projectContent));
3013
3114
  }))));
3014
3115
  };