@retinalabsllc/zairusjs 15.1.30 → 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 +4 -54
- package/dist/index.mjs +28 -80
- 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(
|
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();
|
|
@@ -2132,7 +2080,7 @@ var UniversalCardPage = ({
|
|
|
2132
2080
|
), /* @__PURE__ */ React19.createElement(
|
|
2133
2081
|
MenuRow,
|
|
2134
2082
|
{
|
|
2135
|
-
icon:
|
|
2083
|
+
icon: ViewOffSlashIcon,
|
|
2136
2084
|
title: "Reveal Information",
|
|
2137
2085
|
subtitle: "Show secure card details",
|
|
2138
2086
|
onClick: () => {
|
|
@@ -2192,7 +2140,7 @@ var CardInfoDialog = ({ isOpen, onClose, cardDetails }) => {
|
|
|
2192
2140
|
var FundCardDialog = ({ isOpen, onClose, onSubmit }) => {
|
|
2193
2141
|
const [amount, setAmount] = useState12("");
|
|
2194
2142
|
const [isProcessing, setIsProcessing] = useState12(false);
|
|
2195
|
-
|
|
2143
|
+
useEffect7(() => {
|
|
2196
2144
|
if (isOpen) {
|
|
2197
2145
|
setAmount("");
|
|
2198
2146
|
}
|
|
@@ -2472,7 +2420,7 @@ var UniversalSidebar = ({
|
|
|
2472
2420
|
};
|
|
2473
2421
|
|
|
2474
2422
|
// src/components/HeroSection.tsx
|
|
2475
|
-
import React23, { useState as useState16, useEffect as
|
|
2423
|
+
import React23, { useState as useState16, useEffect as useEffect8, useRef as useRef4 } from "react";
|
|
2476
2424
|
import Link6 from "next/link";
|
|
2477
2425
|
import Image3 from "next/image";
|
|
2478
2426
|
|
|
@@ -2587,7 +2535,7 @@ var HeroSection = ({
|
|
|
2587
2535
|
const [isAnimating, setIsAnimating] = useState16(false);
|
|
2588
2536
|
const [isWaitlistOpen, setIsWaitlistOpen] = useState16(false);
|
|
2589
2537
|
const titleRef = useRef4(null);
|
|
2590
|
-
|
|
2538
|
+
useEffect8(() => {
|
|
2591
2539
|
const observer = new IntersectionObserver(
|
|
2592
2540
|
([entry]) => {
|
|
2593
2541
|
if (entry.isIntersecting) {
|
|
@@ -2680,12 +2628,12 @@ var HeroSection = ({
|
|
|
2680
2628
|
};
|
|
2681
2629
|
|
|
2682
2630
|
// src/components/AppBento2.tsx
|
|
2683
|
-
import React24, { useState as useState17, useEffect as
|
|
2631
|
+
import React24, { useState as useState17, useEffect as useEffect9, useRef as useRef5 } from "react";
|
|
2684
2632
|
import { HugeiconsIcon as HugeiconsIcon16 } from "@hugeicons/react";
|
|
2685
2633
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2686
2634
|
const [isAnimating, setIsAnimating] = useState17(false);
|
|
2687
2635
|
const titleRef = useRef5(null);
|
|
2688
|
-
|
|
2636
|
+
useEffect9(() => {
|
|
2689
2637
|
const observer = new IntersectionObserver(
|
|
2690
2638
|
([entry]) => {
|
|
2691
2639
|
if (entry.isIntersecting) {
|
|
@@ -2961,7 +2909,7 @@ var MenuRow3 = ({
|
|
|
2961
2909
|
);
|
|
2962
2910
|
|
|
2963
2911
|
// src/components/FeatureScroll.tsx
|
|
2964
|
-
import React26, { useRef as useRef6, useState as useState19, useEffect as
|
|
2912
|
+
import React26, { useRef as useRef6, useState as useState19, useEffect as useEffect10 } from "react";
|
|
2965
2913
|
import Image4 from "next/image";
|
|
2966
2914
|
import { HugeiconsIcon as HugeiconsIcon18 } from "@hugeicons/react";
|
|
2967
2915
|
import { ArrowLeft01Icon as ArrowLeft01Icon7, ArrowRight01Icon as ArrowRight01Icon6, Loading03Icon as Loading03Icon11 } from "@hugeicons/core-free-icons";
|
|
@@ -3015,7 +2963,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3015
2963
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
3016
2964
|
}
|
|
3017
2965
|
};
|
|
3018
|
-
|
|
2966
|
+
useEffect10(() => {
|
|
3019
2967
|
checkScroll();
|
|
3020
2968
|
window.addEventListener("resize", checkScroll);
|
|
3021
2969
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -3096,7 +3044,7 @@ var PlatformFeatures = ({
|
|
|
3096
3044
|
};
|
|
3097
3045
|
|
|
3098
3046
|
// src/components/ManagedDocument.tsx
|
|
3099
|
-
import React28, { useState as useState20, useEffect as
|
|
3047
|
+
import React28, { useState as useState20, useEffect as useEffect11, useRef as useRef7 } from "react";
|
|
3100
3048
|
var ManagedDocument = ({
|
|
3101
3049
|
tagline,
|
|
3102
3050
|
title,
|
|
@@ -3106,7 +3054,7 @@ var ManagedDocument = ({
|
|
|
3106
3054
|
}) => {
|
|
3107
3055
|
const [isAnimating, setIsAnimating] = useState20(false);
|
|
3108
3056
|
const titleRef = useRef7(null);
|
|
3109
|
-
|
|
3057
|
+
useEffect11(() => {
|
|
3110
3058
|
const observer = new IntersectionObserver(
|
|
3111
3059
|
([entry]) => {
|
|
3112
3060
|
if (entry.isIntersecting) {
|
|
@@ -3146,11 +3094,11 @@ var ManagedDocument = ({
|
|
|
3146
3094
|
};
|
|
3147
3095
|
|
|
3148
3096
|
// src/components/ManagedContactBlock.tsx
|
|
3149
|
-
import React29, { useState as useState21, useEffect as
|
|
3097
|
+
import React29, { useState as useState21, useEffect as useEffect12 } from "react";
|
|
3150
3098
|
import { HugeiconsIcon as HugeiconsIcon20 } from "@hugeicons/react";
|
|
3151
3099
|
var SecureEmail = ({ user, domain, className }) => {
|
|
3152
3100
|
const [isMounted, setIsMounted] = useState21(false);
|
|
3153
|
-
|
|
3101
|
+
useEffect12(() => {
|
|
3154
3102
|
setIsMounted(true);
|
|
3155
3103
|
}, []);
|
|
3156
3104
|
if (!isMounted) {
|
|
@@ -3211,7 +3159,7 @@ var ManagedContactBlock = ({
|
|
|
3211
3159
|
};
|
|
3212
3160
|
|
|
3213
3161
|
// src/components/ManagedPricingBlock.tsx
|
|
3214
|
-
import React30, { useState as useState22, useEffect as
|
|
3162
|
+
import React30, { useState as useState22, useEffect as useEffect13, useRef as useRef8 } from "react";
|
|
3215
3163
|
import Link7 from "next/link";
|
|
3216
3164
|
import Image5 from "next/image";
|
|
3217
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" }));
|
|
@@ -3225,7 +3173,7 @@ var ManagedPricingBlock = ({
|
|
|
3225
3173
|
const [isAnimating, setIsAnimating] = useState22(false);
|
|
3226
3174
|
const [activeTabIndex, setActiveTabIndex] = useState22(0);
|
|
3227
3175
|
const titleRef = useRef8(null);
|
|
3228
|
-
|
|
3176
|
+
useEffect13(() => {
|
|
3229
3177
|
const observer = new IntersectionObserver(
|
|
3230
3178
|
([entry]) => {
|
|
3231
3179
|
if (entry.isIntersecting) {
|
|
@@ -3440,14 +3388,14 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3440
3388
|
};
|
|
3441
3389
|
|
|
3442
3390
|
// src/components/PortfolioHero.tsx
|
|
3443
|
-
import React34, { useEffect as
|
|
3391
|
+
import React34, { useEffect as useEffect14, useRef as useRef9 } from "react";
|
|
3444
3392
|
import Link8 from "next/link";
|
|
3445
3393
|
import Image8 from "next/image";
|
|
3446
3394
|
import { HugeiconsIcon as HugeiconsIcon22 } from "@hugeicons/react";
|
|
3447
3395
|
import { ArrowRight01Icon as ArrowRight01Icon7 } from "@hugeicons/core-free-icons";
|
|
3448
3396
|
var useScrollAnimation = () => {
|
|
3449
3397
|
const elementRef = useRef9(null);
|
|
3450
|
-
|
|
3398
|
+
useEffect14(() => {
|
|
3451
3399
|
const el = elementRef.current;
|
|
3452
3400
|
if (!el) return;
|
|
3453
3401
|
const observer = new IntersectionObserver(
|
|
@@ -3575,7 +3523,7 @@ var GifFeatureCard = ({
|
|
|
3575
3523
|
};
|
|
3576
3524
|
|
|
3577
3525
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
3578
|
-
import React36, { useState as useState24, useEffect as
|
|
3526
|
+
import React36, { useState as useState24, useEffect as useEffect15, useRef as useRef10 } from "react";
|
|
3579
3527
|
import Image10 from "next/image";
|
|
3580
3528
|
var MedicalFeatureStatsBlock = ({
|
|
3581
3529
|
bottomHeadline,
|
|
@@ -3586,7 +3534,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3586
3534
|
}) => {
|
|
3587
3535
|
const [isAnimating, setIsAnimating] = useState24(false);
|
|
3588
3536
|
const titleRef = useRef10(null);
|
|
3589
|
-
|
|
3537
|
+
useEffect15(() => {
|
|
3590
3538
|
const observer = new IntersectionObserver(
|
|
3591
3539
|
([entry]) => {
|
|
3592
3540
|
if (entry.isIntersecting) {
|
|
@@ -4291,7 +4239,7 @@ var UniversalCardActionPage = ({
|
|
|
4291
4239
|
};
|
|
4292
4240
|
|
|
4293
4241
|
// src/components/PinDialerBottomSheet.tsx
|
|
4294
|
-
import React44, { useState as useState30, useEffect as
|
|
4242
|
+
import React44, { useState as useState30, useEffect as useEffect16 } from "react";
|
|
4295
4243
|
import { HugeiconsIcon as HugeiconsIcon30 } from "@hugeicons/react";
|
|
4296
4244
|
import { CancelCircleIcon as CancelCircleIcon8 } from "@hugeicons/core-free-icons";
|
|
4297
4245
|
var PinDialerBottomSheet = ({
|
|
@@ -4302,7 +4250,7 @@ var PinDialerBottomSheet = ({
|
|
|
4302
4250
|
onComplete
|
|
4303
4251
|
}) => {
|
|
4304
4252
|
const [pin, setPin] = useState30("");
|
|
4305
|
-
|
|
4253
|
+
useEffect16(() => {
|
|
4306
4254
|
setPin("");
|
|
4307
4255
|
}, [isOpen]);
|
|
4308
4256
|
const handleSubmit = (e) => {
|