@retinalabsllc/zairusjs 14.0.10 → 14.0.20
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 +31 -2
- package/dist/index.d.ts +31 -2
- package/dist/index.js +552 -413
- package/dist/index.mjs +452 -310
- package/package.json +2 -1
package/dist/index.mjs
CHANGED
|
@@ -1858,8 +1858,9 @@ var UniversalWalletPage = ({
|
|
|
1858
1858
|
};
|
|
1859
1859
|
|
|
1860
1860
|
// src/components/UniversalCardPage.tsx
|
|
1861
|
-
import
|
|
1862
|
-
import {
|
|
1861
|
+
import React20, { useState as useState12, useEffect as useEffect9 } from "react";
|
|
1862
|
+
import { useRouter } from "next/navigation";
|
|
1863
|
+
import { HugeiconsIcon as HugeiconsIcon14 } from "@hugeicons/react";
|
|
1863
1864
|
import {
|
|
1864
1865
|
SnowIcon,
|
|
1865
1866
|
Delete02Icon,
|
|
@@ -1904,7 +1905,7 @@ var ConfirmationDialog = ({
|
|
|
1904
1905
|
{
|
|
1905
1906
|
onClick: onConfirm,
|
|
1906
1907
|
disabled: isProcessing,
|
|
1907
|
-
className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-
|
|
1908
|
+
className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-black hover:bg-red-50" : "text-black hover:bg-neutral-50"}`
|
|
1908
1909
|
},
|
|
1909
1910
|
isProcessing ? /* @__PURE__ */ React18.createElement(HugeiconsIcon12, { icon: Loading03Icon7, className: "animate-spin", size: 18 }) : confirmText
|
|
1910
1911
|
))));
|
|
@@ -1988,52 +1989,16 @@ var PinDialerBottomSheet = ({
|
|
|
1988
1989
|
)))));
|
|
1989
1990
|
};
|
|
1990
1991
|
|
|
1991
|
-
// src/components/CardAction.tsx
|
|
1992
|
-
import React20 from "react";
|
|
1993
|
-
import { HugeiconsIcon as HugeiconsIcon14 } from "@hugeicons/react";
|
|
1994
|
-
import { CancelCircleIcon as CancelCircleIcon6, CreditCardIcon } from "@hugeicons/core-free-icons";
|
|
1995
|
-
var CardActionDialog = ({
|
|
1996
|
-
isOpen,
|
|
1997
|
-
card,
|
|
1998
|
-
actionType,
|
|
1999
|
-
onClose,
|
|
2000
|
-
onProceed
|
|
2001
|
-
}) => {
|
|
2002
|
-
if (!isOpen || !card) return null;
|
|
2003
|
-
const title = actionType === "ACTIVATE" ? "Activate Card" : "Create New Card";
|
|
2004
|
-
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.`;
|
|
2005
|
-
return /* @__PURE__ */ React20.createElement("div", { className: "fixed inset-0 z-150 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React20.createElement(
|
|
2006
|
-
"div",
|
|
2007
|
-
{
|
|
2008
|
-
className: "absolute inset-0 bg-black/40 animate-in fade-in duration-200",
|
|
2009
|
-
onClick: onClose
|
|
2010
|
-
}
|
|
2011
|
-
), /* @__PURE__ */ React20.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__ */ React20.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: CreditCardIcon, size: 20, className: "text-black" }), /* @__PURE__ */ React20.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title)), /* @__PURE__ */ React20.createElement(
|
|
2012
|
-
"button",
|
|
2013
|
-
{
|
|
2014
|
-
onClick: onClose,
|
|
2015
|
-
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
2016
|
-
},
|
|
2017
|
-
/* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: CancelCircleIcon6, size: 20 })
|
|
2018
|
-
)), /* @__PURE__ */ React20.createElement("div", { className: "p-6 text-center" }, /* @__PURE__ */ React20.createElement("p", { className: "text-[13px] text-neutral-500 leading-relaxed mb-6" }, description), /* @__PURE__ */ React20.createElement(
|
|
2019
|
-
"button",
|
|
2020
|
-
{
|
|
2021
|
-
onClick: onProceed,
|
|
2022
|
-
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"
|
|
2023
|
-
},
|
|
2024
|
-
actionType === "ACTIVATE" ? "Activate Now" : "Create Card"
|
|
2025
|
-
))));
|
|
2026
|
-
};
|
|
2027
|
-
|
|
2028
1992
|
// src/components/UniversalCardPage.tsx
|
|
2029
1993
|
var UniversalCardPage = ({
|
|
2030
1994
|
cards = [],
|
|
1995
|
+
actionPath = "/app/cards/action/",
|
|
2031
1996
|
onReveal,
|
|
2032
1997
|
onFreeze,
|
|
2033
1998
|
onSetLimits,
|
|
2034
|
-
onDelete
|
|
2035
|
-
onCardAction
|
|
1999
|
+
onDelete
|
|
2036
2000
|
}) => {
|
|
2001
|
+
const router = useRouter();
|
|
2037
2002
|
const [activeTabIndex, setActiveTabIndex] = useState12(0);
|
|
2038
2003
|
const activeCard = cards[activeTabIndex];
|
|
2039
2004
|
useEffect9(() => {
|
|
@@ -2049,8 +2014,6 @@ var UniversalCardPage = ({
|
|
|
2049
2014
|
const [showDeleteDialog, setShowDeleteDialog] = useState12(false);
|
|
2050
2015
|
const [isDeleting, setIsDeleting] = useState12(false);
|
|
2051
2016
|
const [showPinDialer, setShowPinDialer] = useState12(false);
|
|
2052
|
-
const [showCardActionDialog, setShowCardActionDialog] = useState12(false);
|
|
2053
|
-
const [cardActionType, setCardActionType] = useState12("ACTIVATE");
|
|
2054
2017
|
useEffect9(() => {
|
|
2055
2018
|
setIsBgLoaded(false);
|
|
2056
2019
|
if (!activeCard?.cardBgSrc) return;
|
|
@@ -2060,7 +2023,7 @@ var UniversalCardPage = ({
|
|
|
2060
2023
|
setTimeout(() => setIsBgLoaded(true), 300);
|
|
2061
2024
|
};
|
|
2062
2025
|
}, [activeCard?.cardBgSrc]);
|
|
2063
|
-
if (!activeCard) return /* @__PURE__ */
|
|
2026
|
+
if (!activeCard) return /* @__PURE__ */ React20.createElement("div", { className: "text-center p-8 text-neutral-500" }, "No cards available");
|
|
2064
2027
|
const isActivated = activeCard.status === "ACTIVATED";
|
|
2065
2028
|
const isFrozen = activeCard.status === "FROZEN";
|
|
2066
2029
|
const isUnactivated = activeCard.status === "UNACTIVATED";
|
|
@@ -2107,10 +2070,6 @@ var UniversalCardPage = ({
|
|
|
2107
2070
|
setIsOverlayActionLoading(false);
|
|
2108
2071
|
}, 800);
|
|
2109
2072
|
};
|
|
2110
|
-
const handleOverlayActionClick = (type) => {
|
|
2111
|
-
setCardActionType(type);
|
|
2112
|
-
setShowCardActionDialog(true);
|
|
2113
|
-
};
|
|
2114
2073
|
const confirmDelete = async () => {
|
|
2115
2074
|
setIsDeleting(true);
|
|
2116
2075
|
setTimeout(() => {
|
|
@@ -2126,9 +2085,9 @@ var UniversalCardPage = ({
|
|
|
2126
2085
|
const displayCardNumber = isRevealed ? activeCard.cardNumber : `XXXX XXXX XXXX ${activeCard.cardNumber.slice(-4)}`;
|
|
2127
2086
|
const displayExpiry = isRevealed ? activeCard.expiry : "XX/XX";
|
|
2128
2087
|
const displayCvv = isRevealed ? activeCard.cvv : "XXX";
|
|
2129
|
-
return /* @__PURE__ */
|
|
2088
|
+
return /* @__PURE__ */ React20.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, cards.length > 1 && /* @__PURE__ */ React20.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar " }, cards.map((tab, idx) => {
|
|
2130
2089
|
const isActive = activeTabIndex === idx;
|
|
2131
|
-
return /* @__PURE__ */
|
|
2090
|
+
return /* @__PURE__ */ React20.createElement(
|
|
2132
2091
|
"button",
|
|
2133
2092
|
{
|
|
2134
2093
|
key: tab.id,
|
|
@@ -2137,7 +2096,7 @@ var UniversalCardPage = ({
|
|
|
2137
2096
|
},
|
|
2138
2097
|
formatTabLabel(tab.type)
|
|
2139
2098
|
);
|
|
2140
|
-
}))), /* @__PURE__ */
|
|
2099
|
+
}))), /* @__PURE__ */ React20.createElement("div", { className: "w-full pt-2 pb-2 flex justify-center", style: { perspective: "1000px" } }, /* @__PURE__ */ React20.createElement(
|
|
2141
2100
|
"div",
|
|
2142
2101
|
{
|
|
2143
2102
|
onClick: () => {
|
|
@@ -2150,28 +2109,28 @@ var UniversalCardPage = ({
|
|
|
2150
2109
|
transform: isFlipped ? "rotateY(180deg)" : "rotateY(0deg)"
|
|
2151
2110
|
}
|
|
2152
2111
|
},
|
|
2153
|
-
!isBgLoaded && /* @__PURE__ */
|
|
2154
|
-
!isActivated && isBgLoaded && /* @__PURE__ */
|
|
2112
|
+
!isBgLoaded && /* @__PURE__ */ React20.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50 " }, /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: Loading03Icon9, size: 28, className: "animate-spin text-black" })),
|
|
2113
|
+
!isActivated && isBgLoaded && /* @__PURE__ */ React20.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__ */ React20.createElement(
|
|
2155
2114
|
"button",
|
|
2156
2115
|
{
|
|
2157
2116
|
onClick: (e) => {
|
|
2158
2117
|
e.stopPropagation();
|
|
2159
|
-
|
|
2118
|
+
router.push(`${actionPath}${activeCard.id}`);
|
|
2160
2119
|
},
|
|
2161
2120
|
className: "px-6 py-2 bg-white/25 text-white text-[11px] rounded-full transition-all outline-none active:scale-95"
|
|
2162
2121
|
},
|
|
2163
2122
|
"Activate Card"
|
|
2164
|
-
), isDead && /* @__PURE__ */
|
|
2123
|
+
), isDead && /* @__PURE__ */ React20.createElement(
|
|
2165
2124
|
"button",
|
|
2166
2125
|
{
|
|
2167
2126
|
onClick: (e) => {
|
|
2168
2127
|
e.stopPropagation();
|
|
2169
|
-
|
|
2128
|
+
router.push(`${actionPath}${activeCard.id}`);
|
|
2170
2129
|
},
|
|
2171
2130
|
className: "px-6 py-2 bg-white/25 text-white text-[11px] rounded-full transition-all outline-none active:scale-95"
|
|
2172
2131
|
},
|
|
2173
2132
|
"Create Card"
|
|
2174
|
-
), isFrozen && /* @__PURE__ */
|
|
2133
|
+
), isFrozen && /* @__PURE__ */ React20.createElement(
|
|
2175
2134
|
"button",
|
|
2176
2135
|
{
|
|
2177
2136
|
onClick: (e) => {
|
|
@@ -2181,24 +2140,24 @@ var UniversalCardPage = ({
|
|
|
2181
2140
|
disabled: isOverlayActionLoading,
|
|
2182
2141
|
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"
|
|
2183
2142
|
},
|
|
2184
|
-
isOverlayActionLoading ? /* @__PURE__ */
|
|
2143
|
+
isOverlayActionLoading ? /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: Loading03Icon9, size: 16, className: "animate-spin" }) : "Unfreeze Card"
|
|
2185
2144
|
)),
|
|
2186
|
-
/* @__PURE__ */
|
|
2145
|
+
/* @__PURE__ */ React20.createElement(
|
|
2187
2146
|
"div",
|
|
2188
2147
|
{
|
|
2189
2148
|
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"}`,
|
|
2190
2149
|
style: { backfaceVisibility: "hidden" }
|
|
2191
2150
|
},
|
|
2192
|
-
/* @__PURE__ */
|
|
2151
|
+
/* @__PURE__ */ React20.createElement(
|
|
2193
2152
|
"div",
|
|
2194
2153
|
{
|
|
2195
2154
|
className: "absolute inset-0 bg-cover bg-center",
|
|
2196
2155
|
style: { backgroundImage: `url(${activeCard.cardBgSrc}), linear-gradient(to bottom right, #111, #333)` }
|
|
2197
2156
|
}
|
|
2198
2157
|
),
|
|
2199
|
-
/* @__PURE__ */
|
|
2158
|
+
/* @__PURE__ */ React20.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ React20.createElement("div", { className: "flex items-start w-full gap-4" }, activeCard.companyLogoSrc && /* @__PURE__ */ React20.createElement("img", { src: activeCard.companyLogoSrc, alt: "Company Logo", className: "h-10 w-auto max-w-30 object-contain opacity-90" })), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "Card Number"), /* @__PURE__ */ React20.createElement("span", { className: "text-[12px] text-white tracking-widest font-light" }, displayCardNumber)), activeCard.networkLogoSrc && /* @__PURE__ */ React20.createElement("img", { src: activeCard.networkLogoSrc, alt: "Network Logo", className: "h-10 w-auto max-w-20 object-contain opacity-90" })))
|
|
2200
2159
|
),
|
|
2201
|
-
/* @__PURE__ */
|
|
2160
|
+
/* @__PURE__ */ React20.createElement(
|
|
2202
2161
|
"div",
|
|
2203
2162
|
{
|
|
2204
2163
|
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"}`,
|
|
@@ -2207,17 +2166,17 @@ var UniversalCardPage = ({
|
|
|
2207
2166
|
transform: "rotateY(180deg)"
|
|
2208
2167
|
}
|
|
2209
2168
|
},
|
|
2210
|
-
/* @__PURE__ */
|
|
2169
|
+
/* @__PURE__ */ React20.createElement(
|
|
2211
2170
|
"div",
|
|
2212
2171
|
{
|
|
2213
2172
|
className: "absolute inset-0 bg-cover bg-center",
|
|
2214
2173
|
style: { backgroundImage: `url(${activeCard.cardBgSrc}), linear-gradient(to bottom right, #111, #333)` }
|
|
2215
2174
|
}
|
|
2216
2175
|
),
|
|
2217
|
-
/* @__PURE__ */
|
|
2218
|
-
/* @__PURE__ */
|
|
2176
|
+
/* @__PURE__ */ React20.createElement("div", { className: "absolute top-6 left-0 right-0 h-10 bg-black/80 w-full" }),
|
|
2177
|
+
/* @__PURE__ */ React20.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-end" }, /* @__PURE__ */ React20.createElement("div", { className: "w-full text-center mb-6" }, /* @__PURE__ */ React20.createElement("span", { className: "text-white text-3xl italic tracking-wide opacity-90", style: { fontFamily: "'Whisper', cursive" } }, activeCard.cardHolderName)), /* @__PURE__ */ React20.createElement("div", { className: "flex justify-between w-full max-w-[80%]" }, /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "Expiry"), /* @__PURE__ */ React20.createElement("span", { className: "text-[12px] text-white font-light" }, displayExpiry)), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React20.createElement("span", { className: "text-[9px] text-white/60 tracking-widest " }, "CVV"), /* @__PURE__ */ React20.createElement("span", { className: "text-[12px] text-white font-light" }, displayCvv))))
|
|
2219
2178
|
)
|
|
2220
|
-
)), /* @__PURE__ */
|
|
2179
|
+
)), /* @__PURE__ */ React20.createElement("p", { className: "w-full text-center text-xs text-neutral-400 mb-6 mt-1" }, isActivated ? "Tap to flip card" : "Action Required"), /* @__PURE__ */ React20.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ React20.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React20.createElement(
|
|
2221
2180
|
MenuRow,
|
|
2222
2181
|
{
|
|
2223
2182
|
icon: ViewOffSlashIcon2,
|
|
@@ -2229,7 +2188,7 @@ var UniversalCardPage = ({
|
|
|
2229
2188
|
toggleLoading: isRevealing,
|
|
2230
2189
|
disabled: revealDisabled
|
|
2231
2190
|
}
|
|
2232
|
-
), /* @__PURE__ */
|
|
2191
|
+
), /* @__PURE__ */ React20.createElement(
|
|
2233
2192
|
MenuRow,
|
|
2234
2193
|
{
|
|
2235
2194
|
icon: SnowIcon,
|
|
@@ -2241,7 +2200,7 @@ var UniversalCardPage = ({
|
|
|
2241
2200
|
toggleLoading: isFreezing,
|
|
2242
2201
|
disabled: freezeDisabled
|
|
2243
2202
|
}
|
|
2244
|
-
), /* @__PURE__ */
|
|
2203
|
+
), /* @__PURE__ */ React20.createElement(
|
|
2245
2204
|
MenuRow,
|
|
2246
2205
|
{
|
|
2247
2206
|
icon: SlidersHorizontalIcon,
|
|
@@ -2253,7 +2212,7 @@ var UniversalCardPage = ({
|
|
|
2253
2212
|
disabled: actionsDisabled,
|
|
2254
2213
|
isLast: true
|
|
2255
2214
|
}
|
|
2256
|
-
)), /* @__PURE__ */
|
|
2215
|
+
)), /* @__PURE__ */ React20.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React20.createElement(
|
|
2257
2216
|
MenuRow,
|
|
2258
2217
|
{
|
|
2259
2218
|
icon: Delete02Icon,
|
|
@@ -2265,7 +2224,7 @@ var UniversalCardPage = ({
|
|
|
2265
2224
|
disabled: actionsDisabled,
|
|
2266
2225
|
isLast: true
|
|
2267
2226
|
}
|
|
2268
|
-
))), /* @__PURE__ */
|
|
2227
|
+
))), /* @__PURE__ */ React20.createElement(
|
|
2269
2228
|
ConfirmationDialog,
|
|
2270
2229
|
{
|
|
2271
2230
|
isOpen: showDeleteDialog,
|
|
@@ -2277,7 +2236,7 @@ var UniversalCardPage = ({
|
|
|
2277
2236
|
onClose: () => setShowDeleteDialog(false),
|
|
2278
2237
|
onConfirm: confirmDelete
|
|
2279
2238
|
}
|
|
2280
|
-
), /* @__PURE__ */
|
|
2239
|
+
), /* @__PURE__ */ React20.createElement(
|
|
2281
2240
|
PinDialerBottomSheet,
|
|
2282
2241
|
{
|
|
2283
2242
|
isOpen: showPinDialer,
|
|
@@ -2286,18 +2245,6 @@ var UniversalCardPage = ({
|
|
|
2286
2245
|
onClose: () => setShowPinDialer(false),
|
|
2287
2246
|
onComplete: handlePinComplete
|
|
2288
2247
|
}
|
|
2289
|
-
), /* @__PURE__ */ React21.createElement(
|
|
2290
|
-
CardActionDialog,
|
|
2291
|
-
{
|
|
2292
|
-
isOpen: showCardActionDialog,
|
|
2293
|
-
card: activeCard,
|
|
2294
|
-
actionType: cardActionType,
|
|
2295
|
-
onClose: () => setShowCardActionDialog(false),
|
|
2296
|
-
onProceed: () => {
|
|
2297
|
-
if (onCardAction) onCardAction(activeCard.id, cardActionType);
|
|
2298
|
-
setShowCardActionDialog(false);
|
|
2299
|
-
}
|
|
2300
|
-
}
|
|
2301
2248
|
));
|
|
2302
2249
|
};
|
|
2303
2250
|
var MenuRow = ({
|
|
@@ -2312,20 +2259,20 @@ var MenuRow = ({
|
|
|
2312
2259
|
toggleState = false,
|
|
2313
2260
|
toggleLoading = false,
|
|
2314
2261
|
disabled = false
|
|
2315
|
-
}) => /* @__PURE__ */
|
|
2262
|
+
}) => /* @__PURE__ */ React20.createElement(
|
|
2316
2263
|
"div",
|
|
2317
2264
|
{
|
|
2318
2265
|
onClick: disabled ? void 0 : onClick,
|
|
2319
2266
|
className: `flex items-center p-3 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
|
|
2320
2267
|
},
|
|
2321
|
-
/* @__PURE__ */
|
|
2322
|
-
/* @__PURE__ */
|
|
2323
|
-
isToggle ? /* @__PURE__ */
|
|
2268
|
+
/* @__PURE__ */ React20.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon, size: 16, className: iconColor })),
|
|
2269
|
+
/* @__PURE__ */ React20.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React20.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ React20.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
2270
|
+
isToggle ? /* @__PURE__ */ React20.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__ */ React20.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__ */ React20.createElement(HugeiconsIcon14, { icon: Loading03Icon9, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ React20.createElement(HugeiconsIcon14, { icon: ArrowRight01Icon3, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2324
2271
|
);
|
|
2325
2272
|
|
|
2326
2273
|
// src/components/UniversalProfilePage.tsx
|
|
2327
|
-
import
|
|
2328
|
-
import { HugeiconsIcon as
|
|
2274
|
+
import React21, { useState as useState13 } from "react";
|
|
2275
|
+
import { HugeiconsIcon as HugeiconsIcon15 } from "@hugeicons/react";
|
|
2329
2276
|
import {
|
|
2330
2277
|
UserIcon as UserIcon2,
|
|
2331
2278
|
LockKeyIcon as LockKeyIcon2,
|
|
@@ -2373,7 +2320,7 @@ var UniversalProfilePage = ({
|
|
|
2373
2320
|
if (r.includes("platinum")) return "text-yellow-400";
|
|
2374
2321
|
return "text-neutral-400";
|
|
2375
2322
|
};
|
|
2376
|
-
return /* @__PURE__ */
|
|
2323
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React21.createElement("div", { className: "pt-8 pb-4 flex flex-col items-center" }, /* @__PURE__ */ React21.createElement("div", { className: "w-22 h-22 rounded-full bg-white p-1 mb-4 flex items-center justify-center" }, /* @__PURE__ */ React21.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, avatarSrc ? /* @__PURE__ */ React21.createElement(React21.Fragment, null, !isAvatarLoaded && /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon15, { icon: Loading03Icon10, size: 24, className: "animate-spin text-black" })), /* @__PURE__ */ React21.createElement(
|
|
2377
2324
|
"img",
|
|
2378
2325
|
{
|
|
2379
2326
|
src: avatarSrc,
|
|
@@ -2381,7 +2328,7 @@ var UniversalProfilePage = ({
|
|
|
2381
2328
|
onLoad: () => setIsAvatarLoaded(true),
|
|
2382
2329
|
className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
|
|
2383
2330
|
}
|
|
2384
|
-
)) : /* @__PURE__ */
|
|
2331
|
+
)) : /* @__PURE__ */ React21.createElement(HugeiconsIcon15, { icon: UserIcon2, size: 40, className: "text-neutral-300" }))), /* @__PURE__ */ React21.createElement("div", { className: "bg-white rounded-full px-4 py-2 flex items-center justify-center gap-2 mb-3" }, /* @__PURE__ */ React21.createElement("span", { className: "text-[12px] text-black" }, roleName), /* @__PURE__ */ React21.createElement("span", { className: getBadgeColorClass(roleName), "aria-hidden": true }, /* @__PURE__ */ React21.createElement("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React21.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }), /* @__PURE__ */ React21.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ React21.createElement("g", { id: "SVGRepo_iconCarrier" }, " ", /* @__PURE__ */ React21.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M9.5924 3.20027C9.34888 3.4078 9.22711 3.51158 9.09706 3.59874C8.79896 3.79854 8.46417 3.93721 8.1121 4.00672C7.95851 4.03705 7.79903 4.04977 7.48008 4.07522C6.6787 4.13918 6.278 4.17115 5.94371 4.28923C5.17051 4.56233 4.56233 5.17051 4.28923 5.94371C4.17115 6.278 4.13918 6.6787 4.07522 7.48008C4.04977 7.79903 4.03705 7.95851 4.00672 8.1121C3.93721 8.46417 3.79854 8.79896 3.59874 9.09706C3.51158 9.22711 3.40781 9.34887 3.20027 9.5924C2.67883 10.2043 2.4181 10.5102 2.26522 10.8301C1.91159 11.57 1.91159 12.43 2.26522 13.1699C2.41811 13.4898 2.67883 13.7957 3.20027 14.4076C3.40778 14.6511 3.51158 14.7729 3.59874 14.9029C3.79854 15.201 3.93721 15.5358 4.00672 15.8879C4.03705 16.0415 4.04977 16.201 4.07522 16.5199C4.13918 17.3213 4.17115 17.722 4.28923 18.0563C4.56233 18.8295 5.17051 19.4377 5.94371 19.7108C6.278 19.8288 6.6787 19.8608 7.48008 19.9248C7.79903 19.9502 7.95851 19.963 8.1121 19.9933C8.46417 20.0628 8.79896 20.2015 9.09706 20.4013C9.22711 20.4884 9.34887 20.5922 9.5924 20.7997C10.2043 21.3212 10.5102 21.5819 10.8301 21.7348C11.57 22.0884 12.43 22.0884 13.1699 21.7348C13.4898 21.5819 13.7957 21.3212 14.4076 20.7997C14.6511 20.5922 14.7729 20.4884 14.9029 20.4013C15.201 20.2015 15.5358 20.0628 15.8879 19.9933C16.0415 19.963 16.201 19.9502 16.5199 19.9248C17.3213 19.8608 17.722 19.8288 18.0563 19.7108C18.8295 19.4377 19.4377 18.8295 19.7108 18.0563C19.8288 17.722 19.8608 17.3213 19.9248 16.5199C19.9502 16.201 19.963 16.0415 19.9933 15.8879C20.0628 15.5358 20.2015 15.201 20.4013 14.9029C20.4884 14.7729 20.5922 14.6511 20.7997 14.4076C21.3212 13.7957 21.5819 13.4898 21.7348 13.1699C22.0884 12.43 22.0884 11.57 21.7348 10.8301C21.5819 10.5102 21.3212 10.2043 20.7997 9.5924C20.5922 9.34887 20.4884 9.22711 20.4013 9.09706C20.2015 8.79896 20.0628 8.46417 19.9933 8.1121C19.963 7.95851 19.9502 7.79903 19.9248 7.48008C19.8608 6.6787 19.8288 6.278 19.7108 5.94371C19.4377 5.17051 18.8295 4.56233 18.0563 4.28923C17.722 4.17115 17.3213 4.13918 16.5199 4.07522C16.201 4.04977 16.0415 4.03705 15.8879 4.00672C15.5358 3.93721 15.201 3.79854 14.9029 3.59874C14.7729 3.51158 14.6511 3.40781 14.4076 3.20027C13.7957 2.67883 13.4898 2.41811 13.1699 2.26522C12.43 1.91159 11.57 1.91159 10.8301 2.26522C10.5102 2.4181 10.2043 2.67883 9.5924 3.20027ZM16.3735 9.86314C16.6913 9.5453 16.6913 9.03 16.3735 8.71216C16.0557 8.39433 15.5403 8.39433 15.2225 8.71216L10.3723 13.5624L8.77746 11.9676C8.45963 11.6498 7.94432 11.6498 7.62649 11.9676C7.30866 12.2854 7.30866 12.8007 7.62649 13.1186L9.79678 15.2889C10.1146 15.6067 10.6299 15.6067 10.9478 15.2889L16.3735 9.86314Z", fill: "currentColor" }), " ")))), /* @__PURE__ */ React21.createElement("span", { className: "text-[12px] text-neutral-500" }, memberSince)), /* @__PURE__ */ React21.createElement("div", { className: "w-full flex flex-col gap-4 mt-2" }, /* @__PURE__ */ React21.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React21.createElement(
|
|
2385
2332
|
MenuRow2,
|
|
2386
2333
|
{
|
|
2387
2334
|
icon: UserIcon2,
|
|
@@ -2389,7 +2336,7 @@ var UniversalProfilePage = ({
|
|
|
2389
2336
|
subtitle: "Your account details",
|
|
2390
2337
|
onClick: onAccountTap
|
|
2391
2338
|
}
|
|
2392
|
-
), /* @__PURE__ */
|
|
2339
|
+
), /* @__PURE__ */ React21.createElement(
|
|
2393
2340
|
MenuRow2,
|
|
2394
2341
|
{
|
|
2395
2342
|
icon: LockKeyIcon2,
|
|
@@ -2397,7 +2344,7 @@ var UniversalProfilePage = ({
|
|
|
2397
2344
|
subtitle: "2FA & authentication",
|
|
2398
2345
|
onClick: onSecurityTap
|
|
2399
2346
|
}
|
|
2400
|
-
), /* @__PURE__ */
|
|
2347
|
+
), /* @__PURE__ */ React21.createElement(
|
|
2401
2348
|
MenuRow2,
|
|
2402
2349
|
{
|
|
2403
2350
|
icon: ShieldUserIcon,
|
|
@@ -2405,7 +2352,7 @@ var UniversalProfilePage = ({
|
|
|
2405
2352
|
subtitle: "Manage web3 profile",
|
|
2406
2353
|
onClick: onDefiTap
|
|
2407
2354
|
}
|
|
2408
|
-
), /* @__PURE__ */
|
|
2355
|
+
), /* @__PURE__ */ React21.createElement(
|
|
2409
2356
|
MenuRow2,
|
|
2410
2357
|
{
|
|
2411
2358
|
icon: MessageQuestionIcon,
|
|
@@ -2414,7 +2361,7 @@ var UniversalProfilePage = ({
|
|
|
2414
2361
|
onClick: onHelpTap,
|
|
2415
2362
|
isLast: true
|
|
2416
2363
|
}
|
|
2417
|
-
)), /* @__PURE__ */
|
|
2364
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React21.createElement(
|
|
2418
2365
|
MenuRow2,
|
|
2419
2366
|
{
|
|
2420
2367
|
icon: UserIdVerificationIcon,
|
|
@@ -2422,7 +2369,7 @@ var UniversalProfilePage = ({
|
|
|
2422
2369
|
subtitle: "Account Verifications",
|
|
2423
2370
|
onClick: onVerificationsTap
|
|
2424
2371
|
}
|
|
2425
|
-
), /* @__PURE__ */
|
|
2372
|
+
), /* @__PURE__ */ React21.createElement(
|
|
2426
2373
|
MenuRow2,
|
|
2427
2374
|
{
|
|
2428
2375
|
icon: CrownIcon,
|
|
@@ -2430,7 +2377,7 @@ var UniversalProfilePage = ({
|
|
|
2430
2377
|
subtitle: "Referral & Rewards",
|
|
2431
2378
|
onClick: onExportTap
|
|
2432
2379
|
}
|
|
2433
|
-
), /* @__PURE__ */
|
|
2380
|
+
), /* @__PURE__ */ React21.createElement(
|
|
2434
2381
|
MenuRow2,
|
|
2435
2382
|
{
|
|
2436
2383
|
icon: LogoutCircle02Icon,
|
|
@@ -2439,7 +2386,7 @@ var UniversalProfilePage = ({
|
|
|
2439
2386
|
onClick: () => setShowLogoutDialog(true),
|
|
2440
2387
|
isLast: true
|
|
2441
2388
|
}
|
|
2442
|
-
)), /* @__PURE__ */
|
|
2389
|
+
)), /* @__PURE__ */ React21.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden mb-4" }, /* @__PURE__ */ React21.createElement(
|
|
2443
2390
|
MenuRow2,
|
|
2444
2391
|
{
|
|
2445
2392
|
icon: UserRemove01Icon,
|
|
@@ -2448,7 +2395,7 @@ var UniversalProfilePage = ({
|
|
|
2448
2395
|
onClick: onDeleteTap,
|
|
2449
2396
|
isLast: true
|
|
2450
2397
|
}
|
|
2451
|
-
))), /* @__PURE__ */
|
|
2398
|
+
))), /* @__PURE__ */ React21.createElement(
|
|
2452
2399
|
ConfirmationDialog,
|
|
2453
2400
|
{
|
|
2454
2401
|
isOpen: showLogoutDialog,
|
|
@@ -2462,21 +2409,21 @@ var UniversalProfilePage = ({
|
|
|
2462
2409
|
}
|
|
2463
2410
|
));
|
|
2464
2411
|
};
|
|
2465
|
-
var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titleColor = "text-black", isLast = false }) => /* @__PURE__ */
|
|
2412
|
+
var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titleColor = "text-black", isLast = false }) => /* @__PURE__ */ React21.createElement(
|
|
2466
2413
|
"div",
|
|
2467
2414
|
{
|
|
2468
2415
|
onClick,
|
|
2469
2416
|
className: `flex items-center p-4 cursor-pointer hover:bg-neutral-50 transition-colors ${!isLast ? "" : ""}`
|
|
2470
2417
|
},
|
|
2471
|
-
/* @__PURE__ */
|
|
2472
|
-
/* @__PURE__ */
|
|
2473
|
-
/* @__PURE__ */
|
|
2418
|
+
/* @__PURE__ */ React21.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React21.createElement(HugeiconsIcon15, { icon, size: 16, className: iconColor })),
|
|
2419
|
+
/* @__PURE__ */ React21.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React21.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
2420
|
+
/* @__PURE__ */ React21.createElement(HugeiconsIcon15, { icon: ArrowRight01Icon4, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2474
2421
|
);
|
|
2475
2422
|
|
|
2476
2423
|
// src/components/UniversalSidebar.tsx
|
|
2477
|
-
import
|
|
2424
|
+
import React22, { useState as useState14 } from "react";
|
|
2478
2425
|
import Link5 from "next/link";
|
|
2479
|
-
import { HugeiconsIcon as
|
|
2426
|
+
import { HugeiconsIcon as HugeiconsIcon16 } from "@hugeicons/react";
|
|
2480
2427
|
import {
|
|
2481
2428
|
LogoutCircle02Icon as LogoutCircle02Icon2
|
|
2482
2429
|
} from "@hugeicons/core-free-icons";
|
|
@@ -2502,10 +2449,10 @@ var UniversalSidebar = ({
|
|
|
2502
2449
|
setShowLogoutDialog(false);
|
|
2503
2450
|
}
|
|
2504
2451
|
};
|
|
2505
|
-
return /* @__PURE__ */
|
|
2452
|
+
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.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__ */ React22.createElement("div", { className: "h-24 shrink-0" }), /* @__PURE__ */ React22.createElement("nav", { className: "flex-1 flex flex-col gap-3 px-2" }, navItems.map((item, index) => {
|
|
2506
2453
|
const isExactOrSubMatch = item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`);
|
|
2507
2454
|
const isCurrentRoute = isExactOrSubMatch || !hasActiveMatch && index === 0;
|
|
2508
|
-
return /* @__PURE__ */
|
|
2455
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2509
2456
|
Link5,
|
|
2510
2457
|
{
|
|
2511
2458
|
key: item.name,
|
|
@@ -2514,8 +2461,8 @@ var UniversalSidebar = ({
|
|
|
2514
2461
|
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"}`,
|
|
2515
2462
|
title: item.name
|
|
2516
2463
|
},
|
|
2517
|
-
/* @__PURE__ */
|
|
2518
|
-
|
|
2464
|
+
/* @__PURE__ */ React22.createElement(
|
|
2465
|
+
HugeiconsIcon16,
|
|
2519
2466
|
{
|
|
2520
2467
|
icon: item.icon,
|
|
2521
2468
|
size: 20,
|
|
@@ -2523,14 +2470,14 @@ var UniversalSidebar = ({
|
|
|
2523
2470
|
}
|
|
2524
2471
|
)
|
|
2525
2472
|
);
|
|
2526
|
-
})), /* @__PURE__ */
|
|
2473
|
+
})), /* @__PURE__ */ React22.createElement("div", { className: "p-4 shrink-0 flex flex-col items-center gap-2 mb-4" }, showLogoutAction && /* @__PURE__ */ React22.createElement(
|
|
2527
2474
|
"button",
|
|
2528
2475
|
{
|
|
2529
2476
|
onClick: () => setShowLogoutDialog(true),
|
|
2530
2477
|
className: "w-12 h-12 rounded-full flex items-center justify-center text-neutral-500 hover:bg-white/50 transition-all outline-none"
|
|
2531
2478
|
},
|
|
2532
|
-
/* @__PURE__ */
|
|
2533
|
-
))), showLogoutAction && /* @__PURE__ */
|
|
2479
|
+
/* @__PURE__ */ React22.createElement(HugeiconsIcon16, { icon: LogoutCircle02Icon2, size: 20 })
|
|
2480
|
+
))), showLogoutAction && /* @__PURE__ */ React22.createElement(
|
|
2534
2481
|
ConfirmationDialog,
|
|
2535
2482
|
{
|
|
2536
2483
|
isOpen: showLogoutDialog,
|
|
@@ -2546,12 +2493,12 @@ var UniversalSidebar = ({
|
|
|
2546
2493
|
};
|
|
2547
2494
|
|
|
2548
2495
|
// src/components/HeroSection.tsx
|
|
2549
|
-
import
|
|
2496
|
+
import React24, { useState as useState16, useEffect as useEffect10, useRef as useRef4 } from "react";
|
|
2550
2497
|
import Link6 from "next/link";
|
|
2551
2498
|
import Image3 from "next/image";
|
|
2552
2499
|
|
|
2553
2500
|
// src/components/WaitlistDialog.tsx
|
|
2554
|
-
import
|
|
2501
|
+
import React23, { useState as useState15 } from "react";
|
|
2555
2502
|
import { toast as toast6 } from "react-hot-toast";
|
|
2556
2503
|
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
2557
2504
|
const [email, setEmail] = useState15("");
|
|
@@ -2586,19 +2533,19 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2586
2533
|
setIsLoading(false);
|
|
2587
2534
|
}
|
|
2588
2535
|
};
|
|
2589
|
-
return /* @__PURE__ */
|
|
2536
|
+
return /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ React23.createElement(
|
|
2590
2537
|
"div",
|
|
2591
2538
|
{
|
|
2592
2539
|
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"
|
|
2593
2540
|
},
|
|
2594
|
-
/* @__PURE__ */
|
|
2541
|
+
/* @__PURE__ */ React23.createElement(
|
|
2595
2542
|
"button",
|
|
2596
2543
|
{
|
|
2597
2544
|
onClick: onClose,
|
|
2598
2545
|
disabled: isLoading,
|
|
2599
2546
|
className: "absolute top-4 right-4 p-2 text-neutral-700 hover:text-neutral-400 transition-colors disabled:opacity-50 outline-none"
|
|
2600
2547
|
},
|
|
2601
|
-
/* @__PURE__ */
|
|
2548
|
+
/* @__PURE__ */ React23.createElement(
|
|
2602
2549
|
"svg",
|
|
2603
2550
|
{
|
|
2604
2551
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2611,11 +2558,11 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2611
2558
|
strokeLinecap: "round",
|
|
2612
2559
|
strokeLinejoin: "round"
|
|
2613
2560
|
},
|
|
2614
|
-
/* @__PURE__ */
|
|
2615
|
-
/* @__PURE__ */
|
|
2561
|
+
/* @__PURE__ */ React23.createElement("path", { d: "M18 6 6 18" }),
|
|
2562
|
+
/* @__PURE__ */ React23.createElement("path", { d: "m6 6 12 12" })
|
|
2616
2563
|
)
|
|
2617
2564
|
),
|
|
2618
|
-
/* @__PURE__ */
|
|
2565
|
+
/* @__PURE__ */ React23.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ React23.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-2xl text-black tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ React23.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__ */ React23.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ React23.createElement(
|
|
2619
2566
|
TextInput,
|
|
2620
2567
|
{
|
|
2621
2568
|
label: "Email ID",
|
|
@@ -2625,7 +2572,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2625
2572
|
placeholder: "name@example.com",
|
|
2626
2573
|
disabled: isLoading
|
|
2627
2574
|
}
|
|
2628
|
-
), /* @__PURE__ */
|
|
2575
|
+
), /* @__PURE__ */ React23.createElement(
|
|
2629
2576
|
ThreeDActionButton,
|
|
2630
2577
|
{
|
|
2631
2578
|
type: "submit",
|
|
@@ -2683,7 +2630,7 @@ var HeroSection = ({
|
|
|
2683
2630
|
setIsWaitlistOpen(true);
|
|
2684
2631
|
}
|
|
2685
2632
|
};
|
|
2686
|
-
return /* @__PURE__ */
|
|
2633
|
+
return /* @__PURE__ */ React24.createElement("div", { className: "w-screen min-h-screen flex justify-center items-center p-4" }, /* @__PURE__ */ React24.createElement("section", { className: "relative h-[95vh] w-full overflow-hidden rounded-2xl " }, bgVideoSrc ? /* @__PURE__ */ React24.createElement(
|
|
2687
2634
|
"video",
|
|
2688
2635
|
{
|
|
2689
2636
|
src: bgVideoSrc,
|
|
@@ -2694,7 +2641,7 @@ var HeroSection = ({
|
|
|
2694
2641
|
playsInline: true,
|
|
2695
2642
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2696
2643
|
}
|
|
2697
|
-
) : bgImageSrc ? /* @__PURE__ */
|
|
2644
|
+
) : bgImageSrc ? /* @__PURE__ */ React24.createElement(
|
|
2698
2645
|
Image3,
|
|
2699
2646
|
{
|
|
2700
2647
|
src: bgImageSrc,
|
|
@@ -2703,7 +2650,7 @@ var HeroSection = ({
|
|
|
2703
2650
|
priority: true,
|
|
2704
2651
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2705
2652
|
}
|
|
2706
|
-
) : null, /* @__PURE__ */
|
|
2653
|
+
) : null, /* @__PURE__ */ React24.createElement(
|
|
2707
2654
|
"div",
|
|
2708
2655
|
{
|
|
2709
2656
|
className: "pointer-events-none absolute inset-0 z-10 opacity-[0.7] mix-blend-overlay",
|
|
@@ -2711,15 +2658,15 @@ var HeroSection = ({
|
|
|
2711
2658
|
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")`
|
|
2712
2659
|
}
|
|
2713
2660
|
}
|
|
2714
|
-
), /* @__PURE__ */
|
|
2661
|
+
), /* @__PURE__ */ React24.createElement("div", { className: "pointer-events-none absolute inset-0 bg-linear-to-b from-black/30 via-transparent to-black/80 z-10" }), /* @__PURE__ */ React24.createElement("div", { className: "absolute bottom-0 left-0 right-0 px-4 pb-4 sm:px-6 md:px-10 z-20" }, /* @__PURE__ */ React24.createElement("div", { className: "grid grid-cols-12 items-end gap-4" }, /* @__PURE__ */ React24.createElement("div", { className: "col-span-12 lg:col-span-8" }, /* @__PURE__ */ React24.createElement(
|
|
2715
2662
|
"h1",
|
|
2716
2663
|
{
|
|
2717
2664
|
ref: titleRef,
|
|
2718
2665
|
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]"
|
|
2719
2666
|
},
|
|
2720
|
-
/* @__PURE__ */
|
|
2721
|
-
)), /* @__PURE__ */
|
|
2722
|
-
/* @__PURE__ */
|
|
2667
|
+
/* @__PURE__ */ React24.createElement("div", { className: "inline-flex flex-wrap" }, /* @__PURE__ */ React24.createElement("span", { className: `inline-block relative transition-all duration-1000 ${isAnimating ? "opacity-100 translate-y-0" : "opacity-0 translate-y-10"}` }, titlePrefix, titlePrefix && /* @__PURE__ */ React24.createElement("br", null), highlightText, /* @__PURE__ */ React24.createElement("span", { className: "absolute top-[0.65em] right-[-0.3em] text-[0.31em] text-[#ffffff]/70" }, "*")))
|
|
2668
|
+
)), /* @__PURE__ */ React24.createElement("div", { className: "col-span-12 flex flex-col gap-5 pb-6 lg:col-span-4 lg:pb-10" }, subtitle && /* @__PURE__ */ React24.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__ */ React24.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!
|
|
2669
|
+
/* @__PURE__ */ React24.createElement(
|
|
2723
2670
|
Link6,
|
|
2724
2671
|
{
|
|
2725
2672
|
href: isWaitlist ? "#" : ctaHref || "#",
|
|
@@ -2727,15 +2674,15 @@ var HeroSection = ({
|
|
|
2727
2674
|
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"
|
|
2728
2675
|
},
|
|
2729
2676
|
ctaText,
|
|
2730
|
-
/* @__PURE__ */
|
|
2731
|
-
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
2677
|
+
/* @__PURE__ */ React24.createElement("span", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-black transition-transform group-hover:scale-110" }, /* @__PURE__ */ React24.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__ */ React24.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ React24.createElement("path", { d: "m12 5 7 7-7 7" })))
|
|
2678
|
+
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React24.createElement(
|
|
2732
2679
|
Link6,
|
|
2733
2680
|
{
|
|
2734
2681
|
href: secondaryCtaHref,
|
|
2735
2682
|
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"
|
|
2736
2683
|
},
|
|
2737
2684
|
secondaryCtaText
|
|
2738
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */
|
|
2685
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col gap-3 mt-4" }, appsText && /* @__PURE__ */ React24.createElement("span", { className: "text-[10px] tracking-widest text-[#ffffff]/50 " }, appsText), /* @__PURE__ */ React24.createElement("div", { className: "flex items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ React24.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__ */ React24.createElement(
|
|
2739
2686
|
Image3,
|
|
2740
2687
|
{
|
|
2741
2688
|
src: logo.src,
|
|
@@ -2744,7 +2691,7 @@ var HeroSection = ({
|
|
|
2744
2691
|
height: 28,
|
|
2745
2692
|
className: "object-contain"
|
|
2746
2693
|
}
|
|
2747
|
-
))))))))), /* @__PURE__ */
|
|
2694
|
+
))))))))), /* @__PURE__ */ React24.createElement(
|
|
2748
2695
|
WaitlistDialog,
|
|
2749
2696
|
{
|
|
2750
2697
|
isOpen: isWaitlistOpen,
|
|
@@ -2754,8 +2701,8 @@ var HeroSection = ({
|
|
|
2754
2701
|
};
|
|
2755
2702
|
|
|
2756
2703
|
// src/components/AppBento2.tsx
|
|
2757
|
-
import
|
|
2758
|
-
import { HugeiconsIcon as
|
|
2704
|
+
import React25, { useState as useState17, useEffect as useEffect11, useRef as useRef5 } from "react";
|
|
2705
|
+
import { HugeiconsIcon as HugeiconsIcon17 } from "@hugeicons/react";
|
|
2759
2706
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2760
2707
|
const [isAnimating, setIsAnimating] = useState17(false);
|
|
2761
2708
|
const titleRef = useRef5(null);
|
|
@@ -2777,7 +2724,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2777
2724
|
}
|
|
2778
2725
|
return () => observer.disconnect();
|
|
2779
2726
|
}, []);
|
|
2780
|
-
return /* @__PURE__ */
|
|
2727
|
+
return /* @__PURE__ */ React25.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ React25.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React25.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React25.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React25.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React25.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ React25.createElement(
|
|
2781
2728
|
"h2",
|
|
2782
2729
|
{
|
|
2783
2730
|
ref: titleRef,
|
|
@@ -2785,7 +2732,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2785
2732
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2786
2733
|
},
|
|
2787
2734
|
headline
|
|
2788
|
-
))), /* @__PURE__ */
|
|
2735
|
+
))), /* @__PURE__ */ React25.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
2789
2736
|
const isWhite = i === 0;
|
|
2790
2737
|
const isBlack = i === 1;
|
|
2791
2738
|
const isNeutral = i === 2;
|
|
@@ -2807,33 +2754,33 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2807
2754
|
const textColor = isBlack ? "text-white" : "text-black";
|
|
2808
2755
|
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
2809
2756
|
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
2810
|
-
return /* @__PURE__ */
|
|
2757
|
+
return /* @__PURE__ */ React25.createElement(
|
|
2811
2758
|
"div",
|
|
2812
2759
|
{
|
|
2813
2760
|
key: i,
|
|
2814
2761
|
className: `relative rounded-2xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`,
|
|
2815
2762
|
style: { boxShadow: getShadowStyle() }
|
|
2816
2763
|
},
|
|
2817
|
-
/* @__PURE__ */
|
|
2764
|
+
/* @__PURE__ */ React25.createElement(
|
|
2818
2765
|
"div",
|
|
2819
2766
|
{
|
|
2820
2767
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
2821
2768
|
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")` }
|
|
2822
2769
|
}
|
|
2823
2770
|
),
|
|
2824
|
-
isBlack && /* @__PURE__ */
|
|
2825
|
-
/* @__PURE__ */
|
|
2826
|
-
/* @__PURE__ */
|
|
2771
|
+
isBlack && /* @__PURE__ */ React25.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" }),
|
|
2772
|
+
/* @__PURE__ */ React25.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React25.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__ */ React25.createElement(HugeiconsIcon17, { icon: f.icon, size: 180 }))),
|
|
2773
|
+
/* @__PURE__ */ React25.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React25.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React25.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ React25.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ React25.createElement(HugeiconsIcon17, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ React25.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React25.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ React25.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2827
2774
|
);
|
|
2828
2775
|
})))));
|
|
2829
2776
|
};
|
|
2830
2777
|
|
|
2831
2778
|
// src/components/UniversalSecurityPage.tsx
|
|
2832
|
-
import
|
|
2779
|
+
import React26, { useState as useState18, useRef as useRef6 } from "react";
|
|
2833
2780
|
import toast7 from "react-hot-toast";
|
|
2834
|
-
import { HugeiconsIcon as
|
|
2781
|
+
import { HugeiconsIcon as HugeiconsIcon18 } from "@hugeicons/react";
|
|
2835
2782
|
import {
|
|
2836
|
-
CancelCircleIcon as
|
|
2783
|
+
CancelCircleIcon as CancelCircleIcon6,
|
|
2837
2784
|
Loading03Icon as Loading03Icon11,
|
|
2838
2785
|
Copy01Icon as Copy01Icon3,
|
|
2839
2786
|
ArrowLeft01Icon as ArrowLeft01Icon6,
|
|
@@ -3006,15 +2953,15 @@ var UniversalSecurityPage = ({
|
|
|
3006
2953
|
setIsSubmitting(false);
|
|
3007
2954
|
}
|
|
3008
2955
|
};
|
|
3009
|
-
return /* @__PURE__ */
|
|
2956
|
+
return /* @__PURE__ */ React26.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ React26.createElement(ManagedToaster, null), /* @__PURE__ */ React26.createElement("div", { className: "mb-6 flex items-center px-1" }, /* @__PURE__ */ React26.createElement(
|
|
3010
2957
|
"button",
|
|
3011
2958
|
{
|
|
3012
2959
|
onClick: onBack,
|
|
3013
2960
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
3014
2961
|
},
|
|
3015
|
-
/* @__PURE__ */
|
|
2962
|
+
/* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon: ArrowLeft01Icon6, size: 16 }),
|
|
3016
2963
|
" Back"
|
|
3017
|
-
)), /* @__PURE__ */
|
|
2964
|
+
)), /* @__PURE__ */ React26.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ React26.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React26.createElement(
|
|
3018
2965
|
MenuRow3,
|
|
3019
2966
|
{
|
|
3020
2967
|
icon: CircleLockCheck02Icon,
|
|
@@ -3025,7 +2972,7 @@ var UniversalSecurityPage = ({
|
|
|
3025
2972
|
toggleState: has2FA,
|
|
3026
2973
|
toggleLoading: is2FALoading || isFetchingSetup
|
|
3027
2974
|
}
|
|
3028
|
-
), /* @__PURE__ */
|
|
2975
|
+
), /* @__PURE__ */ React26.createElement(
|
|
3029
2976
|
MenuRow3,
|
|
3030
2977
|
{
|
|
3031
2978
|
icon: Key01Icon,
|
|
@@ -3037,18 +2984,18 @@ var UniversalSecurityPage = ({
|
|
|
3037
2984
|
toggleLoading: isPasskeyLoading,
|
|
3038
2985
|
isLast: true
|
|
3039
2986
|
}
|
|
3040
|
-
))), show2FASetupModal && /* @__PURE__ */
|
|
2987
|
+
))), show2FASetupModal && /* @__PURE__ */ React26.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React26.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShow2FASetupModal(false) }), /* @__PURE__ */ React26.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__ */ React26.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React26.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Enable 2FA"), /* @__PURE__ */ React26.createElement("button", { onClick: () => !isSubmitting && setShow2FASetupModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon: CancelCircleIcon6, size: 18 }))), /* @__PURE__ */ React26.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ React26.createElement("div", { className: "w-full flex justify-center mb-6 mix-blend-multiply" }, twoFaQr ? /* @__PURE__ */ React26.createElement("img", { src: twoFaQr, alt: "2FA QR Code", className: "w-40 h-40 object-contain rounded-xl border border-neutral-200 p-2" }) : /* @__PURE__ */ React26.createElement("div", { className: "w-40 h-40 bg-neutral-100 rounded-xl flex items-center justify-center animate-pulse" })), /* @__PURE__ */ React26.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-8" }, /* @__PURE__ */ React26.createElement("div", null, /* @__PURE__ */ React26.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2 uppercase" }, "Setup Key"), /* @__PURE__ */ React26.createElement("div", { className: "flex items-center gap-2 min-w-0 bg-neutral-50 px-3 py-2.5 rounded-xl " }, /* @__PURE__ */ React26.createElement("span", { className: "text-[13px] font-mono tracking-widest text-black truncate min-w-0 block flex-1" }, twoFaSecret), /* @__PURE__ */ React26.createElement(
|
|
3041
2988
|
"button",
|
|
3042
2989
|
{
|
|
3043
2990
|
type: "button",
|
|
3044
2991
|
onClick: () => handleCopySecret(twoFaSecret),
|
|
3045
2992
|
className: "text-neutral-400 hover:text-black transition-colors outline-none shrink-0 ml-2"
|
|
3046
2993
|
},
|
|
3047
|
-
/* @__PURE__ */
|
|
3048
|
-
)))), /* @__PURE__ */
|
|
2994
|
+
/* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon: Copy01Icon3, size: 16 })
|
|
2995
|
+
)))), /* @__PURE__ */ React26.createElement("div", { className: "text-center mb-8 mt-2" }, /* @__PURE__ */ React26.createElement("h2", { className: "text-xl text-black mb-2 tracking-tight" }, "Security Check"), /* @__PURE__ */ React26.createElement("p", { className: "text-[13px] text-neutral-500" }, "Enter the 6-digit code from your app")), /* @__PURE__ */ React26.createElement("form", { className: "space-y-4", autoComplete: "off", onSubmit: (e) => {
|
|
3049
2996
|
e.preventDefault();
|
|
3050
2997
|
submitEnable2FA(otp.join(""));
|
|
3051
|
-
} }, /* @__PURE__ */
|
|
2998
|
+
} }, /* @__PURE__ */ React26.createElement("div", { className: "flex justify-between gap-2 pb-6", onPaste: handlePaste }, otp.map((digit, index) => /* @__PURE__ */ React26.createElement(
|
|
3052
2999
|
"input",
|
|
3053
3000
|
{
|
|
3054
3001
|
key: index,
|
|
@@ -3067,7 +3014,7 @@ var UniversalSecurityPage = ({
|
|
|
3067
3014
|
},
|
|
3068
3015
|
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"
|
|
3069
3016
|
}
|
|
3070
|
-
))), /* @__PURE__ */
|
|
3017
|
+
))), /* @__PURE__ */ React26.createElement(
|
|
3071
3018
|
ThreeDActionButton,
|
|
3072
3019
|
{
|
|
3073
3020
|
type: "submit",
|
|
@@ -3076,19 +3023,19 @@ var UniversalSecurityPage = ({
|
|
|
3076
3023
|
className: "w-full py-3.5"
|
|
3077
3024
|
},
|
|
3078
3025
|
"Verify & Enable"
|
|
3079
|
-
), /* @__PURE__ */
|
|
3026
|
+
), /* @__PURE__ */ React26.createElement(
|
|
3080
3027
|
"button",
|
|
3081
3028
|
{
|
|
3082
3029
|
type: "button",
|
|
3083
3030
|
onClick: () => handleCopySecret(twoFaSecret),
|
|
3084
3031
|
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"
|
|
3085
3032
|
},
|
|
3086
|
-
/* @__PURE__ */
|
|
3033
|
+
/* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon: Copy01Icon3, size: 16, className: "mr-2" }),
|
|
3087
3034
|
"Copy Secret Key"
|
|
3088
|
-
))))), show2FADisableModal && /* @__PURE__ */
|
|
3035
|
+
))))), show2FADisableModal && /* @__PURE__ */ React26.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React26.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShow2FADisableModal(false) }), /* @__PURE__ */ React26.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__ */ React26.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React26.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Disable 2FA"), /* @__PURE__ */ React26.createElement("button", { onClick: () => !isSubmitting && setShow2FADisableModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon: CancelCircleIcon6, size: 18 }))), /* @__PURE__ */ React26.createElement("div", { className: "p-6" }, /* @__PURE__ */ React26.createElement("div", { className: "text-center mb-8 mt-2" }, /* @__PURE__ */ React26.createElement("h2", { className: "text-xl text-black mb-2 tracking-tight" }, "Security Check"), /* @__PURE__ */ React26.createElement("p", { className: "text-[13px] text-neutral-500" }, "Enter the code from your authenticator app to disable 2FA.")), /* @__PURE__ */ React26.createElement("form", { className: "space-y-8", autoComplete: "off", onSubmit: (e) => {
|
|
3089
3036
|
e.preventDefault();
|
|
3090
3037
|
submitDisable2FA(otp.join(""));
|
|
3091
|
-
} }, /* @__PURE__ */
|
|
3038
|
+
} }, /* @__PURE__ */ React26.createElement("div", { className: "flex justify-between gap-2", onPaste: handlePaste }, otp.map((digit, index) => /* @__PURE__ */ React26.createElement(
|
|
3092
3039
|
"input",
|
|
3093
3040
|
{
|
|
3094
3041
|
key: index,
|
|
@@ -3107,7 +3054,7 @@ var UniversalSecurityPage = ({
|
|
|
3107
3054
|
},
|
|
3108
3055
|
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"
|
|
3109
3056
|
}
|
|
3110
|
-
))), /* @__PURE__ */
|
|
3057
|
+
))), /* @__PURE__ */ React26.createElement(
|
|
3111
3058
|
ThreeDActionButton,
|
|
3112
3059
|
{
|
|
3113
3060
|
type: "submit",
|
|
@@ -3116,7 +3063,7 @@ var UniversalSecurityPage = ({
|
|
|
3116
3063
|
className: "w-full py-3.5"
|
|
3117
3064
|
},
|
|
3118
3065
|
"Verify & Disable"
|
|
3119
|
-
))))), showPasskeyModal && /* @__PURE__ */
|
|
3066
|
+
))))), showPasskeyModal && /* @__PURE__ */ React26.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React26.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShowPasskeyModal(false) }), /* @__PURE__ */ React26.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__ */ React26.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React26.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Enable Passkey"), /* @__PURE__ */ React26.createElement("button", { onClick: () => !isSubmitting && setShowPasskeyModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon: CancelCircleIcon6, size: 18 }))), /* @__PURE__ */ React26.createElement("div", { className: "p-6 text-center" }, /* @__PURE__ */ React26.createElement("h2", { className: "text-lg text-black mb-2 tracking-tight" }, "Simplify your Sign In"), /* @__PURE__ */ React26.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__ */ React26.createElement(
|
|
3120
3067
|
ThreeDActionButton,
|
|
3121
3068
|
{
|
|
3122
3069
|
onClick: submitEnablePasskey,
|
|
@@ -3138,26 +3085,26 @@ var MenuRow3 = ({
|
|
|
3138
3085
|
toggleState = false,
|
|
3139
3086
|
toggleLoading = false,
|
|
3140
3087
|
disabled = false
|
|
3141
|
-
}) => /* @__PURE__ */
|
|
3088
|
+
}) => /* @__PURE__ */ React26.createElement(
|
|
3142
3089
|
"div",
|
|
3143
3090
|
{
|
|
3144
3091
|
onClick: disabled ? void 0 : onClick,
|
|
3145
3092
|
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
|
|
3146
3093
|
},
|
|
3147
|
-
/* @__PURE__ */
|
|
3148
|
-
/* @__PURE__ */
|
|
3149
|
-
isToggle ? /* @__PURE__ */
|
|
3094
|
+
/* @__PURE__ */ React26.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon, size: 16, className: iconColor })),
|
|
3095
|
+
/* @__PURE__ */ React26.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React26.createElement("p", { className: `text-[14px] truncate ${titleColor}` }, title), /* @__PURE__ */ React26.createElement("p", { className: "text-[12px] text-neutral-500 truncate" }, subtitle)),
|
|
3096
|
+
isToggle ? /* @__PURE__ */ React26.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__ */ React26.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__ */ React26.createElement(HugeiconsIcon18, { icon: Loading03Icon11, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon: ArrowRight01Icon5, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
3150
3097
|
);
|
|
3151
3098
|
|
|
3152
3099
|
// src/components/FeatureScroll.tsx
|
|
3153
|
-
import
|
|
3100
|
+
import React27, { useRef as useRef7, useState as useState19, useEffect as useEffect12 } from "react";
|
|
3154
3101
|
import Image4 from "next/image";
|
|
3155
|
-
import { HugeiconsIcon as
|
|
3102
|
+
import { HugeiconsIcon as HugeiconsIcon19 } from "@hugeicons/react";
|
|
3156
3103
|
import { ArrowLeft01Icon as ArrowLeft01Icon7, ArrowRight01Icon as ArrowRight01Icon6, Loading03Icon as Loading03Icon12 } from "@hugeicons/core-free-icons";
|
|
3157
3104
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
3158
3105
|
const [isBgLoading, setIsBgLoading] = useState19(true);
|
|
3159
3106
|
const [isFgLoading, setIsFgLoading] = useState19(!!feature.image);
|
|
3160
|
-
return /* @__PURE__ */
|
|
3107
|
+
return /* @__PURE__ */ React27.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__ */ React27.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-100 rounded-2xl overflow-hidden mb-6 flex items-center justify-center" }, /* @__PURE__ */ React27.createElement(
|
|
3161
3108
|
Image4,
|
|
3162
3109
|
{
|
|
3163
3110
|
src: bgImage,
|
|
@@ -3170,7 +3117,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3170
3117
|
${isBgLoading ? "blur-xl scale-110" : "blur-0 scale-100"}
|
|
3171
3118
|
`
|
|
3172
3119
|
}
|
|
3173
|
-
), /* @__PURE__ */
|
|
3120
|
+
), /* @__PURE__ */ React27.createElement(
|
|
3174
3121
|
"div",
|
|
3175
3122
|
{
|
|
3176
3123
|
className: "absolute inset-0 w-full h-full pointer-events-none z-0 opacity-[0.25] mix-blend-overlay",
|
|
@@ -3178,7 +3125,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3178
3125
|
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")`
|
|
3179
3126
|
}
|
|
3180
3127
|
}
|
|
3181
|
-
), isFgLoading && feature.image && /* @__PURE__ */
|
|
3128
|
+
), isFgLoading && feature.image && /* @__PURE__ */ React27.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__ */ React27.createElement(HugeiconsIcon19, { icon: Loading03Icon12, size: 32, className: "animate-spin text-neutral-400" })), feature.image && /* @__PURE__ */ React27.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__ */ React27.createElement(
|
|
3182
3129
|
Image4,
|
|
3183
3130
|
{
|
|
3184
3131
|
src: feature.image,
|
|
@@ -3191,7 +3138,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
3191
3138
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
3192
3139
|
`
|
|
3193
3140
|
}
|
|
3194
|
-
))), /* @__PURE__ */
|
|
3141
|
+
))), /* @__PURE__ */ React27.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ React27.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ React27.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 max-w-[90%]" }, feature.desc)));
|
|
3195
3142
|
};
|
|
3196
3143
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
3197
3144
|
const scrollRef = useRef7(null);
|
|
@@ -3220,72 +3167,72 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
3220
3167
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
3221
3168
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
3222
3169
|
];
|
|
3223
|
-
return /* @__PURE__ */
|
|
3170
|
+
return /* @__PURE__ */ React27.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ React27.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React27.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ React27.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ React27.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React27.createElement("h2", { className: " text-3xl tracking-tight text-black leading-[1.05]" }, headline)), /* @__PURE__ */ React27.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ React27.createElement(
|
|
3224
3171
|
"button",
|
|
3225
3172
|
{
|
|
3226
3173
|
onClick: () => scroll("left"),
|
|
3227
3174
|
disabled: !canScrollLeft,
|
|
3228
3175
|
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"
|
|
3229
3176
|
},
|
|
3230
|
-
/* @__PURE__ */
|
|
3231
|
-
), /* @__PURE__ */
|
|
3177
|
+
/* @__PURE__ */ React27.createElement(HugeiconsIcon19, { icon: ArrowLeft01Icon7, size: 20 })
|
|
3178
|
+
), /* @__PURE__ */ React27.createElement(
|
|
3232
3179
|
"button",
|
|
3233
3180
|
{
|
|
3234
3181
|
onClick: () => scroll("right"),
|
|
3235
3182
|
disabled: !canScrollRight,
|
|
3236
3183
|
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"
|
|
3237
3184
|
},
|
|
3238
|
-
/* @__PURE__ */
|
|
3239
|
-
))), /* @__PURE__ */
|
|
3185
|
+
/* @__PURE__ */ React27.createElement(HugeiconsIcon19, { icon: ArrowRight01Icon6, size: 20 })
|
|
3186
|
+
))), /* @__PURE__ */ React27.createElement(
|
|
3240
3187
|
"div",
|
|
3241
3188
|
{
|
|
3242
3189
|
ref: scrollRef,
|
|
3243
3190
|
onScroll: checkScroll,
|
|
3244
3191
|
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"
|
|
3245
3192
|
},
|
|
3246
|
-
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */
|
|
3247
|
-
), /* @__PURE__ */
|
|
3193
|
+
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ React27.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
|
|
3194
|
+
), /* @__PURE__ */ React27.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ React27.createElement(
|
|
3248
3195
|
"button",
|
|
3249
3196
|
{
|
|
3250
3197
|
onClick: () => scroll("left"),
|
|
3251
3198
|
disabled: !canScrollLeft,
|
|
3252
3199
|
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"
|
|
3253
3200
|
},
|
|
3254
|
-
/* @__PURE__ */
|
|
3255
|
-
), /* @__PURE__ */
|
|
3201
|
+
/* @__PURE__ */ React27.createElement(HugeiconsIcon19, { icon: ArrowLeft01Icon7, size: 20 })
|
|
3202
|
+
), /* @__PURE__ */ React27.createElement(
|
|
3256
3203
|
"button",
|
|
3257
3204
|
{
|
|
3258
3205
|
onClick: () => scroll("right"),
|
|
3259
3206
|
disabled: !canScrollRight,
|
|
3260
3207
|
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"
|
|
3261
3208
|
},
|
|
3262
|
-
/* @__PURE__ */
|
|
3209
|
+
/* @__PURE__ */ React27.createElement(HugeiconsIcon19, { icon: ArrowRight01Icon6, size: 20 })
|
|
3263
3210
|
))));
|
|
3264
3211
|
};
|
|
3265
3212
|
|
|
3266
3213
|
// src/components/PlatformFeatures.tsx
|
|
3267
|
-
import
|
|
3268
|
-
import { HugeiconsIcon as
|
|
3214
|
+
import React28 from "react";
|
|
3215
|
+
import { HugeiconsIcon as HugeiconsIcon20 } from "@hugeicons/react";
|
|
3269
3216
|
var PlatformFeatures = ({
|
|
3270
3217
|
tagline,
|
|
3271
3218
|
headline,
|
|
3272
3219
|
description,
|
|
3273
3220
|
features
|
|
3274
3221
|
}) => {
|
|
3275
|
-
return /* @__PURE__ */
|
|
3222
|
+
return /* @__PURE__ */ React28.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ React28.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React28.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.05] mb-6" }, headline), /* @__PURE__ */ React28.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-600 max-w-2xl" }, description)), /* @__PURE__ */ React28.createElement("div", { className: "w-full h-px bg-neutral-100 mb-16", "aria-hidden": "true" }), /* @__PURE__ */ React28.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__ */ React28.createElement(
|
|
3276
3223
|
"div",
|
|
3277
3224
|
{
|
|
3278
3225
|
key: idx,
|
|
3279
3226
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
3280
3227
|
style: { animationDelay: feature.delay || "0ms" }
|
|
3281
3228
|
},
|
|
3282
|
-
/* @__PURE__ */
|
|
3283
|
-
/* @__PURE__ */
|
|
3229
|
+
/* @__PURE__ */ React28.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ React28.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__ */ React28.createElement(HugeiconsIcon20, { icon: feature.icon, size: 24 })), /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React28.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ React28.createElement("h3", { className: "text-xl tracking-tight text-black" }, feature.title))),
|
|
3230
|
+
/* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
3284
3231
|
)))));
|
|
3285
3232
|
};
|
|
3286
3233
|
|
|
3287
3234
|
// src/components/ManagedDocument.tsx
|
|
3288
|
-
import
|
|
3235
|
+
import React29, { useState as useState20, useEffect as useEffect13, useRef as useRef8 } from "react";
|
|
3289
3236
|
var ManagedDocument = ({
|
|
3290
3237
|
tagline,
|
|
3291
3238
|
title,
|
|
@@ -3315,7 +3262,7 @@ var ManagedDocument = ({
|
|
|
3315
3262
|
}, []);
|
|
3316
3263
|
return (
|
|
3317
3264
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
3318
|
-
/* @__PURE__ */
|
|
3265
|
+
/* @__PURE__ */ React29.createElement("div", { className: "grow pt-4 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React29.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React29.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React29.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React29.createElement(
|
|
3319
3266
|
"h1",
|
|
3320
3267
|
{
|
|
3321
3268
|
ref: titleRef,
|
|
@@ -3323,7 +3270,7 @@ var ManagedDocument = ({
|
|
|
3323
3270
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3324
3271
|
},
|
|
3325
3272
|
title
|
|
3326
|
-
)), sections.map((section, index) => /* @__PURE__ */
|
|
3273
|
+
)), sections.map((section, index) => /* @__PURE__ */ React29.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ React29.createElement("p", { className: " text-[11px] tracking-[0.2em] text-black mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-700 space-y-4 text-left " }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ React29.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ React29.createElement("div", { className: `border-neutral-200 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ React29.createElement("p", { className: "text-neutral-900 text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ React29.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React29.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ React29.createElement(
|
|
3327
3274
|
"a",
|
|
3328
3275
|
{
|
|
3329
3276
|
href: `mailto:${contactEmail}`,
|
|
@@ -3335,18 +3282,18 @@ var ManagedDocument = ({
|
|
|
3335
3282
|
};
|
|
3336
3283
|
|
|
3337
3284
|
// src/components/ManagedContactBlock.tsx
|
|
3338
|
-
import
|
|
3339
|
-
import { HugeiconsIcon as
|
|
3285
|
+
import React30, { useState as useState21, useEffect as useEffect14 } from "react";
|
|
3286
|
+
import { HugeiconsIcon as HugeiconsIcon21 } from "@hugeicons/react";
|
|
3340
3287
|
var SecureEmail = ({ user, domain, className }) => {
|
|
3341
3288
|
const [isMounted, setIsMounted] = useState21(false);
|
|
3342
3289
|
useEffect14(() => {
|
|
3343
3290
|
setIsMounted(true);
|
|
3344
3291
|
}, []);
|
|
3345
3292
|
if (!isMounted) {
|
|
3346
|
-
return /* @__PURE__ */
|
|
3293
|
+
return /* @__PURE__ */ React30.createElement("span", { className, style: { opacity: 0 } }, "Loading");
|
|
3347
3294
|
}
|
|
3348
3295
|
const email = `${user}@${domain}`;
|
|
3349
|
-
return /* @__PURE__ */
|
|
3296
|
+
return /* @__PURE__ */ React30.createElement("a", { href: `mailto:${email}`, className }, email);
|
|
3350
3297
|
};
|
|
3351
3298
|
var ManagedContactBlock = ({
|
|
3352
3299
|
tagline,
|
|
@@ -3355,7 +3302,7 @@ var ManagedContactBlock = ({
|
|
|
3355
3302
|
emails,
|
|
3356
3303
|
socials
|
|
3357
3304
|
}) => {
|
|
3358
|
-
return /* @__PURE__ */
|
|
3305
|
+
return /* @__PURE__ */ React30.createElement("div", { className: "grow pt-4 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React30.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React30.createElement(
|
|
3359
3306
|
"div",
|
|
3360
3307
|
{
|
|
3361
3308
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3364,21 +3311,21 @@ var ManagedContactBlock = ({
|
|
|
3364
3311
|
backgroundRepeat: "repeat"
|
|
3365
3312
|
}
|
|
3366
3313
|
}
|
|
3367
|
-
), /* @__PURE__ */
|
|
3314
|
+
), /* @__PURE__ */ React30.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React30.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ React30.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React30.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ React30.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ React30.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ React30.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React30.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Contact Details"), /* @__PURE__ */ React30.createElement("div", { className: "space-y-3 text-[13px] text-neutral-600 leading-[1.8]" }, company.name && /* @__PURE__ */ React30.createElement("p", { className: "text-black" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ React30.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ React30.createElement("p", { className: "pt-2" }, /* @__PURE__ */ React30.createElement(
|
|
3368
3315
|
"a",
|
|
3369
3316
|
{
|
|
3370
3317
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
3371
3318
|
className: "transition-colors hover:text-black"
|
|
3372
3319
|
},
|
|
3373
3320
|
company.phone
|
|
3374
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */
|
|
3321
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ React30.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React30.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Email Directory"), /* @__PURE__ */ React30.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ React30.createElement("div", { key: idx }, /* @__PURE__ */ React30.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ React30.createElement(
|
|
3375
3322
|
SecureEmail,
|
|
3376
3323
|
{
|
|
3377
3324
|
user: email.user,
|
|
3378
3325
|
domain: email.domain,
|
|
3379
3326
|
className: "text-neutral-600 transition-colors hover:text-black"
|
|
3380
3327
|
}
|
|
3381
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */
|
|
3328
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ React30.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React30.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Find Us Online"), /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ React30.createElement(
|
|
3382
3329
|
"a",
|
|
3383
3330
|
{
|
|
3384
3331
|
key: idx,
|
|
@@ -3387,17 +3334,17 @@ var ManagedContactBlock = ({
|
|
|
3387
3334
|
rel: "noopener noreferrer",
|
|
3388
3335
|
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black"
|
|
3389
3336
|
},
|
|
3390
|
-
/* @__PURE__ */
|
|
3391
|
-
/* @__PURE__ */
|
|
3337
|
+
/* @__PURE__ */ React30.createElement(HugeiconsIcon21, { icon: social.icon, size: 18 }),
|
|
3338
|
+
/* @__PURE__ */ React30.createElement("span", { className: "text-[13px]" }, social.label)
|
|
3392
3339
|
)))))))));
|
|
3393
3340
|
};
|
|
3394
3341
|
|
|
3395
3342
|
// src/components/ManagedPricingBlock.tsx
|
|
3396
|
-
import
|
|
3343
|
+
import React31, { useState as useState22, useEffect as useEffect15, useRef as useRef9 } from "react";
|
|
3397
3344
|
import Link7 from "next/link";
|
|
3398
3345
|
import Image5 from "next/image";
|
|
3399
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */
|
|
3400
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */
|
|
3346
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ React31.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__ */ React31.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ React31.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
3347
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ React31.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__ */ React31.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ React31.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
3401
3348
|
var ManagedPricingBlock = ({
|
|
3402
3349
|
tagline,
|
|
3403
3350
|
title,
|
|
@@ -3427,7 +3374,7 @@ var ManagedPricingBlock = ({
|
|
|
3427
3374
|
}, []);
|
|
3428
3375
|
const hasTabs = tabs && tabs.length > 0;
|
|
3429
3376
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
3430
|
-
return /* @__PURE__ */
|
|
3377
|
+
return /* @__PURE__ */ React31.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React31.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ React31.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ React31.createElement("span", { className: "text-[9px] tracking-[0.4em] text-black block " }, tagline), /* @__PURE__ */ React31.createElement(
|
|
3431
3378
|
"h1",
|
|
3432
3379
|
{
|
|
3433
3380
|
ref: titleRef,
|
|
@@ -3435,9 +3382,9 @@ var ManagedPricingBlock = ({
|
|
|
3435
3382
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3436
3383
|
},
|
|
3437
3384
|
title
|
|
3438
|
-
)), hasTabs && /* @__PURE__ */
|
|
3385
|
+
)), hasTabs && /* @__PURE__ */ React31.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ React31.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) => {
|
|
3439
3386
|
const isActive = activeTabIndex === idx;
|
|
3440
|
-
return /* @__PURE__ */
|
|
3387
|
+
return /* @__PURE__ */ React31.createElement(
|
|
3441
3388
|
"button",
|
|
3442
3389
|
{
|
|
3443
3390
|
key: idx,
|
|
@@ -3446,19 +3393,19 @@ var ManagedPricingBlock = ({
|
|
|
3446
3393
|
},
|
|
3447
3394
|
tab.label
|
|
3448
3395
|
);
|
|
3449
|
-
}))), /* @__PURE__ */
|
|
3396
|
+
}))), /* @__PURE__ */ React31.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__ */ React31.createElement(
|
|
3450
3397
|
"div",
|
|
3451
3398
|
{
|
|
3452
3399
|
key: `${activeTabIndex}-${planIdx}`,
|
|
3453
3400
|
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
3454
3401
|
},
|
|
3455
|
-
/* @__PURE__ */
|
|
3402
|
+
/* @__PURE__ */ React31.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React31.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ React31.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ React31.createElement("h3", { className: "text-3xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ React31.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ React31.createElement("p", { className: "text-xs text-neutral-500 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ React31.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ React31.createElement(
|
|
3456
3403
|
"div",
|
|
3457
3404
|
{
|
|
3458
3405
|
key: logoIdx,
|
|
3459
3406
|
className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
|
|
3460
3407
|
},
|
|
3461
|
-
/* @__PURE__ */
|
|
3408
|
+
/* @__PURE__ */ React31.createElement(
|
|
3462
3409
|
Image5,
|
|
3463
3410
|
{
|
|
3464
3411
|
src: logo.src,
|
|
@@ -3469,7 +3416,7 @@ var ManagedPricingBlock = ({
|
|
|
3469
3416
|
}
|
|
3470
3417
|
)
|
|
3471
3418
|
)))),
|
|
3472
|
-
plan.isPremium ? /* @__PURE__ */
|
|
3419
|
+
plan.isPremium ? /* @__PURE__ */ React31.createElement(ThreeDButton, { href: plan.ctaHref, className: "mb-6 w-full" }, plan.ctaText) : /* @__PURE__ */ React31.createElement(
|
|
3473
3420
|
Link7,
|
|
3474
3421
|
{
|
|
3475
3422
|
href: plan.ctaHref,
|
|
@@ -3477,20 +3424,20 @@ var ManagedPricingBlock = ({
|
|
|
3477
3424
|
},
|
|
3478
3425
|
plan.ctaText
|
|
3479
3426
|
),
|
|
3480
|
-
/* @__PURE__ */
|
|
3427
|
+
/* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
3481
3428
|
const isAvailable = feature.value !== false;
|
|
3482
3429
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
3483
|
-
return /* @__PURE__ */
|
|
3430
|
+
return /* @__PURE__ */ React31.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ React31.createElement(CheckIcon, null) : /* @__PURE__ */ React31.createElement(CrossIcon, null), /* @__PURE__ */ React31.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ React31.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
3484
3431
|
}))
|
|
3485
3432
|
)))));
|
|
3486
3433
|
};
|
|
3487
3434
|
|
|
3488
3435
|
// src/components/ManagedBoardBlock.tsx
|
|
3489
|
-
import
|
|
3436
|
+
import React32 from "react";
|
|
3490
3437
|
import Image6 from "next/image";
|
|
3491
|
-
import { HugeiconsIcon as
|
|
3438
|
+
import { HugeiconsIcon as HugeiconsIcon22 } from "@hugeicons/react";
|
|
3492
3439
|
import { TwitterIcon, LinkedinIcon } from "@hugeicons/core-free-icons";
|
|
3493
|
-
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */
|
|
3440
|
+
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React32.createElement(
|
|
3494
3441
|
"a",
|
|
3495
3442
|
{
|
|
3496
3443
|
href,
|
|
@@ -3498,7 +3445,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React33.
|
|
|
3498
3445
|
rel: "noopener noreferrer",
|
|
3499
3446
|
className: "text-neutral-400 hover:text-black transition-colors"
|
|
3500
3447
|
},
|
|
3501
|
-
/* @__PURE__ */
|
|
3448
|
+
/* @__PURE__ */ React32.createElement(HugeiconsIcon22, { icon, size: 16 })
|
|
3502
3449
|
);
|
|
3503
3450
|
var ManagedBoardBlock = ({
|
|
3504
3451
|
tagline,
|
|
@@ -3507,7 +3454,7 @@ var ManagedBoardBlock = ({
|
|
|
3507
3454
|
contactText,
|
|
3508
3455
|
contactEmail
|
|
3509
3456
|
}) => {
|
|
3510
|
-
return /* @__PURE__ */
|
|
3457
|
+
return /* @__PURE__ */ React32.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React32.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ React32.createElement(
|
|
3511
3458
|
"div",
|
|
3512
3459
|
{
|
|
3513
3460
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3516,7 +3463,7 @@ var ManagedBoardBlock = ({
|
|
|
3516
3463
|
backgroundRepeat: "repeat"
|
|
3517
3464
|
}
|
|
3518
3465
|
}
|
|
3519
|
-
), /* @__PURE__ */
|
|
3466
|
+
), /* @__PURE__ */ React32.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React32.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React32.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React32.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ React32.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ React32.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__ */ React32.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-white flex flex-col transition-all group" }, /* @__PURE__ */ React32.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ React32.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-white overflow-hidden rounded-xl" }, /* @__PURE__ */ React32.createElement(
|
|
3520
3467
|
Image6,
|
|
3521
3468
|
{
|
|
3522
3469
|
src: member.imageSrc,
|
|
@@ -3525,7 +3472,7 @@ var ManagedBoardBlock = ({
|
|
|
3525
3472
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
3526
3473
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
3527
3474
|
}
|
|
3528
|
-
)), /* @__PURE__ */
|
|
3475
|
+
)), /* @__PURE__ */ React32.createElement("div", { className: "pt-1" }, /* @__PURE__ */ React32.createElement("h3", { className: " text-[14px] md:text-[15px] text-black tracking-tight" }, member.name), /* @__PURE__ */ React32.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ React32.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 text-left grow mb-8" }, member.bio), /* @__PURE__ */ React32.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ React32.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React32.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ React32.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ React32.createElement(
|
|
3529
3476
|
MemberSocialLink,
|
|
3530
3477
|
{
|
|
3531
3478
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -3533,7 +3480,7 @@ var ManagedBoardBlock = ({
|
|
|
3533
3480
|
label: "X",
|
|
3534
3481
|
name: member.name
|
|
3535
3482
|
}
|
|
3536
|
-
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */
|
|
3483
|
+
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */ React32.createElement(
|
|
3537
3484
|
MemberSocialLink,
|
|
3538
3485
|
{
|
|
3539
3486
|
href: member.linkedinHandle,
|
|
@@ -3541,28 +3488,28 @@ var ManagedBoardBlock = ({
|
|
|
3541
3488
|
label: "LinkedIn",
|
|
3542
3489
|
name: member.name
|
|
3543
3490
|
}
|
|
3544
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */
|
|
3491
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ React32.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React32.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ React32.createElement("a", { href: `mailto:${contactEmail}`, className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
3545
3492
|
};
|
|
3546
3493
|
|
|
3547
3494
|
// src/components/ManagedNotFoundBlock.tsx
|
|
3548
|
-
import
|
|
3495
|
+
import React33 from "react";
|
|
3549
3496
|
var ManagedNotFoundBlock = ({
|
|
3550
3497
|
title = "404 - Page Not Found",
|
|
3551
3498
|
description = "The page you are looking for does not exist or has been moved."
|
|
3552
3499
|
}) => {
|
|
3553
|
-
return /* @__PURE__ */
|
|
3500
|
+
return /* @__PURE__ */ React33.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-transparent" }, /* @__PURE__ */ React33.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ React33.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ React33.createElement(
|
|
3554
3501
|
"svg",
|
|
3555
3502
|
{
|
|
3556
3503
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3557
3504
|
viewBox: "0 0 24 24",
|
|
3558
3505
|
className: "w-12 h-12 fill-neutral-100"
|
|
3559
3506
|
},
|
|
3560
|
-
/* @__PURE__ */
|
|
3561
|
-
)), /* @__PURE__ */
|
|
3507
|
+
/* @__PURE__ */ React33.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" })
|
|
3508
|
+
)), /* @__PURE__ */ React33.createElement("h1", { className: " text-xl md:text-3xl text-black tracking-tight mb-4" }, title), /* @__PURE__ */ React33.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-12" }, description)));
|
|
3562
3509
|
};
|
|
3563
3510
|
|
|
3564
3511
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
3565
|
-
import
|
|
3512
|
+
import React34 from "react";
|
|
3566
3513
|
import Image7 from "next/image";
|
|
3567
3514
|
var ManagedNewsletterSplitBlock = ({
|
|
3568
3515
|
tagline,
|
|
@@ -3576,7 +3523,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3576
3523
|
ctaHref = "/contact",
|
|
3577
3524
|
children
|
|
3578
3525
|
}) => {
|
|
3579
|
-
return /* @__PURE__ */
|
|
3526
|
+
return /* @__PURE__ */ React34.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0" }, /* @__PURE__ */ React34.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden" }, /* @__PURE__ */ React34.createElement(
|
|
3580
3527
|
Image7,
|
|
3581
3528
|
{
|
|
3582
3529
|
src: imageSrc,
|
|
@@ -3586,7 +3533,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3586
3533
|
className: "object-cover object-top grayscale opacity-60",
|
|
3587
3534
|
quality: 100
|
|
3588
3535
|
}
|
|
3589
|
-
), /* @__PURE__ */
|
|
3536
|
+
), /* @__PURE__ */ React34.createElement(
|
|
3590
3537
|
"div",
|
|
3591
3538
|
{
|
|
3592
3539
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
@@ -3594,7 +3541,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3594
3541
|
background: "linear-gradient(to right, rgba(255,255,255,0) 30%, #ffffff 100%)"
|
|
3595
3542
|
}
|
|
3596
3543
|
}
|
|
3597
|
-
), /* @__PURE__ */
|
|
3544
|
+
), /* @__PURE__ */ React34.createElement(
|
|
3598
3545
|
"div",
|
|
3599
3546
|
{
|
|
3600
3547
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
@@ -3602,7 +3549,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3602
3549
|
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
3603
3550
|
}
|
|
3604
3551
|
}
|
|
3605
|
-
)), /* @__PURE__ */
|
|
3552
|
+
)), /* @__PURE__ */ React34.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__ */ React34.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__ */ React34.createElement(
|
|
3606
3553
|
"div",
|
|
3607
3554
|
{
|
|
3608
3555
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3611,7 +3558,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3611
3558
|
backgroundRepeat: "repeat"
|
|
3612
3559
|
}
|
|
3613
3560
|
}
|
|
3614
|
-
), /* @__PURE__ */
|
|
3561
|
+
), /* @__PURE__ */ React34.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React34.createElement("div", { className: "mb-10 border-b border-neutral-200 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ React34.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 " }, tagline), /* @__PURE__ */ React34.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ React34.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, subtitle)), /* @__PURE__ */ React34.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ React34.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ React34.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ React34.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React34.createElement("div", { className: "grow h-px bg-neutral-100" }), /* @__PURE__ */ React34.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-400 " }, dividerText), /* @__PURE__ */ React34.createElement("div", { className: "grow h-px bg-neutral-100" })), ctaText && ctaHref && /* @__PURE__ */ React34.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React34.createElement(
|
|
3615
3562
|
ThreeDButton,
|
|
3616
3563
|
{
|
|
3617
3564
|
href: ctaHref,
|
|
@@ -3622,10 +3569,10 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3622
3569
|
};
|
|
3623
3570
|
|
|
3624
3571
|
// src/components/PortfolioHero.tsx
|
|
3625
|
-
import
|
|
3572
|
+
import React35, { useEffect as useEffect16, useRef as useRef10 } from "react";
|
|
3626
3573
|
import Link8 from "next/link";
|
|
3627
3574
|
import Image8 from "next/image";
|
|
3628
|
-
import { HugeiconsIcon as
|
|
3575
|
+
import { HugeiconsIcon as HugeiconsIcon23 } from "@hugeicons/react";
|
|
3629
3576
|
import { ArrowRight01Icon as ArrowRight01Icon7 } from "@hugeicons/core-free-icons";
|
|
3630
3577
|
var useScrollAnimation = () => {
|
|
3631
3578
|
const elementRef = useRef10(null);
|
|
@@ -3665,13 +3612,13 @@ var PortfolioHero = ({
|
|
|
3665
3612
|
secondaryCtaHref
|
|
3666
3613
|
}) => {
|
|
3667
3614
|
const heroContentRef = useScrollAnimation();
|
|
3668
|
-
return /* @__PURE__ */
|
|
3615
|
+
return /* @__PURE__ */ React35.createElement("section", { className: "pt-8 pb-16 px-6 md:px-12 flex flex-col relative overflow-hidden z-10 w-full" }, /* @__PURE__ */ React35.createElement(
|
|
3669
3616
|
"div",
|
|
3670
3617
|
{
|
|
3671
3618
|
ref: heroContentRef,
|
|
3672
3619
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
3673
3620
|
},
|
|
3674
|
-
/* @__PURE__ */
|
|
3621
|
+
/* @__PURE__ */ React35.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ React35.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__ */ React35.createElement(
|
|
3675
3622
|
Image8,
|
|
3676
3623
|
{
|
|
3677
3624
|
src: imageSrc,
|
|
@@ -3682,7 +3629,7 @@ var PortfolioHero = ({
|
|
|
3682
3629
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
3683
3630
|
quality: 100
|
|
3684
3631
|
}
|
|
3685
|
-
)), /* @__PURE__ */
|
|
3632
|
+
)), /* @__PURE__ */ React35.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ React35.createElement("h1", { className: " text-3xl sm:text-5xl lg:text-6xl tracking-tight text-black leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ React35.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ React35.createElement(
|
|
3686
3633
|
"a",
|
|
3687
3634
|
{
|
|
3688
3635
|
href: socialLinkHref,
|
|
@@ -3692,30 +3639,30 @@ var PortfolioHero = ({
|
|
|
3692
3639
|
},
|
|
3693
3640
|
socialLinkText
|
|
3694
3641
|
))),
|
|
3695
|
-
/* @__PURE__ */
|
|
3696
|
-
/* @__PURE__ */
|
|
3642
|
+
/* @__PURE__ */ React35.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-600" }, bio),
|
|
3643
|
+
/* @__PURE__ */ React35.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ React35.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ React35.createElement(
|
|
3697
3644
|
ThreeDButton,
|
|
3698
3645
|
{
|
|
3699
3646
|
href: primaryCtaHref,
|
|
3700
3647
|
className: "py-3 tracking-widest text-[11px]"
|
|
3701
3648
|
},
|
|
3702
3649
|
primaryCtaText
|
|
3703
|
-
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
3650
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React35.createElement(
|
|
3704
3651
|
Link8,
|
|
3705
3652
|
{
|
|
3706
3653
|
href: secondaryCtaHref,
|
|
3707
3654
|
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"
|
|
3708
3655
|
},
|
|
3709
3656
|
secondaryCtaText,
|
|
3710
|
-
/* @__PURE__ */
|
|
3657
|
+
/* @__PURE__ */ React35.createElement(HugeiconsIcon23, { icon: ArrowRight01Icon7, size: 16 })
|
|
3711
3658
|
))
|
|
3712
3659
|
));
|
|
3713
3660
|
};
|
|
3714
3661
|
|
|
3715
3662
|
// src/components/GifFeatureCard.tsx
|
|
3716
|
-
import
|
|
3663
|
+
import React36, { useState as useState23 } from "react";
|
|
3717
3664
|
import Image9 from "next/image";
|
|
3718
|
-
import { HugeiconsIcon as
|
|
3665
|
+
import { HugeiconsIcon as HugeiconsIcon24 } from "@hugeicons/react";
|
|
3719
3666
|
import { Loading03Icon as Loading03Icon13 } from "@hugeicons/core-free-icons";
|
|
3720
3667
|
var GifFeatureCard = ({
|
|
3721
3668
|
gifSrc,
|
|
@@ -3725,19 +3672,19 @@ var GifFeatureCard = ({
|
|
|
3725
3672
|
className = "aspect-video"
|
|
3726
3673
|
}) => {
|
|
3727
3674
|
const [isLoading, setIsLoading] = useState23(true);
|
|
3728
|
-
return /* @__PURE__ */
|
|
3729
|
-
|
|
3675
|
+
return /* @__PURE__ */ React36.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ React36.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ React36.createElement(
|
|
3676
|
+
HugeiconsIcon24,
|
|
3730
3677
|
{
|
|
3731
3678
|
icon: Loading03Icon13,
|
|
3732
3679
|
size: 32,
|
|
3733
3680
|
className: "animate-spin text-white"
|
|
3734
3681
|
}
|
|
3735
|
-
)), /* @__PURE__ */
|
|
3682
|
+
)), /* @__PURE__ */ React36.createElement(
|
|
3736
3683
|
"div",
|
|
3737
3684
|
{
|
|
3738
3685
|
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"}`
|
|
3739
3686
|
},
|
|
3740
|
-
/* @__PURE__ */
|
|
3687
|
+
/* @__PURE__ */ React36.createElement(
|
|
3741
3688
|
Image9,
|
|
3742
3689
|
{
|
|
3743
3690
|
src: gifSrc,
|
|
@@ -3748,16 +3695,16 @@ var GifFeatureCard = ({
|
|
|
3748
3695
|
className: "object-cover object-center pointer-events-none"
|
|
3749
3696
|
}
|
|
3750
3697
|
)
|
|
3751
|
-
), /* @__PURE__ */
|
|
3698
|
+
), /* @__PURE__ */ React36.createElement(
|
|
3752
3699
|
"div",
|
|
3753
3700
|
{
|
|
3754
3701
|
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"
|
|
3755
3702
|
}
|
|
3756
|
-
), /* @__PURE__ */
|
|
3703
|
+
), /* @__PURE__ */ React36.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__ */ React36.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__ */ React36.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
3757
3704
|
};
|
|
3758
3705
|
|
|
3759
3706
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
3760
|
-
import
|
|
3707
|
+
import React37, { useState as useState24, useEffect as useEffect17, useRef as useRef11 } from "react";
|
|
3761
3708
|
import Image10 from "next/image";
|
|
3762
3709
|
var MedicalFeatureStatsBlock = ({
|
|
3763
3710
|
bottomHeadline,
|
|
@@ -3786,7 +3733,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3786
3733
|
}
|
|
3787
3734
|
return () => observer.disconnect();
|
|
3788
3735
|
}, []);
|
|
3789
|
-
return /* @__PURE__ */
|
|
3736
|
+
return /* @__PURE__ */ React37.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ React37.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ React37.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ React37.createElement(
|
|
3790
3737
|
"h2",
|
|
3791
3738
|
{
|
|
3792
3739
|
ref: titleRef,
|
|
@@ -3794,7 +3741,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3794
3741
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3795
3742
|
},
|
|
3796
3743
|
bottomHeadline
|
|
3797
|
-
), /* @__PURE__ */
|
|
3744
|
+
), /* @__PURE__ */ React37.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ React37.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ React37.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ React37.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__ */ React37.createElement(
|
|
3798
3745
|
Image10,
|
|
3799
3746
|
{
|
|
3800
3747
|
src,
|
|
@@ -3803,17 +3750,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3803
3750
|
sizes: "48px",
|
|
3804
3751
|
className: "object-cover"
|
|
3805
3752
|
}
|
|
3806
|
-
)))), /* @__PURE__ */
|
|
3753
|
+
)))), /* @__PURE__ */ React37.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ React37.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ React37.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ React37.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ React37.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ React37.createElement("h1", { className: "text-6xl gradient-text md:text-[80px] tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
|
|
3807
3754
|
};
|
|
3808
3755
|
|
|
3809
3756
|
// src/components/ConsultantShowcase.tsx
|
|
3810
|
-
import
|
|
3757
|
+
import React38, { useState as useState25 } from "react";
|
|
3811
3758
|
import Image11 from "next/image";
|
|
3812
|
-
import { HugeiconsIcon as
|
|
3759
|
+
import { HugeiconsIcon as HugeiconsIcon25 } from "@hugeicons/react";
|
|
3813
3760
|
import { Loading03Icon as Loading03Icon14 } from "@hugeicons/core-free-icons";
|
|
3814
3761
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3815
3762
|
const [isLoading, setIsLoading] = useState25(true);
|
|
3816
|
-
return /* @__PURE__ */
|
|
3763
|
+
return /* @__PURE__ */ React38.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ React38.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__ */ React38.createElement(HugeiconsIcon25, { icon: Loading03Icon14, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React38.createElement(
|
|
3817
3764
|
Image11,
|
|
3818
3765
|
{
|
|
3819
3766
|
src,
|
|
@@ -3859,7 +3806,7 @@ var ConsultantShowcase = ({
|
|
|
3859
3806
|
}
|
|
3860
3807
|
};
|
|
3861
3808
|
if (!profiles || profiles.length === 0) return null;
|
|
3862
|
-
return /* @__PURE__ */
|
|
3809
|
+
return /* @__PURE__ */ React38.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ React38.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React38.createElement(
|
|
3863
3810
|
"div",
|
|
3864
3811
|
{
|
|
3865
3812
|
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
@@ -3869,13 +3816,13 @@ var ConsultantShowcase = ({
|
|
|
3869
3816
|
},
|
|
3870
3817
|
profiles.map((profile, idx) => {
|
|
3871
3818
|
const isActive = idx === currentIndex;
|
|
3872
|
-
return /* @__PURE__ */
|
|
3819
|
+
return /* @__PURE__ */ React38.createElement(
|
|
3873
3820
|
"div",
|
|
3874
3821
|
{
|
|
3875
3822
|
key: profile.id,
|
|
3876
3823
|
className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
|
|
3877
3824
|
},
|
|
3878
|
-
/* @__PURE__ */
|
|
3825
|
+
/* @__PURE__ */ React38.createElement(
|
|
3879
3826
|
ImageWithLoader,
|
|
3880
3827
|
{
|
|
3881
3828
|
src: profile.imageSrc,
|
|
@@ -3883,14 +3830,14 @@ var ConsultantShowcase = ({
|
|
|
3883
3830
|
priority: idx === 0
|
|
3884
3831
|
}
|
|
3885
3832
|
),
|
|
3886
|
-
/* @__PURE__ */
|
|
3887
|
-
/* @__PURE__ */
|
|
3888
|
-
/* @__PURE__ */
|
|
3833
|
+
/* @__PURE__ */ React38.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
3834
|
+
/* @__PURE__ */ React38.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" }),
|
|
3835
|
+
/* @__PURE__ */ React38.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__ */ React38.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ React38.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React38.createElement("p", { className: "text-[15px] text-white/80 tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ React38.createElement("p", { className: "text-[15px] text-white/80 tracking-wide mt-1" }, profile.description)))
|
|
3889
3836
|
);
|
|
3890
3837
|
}),
|
|
3891
|
-
/* @__PURE__ */
|
|
3892
|
-
/* @__PURE__ */
|
|
3893
|
-
/* @__PURE__ */
|
|
3838
|
+
/* @__PURE__ */ React38.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide }),
|
|
3839
|
+
/* @__PURE__ */ React38.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide }),
|
|
3840
|
+
/* @__PURE__ */ React38.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__ */ React38.createElement(
|
|
3894
3841
|
"button",
|
|
3895
3842
|
{
|
|
3896
3843
|
key: idx,
|
|
@@ -3902,13 +3849,13 @@ var ConsultantShowcase = ({
|
|
|
3902
3849
|
};
|
|
3903
3850
|
|
|
3904
3851
|
// src/components/ContentGridBlock.tsx
|
|
3905
|
-
import
|
|
3852
|
+
import React39, { useState as useState26 } from "react";
|
|
3906
3853
|
import Image12 from "next/image";
|
|
3907
|
-
import { HugeiconsIcon as
|
|
3854
|
+
import { HugeiconsIcon as HugeiconsIcon26 } from "@hugeicons/react";
|
|
3908
3855
|
import { Loading03Icon as Loading03Icon15 } from "@hugeicons/core-free-icons";
|
|
3909
3856
|
var ImageWithLoader2 = ({ src, alt, className, sizes }) => {
|
|
3910
3857
|
const [isLoading, setIsLoading] = useState26(true);
|
|
3911
|
-
return /* @__PURE__ */
|
|
3858
|
+
return /* @__PURE__ */ React39.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ React39.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__ */ React39.createElement(HugeiconsIcon26, { icon: Loading03Icon15, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ React39.createElement(
|
|
3912
3859
|
Image12,
|
|
3913
3860
|
{
|
|
3914
3861
|
src,
|
|
@@ -3930,30 +3877,30 @@ var ContentGridBlock = ({
|
|
|
3930
3877
|
middleBottomCard,
|
|
3931
3878
|
rightCards
|
|
3932
3879
|
}) => {
|
|
3933
|
-
return /* @__PURE__ */
|
|
3880
|
+
return /* @__PURE__ */ React39.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React39.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ React39.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ React39.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ React39.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ React39.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ React39.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ React39.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React39.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ React39.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ React39.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ React39.createElement("div", null, /* @__PURE__ */ React39.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ React39.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ React39.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React39.createElement(Image12, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ React39.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React39.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ React39.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ React39.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ React39.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React39.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ React39.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ React39.createElement(Image12, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ React39.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ React39.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ React39.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__ */ React39.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ React39.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React39.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ React39.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ React39.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React39.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ React39.createElement("div", null, /* @__PURE__ */ React39.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ React39.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ React39.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React39.createElement(Image12, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ React39.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React39.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ React39.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ React39.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ React39.createElement("div", { key: idx, className: "relative w-full h-80 text-white rounded-3xl overflow-hidden group" }, /* @__PURE__ */ React39.createElement(
|
|
3934
3881
|
ImageWithLoader2,
|
|
3935
3882
|
{
|
|
3936
3883
|
src: card.bgImageSrc,
|
|
3937
3884
|
alt: card.title,
|
|
3938
3885
|
className: "absolute inset-0 w-full h-full"
|
|
3939
3886
|
}
|
|
3940
|
-
), /* @__PURE__ */
|
|
3887
|
+
), /* @__PURE__ */ React39.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ React39.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ React39.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ React39.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ React39.createElement("div", { className: "pt-3" }, /* @__PURE__ */ React39.createElement("h4", { className: "text-[15px] text-white tracking-wide" }, card.title), /* @__PURE__ */ React39.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
|
|
3941
3888
|
};
|
|
3942
3889
|
|
|
3943
3890
|
// src/components/ManagedProjectsBlock.tsx
|
|
3944
|
-
import
|
|
3891
|
+
import React40 from "react";
|
|
3945
3892
|
import Link9 from "next/link";
|
|
3946
3893
|
var GridSection = ({
|
|
3947
3894
|
children,
|
|
3948
3895
|
isLast = false,
|
|
3949
3896
|
className = "py-8 md:py-10"
|
|
3950
|
-
}) => /* @__PURE__ */
|
|
3897
|
+
}) => /* @__PURE__ */ React40.createElement("div", { className: `relative px-5 md:px-12 ${className} ${!isLast ? "" : ""}` }, children);
|
|
3951
3898
|
var ManagedProjectsBlock = ({
|
|
3952
3899
|
tagline,
|
|
3953
3900
|
title,
|
|
3954
3901
|
projects
|
|
3955
3902
|
}) => {
|
|
3956
|
-
return /* @__PURE__ */
|
|
3903
|
+
return /* @__PURE__ */ React40.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React40.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-5xl mx-auto overflow-hidden" }, /* @__PURE__ */ React40.createElement(
|
|
3957
3904
|
"div",
|
|
3958
3905
|
{
|
|
3959
3906
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3962,16 +3909,16 @@ var ManagedProjectsBlock = ({
|
|
|
3962
3909
|
backgroundRepeat: "repeat"
|
|
3963
3910
|
}
|
|
3964
3911
|
}
|
|
3965
|
-
), /* @__PURE__ */
|
|
3912
|
+
), /* @__PURE__ */ React40.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React40.createElement(GridSection, null, tagline && /* @__PURE__ */ React40.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React40.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
3966
3913
|
const isLast = index === projects.length - 1;
|
|
3967
|
-
const projectContent = /* @__PURE__ */
|
|
3968
|
-
return /* @__PURE__ */
|
|
3914
|
+
const projectContent = /* @__PURE__ */ React40.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ React40.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__ */ React40.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ React40.createElement("h2", { className: " text-[16px] text-black transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ React40.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__ */ React40.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__ */ React40.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0 " }, project.date)), /* @__PURE__ */ React40.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 max-w-4xl text-left transition-colors group-hover:text-black" }, project.description));
|
|
3915
|
+
return /* @__PURE__ */ React40.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__ */ React40.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ React40.createElement(Link9, { href: project.link, className: "block outline-none" }, projectContent));
|
|
3969
3916
|
}))));
|
|
3970
3917
|
};
|
|
3971
3918
|
|
|
3972
3919
|
// src/components/UniversalVerificationPage.tsx
|
|
3973
|
-
import
|
|
3974
|
-
import { HugeiconsIcon as
|
|
3920
|
+
import React41 from "react";
|
|
3921
|
+
import { HugeiconsIcon as HugeiconsIcon27 } from "@hugeicons/react";
|
|
3975
3922
|
import {
|
|
3976
3923
|
ArrowLeft01Icon as ArrowLeft01Icon8,
|
|
3977
3924
|
Mail01Icon,
|
|
@@ -4027,15 +3974,15 @@ var VerificationRow = ({
|
|
|
4027
3974
|
break;
|
|
4028
3975
|
}
|
|
4029
3976
|
const isDisabled = status === "APPROVED" || isLoading;
|
|
4030
|
-
return /* @__PURE__ */
|
|
3977
|
+
return /* @__PURE__ */ React41.createElement(
|
|
4031
3978
|
"div",
|
|
4032
3979
|
{
|
|
4033
3980
|
onClick: isDisabled ? void 0 : onClick,
|
|
4034
3981
|
className: `flex items-center p-4 transition-colors ${!isLast ? "" : ""} ${isDisabled ? "opacity-70 cursor-default" : "cursor-pointer hover:bg-neutral-50"}`
|
|
4035
3982
|
},
|
|
4036
|
-
/* @__PURE__ */
|
|
4037
|
-
/* @__PURE__ */
|
|
4038
|
-
/* @__PURE__ */
|
|
3983
|
+
/* @__PURE__ */ React41.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__ */ React41.createElement(HugeiconsIcon27, { icon, size: 16, className: "text-black" })),
|
|
3984
|
+
/* @__PURE__ */ React41.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React41.createElement("p", { className: "text-[14px] truncate text-black" }, title), /* @__PURE__ */ React41.createElement("p", { className: `text-[10px] inline-flex items-center ${bg} rounded-full px-2 py-1 ${statusColor} mt-0.5` }, statusText)),
|
|
3985
|
+
/* @__PURE__ */ React41.createElement("div", { className: "shrink-0 ml-2" }, isLoading ? /* @__PURE__ */ React41.createElement(HugeiconsIcon27, { icon: Loading03Icon16, size: 20, className: "animate-spin text-black" }) : /* @__PURE__ */ React41.createElement(HugeiconsIcon27, { icon: StatusIcon, size: 20, className: iconColor }))
|
|
4039
3986
|
);
|
|
4040
3987
|
};
|
|
4041
3988
|
var UniversalVerificationPage = ({
|
|
@@ -4048,15 +3995,15 @@ var UniversalVerificationPage = ({
|
|
|
4048
3995
|
onTriggerVerification,
|
|
4049
3996
|
activeLoadingType
|
|
4050
3997
|
}) => {
|
|
4051
|
-
return /* @__PURE__ */
|
|
3998
|
+
return /* @__PURE__ */ React41.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ React41.createElement("div", { className: "mb-6 flex items-center px-1" }, /* @__PURE__ */ React41.createElement(
|
|
4052
3999
|
"button",
|
|
4053
4000
|
{
|
|
4054
4001
|
onClick: onBack,
|
|
4055
4002
|
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
4056
4003
|
},
|
|
4057
|
-
/* @__PURE__ */
|
|
4004
|
+
/* @__PURE__ */ React41.createElement(HugeiconsIcon27, { icon: ArrowLeft01Icon8, size: 16 }),
|
|
4058
4005
|
" Back"
|
|
4059
|
-
)), /* @__PURE__ */
|
|
4006
|
+
)), /* @__PURE__ */ React41.createElement("div", { className: "w-full flex flex-col gap-4 mb-8" }, /* @__PURE__ */ React41.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ React41.createElement(
|
|
4060
4007
|
VerificationRow,
|
|
4061
4008
|
{
|
|
4062
4009
|
icon: Mail01Icon,
|
|
@@ -4065,7 +4012,7 @@ var UniversalVerificationPage = ({
|
|
|
4065
4012
|
isLoading: activeLoadingType === "EMAIL",
|
|
4066
4013
|
onClick: () => onTriggerVerification("EMAIL")
|
|
4067
4014
|
}
|
|
4068
|
-
), /* @__PURE__ */
|
|
4015
|
+
), /* @__PURE__ */ React41.createElement(
|
|
4069
4016
|
VerificationRow,
|
|
4070
4017
|
{
|
|
4071
4018
|
icon: SmartPhone01Icon,
|
|
@@ -4074,7 +4021,7 @@ var UniversalVerificationPage = ({
|
|
|
4074
4021
|
isLoading: activeLoadingType === "PHONE",
|
|
4075
4022
|
onClick: () => onTriggerVerification("PHONE")
|
|
4076
4023
|
}
|
|
4077
|
-
), /* @__PURE__ */
|
|
4024
|
+
), /* @__PURE__ */ React41.createElement(
|
|
4078
4025
|
VerificationRow,
|
|
4079
4026
|
{
|
|
4080
4027
|
icon: UserIcon3,
|
|
@@ -4088,12 +4035,12 @@ var UniversalVerificationPage = ({
|
|
|
4088
4035
|
};
|
|
4089
4036
|
|
|
4090
4037
|
// src/components/UniversalRewardPage.tsx
|
|
4091
|
-
import
|
|
4038
|
+
import React42, { useState as useState27 } from "react";
|
|
4092
4039
|
import axios from "axios";
|
|
4093
4040
|
import toast8 from "react-hot-toast";
|
|
4094
4041
|
import Confetti from "react-confetti";
|
|
4095
4042
|
import { useWindowSize } from "react-use";
|
|
4096
|
-
import { HugeiconsIcon as
|
|
4043
|
+
import { HugeiconsIcon as HugeiconsIcon28 } from "@hugeicons/react";
|
|
4097
4044
|
import {
|
|
4098
4045
|
GiftIcon,
|
|
4099
4046
|
Loading03Icon as Loading03Icon17,
|
|
@@ -4103,12 +4050,12 @@ var formatWeb3Name = (name) => {
|
|
|
4103
4050
|
if (!name) return "";
|
|
4104
4051
|
return name.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
|
4105
4052
|
};
|
|
4106
|
-
var PageSpinner4 = () => /* @__PURE__ */
|
|
4053
|
+
var PageSpinner4 = () => /* @__PURE__ */ React42.createElement("div", { className: "flex justify-center items-center py-12 w-full" }, /* @__PURE__ */ React42.createElement(HugeiconsIcon28, { icon: Loading03Icon17, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4107
4054
|
var AvatarLogo = ({ src, alt, name, sizeClass = "w-12 h-12" }) => {
|
|
4108
4055
|
const [isLoaded, setIsLoaded] = useState27(false);
|
|
4109
4056
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=ffffff&color=000000&size=200&font-size=0.33`;
|
|
4110
4057
|
const finalSrc = src || fallbackUrl;
|
|
4111
|
-
return /* @__PURE__ */
|
|
4058
|
+
return /* @__PURE__ */ React42.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__ */ React42.createElement(HugeiconsIcon28, { icon: Loading03Icon17, size: 16, className: "animate-spin text-neutral-400 absolute" }), /* @__PURE__ */ React42.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
4112
4059
|
};
|
|
4113
4060
|
var UniversalRewardPage = ({
|
|
4114
4061
|
leaderboardToday,
|
|
@@ -4158,9 +4105,9 @@ var UniversalRewardPage = ({
|
|
|
4158
4105
|
setIsClaiming(false);
|
|
4159
4106
|
}
|
|
4160
4107
|
};
|
|
4161
|
-
return /* @__PURE__ */
|
|
4108
|
+
return /* @__PURE__ */ React42.createElement("div", null, /* @__PURE__ */ React42.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ React42.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React42.createElement(HugeiconsIcon28, { icon: ArrowLeft01Icon9, size: 16 }), " Back")), /* @__PURE__ */ React42.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React42.createElement(ManagedToaster, null), showConfetti && /* @__PURE__ */ React42.createElement("div", { className: "fixed inset-0 z-200 pointer-events-none" }, /* @__PURE__ */ React42.createElement(Confetti, { width, height, recycle: false, numberOfPieces: 500, gravity: 0.15 })), isLoading ? /* @__PURE__ */ React42.createElement(PageSpinner4, null) : /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.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__ */ React42.createElement("div", { className: "flex flex-col items-center w-1/3 z-10" }, secondPlace ? /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(secondPlace.profile.web3Name)), /* @__PURE__ */ React42.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ React42.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__ */ React42.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__ */ React42.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__ */ React42.createElement("span", { className: "text-orange-400/30 text-2xl " }, "2nd"))) : /* @__PURE__ */ React42.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-neutral-200 rounded-t-xl h-24 mt-auto" })), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col items-center w-1/3 z-20 -mt-8" }, firstPlace ? /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(firstPlace.profile.web3Name)), /* @__PURE__ */ React42.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ React42.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__ */ React42.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__ */ React42.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__ */ React42.createElement("span", { className: "text-white/40 text-3xl tracking-widest" }, "1st"))) : /* @__PURE__ */ React42.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-neutral-200 rounded-t-xl h-32 mt-auto" })), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col items-center w-1/3 z-10" }, thirdPlace ? /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement("span", { className: "text-black text-[10px] mb-2 truncate max-w-full px-1" }, formatWeb3Name(thirdPlace.profile.web3Name)), /* @__PURE__ */ React42.createElement("div", { className: "relative shrink-0 mb-3" }, /* @__PURE__ */ React42.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__ */ React42.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__ */ React42.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__ */ React42.createElement("span", { className: "text-blue-400/30 text-xl " }, "3rd"))) : /* @__PURE__ */ React42.createElement("div", { className: "w-full bg-linear-to-t from-neutral-100 to-neutral-200 rounded-t-xl h-20 mt-auto" }))), /* @__PURE__ */ React42.createElement("div", { className: "flex items-center justify-center mb-6 sm:mb-8 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ React42.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) => {
|
|
4162
4109
|
const isActive = activeTabIndex === idx;
|
|
4163
|
-
return /* @__PURE__ */
|
|
4110
|
+
return /* @__PURE__ */ React42.createElement(
|
|
4164
4111
|
"button",
|
|
4165
4112
|
{
|
|
4166
4113
|
key: idx,
|
|
@@ -4169,19 +4116,19 @@ var UniversalRewardPage = ({
|
|
|
4169
4116
|
},
|
|
4170
4117
|
tab.label
|
|
4171
4118
|
);
|
|
4172
|
-
}))), /* @__PURE__ */
|
|
4119
|
+
}))), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col gap-6 w-full" }, /* @__PURE__ */ React42.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ React42.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Available Tasks"), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col" }, rewards.length === 0 ? /* @__PURE__ */ React42.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No rewards available at the moment.") : rewards.map((reward) => {
|
|
4173
4120
|
const statusText = reward.status === "CLAIMED" ? "Claimed" : "Unclaimed";
|
|
4174
|
-
return /* @__PURE__ */
|
|
4121
|
+
return /* @__PURE__ */ React42.createElement(
|
|
4175
4122
|
"div",
|
|
4176
4123
|
{
|
|
4177
4124
|
key: reward.id,
|
|
4178
4125
|
onClick: () => setSelectedReward(reward),
|
|
4179
4126
|
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"
|
|
4180
4127
|
},
|
|
4181
|
-
/* @__PURE__ */
|
|
4182
|
-
/* @__PURE__ */
|
|
4128
|
+
/* @__PURE__ */ React42.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React42.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center border border-neutral-200 text-black" }, /* @__PURE__ */ React42.createElement(HugeiconsIcon28, { icon: GiftIcon, size: 16 })), /* @__PURE__ */ React42.createElement("div", { className: "min-w-0 flex-1 flex flex-col items-start gap-0.5 pr-4" }, /* @__PURE__ */ React42.createElement("p", { className: "text-[13px] text-black truncate w-full" }, reward.title), /* @__PURE__ */ React42.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))),
|
|
4129
|
+
/* @__PURE__ */ React42.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1" }, /* @__PURE__ */ React42.createElement("span", { className: "text-[13px] text-black" }, reward.amount))
|
|
4183
4130
|
);
|
|
4184
|
-
}))), remainingLeaderboard.length > 0 && /* @__PURE__ */
|
|
4131
|
+
}))), remainingLeaderboard.length > 0 && /* @__PURE__ */ React42.createElement("div", { className: "bg-white rounded-2xl p-6 " }, /* @__PURE__ */ React42.createElement("h2", { className: "text-black text-lg mb-4 tracking-tight" }, "Leaderboard"), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col" }, remainingLeaderboard.map((lb) => /* @__PURE__ */ React42.createElement("div", { key: lb.profile.username, className: "flex items-center justify-between py-3 min-w-0" }, /* @__PURE__ */ React42.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React42.createElement("div", { className: "text-[12px] text-neutral-400 w-4" }, lb.position), /* @__PURE__ */ React42.createElement(AvatarLogo, { src: lb.profile.avatarUrl, alt: lb.profile.username, name: formatWeb3Name(lb.profile.web3Name), sizeClass: "w-9 h-9" }), /* @__PURE__ */ React42.createElement("div", { className: "min-w-0 flex-1 flex flex-col" }, /* @__PURE__ */ React42.createElement("p", { className: "text-[13px] text-black truncate" }, formatWeb3Name(lb.profile.web3Name)), /* @__PURE__ */ React42.createElement("p", { className: "text-[11px] text-neutral-400 truncate" }, "@", lb.profile.username))), /* @__PURE__ */ React42.createElement("div", { className: "shrink-0 text-[13px] text-black" }, lb.amount))))))), selectedReward && /* @__PURE__ */ React42.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React42.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isClaiming && setSelectedReward(null) }), /* @__PURE__ */ React42.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__ */ React42.createElement("div", { className: "flex-1 p-6 flex flex-col items-center text-center mt-2" }, /* @__PURE__ */ React42.createElement("h2", { className: "text-xl text-black mb-2" }, selectedReward.title), /* @__PURE__ */ React42.createElement("p", { className: "text-[13px] text-neutral-500 mb-6 leading-relaxed" }, selectedReward.description), selectedReward.progressText && /* @__PURE__ */ React42.createElement("div", { className: "w-full mb-6" }, /* @__PURE__ */ React42.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__ */ React42.createElement("div", { className: " w-full rounded-xl p-4 mb-8 flex flex-col items-center" }, /* @__PURE__ */ React42.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 uppercase mb-1" }, "Reward Value"), /* @__PURE__ */ React42.createElement("span", { className: "text-3xl text-black " }, selectedReward.amount)), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col gap-3 w-full" }, /* @__PURE__ */ React42.createElement(
|
|
4185
4132
|
ThreeDActionButton,
|
|
4186
4133
|
{
|
|
4187
4134
|
onClick: handleClaimReward,
|
|
@@ -4190,7 +4137,7 @@ var UniversalRewardPage = ({
|
|
|
4190
4137
|
className: "w-full"
|
|
4191
4138
|
},
|
|
4192
4139
|
selectedReward.status === "CLAIMED" ? "Already Claimed" : selectedReward.isEligible ? "Claim Reward" : "Not Eligible Yet"
|
|
4193
|
-
), /* @__PURE__ */
|
|
4140
|
+
), /* @__PURE__ */ React42.createElement(
|
|
4194
4141
|
"button",
|
|
4195
4142
|
{
|
|
4196
4143
|
onClick: () => setSelectedReward(null),
|
|
@@ -4202,16 +4149,16 @@ var UniversalRewardPage = ({
|
|
|
4202
4149
|
};
|
|
4203
4150
|
|
|
4204
4151
|
// src/components/UniversalReferralPage.tsx
|
|
4205
|
-
import
|
|
4152
|
+
import React43, { useState as useState28 } from "react";
|
|
4206
4153
|
import toast9 from "react-hot-toast";
|
|
4207
|
-
import { HugeiconsIcon as
|
|
4154
|
+
import { HugeiconsIcon as HugeiconsIcon29 } from "@hugeicons/react";
|
|
4208
4155
|
import {
|
|
4209
4156
|
ArrowLeft01Icon as ArrowLeft01Icon10,
|
|
4210
4157
|
ArrowRight01Icon as ArrowRight01Icon8,
|
|
4211
4158
|
Loading03Icon as Loading03Icon18,
|
|
4212
4159
|
Copy01Icon as Copy01Icon4
|
|
4213
4160
|
} from "@hugeicons/core-free-icons";
|
|
4214
|
-
var PageSpinner5 = () => /* @__PURE__ */
|
|
4161
|
+
var PageSpinner5 = () => /* @__PURE__ */ React43.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon: Loading03Icon18, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
4215
4162
|
var formatWeb3Name2 = (name) => {
|
|
4216
4163
|
if (!name) return "";
|
|
4217
4164
|
return name.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
|
@@ -4245,49 +4192,243 @@ var UniversalReferralPage = ({
|
|
|
4245
4192
|
const [isLoaded, setIsLoaded] = useState28(false);
|
|
4246
4193
|
const fallbackUrl = `/api/avatar/?name=${encodeURIComponent(name || " ")}&background=ffffff&color=000000&size=200&font-size=0.33`;
|
|
4247
4194
|
const finalSrc = src || fallbackUrl;
|
|
4248
|
-
return /* @__PURE__ */
|
|
4195
|
+
return /* @__PURE__ */ React43.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__ */ React43.createElement(HugeiconsIcon29, { icon: Loading03Icon18, size: 16, className: "animate-spin text-neutral-400 absolute" }), /* @__PURE__ */ React43.createElement("img", { src: finalSrc, alt, onLoad: () => setIsLoaded(true), className: `w-full h-full object-cover transition-opacity duration-300 ${isLoaded ? "opacity-100" : "opacity-0"}` }));
|
|
4249
4196
|
};
|
|
4250
|
-
return /* @__PURE__ */
|
|
4197
|
+
return /* @__PURE__ */ React43.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ React43.createElement(ManagedToaster, null), /* @__PURE__ */ React43.createElement("div", { className: "mb-6 flex w-full items-center px-1" }, /* @__PURE__ */ React43.createElement("button", { onClick: onBackHandler, className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none" }, /* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon: ArrowLeft01Icon10, size: 16 }), " Back")), /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-3xl bg-white w-full" }, /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col gap-4 mb-2" }, /* @__PURE__ */ React43.createElement("div", null, /* @__PURE__ */ React43.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Your Referrals"), /* @__PURE__ */ React43.createElement("p", { className: "text-xs text-neutral-500" }, "Invite friends and earn rewards when they verify and activate cards.")), /* @__PURE__ */ React43.createElement("div", { className: "border border-neutral-200 rounded-xl p-4 flex items-center justify-between mt-2" }, /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React43.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 " }, "Invitation Code"), isLoading && !referralCode ? /* @__PURE__ */ React43.createElement("div", { className: "h-6 w-24 bg-neutral-50 animate-pulse rounded mt-1" }) : /* @__PURE__ */ React43.createElement("span", { className: "text-lg text-black tracking-widest" }, referralCode)), /* @__PURE__ */ React43.createElement(
|
|
4251
4198
|
"button",
|
|
4252
4199
|
{
|
|
4253
4200
|
onClick: handleCopyCode,
|
|
4254
4201
|
disabled: isLoading || !referralCode,
|
|
4255
4202
|
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"
|
|
4256
4203
|
},
|
|
4257
|
-
/* @__PURE__ */
|
|
4258
|
-
)), /* @__PURE__ */
|
|
4204
|
+
/* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon: Copy01Icon4, size: 18 })
|
|
4205
|
+
)), /* @__PURE__ */ React43.createElement("div", { className: "text-[13px] text-black px-1 mt-2" }, "Total Invited: ", isLoading && !totalCount ? "-" : totalCount)), /* @__PURE__ */ React43.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ React43.createElement(PageSpinner5, null) : /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React43.createElement("div", null, referrals.length === 0 ? /* @__PURE__ */ React43.createElement("div", { className: "flex flex-col items-center justify-center py-12 opacity-50" }, /* @__PURE__ */ React43.createElement("p", { className: "text-xs text-neutral-500 text-center" }, "You haven't referred anyone yet.")) : referrals.map((ref, idx) => /* @__PURE__ */ React43.createElement(
|
|
4259
4206
|
"div",
|
|
4260
4207
|
{
|
|
4261
4208
|
key: `${ref.profile.username}-${idx}`,
|
|
4262
4209
|
className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors group min-w-0 px-3 -mx-3 rounded-xl"
|
|
4263
4210
|
},
|
|
4264
|
-
/* @__PURE__ */
|
|
4211
|
+
/* @__PURE__ */ React43.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React43.createElement(
|
|
4265
4212
|
AvatarLogo2,
|
|
4266
4213
|
{
|
|
4267
4214
|
src: ref.profile.avatarUrl,
|
|
4268
4215
|
alt: ref.profile.username,
|
|
4269
4216
|
name: formatWeb3Name2(ref.profile.web3Name)
|
|
4270
4217
|
}
|
|
4271
|
-
), /* @__PURE__ */
|
|
4272
|
-
/* @__PURE__ */
|
|
4273
|
-
))), /* @__PURE__ */
|
|
4218
|
+
), /* @__PURE__ */ React43.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-0.5 pr-4" }, /* @__PURE__ */ React43.createElement("p", { className: "text-[14px] text-black truncate" }, formatWeb3Name2(ref.profile.web3Name)), /* @__PURE__ */ React43.createElement("p", { className: "text-[12px] text-neutral-500 truncate" }, "@", ref.profile.username))),
|
|
4219
|
+
/* @__PURE__ */ React43.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React43.createElement("span", { className: "text-[11px] text-neutral-400" }, "Joined"), /* @__PURE__ */ React43.createElement("span", { className: "text-[12px] text-black" }, formatDate(ref.joinedAt)))
|
|
4220
|
+
))), /* @__PURE__ */ React43.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React43.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ React43.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React43.createElement(
|
|
4274
4221
|
"button",
|
|
4275
4222
|
{
|
|
4276
4223
|
onClick: () => onPageChange(currentPage - 1),
|
|
4277
4224
|
disabled: currentPage <= 1 || isLoading,
|
|
4278
4225
|
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"
|
|
4279
4226
|
},
|
|
4280
|
-
/* @__PURE__ */
|
|
4281
|
-
), /* @__PURE__ */
|
|
4227
|
+
/* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon: ArrowLeft01Icon10, size: 14 })
|
|
4228
|
+
), /* @__PURE__ */ React43.createElement(
|
|
4282
4229
|
"button",
|
|
4283
4230
|
{
|
|
4284
4231
|
onClick: () => onPageChange(currentPage + 1),
|
|
4285
4232
|
disabled: currentPage >= totalPages || isLoading || totalPages === 0,
|
|
4286
4233
|
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"
|
|
4287
4234
|
},
|
|
4288
|
-
/* @__PURE__ */
|
|
4235
|
+
/* @__PURE__ */ React43.createElement(HugeiconsIcon29, { icon: ArrowRight01Icon8, size: 14 })
|
|
4289
4236
|
)))))));
|
|
4290
4237
|
};
|
|
4238
|
+
|
|
4239
|
+
// src/components/UniversalCardActionPage.tsx
|
|
4240
|
+
import React44, { useState as useState29 } from "react";
|
|
4241
|
+
import Confetti2 from "react-confetti";
|
|
4242
|
+
import { useWindowSize as useWindowSize2 } from "react-use";
|
|
4243
|
+
import { HugeiconsIcon as HugeiconsIcon30 } from "@hugeicons/react";
|
|
4244
|
+
import {
|
|
4245
|
+
ArrowLeft01Icon as ArrowLeft01Icon11,
|
|
4246
|
+
CancelCircleIcon as CancelCircleIcon7,
|
|
4247
|
+
Loading03Icon as Loading03Icon19
|
|
4248
|
+
} from "@hugeicons/core-free-icons";
|
|
4249
|
+
var CheckIcon2 = ({ className = "" }) => /* @__PURE__ */ React44.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__ */ React44.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ React44.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
4250
|
+
var CrossIcon2 = ({ className = "" }) => /* @__PURE__ */ React44.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__ */ React44.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ React44.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
4251
|
+
var formatTierName = (name) => {
|
|
4252
|
+
if (!name) return "";
|
|
4253
|
+
return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
|
|
4254
|
+
};
|
|
4255
|
+
var getTierGlow = (tier) => {
|
|
4256
|
+
switch (tier.toUpperCase()) {
|
|
4257
|
+
case "PLATINUM":
|
|
4258
|
+
return "from-neutral-300";
|
|
4259
|
+
case "PREMIUM":
|
|
4260
|
+
return "from-purple-200";
|
|
4261
|
+
case "GOLD":
|
|
4262
|
+
return "from-yellow-200";
|
|
4263
|
+
case "SILVER":
|
|
4264
|
+
return "from-slate-300";
|
|
4265
|
+
case "NEO":
|
|
4266
|
+
return "from-cyan-200";
|
|
4267
|
+
case "BASIC":
|
|
4268
|
+
return "from-blue-200";
|
|
4269
|
+
case "ONE":
|
|
4270
|
+
return "from-emerald-200";
|
|
4271
|
+
case "ZERO":
|
|
4272
|
+
return "from-rose-200";
|
|
4273
|
+
default:
|
|
4274
|
+
return "from-neutral-200";
|
|
4275
|
+
}
|
|
4276
|
+
};
|
|
4277
|
+
var UniversalCardActionPage = ({
|
|
4278
|
+
cardType,
|
|
4279
|
+
currentTier,
|
|
4280
|
+
hasPreordered,
|
|
4281
|
+
onWaitlist,
|
|
4282
|
+
tiers,
|
|
4283
|
+
isLoadingData,
|
|
4284
|
+
onBack,
|
|
4285
|
+
onConfirmAction
|
|
4286
|
+
}) => {
|
|
4287
|
+
const onBackHandler = onBack ?? (() => {
|
|
4288
|
+
if (typeof window !== "undefined") window.history.back();
|
|
4289
|
+
});
|
|
4290
|
+
const { width, height } = useWindowSize2();
|
|
4291
|
+
const [selectedTier, setSelectedTier] = useState29(null);
|
|
4292
|
+
const [intendedAction, setIntendedAction] = useState29(null);
|
|
4293
|
+
const [isProcessing, setIsProcessing] = useState29(false);
|
|
4294
|
+
const [showConfetti, setShowConfetti] = useState29(false);
|
|
4295
|
+
const availableTiers = tiers.filter((t) => t.isAvailable || t.acceptPreorder || t.acceptWaitlist);
|
|
4296
|
+
const handleTierClick = (tier, explicitAction) => {
|
|
4297
|
+
setSelectedTier(tier);
|
|
4298
|
+
setIntendedAction(explicitAction);
|
|
4299
|
+
};
|
|
4300
|
+
const processAction = async () => {
|
|
4301
|
+
if (!selectedTier || !intendedAction) return;
|
|
4302
|
+
setIsProcessing(true);
|
|
4303
|
+
try {
|
|
4304
|
+
const result = await onConfirmAction(selectedTier.tierName, intendedAction);
|
|
4305
|
+
if (result.success) {
|
|
4306
|
+
if (intendedAction === "pre_order") {
|
|
4307
|
+
setShowConfetti(true);
|
|
4308
|
+
setTimeout(() => setShowConfetti(false), 6e3);
|
|
4309
|
+
}
|
|
4310
|
+
setSelectedTier(null);
|
|
4311
|
+
setIntendedAction(null);
|
|
4312
|
+
}
|
|
4313
|
+
} finally {
|
|
4314
|
+
setIsProcessing(false);
|
|
4315
|
+
}
|
|
4316
|
+
};
|
|
4317
|
+
const getPrimaryButtonText = (tier) => {
|
|
4318
|
+
const isCurrent = tier.tierName === currentTier;
|
|
4319
|
+
if (isCurrent) {
|
|
4320
|
+
if (hasPreordered) return "Secured (Pre-ordered)";
|
|
4321
|
+
return "Pre-order Now";
|
|
4322
|
+
}
|
|
4323
|
+
if (hasPreordered) return "Unavailable";
|
|
4324
|
+
return `Upgrade to ${formatTierName(tier.tierName)}`;
|
|
4325
|
+
};
|
|
4326
|
+
const getWaitlistButtonText = (tier) => {
|
|
4327
|
+
const isCurrent = tier.tierName === currentTier;
|
|
4328
|
+
if (isCurrent && (onWaitlist || hasPreordered)) return "Joined";
|
|
4329
|
+
return "Join Waitlist";
|
|
4330
|
+
};
|
|
4331
|
+
return /* @__PURE__ */ React44.createElement("div", { className: "w-full" }, /* @__PURE__ */ React44.createElement(ManagedToaster, null), showConfetti && /* @__PURE__ */ React44.createElement("div", { className: "fixed inset-0 z-200 pointer-events-none" }, /* @__PURE__ */ React44.createElement(Confetti2, { width, height, recycle: false, numberOfPieces: 500, gravity: 0.15 })), /* @__PURE__ */ React44.createElement("div", { className: "mb-6 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ React44.createElement(
|
|
4332
|
+
"button",
|
|
4333
|
+
{
|
|
4334
|
+
onClick: onBackHandler,
|
|
4335
|
+
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] outline-none"
|
|
4336
|
+
},
|
|
4337
|
+
/* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: ArrowLeft01Icon11, size: 16 }),
|
|
4338
|
+
" Back"
|
|
4339
|
+
)), /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col animate-in max-w-5xl w-full mx-auto fade-in duration-300" }, /* @__PURE__ */ React44.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 px-4" }, /* @__PURE__ */ React44.createElement("span", { className: "text-[10px] tracking-[0.4em] text-neutral-400 block uppercase mb-3" }, cardType, " CARD ACTIVATION"), /* @__PURE__ */ React44.createElement("h1", { className: "text-2xl sm:text-3xl text-black tracking-tight mb-2" }, "Select Your Tier"), /* @__PURE__ */ React44.createElement("p", { className: "text-xs text-neutral-500 max-w-lg" }, hasPreordered ? "You have already secured your card. Upgrades are disabled while your order is pending processing." : "Upgrade your tier or secure your card now. Pre-orders guarantee priority processing when the batch goes live.")), isLoadingData ? /* @__PURE__ */ React44.createElement("div", { className: "flex justify-center py-20" }, /* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: Loading03Icon19, size: 32, className: "animate-spin text-neutral-300" })) : /* @__PURE__ */ React44.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-4xl mx-auto px-4" }, availableTiers.map((tier) => {
|
|
4340
|
+
const isCurrent = tier.tierName === currentTier;
|
|
4341
|
+
const isCardDisabled = hasPreordered && !isCurrent;
|
|
4342
|
+
const isHighlighted = hasPreordered && isCurrent;
|
|
4343
|
+
const isThisCardLoading = isProcessing && selectedTier?.tierName === tier.tierName;
|
|
4344
|
+
const isPrimaryDisabled = isCardDisabled || isHighlighted || isThisCardLoading || !tier.acceptPreorder;
|
|
4345
|
+
const isWaitlistDisabled = !isCurrent || isCurrent && (onWaitlist || hasPreordered) || isThisCardLoading || !tier.acceptWaitlist;
|
|
4346
|
+
return /* @__PURE__ */ React44.createElement(
|
|
4347
|
+
"div",
|
|
4348
|
+
{
|
|
4349
|
+
key: tier.tierName,
|
|
4350
|
+
className: `relative bg-white rounded-3xl p-6 flex flex-col overflow-hidden transition-all duration-300
|
|
4351
|
+
${isCardDisabled ? "opacity-50 grayscale-50 pointer-events-none" : ""}
|
|
4352
|
+
|
|
4353
|
+
`
|
|
4354
|
+
},
|
|
4355
|
+
/* @__PURE__ */ React44.createElement(
|
|
4356
|
+
"div",
|
|
4357
|
+
{
|
|
4358
|
+
className: `absolute -top-10 -right-10 w-48 h-48 bg-linear-to-bl ${getTierGlow(tier.tierName)} to-transparent opacity-40 blur-2xl rounded-full pointer-events-none`
|
|
4359
|
+
}
|
|
4360
|
+
),
|
|
4361
|
+
isThisCardLoading && /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0 z-50 flex items-center justify-center bg-white/40 backdrop-blur-[1px]" }, /* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: Loading03Icon19, size: 32, className: "animate-spin text-black" })),
|
|
4362
|
+
/* @__PURE__ */ React44.createElement("div", { className: "mb-6 relative z-10" }, /* @__PURE__ */ React44.createElement("div", { className: "flex justify-between items-start mb-1" }, /* @__PURE__ */ React44.createElement("span", { className: "text-black text-sm tracking-widest " }, formatTierName(tier.tierName)), isCurrent && !hasPreordered && /* @__PURE__ */ React44.createElement("span", { className: "text-[9px] bg-neutral-100 text-neutral-600 px-2 py-1 rounded-full uppercase tracking-wider" }, "Current")), /* @__PURE__ */ React44.createElement("div", { className: "flex items-baseline gap-1 mt-2" }, /* @__PURE__ */ React44.createElement("h3", { className: "text-3xl font-light text-black" }, tier.priceUSD === 0 ? "Free" : `$${tier.priceUSD.toFixed(2)}`), tier.priceUSD > 0 && /* @__PURE__ */ React44.createElement("span", { className: "text-xs text-neutral-500" }, tier.isYearly ? "/ year" : "one-time")), /* @__PURE__ */ React44.createElement("p", { className: "text-[13px] text-neutral-500 mt-3 min-h-12 leading-relaxed" }, tier.description)),
|
|
4363
|
+
/* @__PURE__ */ React44.createElement("div", { className: "flex flex-col gap-2.5 mb-6 relative z-10" }, /* @__PURE__ */ React44.createElement("div", { className: isPrimaryDisabled ? "opacity-50 pointer-events-none" : "" }, /* @__PURE__ */ React44.createElement(
|
|
4364
|
+
ThreeDActionButton,
|
|
4365
|
+
{
|
|
4366
|
+
disabled: isPrimaryDisabled,
|
|
4367
|
+
onClick: () => handleTierClick(tier, isCurrent ? "pre_order" : "upgrade"),
|
|
4368
|
+
className: "w-full"
|
|
4369
|
+
},
|
|
4370
|
+
getPrimaryButtonText(tier)
|
|
4371
|
+
)), /* @__PURE__ */ React44.createElement(
|
|
4372
|
+
"button",
|
|
4373
|
+
{
|
|
4374
|
+
disabled: isWaitlistDisabled,
|
|
4375
|
+
onClick: () => handleTierClick(tier, "join_waitlist"),
|
|
4376
|
+
className: `w-full py-2.5 rounded-full text-xs tracking-wide transition-all outline-none border
|
|
4377
|
+
${isCurrent && (onWaitlist || hasPreordered) ? "bg-neutral-50 border-neutral-100 text-neutral-400 cursor-not-allowed" : "bg-white border-neutral-200 text-black hover:bg-neutral-50"}
|
|
4378
|
+
disabled:opacity-40 disabled:cursor-not-allowed
|
|
4379
|
+
`
|
|
4380
|
+
},
|
|
4381
|
+
getWaitlistButtonText(tier)
|
|
4382
|
+
)),
|
|
4383
|
+
/* @__PURE__ */ React44.createElement("div", { className: "flex flex-col gap-3 relative z-10" }, tier.features.map((feature, featureIdx) => {
|
|
4384
|
+
const isAvailable = feature.value !== false;
|
|
4385
|
+
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
4386
|
+
return /* @__PURE__ */ React44.createElement("div", { key: featureIdx, className: "flex items-center gap-3" }, isAvailable ? /* @__PURE__ */ React44.createElement(CheckIcon2, null) : /* @__PURE__ */ React44.createElement(CrossIcon2, null), /* @__PURE__ */ React44.createElement("span", { className: `text-[12px] truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ React44.createElement("span", { className: "text-neutral-500 ml-1 " }, valueText)));
|
|
4387
|
+
}))
|
|
4388
|
+
);
|
|
4389
|
+
}))), selectedTier && intendedAction !== "join_waitlist" && /* @__PURE__ */ React44.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React44.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: () => !isProcessing && setSelectedTier(null) }), /* @__PURE__ */ React44.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__ */ React44.createElement(
|
|
4390
|
+
"div",
|
|
4391
|
+
{
|
|
4392
|
+
className: `absolute -top-10 -right-10 w-40 h-40 bg-linear-to-bl ${getTierGlow(selectedTier.tierName)} to-transparent opacity-40 blur-2xl rounded-full pointer-events-none`
|
|
4393
|
+
}
|
|
4394
|
+
), /* @__PURE__ */ React44.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 relative z-10" }, /* @__PURE__ */ React44.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Confirm Action"), /* @__PURE__ */ React44.createElement(
|
|
4395
|
+
"button",
|
|
4396
|
+
{
|
|
4397
|
+
disabled: isProcessing,
|
|
4398
|
+
onClick: () => setSelectedTier(null),
|
|
4399
|
+
className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50"
|
|
4400
|
+
},
|
|
4401
|
+
/* @__PURE__ */ React44.createElement(HugeiconsIcon30, { icon: CancelCircleIcon7, size: 18 })
|
|
4402
|
+
)), /* @__PURE__ */ React44.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 relative z-10" }, /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ React44.createElement("p", { className: "text-2xl text-black mb-1" }, selectedTier.priceUSD === 0 ? "Free" : `$${selectedTier.priceUSD.toFixed(2)}`), /* @__PURE__ */ React44.createElement("span", { className: `text-[10px] tracking-widest px-4 py-1.5 rounded-full bg-neutral-100 text-black mt-1` }, formatTierName(selectedTier.tierName), " ", formatTierName(cardType))), /* @__PURE__ */ React44.createElement("div", { className: "grid grid-cols-1 gap-y-6 mb-8 mt-4" }, /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1" }, "Action"), /* @__PURE__ */ React44.createElement("span", { className: "text-[13px] text-black " }, intendedAction === "upgrade" ? `Upgrade to ${formatTierName(selectedTier.tierName)}` : `Pre-order Card`)), intendedAction === "pre_order" && selectedTier.priceUSD > 0 && /* @__PURE__ */ React44.createElement("div", null, /* @__PURE__ */ React44.createElement("span", { className: "text-[10px] tracking-[0.2em] text-neutral-400 block mb-1" }, "Payment Notice"), /* @__PURE__ */ React44.createElement("span", { className: "text-[12px] text-neutral-600 leading-relaxed block" }, "By confirming, $", selectedTier.priceUSD.toFixed(2), " will be securely deducted from your USD asset balance to guarantee your order."))), /* @__PURE__ */ React44.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ React44.createElement(
|
|
4403
|
+
ThreeDActionButton,
|
|
4404
|
+
{
|
|
4405
|
+
onClick: processAction,
|
|
4406
|
+
isLoading: isProcessing,
|
|
4407
|
+
className: "w-full"
|
|
4408
|
+
},
|
|
4409
|
+
"Confirm & Proceed"
|
|
4410
|
+
), /* @__PURE__ */ React44.createElement(
|
|
4411
|
+
"button",
|
|
4412
|
+
{
|
|
4413
|
+
disabled: isProcessing,
|
|
4414
|
+
onClick: () => setSelectedTier(null),
|
|
4415
|
+
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-[13px] mt-1 disabled:opacity-50"
|
|
4416
|
+
},
|
|
4417
|
+
"Cancel"
|
|
4418
|
+
))))), selectedTier && intendedAction === "join_waitlist" && /* @__PURE__ */ React44.createElement(
|
|
4419
|
+
ConfirmationDialog,
|
|
4420
|
+
{
|
|
4421
|
+
isOpen: true,
|
|
4422
|
+
title: "Join Waitlist",
|
|
4423
|
+
message: `Are you sure you want to join the waitlist for the ${formatTierName(selectedTier.tierName)} ${formatTierName(cardType)} card? You will be notified via email when it becomes available.`,
|
|
4424
|
+
confirmText: "Join Waitlist",
|
|
4425
|
+
isDestructive: false,
|
|
4426
|
+
isProcessing,
|
|
4427
|
+
onClose: () => setSelectedTier(null),
|
|
4428
|
+
onConfirm: processAction
|
|
4429
|
+
}
|
|
4430
|
+
));
|
|
4431
|
+
};
|
|
4291
4432
|
export {
|
|
4292
4433
|
AppBento2,
|
|
4293
4434
|
ConsultantShowcase,
|
|
@@ -4316,6 +4457,7 @@ export {
|
|
|
4316
4457
|
TextInput,
|
|
4317
4458
|
ThreeDActionButton,
|
|
4318
4459
|
ThreeDButton,
|
|
4460
|
+
UniversalCardActionPage,
|
|
4319
4461
|
UniversalCardPage,
|
|
4320
4462
|
UniversalErrorView,
|
|
4321
4463
|
UniversalHomeView,
|