@retinalabsllc/zairusjs 15.1.25 → 15.1.35

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
@@ -256,10 +256,6 @@ interface NotificationItem {
256
256
  interface UniversalHomeViewProps {
257
257
  fullName?: string;
258
258
  avatarSrc?: string | null;
259
- balanceLabel?: string;
260
- balanceAmount: string;
261
- balanceCurrency?: string;
262
- calculatorAction?: HomeActionBtn;
263
259
  buyCryptoAction?: HomeActionBtn;
264
260
  referralAction?: HomeActionBtn;
265
261
  notifications?: NotificationItem[];
package/dist/index.d.ts CHANGED
@@ -256,10 +256,6 @@ interface NotificationItem {
256
256
  interface UniversalHomeViewProps {
257
257
  fullName?: string;
258
258
  avatarSrc?: string | null;
259
- balanceLabel?: string;
260
- balanceAmount: string;
261
- balanceCurrency?: string;
262
- calculatorAction?: HomeActionBtn;
263
259
  buyCryptoAction?: HomeActionBtn;
264
260
  referralAction?: HomeActionBtn;
265
261
  notifications?: NotificationItem[];
package/dist/index.js CHANGED
@@ -1617,10 +1617,6 @@ var import_core_free_icons8 = require("@hugeicons/core-free-icons");
1617
1617
  var UniversalHomeView = ({
1618
1618
  fullName = "",
1619
1619
  avatarSrc,
1620
- balanceLabel = "Pending Balance",
1621
- balanceAmount,
1622
- balanceCurrency = "$",
1623
- calculatorAction,
1624
1620
  buyCryptoAction,
1625
1621
  referralAction,
1626
1622
  notifications = [],
@@ -1633,44 +1629,12 @@ var UniversalHomeView = ({
1633
1629
  customContent,
1634
1630
  transactionsProps
1635
1631
  }) => {
1636
- const [displayAmount, setDisplayAmount] = (0, import_react25.useState)("0.00");
1637
- const [isBalanceHidden, setIsBalanceHidden] = (0, import_react25.useState)(false);
1638
1632
  const [isAvatarLoaded, setIsAvatarLoaded] = (0, import_react25.useState)(false);
1639
1633
  const [showNotifDialog, setShowNotifDialog] = (0, import_react25.useState)(false);
1640
1634
  const [selectedNotif, setSelectedNotif] = (0, import_react25.useState)(null);
1641
1635
  const fallbackAvatarUrl = `/api/avatar/?name=${encodeURIComponent(fullName || " ")}&background=ffffff&color=000000&size=200&font-size=0.33`;
1642
1636
  const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
1643
1637
  const hasUnreadNotifs = notifications.some((n) => !n.isRead);
1644
- (0, import_react25.useEffect)(() => {
1645
- const target = parseFloat(balanceAmount.replace(/,/g, ""));
1646
- if (isNaN(target)) {
1647
- setDisplayAmount(balanceAmount);
1648
- return;
1649
- }
1650
- const decimalMatch = balanceAmount.match(/\.(\d+)/);
1651
- const fractionDigits = decimalMatch ? decimalMatch[1].length : 0;
1652
- let startTimestamp = null;
1653
- const duration = 1e3;
1654
- const step = (timestamp) => {
1655
- if (!startTimestamp) startTimestamp = timestamp;
1656
- const progress = Math.min((timestamp - startTimestamp) / duration, 1);
1657
- const easeProgress = progress === 1 ? 1 : 1 - Math.pow(2, -10 * progress);
1658
- const currentCount = easeProgress * target;
1659
- setDisplayAmount(currentCount.toLocaleString("en-US", {
1660
- minimumFractionDigits: fractionDigits,
1661
- maximumFractionDigits: fractionDigits
1662
- }));
1663
- if (progress < 1) requestAnimationFrame(step);
1664
- else {
1665
- setDisplayAmount(target.toLocaleString("en-US", {
1666
- minimumFractionDigits: fractionDigits,
1667
- maximumFractionDigits: fractionDigits
1668
- }));
1669
- }
1670
- };
1671
- requestAnimationFrame(step);
1672
- }, [balanceAmount]);
1673
- const [intPart, decPart] = displayAmount.includes(".") ? displayAmount.split(".") : [displayAmount, ""];
1674
1638
  return /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center justify-between w-full pb-4 " }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-10 h-10 rounded-full bg-white p-0.75 flex items-center justify-center " }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ import_react25.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.Loading03Icon, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ import_react25.default.createElement(
1675
1639
  "img",
1676
1640
  {
@@ -1690,27 +1654,13 @@ var UniversalHomeView = ({
1690
1654
  },
1691
1655
  /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.Notification01Icon, size: 20, className: "text-black" }),
1692
1656
  hasUnreadNotifs && /* @__PURE__ */ import_react25.default.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-red-500 rounded-full border border-white" })
1693
- )), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full pb-6 flex flex-col gap-4" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "bg-linear-to-tl from-[#4a4a4a] via-[#0b0e14] to-[#03060b] rounded-2xl p-6 relative overflow-hidden flex flex-col justify-center" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative z-10 flex flex-col items-start text-left w-full" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center gap-2 mb-2" }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[12px] text-neutral-300" }, balanceLabel), /* @__PURE__ */ import_react25.default.createElement(
1694
- "button",
1695
- {
1696
- onClick: () => setIsBalanceHidden(!isBalanceHidden),
1697
- className: "text-neutral-400 hover:text-white transition-colors outline-none"
1698
- },
1699
- /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: isBalanceHidden ? import_core_free_icons8.ViewIcon : import_core_free_icons8.ViewOffSlashIcon, size: 16 })
1700
- )), /* @__PURE__ */ import_react25.default.createElement("p", { className: `text-2xl text-white tracking-tight mb-6 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-lg text-neutral-400 mr-1" }, balanceCurrency), intPart, decPart && /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-lg text-neutral-400" }, ".", decPart)), /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center w-full" }, calculatorAction && /* @__PURE__ */ import_react25.default.createElement(
1701
- "button",
1702
- {
1703
- onClick: calculatorAction.onClick,
1704
- className: "px-6 py-2 bg-transparent border border-white/20 text-white truncate text-[12px] rounded-full transition-colors hover:bg-white/10 outline-none text-center"
1705
- },
1706
- calculatorAction.label || "Rate Calculator"
1707
- )))), /* @__PURE__ */ import_react25.default.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ import_react25.default.createElement(
1657
+ )), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full pb-6 flex flex-col gap-4" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ import_react25.default.createElement(
1708
1658
  "div",
1709
1659
  {
1710
1660
  onClick: buyCryptoAction?.onClick,
1711
1661
  className: "bg-[#143731] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
1712
1662
  },
1713
- /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react25.default.createElement("p", { className: "text-[15px] sm:text-[15px] text-white " }, "Buy Crypto"), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 border border-white/10 flex items-center justify-center" }, /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.ArrowUpRight01Icon, size: 16, className: "text-white" }))),
1663
+ /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react25.default.createElement("p", { className: "text-[15px] sm:text-[15px] text-white leading-tight font-medium" }, "Buy", /* @__PURE__ */ import_react25.default.createElement("br", null), /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-white/70" }, "Crypto")), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 flex items-center justify-center" }, /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.ArrowUpRight01Icon, size: 16, className: "text-white" }))),
1714
1664
  /* @__PURE__ */ import_react25.default.createElement(
1715
1665
  "img",
1716
1666
  {
@@ -1725,7 +1675,7 @@ var UniversalHomeView = ({
1725
1675
  onClick: referralAction?.onClick,
1726
1676
  className: "bg-[#ceff8a] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
1727
1677
  },
1728
- /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react25.default.createElement("p", { className: "text-[15px] sm:text-[15px] text-black " }, "Referral"), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 border border-black/5 flex items-center justify-center" }, /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.ArrowRight01Icon, size: 16, className: "text-black" }))),
1678
+ /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ import_react25.default.createElement("p", { className: "text-[15px] sm:text-[15px] text-black leading-tight font-medium" }, "My", /* @__PURE__ */ import_react25.default.createElement("br", null), /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-black/60" }, "Rewards")), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.ArrowRight01Icon, size: 16, className: "text-black" }))),
1729
1679
  /* @__PURE__ */ import_react25.default.createElement(
1730
1680
  "img",
1731
1681
  {
@@ -1739,7 +1689,7 @@ var UniversalHomeView = ({
1739
1689
  {
1740
1690
  ...transactionsProps,
1741
1691
  hideControls: true,
1742
- hideBalanceAmounts: isBalanceHidden,
1692
+ hideBalanceAmounts: false,
1743
1693
  hidePagination: true
1744
1694
  }
1745
1695
  )), showNotifDialog && /* @__PURE__ */ import_react25.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ import_react25.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 h-[80vh]" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, selectedNotif ? /* @__PURE__ */ import_react25.default.createElement("button", { onClick: () => setSelectedNotif(null), className: "text-neutral-400 hover:text-black transition-colors outline-none flex items-center gap-2 text-[11px] tracking-widest " }, /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.ArrowLeft01Icon, size: 14 }), " Back") : /* @__PURE__ */ import_react25.default.createElement("h3", { className: "text-[15px] text-black tracking-tight flex items-center gap-2" }, "Notifications", isNotifsLoading && /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.Loading03Icon, size: 14, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react25.default.createElement("button", { onClick: () => setShowNotifDialog(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: import_core_free_icons8.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, selectedNotif ? /* @__PURE__ */ import_react25.default.createElement("div", { className: "p-4 text-left" }, /* @__PURE__ */ import_react25.default.createElement("h4", { className: "text-[14px] text-black mb-1 " }, selectedNotif.title), /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-widest mb-4 block " }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ import_react25.default.createElement("p", { className: "text-[12px] text-neutral-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message)) : /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex flex-col divide-y divide-neutral-50/50" }, notifications?.length === 0 && !isNotifsLoading ? /* @__PURE__ */ import_react25.default.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "You have no notifications.") : notifications?.map((notif) => /* @__PURE__ */ import_react25.default.createElement(
@@ -2111,9 +2061,9 @@ var UniversalCardPage = ({
2111
2061
  setShowDeleteDialog(false);
2112
2062
  };
2113
2063
  const formatTabLabel = (type) => {
2114
- return type.charAt(0).toUpperCase() + type.slice(1).toLowerCase();
2064
+ return type.charAt(0).toUpperCase() + type.slice(1).toLowerCase() + " Card";
2115
2065
  };
2116
- return /* @__PURE__ */ import_react31.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ import_react31.default.createElement("h1", { className: "text-2xl mt-2 text-black tracking-tight mb-2 text-center" }, "My Cards"), sortedCards.length > 1 && /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2 gap-3" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => /* @__PURE__ */ import_react31.default.createElement(
2066
+ return /* @__PURE__ */ import_react31.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, sortedCards.length > 1 && /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2 gap-3" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => /* @__PURE__ */ import_react31.default.createElement(
2117
2067
  "button",
2118
2068
  {
2119
2069
  key: tab.id,
@@ -2137,7 +2087,14 @@ var UniversalCardPage = ({
2137
2087
  className: "absolute inset-0 bg-cover bg-center",
2138
2088
  style: { backgroundImage: `url(${activeCard.cardBgSrc})` }
2139
2089
  }
2140
- ), /* @__PURE__ */ import_react31.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex items-start justify-end w-full gap-4" }, activeCard.networkLogoSrc && /* @__PURE__ */ import_react31.default.createElement("img", { src: activeCard.networkLogoSrc, alt: "Network Logo", className: "h-7 w-auto max-w-20 object-contain opacity-90" })), /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react31.default.createElement("span", { className: `text-[10px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/70"} drop-shadow-sm` }, "Balance"), /* @__PURE__ */ import_react31.default.createElement("span", { className: `text-[16px] tracking-widest ${activeCard.contentDark ? "text-black" : "text-white"} drop-shadow-sm` }, activeCard.balance))))))), /* @__PURE__ */ import_react31.default.createElement("div", { className: "w-full flex flex-col gap-4 mt-1" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react31.default.createElement(
2090
+ ), /* @__PURE__ */ import_react31.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex items-start justify-end w-full gap-4" }), /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react31.default.createElement("span", { className: `text-[10px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/70"} drop-shadow-sm` }, "Balance"), /* @__PURE__ */ import_react31.default.createElement("span", { className: `text-[16px] tracking-widest ${activeCard.contentDark ? "text-black" : "text-white"} drop-shadow-sm` }, activeCard.balance)), activeCard.networkLogoSrc && /* @__PURE__ */ import_react31.default.createElement(
2091
+ "img",
2092
+ {
2093
+ src: activeCard.networkLogoSrc,
2094
+ alt: "Network Logo",
2095
+ className: "h-7 w-auto max-w-20 object-contain opacity-90"
2096
+ }
2097
+ )))))), /* @__PURE__ */ import_react31.default.createElement("div", { className: "w-full flex flex-col gap-4 mt-1" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react31.default.createElement(
2141
2098
  MenuRow,
2142
2099
  {
2143
2100
  icon: import_core_free_icons11.PlusSignIcon,
@@ -2330,10 +2287,10 @@ var UniversalProfilePage = ({
2330
2287
  ), /* @__PURE__ */ import_react33.default.createElement(
2331
2288
  MenuRow2,
2332
2289
  {
2333
- icon: import_core_free_icons12.ShieldUserIcon,
2334
- title: "Web3 Profile",
2335
- subtitle: "Manage web3 profile",
2336
- onClick: onDefiTap
2290
+ icon: import_core_free_icons12.CrownIcon,
2291
+ title: "My Referrals",
2292
+ subtitle: "Referral & Rewards",
2293
+ onClick: onExportTap
2337
2294
  }
2338
2295
  ), /* @__PURE__ */ import_react33.default.createElement(
2339
2296
  MenuRow2,
@@ -2352,14 +2309,6 @@ var UniversalProfilePage = ({
2352
2309
  subtitle: "Account Verifications",
2353
2310
  onClick: onVerificationsTap
2354
2311
  }
2355
- ), /* @__PURE__ */ import_react33.default.createElement(
2356
- MenuRow2,
2357
- {
2358
- icon: import_core_free_icons12.CrownIcon,
2359
- title: "My Referrals",
2360
- subtitle: "Referral & Rewards",
2361
- onClick: onExportTap
2362
- }
2363
2312
  ), /* @__PURE__ */ import_react33.default.createElement(
2364
2313
  MenuRow2,
2365
2314
  {
package/dist/index.mjs CHANGED
@@ -1557,11 +1557,9 @@ var UniversalTransactionPage = ({
1557
1557
  };
1558
1558
 
1559
1559
  // src/components/UniversalHomeView.tsx
1560
- import React16, { useState as useState10, useEffect as useEffect7 } from "react";
1560
+ import React16, { useState as useState10 } from "react";
1561
1561
  import { HugeiconsIcon as HugeiconsIcon10 } from "@hugeicons/react";
1562
1562
  import {
1563
- ViewOffSlashIcon,
1564
- ViewIcon,
1565
1563
  Loading03Icon as Loading03Icon5,
1566
1564
  Notification01Icon,
1567
1565
  ArrowLeft01Icon as ArrowLeft01Icon4,
@@ -1572,10 +1570,6 @@ import {
1572
1570
  var UniversalHomeView = ({
1573
1571
  fullName = "",
1574
1572
  avatarSrc,
1575
- balanceLabel = "Pending Balance",
1576
- balanceAmount,
1577
- balanceCurrency = "$",
1578
- calculatorAction,
1579
1573
  buyCryptoAction,
1580
1574
  referralAction,
1581
1575
  notifications = [],
@@ -1588,44 +1582,12 @@ var UniversalHomeView = ({
1588
1582
  customContent,
1589
1583
  transactionsProps
1590
1584
  }) => {
1591
- const [displayAmount, setDisplayAmount] = useState10("0.00");
1592
- const [isBalanceHidden, setIsBalanceHidden] = useState10(false);
1593
1585
  const [isAvatarLoaded, setIsAvatarLoaded] = useState10(false);
1594
1586
  const [showNotifDialog, setShowNotifDialog] = useState10(false);
1595
1587
  const [selectedNotif, setSelectedNotif] = useState10(null);
1596
1588
  const fallbackAvatarUrl = `/api/avatar/?name=${encodeURIComponent(fullName || " ")}&background=ffffff&color=000000&size=200&font-size=0.33`;
1597
1589
  const finalAvatarSrc = avatarSrc || fallbackAvatarUrl;
1598
1590
  const hasUnreadNotifs = notifications.some((n) => !n.isRead);
1599
- useEffect7(() => {
1600
- const target = parseFloat(balanceAmount.replace(/,/g, ""));
1601
- if (isNaN(target)) {
1602
- setDisplayAmount(balanceAmount);
1603
- return;
1604
- }
1605
- const decimalMatch = balanceAmount.match(/\.(\d+)/);
1606
- const fractionDigits = decimalMatch ? decimalMatch[1].length : 0;
1607
- let startTimestamp = null;
1608
- const duration = 1e3;
1609
- const step = (timestamp) => {
1610
- if (!startTimestamp) startTimestamp = timestamp;
1611
- const progress = Math.min((timestamp - startTimestamp) / duration, 1);
1612
- const easeProgress = progress === 1 ? 1 : 1 - Math.pow(2, -10 * progress);
1613
- const currentCount = easeProgress * target;
1614
- setDisplayAmount(currentCount.toLocaleString("en-US", {
1615
- minimumFractionDigits: fractionDigits,
1616
- maximumFractionDigits: fractionDigits
1617
- }));
1618
- if (progress < 1) requestAnimationFrame(step);
1619
- else {
1620
- setDisplayAmount(target.toLocaleString("en-US", {
1621
- minimumFractionDigits: fractionDigits,
1622
- maximumFractionDigits: fractionDigits
1623
- }));
1624
- }
1625
- };
1626
- requestAnimationFrame(step);
1627
- }, [balanceAmount]);
1628
- const [intPart, decPart] = displayAmount.includes(".") ? displayAmount.split(".") : [displayAmount, ""];
1629
1591
  return /* @__PURE__ */ React16.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between w-full pb-4 " }, /* @__PURE__ */ React16.createElement("div", { className: "w-10 h-10 rounded-full bg-white p-0.75 flex items-center justify-center " }, /* @__PURE__ */ React16.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, !isAvatarLoaded && /* @__PURE__ */ React16.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: Loading03Icon5, size: 16, className: "animate-spin text-black" })), /* @__PURE__ */ React16.createElement(
1630
1592
  "img",
1631
1593
  {
@@ -1645,27 +1607,13 @@ var UniversalHomeView = ({
1645
1607
  },
1646
1608
  /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: Notification01Icon, size: 20, className: "text-black" }),
1647
1609
  hasUnreadNotifs && /* @__PURE__ */ React16.createElement("span", { className: "absolute top-2.5 right-2.5 w-2 h-2 bg-red-500 rounded-full border border-white" })
1648
- )), /* @__PURE__ */ React16.createElement("div", { className: "w-full pb-6 flex flex-col gap-4" }, /* @__PURE__ */ React16.createElement("div", { className: "bg-linear-to-tl from-[#4a4a4a] via-[#0b0e14] to-[#03060b] rounded-2xl p-6 relative overflow-hidden flex flex-col justify-center" }, /* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col items-start text-left w-full" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2 mb-2" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[12px] text-neutral-300" }, balanceLabel), /* @__PURE__ */ React16.createElement(
1649
- "button",
1650
- {
1651
- onClick: () => setIsBalanceHidden(!isBalanceHidden),
1652
- className: "text-neutral-400 hover:text-white transition-colors outline-none"
1653
- },
1654
- /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: isBalanceHidden ? ViewIcon : ViewOffSlashIcon, size: 16 })
1655
- )), /* @__PURE__ */ React16.createElement("p", { className: `text-2xl text-white tracking-tight mb-6 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ React16.createElement("span", { className: "text-lg text-neutral-400 mr-1" }, balanceCurrency), intPart, decPart && /* @__PURE__ */ React16.createElement("span", { className: "text-lg text-neutral-400" }, ".", decPart)), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center w-full" }, calculatorAction && /* @__PURE__ */ React16.createElement(
1656
- "button",
1657
- {
1658
- onClick: calculatorAction.onClick,
1659
- className: "px-6 py-2 bg-transparent border border-white/20 text-white truncate text-[12px] rounded-full transition-colors hover:bg-white/10 outline-none text-center"
1660
- },
1661
- calculatorAction.label || "Rate Calculator"
1662
- )))), /* @__PURE__ */ React16.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React16.createElement(
1610
+ )), /* @__PURE__ */ React16.createElement("div", { className: "w-full pb-6 flex flex-col gap-4" }, /* @__PURE__ */ React16.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React16.createElement(
1663
1611
  "div",
1664
1612
  {
1665
1613
  onClick: buyCryptoAction?.onClick,
1666
1614
  className: "bg-[#143731] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
1667
1615
  },
1668
- /* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-white " }, "Buy Crypto"), /* @__PURE__ */ React16.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 border border-white/10 flex items-center justify-center" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: ArrowUpRight01Icon2, size: 16, className: "text-white" }))),
1616
+ /* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-white leading-tight font-medium" }, "Buy", /* @__PURE__ */ React16.createElement("br", null), /* @__PURE__ */ React16.createElement("span", { className: "text-white/70" }, "Crypto")), /* @__PURE__ */ React16.createElement("div", { className: "w-8 h-8 rounded-full bg-white/10 flex items-center justify-center" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: ArrowUpRight01Icon2, size: 16, className: "text-white" }))),
1669
1617
  /* @__PURE__ */ React16.createElement(
1670
1618
  "img",
1671
1619
  {
@@ -1680,7 +1628,7 @@ var UniversalHomeView = ({
1680
1628
  onClick: referralAction?.onClick,
1681
1629
  className: "bg-[#ceff8a] rounded-2xl p-5 relative overflow-hidden flex flex-col h-32 sm:h-36 cursor-pointer hover:opacity-90 transition-opacity"
1682
1630
  },
1683
- /* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-black " }, "Referral"), /* @__PURE__ */ React16.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 border border-black/5 flex items-center justify-center" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: ArrowRight01Icon2, size: 16, className: "text-black" }))),
1631
+ /* @__PURE__ */ React16.createElement("div", { className: "relative z-10 flex flex-col h-full justify-between" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-black leading-tight font-medium" }, "My", /* @__PURE__ */ React16.createElement("br", null), /* @__PURE__ */ React16.createElement("span", { className: "text-black/60" }, "Rewards")), /* @__PURE__ */ React16.createElement("div", { className: "w-8 h-8 rounded-full bg-black/5 flex items-center justify-center" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: ArrowRight01Icon2, size: 16, className: "text-black" }))),
1684
1632
  /* @__PURE__ */ React16.createElement(
1685
1633
  "img",
1686
1634
  {
@@ -1694,7 +1642,7 @@ var UniversalHomeView = ({
1694
1642
  {
1695
1643
  ...transactionsProps,
1696
1644
  hideControls: true,
1697
- hideBalanceAmounts: isBalanceHidden,
1645
+ hideBalanceAmounts: false,
1698
1646
  hidePagination: true
1699
1647
  }
1700
1648
  )), showNotifDialog && /* @__PURE__ */ React16.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React16.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => setShowNotifDialog(false) }), /* @__PURE__ */ React16.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 h-[80vh]" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, selectedNotif ? /* @__PURE__ */ React16.createElement("button", { onClick: () => setSelectedNotif(null), className: "text-neutral-400 hover:text-black transition-colors outline-none flex items-center gap-2 text-[11px] tracking-widest " }, /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: ArrowLeft01Icon4, size: 14 }), " Back") : /* @__PURE__ */ React16.createElement("h3", { className: "text-[15px] text-black tracking-tight flex items-center gap-2" }, "Notifications", isNotifsLoading && /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: Loading03Icon5, size: 14, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ React16.createElement("button", { onClick: () => setShowNotifDialog(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React16.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-2" }, selectedNotif ? /* @__PURE__ */ React16.createElement("div", { className: "p-4 text-left" }, /* @__PURE__ */ React16.createElement("h4", { className: "text-[14px] text-black mb-1 " }, selectedNotif.title), /* @__PURE__ */ React16.createElement("span", { className: "text-[10px] text-neutral-400 tracking-widest mb-4 block " }, formatNotifDate(selectedNotif.createdAt)), /* @__PURE__ */ React16.createElement("p", { className: "text-[12px] text-neutral-600 leading-relaxed whitespace-pre-wrap" }, selectedNotif.message)) : /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col divide-y divide-neutral-50/50" }, notifications?.length === 0 && !isNotifsLoading ? /* @__PURE__ */ React16.createElement("div", { className: "p-8 text-center text-xs text-neutral-400" }, "You have no notifications.") : notifications?.map((notif) => /* @__PURE__ */ React16.createElement(
@@ -2015,7 +1963,7 @@ var UniversalWalletPage = ({
2015
1963
  };
2016
1964
 
2017
1965
  // src/components/UniversalCardPage.tsx
2018
- import React19, { useState as useState12, useEffect as useEffect8 } from "react";
1966
+ import React19, { useState as useState12, useEffect as useEffect7 } from "react";
2019
1967
  import { useRouter } from "next/navigation";
2020
1968
  import toast6 from "react-hot-toast";
2021
1969
  import { HugeiconsIcon as HugeiconsIcon13 } from "@hugeicons/react";
@@ -2023,7 +1971,7 @@ import {
2023
1971
  SnowIcon,
2024
1972
  Delete02Icon,
2025
1973
  ArrowRight01Icon as ArrowRight01Icon3,
2026
- ViewOffSlashIcon as ViewOffSlashIcon2,
1974
+ ViewOffSlashIcon,
2027
1975
  Loading03Icon as Loading03Icon8,
2028
1976
  CancelCircleIcon as CancelCircleIcon5,
2029
1977
  Copy01Icon as Copy01Icon3,
@@ -2051,7 +1999,7 @@ var UniversalCardPage = ({
2051
1999
  const [isFreezing, setIsFreezing] = useState12(false);
2052
2000
  const [showDeleteDialog, setShowDeleteDialog] = useState12(false);
2053
2001
  const [isDeleting, setIsDeleting] = useState12(false);
2054
- useEffect8(() => {
2002
+ useEffect7(() => {
2055
2003
  setIsBgLoaded(false);
2056
2004
  if (!activeCard?.cardBgSrc) return;
2057
2005
  const img = new Image();
@@ -2085,9 +2033,9 @@ var UniversalCardPage = ({
2085
2033
  setShowDeleteDialog(false);
2086
2034
  };
2087
2035
  const formatTabLabel = (type) => {
2088
- return type.charAt(0).toUpperCase() + type.slice(1).toLowerCase();
2036
+ return type.charAt(0).toUpperCase() + type.slice(1).toLowerCase() + " Card";
2089
2037
  };
2090
- return /* @__PURE__ */ React19.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, /* @__PURE__ */ React19.createElement("h1", { className: "text-2xl mt-2 text-black tracking-tight mb-2 text-center" }, "My Cards"), sortedCards.length > 1 && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2 gap-3" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center bg-white rounded-full p-1 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => /* @__PURE__ */ React19.createElement(
2038
+ return /* @__PURE__ */ React19.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 relative" }, sortedCards.length > 1 && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2 gap-3" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-center bg-white rounded-full p-1 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => /* @__PURE__ */ React19.createElement(
2091
2039
  "button",
2092
2040
  {
2093
2041
  key: tab.id,
@@ -2111,7 +2059,14 @@ var UniversalCardPage = ({
2111
2059
  className: "absolute inset-0 bg-cover bg-center",
2112
2060
  style: { backgroundImage: `url(${activeCard.cardBgSrc})` }
2113
2061
  }
2114
- ), /* @__PURE__ */ React19.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-start justify-end w-full gap-4" }, activeCard.networkLogoSrc && /* @__PURE__ */ React19.createElement("img", { src: activeCard.networkLogoSrc, alt: "Network Logo", className: "h-7 w-auto max-w-20 object-contain opacity-90" })), /* @__PURE__ */ React19.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React19.createElement("span", { className: `text-[10px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/70"} drop-shadow-sm` }, "Balance"), /* @__PURE__ */ React19.createElement("span", { className: `text-[16px] tracking-widest ${activeCard.contentDark ? "text-black" : "text-white"} drop-shadow-sm` }, activeCard.balance))))))), /* @__PURE__ */ React19.createElement("div", { className: "w-full flex flex-col gap-4 mt-1" }, /* @__PURE__ */ React19.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React19.createElement(
2062
+ ), /* @__PURE__ */ React19.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ React19.createElement("div", { className: "flex items-start justify-end w-full gap-4" }), /* @__PURE__ */ React19.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React19.createElement("span", { className: `text-[10px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/70"} drop-shadow-sm` }, "Balance"), /* @__PURE__ */ React19.createElement("span", { className: `text-[16px] tracking-widest ${activeCard.contentDark ? "text-black" : "text-white"} drop-shadow-sm` }, activeCard.balance)), activeCard.networkLogoSrc && /* @__PURE__ */ React19.createElement(
2063
+ "img",
2064
+ {
2065
+ src: activeCard.networkLogoSrc,
2066
+ alt: "Network Logo",
2067
+ className: "h-7 w-auto max-w-20 object-contain opacity-90"
2068
+ }
2069
+ )))))), /* @__PURE__ */ React19.createElement("div", { className: "w-full flex flex-col gap-4 mt-1" }, /* @__PURE__ */ React19.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React19.createElement(
2115
2070
  MenuRow,
2116
2071
  {
2117
2072
  icon: PlusSignIcon2,
@@ -2125,7 +2080,7 @@ var UniversalCardPage = ({
2125
2080
  ), /* @__PURE__ */ React19.createElement(
2126
2081
  MenuRow,
2127
2082
  {
2128
- icon: ViewOffSlashIcon2,
2083
+ icon: ViewOffSlashIcon,
2129
2084
  title: "Reveal Information",
2130
2085
  subtitle: "Show secure card details",
2131
2086
  onClick: () => {
@@ -2185,7 +2140,7 @@ var CardInfoDialog = ({ isOpen, onClose, cardDetails }) => {
2185
2140
  var FundCardDialog = ({ isOpen, onClose, onSubmit }) => {
2186
2141
  const [amount, setAmount] = useState12("");
2187
2142
  const [isProcessing, setIsProcessing] = useState12(false);
2188
- useEffect8(() => {
2143
+ useEffect7(() => {
2189
2144
  if (isOpen) {
2190
2145
  setAmount("");
2191
2146
  }
@@ -2223,7 +2178,6 @@ import { HugeiconsIcon as HugeiconsIcon14 } from "@hugeicons/react";
2223
2178
  import {
2224
2179
  UserIcon,
2225
2180
  LockKeyIcon as LockKeyIcon2,
2226
- ShieldUserIcon,
2227
2181
  MessageQuestionIcon,
2228
2182
  UserIdVerificationIcon,
2229
2183
  CrownIcon,
@@ -2316,10 +2270,10 @@ var UniversalProfilePage = ({
2316
2270
  ), /* @__PURE__ */ React20.createElement(
2317
2271
  MenuRow2,
2318
2272
  {
2319
- icon: ShieldUserIcon,
2320
- title: "Web3 Profile",
2321
- subtitle: "Manage web3 profile",
2322
- onClick: onDefiTap
2273
+ icon: CrownIcon,
2274
+ title: "My Referrals",
2275
+ subtitle: "Referral & Rewards",
2276
+ onClick: onExportTap
2323
2277
  }
2324
2278
  ), /* @__PURE__ */ React20.createElement(
2325
2279
  MenuRow2,
@@ -2338,14 +2292,6 @@ var UniversalProfilePage = ({
2338
2292
  subtitle: "Account Verifications",
2339
2293
  onClick: onVerificationsTap
2340
2294
  }
2341
- ), /* @__PURE__ */ React20.createElement(
2342
- MenuRow2,
2343
- {
2344
- icon: CrownIcon,
2345
- title: "My Referrals",
2346
- subtitle: "Referral & Rewards",
2347
- onClick: onExportTap
2348
- }
2349
2295
  ), /* @__PURE__ */ React20.createElement(
2350
2296
  MenuRow2,
2351
2297
  {
@@ -2474,7 +2420,7 @@ var UniversalSidebar = ({
2474
2420
  };
2475
2421
 
2476
2422
  // src/components/HeroSection.tsx
2477
- import React23, { useState as useState16, useEffect as useEffect9, useRef as useRef4 } from "react";
2423
+ import React23, { useState as useState16, useEffect as useEffect8, useRef as useRef4 } from "react";
2478
2424
  import Link6 from "next/link";
2479
2425
  import Image3 from "next/image";
2480
2426
 
@@ -2589,7 +2535,7 @@ var HeroSection = ({
2589
2535
  const [isAnimating, setIsAnimating] = useState16(false);
2590
2536
  const [isWaitlistOpen, setIsWaitlistOpen] = useState16(false);
2591
2537
  const titleRef = useRef4(null);
2592
- useEffect9(() => {
2538
+ useEffect8(() => {
2593
2539
  const observer = new IntersectionObserver(
2594
2540
  ([entry]) => {
2595
2541
  if (entry.isIntersecting) {
@@ -2682,12 +2628,12 @@ var HeroSection = ({
2682
2628
  };
2683
2629
 
2684
2630
  // src/components/AppBento2.tsx
2685
- import React24, { useState as useState17, useEffect as useEffect10, useRef as useRef5 } from "react";
2631
+ import React24, { useState as useState17, useEffect as useEffect9, useRef as useRef5 } from "react";
2686
2632
  import { HugeiconsIcon as HugeiconsIcon16 } from "@hugeicons/react";
2687
2633
  var AppBento2 = ({ tagline, headline, features }) => {
2688
2634
  const [isAnimating, setIsAnimating] = useState17(false);
2689
2635
  const titleRef = useRef5(null);
2690
- useEffect10(() => {
2636
+ useEffect9(() => {
2691
2637
  const observer = new IntersectionObserver(
2692
2638
  ([entry]) => {
2693
2639
  if (entry.isIntersecting) {
@@ -2963,7 +2909,7 @@ var MenuRow3 = ({
2963
2909
  );
2964
2910
 
2965
2911
  // src/components/FeatureScroll.tsx
2966
- import React26, { useRef as useRef6, useState as useState19, useEffect as useEffect11 } from "react";
2912
+ import React26, { useRef as useRef6, useState as useState19, useEffect as useEffect10 } from "react";
2967
2913
  import Image4 from "next/image";
2968
2914
  import { HugeiconsIcon as HugeiconsIcon18 } from "@hugeicons/react";
2969
2915
  import { ArrowLeft01Icon as ArrowLeft01Icon7, ArrowRight01Icon as ArrowRight01Icon6, Loading03Icon as Loading03Icon11 } from "@hugeicons/core-free-icons";
@@ -3017,7 +2963,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
3017
2963
  setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
3018
2964
  }
3019
2965
  };
3020
- useEffect11(() => {
2966
+ useEffect10(() => {
3021
2967
  checkScroll();
3022
2968
  window.addEventListener("resize", checkScroll);
3023
2969
  return () => window.removeEventListener("resize", checkScroll);
@@ -3098,7 +3044,7 @@ var PlatformFeatures = ({
3098
3044
  };
3099
3045
 
3100
3046
  // src/components/ManagedDocument.tsx
3101
- import React28, { useState as useState20, useEffect as useEffect12, useRef as useRef7 } from "react";
3047
+ import React28, { useState as useState20, useEffect as useEffect11, useRef as useRef7 } from "react";
3102
3048
  var ManagedDocument = ({
3103
3049
  tagline,
3104
3050
  title,
@@ -3108,7 +3054,7 @@ var ManagedDocument = ({
3108
3054
  }) => {
3109
3055
  const [isAnimating, setIsAnimating] = useState20(false);
3110
3056
  const titleRef = useRef7(null);
3111
- useEffect12(() => {
3057
+ useEffect11(() => {
3112
3058
  const observer = new IntersectionObserver(
3113
3059
  ([entry]) => {
3114
3060
  if (entry.isIntersecting) {
@@ -3148,11 +3094,11 @@ var ManagedDocument = ({
3148
3094
  };
3149
3095
 
3150
3096
  // src/components/ManagedContactBlock.tsx
3151
- import React29, { useState as useState21, useEffect as useEffect13 } from "react";
3097
+ import React29, { useState as useState21, useEffect as useEffect12 } from "react";
3152
3098
  import { HugeiconsIcon as HugeiconsIcon20 } from "@hugeicons/react";
3153
3099
  var SecureEmail = ({ user, domain, className }) => {
3154
3100
  const [isMounted, setIsMounted] = useState21(false);
3155
- useEffect13(() => {
3101
+ useEffect12(() => {
3156
3102
  setIsMounted(true);
3157
3103
  }, []);
3158
3104
  if (!isMounted) {
@@ -3213,7 +3159,7 @@ var ManagedContactBlock = ({
3213
3159
  };
3214
3160
 
3215
3161
  // src/components/ManagedPricingBlock.tsx
3216
- import React30, { useState as useState22, useEffect as useEffect14, useRef as useRef8 } from "react";
3162
+ import React30, { useState as useState22, useEffect as useEffect13, useRef as useRef8 } from "react";
3217
3163
  import Link7 from "next/link";
3218
3164
  import Image5 from "next/image";
3219
3165
  var CheckIcon = ({ className = "" }) => /* @__PURE__ */ React30.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React30.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ React30.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
@@ -3227,7 +3173,7 @@ var ManagedPricingBlock = ({
3227
3173
  const [isAnimating, setIsAnimating] = useState22(false);
3228
3174
  const [activeTabIndex, setActiveTabIndex] = useState22(0);
3229
3175
  const titleRef = useRef8(null);
3230
- useEffect14(() => {
3176
+ useEffect13(() => {
3231
3177
  const observer = new IntersectionObserver(
3232
3178
  ([entry]) => {
3233
3179
  if (entry.isIntersecting) {
@@ -3442,14 +3388,14 @@ var ManagedNewsletterSplitBlock = ({
3442
3388
  };
3443
3389
 
3444
3390
  // src/components/PortfolioHero.tsx
3445
- import React34, { useEffect as useEffect15, useRef as useRef9 } from "react";
3391
+ import React34, { useEffect as useEffect14, useRef as useRef9 } from "react";
3446
3392
  import Link8 from "next/link";
3447
3393
  import Image8 from "next/image";
3448
3394
  import { HugeiconsIcon as HugeiconsIcon22 } from "@hugeicons/react";
3449
3395
  import { ArrowRight01Icon as ArrowRight01Icon7 } from "@hugeicons/core-free-icons";
3450
3396
  var useScrollAnimation = () => {
3451
3397
  const elementRef = useRef9(null);
3452
- useEffect15(() => {
3398
+ useEffect14(() => {
3453
3399
  const el = elementRef.current;
3454
3400
  if (!el) return;
3455
3401
  const observer = new IntersectionObserver(
@@ -3577,7 +3523,7 @@ var GifFeatureCard = ({
3577
3523
  };
3578
3524
 
3579
3525
  // src/components/MedicalFeatureStatsBlock.tsx
3580
- import React36, { useState as useState24, useEffect as useEffect16, useRef as useRef10 } from "react";
3526
+ import React36, { useState as useState24, useEffect as useEffect15, useRef as useRef10 } from "react";
3581
3527
  import Image10 from "next/image";
3582
3528
  var MedicalFeatureStatsBlock = ({
3583
3529
  bottomHeadline,
@@ -3588,7 +3534,7 @@ var MedicalFeatureStatsBlock = ({
3588
3534
  }) => {
3589
3535
  const [isAnimating, setIsAnimating] = useState24(false);
3590
3536
  const titleRef = useRef10(null);
3591
- useEffect16(() => {
3537
+ useEffect15(() => {
3592
3538
  const observer = new IntersectionObserver(
3593
3539
  ([entry]) => {
3594
3540
  if (entry.isIntersecting) {
@@ -4293,7 +4239,7 @@ var UniversalCardActionPage = ({
4293
4239
  };
4294
4240
 
4295
4241
  // src/components/PinDialerBottomSheet.tsx
4296
- import React44, { useState as useState30, useEffect as useEffect17 } from "react";
4242
+ import React44, { useState as useState30, useEffect as useEffect16 } from "react";
4297
4243
  import { HugeiconsIcon as HugeiconsIcon30 } from "@hugeicons/react";
4298
4244
  import { CancelCircleIcon as CancelCircleIcon8 } from "@hugeicons/core-free-icons";
4299
4245
  var PinDialerBottomSheet = ({
@@ -4304,7 +4250,7 @@ var PinDialerBottomSheet = ({
4304
4250
  onComplete
4305
4251
  }) => {
4306
4252
  const [pin, setPin] = useState30("");
4307
- useEffect17(() => {
4253
+ useEffect16(() => {
4308
4254
  setPin("");
4309
4255
  }, [isOpen]);
4310
4256
  const handleSubmit = (e) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retinalabsllc/zairusjs",
3
- "version": "15.1.25",
3
+ "version": "15.1.35",
4
4
  "description": "A perceptive, Ai data driven Next.js UI component library.",
5
5
  "author": "Retina Labs Company",
6
6
  "license": "MIT",