@retinalabsllc/zairusjs 14.0.35 → 14.0.50
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 +5 -12
- package/dist/index.d.ts +5 -12
- package/dist/index.js +80 -84
- package/dist/index.mjs +85 -89
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -123,19 +123,12 @@ interface MobileNavProps {
|
|
|
123
123
|
declare const MobileNav: React.FC<MobileNavProps>;
|
|
124
124
|
|
|
125
125
|
interface BannerProps {
|
|
126
|
-
/** The heading text of the banner */
|
|
127
126
|
title: string;
|
|
128
|
-
/** The main message content */
|
|
129
127
|
message: string;
|
|
130
|
-
/** The type of banner, determines colors and default icon */
|
|
131
128
|
type: 'success' | 'warning' | 'alert';
|
|
132
|
-
/** Optional custom icon to override the default */
|
|
133
129
|
icon?: any;
|
|
134
|
-
/** Whether the banner can be dismissed by the user */
|
|
135
130
|
isDismissible?: boolean;
|
|
136
|
-
/** Optional callback when the banner is dismissed */
|
|
137
131
|
onDismiss?: () => void;
|
|
138
|
-
/** Optional custom action button */
|
|
139
132
|
action?: React.ReactNode;
|
|
140
133
|
}
|
|
141
134
|
|
|
@@ -216,6 +209,8 @@ interface UniversalTransaction {
|
|
|
216
209
|
direction: 'CREDIT' | 'DEBIT';
|
|
217
210
|
amount: string;
|
|
218
211
|
currency: string;
|
|
212
|
+
name?: string;
|
|
213
|
+
description?: string;
|
|
219
214
|
status: 'PENDING' | 'COMPLETED' | 'FAILED' | 'REVERSED';
|
|
220
215
|
reference: string;
|
|
221
216
|
metadata?: any;
|
|
@@ -319,13 +314,11 @@ interface CardData {
|
|
|
319
314
|
tier: string;
|
|
320
315
|
currency: string;
|
|
321
316
|
cardHolderName: string;
|
|
322
|
-
cardNumber: string;
|
|
323
|
-
expiry: string;
|
|
324
|
-
cvv: string;
|
|
325
317
|
cardBgSrc: string;
|
|
326
|
-
backgroundOverlay?: string;
|
|
327
|
-
companyLogoSrc: string;
|
|
328
318
|
networkLogoSrc: string;
|
|
319
|
+
preOrder?: boolean;
|
|
320
|
+
contentDark?: boolean;
|
|
321
|
+
bannerProps?: BannerProps;
|
|
329
322
|
}
|
|
330
323
|
interface UniversalCardPageProps {
|
|
331
324
|
cards: CardData[];
|
package/dist/index.d.ts
CHANGED
|
@@ -123,19 +123,12 @@ interface MobileNavProps {
|
|
|
123
123
|
declare const MobileNav: React.FC<MobileNavProps>;
|
|
124
124
|
|
|
125
125
|
interface BannerProps {
|
|
126
|
-
/** The heading text of the banner */
|
|
127
126
|
title: string;
|
|
128
|
-
/** The main message content */
|
|
129
127
|
message: string;
|
|
130
|
-
/** The type of banner, determines colors and default icon */
|
|
131
128
|
type: 'success' | 'warning' | 'alert';
|
|
132
|
-
/** Optional custom icon to override the default */
|
|
133
129
|
icon?: any;
|
|
134
|
-
/** Whether the banner can be dismissed by the user */
|
|
135
130
|
isDismissible?: boolean;
|
|
136
|
-
/** Optional callback when the banner is dismissed */
|
|
137
131
|
onDismiss?: () => void;
|
|
138
|
-
/** Optional custom action button */
|
|
139
132
|
action?: React.ReactNode;
|
|
140
133
|
}
|
|
141
134
|
|
|
@@ -216,6 +209,8 @@ interface UniversalTransaction {
|
|
|
216
209
|
direction: 'CREDIT' | 'DEBIT';
|
|
217
210
|
amount: string;
|
|
218
211
|
currency: string;
|
|
212
|
+
name?: string;
|
|
213
|
+
description?: string;
|
|
219
214
|
status: 'PENDING' | 'COMPLETED' | 'FAILED' | 'REVERSED';
|
|
220
215
|
reference: string;
|
|
221
216
|
metadata?: any;
|
|
@@ -319,13 +314,11 @@ interface CardData {
|
|
|
319
314
|
tier: string;
|
|
320
315
|
currency: string;
|
|
321
316
|
cardHolderName: string;
|
|
322
|
-
cardNumber: string;
|
|
323
|
-
expiry: string;
|
|
324
|
-
cvv: string;
|
|
325
317
|
cardBgSrc: string;
|
|
326
|
-
backgroundOverlay?: string;
|
|
327
|
-
companyLogoSrc: string;
|
|
328
318
|
networkLogoSrc: string;
|
|
319
|
+
preOrder?: boolean;
|
|
320
|
+
contentDark?: boolean;
|
|
321
|
+
bannerProps?: BannerProps;
|
|
329
322
|
}
|
|
330
323
|
interface UniversalCardPageProps {
|
|
331
324
|
cards: CardData[];
|
package/dist/index.js
CHANGED
|
@@ -790,33 +790,32 @@ var Banner = ({
|
|
|
790
790
|
};
|
|
791
791
|
const config = {
|
|
792
792
|
success: {
|
|
793
|
-
bg: "bg-
|
|
794
|
-
iconColor: "text-
|
|
795
|
-
titleColor: "text-
|
|
796
|
-
msgColor: "text-
|
|
793
|
+
bg: "bg-[#ceff8a22]",
|
|
794
|
+
iconColor: "text-[#143731]",
|
|
795
|
+
titleColor: "text-[#143731]",
|
|
796
|
+
msgColor: "text-[#143731]",
|
|
797
797
|
defaultIcon: import_core_free_icons2.CheckmarkBadge01Icon,
|
|
798
798
|
closeHover: "hover:bg-neutral-100 text-neutral-500"
|
|
799
799
|
},
|
|
800
800
|
warning: {
|
|
801
|
-
bg: "bg-
|
|
802
|
-
iconColor: "text-
|
|
803
|
-
titleColor: "text-
|
|
804
|
-
msgColor: "text-
|
|
801
|
+
bg: "bg-[#ceff8a22]",
|
|
802
|
+
iconColor: "text-[#143731]",
|
|
803
|
+
titleColor: "text-[#143731]",
|
|
804
|
+
msgColor: "text-[#143731]",
|
|
805
805
|
defaultIcon: import_core_free_icons2.InformationCircleIcon,
|
|
806
806
|
closeHover: "hover:bg-neutral-100 text-neutral-500"
|
|
807
807
|
},
|
|
808
808
|
alert: {
|
|
809
|
-
bg: "bg-
|
|
810
|
-
iconColor: "text-
|
|
811
|
-
titleColor: "text-
|
|
812
|
-
msgColor: "text-
|
|
809
|
+
bg: "bg-[#ff6b6b22]",
|
|
810
|
+
iconColor: "text-[#143731]",
|
|
811
|
+
titleColor: "text-[#143731]",
|
|
812
|
+
msgColor: "text-[#143731]",
|
|
813
813
|
defaultIcon: import_core_free_icons2.Alert02Icon,
|
|
814
814
|
closeHover: "hover:bg-neutral-100 text-neutral-500"
|
|
815
815
|
}
|
|
816
816
|
};
|
|
817
817
|
const currentConfig = config[type];
|
|
818
|
-
|
|
819
|
-
return /* @__PURE__ */ import_react13.default.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, /* @__PURE__ */ import_react13.default.createElement("h4", { className: `text-xs tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ import_react13.default.createElement("p", { className: `text-xs leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ import_react13.default.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ import_react13.default.createElement(
|
|
818
|
+
return /* @__PURE__ */ import_react13.default.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, /* @__PURE__ */ import_react13.default.createElement("h4", { className: `text-[10px] uppercase tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ import_react13.default.createElement("p", { className: `text-xs leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ import_react13.default.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ import_react13.default.createElement(
|
|
820
819
|
"button",
|
|
821
820
|
{
|
|
822
821
|
onClick: handleDismiss,
|
|
@@ -1363,11 +1362,6 @@ var UniversalTransactionPage = ({
|
|
|
1363
1362
|
setLocalSearchQuery("");
|
|
1364
1363
|
}
|
|
1365
1364
|
}, [searchQuery]);
|
|
1366
|
-
const getDisplayName = (tx) => {
|
|
1367
|
-
if (tx.metadata?.merchantName) return tx.metadata.merchantName;
|
|
1368
|
-
if (tx.metadata?.description) return tx.metadata.description;
|
|
1369
|
-
return tx.type === "CARD_TRANSACTION" ? "Card Transaction" : "Wallet Transaction";
|
|
1370
|
-
};
|
|
1371
1365
|
const handleGenerateReceipt = async () => {
|
|
1372
1366
|
if (!onGenerateReceipt || !selectedTransaction) return;
|
|
1373
1367
|
setIsGeneratingReceipt(true);
|
|
@@ -1418,7 +1412,7 @@ var UniversalTransactionPage = ({
|
|
|
1418
1412
|
onClick: () => setSelectedTransaction(tx),
|
|
1419
1413
|
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"
|
|
1420
1414
|
},
|
|
1421
|
-
/* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black` }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: tx.direction === "CREDIT" ? import_core_free_icons7.ArrowDownRight01Icon : import_core_free_icons7.ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ import_react23.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react23.default.createElement("p", { className: "text-[13px] text-black truncate" },
|
|
1415
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black` }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: tx.direction === "CREDIT" ? import_core_free_icons7.ArrowDownRight01Icon : import_core_free_icons7.ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ import_react23.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react23.default.createElement("p", { className: "text-[13px] text-black truncate" }, tx.name), /* @__PURE__ */ import_react23.default.createElement("p", { className: `text-[12px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, tx.amount))),
|
|
1422
1416
|
/* @__PURE__ */ import_react23.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] text-neutral-400" }, formatDate2(tx.createdAt)), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] text-neutral-400 capitalize" }, tx.direction.toLowerCase()))
|
|
1423
1417
|
))), !hidePagination && /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
1424
1418
|
"button",
|
|
@@ -1443,7 +1437,7 @@ var UniversalTransactionPage = ({
|
|
|
1443
1437
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1444
1438
|
},
|
|
1445
1439
|
/* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.Copy01Icon, size: 14 })
|
|
1446
|
-
))), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black" }, formatDate2(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transfer Route"), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-2 text-[13px] text-black" }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-neutral-400" }, "\u2192"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
|
|
1440
|
+
))), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Description"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black" }, selectedTransaction.description)), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black" }, formatDate2(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transfer Route"), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-2 text-[13px] text-black" }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-neutral-400" }, "\u2192"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
|
|
1447
1441
|
if (key === "fromAddress" || key === "toAddress") return null;
|
|
1448
1442
|
if (value === null || value === void 0 || typeof value === "object") return null;
|
|
1449
1443
|
const formattedKey = key.includes(" ") ? key : key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase());
|
|
@@ -1524,7 +1518,23 @@ var renderKMT = (val, currencySymbol) => {
|
|
|
1524
1518
|
suffix = "k";
|
|
1525
1519
|
}
|
|
1526
1520
|
const displayStr = parseFloat(formatted.toFixed(2)).toString();
|
|
1527
|
-
return /* @__PURE__ */ import_react25.default.createElement("span", { className: "flex items-baseline mt-1" }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[13px] text-neutral-
|
|
1521
|
+
return /* @__PURE__ */ import_react25.default.createElement("span", { className: "flex items-baseline mt-1" }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[13px] text-neutral-800 mr-0.5 " }, currencySymbol), /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-xl text-neutral-800 tracking-tight " }, displayStr), /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[14px] text-neutral-600 ml-0.5 " }, suffix));
|
|
1522
|
+
};
|
|
1523
|
+
var renderKMT2 = (val, currencySymbol) => {
|
|
1524
|
+
let formatted = val;
|
|
1525
|
+
let suffix = "";
|
|
1526
|
+
if (val >= 1e12) {
|
|
1527
|
+
formatted = val / 1e12;
|
|
1528
|
+
suffix = "T";
|
|
1529
|
+
} else if (val >= 1e6) {
|
|
1530
|
+
formatted = val / 1e6;
|
|
1531
|
+
suffix = "M";
|
|
1532
|
+
} else if (val >= 1e3) {
|
|
1533
|
+
formatted = val / 1e3;
|
|
1534
|
+
suffix = "k";
|
|
1535
|
+
}
|
|
1536
|
+
const displayStr = parseFloat(formatted.toFixed(2)).toString();
|
|
1537
|
+
return /* @__PURE__ */ import_react25.default.createElement("span", { className: "flex items-baseline mt-1" }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[13px] text-white mr-0.5 " }, currencySymbol), /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-xl text-white tracking-tight " }, displayStr), /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[14px] text-white/50 ml-0.5 " }, suffix));
|
|
1528
1538
|
};
|
|
1529
1539
|
var UniversalHomeView = ({
|
|
1530
1540
|
fullName = "",
|
|
@@ -1624,17 +1634,17 @@ var UniversalHomeView = ({
|
|
|
1624
1634
|
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"
|
|
1625
1635
|
},
|
|
1626
1636
|
"Rewards"
|
|
1627
|
-
)))), /* @__PURE__ */ import_react25.default.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "bg-[
|
|
1637
|
+
)))), /* @__PURE__ */ import_react25.default.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "bg-[#143731] rounded-2xl p-5 relative overflow-hidden flex flex-col h-45 sm:h-50" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react25.default.createElement("p", { className: "text-[15px] sm:text-[15px] text-white mb-1" }, "Cashback"), renderKMT2(cashbackValue, balanceCurrency)), /* @__PURE__ */ import_react25.default.createElement(
|
|
1628
1638
|
"img",
|
|
1629
1639
|
{
|
|
1630
|
-
src: "https://retinalabs.company/assets/images/
|
|
1640
|
+
src: "https://retinalabs.company/assets/images/save_box.avif",
|
|
1631
1641
|
alt: "Cashback",
|
|
1632
1642
|
className: "absolute bottom-6 right-4 translate-x-1/4 translate-y-1/2 w-40 h-auto object-contain z-0 pointer-events-none drop-shadow-md"
|
|
1633
1643
|
}
|
|
1634
|
-
)), /* @__PURE__ */ import_react25.default.createElement("div", { className: "bg-[
|
|
1644
|
+
)), /* @__PURE__ */ import_react25.default.createElement("div", { className: "bg-[#ceff8a] rounded-2xl p-5 relative overflow-hidden flex flex-col h-45 sm:h-50" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react25.default.createElement("p", { className: "text-[15px] sm:text-[15px] text-black mb-1" }, "Rewards"), renderKMT(rewardsValue, balanceCurrency)), /* @__PURE__ */ import_react25.default.createElement(
|
|
1635
1645
|
"img",
|
|
1636
1646
|
{
|
|
1637
|
-
src: "https://retinalabs.company/assets/images/
|
|
1647
|
+
src: "https://retinalabs.company/assets/images/gift_box.avif",
|
|
1638
1648
|
alt: "Rewards",
|
|
1639
1649
|
className: "absolute bottom-6 right-4 translate-x-1/4 translate-y-1/2 w-40 h-auto object-contain z-0 pointer-events-none drop-shadow-md"
|
|
1640
1650
|
}
|
|
@@ -2025,13 +2035,18 @@ var UniversalCardPage = ({
|
|
|
2025
2035
|
onDelete
|
|
2026
2036
|
}) => {
|
|
2027
2037
|
const router = (0, import_navigation4.useRouter)();
|
|
2038
|
+
const sortedCards = import_react33.default.useMemo(() => {
|
|
2039
|
+
return [...cards].sort((a, b) => {
|
|
2040
|
+
if (a.type === "VIRTUAL" && b.type !== "VIRTUAL") return -1;
|
|
2041
|
+
if (b.type === "VIRTUAL" && a.type !== "VIRTUAL") return 1;
|
|
2042
|
+
return 0;
|
|
2043
|
+
});
|
|
2044
|
+
}, [cards]);
|
|
2028
2045
|
const [activeTabIndex, setActiveTabIndex] = (0, import_react33.useState)(0);
|
|
2029
|
-
const activeCard =
|
|
2046
|
+
const activeCard = sortedCards[activeTabIndex];
|
|
2030
2047
|
(0, import_react33.useEffect)(() => {
|
|
2031
|
-
setIsFlipped(false);
|
|
2032
2048
|
setIsRevealed(false);
|
|
2033
2049
|
}, [activeTabIndex]);
|
|
2034
|
-
const [isFlipped, setIsFlipped] = (0, import_react33.useState)(false);
|
|
2035
2050
|
const [isBgLoaded, setIsBgLoaded] = (0, import_react33.useState)(false);
|
|
2036
2051
|
const [isRevealed, setIsRevealed] = (0, import_react33.useState)(false);
|
|
2037
2052
|
const [isRevealing, setIsRevealing] = (0, import_react33.useState)(false);
|
|
@@ -2054,10 +2069,13 @@ var UniversalCardPage = ({
|
|
|
2054
2069
|
const isFrozen = activeCard.status === "FROZEN";
|
|
2055
2070
|
const isUnactivated = activeCard.status === "UNACTIVATED";
|
|
2056
2071
|
const isDead = ["BLOCKED", "EXPIRED", "DELETED"].includes(activeCard.status);
|
|
2057
|
-
const
|
|
2072
|
+
const isPreordered = activeCard.preOrder === true;
|
|
2058
2073
|
const actionsDisabled = !isActivated && !isFrozen;
|
|
2059
2074
|
const revealDisabled = !isActivated;
|
|
2060
2075
|
const freezeDisabled = isUnactivated || isDead;
|
|
2076
|
+
const showActionOverlay = !isActivated && isBgLoaded && !isPreordered || isFrozen;
|
|
2077
|
+
const overlayClasses = activeCard.contentDark ? "bg-white/20 backdrop-blur-[3px]" : "bg-black/10 backdrop-blur-[2px]";
|
|
2078
|
+
const buttonClasses = activeCard.contentDark ? "bg-black/10 text-black hover:bg-black/20 font-medium" : "bg-white/25 text-white hover:bg-white/35";
|
|
2061
2079
|
const handleToggleReveal = () => {
|
|
2062
2080
|
if (revealDisabled || isRevealing) return;
|
|
2063
2081
|
if (isRevealed) {
|
|
@@ -2108,42 +2126,32 @@ var UniversalCardPage = ({
|
|
|
2108
2126
|
const capitalized = type.charAt(0).toUpperCase() + type.slice(1).toLowerCase();
|
|
2109
2127
|
return `${capitalized} Card`;
|
|
2110
2128
|
};
|
|
2111
|
-
|
|
2112
|
-
const displayExpiry = isRevealed ? activeCard.expiry : "XX/XX";
|
|
2113
|
-
const displayCvv = isRevealed ? activeCard.cvv : "XXX";
|
|
2114
|
-
return /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, cards.length > 1 && /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar " }, cards.map((tab, idx) => {
|
|
2129
|
+
return /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, sortedCards.length > 1 && /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => {
|
|
2115
2130
|
const isActive = activeTabIndex === idx;
|
|
2116
2131
|
return /* @__PURE__ */ import_react33.default.createElement(
|
|
2117
2132
|
"button",
|
|
2118
2133
|
{
|
|
2119
2134
|
key: tab.id,
|
|
2120
2135
|
onClick: () => setActiveTabIndex(idx),
|
|
2121
|
-
className: `px-4
|
|
2136
|
+
className: `px-4 py-1.5 rounded-full text-[11px] transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-100 text-black" : "text-neutral-500 hover:text-black hover:bg-neutral-50/50"}`
|
|
2122
2137
|
},
|
|
2123
2138
|
formatTabLabel(tab.type)
|
|
2124
2139
|
);
|
|
2125
|
-
}))), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center"
|
|
2140
|
+
}))), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
2126
2141
|
"div",
|
|
2127
2142
|
{
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
},
|
|
2131
|
-
className: `relative w-full max-w-85 transition-transform duration-700 ${!isBgLoaded ? "cursor-wait" : canFlip ? "cursor-pointer" : "cursor-default"}`,
|
|
2132
|
-
style: {
|
|
2133
|
-
height: 180,
|
|
2134
|
-
transformStyle: "preserve-3d",
|
|
2135
|
-
transform: isFlipped ? "rotateY(180deg)" : "rotateY(0deg)"
|
|
2136
|
-
}
|
|
2143
|
+
className: "relative w-full max-w-85",
|
|
2144
|
+
style: { height: 180 }
|
|
2137
2145
|
},
|
|
2138
|
-
!isBgLoaded && /* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50
|
|
2139
|
-
|
|
2146
|
+
!isBgLoaded && /* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50" }, /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 28, className: "animate-spin text-black" })),
|
|
2147
|
+
showActionOverlay && /* @__PURE__ */ import_react33.default.createElement("div", { className: `absolute inset-0 z-40 w-full h-full rounded-2xl flex flex-col items-center justify-center transition-all ${overlayClasses}` }, isUnactivated && /* @__PURE__ */ import_react33.default.createElement(
|
|
2140
2148
|
"button",
|
|
2141
2149
|
{
|
|
2142
2150
|
onClick: (e) => {
|
|
2143
2151
|
e.stopPropagation();
|
|
2144
2152
|
router.push(`${actionPath}${activeCard.id}`);
|
|
2145
2153
|
},
|
|
2146
|
-
className:
|
|
2154
|
+
className: `px-6 py-2 text-[11px] rounded-full transition-all outline-none active:scale-95 ${buttonClasses}`
|
|
2147
2155
|
},
|
|
2148
2156
|
"Activate Card"
|
|
2149
2157
|
), isDead && /* @__PURE__ */ import_react33.default.createElement(
|
|
@@ -2153,7 +2161,7 @@ var UniversalCardPage = ({
|
|
|
2153
2161
|
e.stopPropagation();
|
|
2154
2162
|
router.push(`${actionPath}${activeCard.id}`);
|
|
2155
2163
|
},
|
|
2156
|
-
className:
|
|
2164
|
+
className: `px-6 py-2 text-[11px] rounded-full transition-all outline-none active:scale-95 ${buttonClasses}`
|
|
2157
2165
|
},
|
|
2158
2166
|
"Create Card"
|
|
2159
2167
|
), isFrozen && /* @__PURE__ */ import_react33.default.createElement(
|
|
@@ -2164,50 +2172,38 @@ var UniversalCardPage = ({
|
|
|
2164
2172
|
handleOverlayUnfreeze();
|
|
2165
2173
|
},
|
|
2166
2174
|
disabled: isOverlayActionLoading,
|
|
2167
|
-
className:
|
|
2175
|
+
className: `px-6 py-2.5 text-[12px] rounded-full transition-all outline-none active:scale-95 flex items-center gap-2 disabled:opacity-80 ${buttonClasses}`
|
|
2168
2176
|
},
|
|
2169
|
-
isOverlayActionLoading ? /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 16, className:
|
|
2177
|
+
isOverlayActionLoading ? /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 16, className: `animate-spin ${activeCard.contentDark ? "text-black" : "text-white"}` }) : "Unfreeze Card"
|
|
2170
2178
|
)),
|
|
2171
|
-
/* @__PURE__ */ import_react33.default.createElement(
|
|
2179
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { 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"}` }, /* @__PURE__ */ import_react33.default.createElement(
|
|
2172
2180
|
"div",
|
|
2173
2181
|
{
|
|
2174
|
-
className:
|
|
2175
|
-
style: {
|
|
2176
|
-
}
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
{
|
|
2180
|
-
className: "absolute inset-0 bg-cover bg-center",
|
|
2181
|
-
style: { backgroundImage: `url(${activeCard.cardBgSrc}), linear-gradient(to bottom right, #111, #333)` }
|
|
2182
|
-
}
|
|
2183
|
-
),
|
|
2184
|
-
/* @__PURE__ */ import_react33.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-start w-full gap-4" }, activeCard.companyLogoSrc && /* @__PURE__ */ import_react33.default.createElement("img", { src: activeCard.companyLogoSrc, alt: "Company Logo", className: "h-10 w-auto max-w-30 object-contain opacity-90" })), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "Card Number"), /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[12px] text-white tracking-widest font-light" }, displayCardNumber)), activeCard.networkLogoSrc && /* @__PURE__ */ import_react33.default.createElement("img", { src: activeCard.networkLogoSrc, alt: "Network Logo", className: "h-10 w-auto max-w-20 object-contain opacity-90" })))
|
|
2185
|
-
),
|
|
2186
|
-
/* @__PURE__ */ import_react33.default.createElement(
|
|
2187
|
-
"div",
|
|
2182
|
+
className: "absolute inset-0 bg-cover bg-center",
|
|
2183
|
+
style: { backgroundImage: `url(${activeCard.cardBgSrc})` }
|
|
2184
|
+
}
|
|
2185
|
+
), /* @__PURE__ */ import_react33.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-start w-full gap-4" }), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: `text-[9px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/60"}` }, "Card Tier"), /* @__PURE__ */ import_react33.default.createElement("span", { className: `text-[12px] tracking-widest font-medium uppercase ${activeCard.contentDark ? "text-black" : "text-white"}` }, activeCard.tier)), activeCard.networkLogoSrc && /* @__PURE__ */ import_react33.default.createElement(
|
|
2186
|
+
"img",
|
|
2188
2187
|
{
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
/* @__PURE__ */ import_react33.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-end" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full text-center mb-6" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-white text-3xl italic tracking-wide opacity-90", style: { fontFamily: "'Whisper', cursive" } }, activeCard.cardHolderName)), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex justify-between w-full max-w-[80%]" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "Expiry"), /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[12px] text-white font-light" }, displayExpiry)), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "CVV"), /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[12px] text-white font-light" }, displayCvv))))
|
|
2204
|
-
)
|
|
2205
|
-
)), /* @__PURE__ */ import_react33.default.createElement("p", { className: "w-full text-center text-xs text-neutral-400 mb-6 mt-1" }, isActivated ? "Tap to flip card" : "Action Required"), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
2188
|
+
src: activeCard.networkLogoSrc,
|
|
2189
|
+
alt: "Network Logo",
|
|
2190
|
+
className: "h-10 w-auto max-w-20 object-contain opacity-90"
|
|
2191
|
+
}
|
|
2192
|
+
))))
|
|
2193
|
+
)), activeCard.bannerProps ? /* @__PURE__ */ import_react33.default.createElement("div", { className: "mb-6 w-full" }, /* @__PURE__ */ import_react33.default.createElement(Banner, { ...activeCard.bannerProps })) : isPreordered ? /* @__PURE__ */ import_react33.default.createElement("div", { className: "mb-6 w-full" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
2194
|
+
Banner,
|
|
2195
|
+
{
|
|
2196
|
+
type: "success",
|
|
2197
|
+
title: "Order Secured",
|
|
2198
|
+
message: `Your ${activeCard.tier} ${activeCard.type.toLowerCase()} card has been pre-ordered successfully and is pending batch processing.`,
|
|
2199
|
+
isDismissible: false
|
|
2200
|
+
}
|
|
2201
|
+
)) : null, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
2206
2202
|
MenuRow,
|
|
2207
2203
|
{
|
|
2208
2204
|
icon: import_core_free_icons12.ViewOffSlashIcon,
|
|
2209
2205
|
title: "Reveal Information",
|
|
2210
|
-
subtitle: "Show card
|
|
2206
|
+
subtitle: "Show secure card details",
|
|
2211
2207
|
onClick: handleToggleReveal,
|
|
2212
2208
|
isToggle: true,
|
|
2213
2209
|
toggleState: isRevealed,
|
package/dist/index.mjs
CHANGED
|
@@ -719,33 +719,32 @@ var Banner = ({
|
|
|
719
719
|
};
|
|
720
720
|
const config = {
|
|
721
721
|
success: {
|
|
722
|
-
bg: "bg-
|
|
723
|
-
iconColor: "text-
|
|
724
|
-
titleColor: "text-
|
|
725
|
-
msgColor: "text-
|
|
722
|
+
bg: "bg-[#ceff8a22]",
|
|
723
|
+
iconColor: "text-[#143731]",
|
|
724
|
+
titleColor: "text-[#143731]",
|
|
725
|
+
msgColor: "text-[#143731]",
|
|
726
726
|
defaultIcon: CheckmarkBadge01Icon,
|
|
727
727
|
closeHover: "hover:bg-neutral-100 text-neutral-500"
|
|
728
728
|
},
|
|
729
729
|
warning: {
|
|
730
|
-
bg: "bg-
|
|
731
|
-
iconColor: "text-
|
|
732
|
-
titleColor: "text-
|
|
733
|
-
msgColor: "text-
|
|
730
|
+
bg: "bg-[#ceff8a22]",
|
|
731
|
+
iconColor: "text-[#143731]",
|
|
732
|
+
titleColor: "text-[#143731]",
|
|
733
|
+
msgColor: "text-[#143731]",
|
|
734
734
|
defaultIcon: InformationCircleIcon,
|
|
735
735
|
closeHover: "hover:bg-neutral-100 text-neutral-500"
|
|
736
736
|
},
|
|
737
737
|
alert: {
|
|
738
|
-
bg: "bg-
|
|
739
|
-
iconColor: "text-
|
|
740
|
-
titleColor: "text-
|
|
741
|
-
msgColor: "text-
|
|
738
|
+
bg: "bg-[#ff6b6b22]",
|
|
739
|
+
iconColor: "text-[#143731]",
|
|
740
|
+
titleColor: "text-[#143731]",
|
|
741
|
+
msgColor: "text-[#143731]",
|
|
742
742
|
defaultIcon: Alert02Icon,
|
|
743
743
|
closeHover: "hover:bg-neutral-100 text-neutral-500"
|
|
744
744
|
}
|
|
745
745
|
};
|
|
746
746
|
const currentConfig = config[type];
|
|
747
|
-
|
|
748
|
-
return /* @__PURE__ */ React10.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ React10.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, /* @__PURE__ */ React10.createElement("h4", { className: `text-xs tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ React10.createElement("p", { className: `text-xs leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ React10.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ React10.createElement(
|
|
747
|
+
return /* @__PURE__ */ React10.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ React10.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, /* @__PURE__ */ React10.createElement("h4", { className: `text-[10px] uppercase tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ React10.createElement("p", { className: `text-xs leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ React10.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ React10.createElement(
|
|
749
748
|
"button",
|
|
750
749
|
{
|
|
751
750
|
onClick: handleDismiss,
|
|
@@ -1312,11 +1311,6 @@ var UniversalTransactionPage = ({
|
|
|
1312
1311
|
setLocalSearchQuery("");
|
|
1313
1312
|
}
|
|
1314
1313
|
}, [searchQuery]);
|
|
1315
|
-
const getDisplayName = (tx) => {
|
|
1316
|
-
if (tx.metadata?.merchantName) return tx.metadata.merchantName;
|
|
1317
|
-
if (tx.metadata?.description) return tx.metadata.description;
|
|
1318
|
-
return tx.type === "CARD_TRANSACTION" ? "Card Transaction" : "Wallet Transaction";
|
|
1319
|
-
};
|
|
1320
1314
|
const handleGenerateReceipt = async () => {
|
|
1321
1315
|
if (!onGenerateReceipt || !selectedTransaction) return;
|
|
1322
1316
|
setIsGeneratingReceipt(true);
|
|
@@ -1367,7 +1361,7 @@ var UniversalTransactionPage = ({
|
|
|
1367
1361
|
onClick: () => setSelectedTransaction(tx),
|
|
1368
1362
|
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"
|
|
1369
1363
|
},
|
|
1370
|
-
/* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React15.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black` }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: tx.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ React15.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[13px] text-black truncate" },
|
|
1364
|
+
/* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React15.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black` }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: tx.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ React15.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[13px] text-black truncate" }, tx.name), /* @__PURE__ */ React15.createElement("p", { className: `text-[12px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, tx.amount))),
|
|
1371
1365
|
/* @__PURE__ */ React15.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400" }, formatDate2(tx.createdAt)), /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400 capitalize" }, tx.direction.toLowerCase()))
|
|
1372
1366
|
))), !hidePagination && /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(
|
|
1373
1367
|
"button",
|
|
@@ -1392,7 +1386,7 @@ var UniversalTransactionPage = ({
|
|
|
1392
1386
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1393
1387
|
},
|
|
1394
1388
|
/* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: Copy01Icon, size: 14 })
|
|
1395
|
-
))), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black" }, formatDate2(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transfer Route"), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2 text-[13px] text-black" }, /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ React15.createElement("span", { className: "text-neutral-400" }, "\u2192"), /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
|
|
1389
|
+
))), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Description"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black" }, selectedTransaction.description)), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black" }, formatDate2(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transfer Route"), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2 text-[13px] text-black" }, /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ React15.createElement("span", { className: "text-neutral-400" }, "\u2192"), /* @__PURE__ */ React15.createElement("span", { className: "truncate" }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
|
|
1396
1390
|
if (key === "fromAddress" || key === "toAddress") return null;
|
|
1397
1391
|
if (value === null || value === void 0 || typeof value === "object") return null;
|
|
1398
1392
|
const formattedKey = key.includes(" ") ? key : key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase());
|
|
@@ -1481,7 +1475,23 @@ var renderKMT = (val, currencySymbol) => {
|
|
|
1481
1475
|
suffix = "k";
|
|
1482
1476
|
}
|
|
1483
1477
|
const displayStr = parseFloat(formatted.toFixed(2)).toString();
|
|
1484
|
-
return /* @__PURE__ */ React16.createElement("span", { className: "flex items-baseline mt-1" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[13px] text-neutral-
|
|
1478
|
+
return /* @__PURE__ */ React16.createElement("span", { className: "flex items-baseline mt-1" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[13px] text-neutral-800 mr-0.5 " }, currencySymbol), /* @__PURE__ */ React16.createElement("span", { className: "text-xl text-neutral-800 tracking-tight " }, displayStr), /* @__PURE__ */ React16.createElement("span", { className: "text-[14px] text-neutral-600 ml-0.5 " }, suffix));
|
|
1479
|
+
};
|
|
1480
|
+
var renderKMT2 = (val, currencySymbol) => {
|
|
1481
|
+
let formatted = val;
|
|
1482
|
+
let suffix = "";
|
|
1483
|
+
if (val >= 1e12) {
|
|
1484
|
+
formatted = val / 1e12;
|
|
1485
|
+
suffix = "T";
|
|
1486
|
+
} else if (val >= 1e6) {
|
|
1487
|
+
formatted = val / 1e6;
|
|
1488
|
+
suffix = "M";
|
|
1489
|
+
} else if (val >= 1e3) {
|
|
1490
|
+
formatted = val / 1e3;
|
|
1491
|
+
suffix = "k";
|
|
1492
|
+
}
|
|
1493
|
+
const displayStr = parseFloat(formatted.toFixed(2)).toString();
|
|
1494
|
+
return /* @__PURE__ */ React16.createElement("span", { className: "flex items-baseline mt-1" }, /* @__PURE__ */ React16.createElement("span", { className: "text-[13px] text-white mr-0.5 " }, currencySymbol), /* @__PURE__ */ React16.createElement("span", { className: "text-xl text-white tracking-tight " }, displayStr), /* @__PURE__ */ React16.createElement("span", { className: "text-[14px] text-white/50 ml-0.5 " }, suffix));
|
|
1485
1495
|
};
|
|
1486
1496
|
var UniversalHomeView = ({
|
|
1487
1497
|
fullName = "",
|
|
@@ -1581,17 +1591,17 @@ var UniversalHomeView = ({
|
|
|
1581
1591
|
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"
|
|
1582
1592
|
},
|
|
1583
1593
|
"Rewards"
|
|
1584
|
-
)))), /* @__PURE__ */ React16.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React16.createElement("div", { className: "bg-[
|
|
1594
|
+
)))), /* @__PURE__ */ React16.createElement("div", { className: "grid grid-cols-2 gap-2" }, /* @__PURE__ */ React16.createElement("div", { className: "bg-[#143731] rounded-2xl p-5 relative overflow-hidden flex flex-col h-45 sm:h-50" }, /* @__PURE__ */ React16.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-white mb-1" }, "Cashback"), renderKMT2(cashbackValue, balanceCurrency)), /* @__PURE__ */ React16.createElement(
|
|
1585
1595
|
"img",
|
|
1586
1596
|
{
|
|
1587
|
-
src: "https://retinalabs.company/assets/images/
|
|
1597
|
+
src: "https://retinalabs.company/assets/images/save_box.avif",
|
|
1588
1598
|
alt: "Cashback",
|
|
1589
1599
|
className: "absolute bottom-6 right-4 translate-x-1/4 translate-y-1/2 w-40 h-auto object-contain z-0 pointer-events-none drop-shadow-md"
|
|
1590
1600
|
}
|
|
1591
|
-
)), /* @__PURE__ */ React16.createElement("div", { className: "bg-[
|
|
1601
|
+
)), /* @__PURE__ */ React16.createElement("div", { className: "bg-[#ceff8a] rounded-2xl p-5 relative overflow-hidden flex flex-col h-45 sm:h-50" }, /* @__PURE__ */ React16.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React16.createElement("p", { className: "text-[15px] sm:text-[15px] text-black mb-1" }, "Rewards"), renderKMT(rewardsValue, balanceCurrency)), /* @__PURE__ */ React16.createElement(
|
|
1592
1602
|
"img",
|
|
1593
1603
|
{
|
|
1594
|
-
src: "https://retinalabs.company/assets/images/
|
|
1604
|
+
src: "https://retinalabs.company/assets/images/gift_box.avif",
|
|
1595
1605
|
alt: "Rewards",
|
|
1596
1606
|
className: "absolute bottom-6 right-4 translate-x-1/4 translate-y-1/2 w-40 h-auto object-contain z-0 pointer-events-none drop-shadow-md"
|
|
1597
1607
|
}
|
|
@@ -1999,13 +2009,18 @@ var UniversalCardPage = ({
|
|
|
1999
2009
|
onDelete
|
|
2000
2010
|
}) => {
|
|
2001
2011
|
const router = useRouter();
|
|
2012
|
+
const sortedCards = React20.useMemo(() => {
|
|
2013
|
+
return [...cards].sort((a, b) => {
|
|
2014
|
+
if (a.type === "VIRTUAL" && b.type !== "VIRTUAL") return -1;
|
|
2015
|
+
if (b.type === "VIRTUAL" && a.type !== "VIRTUAL") return 1;
|
|
2016
|
+
return 0;
|
|
2017
|
+
});
|
|
2018
|
+
}, [cards]);
|
|
2002
2019
|
const [activeTabIndex, setActiveTabIndex] = useState12(0);
|
|
2003
|
-
const activeCard =
|
|
2020
|
+
const activeCard = sortedCards[activeTabIndex];
|
|
2004
2021
|
useEffect9(() => {
|
|
2005
|
-
setIsFlipped(false);
|
|
2006
2022
|
setIsRevealed(false);
|
|
2007
2023
|
}, [activeTabIndex]);
|
|
2008
|
-
const [isFlipped, setIsFlipped] = useState12(false);
|
|
2009
2024
|
const [isBgLoaded, setIsBgLoaded] = useState12(false);
|
|
2010
2025
|
const [isRevealed, setIsRevealed] = useState12(false);
|
|
2011
2026
|
const [isRevealing, setIsRevealing] = useState12(false);
|
|
@@ -2028,10 +2043,13 @@ var UniversalCardPage = ({
|
|
|
2028
2043
|
const isFrozen = activeCard.status === "FROZEN";
|
|
2029
2044
|
const isUnactivated = activeCard.status === "UNACTIVATED";
|
|
2030
2045
|
const isDead = ["BLOCKED", "EXPIRED", "DELETED"].includes(activeCard.status);
|
|
2031
|
-
const
|
|
2046
|
+
const isPreordered = activeCard.preOrder === true;
|
|
2032
2047
|
const actionsDisabled = !isActivated && !isFrozen;
|
|
2033
2048
|
const revealDisabled = !isActivated;
|
|
2034
2049
|
const freezeDisabled = isUnactivated || isDead;
|
|
2050
|
+
const showActionOverlay = !isActivated && isBgLoaded && !isPreordered || isFrozen;
|
|
2051
|
+
const overlayClasses = activeCard.contentDark ? "bg-white/20 backdrop-blur-[3px]" : "bg-black/10 backdrop-blur-[2px]";
|
|
2052
|
+
const buttonClasses = activeCard.contentDark ? "bg-black/10 text-black hover:bg-black/20 font-medium" : "bg-white/25 text-white hover:bg-white/35";
|
|
2035
2053
|
const handleToggleReveal = () => {
|
|
2036
2054
|
if (revealDisabled || isRevealing) return;
|
|
2037
2055
|
if (isRevealed) {
|
|
@@ -2082,42 +2100,32 @@ var UniversalCardPage = ({
|
|
|
2082
2100
|
const capitalized = type.charAt(0).toUpperCase() + type.slice(1).toLowerCase();
|
|
2083
2101
|
return `${capitalized} Card`;
|
|
2084
2102
|
};
|
|
2085
|
-
|
|
2086
|
-
const displayExpiry = isRevealed ? activeCard.expiry : "XX/XX";
|
|
2087
|
-
const displayCvv = isRevealed ? activeCard.cvv : "XXX";
|
|
2088
|
-
return /* @__PURE__ */ React20.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, cards.length > 1 && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar " }, cards.map((tab, idx) => {
|
|
2103
|
+
return /* @__PURE__ */ React20.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, sortedCards.length > 1 && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, sortedCards.map((tab, idx) => {
|
|
2089
2104
|
const isActive = activeTabIndex === idx;
|
|
2090
2105
|
return /* @__PURE__ */ React20.createElement(
|
|
2091
2106
|
"button",
|
|
2092
2107
|
{
|
|
2093
2108
|
key: tab.id,
|
|
2094
2109
|
onClick: () => setActiveTabIndex(idx),
|
|
2095
|
-
className: `px-4
|
|
2110
|
+
className: `px-4 py-1.5 rounded-full text-[11px] transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-100 text-black" : "text-neutral-500 hover:text-black hover:bg-neutral-50/50"}`
|
|
2096
2111
|
},
|
|
2097
2112
|
formatTabLabel(tab.type)
|
|
2098
2113
|
);
|
|
2099
|
-
}))), /* @__PURE__ */ React20.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center"
|
|
2114
|
+
}))), /* @__PURE__ */ React20.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center" }, /* @__PURE__ */ React20.createElement(
|
|
2100
2115
|
"div",
|
|
2101
2116
|
{
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
},
|
|
2105
|
-
className: `relative w-full max-w-85 transition-transform duration-700 ${!isBgLoaded ? "cursor-wait" : canFlip ? "cursor-pointer" : "cursor-default"}`,
|
|
2106
|
-
style: {
|
|
2107
|
-
height: 180,
|
|
2108
|
-
transformStyle: "preserve-3d",
|
|
2109
|
-
transform: isFlipped ? "rotateY(180deg)" : "rotateY(0deg)"
|
|
2110
|
-
}
|
|
2117
|
+
className: "relative w-full max-w-85",
|
|
2118
|
+
style: { height: 180 }
|
|
2111
2119
|
},
|
|
2112
|
-
!isBgLoaded && /* @__PURE__ */ React20.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50
|
|
2113
|
-
|
|
2120
|
+
!isBgLoaded && /* @__PURE__ */ React20.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50" }, /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: Loading03Icon9, size: 28, className: "animate-spin text-black" })),
|
|
2121
|
+
showActionOverlay && /* @__PURE__ */ React20.createElement("div", { className: `absolute inset-0 z-40 w-full h-full rounded-2xl flex flex-col items-center justify-center transition-all ${overlayClasses}` }, isUnactivated && /* @__PURE__ */ React20.createElement(
|
|
2114
2122
|
"button",
|
|
2115
2123
|
{
|
|
2116
2124
|
onClick: (e) => {
|
|
2117
2125
|
e.stopPropagation();
|
|
2118
2126
|
router.push(`${actionPath}${activeCard.id}`);
|
|
2119
2127
|
},
|
|
2120
|
-
className:
|
|
2128
|
+
className: `px-6 py-2 text-[11px] rounded-full transition-all outline-none active:scale-95 ${buttonClasses}`
|
|
2121
2129
|
},
|
|
2122
2130
|
"Activate Card"
|
|
2123
2131
|
), isDead && /* @__PURE__ */ React20.createElement(
|
|
@@ -2127,7 +2135,7 @@ var UniversalCardPage = ({
|
|
|
2127
2135
|
e.stopPropagation();
|
|
2128
2136
|
router.push(`${actionPath}${activeCard.id}`);
|
|
2129
2137
|
},
|
|
2130
|
-
className:
|
|
2138
|
+
className: `px-6 py-2 text-[11px] rounded-full transition-all outline-none active:scale-95 ${buttonClasses}`
|
|
2131
2139
|
},
|
|
2132
2140
|
"Create Card"
|
|
2133
2141
|
), isFrozen && /* @__PURE__ */ React20.createElement(
|
|
@@ -2138,50 +2146,38 @@ var UniversalCardPage = ({
|
|
|
2138
2146
|
handleOverlayUnfreeze();
|
|
2139
2147
|
},
|
|
2140
2148
|
disabled: isOverlayActionLoading,
|
|
2141
|
-
className:
|
|
2149
|
+
className: `px-6 py-2.5 text-[12px] rounded-full transition-all outline-none active:scale-95 flex items-center gap-2 disabled:opacity-80 ${buttonClasses}`
|
|
2142
2150
|
},
|
|
2143
|
-
isOverlayActionLoading ? /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: Loading03Icon9, size: 16, className:
|
|
2151
|
+
isOverlayActionLoading ? /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: Loading03Icon9, size: 16, className: `animate-spin ${activeCard.contentDark ? "text-black" : "text-white"}` }) : "Unfreeze Card"
|
|
2144
2152
|
)),
|
|
2145
|
-
/* @__PURE__ */ React20.createElement(
|
|
2153
|
+
/* @__PURE__ */ React20.createElement("div", { 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"}` }, /* @__PURE__ */ React20.createElement(
|
|
2146
2154
|
"div",
|
|
2147
2155
|
{
|
|
2148
|
-
className:
|
|
2149
|
-
style: {
|
|
2150
|
-
}
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
{
|
|
2154
|
-
className: "absolute inset-0 bg-cover bg-center",
|
|
2155
|
-
style: { backgroundImage: `url(${activeCard.cardBgSrc}), linear-gradient(to bottom right, #111, #333)` }
|
|
2156
|
-
}
|
|
2157
|
-
),
|
|
2158
|
-
/* @__PURE__ */ React20.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-start w-full gap-4" }, activeCard.companyLogoSrc && /* @__PURE__ */ React20.createElement("img", { src: activeCard.companyLogoSrc, alt: "Company Logo", className: "h-10 w-auto max-w-30 object-contain opacity-90" })), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "Card Number"), /* @__PURE__ */ React20.createElement("span", { className: "text-[12px] text-white tracking-widest font-light" }, displayCardNumber)), activeCard.networkLogoSrc && /* @__PURE__ */ React20.createElement("img", { src: activeCard.networkLogoSrc, alt: "Network Logo", className: "h-10 w-auto max-w-20 object-contain opacity-90" })))
|
|
2159
|
-
),
|
|
2160
|
-
/* @__PURE__ */ React20.createElement(
|
|
2161
|
-
"div",
|
|
2156
|
+
className: "absolute inset-0 bg-cover bg-center",
|
|
2157
|
+
style: { backgroundImage: `url(${activeCard.cardBgSrc})` }
|
|
2158
|
+
}
|
|
2159
|
+
), /* @__PURE__ */ React20.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-start w-full gap-4" }), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React20.createElement("span", { className: `text-[9px] tracking-widest ${activeCard.contentDark ? "text-black/60" : "text-white/60"}` }, "Card Tier"), /* @__PURE__ */ React20.createElement("span", { className: `text-[12px] tracking-widest font-medium uppercase ${activeCard.contentDark ? "text-black" : "text-white"}` }, activeCard.tier)), activeCard.networkLogoSrc && /* @__PURE__ */ React20.createElement(
|
|
2160
|
+
"img",
|
|
2162
2161
|
{
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
/* @__PURE__ */ React20.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-end" }, /* @__PURE__ */ React20.createElement("div", { className: "w-full text-center mb-6" }, /* @__PURE__ */ React20.createElement("span", { className: "text-white text-3xl italic tracking-wide opacity-90", style: { fontFamily: "'Whisper', cursive" } }, activeCard.cardHolderName)), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-between w-full max-w-[80%]" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "Expiry"), /* @__PURE__ */ React20.createElement("span", { className: "text-[12px] text-white font-light" }, displayExpiry)), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "CVV"), /* @__PURE__ */ React20.createElement("span", { className: "text-[12px] text-white font-light" }, displayCvv))))
|
|
2178
|
-
)
|
|
2179
|
-
)), /* @__PURE__ */ React20.createElement("p", { className: "w-full text-center text-xs text-neutral-400 mb-6 mt-1" }, isActivated ? "Tap to flip card" : "Action Required"), /* @__PURE__ */ React20.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ React20.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React20.createElement(
|
|
2162
|
+
src: activeCard.networkLogoSrc,
|
|
2163
|
+
alt: "Network Logo",
|
|
2164
|
+
className: "h-10 w-auto max-w-20 object-contain opacity-90"
|
|
2165
|
+
}
|
|
2166
|
+
))))
|
|
2167
|
+
)), activeCard.bannerProps ? /* @__PURE__ */ React20.createElement("div", { className: "mb-6 w-full" }, /* @__PURE__ */ React20.createElement(Banner, { ...activeCard.bannerProps })) : isPreordered ? /* @__PURE__ */ React20.createElement("div", { className: "mb-6 w-full" }, /* @__PURE__ */ React20.createElement(
|
|
2168
|
+
Banner,
|
|
2169
|
+
{
|
|
2170
|
+
type: "success",
|
|
2171
|
+
title: "Order Secured",
|
|
2172
|
+
message: `Your ${activeCard.tier} ${activeCard.type.toLowerCase()} card has been pre-ordered successfully and is pending batch processing.`,
|
|
2173
|
+
isDismissible: false
|
|
2174
|
+
}
|
|
2175
|
+
)) : null, /* @__PURE__ */ React20.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ React20.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React20.createElement(
|
|
2180
2176
|
MenuRow,
|
|
2181
2177
|
{
|
|
2182
2178
|
icon: ViewOffSlashIcon2,
|
|
2183
2179
|
title: "Reveal Information",
|
|
2184
|
-
subtitle: "Show card
|
|
2180
|
+
subtitle: "Show secure card details",
|
|
2185
2181
|
onClick: handleToggleReveal,
|
|
2186
2182
|
isToggle: true,
|
|
2187
2183
|
toggleState: isRevealed,
|
|
@@ -2274,7 +2270,7 @@ var MenuRow = ({
|
|
|
2274
2270
|
import React21, { useState as useState13 } from "react";
|
|
2275
2271
|
import { HugeiconsIcon as HugeiconsIcon15 } from "@hugeicons/react";
|
|
2276
2272
|
import {
|
|
2277
|
-
UserIcon
|
|
2273
|
+
UserIcon,
|
|
2278
2274
|
LockKeyIcon as LockKeyIcon2,
|
|
2279
2275
|
ShieldUserIcon,
|
|
2280
2276
|
MessageQuestionIcon,
|
|
@@ -2328,10 +2324,10 @@ var UniversalProfilePage = ({
|
|
|
2328
2324
|
onLoad: () => setIsAvatarLoaded(true),
|
|
2329
2325
|
className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
|
|
2330
2326
|
}
|
|
2331
|
-
)) : /* @__PURE__ */ React21.createElement(HugeiconsIcon15, { icon:
|
|
2327
|
+
)) : /* @__PURE__ */ React21.createElement(HugeiconsIcon15, { icon: UserIcon, size: 40, className: "text-neutral-300" }))), /* @__PURE__ */ React21.createElement("div", { className: "bg-white rounded-full px-4 py-2 flex items-center justify-center gap-2 mb-3" }, /* @__PURE__ */ React21.createElement("span", { className: "text-[12px] text-black" }, roleName), /* @__PURE__ */ React21.createElement("span", { className: getBadgeColorClass(roleName), "aria-hidden": true }, /* @__PURE__ */ React21.createElement("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React21.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }), /* @__PURE__ */ React21.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ React21.createElement("g", { id: "SVGRepo_iconCarrier" }, " ", /* @__PURE__ */ React21.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M9.5924 3.20027C9.34888 3.4078 9.22711 3.51158 9.09706 3.59874C8.79896 3.79854 8.46417 3.93721 8.1121 4.00672C7.95851 4.03705 7.79903 4.04977 7.48008 4.07522C6.6787 4.13918 6.278 4.17115 5.94371 4.28923C5.17051 4.56233 4.56233 5.17051 4.28923 5.94371C4.17115 6.278 4.13918 6.6787 4.07522 7.48008C4.04977 7.79903 4.03705 7.95851 4.00672 8.1121C3.93721 8.46417 3.79854 8.79896 3.59874 9.09706C3.51158 9.22711 3.40781 9.34887 3.20027 9.5924C2.67883 10.2043 2.4181 10.5102 2.26522 10.8301C1.91159 11.57 1.91159 12.43 2.26522 13.1699C2.41811 13.4898 2.67883 13.7957 3.20027 14.4076C3.40778 14.6511 3.51158 14.7729 3.59874 14.9029C3.79854 15.201 3.93721 15.5358 4.00672 15.8879C4.03705 16.0415 4.04977 16.201 4.07522 16.5199C4.13918 17.3213 4.17115 17.722 4.28923 18.0563C4.56233 18.8295 5.17051 19.4377 5.94371 19.7108C6.278 19.8288 6.6787 19.8608 7.48008 19.9248C7.79903 19.9502 7.95851 19.963 8.1121 19.9933C8.46417 20.0628 8.79896 20.2015 9.09706 20.4013C9.22711 20.4884 9.34887 20.5922 9.5924 20.7997C10.2043 21.3212 10.5102 21.5819 10.8301 21.7348C11.57 22.0884 12.43 22.0884 13.1699 21.7348C13.4898 21.5819 13.7957 21.3212 14.4076 20.7997C14.6511 20.5922 14.7729 20.4884 14.9029 20.4013C15.201 20.2015 15.5358 20.0628 15.8879 19.9933C16.0415 19.963 16.201 19.9502 16.5199 19.9248C17.3213 19.8608 17.722 19.8288 18.0563 19.7108C18.8295 19.4377 19.4377 18.8295 19.7108 18.0563C19.8288 17.722 19.8608 17.3213 19.9248 16.5199C19.9502 16.201 19.963 16.0415 19.9933 15.8879C20.0628 15.5358 20.2015 15.201 20.4013 14.9029C20.4884 14.7729 20.5922 14.6511 20.7997 14.4076C21.3212 13.7957 21.5819 13.4898 21.7348 13.1699C22.0884 12.43 22.0884 11.57 21.7348 10.8301C21.5819 10.5102 21.3212 10.2043 20.7997 9.5924C20.5922 9.34887 20.4884 9.22711 20.4013 9.09706C20.2015 8.79896 20.0628 8.46417 19.9933 8.1121C19.963 7.95851 19.9502 7.79903 19.9248 7.48008C19.8608 6.6787 19.8288 6.278 19.7108 5.94371C19.4377 5.17051 18.8295 4.56233 18.0563 4.28923C17.722 4.17115 17.3213 4.13918 16.5199 4.07522C16.201 4.04977 16.0415 4.03705 15.8879 4.00672C15.5358 3.93721 15.201 3.79854 14.9029 3.59874C14.7729 3.51158 14.6511 3.40781 14.4076 3.20027C13.7957 2.67883 13.4898 2.41811 13.1699 2.26522C12.43 1.91159 11.57 1.91159 10.8301 2.26522C10.5102 2.4181 10.2043 2.67883 9.5924 3.20027ZM16.3735 9.86314C16.6913 9.5453 16.6913 9.03 16.3735 8.71216C16.0557 8.39433 15.5403 8.39433 15.2225 8.71216L10.3723 13.5624L8.77746 11.9676C8.45963 11.6498 7.94432 11.6498 7.62649 11.9676C7.30866 12.2854 7.30866 12.8007 7.62649 13.1186L9.79678 15.2889C10.1146 15.6067 10.6299 15.6067 10.9478 15.2889L16.3735 9.86314Z", fill: "currentColor" }), " ")))), /* @__PURE__ */ React21.createElement("span", { className: "text-[12px] text-neutral-500" }, memberSince)), /* @__PURE__ */ React21.createElement("div", { className: "w-full flex flex-col gap-4 mt-2" }, /* @__PURE__ */ React21.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React21.createElement(
|
|
2332
2328
|
MenuRow2,
|
|
2333
2329
|
{
|
|
2334
|
-
icon:
|
|
2330
|
+
icon: UserIcon,
|
|
2335
2331
|
title: "Account",
|
|
2336
2332
|
subtitle: "Your account details",
|
|
2337
2333
|
onClick: onAccountTap
|
|
@@ -3910,7 +3906,7 @@ import {
|
|
|
3910
3906
|
ArrowLeft01Icon as ArrowLeft01Icon8,
|
|
3911
3907
|
Mail01Icon,
|
|
3912
3908
|
SmartPhone01Icon,
|
|
3913
|
-
UserIcon as
|
|
3909
|
+
UserIcon as UserIcon2,
|
|
3914
3910
|
CheckmarkCircle01Icon,
|
|
3915
3911
|
Time02Icon,
|
|
3916
3912
|
InformationCircleIcon as InformationCircleIcon2,
|
|
@@ -4011,7 +4007,7 @@ var UniversalVerificationPage = ({
|
|
|
4011
4007
|
), /* @__PURE__ */ React41.createElement(
|
|
4012
4008
|
VerificationRow,
|
|
4013
4009
|
{
|
|
4014
|
-
icon:
|
|
4010
|
+
icon: UserIcon2,
|
|
4015
4011
|
title: "Identity Verification",
|
|
4016
4012
|
status: identityStatus,
|
|
4017
4013
|
isLoading: activeLoadingType === "IDENTITY",
|