@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 +0 -4
- package/dist/index.d.ts +0 -4
- package/dist/index.js +18 -69
- package/dist/index.mjs +42 -96
- package/package.json +1 -1
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: "
|
|
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
|
|
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 " }, "
|
|
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:
|
|
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" },
|
|
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" }
|
|
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.
|
|
2334
|
-
title: "
|
|
2335
|
-
subtitle: "
|
|
2336
|
-
onClick:
|
|
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
|
|
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: "
|
|
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
|
|
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 " }, "
|
|
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:
|
|
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
|
|
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
|
|
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
|
-
|
|
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" },
|
|
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" }
|
|
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:
|
|
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
|
-
|
|
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:
|
|
2320
|
-
title: "
|
|
2321
|
-
subtitle: "
|
|
2322
|
-
onClick:
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
4253
|
+
useEffect16(() => {
|
|
4308
4254
|
setPin("");
|
|
4309
4255
|
}, [isOpen]);
|
|
4310
4256
|
const handleSubmit = (e) => {
|