@retinalabsllc/zairusjs 12.0.15 → 12.0.25
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 +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +33 -27
- package/dist/index.mjs +34 -28
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -237,6 +237,7 @@ interface UniversalTransactionPageProps {
|
|
|
237
237
|
onDirectionFilterChange: (direction: string) => void;
|
|
238
238
|
activeTypeFilter: string;
|
|
239
239
|
onTypeFilterChange: (type: string) => void;
|
|
240
|
+
formatDate: (dateInput: string | Date) => string;
|
|
240
241
|
onReportTransaction?: (tx: UniversalTransaction) => void;
|
|
241
242
|
onGenerateReceipt?: (tx: UniversalTransaction) => void | Promise<void>;
|
|
242
243
|
}
|
|
@@ -253,6 +254,7 @@ interface UniversalHomeViewProps {
|
|
|
253
254
|
balanceCurrency?: string;
|
|
254
255
|
primaryAction?: HomeActionBtn;
|
|
255
256
|
secondaryAction?: HomeActionBtn;
|
|
257
|
+
customContent?: React.ReactNode;
|
|
256
258
|
transactionsProps: UniversalTransactionPageProps;
|
|
257
259
|
}
|
|
258
260
|
declare const UniversalHomeView: React.FC<UniversalHomeViewProps>;
|
|
@@ -274,6 +276,7 @@ interface UniversalWalletPageProps {
|
|
|
274
276
|
hideControls?: boolean;
|
|
275
277
|
hideBalanceAmounts?: boolean;
|
|
276
278
|
isGeneratingStatement?: boolean;
|
|
279
|
+
external?: boolean;
|
|
277
280
|
onBack?: () => void;
|
|
278
281
|
wallets: UniversalWallet[];
|
|
279
282
|
isLoading?: boolean;
|
package/dist/index.d.ts
CHANGED
|
@@ -237,6 +237,7 @@ interface UniversalTransactionPageProps {
|
|
|
237
237
|
onDirectionFilterChange: (direction: string) => void;
|
|
238
238
|
activeTypeFilter: string;
|
|
239
239
|
onTypeFilterChange: (type: string) => void;
|
|
240
|
+
formatDate: (dateInput: string | Date) => string;
|
|
240
241
|
onReportTransaction?: (tx: UniversalTransaction) => void;
|
|
241
242
|
onGenerateReceipt?: (tx: UniversalTransaction) => void | Promise<void>;
|
|
242
243
|
}
|
|
@@ -253,6 +254,7 @@ interface UniversalHomeViewProps {
|
|
|
253
254
|
balanceCurrency?: string;
|
|
254
255
|
primaryAction?: HomeActionBtn;
|
|
255
256
|
secondaryAction?: HomeActionBtn;
|
|
257
|
+
customContent?: React.ReactNode;
|
|
256
258
|
transactionsProps: UniversalTransactionPageProps;
|
|
257
259
|
}
|
|
258
260
|
declare const UniversalHomeView: React.FC<UniversalHomeViewProps>;
|
|
@@ -274,6 +276,7 @@ interface UniversalWalletPageProps {
|
|
|
274
276
|
hideControls?: boolean;
|
|
275
277
|
hideBalanceAmounts?: boolean;
|
|
276
278
|
isGeneratingStatement?: boolean;
|
|
279
|
+
external?: boolean;
|
|
277
280
|
onBack?: () => void;
|
|
278
281
|
wallets: UniversalWallet[];
|
|
279
282
|
isLoading?: boolean;
|
package/dist/index.js
CHANGED
|
@@ -1260,13 +1260,6 @@ var import_react24 = require("@hugeicons/react");
|
|
|
1260
1260
|
var import_react_hot_toast5 = __toESM(require("react-hot-toast"));
|
|
1261
1261
|
var import_core_free_icons7 = require("@hugeicons/core-free-icons");
|
|
1262
1262
|
var PageSpinner2 = () => /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
1263
|
-
var formatDate = (dateInput) => {
|
|
1264
|
-
const d = new Date(dateInput);
|
|
1265
|
-
const day = d.getDate();
|
|
1266
|
-
const month = d.toLocaleString("en-US", { month: "short" });
|
|
1267
|
-
const year = d.getFullYear();
|
|
1268
|
-
return `${day} ${month} ${year}`;
|
|
1269
|
-
};
|
|
1270
1263
|
var formatTime = (dateInput) => {
|
|
1271
1264
|
return new Date(dateInput).toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit" });
|
|
1272
1265
|
};
|
|
@@ -1295,6 +1288,7 @@ var UniversalTransactionPage = ({
|
|
|
1295
1288
|
onDirectionFilterChange,
|
|
1296
1289
|
activeTypeFilter,
|
|
1297
1290
|
onTypeFilterChange,
|
|
1291
|
+
formatDate,
|
|
1298
1292
|
onReportTransaction,
|
|
1299
1293
|
onGenerateReceipt
|
|
1300
1294
|
}) => {
|
|
@@ -1488,11 +1482,12 @@ var import_react25 = __toESM(require("react"));
|
|
|
1488
1482
|
var import_react26 = require("@hugeicons/react");
|
|
1489
1483
|
var import_core_free_icons8 = require("@hugeicons/core-free-icons");
|
|
1490
1484
|
var UniversalHomeView = ({
|
|
1491
|
-
balanceLabel = "
|
|
1485
|
+
balanceLabel = "Spendable Balance",
|
|
1492
1486
|
balanceAmount,
|
|
1493
|
-
balanceCurrency = "
|
|
1487
|
+
balanceCurrency = "",
|
|
1494
1488
|
primaryAction,
|
|
1495
1489
|
secondaryAction,
|
|
1490
|
+
customContent,
|
|
1496
1491
|
transactionsProps
|
|
1497
1492
|
}) => {
|
|
1498
1493
|
const [displayAmount, setDisplayAmount] = (0, import_react25.useState)("0.00");
|
|
@@ -1503,6 +1498,8 @@ var UniversalHomeView = ({
|
|
|
1503
1498
|
setDisplayAmount(balanceAmount);
|
|
1504
1499
|
return;
|
|
1505
1500
|
}
|
|
1501
|
+
const decimalMatch = balanceAmount.match(/\.(\d+)/);
|
|
1502
|
+
const fractionDigits = decimalMatch ? decimalMatch[1].length : 0;
|
|
1506
1503
|
let startTimestamp = null;
|
|
1507
1504
|
const duration = 1e3;
|
|
1508
1505
|
const step = (timestamp) => {
|
|
@@ -1511,21 +1508,21 @@ var UniversalHomeView = ({
|
|
|
1511
1508
|
const easeProgress = progress === 1 ? 1 : 1 - Math.pow(2, -10 * progress);
|
|
1512
1509
|
const currentCount = easeProgress * target;
|
|
1513
1510
|
setDisplayAmount(currentCount.toLocaleString("en-US", {
|
|
1514
|
-
minimumFractionDigits:
|
|
1515
|
-
maximumFractionDigits:
|
|
1511
|
+
minimumFractionDigits: fractionDigits,
|
|
1512
|
+
maximumFractionDigits: fractionDigits
|
|
1516
1513
|
}));
|
|
1517
1514
|
if (progress < 1) {
|
|
1518
1515
|
requestAnimationFrame(step);
|
|
1519
1516
|
} else {
|
|
1520
1517
|
setDisplayAmount(target.toLocaleString("en-US", {
|
|
1521
|
-
minimumFractionDigits:
|
|
1522
|
-
maximumFractionDigits:
|
|
1518
|
+
minimumFractionDigits: fractionDigits,
|
|
1519
|
+
maximumFractionDigits: fractionDigits
|
|
1523
1520
|
}));
|
|
1524
1521
|
}
|
|
1525
1522
|
};
|
|
1526
1523
|
requestAnimationFrame(step);
|
|
1527
1524
|
}, [balanceAmount]);
|
|
1528
|
-
const [intPart, decPart] = displayAmount.includes(".") ? displayAmount.split(".") : [displayAmount, "
|
|
1525
|
+
const [intPart, decPart] = displayAmount.includes(".") ? displayAmount.split(".") : [displayAmount, ""];
|
|
1529
1526
|
return /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative flex items-start justify-between w-full pt-4 pb-8" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex flex-col items-start text-left z-10 w-full" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center gap-2 mb-1.5" }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[12px] sm:text-[13px] text-neutral-500" }, balanceLabel), /* @__PURE__ */ import_react25.default.createElement(
|
|
1530
1527
|
"button",
|
|
1531
1528
|
{
|
|
@@ -1533,7 +1530,7 @@ var UniversalHomeView = ({
|
|
|
1533
1530
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1534
1531
|
},
|
|
1535
1532
|
/* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: isBalanceHidden ? import_core_free_icons8.ViewIcon : import_core_free_icons8.ViewOffSlashIcon, size: 14 })
|
|
1536
|
-
)), /* @__PURE__ */ import_react25.default.createElement("h1", { className: `text-3xl sm:text-4xl md:text-5xl text-black tracking-tight mb-5 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-2xl text-neutral-400 mr-1" }, balanceCurrency), intPart, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-xl sm:text-2xl text-neutral-400" }, ".", decPart)), /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center gap-3" }, primaryAction && /* @__PURE__ */ import_react25.default.createElement(
|
|
1533
|
+
)), /* @__PURE__ */ import_react25.default.createElement("h1", { className: `text-3xl sm:text-4xl md:text-5xl text-black tracking-tight mb-5 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-2xl text-neutral-400 mr-1" }, balanceCurrency), intPart, decPart && /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-xl sm:text-2xl text-neutral-400" }, ".", decPart)), /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center gap-3" }, primaryAction && /* @__PURE__ */ import_react25.default.createElement(
|
|
1537
1534
|
ThreeDActionButton,
|
|
1538
1535
|
{
|
|
1539
1536
|
onClick: primaryAction.onClick,
|
|
@@ -1548,7 +1545,7 @@ var UniversalHomeView = ({
|
|
|
1548
1545
|
},
|
|
1549
1546
|
/* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[13px] tracking-wide " }, secondaryAction.label),
|
|
1550
1547
|
secondaryAction.icon && /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: secondaryAction.icon, size: 16 })
|
|
1551
|
-
)))), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ import_react25.default.createElement(
|
|
1548
|
+
)))), customContent && /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full" }, customContent), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ import_react25.default.createElement(
|
|
1552
1549
|
UniversalTransactionPage,
|
|
1553
1550
|
{
|
|
1554
1551
|
...transactionsProps,
|
|
@@ -1579,6 +1576,7 @@ var UniversalWalletPage = ({
|
|
|
1579
1576
|
hideControls = false,
|
|
1580
1577
|
hideBalanceAmounts = false,
|
|
1581
1578
|
isGeneratingStatement = false,
|
|
1579
|
+
external = true,
|
|
1582
1580
|
wallets,
|
|
1583
1581
|
isLoading = false,
|
|
1584
1582
|
renderQrCode,
|
|
@@ -1709,7 +1707,7 @@ var UniversalWalletPage = ({
|
|
|
1709
1707
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
1710
1708
|
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-[13px] text-black placeholder-neutral-400 outline-none transition-colors focus:border-black"
|
|
1711
1709
|
}
|
|
1712
|
-
)), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react27.default.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.PlusSignIcon, size: 16 })), /* @__PURE__ */ import_react27.default.createElement("button", { onClick: startWalletImport, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Upload01Icon, size: 16 })))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ import_react27.default.createElement("div", null, /* @__PURE__ */ import_react27.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react27.default.createElement(PageSpinner3, null) : /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react27.default.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ import_react27.default.createElement("div", { key: wallet.id, onClick: () => setSelectedWallet(wallet), className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ import_react27.default.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), wallet.networkLogoSrc && /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-4 h-4 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ import_react27.default.createElement("img", { src: wallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-[13px] text-black truncate" }, wallet.name)), /* @__PURE__ */ import_react27.default.createElement("p", { className: `text-[13px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, wallet.
|
|
1710
|
+
)), !external && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react27.default.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.PlusSignIcon, size: 16 })), /* @__PURE__ */ import_react27.default.createElement("button", { onClick: startWalletImport, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Upload01Icon, size: 16 })))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ import_react27.default.createElement("div", null, /* @__PURE__ */ import_react27.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react27.default.createElement(PageSpinner3, null) : /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react27.default.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ import_react27.default.createElement("div", { key: wallet.id, onClick: () => setSelectedWallet(wallet), className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ import_react27.default.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), wallet.networkLogoSrc && /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-4 h-4 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ import_react27.default.createElement("img", { src: wallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-[13px] text-black truncate" }, wallet.name), !external && wallet.isActive !== void 0 && /* @__PURE__ */ import_react27.default.createElement("span", { className: `text-[9px] px-1.5 py-0.5 rounded-sm tracking-widest uppercase ${wallet.isActive ? "bg-emerald-50 text-emerald-600" : "bg-red-50 text-red-600"}` }, wallet.isActive ? "Active" : "Inactive")), /* @__PURE__ */ import_react27.default.createElement("p", { className: `text-[13px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-sm opacity-40 select-none" : ""}` }, external ? wallet.currency : `${wallet.balance} ${wallet.currency}`))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] tracking-wide text-neutral-600 bg-neutral-100 px-2.5 py-1 rounded-full " }, wallet.network)))))))), addModalOpen && /* @__PURE__ */ import_react27.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setAddModalOpen(false) }), /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react27.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, flowStep === 1 ? "Important Notice" : flowStep === 2 ? "Secret Recovery Phrase" : flowStep === 3 ? "Verify Phrase" : "Secure Wallet"), /* @__PURE__ */ import_react27.default.createElement("button", { onClick: () => !isProcessing && setAddModalOpen(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "p-6" }, flowStep === 1 && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ import_react27.default.createElement(Banner, { type: "alert", title: "Critical Warning", message: "You are about to generate a Self-Custodial Recovery Phrase. This phrase is the absolute master key to your wallet and all assets within it. Aeona DOES NOT store this phrase. If you lose it, your funds are permanently lost. Do not share this phrase with anyone.", isDismissible: false }), /* @__PURE__ */ import_react27.default.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "I Understand, Generate Phrase")), flowStep === 2 && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-sm text-neutral-600" }, "Please write down these words in the exact order shown. Store them in a secure, offline location."), /* @__PURE__ */ import_react27.default.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-48 overflow-y-auto custom-scrollbar pr-1" }, generatedPhrase.split(" ").map((word, idx) => /* @__PURE__ */ import_react27.default.createElement("div", { key: idx, className: "flex items-center gap-1.5 bg-neutral-50 rounded-lg p-2 selection:bg-neutral-200" }, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] text-neutral-400 select-none w-4 text-right shrink-0" }, idx + 1, "."), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[13px] text-black " }, word)))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center justify-between gap-2 0 pt-4" }, /* @__PURE__ */ import_react27.default.createElement("button", { type: "button", onClick: () => handleCopy(generatedPhrase, false), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Copy01Icon, size: 14 }), " Copy Phrase"), /* @__PURE__ */ import_react27.default.createElement("button", { type: "button", onClick: handleDownloadTxt, className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Download01Icon, size: 14 }), " Download .txt")), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-start gap-3 p-3 rounded-xl border border-neutral-200 mt-2" }, /* @__PURE__ */ import_react27.default.createElement("input", { type: "checkbox", id: "backup-confirm", checked: hasBackedUp, onChange: (e) => setHasBackedUp(e.target.checked), className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-black focus:ring-black cursor-pointer shrink-0" }), /* @__PURE__ */ import_react27.default.createElement("label", { htmlFor: "backup-confirm", className: "text-xs text-neutral-600 cursor-pointer leading-relaxed" }, "I have securely copied and stored my recovery phrase. I understand that if I lose it, my funds are gone forever.")), /* @__PURE__ */ import_react27.default.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Continue")), flowStep === 3 && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-sm text-neutral-600" }, "Please enter or paste your recovery phrase below to verify your backup."), /* @__PURE__ */ import_react27.default.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-56 overflow-y-auto custom-scrollbar pr-1 pb-1" }, verifyWords.map((word, idx) => /* @__PURE__ */ import_react27.default.createElement("div", { key: idx, className: "flex items-center gap-1 bg-white border border-neutral-200 focus-within:border-black rounded-lg p-1.5 transition-colors" }, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] text-neutral-400 w-4 shrink-0 text-right select-none" }, idx + 1, "."), /* @__PURE__ */ import_react27.default.createElement(
|
|
1713
1711
|
"input",
|
|
1714
1712
|
{
|
|
1715
1713
|
type: "text",
|
|
@@ -1760,7 +1758,15 @@ var UniversalWalletPage = ({
|
|
|
1760
1758
|
},
|
|
1761
1759
|
className: "w-full bg-transparent text-[13px] text-black outline-none min-w-0"
|
|
1762
1760
|
}
|
|
1763
|
-
)))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ import_react27.default.createElement("button", { type: "button", onClick: () => handleGridPaste(setImportWords, importWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ import_react27.default.createElement(ThreeDActionButton, { onClick: handleImportNext, className: "w-full mt-2" }, "Continue")), flowStep === 2 && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-sm text-neutral-600" }, "Set a local password to encrypt this wallet on this specific browser."), /* @__PURE__ */ import_react27.default.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ import_react27.default.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("imported"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Import Wallet"))))), selectedWallet && /* @__PURE__ */ import_react27.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react27.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ import_react27.default.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-6" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative mb-4" }, /* @__PURE__ */ import_react27.default.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14" }), selectedWallet.networkLogoSrc && /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-5 h-5 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ import_react27.default.createElement("img", { src: selectedWallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ import_react27.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.
|
|
1761
|
+
)))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ import_react27.default.createElement("button", { type: "button", onClick: () => handleGridPaste(setImportWords, importWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ import_react27.default.createElement(ThreeDActionButton, { onClick: handleImportNext, className: "w-full mt-2" }, "Continue")), flowStep === 2 && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-sm text-neutral-600" }, "Set a local password to encrypt this wallet on this specific browser."), /* @__PURE__ */ import_react27.default.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ import_react27.default.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("imported"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Import Wallet"))))), selectedWallet && /* @__PURE__ */ import_react27.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react27.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ import_react27.default.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-6" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative mb-4" }, /* @__PURE__ */ import_react27.default.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14" }), selectedWallet.networkLogoSrc && /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute -bottom-1 -right-1 w-5 h-5 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ import_react27.default.createElement("img", { src: selectedWallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ import_react27.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-[6px] opacity-40 select-none" : ""}` }, external ? selectedWallet.currency : `${selectedWallet.balance} ${selectedWallet.currency}`), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full border border-neutral-200 mt-1 " }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-full flex justify-center mb-6 mix-blend-multiply" }, renderQrCode(selectedWallet)), external && /* @__PURE__ */ import_react27.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react27.default.createElement(
|
|
1762
|
+
Banner,
|
|
1763
|
+
{
|
|
1764
|
+
type: "warning",
|
|
1765
|
+
title: "Important Network Notice",
|
|
1766
|
+
message: "Ensure you only send assets using the exact network specified for each wallet. Sending funds through an unsupported network will result in permanent loss of funds. Incoming assets to these addresses are converted instantly.",
|
|
1767
|
+
isDismissible: false
|
|
1768
|
+
}
|
|
1769
|
+
)), /* @__PURE__ */ import_react27.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ import_react27.default.createElement("div", null, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ import_react27.default.createElement("button", { type: "button", onClick: () => handleCopy(selectedWallet.address, true), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Copy01Icon, size: 14 })))), !external && /* @__PURE__ */ import_react27.default.createElement("div", null, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react27.default.createElement(ThreeDActionButton, { onClick: () => onDownloadPayId && onDownloadPayId(selectedWallet), isLoading: isGeneratingStatement, className: "w-full" }, "Generate Statement"), /* @__PURE__ */ import_react27.default.createElement("button", { type: "button", onClick: () => handleCopy(selectedWallet.address, true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address")))))));
|
|
1764
1770
|
};
|
|
1765
1771
|
|
|
1766
1772
|
// src/components/UniversalCardPage.tsx
|
|
@@ -2042,7 +2048,7 @@ var UniversalCardPage = ({
|
|
|
2042
2048
|
onClick: () => {
|
|
2043
2049
|
if (canFlip) setIsFlipped(!isFlipped);
|
|
2044
2050
|
},
|
|
2045
|
-
className: `relative
|
|
2051
|
+
className: `relative w-full max-w-85 transition-transform duration-700 ${!isBgLoaded ? "cursor-wait" : canFlip ? "cursor-pointer" : "cursor-default"}`,
|
|
2046
2052
|
style: {
|
|
2047
2053
|
height: 185,
|
|
2048
2054
|
transformStyle: "preserve-3d",
|
|
@@ -2085,7 +2091,7 @@ var UniversalCardPage = ({
|
|
|
2085
2091
|
/* @__PURE__ */ import_react35.default.createElement(
|
|
2086
2092
|
"div",
|
|
2087
2093
|
{
|
|
2088
|
-
className: `absolute inset-0 w-full h-full rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
2094
|
+
className: `absolute inset-0 w-full h-full shadow-2xl rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
2089
2095
|
style: { backfaceVisibility: "hidden" }
|
|
2090
2096
|
},
|
|
2091
2097
|
/* @__PURE__ */ import_react35.default.createElement(
|
|
@@ -2107,7 +2113,7 @@ var UniversalCardPage = ({
|
|
|
2107
2113
|
/* @__PURE__ */ import_react35.default.createElement(
|
|
2108
2114
|
"div",
|
|
2109
2115
|
{
|
|
2110
|
-
className: `absolute inset-0 w-full h-full rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
2116
|
+
className: `absolute inset-0 w-full h-full shadow-2xl rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
2111
2117
|
style: {
|
|
2112
2118
|
backfaceVisibility: "hidden",
|
|
2113
2119
|
transform: "rotateY(180deg)"
|
|
@@ -2157,7 +2163,7 @@ var UniversalCardPage = ({
|
|
|
2157
2163
|
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2158
2164
|
MenuRow,
|
|
2159
2165
|
{
|
|
2160
|
-
icon: import_core_free_icons13.
|
|
2166
|
+
icon: import_core_free_icons13.SlidersHorizontalIcon,
|
|
2161
2167
|
title: "Set Limits",
|
|
2162
2168
|
subtitle: "Set card limits",
|
|
2163
2169
|
onClick: () => {
|
|
@@ -2320,15 +2326,15 @@ var UniversalProfilePage = ({
|
|
|
2320
2326
|
MenuRow2,
|
|
2321
2327
|
{
|
|
2322
2328
|
icon: import_core_free_icons14.FileDownloadIcon,
|
|
2323
|
-
title: "
|
|
2324
|
-
subtitle: "
|
|
2329
|
+
title: "Account Statements",
|
|
2330
|
+
subtitle: "Download account statements",
|
|
2325
2331
|
onClick: onExportTap
|
|
2326
2332
|
}
|
|
2327
2333
|
), /* @__PURE__ */ import_react37.default.createElement(
|
|
2328
2334
|
MenuRow2,
|
|
2329
2335
|
{
|
|
2330
2336
|
icon: import_core_free_icons14.LogoutCircle02Icon,
|
|
2331
|
-
title: "
|
|
2337
|
+
title: "Log Out",
|
|
2332
2338
|
subtitle: "End your session",
|
|
2333
2339
|
onClick: () => setShowLogoutDialog(true),
|
|
2334
2340
|
isLast: true
|
|
@@ -2346,7 +2352,7 @@ var UniversalProfilePage = ({
|
|
|
2346
2352
|
ConfirmationDialog,
|
|
2347
2353
|
{
|
|
2348
2354
|
isOpen: showLogoutDialog,
|
|
2349
|
-
title: "Secure
|
|
2355
|
+
title: "Secure Log Out",
|
|
2350
2356
|
message: "Are you sure you want to log out? You will need to authenticate to return.",
|
|
2351
2357
|
confirmText: "Log Out",
|
|
2352
2358
|
isDestructive: true,
|
|
@@ -3486,7 +3492,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3486
3492
|
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
3487
3493
|
}
|
|
3488
3494
|
}
|
|
3489
|
-
)), /* @__PURE__ */ import_react58.default.createElement("div", { className: "w-full md:w-1/2 flex
|
|
3495
|
+
)), /* @__PURE__ */ import_react58.default.createElement("div", { className: "w-full md:w-1/2 flex flex-col items-center justify-center p-4 md:p-12 relative z-20" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative w-full max-w-lg p-8 md:p-12 text-center md:text-left transition-all duration-700 ease-out" }, /* @__PURE__ */ import_react58.default.createElement(
|
|
3490
3496
|
"div",
|
|
3491
3497
|
{
|
|
3492
3498
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
package/dist/index.mjs
CHANGED
|
@@ -1213,13 +1213,6 @@ import {
|
|
|
1213
1213
|
Copy01Icon
|
|
1214
1214
|
} from "@hugeicons/core-free-icons";
|
|
1215
1215
|
var PageSpinner2 = () => /* @__PURE__ */ React15.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: Loading03Icon4, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
1216
|
-
var formatDate = (dateInput) => {
|
|
1217
|
-
const d = new Date(dateInput);
|
|
1218
|
-
const day = d.getDate();
|
|
1219
|
-
const month = d.toLocaleString("en-US", { month: "short" });
|
|
1220
|
-
const year = d.getFullYear();
|
|
1221
|
-
return `${day} ${month} ${year}`;
|
|
1222
|
-
};
|
|
1223
1216
|
var formatTime = (dateInput) => {
|
|
1224
1217
|
return new Date(dateInput).toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit" });
|
|
1225
1218
|
};
|
|
@@ -1248,6 +1241,7 @@ var UniversalTransactionPage = ({
|
|
|
1248
1241
|
onDirectionFilterChange,
|
|
1249
1242
|
activeTypeFilter,
|
|
1250
1243
|
onTypeFilterChange,
|
|
1244
|
+
formatDate,
|
|
1251
1245
|
onReportTransaction,
|
|
1252
1246
|
onGenerateReceipt
|
|
1253
1247
|
}) => {
|
|
@@ -1441,11 +1435,12 @@ import React16, { useState as useState9, useEffect as useEffect7 } from "react";
|
|
|
1441
1435
|
import { HugeiconsIcon as HugeiconsIcon10 } from "@hugeicons/react";
|
|
1442
1436
|
import { ViewOffSlashIcon, ViewIcon } from "@hugeicons/core-free-icons";
|
|
1443
1437
|
var UniversalHomeView = ({
|
|
1444
|
-
balanceLabel = "
|
|
1438
|
+
balanceLabel = "Spendable Balance",
|
|
1445
1439
|
balanceAmount,
|
|
1446
|
-
balanceCurrency = "
|
|
1440
|
+
balanceCurrency = "",
|
|
1447
1441
|
primaryAction,
|
|
1448
1442
|
secondaryAction,
|
|
1443
|
+
customContent,
|
|
1449
1444
|
transactionsProps
|
|
1450
1445
|
}) => {
|
|
1451
1446
|
const [displayAmount, setDisplayAmount] = useState9("0.00");
|
|
@@ -1456,6 +1451,8 @@ var UniversalHomeView = ({
|
|
|
1456
1451
|
setDisplayAmount(balanceAmount);
|
|
1457
1452
|
return;
|
|
1458
1453
|
}
|
|
1454
|
+
const decimalMatch = balanceAmount.match(/\.(\d+)/);
|
|
1455
|
+
const fractionDigits = decimalMatch ? decimalMatch[1].length : 0;
|
|
1459
1456
|
let startTimestamp = null;
|
|
1460
1457
|
const duration = 1e3;
|
|
1461
1458
|
const step = (timestamp) => {
|
|
@@ -1464,21 +1461,21 @@ var UniversalHomeView = ({
|
|
|
1464
1461
|
const easeProgress = progress === 1 ? 1 : 1 - Math.pow(2, -10 * progress);
|
|
1465
1462
|
const currentCount = easeProgress * target;
|
|
1466
1463
|
setDisplayAmount(currentCount.toLocaleString("en-US", {
|
|
1467
|
-
minimumFractionDigits:
|
|
1468
|
-
maximumFractionDigits:
|
|
1464
|
+
minimumFractionDigits: fractionDigits,
|
|
1465
|
+
maximumFractionDigits: fractionDigits
|
|
1469
1466
|
}));
|
|
1470
1467
|
if (progress < 1) {
|
|
1471
1468
|
requestAnimationFrame(step);
|
|
1472
1469
|
} else {
|
|
1473
1470
|
setDisplayAmount(target.toLocaleString("en-US", {
|
|
1474
|
-
minimumFractionDigits:
|
|
1475
|
-
maximumFractionDigits:
|
|
1471
|
+
minimumFractionDigits: fractionDigits,
|
|
1472
|
+
maximumFractionDigits: fractionDigits
|
|
1476
1473
|
}));
|
|
1477
1474
|
}
|
|
1478
1475
|
};
|
|
1479
1476
|
requestAnimationFrame(step);
|
|
1480
1477
|
}, [balanceAmount]);
|
|
1481
|
-
const [intPart, decPart] = displayAmount.includes(".") ? displayAmount.split(".") : [displayAmount, "
|
|
1478
|
+
const [intPart, decPart] = displayAmount.includes(".") ? displayAmount.split(".") : [displayAmount, ""];
|
|
1482
1479
|
return /* @__PURE__ */ React16.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React16.createElement("div", { className: "relative flex items-start justify-between w-full pt-4 pb-8" }, /* @__PURE__ */ React16.createElement("div", { className: "flex flex-col items-start text-left z-10 w-full" }, /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-2 mb-1.5" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[12px] sm:text-[13px] text-neutral-500" }, balanceLabel), /* @__PURE__ */ React16.createElement(
|
|
1483
1480
|
"button",
|
|
1484
1481
|
{
|
|
@@ -1486,7 +1483,7 @@ var UniversalHomeView = ({
|
|
|
1486
1483
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1487
1484
|
},
|
|
1488
1485
|
/* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: isBalanceHidden ? ViewIcon : ViewOffSlashIcon, size: 14 })
|
|
1489
|
-
)), /* @__PURE__ */ React16.createElement("h1", { className: `text-3xl sm:text-4xl md:text-5xl text-black tracking-tight mb-5 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ React16.createElement("span", { className: "text-2xl text-neutral-400 mr-1" }, balanceCurrency), intPart, /* @__PURE__ */ React16.createElement("span", { className: "text-xl sm:text-2xl text-neutral-400" }, ".", decPart)), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-3" }, primaryAction && /* @__PURE__ */ React16.createElement(
|
|
1486
|
+
)), /* @__PURE__ */ React16.createElement("h1", { className: `text-3xl sm:text-4xl md:text-5xl text-black tracking-tight mb-5 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ React16.createElement("span", { className: "text-2xl text-neutral-400 mr-1" }, balanceCurrency), intPart, decPart && /* @__PURE__ */ React16.createElement("span", { className: "text-xl sm:text-2xl text-neutral-400" }, ".", decPart)), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-3" }, primaryAction && /* @__PURE__ */ React16.createElement(
|
|
1490
1487
|
ThreeDActionButton,
|
|
1491
1488
|
{
|
|
1492
1489
|
onClick: primaryAction.onClick,
|
|
@@ -1501,7 +1498,7 @@ var UniversalHomeView = ({
|
|
|
1501
1498
|
},
|
|
1502
1499
|
/* @__PURE__ */ React16.createElement("span", { className: "text-[13px] tracking-wide " }, secondaryAction.label),
|
|
1503
1500
|
secondaryAction.icon && /* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: secondaryAction.icon, size: 16 })
|
|
1504
|
-
)))), /* @__PURE__ */ React16.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ React16.createElement(
|
|
1501
|
+
)))), customContent && /* @__PURE__ */ React16.createElement("div", { className: "w-full" }, customContent), /* @__PURE__ */ React16.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ React16.createElement(
|
|
1505
1502
|
UniversalTransactionPage,
|
|
1506
1503
|
{
|
|
1507
1504
|
...transactionsProps,
|
|
@@ -1542,6 +1539,7 @@ var UniversalWalletPage = ({
|
|
|
1542
1539
|
hideControls = false,
|
|
1543
1540
|
hideBalanceAmounts = false,
|
|
1544
1541
|
isGeneratingStatement = false,
|
|
1542
|
+
external = true,
|
|
1545
1543
|
wallets,
|
|
1546
1544
|
isLoading = false,
|
|
1547
1545
|
renderQrCode,
|
|
@@ -1672,7 +1670,7 @@ var UniversalWalletPage = ({
|
|
|
1672
1670
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
1673
1671
|
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-[13px] text-black placeholder-neutral-400 outline-none transition-colors focus:border-black"
|
|
1674
1672
|
}
|
|
1675
|
-
)), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React17.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: PlusSignIcon, size: 16 })), /* @__PURE__ */ React17.createElement("button", { onClick: startWalletImport, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: Upload01Icon, size: 16 })))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ React17.createElement("div", null, /* @__PURE__ */ React17.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ React17.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), /* @__PURE__ */ React17.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React17.createElement(PageSpinner3, null) : /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React17.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ React17.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ React17.createElement("div", { key: wallet.id, onClick: () => setSelectedWallet(wallet), className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React17.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ React17.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), wallet.networkLogoSrc && /* @__PURE__ */ React17.createElement("div", { className: "absolute -bottom-1 -right-1 w-4 h-4 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ React17.createElement("img", { src: wallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ React17.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement("p", { className: "text-[13px] text-black truncate" }, wallet.name)), /* @__PURE__ */ React17.createElement("p", { className: `text-[13px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, wallet.
|
|
1673
|
+
)), !external && /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React17.createElement("button", { onClick: startWalletGeneration, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: PlusSignIcon, size: 16 })), /* @__PURE__ */ React17.createElement("button", { onClick: startWalletImport, className: "flex items-center justify-center bg-white w-9 h-9 rounded-full text-neutral-500 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: Upload01Icon, size: 16 })))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ React17.createElement("div", null, /* @__PURE__ */ React17.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ React17.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), /* @__PURE__ */ React17.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React17.createElement(PageSpinner3, null) : /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React17.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ React17.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ React17.createElement("div", { key: wallet.id, onClick: () => setSelectedWallet(wallet), className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React17.createElement("div", { className: "relative shrink-0" }, /* @__PURE__ */ React17.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), wallet.networkLogoSrc && /* @__PURE__ */ React17.createElement("div", { className: "absolute -bottom-1 -right-1 w-4 h-4 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ React17.createElement("img", { src: wallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ React17.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React17.createElement("p", { className: "text-[13px] text-black truncate" }, wallet.name), !external && wallet.isActive !== void 0 && /* @__PURE__ */ React17.createElement("span", { className: `text-[9px] px-1.5 py-0.5 rounded-sm tracking-widest uppercase ${wallet.isActive ? "bg-emerald-50 text-emerald-600" : "bg-red-50 text-red-600"}` }, wallet.isActive ? "Active" : "Inactive")), /* @__PURE__ */ React17.createElement("p", { className: `text-[13px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-sm opacity-40 select-none" : ""}` }, external ? wallet.currency : `${wallet.balance} ${wallet.currency}`))), /* @__PURE__ */ React17.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] tracking-wide text-neutral-600 bg-neutral-100 px-2.5 py-1 rounded-full " }, wallet.network)))))))), addModalOpen && /* @__PURE__ */ React17.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React17.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isProcessing && setAddModalOpen(false) }), /* @__PURE__ */ React17.createElement("div", { className: "relative w-full max-w-md bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React17.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, flowStep === 1 ? "Important Notice" : flowStep === 2 ? "Secret Recovery Phrase" : flowStep === 3 ? "Verify Phrase" : "Secure Wallet"), /* @__PURE__ */ React17.createElement("button", { onClick: () => !isProcessing && setAddModalOpen(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React17.createElement("div", { className: "p-6" }, flowStep === 1 && /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in" }, /* @__PURE__ */ React17.createElement(Banner, { type: "alert", title: "Critical Warning", message: "You are about to generate a Self-Custodial Recovery Phrase. This phrase is the absolute master key to your wallet and all assets within it. Aeona DOES NOT store this phrase. If you lose it, your funds are permanently lost. Do not share this phrase with anyone.", isDismissible: false }), /* @__PURE__ */ React17.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "I Understand, Generate Phrase")), flowStep === 2 && /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React17.createElement("p", { className: "text-sm text-neutral-600" }, "Please write down these words in the exact order shown. Store them in a secure, offline location."), /* @__PURE__ */ React17.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-48 overflow-y-auto custom-scrollbar pr-1" }, generatedPhrase.split(" ").map((word, idx) => /* @__PURE__ */ React17.createElement("div", { key: idx, className: "flex items-center gap-1.5 bg-neutral-50 rounded-lg p-2 selection:bg-neutral-200" }, /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] text-neutral-400 select-none w-4 text-right shrink-0" }, idx + 1, "."), /* @__PURE__ */ React17.createElement("span", { className: "text-[13px] text-black " }, word)))), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between gap-2 0 pt-4" }, /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleCopy(generatedPhrase, false), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: Copy01Icon2, size: 14 }), " Copy Phrase"), /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: handleDownloadTxt, className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: Download01Icon, size: 14 }), " Download .txt")), /* @__PURE__ */ React17.createElement("div", { className: "flex items-start gap-3 p-3 rounded-xl border border-neutral-200 mt-2" }, /* @__PURE__ */ React17.createElement("input", { type: "checkbox", id: "backup-confirm", checked: hasBackedUp, onChange: (e) => setHasBackedUp(e.target.checked), className: "mt-0.5 w-4 h-4 bg-white border-neutral-300 rounded text-black focus:ring-black cursor-pointer shrink-0" }), /* @__PURE__ */ React17.createElement("label", { htmlFor: "backup-confirm", className: "text-xs text-neutral-600 cursor-pointer leading-relaxed" }, "I have securely copied and stored my recovery phrase. I understand that if I lose it, my funds are gone forever.")), /* @__PURE__ */ React17.createElement(ThreeDActionButton, { onClick: handleCreationNext, className: "w-full mt-2" }, "Continue")), flowStep === 3 && /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React17.createElement("p", { className: "text-sm text-neutral-600" }, "Please enter or paste your recovery phrase below to verify your backup."), /* @__PURE__ */ React17.createElement("div", { className: "grid grid-cols-3 gap-2 max-h-56 overflow-y-auto custom-scrollbar pr-1 pb-1" }, verifyWords.map((word, idx) => /* @__PURE__ */ React17.createElement("div", { key: idx, className: "flex items-center gap-1 bg-white border border-neutral-200 focus-within:border-black rounded-lg p-1.5 transition-colors" }, /* @__PURE__ */ React17.createElement("span", { className: "text-[10px] text-neutral-400 w-4 shrink-0 text-right select-none" }, idx + 1, "."), /* @__PURE__ */ React17.createElement(
|
|
1676
1674
|
"input",
|
|
1677
1675
|
{
|
|
1678
1676
|
type: "text",
|
|
@@ -1723,7 +1721,15 @@ var UniversalWalletPage = ({
|
|
|
1723
1721
|
},
|
|
1724
1722
|
className: "w-full bg-transparent text-[13px] text-black outline-none min-w-0"
|
|
1725
1723
|
}
|
|
1726
|
-
)))), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleGridPaste(setImportWords, importWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ React17.createElement(ThreeDActionButton, { onClick: handleImportNext, className: "w-full mt-2" }, "Continue")), flowStep === 2 && /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React17.createElement("p", { className: "text-sm text-neutral-600" }, "Set a local password to encrypt this wallet on this specific browser."), /* @__PURE__ */ React17.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ React17.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("imported"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Import Wallet"))))), selectedWallet && /* @__PURE__ */ React17.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React17.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ React17.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React17.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ React17.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React17.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-6" }, /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React17.createElement("div", { className: "relative mb-4" }, /* @__PURE__ */ React17.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14" }), selectedWallet.networkLogoSrc && /* @__PURE__ */ React17.createElement("div", { className: "absolute -bottom-1 -right-1 w-5 h-5 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ React17.createElement("img", { src: selectedWallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ React17.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.
|
|
1724
|
+
)))), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between pt-4" }, /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleGridPaste(setImportWords, importWords), className: "text-xs text-black flex items-center gap-1.5 hover:underline outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: ClipboardIcon, size: 14 }), " Paste Phrase")), /* @__PURE__ */ React17.createElement(ThreeDActionButton, { onClick: handleImportNext, className: "w-full mt-2" }, "Continue")), flowStep === 2 && /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-6 animate-in fade-in slide-in-from-right-4" }, /* @__PURE__ */ React17.createElement("p", { className: "text-sm text-neutral-600" }, "Set a local password to encrypt this wallet on this specific browser."), /* @__PURE__ */ React17.createElement(TextInput, { label: "Local Password", type: "password", value: walletPassword, onChange: setWalletPassword, placeholder: "Enter a strong password" }), /* @__PURE__ */ React17.createElement(ThreeDActionButton, { onClick: () => handleSaveWallet("imported"), isLoading: isProcessing, className: "w-full mt-2" }, "Encrypt & Import Wallet"))))), selectedWallet && /* @__PURE__ */ React17.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React17.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ React17.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ React17.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React17.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ React17.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: CancelCircleIcon3, size: 18 }))), /* @__PURE__ */ React17.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-6" }, /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React17.createElement("div", { className: "relative mb-4" }, /* @__PURE__ */ React17.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14" }), selectedWallet.networkLogoSrc && /* @__PURE__ */ React17.createElement("div", { className: "absolute -bottom-1 -right-1 w-5 h-5 rounded-full border border-white bg-white overflow-hidden shadow-sm" }, /* @__PURE__ */ React17.createElement("img", { src: selectedWallet.networkLogoSrc, alt: "Network", className: "w-full h-full object-cover" }))), /* @__PURE__ */ React17.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts && !external ? "blur-[6px] opacity-40 select-none" : ""}` }, external ? selectedWallet.currency : `${selectedWallet.balance} ${selectedWallet.currency}`), /* @__PURE__ */ React17.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full border border-neutral-200 mt-1 " }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ React17.createElement("div", { className: "w-full flex justify-center mb-6 mix-blend-multiply" }, renderQrCode(selectedWallet)), external && /* @__PURE__ */ React17.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React17.createElement(
|
|
1725
|
+
Banner,
|
|
1726
|
+
{
|
|
1727
|
+
type: "warning",
|
|
1728
|
+
title: "Important Network Notice",
|
|
1729
|
+
message: "Ensure you only send assets using the exact network specified for each wallet. Sending funds through an unsupported network will result in permanent loss of funds. Incoming assets to these addresses are converted instantly.",
|
|
1730
|
+
isDismissible: false
|
|
1731
|
+
}
|
|
1732
|
+
)), /* @__PURE__ */ React17.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ React17.createElement("div", null, /* @__PURE__ */ React17.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ React17.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React17.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateAddress2(selectedWallet.address)), /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleCopy(selectedWallet.address, true), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React17.createElement(HugeiconsIcon11, { icon: Copy01Icon2, size: 14 })))), !external && /* @__PURE__ */ React17.createElement("div", null, /* @__PURE__ */ React17.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Status"), selectedWallet.isActive ? /* @__PURE__ */ React17.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-emerald-50 text-emerald-600 " }, "Active on this device") : /* @__PURE__ */ React17.createElement("span", { className: "text-[13px] px-1.5 py-0.5 bg-red-50 text-red-600 " }, "Inactive - Requires Import"))), /* @__PURE__ */ React17.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React17.createElement(ThreeDActionButton, { onClick: () => onDownloadPayId && onDownloadPayId(selectedWallet), isLoading: isGeneratingStatement, className: "w-full" }, "Generate Statement"), /* @__PURE__ */ React17.createElement("button", { type: "button", onClick: () => handleCopy(selectedWallet.address, true), className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 outline-none text-xs tracking-wide transition-colors" }, "Copy Wallet Address")))))));
|
|
1727
1733
|
};
|
|
1728
1734
|
|
|
1729
1735
|
// src/components/UniversalCardPage.tsx
|
|
@@ -1733,7 +1739,7 @@ import {
|
|
|
1733
1739
|
SnowIcon,
|
|
1734
1740
|
Delete02Icon,
|
|
1735
1741
|
ArrowRight01Icon as ArrowRight01Icon2,
|
|
1736
|
-
|
|
1742
|
+
SlidersHorizontalIcon,
|
|
1737
1743
|
ViewOffSlashIcon as ViewOffSlashIcon2,
|
|
1738
1744
|
Loading03Icon as Loading03Icon8
|
|
1739
1745
|
} from "@hugeicons/core-free-icons";
|
|
@@ -2012,7 +2018,7 @@ var UniversalCardPage = ({
|
|
|
2012
2018
|
onClick: () => {
|
|
2013
2019
|
if (canFlip) setIsFlipped(!isFlipped);
|
|
2014
2020
|
},
|
|
2015
|
-
className: `relative
|
|
2021
|
+
className: `relative w-full max-w-85 transition-transform duration-700 ${!isBgLoaded ? "cursor-wait" : canFlip ? "cursor-pointer" : "cursor-default"}`,
|
|
2016
2022
|
style: {
|
|
2017
2023
|
height: 185,
|
|
2018
2024
|
transformStyle: "preserve-3d",
|
|
@@ -2055,7 +2061,7 @@ var UniversalCardPage = ({
|
|
|
2055
2061
|
/* @__PURE__ */ React21.createElement(
|
|
2056
2062
|
"div",
|
|
2057
2063
|
{
|
|
2058
|
-
className: `absolute inset-0 w-full h-full rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
2064
|
+
className: `absolute inset-0 w-full h-full shadow-2xl rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
2059
2065
|
style: { backfaceVisibility: "hidden" }
|
|
2060
2066
|
},
|
|
2061
2067
|
/* @__PURE__ */ React21.createElement(
|
|
@@ -2077,7 +2083,7 @@ var UniversalCardPage = ({
|
|
|
2077
2083
|
/* @__PURE__ */ React21.createElement(
|
|
2078
2084
|
"div",
|
|
2079
2085
|
{
|
|
2080
|
-
className: `absolute inset-0 w-full h-full rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
2086
|
+
className: `absolute inset-0 w-full h-full shadow-2xl rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
2081
2087
|
style: {
|
|
2082
2088
|
backfaceVisibility: "hidden",
|
|
2083
2089
|
transform: "rotateY(180deg)"
|
|
@@ -2127,7 +2133,7 @@ var UniversalCardPage = ({
|
|
|
2127
2133
|
), /* @__PURE__ */ React21.createElement(
|
|
2128
2134
|
MenuRow,
|
|
2129
2135
|
{
|
|
2130
|
-
icon:
|
|
2136
|
+
icon: SlidersHorizontalIcon,
|
|
2131
2137
|
title: "Set Limits",
|
|
2132
2138
|
subtitle: "Set card limits",
|
|
2133
2139
|
onClick: () => {
|
|
@@ -2302,15 +2308,15 @@ var UniversalProfilePage = ({
|
|
|
2302
2308
|
MenuRow2,
|
|
2303
2309
|
{
|
|
2304
2310
|
icon: FileDownloadIcon,
|
|
2305
|
-
title: "
|
|
2306
|
-
subtitle: "
|
|
2311
|
+
title: "Account Statements",
|
|
2312
|
+
subtitle: "Download account statements",
|
|
2307
2313
|
onClick: onExportTap
|
|
2308
2314
|
}
|
|
2309
2315
|
), /* @__PURE__ */ React22.createElement(
|
|
2310
2316
|
MenuRow2,
|
|
2311
2317
|
{
|
|
2312
2318
|
icon: LogoutCircle02Icon,
|
|
2313
|
-
title: "
|
|
2319
|
+
title: "Log Out",
|
|
2314
2320
|
subtitle: "End your session",
|
|
2315
2321
|
onClick: () => setShowLogoutDialog(true),
|
|
2316
2322
|
isLast: true
|
|
@@ -2328,7 +2334,7 @@ var UniversalProfilePage = ({
|
|
|
2328
2334
|
ConfirmationDialog,
|
|
2329
2335
|
{
|
|
2330
2336
|
isOpen: showLogoutDialog,
|
|
2331
|
-
title: "Secure
|
|
2337
|
+
title: "Secure Log Out",
|
|
2332
2338
|
message: "Are you sure you want to log out? You will need to authenticate to return.",
|
|
2333
2339
|
confirmText: "Log Out",
|
|
2334
2340
|
isDestructive: true,
|
|
@@ -3478,7 +3484,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3478
3484
|
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
3479
3485
|
}
|
|
3480
3486
|
}
|
|
3481
|
-
)), /* @__PURE__ */ React35.createElement("div", { className: "w-full md:w-1/2 flex
|
|
3487
|
+
)), /* @__PURE__ */ React35.createElement("div", { className: "w-full md:w-1/2 flex flex-col items-center justify-center p-4 md:p-12 relative z-20" }, /* @__PURE__ */ React35.createElement("div", { className: "relative w-full max-w-lg p-8 md:p-12 text-center md:text-left transition-all duration-700 ease-out" }, /* @__PURE__ */ React35.createElement(
|
|
3482
3488
|
"div",
|
|
3483
3489
|
{
|
|
3484
3490
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|