@retinalabsllc/zairusjs 14.0.1 → 14.0.15
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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +374 -413
- package/dist/index.mjs +271 -310
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1294,6 +1294,20 @@ var truncateReference = (ref) => {
|
|
|
1294
1294
|
if (!ref || ref.length <= 14) return ref;
|
|
1295
1295
|
return `${ref.substring(0, 11)}.....${ref.substring(ref.length - 11)}`;
|
|
1296
1296
|
};
|
|
1297
|
+
var getStatusClasses = (status) => {
|
|
1298
|
+
switch (status) {
|
|
1299
|
+
case "PENDING":
|
|
1300
|
+
return "text-amber-700 bg-amber-100";
|
|
1301
|
+
case "COMPLETED":
|
|
1302
|
+
return "text-emerald-700 bg-emerald-100";
|
|
1303
|
+
case "FAILED":
|
|
1304
|
+
return "text-rose-700 bg-rose-100";
|
|
1305
|
+
case "REVERSED":
|
|
1306
|
+
return "text-sky-700 bg-sky-100";
|
|
1307
|
+
default:
|
|
1308
|
+
return "text-neutral-500 bg-neutral-50";
|
|
1309
|
+
}
|
|
1310
|
+
};
|
|
1297
1311
|
var UniversalTransactionPage = ({
|
|
1298
1312
|
headerTitle,
|
|
1299
1313
|
headerDescription,
|
|
@@ -1421,7 +1435,7 @@ var UniversalTransactionPage = ({
|
|
|
1421
1435
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
1422
1436
|
},
|
|
1423
1437
|
/* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.ArrowRight01Icon, size: 14 })
|
|
1424
|
-
)))))), selectedTransaction && /* @__PURE__ */ import_react23.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ import_react23.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_react23.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react23.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ import_react23.default.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 bg-neutral-100 text-black` }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: selectedTransaction.direction === "CREDIT" ? import_core_free_icons7.ArrowDownRight01Icon : import_core_free_icons7.ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ import_react23.default.createElement("p", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.amount), /* @__PURE__ */ import_react23.default.createElement("span", { className:
|
|
1438
|
+
)))))), selectedTransaction && /* @__PURE__ */ import_react23.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ import_react23.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_react23.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react23.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ import_react23.default.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 bg-neutral-100 text-black` }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: selectedTransaction.direction === "CREDIT" ? import_core_free_icons7.ArrowDownRight01Icon : import_core_free_icons7.ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ import_react23.default.createElement("p", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.amount), /* @__PURE__ */ import_react23.default.createElement("span", { className: `text-[9px] tracking-widest px-4 py-1.5 rounded-full ${getStatusClasses(selectedTransaction.status)}` }, selectedTransaction.status)), /* @__PURE__ */ import_react23.default.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__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" }, "Reference ID"), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, truncateReference(selectedTransaction.reference)), /* @__PURE__ */ import_react23.default.createElement(
|
|
1425
1439
|
"button",
|
|
1426
1440
|
{
|
|
1427
1441
|
onClick: () => handleCopyReference(selectedTransaction.reference),
|
|
@@ -1876,9 +1890,10 @@ var UniversalWalletPage = ({
|
|
|
1876
1890
|
};
|
|
1877
1891
|
|
|
1878
1892
|
// src/components/UniversalCardPage.tsx
|
|
1879
|
-
var
|
|
1880
|
-
var
|
|
1881
|
-
var
|
|
1893
|
+
var import_react33 = __toESM(require("react"));
|
|
1894
|
+
var import_navigation4 = require("next/navigation");
|
|
1895
|
+
var import_react34 = require("@hugeicons/react");
|
|
1896
|
+
var import_core_free_icons12 = require("@hugeicons/core-free-icons");
|
|
1882
1897
|
|
|
1883
1898
|
// src/components/ConfirmationDialog.tsx
|
|
1884
1899
|
var import_react29 = __toESM(require("react"));
|
|
@@ -1999,70 +2014,32 @@ var PinDialerBottomSheet = ({
|
|
|
1999
2014
|
)))));
|
|
2000
2015
|
};
|
|
2001
2016
|
|
|
2002
|
-
// src/components/CardAction.tsx
|
|
2003
|
-
var import_react33 = __toESM(require("react"));
|
|
2004
|
-
var import_react34 = require("@hugeicons/react");
|
|
2005
|
-
var import_core_free_icons12 = require("@hugeicons/core-free-icons");
|
|
2006
|
-
var CardActionDialog = ({
|
|
2007
|
-
isOpen,
|
|
2008
|
-
card,
|
|
2009
|
-
actionType,
|
|
2010
|
-
onClose,
|
|
2011
|
-
onProceed
|
|
2012
|
-
}) => {
|
|
2013
|
-
if (!isOpen || !card) return null;
|
|
2014
|
-
const title = actionType === "ACTIVATE" ? "Activate Card" : "Create New Card";
|
|
2015
|
-
const description = actionType === "ACTIVATE" ? `You are about to activate your ${card.type.toLowerCase()} card. Once activated, you can view details and set limits.` : `Your current ${card.type.toLowerCase()} card is ${card.status.toLowerCase()}. You need to provision a new one to continue.`;
|
|
2016
|
-
return /* @__PURE__ */ import_react33.default.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
2017
|
-
"div",
|
|
2018
|
-
{
|
|
2019
|
-
className: "absolute inset-0 bg-black/40 animate-in fade-in duration-200",
|
|
2020
|
-
onClick: onClose
|
|
2021
|
-
}
|
|
2022
|
-
), /* @__PURE__ */ import_react33.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" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.CreditCardIcon, size: 20, className: "text-black" }), /* @__PURE__ */ import_react33.default.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title)), /* @__PURE__ */ import_react33.default.createElement(
|
|
2023
|
-
"button",
|
|
2024
|
-
{
|
|
2025
|
-
onClick: onClose,
|
|
2026
|
-
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
2027
|
-
},
|
|
2028
|
-
/* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.CancelCircleIcon, size: 20 })
|
|
2029
|
-
)), /* @__PURE__ */ import_react33.default.createElement("div", { className: "p-6 text-center" }, /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-[13px] text-neutral-500 leading-relaxed mb-6" }, description), /* @__PURE__ */ import_react33.default.createElement(
|
|
2030
|
-
"button",
|
|
2031
|
-
{
|
|
2032
|
-
onClick: onProceed,
|
|
2033
|
-
className: "w-full py-3.5 bg-black text-white text-[13px] rounded-xl hover:bg-neutral-800 transition-colors outline-none active:scale-95"
|
|
2034
|
-
},
|
|
2035
|
-
actionType === "ACTIVATE" ? "Activate Now" : "Create Card"
|
|
2036
|
-
))));
|
|
2037
|
-
};
|
|
2038
|
-
|
|
2039
2017
|
// src/components/UniversalCardPage.tsx
|
|
2040
2018
|
var UniversalCardPage = ({
|
|
2041
2019
|
cards = [],
|
|
2020
|
+
actionPath = "/app/cards/action/",
|
|
2042
2021
|
onReveal,
|
|
2043
2022
|
onFreeze,
|
|
2044
2023
|
onSetLimits,
|
|
2045
|
-
onDelete
|
|
2046
|
-
onCardAction
|
|
2024
|
+
onDelete
|
|
2047
2025
|
}) => {
|
|
2048
|
-
const
|
|
2026
|
+
const router = (0, import_navigation4.useRouter)();
|
|
2027
|
+
const [activeTabIndex, setActiveTabIndex] = (0, import_react33.useState)(0);
|
|
2049
2028
|
const activeCard = cards[activeTabIndex];
|
|
2050
|
-
(0,
|
|
2029
|
+
(0, import_react33.useEffect)(() => {
|
|
2051
2030
|
setIsFlipped(false);
|
|
2052
2031
|
setIsRevealed(false);
|
|
2053
2032
|
}, [activeTabIndex]);
|
|
2054
|
-
const [isFlipped, setIsFlipped] = (0,
|
|
2055
|
-
const [isBgLoaded, setIsBgLoaded] = (0,
|
|
2056
|
-
const [isRevealed, setIsRevealed] = (0,
|
|
2057
|
-
const [isRevealing, setIsRevealing] = (0,
|
|
2058
|
-
const [isFreezing, setIsFreezing] = (0,
|
|
2059
|
-
const [isOverlayActionLoading, setIsOverlayActionLoading] = (0,
|
|
2060
|
-
const [showDeleteDialog, setShowDeleteDialog] = (0,
|
|
2061
|
-
const [isDeleting, setIsDeleting] = (0,
|
|
2062
|
-
const [showPinDialer, setShowPinDialer] = (0,
|
|
2063
|
-
|
|
2064
|
-
const [cardActionType, setCardActionType] = (0, import_react35.useState)("ACTIVATE");
|
|
2065
|
-
(0, import_react35.useEffect)(() => {
|
|
2033
|
+
const [isFlipped, setIsFlipped] = (0, import_react33.useState)(false);
|
|
2034
|
+
const [isBgLoaded, setIsBgLoaded] = (0, import_react33.useState)(false);
|
|
2035
|
+
const [isRevealed, setIsRevealed] = (0, import_react33.useState)(false);
|
|
2036
|
+
const [isRevealing, setIsRevealing] = (0, import_react33.useState)(false);
|
|
2037
|
+
const [isFreezing, setIsFreezing] = (0, import_react33.useState)(false);
|
|
2038
|
+
const [isOverlayActionLoading, setIsOverlayActionLoading] = (0, import_react33.useState)(false);
|
|
2039
|
+
const [showDeleteDialog, setShowDeleteDialog] = (0, import_react33.useState)(false);
|
|
2040
|
+
const [isDeleting, setIsDeleting] = (0, import_react33.useState)(false);
|
|
2041
|
+
const [showPinDialer, setShowPinDialer] = (0, import_react33.useState)(false);
|
|
2042
|
+
(0, import_react33.useEffect)(() => {
|
|
2066
2043
|
setIsBgLoaded(false);
|
|
2067
2044
|
if (!activeCard?.cardBgSrc) return;
|
|
2068
2045
|
const img = new Image();
|
|
@@ -2071,7 +2048,7 @@ var UniversalCardPage = ({
|
|
|
2071
2048
|
setTimeout(() => setIsBgLoaded(true), 300);
|
|
2072
2049
|
};
|
|
2073
2050
|
}, [activeCard?.cardBgSrc]);
|
|
2074
|
-
if (!activeCard) return /* @__PURE__ */
|
|
2051
|
+
if (!activeCard) return /* @__PURE__ */ import_react33.default.createElement("div", { className: "text-center p-8 text-neutral-500" }, "No cards available");
|
|
2075
2052
|
const isActivated = activeCard.status === "ACTIVATED";
|
|
2076
2053
|
const isFrozen = activeCard.status === "FROZEN";
|
|
2077
2054
|
const isUnactivated = activeCard.status === "UNACTIVATED";
|
|
@@ -2118,10 +2095,6 @@ var UniversalCardPage = ({
|
|
|
2118
2095
|
setIsOverlayActionLoading(false);
|
|
2119
2096
|
}, 800);
|
|
2120
2097
|
};
|
|
2121
|
-
const handleOverlayActionClick = (type) => {
|
|
2122
|
-
setCardActionType(type);
|
|
2123
|
-
setShowCardActionDialog(true);
|
|
2124
|
-
};
|
|
2125
2098
|
const confirmDelete = async () => {
|
|
2126
2099
|
setIsDeleting(true);
|
|
2127
2100
|
setTimeout(() => {
|
|
@@ -2137,9 +2110,9 @@ var UniversalCardPage = ({
|
|
|
2137
2110
|
const displayCardNumber = isRevealed ? activeCard.cardNumber : `XXXX XXXX XXXX ${activeCard.cardNumber.slice(-4)}`;
|
|
2138
2111
|
const displayExpiry = isRevealed ? activeCard.expiry : "XX/XX";
|
|
2139
2112
|
const displayCvv = isRevealed ? activeCard.cvv : "XXX";
|
|
2140
|
-
return /* @__PURE__ */
|
|
2113
|
+
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) => {
|
|
2141
2114
|
const isActive = activeTabIndex === idx;
|
|
2142
|
-
return /* @__PURE__ */
|
|
2115
|
+
return /* @__PURE__ */ import_react33.default.createElement(
|
|
2143
2116
|
"button",
|
|
2144
2117
|
{
|
|
2145
2118
|
key: tab.id,
|
|
@@ -2148,7 +2121,7 @@ var UniversalCardPage = ({
|
|
|
2148
2121
|
},
|
|
2149
2122
|
formatTabLabel(tab.type)
|
|
2150
2123
|
);
|
|
2151
|
-
}))), /* @__PURE__ */
|
|
2124
|
+
}))), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center", style: { perspective: "1000px" } }, /* @__PURE__ */ import_react33.default.createElement(
|
|
2152
2125
|
"div",
|
|
2153
2126
|
{
|
|
2154
2127
|
onClick: () => {
|
|
@@ -2161,28 +2134,28 @@ var UniversalCardPage = ({
|
|
|
2161
2134
|
transform: isFlipped ? "rotateY(180deg)" : "rotateY(0deg)"
|
|
2162
2135
|
}
|
|
2163
2136
|
},
|
|
2164
|
-
!isBgLoaded && /* @__PURE__ */
|
|
2165
|
-
!isActivated && isBgLoaded && /* @__PURE__ */
|
|
2137
|
+
!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" })),
|
|
2138
|
+
!isActivated && isBgLoaded && /* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute inset-0 z-40 w-full h-full rounded-2xl backdrop-blur-[2px] flex flex-col items-center justify-center ", style: { transform: "translateZ(1px)" } }, isUnactivated && /* @__PURE__ */ import_react33.default.createElement(
|
|
2166
2139
|
"button",
|
|
2167
2140
|
{
|
|
2168
2141
|
onClick: (e) => {
|
|
2169
2142
|
e.stopPropagation();
|
|
2170
|
-
|
|
2143
|
+
router.push(`${actionPath}${activeCard.id}`);
|
|
2171
2144
|
},
|
|
2172
2145
|
className: "px-6 py-2 bg-white/25 text-white text-[11px] rounded-full transition-all outline-none active:scale-95"
|
|
2173
2146
|
},
|
|
2174
2147
|
"Activate Card"
|
|
2175
|
-
), isDead && /* @__PURE__ */
|
|
2148
|
+
), isDead && /* @__PURE__ */ import_react33.default.createElement(
|
|
2176
2149
|
"button",
|
|
2177
2150
|
{
|
|
2178
2151
|
onClick: (e) => {
|
|
2179
2152
|
e.stopPropagation();
|
|
2180
|
-
|
|
2153
|
+
router.push(`${actionPath}${activeCard.id}`);
|
|
2181
2154
|
},
|
|
2182
2155
|
className: "px-6 py-2 bg-white/25 text-white text-[11px] rounded-full transition-all outline-none active:scale-95"
|
|
2183
2156
|
},
|
|
2184
2157
|
"Create Card"
|
|
2185
|
-
), isFrozen && /* @__PURE__ */
|
|
2158
|
+
), isFrozen && /* @__PURE__ */ import_react33.default.createElement(
|
|
2186
2159
|
"button",
|
|
2187
2160
|
{
|
|
2188
2161
|
onClick: (e) => {
|
|
@@ -2192,24 +2165,24 @@ var UniversalCardPage = ({
|
|
|
2192
2165
|
disabled: isOverlayActionLoading,
|
|
2193
2166
|
className: "px-6 py-2.5 bg-white/35 text-white text-[12px] rounded-full transition-all outline-none active:scale-95 flex items-center gap-2 disabled:opacity-80"
|
|
2194
2167
|
},
|
|
2195
|
-
isOverlayActionLoading ? /* @__PURE__ */
|
|
2168
|
+
isOverlayActionLoading ? /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 16, className: "animate-spin" }) : "Unfreeze Card"
|
|
2196
2169
|
)),
|
|
2197
|
-
/* @__PURE__ */
|
|
2170
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
2198
2171
|
"div",
|
|
2199
2172
|
{
|
|
2200
2173
|
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"}`,
|
|
2201
2174
|
style: { backfaceVisibility: "hidden" }
|
|
2202
2175
|
},
|
|
2203
|
-
/* @__PURE__ */
|
|
2176
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
2204
2177
|
"div",
|
|
2205
2178
|
{
|
|
2206
2179
|
className: "absolute inset-0 bg-cover bg-center",
|
|
2207
2180
|
style: { backgroundImage: `url(${activeCard.cardBgSrc}), linear-gradient(to bottom right, #111, #333)` }
|
|
2208
2181
|
}
|
|
2209
2182
|
),
|
|
2210
|
-
/* @__PURE__ */
|
|
2183
|
+
/* @__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" })))
|
|
2211
2184
|
),
|
|
2212
|
-
/* @__PURE__ */
|
|
2185
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
2213
2186
|
"div",
|
|
2214
2187
|
{
|
|
2215
2188
|
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"}`,
|
|
@@ -2218,20 +2191,20 @@ var UniversalCardPage = ({
|
|
|
2218
2191
|
transform: "rotateY(180deg)"
|
|
2219
2192
|
}
|
|
2220
2193
|
},
|
|
2221
|
-
/* @__PURE__ */
|
|
2194
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
2222
2195
|
"div",
|
|
2223
2196
|
{
|
|
2224
2197
|
className: "absolute inset-0 bg-cover bg-center",
|
|
2225
2198
|
style: { backgroundImage: `url(${activeCard.cardBgSrc}), linear-gradient(to bottom right, #111, #333)` }
|
|
2226
2199
|
}
|
|
2227
2200
|
),
|
|
2228
|
-
/* @__PURE__ */
|
|
2229
|
-
/* @__PURE__ */
|
|
2201
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute top-6 left-0 right-0 h-10 bg-black/80 w-full" }),
|
|
2202
|
+
/* @__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))))
|
|
2230
2203
|
)
|
|
2231
|
-
)), /* @__PURE__ */
|
|
2204
|
+
)), /* @__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(
|
|
2232
2205
|
MenuRow,
|
|
2233
2206
|
{
|
|
2234
|
-
icon:
|
|
2207
|
+
icon: import_core_free_icons12.ViewOffSlashIcon,
|
|
2235
2208
|
title: "Reveal Information",
|
|
2236
2209
|
subtitle: "Show card informations",
|
|
2237
2210
|
onClick: handleToggleReveal,
|
|
@@ -2240,10 +2213,10 @@ var UniversalCardPage = ({
|
|
|
2240
2213
|
toggleLoading: isRevealing,
|
|
2241
2214
|
disabled: revealDisabled
|
|
2242
2215
|
}
|
|
2243
|
-
), /* @__PURE__ */
|
|
2216
|
+
), /* @__PURE__ */ import_react33.default.createElement(
|
|
2244
2217
|
MenuRow,
|
|
2245
2218
|
{
|
|
2246
|
-
icon:
|
|
2219
|
+
icon: import_core_free_icons12.SnowIcon,
|
|
2247
2220
|
title: "Freeze",
|
|
2248
2221
|
subtitle: "Freeze & Unfreeze card",
|
|
2249
2222
|
onClick: handleToggleFreeze,
|
|
@@ -2252,10 +2225,10 @@ var UniversalCardPage = ({
|
|
|
2252
2225
|
toggleLoading: isFreezing,
|
|
2253
2226
|
disabled: freezeDisabled
|
|
2254
2227
|
}
|
|
2255
|
-
), /* @__PURE__ */
|
|
2228
|
+
), /* @__PURE__ */ import_react33.default.createElement(
|
|
2256
2229
|
MenuRow,
|
|
2257
2230
|
{
|
|
2258
|
-
icon:
|
|
2231
|
+
icon: import_core_free_icons12.SlidersHorizontalIcon,
|
|
2259
2232
|
title: "Set Limits",
|
|
2260
2233
|
subtitle: "Set card limits",
|
|
2261
2234
|
onClick: () => {
|
|
@@ -2264,10 +2237,10 @@ var UniversalCardPage = ({
|
|
|
2264
2237
|
disabled: actionsDisabled,
|
|
2265
2238
|
isLast: true
|
|
2266
2239
|
}
|
|
2267
|
-
)), /* @__PURE__ */
|
|
2240
|
+
)), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
2268
2241
|
MenuRow,
|
|
2269
2242
|
{
|
|
2270
|
-
icon:
|
|
2243
|
+
icon: import_core_free_icons12.Delete02Icon,
|
|
2271
2244
|
title: "Delete card",
|
|
2272
2245
|
subtitle: "Permanently delete card",
|
|
2273
2246
|
onClick: () => {
|
|
@@ -2276,7 +2249,7 @@ var UniversalCardPage = ({
|
|
|
2276
2249
|
disabled: actionsDisabled,
|
|
2277
2250
|
isLast: true
|
|
2278
2251
|
}
|
|
2279
|
-
))), /* @__PURE__ */
|
|
2252
|
+
))), /* @__PURE__ */ import_react33.default.createElement(
|
|
2280
2253
|
ConfirmationDialog,
|
|
2281
2254
|
{
|
|
2282
2255
|
isOpen: showDeleteDialog,
|
|
@@ -2288,7 +2261,7 @@ var UniversalCardPage = ({
|
|
|
2288
2261
|
onClose: () => setShowDeleteDialog(false),
|
|
2289
2262
|
onConfirm: confirmDelete
|
|
2290
2263
|
}
|
|
2291
|
-
), /* @__PURE__ */
|
|
2264
|
+
), /* @__PURE__ */ import_react33.default.createElement(
|
|
2292
2265
|
PinDialerBottomSheet,
|
|
2293
2266
|
{
|
|
2294
2267
|
isOpen: showPinDialer,
|
|
@@ -2297,18 +2270,6 @@ var UniversalCardPage = ({
|
|
|
2297
2270
|
onClose: () => setShowPinDialer(false),
|
|
2298
2271
|
onComplete: handlePinComplete
|
|
2299
2272
|
}
|
|
2300
|
-
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2301
|
-
CardActionDialog,
|
|
2302
|
-
{
|
|
2303
|
-
isOpen: showCardActionDialog,
|
|
2304
|
-
card: activeCard,
|
|
2305
|
-
actionType: cardActionType,
|
|
2306
|
-
onClose: () => setShowCardActionDialog(false),
|
|
2307
|
-
onProceed: () => {
|
|
2308
|
-
if (onCardAction) onCardAction(activeCard.id, cardActionType);
|
|
2309
|
-
setShowCardActionDialog(false);
|
|
2310
|
-
}
|
|
2311
|
-
}
|
|
2312
2273
|
));
|
|
2313
2274
|
};
|
|
2314
2275
|
var MenuRow = ({
|
|
@@ -2323,21 +2284,21 @@ var MenuRow = ({
|
|
|
2323
2284
|
toggleState = false,
|
|
2324
2285
|
toggleLoading = false,
|
|
2325
2286
|
disabled = false
|
|
2326
|
-
}) => /* @__PURE__ */
|
|
2287
|
+
}) => /* @__PURE__ */ import_react33.default.createElement(
|
|
2327
2288
|
"div",
|
|
2328
2289
|
{
|
|
2329
2290
|
onClick: disabled ? void 0 : onClick,
|
|
2330
2291
|
className: `flex items-center p-3 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
|
|
2331
2292
|
},
|
|
2332
|
-
/* @__PURE__ */
|
|
2333
|
-
/* @__PURE__ */
|
|
2334
|
-
isToggle ? /* @__PURE__ */
|
|
2293
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
2294
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react33.default.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
2295
|
+
isToggle ? /* @__PURE__ */ import_react33.default.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-neutral-200"} ${disabled ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react33.default.createElement("div", { className: `absolute top-1 left-1 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300 flex items-center justify-center ${toggleState ? "translate-x-5" : "translate-x-0"}` }, toggleLoading && /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.ArrowRight01Icon, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2335
2296
|
);
|
|
2336
2297
|
|
|
2337
2298
|
// src/components/UniversalProfilePage.tsx
|
|
2338
|
-
var
|
|
2339
|
-
var
|
|
2340
|
-
var
|
|
2299
|
+
var import_react35 = __toESM(require("react"));
|
|
2300
|
+
var import_react36 = require("@hugeicons/react");
|
|
2301
|
+
var import_core_free_icons13 = require("@hugeicons/core-free-icons");
|
|
2341
2302
|
var UniversalProfilePage = ({
|
|
2342
2303
|
avatarSrc,
|
|
2343
2304
|
roleName,
|
|
@@ -2351,9 +2312,9 @@ var UniversalProfilePage = ({
|
|
|
2351
2312
|
onLogoutTap,
|
|
2352
2313
|
onDeleteTap
|
|
2353
2314
|
}) => {
|
|
2354
|
-
const [isAvatarLoaded, setIsAvatarLoaded] = (0,
|
|
2355
|
-
const [showLogoutDialog, setShowLogoutDialog] = (0,
|
|
2356
|
-
const [isLoggingOut, setIsLoggingOut] = (0,
|
|
2315
|
+
const [isAvatarLoaded, setIsAvatarLoaded] = (0, import_react35.useState)(false);
|
|
2316
|
+
const [showLogoutDialog, setShowLogoutDialog] = (0, import_react35.useState)(false);
|
|
2317
|
+
const [isLoggingOut, setIsLoggingOut] = (0, import_react35.useState)(false);
|
|
2357
2318
|
const handleConfirmLogout = async () => {
|
|
2358
2319
|
setIsLoggingOut(true);
|
|
2359
2320
|
try {
|
|
@@ -2373,7 +2334,7 @@ var UniversalProfilePage = ({
|
|
|
2373
2334
|
if (r.includes("platinum")) return "text-yellow-400";
|
|
2374
2335
|
return "text-neutral-400";
|
|
2375
2336
|
};
|
|
2376
|
-
return /* @__PURE__ */
|
|
2337
|
+
return /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "pt-8 pb-4 flex flex-col items-center" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-22 h-22 rounded-full bg-white p-1 mb-4 flex items-center justify-center" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, avatarSrc ? /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, !isAvatarLoaded && /* @__PURE__ */ import_react35.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 24, className: "animate-spin text-black" })), /* @__PURE__ */ import_react35.default.createElement(
|
|
2377
2338
|
"img",
|
|
2378
2339
|
{
|
|
2379
2340
|
src: avatarSrc,
|
|
@@ -2381,74 +2342,74 @@ var UniversalProfilePage = ({
|
|
|
2381
2342
|
onLoad: () => setIsAvatarLoaded(true),
|
|
2382
2343
|
className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
|
|
2383
2344
|
}
|
|
2384
|
-
)) : /* @__PURE__ */
|
|
2345
|
+
)) : /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.UserIcon, size: 40, className: "text-neutral-300" }))), /* @__PURE__ */ import_react35.default.createElement("div", { className: "bg-white rounded-full px-4 py-2 flex items-center justify-center gap-2 mb-3" }, /* @__PURE__ */ import_react35.default.createElement("span", { className: "text-[12px] text-black" }, roleName), /* @__PURE__ */ import_react35.default.createElement("span", { className: getBadgeColorClass(roleName), "aria-hidden": true }, /* @__PURE__ */ import_react35.default.createElement("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react35.default.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }), /* @__PURE__ */ import_react35.default.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ import_react35.default.createElement("g", { id: "SVGRepo_iconCarrier" }, " ", /* @__PURE__ */ import_react35.default.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__ */ import_react35.default.createElement("span", { className: "text-[12px] text-neutral-500" }, memberSince)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full flex flex-col gap-4 mt-2" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react35.default.createElement(
|
|
2385
2346
|
MenuRow2,
|
|
2386
2347
|
{
|
|
2387
|
-
icon:
|
|
2348
|
+
icon: import_core_free_icons13.UserIcon,
|
|
2388
2349
|
title: "Account",
|
|
2389
2350
|
subtitle: "Your account details",
|
|
2390
2351
|
onClick: onAccountTap
|
|
2391
2352
|
}
|
|
2392
|
-
), /* @__PURE__ */
|
|
2353
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2393
2354
|
MenuRow2,
|
|
2394
2355
|
{
|
|
2395
|
-
icon:
|
|
2356
|
+
icon: import_core_free_icons13.LockKeyIcon,
|
|
2396
2357
|
title: "Security",
|
|
2397
2358
|
subtitle: "2FA & authentication",
|
|
2398
2359
|
onClick: onSecurityTap
|
|
2399
2360
|
}
|
|
2400
|
-
), /* @__PURE__ */
|
|
2361
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2401
2362
|
MenuRow2,
|
|
2402
2363
|
{
|
|
2403
|
-
icon:
|
|
2364
|
+
icon: import_core_free_icons13.ShieldUserIcon,
|
|
2404
2365
|
title: "Web3 Profile",
|
|
2405
2366
|
subtitle: "Manage web3 profile",
|
|
2406
2367
|
onClick: onDefiTap
|
|
2407
2368
|
}
|
|
2408
|
-
), /* @__PURE__ */
|
|
2369
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2409
2370
|
MenuRow2,
|
|
2410
2371
|
{
|
|
2411
|
-
icon:
|
|
2372
|
+
icon: import_core_free_icons13.MessageQuestionIcon,
|
|
2412
2373
|
title: "Get Help",
|
|
2413
2374
|
subtitle: "24/7 Support",
|
|
2414
2375
|
onClick: onHelpTap,
|
|
2415
2376
|
isLast: true
|
|
2416
2377
|
}
|
|
2417
|
-
)), /* @__PURE__ */
|
|
2378
|
+
)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react35.default.createElement(
|
|
2418
2379
|
MenuRow2,
|
|
2419
2380
|
{
|
|
2420
|
-
icon:
|
|
2381
|
+
icon: import_core_free_icons13.UserIdVerificationIcon,
|
|
2421
2382
|
title: "Verifications",
|
|
2422
2383
|
subtitle: "Account Verifications",
|
|
2423
2384
|
onClick: onVerificationsTap
|
|
2424
2385
|
}
|
|
2425
|
-
), /* @__PURE__ */
|
|
2386
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2426
2387
|
MenuRow2,
|
|
2427
2388
|
{
|
|
2428
|
-
icon:
|
|
2389
|
+
icon: import_core_free_icons13.CrownIcon,
|
|
2429
2390
|
title: "My Referrals",
|
|
2430
2391
|
subtitle: "Referral & Rewards",
|
|
2431
2392
|
onClick: onExportTap
|
|
2432
2393
|
}
|
|
2433
|
-
), /* @__PURE__ */
|
|
2394
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2434
2395
|
MenuRow2,
|
|
2435
2396
|
{
|
|
2436
|
-
icon:
|
|
2397
|
+
icon: import_core_free_icons13.LogoutCircle02Icon,
|
|
2437
2398
|
title: "Log Out",
|
|
2438
2399
|
subtitle: "End your session",
|
|
2439
2400
|
onClick: () => setShowLogoutDialog(true),
|
|
2440
2401
|
isLast: true
|
|
2441
2402
|
}
|
|
2442
|
-
)), /* @__PURE__ */
|
|
2403
|
+
)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden mb-4" }, /* @__PURE__ */ import_react35.default.createElement(
|
|
2443
2404
|
MenuRow2,
|
|
2444
2405
|
{
|
|
2445
|
-
icon:
|
|
2406
|
+
icon: import_core_free_icons13.UserRemove01Icon,
|
|
2446
2407
|
title: "Delete Account",
|
|
2447
2408
|
subtitle: "Remove account",
|
|
2448
2409
|
onClick: onDeleteTap,
|
|
2449
2410
|
isLast: true
|
|
2450
2411
|
}
|
|
2451
|
-
))), /* @__PURE__ */
|
|
2412
|
+
))), /* @__PURE__ */ import_react35.default.createElement(
|
|
2452
2413
|
ConfirmationDialog,
|
|
2453
2414
|
{
|
|
2454
2415
|
isOpen: showLogoutDialog,
|
|
@@ -2462,22 +2423,22 @@ var UniversalProfilePage = ({
|
|
|
2462
2423
|
}
|
|
2463
2424
|
));
|
|
2464
2425
|
};
|
|
2465
|
-
var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titleColor = "text-black", isLast = false }) => /* @__PURE__ */
|
|
2426
|
+
var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titleColor = "text-black", isLast = false }) => /* @__PURE__ */ import_react35.default.createElement(
|
|
2466
2427
|
"div",
|
|
2467
2428
|
{
|
|
2468
2429
|
onClick,
|
|
2469
2430
|
className: `flex items-center p-4 cursor-pointer hover:bg-neutral-50 transition-colors ${!isLast ? "" : ""}`
|
|
2470
2431
|
},
|
|
2471
|
-
/* @__PURE__ */
|
|
2472
|
-
/* @__PURE__ */
|
|
2473
|
-
/* @__PURE__ */
|
|
2432
|
+
/* @__PURE__ */ import_react35.default.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
2433
|
+
/* @__PURE__ */ import_react35.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react35.default.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
2434
|
+
/* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.ArrowRight01Icon, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2474
2435
|
);
|
|
2475
2436
|
|
|
2476
2437
|
// src/components/UniversalSidebar.tsx
|
|
2477
|
-
var
|
|
2438
|
+
var import_react37 = __toESM(require("react"));
|
|
2478
2439
|
var import_link5 = __toESM(require("next/link"));
|
|
2479
|
-
var
|
|
2480
|
-
var
|
|
2440
|
+
var import_react38 = require("@hugeicons/react");
|
|
2441
|
+
var import_core_free_icons14 = require("@hugeicons/core-free-icons");
|
|
2481
2442
|
var UniversalSidebar = ({
|
|
2482
2443
|
navItems,
|
|
2483
2444
|
currentPath,
|
|
@@ -2485,8 +2446,8 @@ var UniversalSidebar = ({
|
|
|
2485
2446
|
showLogoutAction = false,
|
|
2486
2447
|
onLogout
|
|
2487
2448
|
}) => {
|
|
2488
|
-
const [showLogoutDialog, setShowLogoutDialog] = (0,
|
|
2489
|
-
const [isLoggingOut, setIsLoggingOut] = (0,
|
|
2449
|
+
const [showLogoutDialog, setShowLogoutDialog] = (0, import_react37.useState)(false);
|
|
2450
|
+
const [isLoggingOut, setIsLoggingOut] = (0, import_react37.useState)(false);
|
|
2490
2451
|
const hasActiveMatch = navItems.some(
|
|
2491
2452
|
(item) => item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`)
|
|
2492
2453
|
);
|
|
@@ -2500,10 +2461,10 @@ var UniversalSidebar = ({
|
|
|
2500
2461
|
setShowLogoutDialog(false);
|
|
2501
2462
|
}
|
|
2502
2463
|
};
|
|
2503
|
-
return /* @__PURE__ */
|
|
2464
|
+
return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, /* @__PURE__ */ import_react37.default.createElement("aside", { className: "hidden md:flex fixed top-0 left-0 h-screen w-20 flex-col z-40 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "h-24 shrink-0" }), /* @__PURE__ */ import_react37.default.createElement("nav", { className: "flex-1 flex flex-col gap-3 px-2" }, navItems.map((item, index) => {
|
|
2504
2465
|
const isExactOrSubMatch = item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`);
|
|
2505
2466
|
const isCurrentRoute = isExactOrSubMatch || !hasActiveMatch && index === 0;
|
|
2506
|
-
return /* @__PURE__ */
|
|
2467
|
+
return /* @__PURE__ */ import_react37.default.createElement(
|
|
2507
2468
|
import_link5.default,
|
|
2508
2469
|
{
|
|
2509
2470
|
key: item.name,
|
|
@@ -2512,8 +2473,8 @@ var UniversalSidebar = ({
|
|
|
2512
2473
|
className: `flex items-center justify-center w-12 h-12 mx-auto rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-white text-black" : "text-neutral-500 hover:text-black hover:bg-white/50"}`,
|
|
2513
2474
|
title: item.name
|
|
2514
2475
|
},
|
|
2515
|
-
/* @__PURE__ */
|
|
2516
|
-
|
|
2476
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
2477
|
+
import_react38.HugeiconsIcon,
|
|
2517
2478
|
{
|
|
2518
2479
|
icon: item.icon,
|
|
2519
2480
|
size: 20,
|
|
@@ -2521,14 +2482,14 @@ var UniversalSidebar = ({
|
|
|
2521
2482
|
}
|
|
2522
2483
|
)
|
|
2523
2484
|
);
|
|
2524
|
-
})), /* @__PURE__ */
|
|
2485
|
+
})), /* @__PURE__ */ import_react37.default.createElement("div", { className: "p-4 shrink-0 flex flex-col items-center gap-2 mb-4" }, showLogoutAction && /* @__PURE__ */ import_react37.default.createElement(
|
|
2525
2486
|
"button",
|
|
2526
2487
|
{
|
|
2527
2488
|
onClick: () => setShowLogoutDialog(true),
|
|
2528
2489
|
className: "w-12 h-12 rounded-full flex items-center justify-center text-neutral-500 hover:bg-white/50 transition-all outline-none"
|
|
2529
2490
|
},
|
|
2530
|
-
/* @__PURE__ */
|
|
2531
|
-
))), showLogoutAction && /* @__PURE__ */
|
|
2491
|
+
/* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons14.LogoutCircle02Icon, size: 20 })
|
|
2492
|
+
))), showLogoutAction && /* @__PURE__ */ import_react37.default.createElement(
|
|
2532
2493
|
ConfirmationDialog,
|
|
2533
2494
|
{
|
|
2534
2495
|
isOpen: showLogoutDialog,
|
|
@@ -2544,16 +2505,16 @@ var UniversalSidebar = ({
|
|
|
2544
2505
|
};
|
|
2545
2506
|
|
|
2546
2507
|
// src/components/HeroSection.tsx
|
|
2547
|
-
var
|
|
2508
|
+
var import_react40 = __toESM(require("react"));
|
|
2548
2509
|
var import_link6 = __toESM(require("next/link"));
|
|
2549
2510
|
var import_image2 = __toESM(require("next/image"));
|
|
2550
2511
|
|
|
2551
2512
|
// src/components/WaitlistDialog.tsx
|
|
2552
|
-
var
|
|
2513
|
+
var import_react39 = __toESM(require("react"));
|
|
2553
2514
|
var import_react_hot_toast7 = require("react-hot-toast");
|
|
2554
2515
|
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
2555
|
-
const [email, setEmail] = (0,
|
|
2556
|
-
const [isLoading, setIsLoading] = (0,
|
|
2516
|
+
const [email, setEmail] = (0, import_react39.useState)("");
|
|
2517
|
+
const [isLoading, setIsLoading] = (0, import_react39.useState)(false);
|
|
2557
2518
|
if (!isOpen) return null;
|
|
2558
2519
|
const handleSubmit = async (e) => {
|
|
2559
2520
|
e.preventDefault();
|
|
@@ -2584,19 +2545,19 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2584
2545
|
setIsLoading(false);
|
|
2585
2546
|
}
|
|
2586
2547
|
};
|
|
2587
|
-
return /* @__PURE__ */
|
|
2548
|
+
return /* @__PURE__ */ import_react39.default.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ import_react39.default.createElement(
|
|
2588
2549
|
"div",
|
|
2589
2550
|
{
|
|
2590
2551
|
className: "w-full max-w-md bg-white rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200"
|
|
2591
2552
|
},
|
|
2592
|
-
/* @__PURE__ */
|
|
2553
|
+
/* @__PURE__ */ import_react39.default.createElement(
|
|
2593
2554
|
"button",
|
|
2594
2555
|
{
|
|
2595
2556
|
onClick: onClose,
|
|
2596
2557
|
disabled: isLoading,
|
|
2597
2558
|
className: "absolute top-4 right-4 p-2 text-neutral-700 hover:text-neutral-400 transition-colors disabled:opacity-50 outline-none"
|
|
2598
2559
|
},
|
|
2599
|
-
/* @__PURE__ */
|
|
2560
|
+
/* @__PURE__ */ import_react39.default.createElement(
|
|
2600
2561
|
"svg",
|
|
2601
2562
|
{
|
|
2602
2563
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2609,11 +2570,11 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2609
2570
|
strokeLinecap: "round",
|
|
2610
2571
|
strokeLinejoin: "round"
|
|
2611
2572
|
},
|
|
2612
|
-
/* @__PURE__ */
|
|
2613
|
-
/* @__PURE__ */
|
|
2573
|
+
/* @__PURE__ */ import_react39.default.createElement("path", { d: "M18 6 6 18" }),
|
|
2574
|
+
/* @__PURE__ */ import_react39.default.createElement("path", { d: "m6 6 12 12" })
|
|
2614
2575
|
)
|
|
2615
2576
|
),
|
|
2616
|
-
/* @__PURE__ */
|
|
2577
|
+
/* @__PURE__ */ import_react39.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ import_react39.default.createElement("h2", { className: "text-2xl text-black tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ import_react39.default.createElement("p", { className: "text-[13px] text-neutral-500 leading-relaxed" }, "Be the first to experience the future of Web3 freedom. Secure your early access spot today.")), /* @__PURE__ */ import_react39.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react39.default.createElement(
|
|
2617
2578
|
TextInput,
|
|
2618
2579
|
{
|
|
2619
2580
|
label: "Email ID",
|
|
@@ -2623,7 +2584,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2623
2584
|
placeholder: "name@example.com",
|
|
2624
2585
|
disabled: isLoading
|
|
2625
2586
|
}
|
|
2626
|
-
), /* @__PURE__ */
|
|
2587
|
+
), /* @__PURE__ */ import_react39.default.createElement(
|
|
2627
2588
|
ThreeDActionButton,
|
|
2628
2589
|
{
|
|
2629
2590
|
type: "submit",
|
|
@@ -2656,10 +2617,10 @@ var HeroSection = ({
|
|
|
2656
2617
|
bgImageSrc,
|
|
2657
2618
|
isWaitlist = false
|
|
2658
2619
|
}) => {
|
|
2659
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2660
|
-
const [isWaitlistOpen, setIsWaitlistOpen] = (0,
|
|
2661
|
-
const titleRef = (0,
|
|
2662
|
-
(0,
|
|
2620
|
+
const [isAnimating, setIsAnimating] = (0, import_react40.useState)(false);
|
|
2621
|
+
const [isWaitlistOpen, setIsWaitlistOpen] = (0, import_react40.useState)(false);
|
|
2622
|
+
const titleRef = (0, import_react40.useRef)(null);
|
|
2623
|
+
(0, import_react40.useEffect)(() => {
|
|
2663
2624
|
const observer = new IntersectionObserver(
|
|
2664
2625
|
([entry]) => {
|
|
2665
2626
|
if (entry.isIntersecting) {
|
|
@@ -2681,7 +2642,7 @@ var HeroSection = ({
|
|
|
2681
2642
|
setIsWaitlistOpen(true);
|
|
2682
2643
|
}
|
|
2683
2644
|
};
|
|
2684
|
-
return /* @__PURE__ */
|
|
2645
|
+
return /* @__PURE__ */ import_react40.default.createElement("div", { className: "w-screen min-h-screen flex justify-center items-center p-4" }, /* @__PURE__ */ import_react40.default.createElement("section", { className: "relative h-[95vh] w-full overflow-hidden rounded-2xl " }, bgVideoSrc ? /* @__PURE__ */ import_react40.default.createElement(
|
|
2685
2646
|
"video",
|
|
2686
2647
|
{
|
|
2687
2648
|
src: bgVideoSrc,
|
|
@@ -2692,7 +2653,7 @@ var HeroSection = ({
|
|
|
2692
2653
|
playsInline: true,
|
|
2693
2654
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2694
2655
|
}
|
|
2695
|
-
) : bgImageSrc ? /* @__PURE__ */
|
|
2656
|
+
) : bgImageSrc ? /* @__PURE__ */ import_react40.default.createElement(
|
|
2696
2657
|
import_image2.default,
|
|
2697
2658
|
{
|
|
2698
2659
|
src: bgImageSrc,
|
|
@@ -2701,7 +2662,7 @@ var HeroSection = ({
|
|
|
2701
2662
|
priority: true,
|
|
2702
2663
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2703
2664
|
}
|
|
2704
|
-
) : null, /* @__PURE__ */
|
|
2665
|
+
) : null, /* @__PURE__ */ import_react40.default.createElement(
|
|
2705
2666
|
"div",
|
|
2706
2667
|
{
|
|
2707
2668
|
className: "pointer-events-none absolute inset-0 z-10 opacity-[0.7] mix-blend-overlay",
|
|
@@ -2709,15 +2670,15 @@ var HeroSection = ({
|
|
|
2709
2670
|
backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")`
|
|
2710
2671
|
}
|
|
2711
2672
|
}
|
|
2712
|
-
), /* @__PURE__ */
|
|
2673
|
+
), /* @__PURE__ */ import_react40.default.createElement("div", { className: "pointer-events-none absolute inset-0 bg-linear-to-b from-black/30 via-transparent to-black/80 z-10" }), /* @__PURE__ */ import_react40.default.createElement("div", { className: "absolute bottom-0 left-0 right-0 px-4 pb-4 sm:px-6 md:px-10 z-20" }, /* @__PURE__ */ import_react40.default.createElement("div", { className: "grid grid-cols-12 items-end gap-4" }, /* @__PURE__ */ import_react40.default.createElement("div", { className: "col-span-12 lg:col-span-8" }, /* @__PURE__ */ import_react40.default.createElement(
|
|
2713
2674
|
"h1",
|
|
2714
2675
|
{
|
|
2715
2676
|
ref: titleRef,
|
|
2716
2677
|
className: "leading-[0.85] tracking-[-0.07em] text-[18.2vw] sm:text-[16.8vw] md:text-[15.4vw] lg:text-[14vw] xl:text-[13.3vw] 2xl:text-[14vw] text-[#ffffff]"
|
|
2717
2678
|
},
|
|
2718
|
-
/* @__PURE__ */
|
|
2719
|
-
)), /* @__PURE__ */
|
|
2720
|
-
/* @__PURE__ */
|
|
2679
|
+
/* @__PURE__ */ import_react40.default.createElement("div", { className: "inline-flex flex-wrap" }, /* @__PURE__ */ import_react40.default.createElement("span", { className: `inline-block relative transition-all duration-1000 ${isAnimating ? "opacity-100 translate-y-0" : "opacity-0 translate-y-10"}` }, titlePrefix, titlePrefix && /* @__PURE__ */ import_react40.default.createElement("br", null), highlightText, /* @__PURE__ */ import_react40.default.createElement("span", { className: "absolute top-[0.65em] right-[-0.3em] text-[0.31em] text-[#ffffff]/70" }, "*")))
|
|
2680
|
+
)), /* @__PURE__ */ import_react40.default.createElement("div", { className: "col-span-12 flex flex-col gap-5 pb-6 lg:col-span-4 lg:pb-10" }, subtitle && /* @__PURE__ */ import_react40.default.createElement("p", { className: "text-xs text-[#ffffff]/70 sm:text-sm md:text-base leading-[1.2] max-w-md transition-opacity duration-1000 delay-300" }, subtitle), /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center gap-4" }, ctaText && // Changed from <button> to <Link> so it actually navigates!
|
|
2681
|
+
/* @__PURE__ */ import_react40.default.createElement(
|
|
2721
2682
|
import_link6.default,
|
|
2722
2683
|
{
|
|
2723
2684
|
href: isWaitlist ? "#" : ctaHref || "#",
|
|
@@ -2725,15 +2686,15 @@ var HeroSection = ({
|
|
|
2725
2686
|
className: "group inline-flex h-10 items-center gap-2 self-start rounded-full bg-[#ffffff] pl-5 pr-1 text-xs text-black transition-all hover:gap-3"
|
|
2726
2687
|
},
|
|
2727
2688
|
ctaText,
|
|
2728
|
-
/* @__PURE__ */
|
|
2729
|
-
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
2689
|
+
/* @__PURE__ */ import_react40.default.createElement("span", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-black transition-transform group-hover:scale-110" }, /* @__PURE__ */ import_react40.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "lucide lucide-arrow-right h-4 w-4 text-[#ffffff]" }, /* @__PURE__ */ import_react40.default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ import_react40.default.createElement("path", { d: "m12 5 7 7-7 7" })))
|
|
2690
|
+
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react40.default.createElement(
|
|
2730
2691
|
import_link6.default,
|
|
2731
2692
|
{
|
|
2732
2693
|
href: secondaryCtaHref,
|
|
2733
2694
|
className: "inline-flex h-10 items-center self-start justify-center text-xs tracking-wide rounded-full px-6 border border-[#ffffff]/30 text-[#ffffff] hover:bg-[#ffffff]/10 transition-colors"
|
|
2734
2695
|
},
|
|
2735
2696
|
secondaryCtaText
|
|
2736
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */
|
|
2697
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex flex-col gap-3 mt-4" }, appsText && /* @__PURE__ */ import_react40.default.createElement("span", { className: "text-[10px] tracking-widest text-[#ffffff]/50 " }, appsText), /* @__PURE__ */ import_react40.default.createElement("div", { className: "flex items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ import_react40.default.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-7 sm:w-7 opacity-70 hover:opacity-100 transition-opacity invert" }, /* @__PURE__ */ import_react40.default.createElement(
|
|
2737
2698
|
import_image2.default,
|
|
2738
2699
|
{
|
|
2739
2700
|
src: logo.src,
|
|
@@ -2742,7 +2703,7 @@ var HeroSection = ({
|
|
|
2742
2703
|
height: 28,
|
|
2743
2704
|
className: "object-contain"
|
|
2744
2705
|
}
|
|
2745
|
-
))))))))), /* @__PURE__ */
|
|
2706
|
+
))))))))), /* @__PURE__ */ import_react40.default.createElement(
|
|
2746
2707
|
WaitlistDialog,
|
|
2747
2708
|
{
|
|
2748
2709
|
isOpen: isWaitlistOpen,
|
|
@@ -2752,12 +2713,12 @@ var HeroSection = ({
|
|
|
2752
2713
|
};
|
|
2753
2714
|
|
|
2754
2715
|
// src/components/AppBento2.tsx
|
|
2755
|
-
var
|
|
2756
|
-
var
|
|
2716
|
+
var import_react41 = __toESM(require("react"));
|
|
2717
|
+
var import_react42 = require("@hugeicons/react");
|
|
2757
2718
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2758
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2759
|
-
const titleRef = (0,
|
|
2760
|
-
(0,
|
|
2719
|
+
const [isAnimating, setIsAnimating] = (0, import_react41.useState)(false);
|
|
2720
|
+
const titleRef = (0, import_react41.useRef)(null);
|
|
2721
|
+
(0, import_react41.useEffect)(() => {
|
|
2761
2722
|
const observer = new IntersectionObserver(
|
|
2762
2723
|
([entry]) => {
|
|
2763
2724
|
if (entry.isIntersecting) {
|
|
@@ -2775,7 +2736,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2775
2736
|
}
|
|
2776
2737
|
return () => observer.disconnect();
|
|
2777
2738
|
}, []);
|
|
2778
|
-
return /* @__PURE__ */
|
|
2739
|
+
return /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ import_react41.default.createElement(
|
|
2779
2740
|
"h2",
|
|
2780
2741
|
{
|
|
2781
2742
|
ref: titleRef,
|
|
@@ -2783,7 +2744,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2783
2744
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2784
2745
|
},
|
|
2785
2746
|
headline
|
|
2786
|
-
))), /* @__PURE__ */
|
|
2747
|
+
))), /* @__PURE__ */ import_react41.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
2787
2748
|
const isWhite = i === 0;
|
|
2788
2749
|
const isBlack = i === 1;
|
|
2789
2750
|
const isNeutral = i === 2;
|
|
@@ -2805,32 +2766,32 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2805
2766
|
const textColor = isBlack ? "text-white" : "text-black";
|
|
2806
2767
|
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
2807
2768
|
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
2808
|
-
return /* @__PURE__ */
|
|
2769
|
+
return /* @__PURE__ */ import_react41.default.createElement(
|
|
2809
2770
|
"div",
|
|
2810
2771
|
{
|
|
2811
2772
|
key: i,
|
|
2812
2773
|
className: `relative rounded-2xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`,
|
|
2813
2774
|
style: { boxShadow: getShadowStyle() }
|
|
2814
2775
|
},
|
|
2815
|
-
/* @__PURE__ */
|
|
2776
|
+
/* @__PURE__ */ import_react41.default.createElement(
|
|
2816
2777
|
"div",
|
|
2817
2778
|
{
|
|
2818
2779
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
2819
2780
|
style: { backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")` }
|
|
2820
2781
|
}
|
|
2821
2782
|
),
|
|
2822
|
-
isBlack && /* @__PURE__ */
|
|
2823
|
-
/* @__PURE__ */
|
|
2824
|
-
/* @__PURE__ */
|
|
2783
|
+
isBlack && /* @__PURE__ */ import_react41.default.createElement("span", { className: "absolute inset-0 rounded-2xl bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none z-10" }),
|
|
2784
|
+
/* @__PURE__ */ import_react41.default.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: `absolute -bottom-8 -right-8 transform group-hover:scale-110 transition-transform duration-700 ease-out ${isBlack ? "text-white/5" : "text-black/5"}` }, /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: f.icon, size: 180 }))),
|
|
2785
|
+
/* @__PURE__ */ import_react41.default.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ import_react41.default.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ import_react41.default.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ import_react41.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react41.default.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ import_react41.default.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2825
2786
|
);
|
|
2826
2787
|
})))));
|
|
2827
2788
|
};
|
|
2828
2789
|
|
|
2829
2790
|
// src/components/UniversalSecurityPage.tsx
|
|
2830
|
-
var
|
|
2791
|
+
var import_react43 = __toESM(require("react"));
|
|
2831
2792
|
var import_react_hot_toast8 = __toESM(require("react-hot-toast"));
|
|
2832
|
-
var
|
|
2833
|
-
var
|
|
2793
|
+
var import_react44 = require("@hugeicons/react");
|
|
2794
|
+
var import_core_free_icons15 = require("@hugeicons/core-free-icons");
|
|
2834
2795
|
var import_browser2 = require("@simplewebauthn/browser");
|
|
2835
2796
|
var UniversalSecurityPage = ({
|
|
2836
2797
|
has2FA,
|
|
@@ -2846,15 +2807,15 @@ var UniversalSecurityPage = ({
|
|
|
2846
2807
|
onVerifyAndEnablePasskey,
|
|
2847
2808
|
onDisablePasskey
|
|
2848
2809
|
}) => {
|
|
2849
|
-
const [show2FASetupModal, setShow2FASetupModal] = (0,
|
|
2850
|
-
const [show2FADisableModal, setShow2FADisableModal] = (0,
|
|
2851
|
-
const [showPasskeyModal, setShowPasskeyModal] = (0,
|
|
2852
|
-
const [twoFaSecret, setTwoFaSecret] = (0,
|
|
2853
|
-
const [twoFaQr, setTwoFaQr] = (0,
|
|
2854
|
-
const [isFetchingSetup, setIsFetchingSetup] = (0,
|
|
2855
|
-
const [otp, setOtp] = (0,
|
|
2856
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
2857
|
-
const inputRefs = (0,
|
|
2810
|
+
const [show2FASetupModal, setShow2FASetupModal] = (0, import_react43.useState)(false);
|
|
2811
|
+
const [show2FADisableModal, setShow2FADisableModal] = (0, import_react43.useState)(false);
|
|
2812
|
+
const [showPasskeyModal, setShowPasskeyModal] = (0, import_react43.useState)(false);
|
|
2813
|
+
const [twoFaSecret, setTwoFaSecret] = (0, import_react43.useState)("");
|
|
2814
|
+
const [twoFaQr, setTwoFaQr] = (0, import_react43.useState)("");
|
|
2815
|
+
const [isFetchingSetup, setIsFetchingSetup] = (0, import_react43.useState)(false);
|
|
2816
|
+
const [otp, setOtp] = (0, import_react43.useState)(Array(6).fill(""));
|
|
2817
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react43.useState)(false);
|
|
2818
|
+
const inputRefs = (0, import_react43.useRef)([]);
|
|
2858
2819
|
const resetOtp = () => {
|
|
2859
2820
|
setOtp(Array(6).fill(""));
|
|
2860
2821
|
setIsSubmitting(false);
|
|
@@ -2996,18 +2957,18 @@ var UniversalSecurityPage = ({
|
|
|
2996
2957
|
setIsSubmitting(false);
|
|
2997
2958
|
}
|
|
2998
2959
|
};
|
|
2999
|
-
return /* @__PURE__ */
|
|
2960
|
+
return /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ import_react43.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react43.default.createElement("div", { className: "mb-6 flex items-center px-1" }, /* @__PURE__ */ import_react43.default.createElement(
|
|
3000
2961
|
"button",
|
|
3001
2962
|
{
|
|
3002
2963
|
onClick: onBack,
|
|
3003
2964
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
3004
2965
|
},
|
|
3005
|
-
/* @__PURE__ */
|
|
2966
|
+
/* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons15.ArrowLeft01Icon, size: 16 }),
|
|
3006
2967
|
" Back"
|
|
3007
|
-
)), /* @__PURE__ */
|
|
2968
|
+
)), /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react43.default.createElement(
|
|
3008
2969
|
MenuRow3,
|
|
3009
2970
|
{
|
|
3010
|
-
icon:
|
|
2971
|
+
icon: import_core_free_icons15.CircleLockCheck02Icon,
|
|
3011
2972
|
title: "Authenticator App",
|
|
3012
2973
|
subtitle: "Secure your account with 2FA",
|
|
3013
2974
|
onClick: handleToggle2FA,
|
|
@@ -3015,10 +2976,10 @@ var UniversalSecurityPage = ({
|
|
|
3015
2976
|
toggleState: has2FA,
|
|
3016
2977
|
toggleLoading: is2FALoading || isFetchingSetup
|
|
3017
2978
|
}
|
|
3018
|
-
), /* @__PURE__ */
|
|
2979
|
+
), /* @__PURE__ */ import_react43.default.createElement(
|
|
3019
2980
|
MenuRow3,
|
|
3020
2981
|
{
|
|
3021
|
-
icon:
|
|
2982
|
+
icon: import_core_free_icons15.Key01Icon,
|
|
3022
2983
|
title: "Passkeys",
|
|
3023
2984
|
subtitle: "Sign in quickly with biometrics",
|
|
3024
2985
|
onClick: handleTogglePasskey,
|
|
@@ -3027,18 +2988,18 @@ var UniversalSecurityPage = ({
|
|
|
3027
2988
|
toggleLoading: isPasskeyLoading,
|
|
3028
2989
|
isLast: true
|
|
3029
2990
|
}
|
|
3030
|
-
))), show2FASetupModal && /* @__PURE__ */
|
|
2991
|
+
))), show2FASetupModal && /* @__PURE__ */ import_react43.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShow2FASetupModal(false) }), /* @__PURE__ */ import_react43.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_react43.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react43.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Enable 2FA"), /* @__PURE__ */ import_react43.default.createElement("button", { onClick: () => !isSubmitting && setShow2FASetupModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons15.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full flex justify-center mb-6 mix-blend-multiply" }, twoFaQr ? /* @__PURE__ */ import_react43.default.createElement("img", { src: twoFaQr, alt: "2FA QR Code", className: "w-40 h-40 object-contain rounded-xl border border-neutral-200 p-2" }) : /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-40 h-40 bg-neutral-100 rounded-xl flex items-center justify-center animate-pulse" })), /* @__PURE__ */ import_react43.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-8" }, /* @__PURE__ */ import_react43.default.createElement("div", null, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2 uppercase" }, "Setup Key"), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center gap-2 min-w-0 bg-neutral-50 px-3 py-2.5 rounded-xl " }, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[13px] font-mono tracking-widest text-black truncate min-w-0 block flex-1" }, twoFaSecret), /* @__PURE__ */ import_react43.default.createElement(
|
|
3031
2992
|
"button",
|
|
3032
2993
|
{
|
|
3033
2994
|
type: "button",
|
|
3034
2995
|
onClick: () => handleCopySecret(twoFaSecret),
|
|
3035
2996
|
className: "text-neutral-400 hover:text-black transition-colors outline-none shrink-0 ml-2"
|
|
3036
2997
|
},
|
|
3037
|
-
/* @__PURE__ */
|
|
3038
|
-
)))), /* @__PURE__ */
|
|
2998
|
+
/* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons15.Copy01Icon, size: 16 })
|
|
2999
|
+
)))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "text-center mb-8 mt-2" }, /* @__PURE__ */ import_react43.default.createElement("h2", { className: "text-xl text-black mb-2 tracking-tight" }, "Security Check"), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-[13px] text-neutral-500" }, "Enter the 6-digit code from your app")), /* @__PURE__ */ import_react43.default.createElement("form", { className: "space-y-4", autoComplete: "off", onSubmit: (e) => {
|
|
3039
3000
|
e.preventDefault();
|
|
3040
3001
|
submitEnable2FA(otp.join(""));
|
|
3041
|
-
} }, /* @__PURE__ */
|
|
3002
|
+
} }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex justify-between gap-2 pb-6", onPaste: handlePaste }, otp.map((digit, index) => /* @__PURE__ */ import_react43.default.createElement(
|
|
3042
3003
|
"input",
|
|
3043
3004
|
{
|
|
3044
3005
|
key: index,
|
|
@@ -3057,7 +3018,7 @@ var UniversalSecurityPage = ({
|
|
|
3057
3018
|
},
|
|
3058
3019
|
className: "w-8 h-12 text-center text-lg bg-transparent border-b-2 border-neutral-200 text-black outline-none focus:border-black transition-all duration-300"
|
|
3059
3020
|
}
|
|
3060
|
-
))), /* @__PURE__ */
|
|
3021
|
+
))), /* @__PURE__ */ import_react43.default.createElement(
|
|
3061
3022
|
ThreeDActionButton,
|
|
3062
3023
|
{
|
|
3063
3024
|
type: "submit",
|
|
@@ -3066,19 +3027,19 @@ var UniversalSecurityPage = ({
|
|
|
3066
3027
|
className: "w-full py-3.5"
|
|
3067
3028
|
},
|
|
3068
3029
|
"Verify & Enable"
|
|
3069
|
-
), /* @__PURE__ */
|
|
3030
|
+
), /* @__PURE__ */ import_react43.default.createElement(
|
|
3070
3031
|
"button",
|
|
3071
3032
|
{
|
|
3072
3033
|
type: "button",
|
|
3073
3034
|
onClick: () => handleCopySecret(twoFaSecret),
|
|
3074
3035
|
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 mt-2"
|
|
3075
3036
|
},
|
|
3076
|
-
/* @__PURE__ */
|
|
3037
|
+
/* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons15.Copy01Icon, size: 16, className: "mr-2" }),
|
|
3077
3038
|
"Copy Secret Key"
|
|
3078
|
-
))))), show2FADisableModal && /* @__PURE__ */
|
|
3039
|
+
))))), show2FADisableModal && /* @__PURE__ */ import_react43.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShow2FADisableModal(false) }), /* @__PURE__ */ import_react43.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" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react43.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Disable 2FA"), /* @__PURE__ */ import_react43.default.createElement("button", { onClick: () => !isSubmitting && setShow2FADisableModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons15.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "text-center mb-8 mt-2" }, /* @__PURE__ */ import_react43.default.createElement("h2", { className: "text-xl text-black mb-2 tracking-tight" }, "Security Check"), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-[13px] text-neutral-500" }, "Enter the code from your authenticator app to disable 2FA.")), /* @__PURE__ */ import_react43.default.createElement("form", { className: "space-y-8", autoComplete: "off", onSubmit: (e) => {
|
|
3079
3040
|
e.preventDefault();
|
|
3080
3041
|
submitDisable2FA(otp.join(""));
|
|
3081
|
-
} }, /* @__PURE__ */
|
|
3042
|
+
} }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex justify-between gap-2", onPaste: handlePaste }, otp.map((digit, index) => /* @__PURE__ */ import_react43.default.createElement(
|
|
3082
3043
|
"input",
|
|
3083
3044
|
{
|
|
3084
3045
|
key: index,
|
|
@@ -3097,7 +3058,7 @@ var UniversalSecurityPage = ({
|
|
|
3097
3058
|
},
|
|
3098
3059
|
className: "w-10 h-12 text-center text-lg bg-transparent border-b-2 border-neutral-200 text-black outline-none focus:border-black transition-all duration-300"
|
|
3099
3060
|
}
|
|
3100
|
-
))), /* @__PURE__ */
|
|
3061
|
+
))), /* @__PURE__ */ import_react43.default.createElement(
|
|
3101
3062
|
ThreeDActionButton,
|
|
3102
3063
|
{
|
|
3103
3064
|
type: "submit",
|
|
@@ -3106,7 +3067,7 @@ var UniversalSecurityPage = ({
|
|
|
3106
3067
|
className: "w-full py-3.5"
|
|
3107
3068
|
},
|
|
3108
3069
|
"Verify & Disable"
|
|
3109
|
-
))))), showPasskeyModal && /* @__PURE__ */
|
|
3070
|
+
))))), showPasskeyModal && /* @__PURE__ */ import_react43.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShowPasskeyModal(false) }), /* @__PURE__ */ import_react43.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" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react43.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Enable Passkey"), /* @__PURE__ */ import_react43.default.createElement("button", { onClick: () => !isSubmitting && setShowPasskeyModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons15.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "p-6 text-center" }, /* @__PURE__ */ import_react43.default.createElement("h2", { className: "text-lg text-black mb-2 tracking-tight" }, "Simplify your Sign In"), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-[13px] text-neutral-500 mb-8 leading-relaxed" }, "Use your device's biometrics (Face ID, Touch ID, or PIN) to securely sign into your account without needing a password."), /* @__PURE__ */ import_react43.default.createElement(
|
|
3110
3071
|
ThreeDActionButton,
|
|
3111
3072
|
{
|
|
3112
3073
|
onClick: submitEnablePasskey,
|
|
@@ -3128,26 +3089,26 @@ var MenuRow3 = ({
|
|
|
3128
3089
|
toggleState = false,
|
|
3129
3090
|
toggleLoading = false,
|
|
3130
3091
|
disabled = false
|
|
3131
|
-
}) => /* @__PURE__ */
|
|
3092
|
+
}) => /* @__PURE__ */ import_react43.default.createElement(
|
|
3132
3093
|
"div",
|
|
3133
3094
|
{
|
|
3134
3095
|
onClick: disabled ? void 0 : onClick,
|
|
3135
3096
|
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
|
|
3136
3097
|
},
|
|
3137
|
-
/* @__PURE__ */
|
|
3138
|
-
/* @__PURE__ */
|
|
3139
|
-
isToggle ? /* @__PURE__ */
|
|
3098
|
+
/* @__PURE__ */ import_react43.default.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
3099
|
+
/* @__PURE__ */ import_react43.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react43.default.createElement("p", { className: `text-[14px] truncate ${titleColor}` }, title), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-[12px] text-neutral-500 truncate" }, subtitle)),
|
|
3100
|
+
isToggle ? /* @__PURE__ */ import_react43.default.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-neutral-200"} ${disabled ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react43.default.createElement("div", { className: `absolute top-1 left-1 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300 flex items-center justify-center ${toggleState ? "translate-x-5" : "translate-x-0"}` }, toggleLoading && /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons15.Loading03Icon, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: import_core_free_icons15.ArrowRight01Icon, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
3140
3101
|
);
|
|
3141
3102
|
|
|
3142
3103
|
// src/components/FeatureScroll.tsx
|
|
3143
|
-
var
|
|
3104
|
+
var import_react45 = __toESM(require("react"));
|
|
3144
3105
|
var import_image3 = __toESM(require("next/image"));
|
|
3145
|
-
var
|
|
3146
|
-
var
|
|
3106
|
+
var import_react46 = require("@hugeicons/react");
|
|
3107
|
+
var import_core_free_icons16 = require("@hugeicons/core-free-icons");
|
|
3147
3108
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
3148
|
-
const [isBgLoading, setIsBgLoading] = (0,
|
|
3149
|
-
const [isFgLoading, setIsFgLoading] = (0,
|
|
3150
|
-
return /* @__PURE__ */
|
|
3109
|
+
const [isBgLoading, setIsBgLoading] = (0, import_react45.useState)(true);
|
|
3110
|
+
const [isFgLoading, setIsFgLoading] = (0, import_react45.useState)(!!feature.image);
|
|
3111
|
+
return /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-100 rounded-2xl overflow-hidden mb-6 flex items-center justify-center" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
3151
3112
|
import_image3.default,
|
|
3152
3113
|
{
|
|
3153
3114
|
src: bgImage,
|
|
@@ -3160,7 +3121,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3160
3121
|
${isBgLoading ? "blur-xl scale-110" : "blur-0 scale-100"}
|
|
3161
3122
|
`
|
|
3162
3123
|
}
|
|
3163
|
-
), /* @__PURE__ */
|
|
3124
|
+
), /* @__PURE__ */ import_react45.default.createElement(
|
|
3164
3125
|
"div",
|
|
3165
3126
|
{
|
|
3166
3127
|
className: "absolute inset-0 w-full h-full pointer-events-none z-0 opacity-[0.25] mix-blend-overlay",
|
|
@@ -3168,7 +3129,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3168
3129
|
backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")`
|
|
3169
3130
|
}
|
|
3170
3131
|
}
|
|
3171
|
-
), isFgLoading && feature.image && /* @__PURE__ */
|
|
3132
|
+
), isFgLoading && feature.image && /* @__PURE__ */ import_react45.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-50/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.Loading03Icon, size: 32, className: "animate-spin text-neutral-400" })), feature.image && /* @__PURE__ */ import_react45.default.createElement("div", { className: "absolute -bottom-6 -right-6 w-[85%] h-[85%] z-10 transition-transform duration-700 ease-out group-hover:-translate-x-2 group-hover:-translate-y-2" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
3172
3133
|
import_image3.default,
|
|
3173
3134
|
{
|
|
3174
3135
|
src: feature.image,
|
|
@@ -3181,12 +3142,12 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3181
3142
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
3182
3143
|
`
|
|
3183
3144
|
}
|
|
3184
|
-
))), /* @__PURE__ */
|
|
3145
|
+
))), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ import_react45.default.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 max-w-[90%]" }, feature.desc)));
|
|
3185
3146
|
};
|
|
3186
3147
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
3187
|
-
const scrollRef = (0,
|
|
3188
|
-
const [canScrollLeft, setCanScrollLeft] = (0,
|
|
3189
|
-
const [canScrollRight, setCanScrollRight] = (0,
|
|
3148
|
+
const scrollRef = (0, import_react45.useRef)(null);
|
|
3149
|
+
const [canScrollLeft, setCanScrollLeft] = (0, import_react45.useState)(false);
|
|
3150
|
+
const [canScrollRight, setCanScrollRight] = (0, import_react45.useState)(true);
|
|
3190
3151
|
const checkScroll = () => {
|
|
3191
3152
|
if (scrollRef.current) {
|
|
3192
3153
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -3194,7 +3155,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3194
3155
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
3195
3156
|
}
|
|
3196
3157
|
};
|
|
3197
|
-
(0,
|
|
3158
|
+
(0, import_react45.useEffect)(() => {
|
|
3198
3159
|
checkScroll();
|
|
3199
3160
|
window.addEventListener("resize", checkScroll);
|
|
3200
3161
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -3210,72 +3171,72 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3210
3171
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
3211
3172
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
3212
3173
|
];
|
|
3213
|
-
return /* @__PURE__ */
|
|
3174
|
+
return /* @__PURE__ */ import_react45.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react45.default.createElement("h2", { className: " text-3xl tracking-tight text-black leading-[1.05]" }, headline)), /* @__PURE__ */ import_react45.default.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
3214
3175
|
"button",
|
|
3215
3176
|
{
|
|
3216
3177
|
onClick: () => scroll("left"),
|
|
3217
3178
|
disabled: !canScrollLeft,
|
|
3218
3179
|
className: "p-4 border border-neutral-200 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:hover:border-neutral-200 disabled:hover:text-neutral-500 disabled:cursor-not-allowed transition-all outline-none"
|
|
3219
3180
|
},
|
|
3220
|
-
/* @__PURE__ */
|
|
3221
|
-
), /* @__PURE__ */
|
|
3181
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowLeft01Icon, size: 20 })
|
|
3182
|
+
), /* @__PURE__ */ import_react45.default.createElement(
|
|
3222
3183
|
"button",
|
|
3223
3184
|
{
|
|
3224
3185
|
onClick: () => scroll("right"),
|
|
3225
3186
|
disabled: !canScrollRight,
|
|
3226
3187
|
className: "p-4 border border-neutral-200 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 disabled:hover:border-neutral-200 disabled:hover:text-neutral-500 disabled:cursor-not-allowed transition-all outline-none"
|
|
3227
3188
|
},
|
|
3228
|
-
/* @__PURE__ */
|
|
3229
|
-
))), /* @__PURE__ */
|
|
3189
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 20 })
|
|
3190
|
+
))), /* @__PURE__ */ import_react45.default.createElement(
|
|
3230
3191
|
"div",
|
|
3231
3192
|
{
|
|
3232
3193
|
ref: scrollRef,
|
|
3233
3194
|
onScroll: checkScroll,
|
|
3234
3195
|
className: "flex gap-6 overflow-x-auto snap-x snap-mandatory [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] scrollbar-none pb-8 -mx-4 px-4 md:mx-0 md:px-0"
|
|
3235
3196
|
},
|
|
3236
|
-
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */
|
|
3237
|
-
), /* @__PURE__ */
|
|
3197
|
+
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ import_react45.default.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
|
|
3198
|
+
), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
3238
3199
|
"button",
|
|
3239
3200
|
{
|
|
3240
3201
|
onClick: () => scroll("left"),
|
|
3241
3202
|
disabled: !canScrollLeft,
|
|
3242
3203
|
className: "p-4 border border-neutral-200 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 transition-all outline-none"
|
|
3243
3204
|
},
|
|
3244
|
-
/* @__PURE__ */
|
|
3245
|
-
), /* @__PURE__ */
|
|
3205
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowLeft01Icon, size: 20 })
|
|
3206
|
+
), /* @__PURE__ */ import_react45.default.createElement(
|
|
3246
3207
|
"button",
|
|
3247
3208
|
{
|
|
3248
3209
|
onClick: () => scroll("right"),
|
|
3249
3210
|
disabled: !canScrollRight,
|
|
3250
3211
|
className: "p-4 border border-neutral-200 rounded-full text-neutral-500 hover:text-black hover:border-black disabled:opacity-30 transition-all outline-none"
|
|
3251
3212
|
},
|
|
3252
|
-
/* @__PURE__ */
|
|
3213
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 20 })
|
|
3253
3214
|
))));
|
|
3254
3215
|
};
|
|
3255
3216
|
|
|
3256
3217
|
// src/components/PlatformFeatures.tsx
|
|
3257
|
-
var
|
|
3258
|
-
var
|
|
3218
|
+
var import_react47 = __toESM(require("react"));
|
|
3219
|
+
var import_react48 = require("@hugeicons/react");
|
|
3259
3220
|
var PlatformFeatures = ({
|
|
3260
3221
|
tagline,
|
|
3261
3222
|
headline,
|
|
3262
3223
|
description,
|
|
3263
3224
|
features
|
|
3264
3225
|
}) => {
|
|
3265
|
-
return /* @__PURE__ */
|
|
3226
|
+
return /* @__PURE__ */ import_react47.default.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ import_react47.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react47.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.05] mb-6" }, headline), /* @__PURE__ */ import_react47.default.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-600 max-w-2xl" }, description)), /* @__PURE__ */ import_react47.default.createElement("div", { className: "w-full h-px bg-neutral-100 mb-16", "aria-hidden": "true" }), /* @__PURE__ */ import_react47.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-12" }, features.map((feature, idx) => /* @__PURE__ */ import_react47.default.createElement(
|
|
3266
3227
|
"div",
|
|
3267
3228
|
{
|
|
3268
3229
|
key: idx,
|
|
3269
3230
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
3270
3231
|
style: { animationDelay: feature.delay || "0ms" }
|
|
3271
3232
|
},
|
|
3272
|
-
/* @__PURE__ */
|
|
3273
|
-
/* @__PURE__ */
|
|
3233
|
+
/* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-200 flex items-center justify-center text-neutral-600 transition-colors duration-300" }, /* @__PURE__ */ import_react47.default.createElement(import_react48.HugeiconsIcon, { icon: feature.icon, size: 24 })), /* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react47.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ import_react47.default.createElement("h3", { className: "text-xl tracking-tight text-black" }, feature.title))),
|
|
3234
|
+
/* @__PURE__ */ import_react47.default.createElement("div", null, /* @__PURE__ */ import_react47.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
3274
3235
|
)))));
|
|
3275
3236
|
};
|
|
3276
3237
|
|
|
3277
3238
|
// src/components/ManagedDocument.tsx
|
|
3278
|
-
var
|
|
3239
|
+
var import_react49 = __toESM(require("react"));
|
|
3279
3240
|
var ManagedDocument = ({
|
|
3280
3241
|
tagline,
|
|
3281
3242
|
title,
|
|
@@ -3283,9 +3244,9 @@ var ManagedDocument = ({
|
|
|
3283
3244
|
contactText,
|
|
3284
3245
|
contactEmail
|
|
3285
3246
|
}) => {
|
|
3286
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
3287
|
-
const titleRef = (0,
|
|
3288
|
-
(0,
|
|
3247
|
+
const [isAnimating, setIsAnimating] = (0, import_react49.useState)(false);
|
|
3248
|
+
const titleRef = (0, import_react49.useRef)(null);
|
|
3249
|
+
(0, import_react49.useEffect)(() => {
|
|
3289
3250
|
const observer = new IntersectionObserver(
|
|
3290
3251
|
([entry]) => {
|
|
3291
3252
|
if (entry.isIntersecting) {
|
|
@@ -3305,7 +3266,7 @@ var ManagedDocument = ({
|
|
|
3305
3266
|
}, []);
|
|
3306
3267
|
return (
|
|
3307
3268
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
3308
|
-
/* @__PURE__ */
|
|
3269
|
+
/* @__PURE__ */ import_react49.default.createElement("div", { className: "grow pt-4 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react49.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react49.default.createElement(
|
|
3309
3270
|
"h1",
|
|
3310
3271
|
{
|
|
3311
3272
|
ref: titleRef,
|
|
@@ -3313,7 +3274,7 @@ var ManagedDocument = ({
|
|
|
3313
3274
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3314
3275
|
},
|
|
3315
3276
|
title
|
|
3316
|
-
)), sections.map((section, index) => /* @__PURE__ */
|
|
3277
|
+
)), sections.map((section, index) => /* @__PURE__ */ import_react49.default.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ import_react49.default.createElement("p", { className: " text-[11px] tracking-[0.2em] text-black mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ import_react49.default.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-700 space-y-4 text-left " }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ import_react49.default.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ import_react49.default.createElement("div", { className: `border-neutral-200 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ import_react49.default.createElement("p", { className: "text-neutral-900 text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react49.default.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react49.default.createElement(
|
|
3317
3278
|
"a",
|
|
3318
3279
|
{
|
|
3319
3280
|
href: `mailto:${contactEmail}`,
|
|
@@ -3325,18 +3286,18 @@ var ManagedDocument = ({
|
|
|
3325
3286
|
};
|
|
3326
3287
|
|
|
3327
3288
|
// src/components/ManagedContactBlock.tsx
|
|
3328
|
-
var
|
|
3329
|
-
var
|
|
3289
|
+
var import_react50 = __toESM(require("react"));
|
|
3290
|
+
var import_react51 = require("@hugeicons/react");
|
|
3330
3291
|
var SecureEmail = ({ user, domain, className }) => {
|
|
3331
|
-
const [isMounted, setIsMounted] = (0,
|
|
3332
|
-
(0,
|
|
3292
|
+
const [isMounted, setIsMounted] = (0, import_react50.useState)(false);
|
|
3293
|
+
(0, import_react50.useEffect)(() => {
|
|
3333
3294
|
setIsMounted(true);
|
|
3334
3295
|
}, []);
|
|
3335
3296
|
if (!isMounted) {
|
|
3336
|
-
return /* @__PURE__ */
|
|
3297
|
+
return /* @__PURE__ */ import_react50.default.createElement("span", { className, style: { opacity: 0 } }, "Loading");
|
|
3337
3298
|
}
|
|
3338
3299
|
const email = `${user}@${domain}`;
|
|
3339
|
-
return /* @__PURE__ */
|
|
3300
|
+
return /* @__PURE__ */ import_react50.default.createElement("a", { href: `mailto:${email}`, className }, email);
|
|
3340
3301
|
};
|
|
3341
3302
|
var ManagedContactBlock = ({
|
|
3342
3303
|
tagline,
|
|
@@ -3345,7 +3306,7 @@ var ManagedContactBlock = ({
|
|
|
3345
3306
|
emails,
|
|
3346
3307
|
socials
|
|
3347
3308
|
}) => {
|
|
3348
|
-
return /* @__PURE__ */
|
|
3309
|
+
return /* @__PURE__ */ import_react50.default.createElement("div", { className: "grow pt-4 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react50.default.createElement(
|
|
3349
3310
|
"div",
|
|
3350
3311
|
{
|
|
3351
3312
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3354,21 +3315,21 @@ var ManagedContactBlock = ({
|
|
|
3354
3315
|
backgroundRepeat: "repeat"
|
|
3355
3316
|
}
|
|
3356
3317
|
}
|
|
3357
|
-
), /* @__PURE__ */
|
|
3318
|
+
), /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react50.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Contact Details"), /* @__PURE__ */ import_react50.default.createElement("div", { className: "space-y-3 text-[13px] text-neutral-600 leading-[1.8]" }, company.name && /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-black" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ import_react50.default.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ import_react50.default.createElement("p", { className: "pt-2" }, /* @__PURE__ */ import_react50.default.createElement(
|
|
3358
3319
|
"a",
|
|
3359
3320
|
{
|
|
3360
3321
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
3361
3322
|
className: "transition-colors hover:text-black"
|
|
3362
3323
|
},
|
|
3363
3324
|
company.phone
|
|
3364
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */
|
|
3325
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Email Directory"), /* @__PURE__ */ import_react50.default.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ import_react50.default.createElement("div", { key: idx }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ import_react50.default.createElement(
|
|
3365
3326
|
SecureEmail,
|
|
3366
3327
|
{
|
|
3367
3328
|
user: email.user,
|
|
3368
3329
|
domain: email.domain,
|
|
3369
3330
|
className: "text-neutral-600 transition-colors hover:text-black"
|
|
3370
3331
|
}
|
|
3371
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */
|
|
3332
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Find Us Online"), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ import_react50.default.createElement(
|
|
3372
3333
|
"a",
|
|
3373
3334
|
{
|
|
3374
3335
|
key: idx,
|
|
@@ -3377,27 +3338,27 @@ var ManagedContactBlock = ({
|
|
|
3377
3338
|
rel: "noopener noreferrer",
|
|
3378
3339
|
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black"
|
|
3379
3340
|
},
|
|
3380
|
-
/* @__PURE__ */
|
|
3381
|
-
/* @__PURE__ */
|
|
3341
|
+
/* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: social.icon, size: 18 }),
|
|
3342
|
+
/* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[13px]" }, social.label)
|
|
3382
3343
|
)))))))));
|
|
3383
3344
|
};
|
|
3384
3345
|
|
|
3385
3346
|
// src/components/ManagedPricingBlock.tsx
|
|
3386
|
-
var
|
|
3347
|
+
var import_react52 = __toESM(require("react"));
|
|
3387
3348
|
var import_link7 = __toESM(require("next/link"));
|
|
3388
3349
|
var import_image4 = __toESM(require("next/image"));
|
|
3389
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */
|
|
3390
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */
|
|
3350
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ import_react52.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react52.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ import_react52.default.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
3351
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ import_react52.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react52.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ import_react52.default.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
3391
3352
|
var ManagedPricingBlock = ({
|
|
3392
3353
|
tagline,
|
|
3393
3354
|
title,
|
|
3394
3355
|
plans = [],
|
|
3395
3356
|
tabs
|
|
3396
3357
|
}) => {
|
|
3397
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
3398
|
-
const [activeTabIndex, setActiveTabIndex] = (0,
|
|
3399
|
-
const titleRef = (0,
|
|
3400
|
-
(0,
|
|
3358
|
+
const [isAnimating, setIsAnimating] = (0, import_react52.useState)(false);
|
|
3359
|
+
const [activeTabIndex, setActiveTabIndex] = (0, import_react52.useState)(0);
|
|
3360
|
+
const titleRef = (0, import_react52.useRef)(null);
|
|
3361
|
+
(0, import_react52.useEffect)(() => {
|
|
3401
3362
|
const observer = new IntersectionObserver(
|
|
3402
3363
|
([entry]) => {
|
|
3403
3364
|
if (entry.isIntersecting) {
|
|
@@ -3417,7 +3378,7 @@ var ManagedPricingBlock = ({
|
|
|
3417
3378
|
}, []);
|
|
3418
3379
|
const hasTabs = tabs && tabs.length > 0;
|
|
3419
3380
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
3420
|
-
return /* @__PURE__ */
|
|
3381
|
+
return /* @__PURE__ */ import_react52.default.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-[9px] tracking-[0.4em] text-black block " }, tagline), /* @__PURE__ */ import_react52.default.createElement(
|
|
3421
3382
|
"h1",
|
|
3422
3383
|
{
|
|
3423
3384
|
ref: titleRef,
|
|
@@ -3425,9 +3386,9 @@ var ManagedPricingBlock = ({
|
|
|
3425
3386
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3426
3387
|
},
|
|
3427
3388
|
title
|
|
3428
|
-
)), hasTabs && /* @__PURE__ */
|
|
3389
|
+
)), hasTabs && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react52.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" }, tabs.map((tab, idx) => {
|
|
3429
3390
|
const isActive = activeTabIndex === idx;
|
|
3430
|
-
return /* @__PURE__ */
|
|
3391
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
3431
3392
|
"button",
|
|
3432
3393
|
{
|
|
3433
3394
|
key: idx,
|
|
@@ -3436,19 +3397,19 @@ var ManagedPricingBlock = ({
|
|
|
3436
3397
|
},
|
|
3437
3398
|
tab.label
|
|
3438
3399
|
);
|
|
3439
|
-
}))), /* @__PURE__ */
|
|
3400
|
+
}))), /* @__PURE__ */ import_react52.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-3xl animate-in slide-in-from-bottom-2 fade-in duration-500" }, currentPlans.map((plan, planIdx) => /* @__PURE__ */ import_react52.default.createElement(
|
|
3440
3401
|
"div",
|
|
3441
3402
|
{
|
|
3442
3403
|
key: `${activeTabIndex}-${planIdx}`,
|
|
3443
3404
|
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
3444
3405
|
},
|
|
3445
|
-
/* @__PURE__ */
|
|
3406
|
+
/* @__PURE__ */ import_react52.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react52.default.createElement("h3", { className: "text-3xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ import_react52.default.createElement(
|
|
3446
3407
|
"div",
|
|
3447
3408
|
{
|
|
3448
3409
|
key: logoIdx,
|
|
3449
3410
|
className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
|
|
3450
3411
|
},
|
|
3451
|
-
/* @__PURE__ */
|
|
3412
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
3452
3413
|
import_image4.default,
|
|
3453
3414
|
{
|
|
3454
3415
|
src: logo.src,
|
|
@@ -3459,7 +3420,7 @@ var ManagedPricingBlock = ({
|
|
|
3459
3420
|
}
|
|
3460
3421
|
)
|
|
3461
3422
|
)))),
|
|
3462
|
-
plan.isPremium ? /* @__PURE__ */
|
|
3423
|
+
plan.isPremium ? /* @__PURE__ */ import_react52.default.createElement(ThreeDButton, { href: plan.ctaHref, className: "mb-6 w-full" }, plan.ctaText) : /* @__PURE__ */ import_react52.default.createElement(
|
|
3463
3424
|
import_link7.default,
|
|
3464
3425
|
{
|
|
3465
3426
|
href: plan.ctaHref,
|
|
@@ -3467,20 +3428,20 @@ var ManagedPricingBlock = ({
|
|
|
3467
3428
|
},
|
|
3468
3429
|
plan.ctaText
|
|
3469
3430
|
),
|
|
3470
|
-
/* @__PURE__ */
|
|
3431
|
+
/* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
3471
3432
|
const isAvailable = feature.value !== false;
|
|
3472
3433
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
3473
|
-
return /* @__PURE__ */
|
|
3434
|
+
return /* @__PURE__ */ import_react52.default.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ import_react52.default.createElement(CheckIcon, null) : /* @__PURE__ */ import_react52.default.createElement(CrossIcon, null), /* @__PURE__ */ import_react52.default.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
3474
3435
|
}))
|
|
3475
3436
|
)))));
|
|
3476
3437
|
};
|
|
3477
3438
|
|
|
3478
3439
|
// src/components/ManagedBoardBlock.tsx
|
|
3479
|
-
var
|
|
3440
|
+
var import_react53 = __toESM(require("react"));
|
|
3480
3441
|
var import_image5 = __toESM(require("next/image"));
|
|
3481
|
-
var
|
|
3482
|
-
var
|
|
3483
|
-
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */
|
|
3442
|
+
var import_react54 = require("@hugeicons/react");
|
|
3443
|
+
var import_core_free_icons17 = require("@hugeicons/core-free-icons");
|
|
3444
|
+
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_react53.default.createElement(
|
|
3484
3445
|
"a",
|
|
3485
3446
|
{
|
|
3486
3447
|
href,
|
|
@@ -3488,7 +3449,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_r
|
|
|
3488
3449
|
rel: "noopener noreferrer",
|
|
3489
3450
|
className: "text-neutral-400 hover:text-black transition-colors"
|
|
3490
3451
|
},
|
|
3491
|
-
/* @__PURE__ */
|
|
3452
|
+
/* @__PURE__ */ import_react53.default.createElement(import_react54.HugeiconsIcon, { icon, size: 16 })
|
|
3492
3453
|
);
|
|
3493
3454
|
var ManagedBoardBlock = ({
|
|
3494
3455
|
tagline,
|
|
@@ -3497,7 +3458,7 @@ var ManagedBoardBlock = ({
|
|
|
3497
3458
|
contactText,
|
|
3498
3459
|
contactEmail
|
|
3499
3460
|
}) => {
|
|
3500
|
-
return /* @__PURE__ */
|
|
3461
|
+
return /* @__PURE__ */ import_react53.default.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
3501
3462
|
"div",
|
|
3502
3463
|
{
|
|
3503
3464
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3506,7 +3467,7 @@ var ManagedBoardBlock = ({
|
|
|
3506
3467
|
backgroundRepeat: "repeat"
|
|
3507
3468
|
}
|
|
3508
3469
|
}
|
|
3509
|
-
), /* @__PURE__ */
|
|
3470
|
+
), /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react53.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react53.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5 md:gap-8" }, members.map((member, idx) => /* @__PURE__ */ import_react53.default.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-white flex flex-col transition-all group" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-white overflow-hidden rounded-xl" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
3510
3471
|
import_image5.default,
|
|
3511
3472
|
{
|
|
3512
3473
|
src: member.imageSrc,
|
|
@@ -3515,44 +3476,44 @@ var ManagedBoardBlock = ({
|
|
|
3515
3476
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
3516
3477
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
3517
3478
|
}
|
|
3518
|
-
)), /* @__PURE__ */
|
|
3479
|
+
)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "pt-1" }, /* @__PURE__ */ import_react53.default.createElement("h3", { className: " text-[14px] md:text-[15px] text-black tracking-tight" }, member.name), /* @__PURE__ */ import_react53.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ import_react53.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 text-left grow mb-8" }, member.bio), /* @__PURE__ */ import_react53.default.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react53.default.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ import_react53.default.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ import_react53.default.createElement(
|
|
3519
3480
|
MemberSocialLink,
|
|
3520
3481
|
{
|
|
3521
3482
|
href: `https://x.com/${member.twitterHandle}`,
|
|
3522
|
-
icon:
|
|
3483
|
+
icon: import_core_free_icons17.TwitterIcon,
|
|
3523
3484
|
label: "X",
|
|
3524
3485
|
name: member.name
|
|
3525
3486
|
}
|
|
3526
|
-
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */
|
|
3487
|
+
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */ import_react53.default.createElement(
|
|
3527
3488
|
MemberSocialLink,
|
|
3528
3489
|
{
|
|
3529
3490
|
href: member.linkedinHandle,
|
|
3530
|
-
icon:
|
|
3491
|
+
icon: import_core_free_icons17.LinkedinIcon,
|
|
3531
3492
|
label: "LinkedIn",
|
|
3532
3493
|
name: member.name
|
|
3533
3494
|
}
|
|
3534
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */
|
|
3495
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react53.default.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react53.default.createElement("a", { href: `mailto:${contactEmail}`, className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
3535
3496
|
};
|
|
3536
3497
|
|
|
3537
3498
|
// src/components/ManagedNotFoundBlock.tsx
|
|
3538
|
-
var
|
|
3499
|
+
var import_react55 = __toESM(require("react"));
|
|
3539
3500
|
var ManagedNotFoundBlock = ({
|
|
3540
3501
|
title = "404 - Page Not Found",
|
|
3541
3502
|
description = "The page you are looking for does not exist or has been moved."
|
|
3542
3503
|
}) => {
|
|
3543
|
-
return /* @__PURE__ */
|
|
3504
|
+
return /* @__PURE__ */ import_react55.default.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-transparent" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
3544
3505
|
"svg",
|
|
3545
3506
|
{
|
|
3546
3507
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3547
3508
|
viewBox: "0 0 24 24",
|
|
3548
3509
|
className: "w-12 h-12 fill-neutral-100"
|
|
3549
3510
|
},
|
|
3550
|
-
/* @__PURE__ */
|
|
3551
|
-
)), /* @__PURE__ */
|
|
3511
|
+
/* @__PURE__ */ import_react55.default.createElement("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" })
|
|
3512
|
+
)), /* @__PURE__ */ import_react55.default.createElement("h1", { className: " text-xl md:text-3xl text-black tracking-tight mb-4" }, title), /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-12" }, description)));
|
|
3552
3513
|
};
|
|
3553
3514
|
|
|
3554
3515
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
3555
|
-
var
|
|
3516
|
+
var import_react56 = __toESM(require("react"));
|
|
3556
3517
|
var import_image6 = __toESM(require("next/image"));
|
|
3557
3518
|
var ManagedNewsletterSplitBlock = ({
|
|
3558
3519
|
tagline,
|
|
@@ -3566,7 +3527,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3566
3527
|
ctaHref = "/contact",
|
|
3567
3528
|
children
|
|
3568
3529
|
}) => {
|
|
3569
|
-
return /* @__PURE__ */
|
|
3530
|
+
return /* @__PURE__ */ import_react56.default.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden" }, /* @__PURE__ */ import_react56.default.createElement(
|
|
3570
3531
|
import_image6.default,
|
|
3571
3532
|
{
|
|
3572
3533
|
src: imageSrc,
|
|
@@ -3576,7 +3537,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3576
3537
|
className: "object-cover object-top grayscale opacity-60",
|
|
3577
3538
|
quality: 100
|
|
3578
3539
|
}
|
|
3579
|
-
), /* @__PURE__ */
|
|
3540
|
+
), /* @__PURE__ */ import_react56.default.createElement(
|
|
3580
3541
|
"div",
|
|
3581
3542
|
{
|
|
3582
3543
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
@@ -3584,7 +3545,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3584
3545
|
background: "linear-gradient(to right, rgba(255,255,255,0) 30%, #ffffff 100%)"
|
|
3585
3546
|
}
|
|
3586
3547
|
}
|
|
3587
|
-
), /* @__PURE__ */
|
|
3548
|
+
), /* @__PURE__ */ import_react56.default.createElement(
|
|
3588
3549
|
"div",
|
|
3589
3550
|
{
|
|
3590
3551
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
@@ -3592,7 +3553,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3592
3553
|
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
3593
3554
|
}
|
|
3594
3555
|
}
|
|
3595
|
-
)), /* @__PURE__ */
|
|
3556
|
+
)), /* @__PURE__ */ import_react56.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_react56.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_react56.default.createElement(
|
|
3596
3557
|
"div",
|
|
3597
3558
|
{
|
|
3598
3559
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3601,7 +3562,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3601
3562
|
backgroundRepeat: "repeat"
|
|
3602
3563
|
}
|
|
3603
3564
|
}
|
|
3604
|
-
), /* @__PURE__ */
|
|
3565
|
+
), /* @__PURE__ */ import_react56.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "mb-10 border-b border-neutral-200 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ import_react56.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 " }, tagline), /* @__PURE__ */ import_react56.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, subtitle)), /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ import_react56.default.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ import_react56.default.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ import_react56.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "grow h-px bg-neutral-100" }), /* @__PURE__ */ import_react56.default.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-400 " }, dividerText), /* @__PURE__ */ import_react56.default.createElement("div", { className: "grow h-px bg-neutral-100" })), ctaText && ctaHref && /* @__PURE__ */ import_react56.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react56.default.createElement(
|
|
3605
3566
|
ThreeDButton,
|
|
3606
3567
|
{
|
|
3607
3568
|
href: ctaHref,
|
|
@@ -3612,14 +3573,14 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3612
3573
|
};
|
|
3613
3574
|
|
|
3614
3575
|
// src/components/PortfolioHero.tsx
|
|
3615
|
-
var
|
|
3576
|
+
var import_react57 = __toESM(require("react"));
|
|
3616
3577
|
var import_link8 = __toESM(require("next/link"));
|
|
3617
3578
|
var import_image7 = __toESM(require("next/image"));
|
|
3618
|
-
var
|
|
3619
|
-
var
|
|
3579
|
+
var import_react58 = require("@hugeicons/react");
|
|
3580
|
+
var import_core_free_icons18 = require("@hugeicons/core-free-icons");
|
|
3620
3581
|
var useScrollAnimation = () => {
|
|
3621
|
-
const elementRef = (0,
|
|
3622
|
-
(0,
|
|
3582
|
+
const elementRef = (0, import_react57.useRef)(null);
|
|
3583
|
+
(0, import_react57.useEffect)(() => {
|
|
3623
3584
|
const el = elementRef.current;
|
|
3624
3585
|
if (!el) return;
|
|
3625
3586
|
const observer = new IntersectionObserver(
|
|
@@ -3655,13 +3616,13 @@ var PortfolioHero = ({
|
|
|
3655
3616
|
secondaryCtaHref
|
|
3656
3617
|
}) => {
|
|
3657
3618
|
const heroContentRef = useScrollAnimation();
|
|
3658
|
-
return /* @__PURE__ */
|
|
3619
|
+
return /* @__PURE__ */ import_react57.default.createElement("section", { className: "pt-8 pb-16 px-6 md:px-12 flex flex-col relative overflow-hidden z-10 w-full" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
3659
3620
|
"div",
|
|
3660
3621
|
{
|
|
3661
3622
|
ref: heroContentRef,
|
|
3662
3623
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
3663
3624
|
},
|
|
3664
|
-
/* @__PURE__ */
|
|
3625
|
+
/* @__PURE__ */ import_react57.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden border border-neutral-200 shrink-0 shadow-sm" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
3665
3626
|
import_image7.default,
|
|
3666
3627
|
{
|
|
3667
3628
|
src: imageSrc,
|
|
@@ -3672,7 +3633,7 @@ var PortfolioHero = ({
|
|
|
3672
3633
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
3673
3634
|
quality: 100
|
|
3674
3635
|
}
|
|
3675
|
-
)), /* @__PURE__ */
|
|
3636
|
+
)), /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ import_react57.default.createElement("h1", { className: " text-3xl sm:text-5xl lg:text-6xl tracking-tight text-black leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ import_react57.default.createElement(
|
|
3676
3637
|
"a",
|
|
3677
3638
|
{
|
|
3678
3639
|
href: socialLinkHref,
|
|
@@ -3682,31 +3643,31 @@ var PortfolioHero = ({
|
|
|
3682
3643
|
},
|
|
3683
3644
|
socialLinkText
|
|
3684
3645
|
))),
|
|
3685
|
-
/* @__PURE__ */
|
|
3686
|
-
/* @__PURE__ */
|
|
3646
|
+
/* @__PURE__ */ import_react57.default.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-600" }, bio),
|
|
3647
|
+
/* @__PURE__ */ import_react57.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ import_react57.default.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
3687
3648
|
ThreeDButton,
|
|
3688
3649
|
{
|
|
3689
3650
|
href: primaryCtaHref,
|
|
3690
3651
|
className: "py-3 tracking-widest text-[11px]"
|
|
3691
3652
|
},
|
|
3692
3653
|
primaryCtaText
|
|
3693
|
-
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
3654
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react57.default.createElement(
|
|
3694
3655
|
import_link8.default,
|
|
3695
3656
|
{
|
|
3696
3657
|
href: secondaryCtaHref,
|
|
3697
3658
|
className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-[11px] tracking-[0.2em] rounded-full px-8 py-3.5 bg-neutral-200 transition-colors text-black hover:bg-neutral-200 outline-none"
|
|
3698
3659
|
},
|
|
3699
3660
|
secondaryCtaText,
|
|
3700
|
-
/* @__PURE__ */
|
|
3661
|
+
/* @__PURE__ */ import_react57.default.createElement(import_react58.HugeiconsIcon, { icon: import_core_free_icons18.ArrowRight01Icon, size: 16 })
|
|
3701
3662
|
))
|
|
3702
3663
|
));
|
|
3703
3664
|
};
|
|
3704
3665
|
|
|
3705
3666
|
// src/components/GifFeatureCard.tsx
|
|
3706
|
-
var
|
|
3667
|
+
var import_react59 = __toESM(require("react"));
|
|
3707
3668
|
var import_image8 = __toESM(require("next/image"));
|
|
3708
|
-
var
|
|
3709
|
-
var
|
|
3669
|
+
var import_react60 = require("@hugeicons/react");
|
|
3670
|
+
var import_core_free_icons19 = require("@hugeicons/core-free-icons");
|
|
3710
3671
|
var GifFeatureCard = ({
|
|
3711
3672
|
gifSrc,
|
|
3712
3673
|
title,
|
|
@@ -3714,20 +3675,20 @@ var GifFeatureCard = ({
|
|
|
3714
3675
|
alt = "Feature animation",
|
|
3715
3676
|
className = "aspect-video"
|
|
3716
3677
|
}) => {
|
|
3717
|
-
const [isLoading, setIsLoading] = (0,
|
|
3718
|
-
return /* @__PURE__ */
|
|
3719
|
-
|
|
3678
|
+
const [isLoading, setIsLoading] = (0, import_react59.useState)(true);
|
|
3679
|
+
return /* @__PURE__ */ import_react59.default.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ import_react59.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ import_react59.default.createElement(
|
|
3680
|
+
import_react60.HugeiconsIcon,
|
|
3720
3681
|
{
|
|
3721
|
-
icon:
|
|
3682
|
+
icon: import_core_free_icons19.Loading03Icon,
|
|
3722
3683
|
size: 32,
|
|
3723
3684
|
className: "animate-spin text-white"
|
|
3724
3685
|
}
|
|
3725
|
-
)), /* @__PURE__ */
|
|
3686
|
+
)), /* @__PURE__ */ import_react59.default.createElement(
|
|
3726
3687
|
"div",
|
|
3727
3688
|
{
|
|
3728
3689
|
className: `absolute inset-0 z-0 transition-all duration-1000 ease-out ${isLoading ? "scale-105 blur-2xl opacity-0" : "scale-100 blur-0 opacity-100"}`
|
|
3729
3690
|
},
|
|
3730
|
-
/* @__PURE__ */
|
|
3691
|
+
/* @__PURE__ */ import_react59.default.createElement(
|
|
3731
3692
|
import_image8.default,
|
|
3732
3693
|
{
|
|
3733
3694
|
src: gifSrc,
|
|
@@ -3738,16 +3699,16 @@ var GifFeatureCard = ({
|
|
|
3738
3699
|
className: "object-cover object-center pointer-events-none"
|
|
3739
3700
|
}
|
|
3740
3701
|
)
|
|
3741
|
-
), /* @__PURE__ */
|
|
3702
|
+
), /* @__PURE__ */ import_react59.default.createElement(
|
|
3742
3703
|
"div",
|
|
3743
3704
|
{
|
|
3744
3705
|
className: "absolute inset-x-0 bottom-0 h-1/2 sm:h-2/3 bg-linear-to-t from-black/95 via-black/40 to-transparent z-10 pointer-events-none transition-opacity duration-700"
|
|
3745
3706
|
}
|
|
3746
|
-
), /* @__PURE__ */
|
|
3707
|
+
), /* @__PURE__ */ import_react59.default.createElement("div", { className: "absolute inset-x-0 bottom-0 p-6 sm:p-8 z-30 flex flex-col justify-end text-left pointer-events-none" }, title && /* @__PURE__ */ import_react59.default.createElement("h3", { className: " text-xl sm:text-2xl md:text-3xl text-white tracking-tight mb-2 sm:mb-3 drop-shadow-md" }, title), subtitle && /* @__PURE__ */ import_react59.default.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
3747
3708
|
};
|
|
3748
3709
|
|
|
3749
3710
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
3750
|
-
var
|
|
3711
|
+
var import_react61 = __toESM(require("react"));
|
|
3751
3712
|
var import_image9 = __toESM(require("next/image"));
|
|
3752
3713
|
var MedicalFeatureStatsBlock = ({
|
|
3753
3714
|
bottomHeadline,
|
|
@@ -3756,9 +3717,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3756
3717
|
trustText,
|
|
3757
3718
|
stats
|
|
3758
3719
|
}) => {
|
|
3759
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
3760
|
-
const titleRef = (0,
|
|
3761
|
-
(0,
|
|
3720
|
+
const [isAnimating, setIsAnimating] = (0, import_react61.useState)(false);
|
|
3721
|
+
const titleRef = (0, import_react61.useRef)(null);
|
|
3722
|
+
(0, import_react61.useEffect)(() => {
|
|
3762
3723
|
const observer = new IntersectionObserver(
|
|
3763
3724
|
([entry]) => {
|
|
3764
3725
|
if (entry.isIntersecting) {
|
|
@@ -3776,7 +3737,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3776
3737
|
}
|
|
3777
3738
|
return () => observer.disconnect();
|
|
3778
3739
|
}, []);
|
|
3779
|
-
return /* @__PURE__ */
|
|
3740
|
+
return /* @__PURE__ */ import_react61.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ import_react61.default.createElement(
|
|
3780
3741
|
"h2",
|
|
3781
3742
|
{
|
|
3782
3743
|
ref: titleRef,
|
|
@@ -3784,7 +3745,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3784
3745
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3785
3746
|
},
|
|
3786
3747
|
bottomHeadline
|
|
3787
|
-
), /* @__PURE__ */
|
|
3748
|
+
), /* @__PURE__ */ import_react61.default.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ import_react61.default.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-white overflow-hidden bg-neutral-100 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ import_react61.default.createElement(
|
|
3788
3749
|
import_image9.default,
|
|
3789
3750
|
{
|
|
3790
3751
|
src,
|
|
@@ -3793,17 +3754,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3793
3754
|
sizes: "48px",
|
|
3794
3755
|
className: "object-cover"
|
|
3795
3756
|
}
|
|
3796
|
-
)))), /* @__PURE__ */
|
|
3757
|
+
)))), /* @__PURE__ */ import_react61.default.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react61.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react61.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ import_react61.default.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react61.default.createElement("h1", { className: "text-6xl gradient-text md:text-[80px] tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
|
|
3797
3758
|
};
|
|
3798
3759
|
|
|
3799
3760
|
// src/components/ConsultantShowcase.tsx
|
|
3800
|
-
var
|
|
3761
|
+
var import_react62 = __toESM(require("react"));
|
|
3801
3762
|
var import_image10 = __toESM(require("next/image"));
|
|
3802
|
-
var
|
|
3803
|
-
var
|
|
3763
|
+
var import_react63 = require("@hugeicons/react");
|
|
3764
|
+
var import_core_free_icons20 = require("@hugeicons/core-free-icons");
|
|
3804
3765
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3805
|
-
const [isLoading, setIsLoading] = (0,
|
|
3806
|
-
return /* @__PURE__ */
|
|
3766
|
+
const [isLoading, setIsLoading] = (0, import_react62.useState)(true);
|
|
3767
|
+
return /* @__PURE__ */ import_react62.default.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ import_react62.default.createElement(import_react63.HugeiconsIcon, { icon: import_core_free_icons20.Loading03Icon, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ import_react62.default.createElement(
|
|
3807
3768
|
import_image10.default,
|
|
3808
3769
|
{
|
|
3809
3770
|
src,
|
|
@@ -3822,9 +3783,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
3822
3783
|
var ConsultantShowcase = ({
|
|
3823
3784
|
profiles
|
|
3824
3785
|
}) => {
|
|
3825
|
-
const [currentIndex, setCurrentIndex] = (0,
|
|
3826
|
-
const [touchStart, setTouchStart] = (0,
|
|
3827
|
-
const [touchEnd, setTouchEnd] = (0,
|
|
3786
|
+
const [currentIndex, setCurrentIndex] = (0, import_react62.useState)(0);
|
|
3787
|
+
const [touchStart, setTouchStart] = (0, import_react62.useState)(null);
|
|
3788
|
+
const [touchEnd, setTouchEnd] = (0, import_react62.useState)(null);
|
|
3828
3789
|
const nextSlide = () => {
|
|
3829
3790
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
3830
3791
|
};
|
|
@@ -3849,7 +3810,7 @@ var ConsultantShowcase = ({
|
|
|
3849
3810
|
}
|
|
3850
3811
|
};
|
|
3851
3812
|
if (!profiles || profiles.length === 0) return null;
|
|
3852
|
-
return /* @__PURE__ */
|
|
3813
|
+
return /* @__PURE__ */ import_react62.default.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react62.default.createElement(
|
|
3853
3814
|
"div",
|
|
3854
3815
|
{
|
|
3855
3816
|
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
@@ -3859,13 +3820,13 @@ var ConsultantShowcase = ({
|
|
|
3859
3820
|
},
|
|
3860
3821
|
profiles.map((profile, idx) => {
|
|
3861
3822
|
const isActive = idx === currentIndex;
|
|
3862
|
-
return /* @__PURE__ */
|
|
3823
|
+
return /* @__PURE__ */ import_react62.default.createElement(
|
|
3863
3824
|
"div",
|
|
3864
3825
|
{
|
|
3865
3826
|
key: profile.id,
|
|
3866
3827
|
className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
|
|
3867
3828
|
},
|
|
3868
|
-
/* @__PURE__ */
|
|
3829
|
+
/* @__PURE__ */ import_react62.default.createElement(
|
|
3869
3830
|
ImageWithLoader,
|
|
3870
3831
|
{
|
|
3871
3832
|
src: profile.imageSrc,
|
|
@@ -3873,14 +3834,14 @@ var ConsultantShowcase = ({
|
|
|
3873
3834
|
priority: idx === 0
|
|
3874
3835
|
}
|
|
3875
3836
|
),
|
|
3876
|
-
/* @__PURE__ */
|
|
3877
|
-
/* @__PURE__ */
|
|
3878
|
-
/* @__PURE__ */
|
|
3837
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
3838
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/30 to-transparent z-20 pointer-events-none" }),
|
|
3839
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ import_react62.default.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[15px] text-white/80 tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[15px] text-white/80 tracking-wide mt-1" }, profile.description)))
|
|
3879
3840
|
);
|
|
3880
3841
|
}),
|
|
3881
|
-
/* @__PURE__ */
|
|
3882
|
-
/* @__PURE__ */
|
|
3883
|
-
/* @__PURE__ */
|
|
3842
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide }),
|
|
3843
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide }),
|
|
3844
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute bottom-6 md:bottom-8 left-0 w-full px-4 z-30 flex justify-center items-center gap-2" }, profiles.map((_, idx) => /* @__PURE__ */ import_react62.default.createElement(
|
|
3884
3845
|
"button",
|
|
3885
3846
|
{
|
|
3886
3847
|
key: idx,
|
|
@@ -3892,13 +3853,13 @@ var ConsultantShowcase = ({
|
|
|
3892
3853
|
};
|
|
3893
3854
|
|
|
3894
3855
|
// src/components/ContentGridBlock.tsx
|
|
3895
|
-
var
|
|
3856
|
+
var import_react64 = __toESM(require("react"));
|
|
3896
3857
|
var import_image11 = __toESM(require("next/image"));
|
|
3897
|
-
var
|
|
3898
|
-
var
|
|
3858
|
+
var import_react65 = require("@hugeicons/react");
|
|
3859
|
+
var import_core_free_icons21 = require("@hugeicons/core-free-icons");
|
|
3899
3860
|
var ImageWithLoader2 = ({ src, alt, className, sizes }) => {
|
|
3900
|
-
const [isLoading, setIsLoading] = (0,
|
|
3901
|
-
return /* @__PURE__ */
|
|
3861
|
+
const [isLoading, setIsLoading] = (0, import_react64.useState)(true);
|
|
3862
|
+
return /* @__PURE__ */ import_react64.default.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-100/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react64.default.createElement(import_react65.HugeiconsIcon, { icon: import_core_free_icons21.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react64.default.createElement(
|
|
3902
3863
|
import_image11.default,
|
|
3903
3864
|
{
|
|
3904
3865
|
src,
|
|
@@ -3920,30 +3881,30 @@ var ContentGridBlock = ({
|
|
|
3920
3881
|
middleBottomCard,
|
|
3921
3882
|
rightCards
|
|
3922
3883
|
}) => {
|
|
3923
|
-
return /* @__PURE__ */
|
|
3884
|
+
return /* @__PURE__ */ import_react64.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react64.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react64.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react64.default.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react64.default.createElement("div", null, /* @__PURE__ */ import_react64.default.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ import_react64.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react64.default.createElement(import_image11.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react64.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react64.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ import_react64.default.createElement(import_image11.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react64.default.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-50/50 border border-neutral-200 text-[13px] text-neutral-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ import_react64.default.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react64.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react64.default.createElement("div", null, /* @__PURE__ */ import_react64.default.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react64.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react64.default.createElement(import_image11.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react64.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ import_react64.default.createElement("div", { key: idx, className: "relative w-full h-80 text-white rounded-3xl overflow-hidden group" }, /* @__PURE__ */ import_react64.default.createElement(
|
|
3924
3885
|
ImageWithLoader2,
|
|
3925
3886
|
{
|
|
3926
3887
|
src: card.bgImageSrc,
|
|
3927
3888
|
alt: card.title,
|
|
3928
3889
|
className: "absolute inset-0 w-full h-full"
|
|
3929
3890
|
}
|
|
3930
|
-
), /* @__PURE__ */
|
|
3891
|
+
), /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ import_react64.default.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ import_react64.default.createElement("div", { className: "pt-3" }, /* @__PURE__ */ import_react64.default.createElement("h4", { className: "text-[15px] text-white tracking-wide" }, card.title), /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
|
|
3931
3892
|
};
|
|
3932
3893
|
|
|
3933
3894
|
// src/components/ManagedProjectsBlock.tsx
|
|
3934
|
-
var
|
|
3895
|
+
var import_react66 = __toESM(require("react"));
|
|
3935
3896
|
var import_link9 = __toESM(require("next/link"));
|
|
3936
3897
|
var GridSection = ({
|
|
3937
3898
|
children,
|
|
3938
3899
|
isLast = false,
|
|
3939
3900
|
className = "py-8 md:py-10"
|
|
3940
|
-
}) => /* @__PURE__ */
|
|
3901
|
+
}) => /* @__PURE__ */ import_react66.default.createElement("div", { className: `relative px-5 md:px-12 ${className} ${!isLast ? "" : ""}` }, children);
|
|
3941
3902
|
var ManagedProjectsBlock = ({
|
|
3942
3903
|
tagline,
|
|
3943
3904
|
title,
|
|
3944
3905
|
projects
|
|
3945
3906
|
}) => {
|
|
3946
|
-
return /* @__PURE__ */
|
|
3907
|
+
return /* @__PURE__ */ import_react66.default.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-5xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react66.default.createElement(
|
|
3947
3908
|
"div",
|
|
3948
3909
|
{
|
|
3949
3910
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3952,17 +3913,17 @@ var ManagedProjectsBlock = ({
|
|
|
3952
3913
|
backgroundRepeat: "repeat"
|
|
3953
3914
|
}
|
|
3954
3915
|
}
|
|
3955
|
-
), /* @__PURE__ */
|
|
3916
|
+
), /* @__PURE__ */ import_react66.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react66.default.createElement(GridSection, null, tagline && /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react66.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
3956
3917
|
const isLast = index === projects.length - 1;
|
|
3957
|
-
const projectContent = /* @__PURE__ */
|
|
3958
|
-
return /* @__PURE__ */
|
|
3918
|
+
const projectContent = /* @__PURE__ */ import_react66.default.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ import_react66.default.createElement("h2", { className: " text-[16px] text-black transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-[11px] opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300" }, project.isExternal ? "\u2197" : "\u2192")), /* @__PURE__ */ import_react66.default.createElement("span", { className: `text-[9px] px-2.5 py-1 rounded-full tracking-[0.15em] transition-colors ${project.status.toLowerCase() === "production" ? "bg-black text-white" : "bg-neutral-100 text-neutral-500 group-hover:bg-neutral-100 group-hover:text-black"}` }, project.status)), /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0 " }, project.date)), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 max-w-4xl text-left transition-colors group-hover:text-black" }, project.description));
|
|
3919
|
+
return /* @__PURE__ */ import_react66.default.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ import_react66.default.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ import_react66.default.createElement(import_link9.default, { href: project.link, className: "block outline-none" }, projectContent));
|
|
3959
3920
|
}))));
|
|
3960
3921
|
};
|
|
3961
3922
|
|
|
3962
3923
|
// src/components/UniversalVerificationPage.tsx
|
|
3963
|
-
var
|
|
3964
|
-
var
|
|
3965
|
-
var
|
|
3924
|
+
var import_react67 = __toESM(require("react"));
|
|
3925
|
+
var import_react68 = require("@hugeicons/react");
|
|
3926
|
+
var import_core_free_icons22 = require("@hugeicons/core-free-icons");
|
|
3966
3927
|
var VerificationRow = ({
|
|
3967
3928
|
icon,
|
|
3968
3929
|
title,
|
|
@@ -3980,14 +3941,14 @@ var VerificationRow = ({
|
|
|
3980
3941
|
case "APPROVED":
|
|
3981
3942
|
statusText = "Completed";
|
|
3982
3943
|
statusColor = "text-neutral-600";
|
|
3983
|
-
StatusIcon =
|
|
3944
|
+
StatusIcon = import_core_free_icons22.CheckmarkCircle01Icon;
|
|
3984
3945
|
bg = "bg-neutral-50";
|
|
3985
3946
|
iconColor = "text-green-500";
|
|
3986
3947
|
break;
|
|
3987
3948
|
case "PENDING":
|
|
3988
3949
|
statusText = "Awaiting Approval";
|
|
3989
3950
|
statusColor = "text-neutral-500";
|
|
3990
|
-
StatusIcon =
|
|
3951
|
+
StatusIcon = import_core_free_icons22.Time02Icon;
|
|
3991
3952
|
bg = "bg-neutral-50";
|
|
3992
3953
|
iconColor = "text-orange-500";
|
|
3993
3954
|
break;
|
|
@@ -3995,7 +3956,7 @@ var VerificationRow = ({
|
|
|
3995
3956
|
statusText = "Action required to fix issue";
|
|
3996
3957
|
statusColor = "text-neutral-500";
|
|
3997
3958
|
bg = "bg-neutral-50";
|
|
3998
|
-
StatusIcon =
|
|
3959
|
+
StatusIcon = import_core_free_icons22.InformationCircleIcon;
|
|
3999
3960
|
iconColor = "text-red-500";
|
|
4000
3961
|
break;
|
|
4001
3962
|
case "ACTION_REQUIRED":
|
|
@@ -4003,20 +3964,20 @@ var VerificationRow = ({
|
|
|
4003
3964
|
statusText = "Start verification";
|
|
4004
3965
|
statusColor = "text-neutral-500";
|
|
4005
3966
|
bg = "bg-neutral-50";
|
|
4006
|
-
StatusIcon =
|
|
3967
|
+
StatusIcon = import_core_free_icons22.InformationCircleIcon;
|
|
4007
3968
|
iconColor = "text-neutral-400";
|
|
4008
3969
|
break;
|
|
4009
3970
|
}
|
|
4010
3971
|
const isDisabled = status === "APPROVED" || isLoading;
|
|
4011
|
-
return /* @__PURE__ */
|
|
3972
|
+
return /* @__PURE__ */ import_react67.default.createElement(
|
|
4012
3973
|
"div",
|
|
4013
3974
|
{
|
|
4014
3975
|
onClick: isDisabled ? void 0 : onClick,
|
|
4015
3976
|
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${isDisabled ? "opacity-70 cursor-default" : "cursor-pointer hover:bg-neutral-50"}`
|
|
4016
3977
|
},
|
|
4017
|
-
/* @__PURE__ */
|
|
4018
|
-
/* @__PURE__ */
|
|
4019
|
-
/* @__PURE__ */
|
|
3978
|
+
/* @__PURE__ */ import_react67.default.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 bg-white flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react67.default.createElement(import_react68.HugeiconsIcon, { icon, size: 16, className: "text-black" })),
|
|
3979
|
+
/* @__PURE__ */ import_react67.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react67.default.createElement("p", { className: "text-[14px] truncate text-black" }, title), /* @__PURE__ */ import_react67.default.createElement("p", { className: `text-[10px] inline-flex items-center ${bg} rounded-full px-2 py-1 ${statusColor} mt-0.5` }, statusText)),
|
|
3980
|
+
/* @__PURE__ */ import_react67.default.createElement("div", { className: "shrink-0 ml-2" }, isLoading ? /* @__PURE__ */ import_react67.default.createElement(import_react68.HugeiconsIcon, { icon: import_core_free_icons22.Loading03Icon, size: 20, className: "animate-spin text-black" }) : /* @__PURE__ */ import_react67.default.createElement(import_react68.HugeiconsIcon, { icon: StatusIcon, size: 20, className: iconColor }))
|
|
4020
3981
|
);
|
|
4021
3982
|
};
|
|
4022
3983
|
var UniversalVerificationPage = ({
|
|
@@ -4029,36 +3990,36 @@ var UniversalVerificationPage = ({
|
|
|
4029
3990
|
onTriggerVerification,
|
|
4030
3991
|
activeLoadingType
|
|
4031
3992
|
}) => {
|
|
4032
|
-
return /* @__PURE__ */
|
|
3993
|
+
return /* @__PURE__ */ import_react67.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "mb-6 flex items-center px-1" }, /* @__PURE__ */ import_react67.default.createElement(
|
|
4033
3994
|
"button",
|
|
4034
3995
|
{
|
|
4035
3996
|
onClick: onBack,
|
|
4036
3997
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
4037
3998
|
},
|
|
4038
|
-
/* @__PURE__ */
|
|
3999
|
+
/* @__PURE__ */ import_react67.default.createElement(import_react68.HugeiconsIcon, { icon: import_core_free_icons22.ArrowLeft01Icon, size: 16 }),
|
|
4039
4000
|
" Back"
|
|
4040
|
-
)), /* @__PURE__ */
|
|
4001
|
+
)), /* @__PURE__ */ import_react67.default.createElement("div", { className: "w-full flex flex-col gap-4 mb-8" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react67.default.createElement(
|
|
4041
4002
|
VerificationRow,
|
|
4042
4003
|
{
|
|
4043
|
-
icon:
|
|
4004
|
+
icon: import_core_free_icons22.Mail01Icon,
|
|
4044
4005
|
title: "Email Verification",
|
|
4045
4006
|
status: emailStatus,
|
|
4046
4007
|
isLoading: activeLoadingType === "EMAIL",
|
|
4047
4008
|
onClick: () => onTriggerVerification("EMAIL")
|
|
4048
4009
|
}
|
|
4049
|
-
), /* @__PURE__ */
|
|
4010
|
+
), /* @__PURE__ */ import_react67.default.createElement(
|
|
4050
4011
|
VerificationRow,
|
|
4051
4012
|
{
|
|
4052
|
-
icon:
|
|
4013
|
+
icon: import_core_free_icons22.SmartPhone01Icon,
|
|
4053
4014
|
title: "Phone Verification",
|
|
4054
4015
|
status: phoneStatus,
|
|
4055
4016
|
isLoading: activeLoadingType === "PHONE",
|
|
4056
4017
|
onClick: () => onTriggerVerification("PHONE")
|
|
4057
4018
|
}
|
|
4058
|
-
), /* @__PURE__ */
|
|
4019
|
+
), /* @__PURE__ */ import_react67.default.createElement(
|
|
4059
4020
|
VerificationRow,
|
|
4060
4021
|
{
|
|
4061
|
-
icon:
|
|
4022
|
+
icon: import_core_free_icons22.UserIcon,
|
|
4062
4023
|
title: "Identity Verification",
|
|
4063
4024
|
status: identityStatus,
|
|
4064
4025
|
isLoading: activeLoadingType === "IDENTITY",
|
|
@@ -4069,23 +4030,23 @@ var UniversalVerificationPage = ({
|
|
|
4069
4030
|
};
|
|
4070
4031
|
|
|
4071
4032
|
// src/components/UniversalRewardPage.tsx
|
|
4072
|
-
var
|
|
4033
|
+
var import_react69 = __toESM(require("react"));
|
|
4073
4034
|
var import_axios = __toESM(require("axios"));
|
|
4074
4035
|
var import_react_hot_toast9 = __toESM(require("react-hot-toast"));
|
|
4075
4036
|
var import_react_confetti = __toESM(require("react-confetti"));
|
|
4076
4037
|
var import_react_use = require("react-use");
|
|
4077
|
-
var
|
|
4078
|
-
var
|
|
4038
|
+
var import_react70 = require("@hugeicons/react");
|
|
4039
|
+
var import_core_free_icons23 = require("@hugeicons/core-free-icons");
|
|
4079
4040
|
var formatWeb3Name = (name) => {
|
|
4080
4041
|
if (!name) return "";
|
|
4081
4042
|
return name.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
|
4082
4043
|
};
|
|
4083
|
-
var PageSpinner4 = () => /* @__PURE__ */
|
|
4044
|
+
var PageSpinner4 = () => /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex justify-center items-center py-12 w-full" }, /* @__PURE__ */ import_react69.default.createElement(import_react70.HugeiconsIcon, { icon: import_core_free_icons23.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4084
4045
|
var AvatarLogo = ({ src, alt, name, sizeClass = "w-12 h-12" }) => {
|
|
4085
|
-
const [isLoaded, setIsLoaded] = (0,
|
|
4046
|
+
const [isLoaded, setIsLoaded] = (0, import_react69.useState)(false);
|
|
4086
4047
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=ffffff&color=000000&size=200&font-size=0.33`;
|
|
4087
4048
|
const finalSrc = src || fallbackUrl;
|
|
4088
|
-
return /* @__PURE__ */
|
|
4049
|
+
return /* @__PURE__ */ import_react69.default.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden border-[3px] border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ import_react69.default.createElement(import_react70.HugeiconsIcon, { icon: import_core_free_icons23.Loading03Icon, size: 16, className: "animate-spin text-neutral-400 absolute" }), /* @__PURE__ */ import_react69.default.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
4089
4050
|
};
|
|
4090
4051
|
var UniversalRewardPage = ({
|
|
4091
4052
|
leaderboardToday,
|
|
@@ -4100,11 +4061,11 @@ var UniversalRewardPage = ({
|
|
|
4100
4061
|
const onBackHandler = onBack ?? (() => {
|
|
4101
4062
|
if (typeof window !== "undefined") window.history.back();
|
|
4102
4063
|
});
|
|
4103
|
-
const [activeTabIndex, setActiveTabIndex] = (0,
|
|
4064
|
+
const [activeTabIndex, setActiveTabIndex] = (0, import_react69.useState)(1);
|
|
4104
4065
|
const tabs = [{ label: "Today" }, { label: "Week" }, { label: "Month" }];
|
|
4105
|
-
const [selectedReward, setSelectedReward] = (0,
|
|
4106
|
-
const [isClaiming, setIsClaiming] = (0,
|
|
4107
|
-
const [showConfetti, setShowConfetti] = (0,
|
|
4066
|
+
const [selectedReward, setSelectedReward] = (0, import_react69.useState)(null);
|
|
4067
|
+
const [isClaiming, setIsClaiming] = (0, import_react69.useState)(false);
|
|
4068
|
+
const [showConfetti, setShowConfetti] = (0, import_react69.useState)(false);
|
|
4108
4069
|
const getActiveLeaderboard = () => {
|
|
4109
4070
|
if (activeTabIndex === 0) return leaderboardToday || [];
|
|
4110
4071
|
if (activeTabIndex === 1) return leaderboardWeek || [];
|
|
@@ -4135,9 +4096,9 @@ var UniversalRewardPage = ({
|
|
|
4135
4096
|
setIsClaiming(false);
|
|
4136
4097
|
}
|
|
4137
4098
|
};
|
|
4138
|
-
return /* @__PURE__ */
|
|
4099
|
+
return /* @__PURE__ */ import_react69.default.createElement("div", null, /* @__PURE__ */ import_react69.default.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ import_react69.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ import_react69.default.createElement(import_react70.HugeiconsIcon, { icon: import_core_free_icons23.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react69.default.createElement(ManagedToaster, null), showConfetti && /* @__PURE__ */ import_react69.default.createElement("div", { className: "fixed inset-0 z-200 pointer-events-none" }, /* @__PURE__ */ import_react69.default.createElement(import_react_confetti.default, { width, height, recycle: false, numberOfPieces: 500, gravity: 0.15 })), isLoading ? /* @__PURE__ */ import_react69.default.createElement(PageSpinner4, null) : /* @__PURE__ */ import_react69.default.createElement(import_react69.default.Fragment, null, /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full p-4 pt-10 mb-6 flex items-end justify-center gap-2 sm:gap-6 h-64 relative overflow-hidden" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col items-center w-1/3 z-10" }, secondPlace ? /* @__PURE__ */ import_react69.default.createElement(import_react69.default.Fragment, null, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(secondPlace.profile.web3Name)), /* @__PURE__ */ import_react69.default.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ import_react69.default.createElement(AvatarLogo, { src: secondPlace.profile.avatarUrl, alt: secondPlace.profile.username, name: formatWeb3Name(secondPlace.profile.web3Name), sizeClass: "w-14 h-14 ring-4 ring-orange-100" }), /* @__PURE__ */ import_react69.default.createElement("div", { className: "absolute -bottom-2 right-0 w-5 h-5 rounded-full bg-orange-400 text-white flex items-center justify-center text-[10px] border border-white " }, "2")), /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-orange-200 rounded-t-xl h-24 flex items-center justify-center" }, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-orange-400/30 text-2xl " }, "2nd"))) : /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-neutral-200 rounded-t-xl h-24 mt-auto" })), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col items-center w-1/3 z-20 -mt-8" }, firstPlace ? /* @__PURE__ */ import_react69.default.createElement(import_react69.default.Fragment, null, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(firstPlace.profile.web3Name)), /* @__PURE__ */ import_react69.default.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ import_react69.default.createElement(AvatarLogo, { src: firstPlace.profile.avatarUrl, alt: firstPlace.profile.username, name: formatWeb3Name(firstPlace.profile.web3Name), sizeClass: "w-17 h-17 ring-4 ring-purple-200" }), /* @__PURE__ */ import_react69.default.createElement("div", { className: "absolute -bottom-2 right-2 w-5 h-5 rounded-full bg-purple-500 text-white flex items-center justify-center text-[10px] border border-white " }, "1")), /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-purple-400 rounded-t-xl h-32 flex items-center justify-center " }, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-white/40 text-3xl tracking-widest" }, "1st"))) : /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-neutral-200 rounded-t-xl h-32 mt-auto" })), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col items-center w-1/3 z-10" }, thirdPlace ? /* @__PURE__ */ import_react69.default.createElement(import_react69.default.Fragment, null, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(thirdPlace.profile.web3Name)), /* @__PURE__ */ import_react69.default.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ import_react69.default.createElement(AvatarLogo, { src: thirdPlace.profile.avatarUrl, alt: thirdPlace.profile.username, name: formatWeb3Name(thirdPlace.profile.web3Name), sizeClass: "w-12 h-12 ring-4 ring-blue-100" }), /* @__PURE__ */ import_react69.default.createElement("div", { className: "absolute -bottom-2 right-0 w-5 h-5 rounded-full bg-blue-400 text-white flex items-center justify-center text-[10px] border border-white " }, "3")), /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-blue-200 rounded-t-xl h-20 flex items-center justify-center" }, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-blue-400/30 text-xl " }, "3rd"))) : /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-neutral-200 rounded-t-xl h-20 mt-auto" }))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center justify-center mb-6 sm:mb-8 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react69.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 " }, tabs.map((tab, idx) => {
|
|
4139
4100
|
const isActive = activeTabIndex === idx;
|
|
4140
|
-
return /* @__PURE__ */
|
|
4101
|
+
return /* @__PURE__ */ import_react69.default.createElement(
|
|
4141
4102
|
"button",
|
|
4142
4103
|
{
|
|
4143
4104
|
key: idx,
|
|
@@ -4146,19 +4107,19 @@ var UniversalRewardPage = ({
|
|
|
4146
4107
|
},
|
|
4147
4108
|
tab.label
|
|
4148
4109
|
);
|
|
4149
|
-
}))), /* @__PURE__ */
|
|
4110
|
+
}))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ import_react69.default.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Available Tasks"), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col" }, rewards.length === 0 ? /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No rewards available at the moment.") : rewards.map((reward) => {
|
|
4150
4111
|
const statusText = reward.status === "CLAIMED" ? "Claimed" : "Unclaimed";
|
|
4151
|
-
return /* @__PURE__ */
|
|
4112
|
+
return /* @__PURE__ */ import_react69.default.createElement(
|
|
4152
4113
|
"div",
|
|
4153
4114
|
{
|
|
4154
4115
|
key: reward.id,
|
|
4155
4116
|
onClick: () => setSelectedReward(reward),
|
|
4156
4117
|
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"
|
|
4157
4118
|
},
|
|
4158
|
-
/* @__PURE__ */
|
|
4159
|
-
/* @__PURE__ */
|
|
4119
|
+
/* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-neutral-200 text-black" }, /* @__PURE__ */ import_react69.default.createElement(import_react70.HugeiconsIcon, { icon: import_core_free_icons23.GiftIcon, size: 16 })), /* @__PURE__ */ import_react69.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col items-start gap-0.5 pr-4" }, /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-[13px] text-black truncate w-full" }, reward.title), /* @__PURE__ */ import_react69.default.createElement("p", { className: `text-[10px] inline-flex items-center bg-neutral-50 rounded-full px-2 py-1 text-neutral-500 mt-0.5` }, statusText))),
|
|
4120
|
+
/* @__PURE__ */ import_react69.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-[13px] text-black" }, reward.amount))
|
|
4160
4121
|
);
|
|
4161
|
-
}))), remainingLeaderboard.length > 0 && /* @__PURE__ */
|
|
4122
|
+
}))), remainingLeaderboard.length > 0 && /* @__PURE__ */ import_react69.default.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ import_react69.default.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Leaderboard"), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col" }, remainingLeaderboard.map((lb) => /* @__PURE__ */ import_react69.default.createElement("div", { key: lb.profile.username, className: "flex items-center justify-between py-3 min-w-0" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "text-[12px] text-neutral-400 w-4" }, lb.position), /* @__PURE__ */ import_react69.default.createElement(AvatarLogo, { src: lb.profile.avatarUrl, alt: lb.profile.username, name: formatWeb3Name(lb.profile.web3Name), sizeClass: "w-9 h-9" }), /* @__PURE__ */ import_react69.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col" }, /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-[13px] text-black truncate" }, formatWeb3Name(lb.profile.web3Name)), /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-[11px] text-neutral-400 truncate" }, "@", lb.profile.username))), /* @__PURE__ */ import_react69.default.createElement("div", { className: "shrink-0 text-[13px] text-black" }, lb.amount))))))), selectedReward && /* @__PURE__ */ import_react69.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isClaiming && setSelectedReward(null) }), /* @__PURE__ */ import_react69.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-3xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex-1 p-6 flex flex-col items-center text-center mt-2" }, /* @__PURE__ */ import_react69.default.createElement("h2", { className: "text-xl text-black mb-2" }, selectedReward.title), /* @__PURE__ */ import_react69.default.createElement("p", { className: "text-[13px] text-neutral-500 mb-6 leading-relaxed" }, selectedReward.description), selectedReward.progressText && /* @__PURE__ */ import_react69.default.createElement("div", { className: "w-full mb-6" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: `px-4 py-2 rounded-full text-[11px] tracking-wide ${selectedReward.status === "CLAIMED" ? "bg-green-50 text-green-600" : selectedReward.isEligible ? "bg-blue-50 text-blue-600" : "bg-neutral-100 text-neutral-600"}` }, selectedReward.progressText)), /* @__PURE__ */ import_react69.default.createElement("div", { className: " w-full rounded-xl p-4 mb-8 flex flex-col items-center" }, /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 uppercase mb-1" }, "Reward Value"), /* @__PURE__ */ import_react69.default.createElement("span", { className: "text-3xl text-black " }, selectedReward.amount)), /* @__PURE__ */ import_react69.default.createElement("div", { className: "flex flex-col gap-3 w-full" }, /* @__PURE__ */ import_react69.default.createElement(
|
|
4162
4123
|
ThreeDActionButton,
|
|
4163
4124
|
{
|
|
4164
4125
|
onClick: handleClaimReward,
|
|
@@ -4167,7 +4128,7 @@ var UniversalRewardPage = ({
|
|
|
4167
4128
|
className: "w-full"
|
|
4168
4129
|
},
|
|
4169
4130
|
selectedReward.status === "CLAIMED" ? "Already Claimed" : selectedReward.isEligible ? "Claim Reward" : "Not Eligible Yet"
|
|
4170
|
-
), /* @__PURE__ */
|
|
4131
|
+
), /* @__PURE__ */ import_react69.default.createElement(
|
|
4171
4132
|
"button",
|
|
4172
4133
|
{
|
|
4173
4134
|
onClick: () => setSelectedReward(null),
|
|
@@ -4179,11 +4140,11 @@ var UniversalRewardPage = ({
|
|
|
4179
4140
|
};
|
|
4180
4141
|
|
|
4181
4142
|
// src/components/UniversalReferralPage.tsx
|
|
4182
|
-
var
|
|
4143
|
+
var import_react71 = __toESM(require("react"));
|
|
4183
4144
|
var import_react_hot_toast10 = __toESM(require("react-hot-toast"));
|
|
4184
|
-
var
|
|
4185
|
-
var
|
|
4186
|
-
var PageSpinner5 = () => /* @__PURE__ */
|
|
4145
|
+
var import_react72 = require("@hugeicons/react");
|
|
4146
|
+
var import_core_free_icons24 = require("@hugeicons/core-free-icons");
|
|
4147
|
+
var PageSpinner5 = () => /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react71.default.createElement(import_react72.HugeiconsIcon, { icon: import_core_free_icons24.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4187
4148
|
var formatWeb3Name2 = (name) => {
|
|
4188
4149
|
if (!name) return "";
|
|
4189
4150
|
return name.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
|
@@ -4214,50 +4175,50 @@ var UniversalReferralPage = ({
|
|
|
4214
4175
|
}
|
|
4215
4176
|
};
|
|
4216
4177
|
const AvatarLogo2 = ({ src, alt, name, sizeClass = "w-10 h-10" }) => {
|
|
4217
|
-
const [isLoaded, setIsLoaded] = (0,
|
|
4178
|
+
const [isLoaded, setIsLoaded] = (0, import_react71.useState)(false);
|
|
4218
4179
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=ffffff&color=000000&size=200&font-size=0.33`;
|
|
4219
4180
|
const finalSrc = src || fallbackUrl;
|
|
4220
|
-
return /* @__PURE__ */
|
|
4181
|
+
return /* @__PURE__ */ import_react71.default.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden border-2 border-white ${sizeClass}` }, !isLoaded && /* @__PURE__ */ import_react71.default.createElement(import_react72.HugeiconsIcon, { icon: import_core_free_icons24.Loading03Icon, size: 16, className: "animate-spin text-neutral-400 absolute" }), /* @__PURE__ */ import_react71.default.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
4221
4182
|
};
|
|
4222
|
-
return /* @__PURE__ */
|
|
4183
|
+
return /* @__PURE__ */ import_react71.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react71.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react71.default.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ import_react71.default.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ import_react71.default.createElement(import_react72.HugeiconsIcon, { icon: import_core_free_icons24.ArrowLeft01Icon, size: 16 }), " Back")), /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-3xl bg-white w-full" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex flex-col gap-4 mb-2" }, /* @__PURE__ */ import_react71.default.createElement("div", null, /* @__PURE__ */ import_react71.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Your Referrals"), /* @__PURE__ */ import_react71.default.createElement("p", { className: "text-xs text-neutral-500" }, "Invite friends and earn rewards when they verify and activate cards.")), /* @__PURE__ */ import_react71.default.createElement("div", { className: "border border-neutral-200 rounded-xl p-4 flex items-center justify-between mt-2" }, /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 " }, "Invitation Code"), isLoading && !referralCode ? /* @__PURE__ */ import_react71.default.createElement("div", { className: "h-6 w-24 bg-neutral-50 animate-pulse rounded mt-1" }) : /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-lg text-black tracking-widest" }, referralCode)), /* @__PURE__ */ import_react71.default.createElement(
|
|
4223
4184
|
"button",
|
|
4224
4185
|
{
|
|
4225
4186
|
onClick: handleCopyCode,
|
|
4226
4187
|
disabled: isLoading || !referralCode,
|
|
4227
4188
|
className: "w-10 h-10 rounded-full bg-white flex items-center justify-center text-neutral-500 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4228
4189
|
},
|
|
4229
|
-
/* @__PURE__ */
|
|
4230
|
-
)), /* @__PURE__ */
|
|
4190
|
+
/* @__PURE__ */ import_react71.default.createElement(import_react72.HugeiconsIcon, { icon: import_core_free_icons24.Copy01Icon, size: 18 })
|
|
4191
|
+
)), /* @__PURE__ */ import_react71.default.createElement("div", { className: "text-[13px] text-black px-1 mt-2" }, "Total Invited: ", isLoading && !totalCount ? "-" : totalCount)), /* @__PURE__ */ import_react71.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react71.default.createElement(PageSpinner5, null) : /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react71.default.createElement("div", null, referrals.length === 0 ? /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex flex-col items-center justify-center py-12 opacity-50" }, /* @__PURE__ */ import_react71.default.createElement("p", { className: "text-xs text-neutral-500 text-center" }, "You haven't referred anyone yet.")) : referrals.map((ref, idx) => /* @__PURE__ */ import_react71.default.createElement(
|
|
4231
4192
|
"div",
|
|
4232
4193
|
{
|
|
4233
4194
|
key: `${ref.profile.username}-${idx}`,
|
|
4234
4195
|
className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors group min-w-0 px-3 -mx-3 rounded-xl"
|
|
4235
4196
|
},
|
|
4236
|
-
/* @__PURE__ */
|
|
4197
|
+
/* @__PURE__ */ import_react71.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react71.default.createElement(
|
|
4237
4198
|
AvatarLogo2,
|
|
4238
4199
|
{
|
|
4239
4200
|
src: ref.profile.avatarUrl,
|
|
4240
4201
|
alt: ref.profile.username,
|
|
4241
4202
|
name: formatWeb3Name2(ref.profile.web3Name)
|
|
4242
4203
|
}
|
|
4243
|
-
), /* @__PURE__ */
|
|
4244
|
-
/* @__PURE__ */
|
|
4245
|
-
))), /* @__PURE__ */
|
|
4204
|
+
), /* @__PURE__ */ import_react71.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5 pr-4" }, /* @__PURE__ */ import_react71.default.createElement("p", { className: "text-[14px] text-black truncate" }, formatWeb3Name2(ref.profile.web3Name)), /* @__PURE__ */ import_react71.default.createElement("p", { className: "text-[12px] text-neutral-500 truncate" }, "@", ref.profile.username))),
|
|
4205
|
+
/* @__PURE__ */ import_react71.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-[11px] text-neutral-400" }, "Joined"), /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-[12px] text-black" }, formatDate(ref.joinedAt)))
|
|
4206
|
+
))), /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react71.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react71.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react71.default.createElement(
|
|
4246
4207
|
"button",
|
|
4247
4208
|
{
|
|
4248
4209
|
onClick: () => onPageChange(currentPage - 1),
|
|
4249
4210
|
disabled: currentPage <= 1 || isLoading,
|
|
4250
4211
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4251
4212
|
},
|
|
4252
|
-
/* @__PURE__ */
|
|
4253
|
-
), /* @__PURE__ */
|
|
4213
|
+
/* @__PURE__ */ import_react71.default.createElement(import_react72.HugeiconsIcon, { icon: import_core_free_icons24.ArrowLeft01Icon, size: 14 })
|
|
4214
|
+
), /* @__PURE__ */ import_react71.default.createElement(
|
|
4254
4215
|
"button",
|
|
4255
4216
|
{
|
|
4256
4217
|
onClick: () => onPageChange(currentPage + 1),
|
|
4257
4218
|
disabled: currentPage >= totalPages || isLoading || totalPages === 0,
|
|
4258
4219
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
4259
4220
|
},
|
|
4260
|
-
/* @__PURE__ */
|
|
4221
|
+
/* @__PURE__ */ import_react71.default.createElement(import_react72.HugeiconsIcon, { icon: import_core_free_icons24.ArrowRight01Icon, size: 14 })
|
|
4261
4222
|
)))))));
|
|
4262
4223
|
};
|
|
4263
4224
|
// Annotate the CommonJS export names for ESM import in node:
|