@retinalabsllc/zairusjs 9.0.40 → 9.0.55
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 -1
- package/dist/index.d.ts +31 -1
- package/dist/index.js +299 -213
- package/dist/index.mjs +278 -190
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -600,8 +600,8 @@ import { HugeiconsIcon as HugeiconsIcon3 } from "@hugeicons/react";
|
|
|
600
600
|
var MobileNav = ({ items }) => {
|
|
601
601
|
const pathname = usePathname2();
|
|
602
602
|
if (!items || items.length === 0) return null;
|
|
603
|
-
return /* @__PURE__ */ React7.createElement("div", { className: "fixed bottom-6 inset-x-0 z-100 flex justify-center pointer-events-none px-3 animate-in slide-in-from-bottom-8 fade-in duration-500" }, /* @__PURE__ */ React7.createElement("nav", { className: "pointer-events-auto w-full max-w-sm bg-white/50 backdrop-blur-xl shadow-[0_8px_30px_rgb(0,0,0,0.08)] rounded-full px-6 py-2.5 flex items-center justify-between" }, items.map((item) => {
|
|
604
|
-
const isActive = item.href === "/" ? pathname === "/" : pathname?.startsWith(item.href);
|
|
603
|
+
return /* @__PURE__ */ React7.createElement("div", { className: "fixed bottom-6 inset-x-0 z-100 flex justify-center pointer-events-none px-3 animate-in slide-in-from-bottom-8 fade-in duration-500 md:hidden" }, /* @__PURE__ */ React7.createElement("nav", { className: "pointer-events-auto w-full max-w-sm bg-white/50 backdrop-blur-xl shadow-[0_8px_30px_rgb(0,0,0,0.08)] rounded-full px-6 py-2.5 flex items-center justify-between" }, items.map((item) => {
|
|
604
|
+
const isActive = item.href === "/" || item.href === "/app" ? pathname === "/" || pathname === "/app" : pathname === item.href || pathname?.startsWith(`${item.href}/`);
|
|
605
605
|
return /* @__PURE__ */ React7.createElement(
|
|
606
606
|
Link4,
|
|
607
607
|
{
|
|
@@ -1025,7 +1025,7 @@ var UniversalProfileSettings = ({
|
|
|
1025
1025
|
};
|
|
1026
1026
|
const hasChanges = firstName !== initialFirstName || lastName !== initialLastName;
|
|
1027
1027
|
const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || firstName.trim().length === 0 || lastName.trim().length === 0;
|
|
1028
|
-
return /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6
|
|
1028
|
+
return /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ React12.createElement(ManagedToaster, null), /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ React12.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React12.createElement("h1", { className: "text-black text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ React12.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ React12.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ React12.createElement(HugeiconsIcon6, { icon: CircleLock02Icon2, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ React12.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ React12.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ React12.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ React12.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ React12.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React12.createElement(
|
|
1029
1029
|
TextInput,
|
|
1030
1030
|
{
|
|
1031
1031
|
label: "First Name",
|
|
@@ -1227,7 +1227,8 @@ import {
|
|
|
1227
1227
|
Search01Icon,
|
|
1228
1228
|
SearchList02Icon,
|
|
1229
1229
|
ListSettingIcon,
|
|
1230
|
-
CancelCircleIcon as CancelCircleIcon2
|
|
1230
|
+
CancelCircleIcon as CancelCircleIcon2,
|
|
1231
|
+
Copy01Icon
|
|
1231
1232
|
} from "@hugeicons/core-free-icons";
|
|
1232
1233
|
var PageSpinner2 = () => /* @__PURE__ */ React15.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: Loading03Icon4, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
1233
1234
|
var formatDate = (dateInput) => {
|
|
@@ -1314,17 +1315,24 @@ var UniversalTransactionPage = ({
|
|
|
1314
1315
|
setIsGeneratingReceipt(false);
|
|
1315
1316
|
}
|
|
1316
1317
|
};
|
|
1318
|
+
const handleCopyReference = async (reference) => {
|
|
1319
|
+
try {
|
|
1320
|
+
await navigator.clipboard.writeText(reference);
|
|
1321
|
+
toast4.success("Copied");
|
|
1322
|
+
} catch {
|
|
1323
|
+
}
|
|
1324
|
+
};
|
|
1317
1325
|
const isListLoading = isLoading || isTyping;
|
|
1318
|
-
return /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col gap-6 animate-in max-w-5xl fade-in duration-300" }, /* @__PURE__ */ React15.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ React15.createElement("div", { className: "flex flex-
|
|
1326
|
+
return /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col gap-6 animate-in max-w-5xl fade-in duration-300" }, /* @__PURE__ */ React15.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ React15.createElement("div", { className: "flex flex-row flex-nowrap items-center justify-between gap-4 w-full" }, /* @__PURE__ */ React15.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ React15.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ React15.createElement(
|
|
1319
1327
|
"input",
|
|
1320
1328
|
{
|
|
1321
1329
|
type: "text",
|
|
1322
1330
|
placeholder: "Search reference or amount...",
|
|
1323
1331
|
value: localSearchQuery,
|
|
1324
1332
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
1325
|
-
className: "w-full pl-10 pr-4 py-2 bg-white
|
|
1333
|
+
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-[13px] text-black placeholder-neutral-400 outline-none transition-colors focus:border-black"
|
|
1326
1334
|
}
|
|
1327
|
-
)), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-3 w-auto pb-0" }, /* @__PURE__ */ React15.createElement(
|
|
1335
|
+
)), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ React15.createElement(
|
|
1328
1336
|
"button",
|
|
1329
1337
|
{
|
|
1330
1338
|
onClick: () => setIsDirectionModalOpen(true),
|
|
@@ -1347,7 +1355,7 @@ var UniversalTransactionPage = ({
|
|
|
1347
1355
|
onClick: () => setSelectedTransaction(tx),
|
|
1348
1356
|
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"
|
|
1349
1357
|
},
|
|
1350
|
-
/* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React15.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black` }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: tx.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ React15.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[13px] text-black truncate" }, getDisplayName(tx)), /* @__PURE__ */ React15.createElement("p", { className: `text-[
|
|
1358
|
+
/* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React15.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black` }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: tx.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ React15.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[13px] text-black truncate" }, getDisplayName(tx)), /* @__PURE__ */ React15.createElement("p", { className: `text-[12px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, tx.direction === "CREDIT" ? "+" : "-", tx.amount, " ", tx.currency))),
|
|
1351
1359
|
/* @__PURE__ */ React15.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400" }, formatDate(tx.createdAt)), /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400 capitalize" }, tx.direction.toLowerCase()))
|
|
1352
1360
|
))), !hidePagination && /* @__PURE__ */ React15.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React15.createElement(
|
|
1353
1361
|
"button",
|
|
@@ -1365,7 +1373,14 @@ var UniversalTransactionPage = ({
|
|
|
1365
1373
|
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"
|
|
1366
1374
|
},
|
|
1367
1375
|
/* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: ArrowRight01Icon, size: 14 })
|
|
1368
|
-
)))))), selectedTransaction && /* @__PURE__ */ React15.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React15.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ React15.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__ */ React15.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React15.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ React15.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: CancelCircleIcon2, size: 18 }))), /* @__PURE__ */ React15.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ React15.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 bg-neutral-100 text-black` }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: selectedTransaction.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ React15.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ React15.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50" }, selectedTransaction.status)), /* @__PURE__ */ React15.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ React15.createElement("
|
|
1376
|
+
)))))), selectedTransaction && /* @__PURE__ */ React15.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React15.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ React15.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__ */ React15.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ React15.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ React15.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: CancelCircleIcon2, size: 18 }))), /* @__PURE__ */ React15.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ React15.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ React15.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 bg-neutral-100 text-black` }, /* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: selectedTransaction.direction === "CREDIT" ? ArrowDownRight01Icon : ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ React15.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ React15.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50" }, selectedTransaction.status)), /* @__PURE__ */ React15.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, selectedTransaction.reference), /* @__PURE__ */ React15.createElement(
|
|
1377
|
+
"button",
|
|
1378
|
+
{
|
|
1379
|
+
onClick: () => handleCopyReference(selectedTransaction.reference),
|
|
1380
|
+
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1381
|
+
},
|
|
1382
|
+
/* @__PURE__ */ React15.createElement(HugeiconsIcon9, { icon: Copy01Icon, size: 14 })
|
|
1383
|
+
))), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black" }, formatDate(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ React15.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transfer Route"), /* @__PURE__ */ React15.createElement("div", { className: "flex items-center gap-2 text-[13px] text-black" }, /* @__PURE__ */ React15.createElement("span", { className: "truncate " }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ React15.createElement("span", { className: "text-neutral-400" }, "\u2192"), /* @__PURE__ */ React15.createElement("span", { className: "truncate " }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
|
|
1369
1384
|
if (key === "fromAddress" || key === "toAddress") return null;
|
|
1370
1385
|
if (value === null || value === void 0 || typeof value === "object") return null;
|
|
1371
1386
|
const formattedKey = key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase());
|
|
@@ -1487,7 +1502,7 @@ var UniversalHomeView = ({
|
|
|
1487
1502
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1488
1503
|
},
|
|
1489
1504
|
/* @__PURE__ */ React16.createElement(HugeiconsIcon10, { icon: isBalanceHidden ? ViewIcon : ViewOffSlashIcon, size: 14 })
|
|
1490
|
-
)), /* @__PURE__ */ React16.createElement("h1", { className: `text-3xl sm:text-4xl md:text-5xl text-black tracking-tight mb-5 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ React16.createElement("span", { className: "text-
|
|
1505
|
+
)), /* @__PURE__ */ React16.createElement("h1", { className: `text-3xl sm:text-4xl md:text-5xl text-black tracking-tight mb-5 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ React16.createElement("span", { className: "text-2xl text-neutral-400 mr-1" }, balanceCurrency), intPart, /* @__PURE__ */ React16.createElement("span", { className: "text-xl sm:text-2xl text-neutral-400" }, ".", decPart)), /* @__PURE__ */ React16.createElement("div", { className: "flex items-center gap-3" }, primaryAction && /* @__PURE__ */ React16.createElement(
|
|
1491
1506
|
ThreeDActionButton,
|
|
1492
1507
|
{
|
|
1493
1508
|
onClick: primaryAction.onClick,
|
|
@@ -1688,7 +1703,7 @@ var PinDialerBottomSheet = ({
|
|
|
1688
1703
|
if (!isVerifying) onClose();
|
|
1689
1704
|
}
|
|
1690
1705
|
}
|
|
1691
|
-
), /* @__PURE__ */ React19.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__ */ React19.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[16px] text-black
|
|
1706
|
+
), /* @__PURE__ */ React19.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__ */ React19.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ React19.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title), /* @__PURE__ */ React19.createElement(
|
|
1692
1707
|
"button",
|
|
1693
1708
|
{
|
|
1694
1709
|
onClick: () => {
|
|
@@ -1748,7 +1763,7 @@ var CardActionDialog = ({
|
|
|
1748
1763
|
className: "absolute inset-0 bg-black/40 animate-in fade-in duration-200",
|
|
1749
1764
|
onClick: onClose
|
|
1750
1765
|
}
|
|
1751
|
-
), /* @__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
|
|
1766
|
+
), /* @__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(
|
|
1752
1767
|
"button",
|
|
1753
1768
|
{
|
|
1754
1769
|
onClick: onClose,
|
|
@@ -1759,7 +1774,7 @@ var CardActionDialog = ({
|
|
|
1759
1774
|
"button",
|
|
1760
1775
|
{
|
|
1761
1776
|
onClick: onProceed,
|
|
1762
|
-
className: "w-full py-3.5 bg-black text-white text-[13px]
|
|
1777
|
+
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"
|
|
1763
1778
|
},
|
|
1764
1779
|
actionType === "ACTIVATE" ? "Activate Now" : "Create Card"
|
|
1765
1780
|
))));
|
|
@@ -1863,17 +1878,17 @@ var UniversalCardPage = ({
|
|
|
1863
1878
|
const capitalized = type.charAt(0).toUpperCase() + type.slice(1).toLowerCase();
|
|
1864
1879
|
return `${capitalized} Card`;
|
|
1865
1880
|
};
|
|
1866
|
-
const displayCardNumber = isRevealed ? activeCard.cardNumber :
|
|
1867
|
-
const displayExpiry = isRevealed ? activeCard.expiry : "
|
|
1868
|
-
const displayCvv = isRevealed ? activeCard.cvv : "
|
|
1869
|
-
return /* @__PURE__ */ React21.createElement("div", { className: "w-full flex flex-col items-center animate-in fade-in duration-300 pb-12" }, cards.length > 1 && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ React21.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) => {
|
|
1881
|
+
const displayCardNumber = isRevealed ? activeCard.cardNumber : `XXXX XXXX XXXX ${activeCard.cardNumber.slice(-4)}`;
|
|
1882
|
+
const displayExpiry = isRevealed ? activeCard.expiry : "XX/XX";
|
|
1883
|
+
const displayCvv = isRevealed ? activeCard.cvv : "XXX";
|
|
1884
|
+
return /* @__PURE__ */ React21.createElement("div", { className: "w-full flex flex-col items-center animate-in max-w-5xl fade-in duration-300 pb-12" }, cards.length > 1 && /* @__PURE__ */ React21.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ React21.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) => {
|
|
1870
1885
|
const isActive = activeTabIndex === idx;
|
|
1871
1886
|
return /* @__PURE__ */ React21.createElement(
|
|
1872
1887
|
"button",
|
|
1873
1888
|
{
|
|
1874
1889
|
key: tab.id,
|
|
1875
1890
|
onClick: () => setActiveTabIndex(idx),
|
|
1876
|
-
className: `px-4
|
|
1891
|
+
className: `px-4 py-1.5 rounded-full text-[11px] transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-100 text-black" : "text-neutral-500 hover:text-black hover:bg-neutral-50/50"}`
|
|
1877
1892
|
},
|
|
1878
1893
|
formatTabLabel(tab.type)
|
|
1879
1894
|
);
|
|
@@ -1891,14 +1906,14 @@ var UniversalCardPage = ({
|
|
|
1891
1906
|
}
|
|
1892
1907
|
},
|
|
1893
1908
|
!isBgLoaded && /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50 " }, /* @__PURE__ */ React21.createElement(HugeiconsIcon15, { icon: Loading03Icon8, size: 28, className: "animate-spin text-black" })),
|
|
1894
|
-
!isActivated && isBgLoaded && /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 z-40 w-full h-full rounded-2xl backdrop-blur-
|
|
1909
|
+
!isActivated && isBgLoaded && /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 z-40 w-full h-full rounded-2xl backdrop-blur-sm bg-white/20 flex flex-col items-center justify-center border border-white/30", style: { transform: "translateZ(1px)" } }, isUnactivated && /* @__PURE__ */ React21.createElement(
|
|
1895
1910
|
"button",
|
|
1896
1911
|
{
|
|
1897
1912
|
onClick: (e) => {
|
|
1898
1913
|
e.stopPropagation();
|
|
1899
1914
|
handleOverlayActionClick("ACTIVATE");
|
|
1900
1915
|
},
|
|
1901
|
-
className: "px-6 py-2.5 bg-
|
|
1916
|
+
className: "px-6 py-2.5 bg-white/35 text-white text-[12px] rounded-full transition-all outline-none active:scale-95"
|
|
1902
1917
|
},
|
|
1903
1918
|
"Activate Card"
|
|
1904
1919
|
), isDead && /* @__PURE__ */ React21.createElement(
|
|
@@ -1908,7 +1923,7 @@ var UniversalCardPage = ({
|
|
|
1908
1923
|
e.stopPropagation();
|
|
1909
1924
|
handleOverlayActionClick("CREATE");
|
|
1910
1925
|
},
|
|
1911
|
-
className: "px-6 py-2.5 bg-
|
|
1926
|
+
className: "px-6 py-2.5 bg-white/35 text-white text-[12px] rounded-full transition-all outline-none active:scale-95"
|
|
1912
1927
|
},
|
|
1913
1928
|
"Create Card"
|
|
1914
1929
|
), isFrozen && /* @__PURE__ */ React21.createElement(
|
|
@@ -1919,7 +1934,7 @@ var UniversalCardPage = ({
|
|
|
1919
1934
|
handleOverlayUnfreeze();
|
|
1920
1935
|
},
|
|
1921
1936
|
disabled: isOverlayActionLoading,
|
|
1922
|
-
className: "px-6 py-2.5 bg-white text-
|
|
1937
|
+
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"
|
|
1923
1938
|
},
|
|
1924
1939
|
isOverlayActionLoading ? /* @__PURE__ */ React21.createElement(HugeiconsIcon15, { icon: Loading03Icon8, size: 16, className: "animate-spin" }) : "Unfreeze Card"
|
|
1925
1940
|
)),
|
|
@@ -2120,7 +2135,7 @@ var UniversalProfilePage = ({
|
|
|
2120
2135
|
setShowLogoutDialog(false);
|
|
2121
2136
|
}
|
|
2122
2137
|
};
|
|
2123
|
-
return /* @__PURE__ */ React22.createElement("div", { className: "w-full max-w-
|
|
2138
|
+
return /* @__PURE__ */ React22.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ React22.createElement("div", { className: "pt-8 pb-4 flex flex-col items-center" }, /* @__PURE__ */ React22.createElement("div", { className: "w-22 h-22 rounded-full bg-white p-1 mb-4 flex items-center justify-center" }, /* @__PURE__ */ React22.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, avatarSrc ? /* @__PURE__ */ React22.createElement(React22.Fragment, null, !isAvatarLoaded && /* @__PURE__ */ React22.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ React22.createElement(HugeiconsIcon16, { icon: Loading03Icon9, size: 24, className: "animate-spin text-black" })), /* @__PURE__ */ React22.createElement(
|
|
2124
2139
|
"img",
|
|
2125
2140
|
{
|
|
2126
2141
|
src: avatarSrc,
|
|
@@ -2220,17 +2235,89 @@ var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titl
|
|
|
2220
2235
|
/* @__PURE__ */ React22.createElement(HugeiconsIcon16, { icon: ArrowRight01Icon3, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2221
2236
|
);
|
|
2222
2237
|
|
|
2223
|
-
// src/components/
|
|
2224
|
-
import
|
|
2238
|
+
// src/components/UniversalSidebar.tsx
|
|
2239
|
+
import React23, { useState as useState14 } from "react";
|
|
2225
2240
|
import Link5 from "next/link";
|
|
2241
|
+
import { HugeiconsIcon as HugeiconsIcon17 } from "@hugeicons/react";
|
|
2242
|
+
import {
|
|
2243
|
+
LogoutCircle02Icon as LogoutCircle02Icon2
|
|
2244
|
+
} from "@hugeicons/core-free-icons";
|
|
2245
|
+
var UniversalSidebar = ({
|
|
2246
|
+
navItems,
|
|
2247
|
+
currentPath,
|
|
2248
|
+
onNavClick,
|
|
2249
|
+
showLogoutAction = false,
|
|
2250
|
+
onLogout
|
|
2251
|
+
}) => {
|
|
2252
|
+
const [showLogoutDialog, setShowLogoutDialog] = useState14(false);
|
|
2253
|
+
const [isLoggingOut, setIsLoggingOut] = useState14(false);
|
|
2254
|
+
const hasActiveMatch = navItems.some(
|
|
2255
|
+
(item) => item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`)
|
|
2256
|
+
);
|
|
2257
|
+
const handleLogoutInitiation = async () => {
|
|
2258
|
+
if (isLoggingOut || !onLogout) return;
|
|
2259
|
+
setIsLoggingOut(true);
|
|
2260
|
+
try {
|
|
2261
|
+
await onLogout();
|
|
2262
|
+
} catch (error) {
|
|
2263
|
+
setIsLoggingOut(false);
|
|
2264
|
+
setShowLogoutDialog(false);
|
|
2265
|
+
}
|
|
2266
|
+
};
|
|
2267
|
+
return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.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__ */ React23.createElement("div", { className: "h-24 shrink-0" }), /* @__PURE__ */ React23.createElement("nav", { className: "flex-1 flex flex-col gap-3 px-2" }, navItems.map((item, index) => {
|
|
2268
|
+
const isExactOrSubMatch = item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`);
|
|
2269
|
+
const isCurrentRoute = isExactOrSubMatch || !hasActiveMatch && index === 0;
|
|
2270
|
+
return /* @__PURE__ */ React23.createElement(
|
|
2271
|
+
Link5,
|
|
2272
|
+
{
|
|
2273
|
+
key: item.name,
|
|
2274
|
+
href: item.path,
|
|
2275
|
+
onClick: (e) => onNavClick ? onNavClick(e, item.path) : void 0,
|
|
2276
|
+
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"}`,
|
|
2277
|
+
title: item.name
|
|
2278
|
+
},
|
|
2279
|
+
/* @__PURE__ */ React23.createElement(
|
|
2280
|
+
HugeiconsIcon17,
|
|
2281
|
+
{
|
|
2282
|
+
icon: item.icon,
|
|
2283
|
+
size: 20,
|
|
2284
|
+
className: `shrink-0 transition-colors ${isCurrentRoute ? "text-black" : "text-neutral-400 group-hover:text-black"}`
|
|
2285
|
+
}
|
|
2286
|
+
)
|
|
2287
|
+
);
|
|
2288
|
+
})), /* @__PURE__ */ React23.createElement("div", { className: "p-4 shrink-0 flex flex-col items-center gap-2 mb-4" }, showLogoutAction && /* @__PURE__ */ React23.createElement(
|
|
2289
|
+
"button",
|
|
2290
|
+
{
|
|
2291
|
+
onClick: () => setShowLogoutDialog(true),
|
|
2292
|
+
className: "w-12 h-12 rounded-full flex items-center justify-center text-neutral-500 hover:bg-white/50 transition-all outline-none"
|
|
2293
|
+
},
|
|
2294
|
+
/* @__PURE__ */ React23.createElement(HugeiconsIcon17, { icon: LogoutCircle02Icon2, size: 20 })
|
|
2295
|
+
))), showLogoutAction && /* @__PURE__ */ React23.createElement(
|
|
2296
|
+
ConfirmationDialog,
|
|
2297
|
+
{
|
|
2298
|
+
isOpen: showLogoutDialog,
|
|
2299
|
+
title: "Secure Logout",
|
|
2300
|
+
message: "Are you sure you want to log out? You will need to authenticate to return.",
|
|
2301
|
+
confirmText: "Log Out",
|
|
2302
|
+
isDestructive: true,
|
|
2303
|
+
isProcessing: isLoggingOut,
|
|
2304
|
+
onClose: () => setShowLogoutDialog(false),
|
|
2305
|
+
onConfirm: handleLogoutInitiation
|
|
2306
|
+
}
|
|
2307
|
+
));
|
|
2308
|
+
};
|
|
2309
|
+
|
|
2310
|
+
// src/components/HeroSection.tsx
|
|
2311
|
+
import React25, { useState as useState16, useEffect as useEffect10, useRef as useRef4 } from "react";
|
|
2312
|
+
import Link6 from "next/link";
|
|
2226
2313
|
import Image3 from "next/image";
|
|
2227
2314
|
|
|
2228
2315
|
// src/components/WaitlistDialog.tsx
|
|
2229
|
-
import
|
|
2316
|
+
import React24, { useState as useState15 } from "react";
|
|
2230
2317
|
import { toast as toast6 } from "react-hot-toast";
|
|
2231
2318
|
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
2232
|
-
const [email, setEmail] =
|
|
2233
|
-
const [isLoading, setIsLoading] =
|
|
2319
|
+
const [email, setEmail] = useState15("");
|
|
2320
|
+
const [isLoading, setIsLoading] = useState15(false);
|
|
2234
2321
|
if (!isOpen) return null;
|
|
2235
2322
|
const handleSubmit = async (e) => {
|
|
2236
2323
|
e.preventDefault();
|
|
@@ -2261,12 +2348,12 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2261
2348
|
setIsLoading(false);
|
|
2262
2349
|
}
|
|
2263
2350
|
};
|
|
2264
|
-
return /* @__PURE__ */
|
|
2351
|
+
return /* @__PURE__ */ React24.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ React24.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ React24.createElement(
|
|
2265
2352
|
"div",
|
|
2266
2353
|
{
|
|
2267
2354
|
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"
|
|
2268
2355
|
},
|
|
2269
|
-
/* @__PURE__ */
|
|
2356
|
+
/* @__PURE__ */ React24.createElement(
|
|
2270
2357
|
"button",
|
|
2271
2358
|
{
|
|
2272
2359
|
onClick: onClose,
|
|
@@ -2274,7 +2361,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2274
2361
|
className: "absolute top-4 right-4 p-2 text-neutral-700 hover:text-neutral-400 transition-colors disabled:opacity-50 outline-none",
|
|
2275
2362
|
"aria-label": "Close dialog"
|
|
2276
2363
|
},
|
|
2277
|
-
/* @__PURE__ */
|
|
2364
|
+
/* @__PURE__ */ React24.createElement(
|
|
2278
2365
|
"svg",
|
|
2279
2366
|
{
|
|
2280
2367
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2287,11 +2374,11 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2287
2374
|
strokeLinecap: "round",
|
|
2288
2375
|
strokeLinejoin: "round"
|
|
2289
2376
|
},
|
|
2290
|
-
/* @__PURE__ */
|
|
2291
|
-
/* @__PURE__ */
|
|
2377
|
+
/* @__PURE__ */ React24.createElement("path", { d: "M18 6 6 18" }),
|
|
2378
|
+
/* @__PURE__ */ React24.createElement("path", { d: "m6 6 12 12" })
|
|
2292
2379
|
)
|
|
2293
2380
|
),
|
|
2294
|
-
/* @__PURE__ */
|
|
2381
|
+
/* @__PURE__ */ React24.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ React24.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ React24.createElement("h2", { className: "text-2xl text-black tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ React24.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__ */ React24.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ React24.createElement(
|
|
2295
2382
|
TextInput,
|
|
2296
2383
|
{
|
|
2297
2384
|
label: "Email ID",
|
|
@@ -2301,7 +2388,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2301
2388
|
placeholder: "name@example.com",
|
|
2302
2389
|
disabled: isLoading
|
|
2303
2390
|
}
|
|
2304
|
-
), /* @__PURE__ */
|
|
2391
|
+
), /* @__PURE__ */ React24.createElement(
|
|
2305
2392
|
ThreeDActionButton,
|
|
2306
2393
|
{
|
|
2307
2394
|
type: "submit",
|
|
@@ -2334,8 +2421,8 @@ var HeroSection = ({
|
|
|
2334
2421
|
bgImageSrc,
|
|
2335
2422
|
isWaitlist = false
|
|
2336
2423
|
}) => {
|
|
2337
|
-
const [isAnimating, setIsAnimating] =
|
|
2338
|
-
const [isWaitlistOpen, setIsWaitlistOpen] =
|
|
2424
|
+
const [isAnimating, setIsAnimating] = useState16(false);
|
|
2425
|
+
const [isWaitlistOpen, setIsWaitlistOpen] = useState16(false);
|
|
2339
2426
|
const titleRef = useRef4(null);
|
|
2340
2427
|
useEffect10(() => {
|
|
2341
2428
|
const observer = new IntersectionObserver(
|
|
@@ -2359,7 +2446,7 @@ var HeroSection = ({
|
|
|
2359
2446
|
setIsWaitlistOpen(true);
|
|
2360
2447
|
}
|
|
2361
2448
|
};
|
|
2362
|
-
return /* @__PURE__ */
|
|
2449
|
+
return /* @__PURE__ */ React25.createElement("div", { className: "w-screen min-h-screen flex justify-center items-center p-4" }, /* @__PURE__ */ React25.createElement("section", { className: "relative h-[95vh] w-full overflow-hidden rounded-2xl " }, bgVideoSrc ? /* @__PURE__ */ React25.createElement(
|
|
2363
2450
|
"video",
|
|
2364
2451
|
{
|
|
2365
2452
|
src: bgVideoSrc,
|
|
@@ -2370,7 +2457,7 @@ var HeroSection = ({
|
|
|
2370
2457
|
playsInline: true,
|
|
2371
2458
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2372
2459
|
}
|
|
2373
|
-
) : bgImageSrc ? /* @__PURE__ */
|
|
2460
|
+
) : bgImageSrc ? /* @__PURE__ */ React25.createElement(
|
|
2374
2461
|
Image3,
|
|
2375
2462
|
{
|
|
2376
2463
|
src: bgImageSrc,
|
|
@@ -2379,7 +2466,7 @@ var HeroSection = ({
|
|
|
2379
2466
|
priority: true,
|
|
2380
2467
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2381
2468
|
}
|
|
2382
|
-
) : null, /* @__PURE__ */
|
|
2469
|
+
) : null, /* @__PURE__ */ React25.createElement(
|
|
2383
2470
|
"div",
|
|
2384
2471
|
{
|
|
2385
2472
|
className: "pointer-events-none absolute inset-0 z-10 opacity-[0.7] mix-blend-overlay",
|
|
@@ -2387,31 +2474,31 @@ var HeroSection = ({
|
|
|
2387
2474
|
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")`
|
|
2388
2475
|
}
|
|
2389
2476
|
}
|
|
2390
|
-
), /* @__PURE__ */
|
|
2477
|
+
), /* @__PURE__ */ React25.createElement("div", { className: "pointer-events-none absolute inset-0 bg-linear-to-b from-black/30 via-transparent to-black/80 z-10" }), /* @__PURE__ */ React25.createElement("div", { className: "absolute bottom-0 left-0 right-0 px-4 pb-4 sm:px-6 md:px-10 z-20" }, /* @__PURE__ */ React25.createElement("div", { className: "grid grid-cols-12 items-end gap-4" }, /* @__PURE__ */ React25.createElement("div", { className: "col-span-12 lg:col-span-8" }, /* @__PURE__ */ React25.createElement(
|
|
2391
2478
|
"h1",
|
|
2392
2479
|
{
|
|
2393
2480
|
ref: titleRef,
|
|
2394
2481
|
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]"
|
|
2395
2482
|
},
|
|
2396
|
-
/* @__PURE__ */
|
|
2397
|
-
)), /* @__PURE__ */
|
|
2398
|
-
/* @__PURE__ */
|
|
2399
|
-
|
|
2483
|
+
/* @__PURE__ */ React25.createElement("div", { className: "inline-flex flex-wrap" }, /* @__PURE__ */ React25.createElement("span", { className: `inline-block relative transition-all duration-1000 ${isAnimating ? "opacity-100 translate-y-0" : "opacity-0 translate-y-10"}` }, titlePrefix, titlePrefix && /* @__PURE__ */ React25.createElement("br", null), highlightText, /* @__PURE__ */ React25.createElement("span", { className: "absolute top-[0.65em] right-[-0.3em] text-[0.31em] text-[#ffffff]/70" }, "*")))
|
|
2484
|
+
)), /* @__PURE__ */ React25.createElement("div", { className: "col-span-12 flex flex-col gap-5 pb-6 lg:col-span-4 lg:pb-10" }, subtitle && /* @__PURE__ */ React25.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__ */ React25.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!
|
|
2485
|
+
/* @__PURE__ */ React25.createElement(
|
|
2486
|
+
Link6,
|
|
2400
2487
|
{
|
|
2401
2488
|
href: isWaitlist ? "#" : ctaHref || "#",
|
|
2402
2489
|
onClick: handleCtaClick,
|
|
2403
2490
|
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"
|
|
2404
2491
|
},
|
|
2405
2492
|
ctaText,
|
|
2406
|
-
/* @__PURE__ */
|
|
2407
|
-
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
2408
|
-
|
|
2493
|
+
/* @__PURE__ */ React25.createElement("span", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-black transition-transform group-hover:scale-110" }, /* @__PURE__ */ React25.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__ */ React25.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ React25.createElement("path", { d: "m12 5 7 7-7 7" })))
|
|
2494
|
+
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React25.createElement(
|
|
2495
|
+
Link6,
|
|
2409
2496
|
{
|
|
2410
2497
|
href: secondaryCtaHref,
|
|
2411
2498
|
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"
|
|
2412
2499
|
},
|
|
2413
2500
|
secondaryCtaText
|
|
2414
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */
|
|
2501
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col gap-3 mt-4" }, appsText && /* @__PURE__ */ React25.createElement("span", { className: "text-[10px] tracking-widest uppercase text-[#ffffff]/50 " }, appsText), /* @__PURE__ */ React25.createElement("div", { className: "flex items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ React25.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__ */ React25.createElement(
|
|
2415
2502
|
Image3,
|
|
2416
2503
|
{
|
|
2417
2504
|
src: logo.src,
|
|
@@ -2420,7 +2507,7 @@ var HeroSection = ({
|
|
|
2420
2507
|
height: 28,
|
|
2421
2508
|
className: "object-contain"
|
|
2422
2509
|
}
|
|
2423
|
-
))))))))), /* @__PURE__ */
|
|
2510
|
+
))))))))), /* @__PURE__ */ React25.createElement(
|
|
2424
2511
|
WaitlistDialog,
|
|
2425
2512
|
{
|
|
2426
2513
|
isOpen: isWaitlistOpen,
|
|
@@ -2430,10 +2517,10 @@ var HeroSection = ({
|
|
|
2430
2517
|
};
|
|
2431
2518
|
|
|
2432
2519
|
// src/components/AppBento2.tsx
|
|
2433
|
-
import
|
|
2434
|
-
import { HugeiconsIcon as
|
|
2520
|
+
import React26, { useState as useState17, useEffect as useEffect11, useRef as useRef5 } from "react";
|
|
2521
|
+
import { HugeiconsIcon as HugeiconsIcon18 } from "@hugeicons/react";
|
|
2435
2522
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2436
|
-
const [isAnimating, setIsAnimating] =
|
|
2523
|
+
const [isAnimating, setIsAnimating] = useState17(false);
|
|
2437
2524
|
const titleRef = useRef5(null);
|
|
2438
2525
|
useEffect11(() => {
|
|
2439
2526
|
const observer = new IntersectionObserver(
|
|
@@ -2453,7 +2540,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2453
2540
|
}
|
|
2454
2541
|
return () => observer.disconnect();
|
|
2455
2542
|
}, []);
|
|
2456
|
-
return /* @__PURE__ */
|
|
2543
|
+
return /* @__PURE__ */ React26.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ React26.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React26.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React26.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React26.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React26.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ React26.createElement(
|
|
2457
2544
|
"h2",
|
|
2458
2545
|
{
|
|
2459
2546
|
ref: titleRef,
|
|
@@ -2461,7 +2548,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2461
2548
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2462
2549
|
},
|
|
2463
2550
|
headline
|
|
2464
|
-
))), /* @__PURE__ */
|
|
2551
|
+
))), /* @__PURE__ */ React26.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
2465
2552
|
const isWhite = i === 0;
|
|
2466
2553
|
const isBlack = i === 1;
|
|
2467
2554
|
const isNeutral = i === 2;
|
|
@@ -2483,36 +2570,36 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2483
2570
|
const textColor = isBlack ? "text-white" : "text-black";
|
|
2484
2571
|
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
2485
2572
|
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
2486
|
-
return /* @__PURE__ */
|
|
2573
|
+
return /* @__PURE__ */ React26.createElement(
|
|
2487
2574
|
"div",
|
|
2488
2575
|
{
|
|
2489
2576
|
key: i,
|
|
2490
2577
|
className: `relative rounded-2xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`,
|
|
2491
2578
|
style: { boxShadow: getShadowStyle() }
|
|
2492
2579
|
},
|
|
2493
|
-
/* @__PURE__ */
|
|
2580
|
+
/* @__PURE__ */ React26.createElement(
|
|
2494
2581
|
"div",
|
|
2495
2582
|
{
|
|
2496
2583
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
2497
2584
|
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")` }
|
|
2498
2585
|
}
|
|
2499
2586
|
),
|
|
2500
|
-
isBlack && /* @__PURE__ */
|
|
2501
|
-
/* @__PURE__ */
|
|
2502
|
-
/* @__PURE__ */
|
|
2587
|
+
isBlack && /* @__PURE__ */ React26.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" }),
|
|
2588
|
+
/* @__PURE__ */ React26.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React26.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__ */ React26.createElement(HugeiconsIcon18, { icon: f.icon, size: 180 }))),
|
|
2589
|
+
/* @__PURE__ */ React26.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React26.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React26.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ React26.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ React26.createElement(HugeiconsIcon18, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ React26.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React26.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ React26.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2503
2590
|
);
|
|
2504
2591
|
})))));
|
|
2505
2592
|
};
|
|
2506
2593
|
|
|
2507
2594
|
// src/components/FeatureScroll.tsx
|
|
2508
|
-
import
|
|
2595
|
+
import React27, { useRef as useRef6, useState as useState18, useEffect as useEffect12 } from "react";
|
|
2509
2596
|
import Image4 from "next/image";
|
|
2510
|
-
import { HugeiconsIcon as
|
|
2597
|
+
import { HugeiconsIcon as HugeiconsIcon19 } from "@hugeicons/react";
|
|
2511
2598
|
import { ArrowLeft01Icon as ArrowLeft01Icon2, ArrowRight01Icon as ArrowRight01Icon4, Loading03Icon as Loading03Icon10 } from "@hugeicons/core-free-icons";
|
|
2512
2599
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
2513
|
-
const [isBgLoading, setIsBgLoading] =
|
|
2514
|
-
const [isFgLoading, setIsFgLoading] =
|
|
2515
|
-
return /* @__PURE__ */
|
|
2600
|
+
const [isBgLoading, setIsBgLoading] = useState18(true);
|
|
2601
|
+
const [isFgLoading, setIsFgLoading] = useState18(!!feature.image);
|
|
2602
|
+
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(
|
|
2516
2603
|
Image4,
|
|
2517
2604
|
{
|
|
2518
2605
|
src: bgImage,
|
|
@@ -2525,7 +2612,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2525
2612
|
${isBgLoading ? "blur-xl scale-110" : "blur-0 scale-100"}
|
|
2526
2613
|
`
|
|
2527
2614
|
}
|
|
2528
|
-
), /* @__PURE__ */
|
|
2615
|
+
), /* @__PURE__ */ React27.createElement(
|
|
2529
2616
|
"div",
|
|
2530
2617
|
{
|
|
2531
2618
|
className: "absolute inset-0 w-full h-full pointer-events-none z-0 opacity-[0.25] mix-blend-overlay",
|
|
@@ -2533,7 +2620,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2533
2620
|
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")`
|
|
2534
2621
|
}
|
|
2535
2622
|
}
|
|
2536
|
-
), isFgLoading && feature.image && /* @__PURE__ */
|
|
2623
|
+
), 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: Loading03Icon10, 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(
|
|
2537
2624
|
Image4,
|
|
2538
2625
|
{
|
|
2539
2626
|
src: feature.image,
|
|
@@ -2546,12 +2633,12 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2546
2633
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
2547
2634
|
`
|
|
2548
2635
|
}
|
|
2549
|
-
))), /* @__PURE__ */
|
|
2636
|
+
))), /* @__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)));
|
|
2550
2637
|
};
|
|
2551
2638
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
2552
2639
|
const scrollRef = useRef6(null);
|
|
2553
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
2554
|
-
const [canScrollRight, setCanScrollRight] =
|
|
2640
|
+
const [canScrollLeft, setCanScrollLeft] = useState18(false);
|
|
2641
|
+
const [canScrollRight, setCanScrollRight] = useState18(true);
|
|
2555
2642
|
const checkScroll = () => {
|
|
2556
2643
|
if (scrollRef.current) {
|
|
2557
2644
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -2575,7 +2662,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2575
2662
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
2576
2663
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
2577
2664
|
];
|
|
2578
|
-
return /* @__PURE__ */
|
|
2665
|
+
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(
|
|
2579
2666
|
"button",
|
|
2580
2667
|
{
|
|
2581
2668
|
onClick: () => scroll("left"),
|
|
@@ -2583,8 +2670,8 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2583
2670
|
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",
|
|
2584
2671
|
"aria-label": "Previous feature"
|
|
2585
2672
|
},
|
|
2586
|
-
/* @__PURE__ */
|
|
2587
|
-
), /* @__PURE__ */
|
|
2673
|
+
/* @__PURE__ */ React27.createElement(HugeiconsIcon19, { icon: ArrowLeft01Icon2, size: 20 })
|
|
2674
|
+
), /* @__PURE__ */ React27.createElement(
|
|
2588
2675
|
"button",
|
|
2589
2676
|
{
|
|
2590
2677
|
onClick: () => scroll("right"),
|
|
@@ -2592,57 +2679,57 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2592
2679
|
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",
|
|
2593
2680
|
"aria-label": "Next feature"
|
|
2594
2681
|
},
|
|
2595
|
-
/* @__PURE__ */
|
|
2596
|
-
))), /* @__PURE__ */
|
|
2682
|
+
/* @__PURE__ */ React27.createElement(HugeiconsIcon19, { icon: ArrowRight01Icon4, size: 20 })
|
|
2683
|
+
))), /* @__PURE__ */ React27.createElement(
|
|
2597
2684
|
"div",
|
|
2598
2685
|
{
|
|
2599
2686
|
ref: scrollRef,
|
|
2600
2687
|
onScroll: checkScroll,
|
|
2601
2688
|
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"
|
|
2602
2689
|
},
|
|
2603
|
-
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */
|
|
2604
|
-
), /* @__PURE__ */
|
|
2690
|
+
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ React27.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
|
|
2691
|
+
), /* @__PURE__ */ React27.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ React27.createElement(
|
|
2605
2692
|
"button",
|
|
2606
2693
|
{
|
|
2607
2694
|
onClick: () => scroll("left"),
|
|
2608
2695
|
disabled: !canScrollLeft,
|
|
2609
2696
|
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"
|
|
2610
2697
|
},
|
|
2611
|
-
/* @__PURE__ */
|
|
2612
|
-
), /* @__PURE__ */
|
|
2698
|
+
/* @__PURE__ */ React27.createElement(HugeiconsIcon19, { icon: ArrowLeft01Icon2, size: 20 })
|
|
2699
|
+
), /* @__PURE__ */ React27.createElement(
|
|
2613
2700
|
"button",
|
|
2614
2701
|
{
|
|
2615
2702
|
onClick: () => scroll("right"),
|
|
2616
2703
|
disabled: !canScrollRight,
|
|
2617
2704
|
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"
|
|
2618
2705
|
},
|
|
2619
|
-
/* @__PURE__ */
|
|
2706
|
+
/* @__PURE__ */ React27.createElement(HugeiconsIcon19, { icon: ArrowRight01Icon4, size: 20 })
|
|
2620
2707
|
))));
|
|
2621
2708
|
};
|
|
2622
2709
|
|
|
2623
2710
|
// src/components/PlatformFeatures.tsx
|
|
2624
|
-
import
|
|
2625
|
-
import { HugeiconsIcon as
|
|
2711
|
+
import React28 from "react";
|
|
2712
|
+
import { HugeiconsIcon as HugeiconsIcon20 } from "@hugeicons/react";
|
|
2626
2713
|
var PlatformFeatures = ({
|
|
2627
2714
|
tagline,
|
|
2628
2715
|
headline,
|
|
2629
2716
|
description,
|
|
2630
2717
|
features
|
|
2631
2718
|
}) => {
|
|
2632
|
-
return /* @__PURE__ */
|
|
2719
|
+
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(
|
|
2633
2720
|
"div",
|
|
2634
2721
|
{
|
|
2635
2722
|
key: idx,
|
|
2636
2723
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
2637
2724
|
style: { animationDelay: feature.delay || "0ms" }
|
|
2638
2725
|
},
|
|
2639
|
-
/* @__PURE__ */
|
|
2640
|
-
/* @__PURE__ */
|
|
2726
|
+
/* @__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))),
|
|
2727
|
+
/* @__PURE__ */ React28.createElement("div", null, /* @__PURE__ */ React28.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
2641
2728
|
)))));
|
|
2642
2729
|
};
|
|
2643
2730
|
|
|
2644
2731
|
// src/components/ManagedDocument.tsx
|
|
2645
|
-
import
|
|
2732
|
+
import React29, { useState as useState19, useEffect as useEffect13, useRef as useRef7 } from "react";
|
|
2646
2733
|
var ManagedDocument = ({
|
|
2647
2734
|
tagline,
|
|
2648
2735
|
title,
|
|
@@ -2650,7 +2737,7 @@ var ManagedDocument = ({
|
|
|
2650
2737
|
contactText,
|
|
2651
2738
|
contactEmail
|
|
2652
2739
|
}) => {
|
|
2653
|
-
const [isAnimating, setIsAnimating] =
|
|
2740
|
+
const [isAnimating, setIsAnimating] = useState19(false);
|
|
2654
2741
|
const titleRef = useRef7(null);
|
|
2655
2742
|
useEffect13(() => {
|
|
2656
2743
|
const observer = new IntersectionObserver(
|
|
@@ -2672,7 +2759,7 @@ var ManagedDocument = ({
|
|
|
2672
2759
|
}, []);
|
|
2673
2760
|
return (
|
|
2674
2761
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
2675
|
-
/* @__PURE__ */
|
|
2762
|
+
/* @__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(
|
|
2676
2763
|
"h1",
|
|
2677
2764
|
{
|
|
2678
2765
|
ref: titleRef,
|
|
@@ -2680,7 +2767,7 @@ var ManagedDocument = ({
|
|
|
2680
2767
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2681
2768
|
},
|
|
2682
2769
|
title
|
|
2683
|
-
)), sections.map((section, index) => /* @__PURE__ */
|
|
2770
|
+
)), 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-100 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(
|
|
2684
2771
|
"a",
|
|
2685
2772
|
{
|
|
2686
2773
|
href: `mailto:${contactEmail}`,
|
|
@@ -2692,18 +2779,18 @@ var ManagedDocument = ({
|
|
|
2692
2779
|
};
|
|
2693
2780
|
|
|
2694
2781
|
// src/components/ManagedContactBlock.tsx
|
|
2695
|
-
import
|
|
2696
|
-
import { HugeiconsIcon as
|
|
2782
|
+
import React30, { useState as useState20, useEffect as useEffect14 } from "react";
|
|
2783
|
+
import { HugeiconsIcon as HugeiconsIcon21 } from "@hugeicons/react";
|
|
2697
2784
|
var SecureEmail = ({ user, domain, className }) => {
|
|
2698
|
-
const [isMounted, setIsMounted] =
|
|
2785
|
+
const [isMounted, setIsMounted] = useState20(false);
|
|
2699
2786
|
useEffect14(() => {
|
|
2700
2787
|
setIsMounted(true);
|
|
2701
2788
|
}, []);
|
|
2702
2789
|
if (!isMounted) {
|
|
2703
|
-
return /* @__PURE__ */
|
|
2790
|
+
return /* @__PURE__ */ React30.createElement("span", { className, style: { opacity: 0 } }, "Loading");
|
|
2704
2791
|
}
|
|
2705
2792
|
const email = `${user}@${domain}`;
|
|
2706
|
-
return /* @__PURE__ */
|
|
2793
|
+
return /* @__PURE__ */ React30.createElement("a", { href: `mailto:${email}`, className }, email);
|
|
2707
2794
|
};
|
|
2708
2795
|
var ManagedContactBlock = ({
|
|
2709
2796
|
tagline,
|
|
@@ -2712,7 +2799,7 @@ var ManagedContactBlock = ({
|
|
|
2712
2799
|
emails,
|
|
2713
2800
|
socials
|
|
2714
2801
|
}) => {
|
|
2715
|
-
return /* @__PURE__ */
|
|
2802
|
+
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(
|
|
2716
2803
|
"div",
|
|
2717
2804
|
{
|
|
2718
2805
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2721,21 +2808,21 @@ var ManagedContactBlock = ({
|
|
|
2721
2808
|
backgroundRepeat: "repeat"
|
|
2722
2809
|
}
|
|
2723
2810
|
}
|
|
2724
|
-
), /* @__PURE__ */
|
|
2811
|
+
), /* @__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(
|
|
2725
2812
|
"a",
|
|
2726
2813
|
{
|
|
2727
2814
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
2728
2815
|
className: "transition-colors hover:text-black"
|
|
2729
2816
|
},
|
|
2730
2817
|
company.phone
|
|
2731
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */
|
|
2818
|
+
)))), 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(
|
|
2732
2819
|
SecureEmail,
|
|
2733
2820
|
{
|
|
2734
2821
|
user: email.user,
|
|
2735
2822
|
domain: email.domain,
|
|
2736
2823
|
className: "text-neutral-600 transition-colors hover:text-black"
|
|
2737
2824
|
}
|
|
2738
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */
|
|
2825
|
+
))))), 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(
|
|
2739
2826
|
"a",
|
|
2740
2827
|
{
|
|
2741
2828
|
key: idx,
|
|
@@ -2745,25 +2832,25 @@ var ManagedContactBlock = ({
|
|
|
2745
2832
|
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black",
|
|
2746
2833
|
"aria-label": social.label
|
|
2747
2834
|
},
|
|
2748
|
-
/* @__PURE__ */
|
|
2749
|
-
/* @__PURE__ */
|
|
2835
|
+
/* @__PURE__ */ React30.createElement(HugeiconsIcon21, { icon: social.icon, size: 18 }),
|
|
2836
|
+
/* @__PURE__ */ React30.createElement("span", { className: "text-[13px]" }, social.label)
|
|
2750
2837
|
)))))))));
|
|
2751
2838
|
};
|
|
2752
2839
|
|
|
2753
2840
|
// src/components/ManagedPricingBlock.tsx
|
|
2754
|
-
import
|
|
2755
|
-
import
|
|
2841
|
+
import React31, { useState as useState21, useEffect as useEffect15, useRef as useRef8 } from "react";
|
|
2842
|
+
import Link7 from "next/link";
|
|
2756
2843
|
import Image5 from "next/image";
|
|
2757
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */
|
|
2758
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */
|
|
2844
|
+
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" }));
|
|
2845
|
+
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" }));
|
|
2759
2846
|
var ManagedPricingBlock = ({
|
|
2760
2847
|
tagline,
|
|
2761
2848
|
title,
|
|
2762
2849
|
plans = [],
|
|
2763
2850
|
tabs
|
|
2764
2851
|
}) => {
|
|
2765
|
-
const [isAnimating, setIsAnimating] =
|
|
2766
|
-
const [activeTabIndex, setActiveTabIndex] =
|
|
2852
|
+
const [isAnimating, setIsAnimating] = useState21(false);
|
|
2853
|
+
const [activeTabIndex, setActiveTabIndex] = useState21(0);
|
|
2767
2854
|
const titleRef = useRef8(null);
|
|
2768
2855
|
useEffect15(() => {
|
|
2769
2856
|
const observer = new IntersectionObserver(
|
|
@@ -2785,7 +2872,7 @@ var ManagedPricingBlock = ({
|
|
|
2785
2872
|
}, []);
|
|
2786
2873
|
const hasTabs = tabs && tabs.length > 0;
|
|
2787
2874
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
2788
|
-
return /* @__PURE__ */
|
|
2875
|
+
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(
|
|
2789
2876
|
"h1",
|
|
2790
2877
|
{
|
|
2791
2878
|
ref: titleRef,
|
|
@@ -2793,30 +2880,30 @@ var ManagedPricingBlock = ({
|
|
|
2793
2880
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2794
2881
|
},
|
|
2795
2882
|
title
|
|
2796
|
-
)), hasTabs && /* @__PURE__ */
|
|
2883
|
+
)), 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) => {
|
|
2797
2884
|
const isActive = activeTabIndex === idx;
|
|
2798
|
-
return /* @__PURE__ */
|
|
2885
|
+
return /* @__PURE__ */ React31.createElement(
|
|
2799
2886
|
"button",
|
|
2800
2887
|
{
|
|
2801
2888
|
key: idx,
|
|
2802
2889
|
onClick: () => setActiveTabIndex(idx),
|
|
2803
|
-
className: `px-4
|
|
2890
|
+
className: `px-4 py-1.5 rounded-full text-[11px] transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-50 text-black " : "text-neutral-500 hover:text-black hover:bg-neutral-50/50 "}`
|
|
2804
2891
|
},
|
|
2805
2892
|
tab.label
|
|
2806
2893
|
);
|
|
2807
|
-
}))), /* @__PURE__ */
|
|
2894
|
+
}))), /* @__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(
|
|
2808
2895
|
"div",
|
|
2809
2896
|
{
|
|
2810
2897
|
key: `${activeTabIndex}-${planIdx}`,
|
|
2811
2898
|
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
2812
2899
|
},
|
|
2813
|
-
/* @__PURE__ */
|
|
2900
|
+
/* @__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(
|
|
2814
2901
|
"div",
|
|
2815
2902
|
{
|
|
2816
2903
|
key: logoIdx,
|
|
2817
2904
|
className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
|
|
2818
2905
|
},
|
|
2819
|
-
/* @__PURE__ */
|
|
2906
|
+
/* @__PURE__ */ React31.createElement(
|
|
2820
2907
|
Image5,
|
|
2821
2908
|
{
|
|
2822
2909
|
src: logo.src,
|
|
@@ -2827,28 +2914,28 @@ var ManagedPricingBlock = ({
|
|
|
2827
2914
|
}
|
|
2828
2915
|
)
|
|
2829
2916
|
)))),
|
|
2830
|
-
plan.isPremium ? /* @__PURE__ */
|
|
2831
|
-
|
|
2917
|
+
plan.isPremium ? /* @__PURE__ */ React31.createElement(ThreeDButton, { href: plan.ctaHref, className: "mb-6 w-full" }, plan.ctaText) : /* @__PURE__ */ React31.createElement(
|
|
2918
|
+
Link7,
|
|
2832
2919
|
{
|
|
2833
2920
|
href: plan.ctaHref,
|
|
2834
2921
|
className: "w-full py-2.5 px-5 rounded-full border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 transition-colors mb-6 outline-none block"
|
|
2835
2922
|
},
|
|
2836
2923
|
plan.ctaText
|
|
2837
2924
|
),
|
|
2838
|
-
/* @__PURE__ */
|
|
2925
|
+
/* @__PURE__ */ React31.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
2839
2926
|
const isAvailable = feature.value !== false;
|
|
2840
2927
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
2841
|
-
return /* @__PURE__ */
|
|
2928
|
+
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, ")")));
|
|
2842
2929
|
}))
|
|
2843
2930
|
)))));
|
|
2844
2931
|
};
|
|
2845
2932
|
|
|
2846
2933
|
// src/components/ManagedBoardBlock.tsx
|
|
2847
|
-
import
|
|
2934
|
+
import React32 from "react";
|
|
2848
2935
|
import Image6 from "next/image";
|
|
2849
|
-
import { HugeiconsIcon as
|
|
2936
|
+
import { HugeiconsIcon as HugeiconsIcon22 } from "@hugeicons/react";
|
|
2850
2937
|
import { TwitterIcon, LinkedinIcon } from "@hugeicons/core-free-icons";
|
|
2851
|
-
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */
|
|
2938
|
+
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React32.createElement(
|
|
2852
2939
|
"a",
|
|
2853
2940
|
{
|
|
2854
2941
|
href,
|
|
@@ -2857,7 +2944,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React31.
|
|
|
2857
2944
|
className: "text-neutral-400 hover:text-black transition-colors",
|
|
2858
2945
|
"aria-label": `${name} on ${label}`
|
|
2859
2946
|
},
|
|
2860
|
-
/* @__PURE__ */
|
|
2947
|
+
/* @__PURE__ */ React32.createElement(HugeiconsIcon22, { icon, size: 16 })
|
|
2861
2948
|
);
|
|
2862
2949
|
var ManagedBoardBlock = ({
|
|
2863
2950
|
tagline,
|
|
@@ -2866,7 +2953,7 @@ var ManagedBoardBlock = ({
|
|
|
2866
2953
|
contactText,
|
|
2867
2954
|
contactEmail
|
|
2868
2955
|
}) => {
|
|
2869
|
-
return /* @__PURE__ */
|
|
2956
|
+
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(
|
|
2870
2957
|
"div",
|
|
2871
2958
|
{
|
|
2872
2959
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2875,7 +2962,7 @@ var ManagedBoardBlock = ({
|
|
|
2875
2962
|
backgroundRepeat: "repeat"
|
|
2876
2963
|
}
|
|
2877
2964
|
}
|
|
2878
|
-
), /* @__PURE__ */
|
|
2965
|
+
), /* @__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(
|
|
2879
2966
|
Image6,
|
|
2880
2967
|
{
|
|
2881
2968
|
src: member.imageSrc,
|
|
@@ -2884,7 +2971,7 @@ var ManagedBoardBlock = ({
|
|
|
2884
2971
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
2885
2972
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
2886
2973
|
}
|
|
2887
|
-
)), /* @__PURE__ */
|
|
2974
|
+
)), /* @__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(
|
|
2888
2975
|
MemberSocialLink,
|
|
2889
2976
|
{
|
|
2890
2977
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -2892,7 +2979,7 @@ var ManagedBoardBlock = ({
|
|
|
2892
2979
|
label: "X",
|
|
2893
2980
|
name: member.name
|
|
2894
2981
|
}
|
|
2895
|
-
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */
|
|
2982
|
+
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */ React32.createElement(
|
|
2896
2983
|
MemberSocialLink,
|
|
2897
2984
|
{
|
|
2898
2985
|
href: member.linkedinHandle,
|
|
@@ -2900,28 +2987,28 @@ var ManagedBoardBlock = ({
|
|
|
2900
2987
|
label: "LinkedIn",
|
|
2901
2988
|
name: member.name
|
|
2902
2989
|
}
|
|
2903
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */
|
|
2990
|
+
))))))), (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))))));
|
|
2904
2991
|
};
|
|
2905
2992
|
|
|
2906
2993
|
// src/components/ManagedNotFoundBlock.tsx
|
|
2907
|
-
import
|
|
2994
|
+
import React33 from "react";
|
|
2908
2995
|
var ManagedNotFoundBlock = ({
|
|
2909
2996
|
title = "404 - Page Not Found",
|
|
2910
2997
|
description = "The page you are looking for does not exist or has been moved."
|
|
2911
2998
|
}) => {
|
|
2912
|
-
return /* @__PURE__ */
|
|
2999
|
+
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(
|
|
2913
3000
|
"svg",
|
|
2914
3001
|
{
|
|
2915
3002
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2916
3003
|
viewBox: "0 0 24 24",
|
|
2917
3004
|
className: "w-12 h-12 fill-neutral-100"
|
|
2918
3005
|
},
|
|
2919
|
-
/* @__PURE__ */
|
|
2920
|
-
)), /* @__PURE__ */
|
|
3006
|
+
/* @__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" })
|
|
3007
|
+
)), /* @__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)));
|
|
2921
3008
|
};
|
|
2922
3009
|
|
|
2923
3010
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
2924
|
-
import
|
|
3011
|
+
import React34 from "react";
|
|
2925
3012
|
import Image7 from "next/image";
|
|
2926
3013
|
var ManagedNewsletterSplitBlock = ({
|
|
2927
3014
|
tagline,
|
|
@@ -2935,7 +3022,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2935
3022
|
ctaHref = "/contact",
|
|
2936
3023
|
children
|
|
2937
3024
|
}) => {
|
|
2938
|
-
return /* @__PURE__ */
|
|
3025
|
+
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(
|
|
2939
3026
|
Image7,
|
|
2940
3027
|
{
|
|
2941
3028
|
src: imageSrc,
|
|
@@ -2945,7 +3032,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2945
3032
|
className: "object-cover object-top grayscale opacity-60",
|
|
2946
3033
|
quality: 100
|
|
2947
3034
|
}
|
|
2948
|
-
), /* @__PURE__ */
|
|
3035
|
+
), /* @__PURE__ */ React34.createElement(
|
|
2949
3036
|
"div",
|
|
2950
3037
|
{
|
|
2951
3038
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
@@ -2953,7 +3040,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2953
3040
|
background: "linear-gradient(to right, rgba(255,255,255,0) 30%, #ffffff 100%)"
|
|
2954
3041
|
}
|
|
2955
3042
|
}
|
|
2956
|
-
), /* @__PURE__ */
|
|
3043
|
+
), /* @__PURE__ */ React34.createElement(
|
|
2957
3044
|
"div",
|
|
2958
3045
|
{
|
|
2959
3046
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
@@ -2961,7 +3048,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2961
3048
|
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
2962
3049
|
}
|
|
2963
3050
|
}
|
|
2964
|
-
)), /* @__PURE__ */
|
|
3051
|
+
)), /* @__PURE__ */ React34.createElement("div", { className: "w-full md:w-1/2 flex mt-22 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(
|
|
2965
3052
|
"div",
|
|
2966
3053
|
{
|
|
2967
3054
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2970,7 +3057,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2970
3057
|
backgroundRepeat: "repeat"
|
|
2971
3058
|
}
|
|
2972
3059
|
}
|
|
2973
|
-
), /* @__PURE__ */
|
|
3060
|
+
), /* @__PURE__ */ React34.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React34.createElement("div", { className: "mb-10 border-b border-neutral-100 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(
|
|
2974
3061
|
ThreeDButton,
|
|
2975
3062
|
{
|
|
2976
3063
|
href: ctaHref,
|
|
@@ -2981,10 +3068,10 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2981
3068
|
};
|
|
2982
3069
|
|
|
2983
3070
|
// src/components/PortfolioHero.tsx
|
|
2984
|
-
import
|
|
2985
|
-
import
|
|
3071
|
+
import React35, { useEffect as useEffect16, useRef as useRef9 } from "react";
|
|
3072
|
+
import Link8 from "next/link";
|
|
2986
3073
|
import Image8 from "next/image";
|
|
2987
|
-
import { HugeiconsIcon as
|
|
3074
|
+
import { HugeiconsIcon as HugeiconsIcon23 } from "@hugeicons/react";
|
|
2988
3075
|
import { ArrowRight01Icon as ArrowRight01Icon5 } from "@hugeicons/core-free-icons";
|
|
2989
3076
|
var useScrollAnimation = () => {
|
|
2990
3077
|
const elementRef = useRef9(null);
|
|
@@ -3024,13 +3111,13 @@ var PortfolioHero = ({
|
|
|
3024
3111
|
secondaryCtaHref
|
|
3025
3112
|
}) => {
|
|
3026
3113
|
const heroContentRef = useScrollAnimation();
|
|
3027
|
-
return /* @__PURE__ */
|
|
3114
|
+
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(
|
|
3028
3115
|
"div",
|
|
3029
3116
|
{
|
|
3030
3117
|
ref: heroContentRef,
|
|
3031
3118
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
3032
3119
|
},
|
|
3033
|
-
/* @__PURE__ */
|
|
3120
|
+
/* @__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-100 shrink-0 shadow-sm" }, /* @__PURE__ */ React35.createElement(
|
|
3034
3121
|
Image8,
|
|
3035
3122
|
{
|
|
3036
3123
|
src: imageSrc,
|
|
@@ -3041,7 +3128,7 @@ var PortfolioHero = ({
|
|
|
3041
3128
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
3042
3129
|
quality: 100
|
|
3043
3130
|
}
|
|
3044
|
-
)), /* @__PURE__ */
|
|
3131
|
+
)), /* @__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(
|
|
3045
3132
|
"a",
|
|
3046
3133
|
{
|
|
3047
3134
|
href: socialLinkHref,
|
|
@@ -3051,30 +3138,30 @@ var PortfolioHero = ({
|
|
|
3051
3138
|
},
|
|
3052
3139
|
socialLinkText
|
|
3053
3140
|
))),
|
|
3054
|
-
/* @__PURE__ */
|
|
3055
|
-
/* @__PURE__ */
|
|
3141
|
+
/* @__PURE__ */ React35.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-600" }, bio),
|
|
3142
|
+
/* @__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(
|
|
3056
3143
|
ThreeDButton,
|
|
3057
3144
|
{
|
|
3058
3145
|
href: primaryCtaHref,
|
|
3059
3146
|
className: "py-3 tracking-widest text-[11px]"
|
|
3060
3147
|
},
|
|
3061
3148
|
primaryCtaText
|
|
3062
|
-
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
3063
|
-
|
|
3149
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React35.createElement(
|
|
3150
|
+
Link8,
|
|
3064
3151
|
{
|
|
3065
3152
|
href: secondaryCtaHref,
|
|
3066
3153
|
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"
|
|
3067
3154
|
},
|
|
3068
3155
|
secondaryCtaText,
|
|
3069
|
-
/* @__PURE__ */
|
|
3156
|
+
/* @__PURE__ */ React35.createElement(HugeiconsIcon23, { icon: ArrowRight01Icon5, size: 16 })
|
|
3070
3157
|
))
|
|
3071
3158
|
));
|
|
3072
3159
|
};
|
|
3073
3160
|
|
|
3074
3161
|
// src/components/GifFeatureCard.tsx
|
|
3075
|
-
import
|
|
3162
|
+
import React36, { useState as useState22 } from "react";
|
|
3076
3163
|
import Image9 from "next/image";
|
|
3077
|
-
import { HugeiconsIcon as
|
|
3164
|
+
import { HugeiconsIcon as HugeiconsIcon24 } from "@hugeicons/react";
|
|
3078
3165
|
import { Loading03Icon as Loading03Icon11 } from "@hugeicons/core-free-icons";
|
|
3079
3166
|
var GifFeatureCard = ({
|
|
3080
3167
|
gifSrc,
|
|
@@ -3083,20 +3170,20 @@ var GifFeatureCard = ({
|
|
|
3083
3170
|
alt = "Feature animation",
|
|
3084
3171
|
className = "aspect-video"
|
|
3085
3172
|
}) => {
|
|
3086
|
-
const [isLoading, setIsLoading] =
|
|
3087
|
-
return /* @__PURE__ */
|
|
3088
|
-
|
|
3173
|
+
const [isLoading, setIsLoading] = useState22(true);
|
|
3174
|
+
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(
|
|
3175
|
+
HugeiconsIcon24,
|
|
3089
3176
|
{
|
|
3090
3177
|
icon: Loading03Icon11,
|
|
3091
3178
|
size: 32,
|
|
3092
3179
|
className: "animate-spin text-white"
|
|
3093
3180
|
}
|
|
3094
|
-
)), /* @__PURE__ */
|
|
3181
|
+
)), /* @__PURE__ */ React36.createElement(
|
|
3095
3182
|
"div",
|
|
3096
3183
|
{
|
|
3097
3184
|
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"}`
|
|
3098
3185
|
},
|
|
3099
|
-
/* @__PURE__ */
|
|
3186
|
+
/* @__PURE__ */ React36.createElement(
|
|
3100
3187
|
Image9,
|
|
3101
3188
|
{
|
|
3102
3189
|
src: gifSrc,
|
|
@@ -3107,16 +3194,16 @@ var GifFeatureCard = ({
|
|
|
3107
3194
|
className: "object-cover object-center pointer-events-none"
|
|
3108
3195
|
}
|
|
3109
3196
|
)
|
|
3110
|
-
), /* @__PURE__ */
|
|
3197
|
+
), /* @__PURE__ */ React36.createElement(
|
|
3111
3198
|
"div",
|
|
3112
3199
|
{
|
|
3113
3200
|
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"
|
|
3114
3201
|
}
|
|
3115
|
-
), /* @__PURE__ */
|
|
3202
|
+
), /* @__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)));
|
|
3116
3203
|
};
|
|
3117
3204
|
|
|
3118
3205
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
3119
|
-
import
|
|
3206
|
+
import React37, { useState as useState23, useEffect as useEffect17, useRef as useRef10 } from "react";
|
|
3120
3207
|
import Image10 from "next/image";
|
|
3121
3208
|
var MedicalFeatureStatsBlock = ({
|
|
3122
3209
|
bottomHeadline,
|
|
@@ -3125,7 +3212,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3125
3212
|
trustText,
|
|
3126
3213
|
stats
|
|
3127
3214
|
}) => {
|
|
3128
|
-
const [isAnimating, setIsAnimating] =
|
|
3215
|
+
const [isAnimating, setIsAnimating] = useState23(false);
|
|
3129
3216
|
const titleRef = useRef10(null);
|
|
3130
3217
|
useEffect17(() => {
|
|
3131
3218
|
const observer = new IntersectionObserver(
|
|
@@ -3145,7 +3232,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3145
3232
|
}
|
|
3146
3233
|
return () => observer.disconnect();
|
|
3147
3234
|
}, []);
|
|
3148
|
-
return /* @__PURE__ */
|
|
3235
|
+
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(
|
|
3149
3236
|
"h2",
|
|
3150
3237
|
{
|
|
3151
3238
|
ref: titleRef,
|
|
@@ -3153,7 +3240,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3153
3240
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3154
3241
|
},
|
|
3155
3242
|
bottomHeadline
|
|
3156
|
-
), /* @__PURE__ */
|
|
3243
|
+
), /* @__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(
|
|
3157
3244
|
Image10,
|
|
3158
3245
|
{
|
|
3159
3246
|
src,
|
|
@@ -3162,17 +3249,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3162
3249
|
sizes: "48px",
|
|
3163
3250
|
className: "object-cover"
|
|
3164
3251
|
}
|
|
3165
|
-
)))), /* @__PURE__ */
|
|
3252
|
+
)))), /* @__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))))));
|
|
3166
3253
|
};
|
|
3167
3254
|
|
|
3168
3255
|
// src/components/ConsultantShowcase.tsx
|
|
3169
|
-
import
|
|
3256
|
+
import React38, { useState as useState24 } from "react";
|
|
3170
3257
|
import Image11 from "next/image";
|
|
3171
|
-
import { HugeiconsIcon as
|
|
3258
|
+
import { HugeiconsIcon as HugeiconsIcon25 } from "@hugeicons/react";
|
|
3172
3259
|
import { Loading03Icon as Loading03Icon12 } from "@hugeicons/core-free-icons";
|
|
3173
3260
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3174
|
-
const [isLoading, setIsLoading] =
|
|
3175
|
-
return /* @__PURE__ */
|
|
3261
|
+
const [isLoading, setIsLoading] = useState24(true);
|
|
3262
|
+
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: Loading03Icon12, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React38.createElement(
|
|
3176
3263
|
Image11,
|
|
3177
3264
|
{
|
|
3178
3265
|
src,
|
|
@@ -3191,9 +3278,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
3191
3278
|
var ConsultantShowcase = ({
|
|
3192
3279
|
profiles
|
|
3193
3280
|
}) => {
|
|
3194
|
-
const [currentIndex, setCurrentIndex] =
|
|
3195
|
-
const [touchStart, setTouchStart] =
|
|
3196
|
-
const [touchEnd, setTouchEnd] =
|
|
3281
|
+
const [currentIndex, setCurrentIndex] = useState24(0);
|
|
3282
|
+
const [touchStart, setTouchStart] = useState24(null);
|
|
3283
|
+
const [touchEnd, setTouchEnd] = useState24(null);
|
|
3197
3284
|
const nextSlide = () => {
|
|
3198
3285
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
3199
3286
|
};
|
|
@@ -3218,7 +3305,7 @@ var ConsultantShowcase = ({
|
|
|
3218
3305
|
}
|
|
3219
3306
|
};
|
|
3220
3307
|
if (!profiles || profiles.length === 0) return null;
|
|
3221
|
-
return /* @__PURE__ */
|
|
3308
|
+
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(
|
|
3222
3309
|
"div",
|
|
3223
3310
|
{
|
|
3224
3311
|
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
@@ -3228,13 +3315,13 @@ var ConsultantShowcase = ({
|
|
|
3228
3315
|
},
|
|
3229
3316
|
profiles.map((profile, idx) => {
|
|
3230
3317
|
const isActive = idx === currentIndex;
|
|
3231
|
-
return /* @__PURE__ */
|
|
3318
|
+
return /* @__PURE__ */ React38.createElement(
|
|
3232
3319
|
"div",
|
|
3233
3320
|
{
|
|
3234
3321
|
key: profile.id,
|
|
3235
3322
|
className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
|
|
3236
3323
|
},
|
|
3237
|
-
/* @__PURE__ */
|
|
3324
|
+
/* @__PURE__ */ React38.createElement(
|
|
3238
3325
|
ImageWithLoader,
|
|
3239
3326
|
{
|
|
3240
3327
|
src: profile.imageSrc,
|
|
@@ -3242,14 +3329,14 @@ var ConsultantShowcase = ({
|
|
|
3242
3329
|
priority: idx === 0
|
|
3243
3330
|
}
|
|
3244
3331
|
),
|
|
3245
|
-
/* @__PURE__ */
|
|
3246
|
-
/* @__PURE__ */
|
|
3247
|
-
/* @__PURE__ */
|
|
3332
|
+
/* @__PURE__ */ React38.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
3333
|
+
/* @__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" }),
|
|
3334
|
+
/* @__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)))
|
|
3248
3335
|
);
|
|
3249
3336
|
}),
|
|
3250
|
-
/* @__PURE__ */
|
|
3251
|
-
/* @__PURE__ */
|
|
3252
|
-
/* @__PURE__ */
|
|
3337
|
+
/* @__PURE__ */ React38.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide, "aria-label": "Previous image" }),
|
|
3338
|
+
/* @__PURE__ */ React38.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide, "aria-label": "Next image" }),
|
|
3339
|
+
/* @__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(
|
|
3253
3340
|
"button",
|
|
3254
3341
|
{
|
|
3255
3342
|
key: idx,
|
|
@@ -3262,13 +3349,13 @@ var ConsultantShowcase = ({
|
|
|
3262
3349
|
};
|
|
3263
3350
|
|
|
3264
3351
|
// src/components/ContentGridBlock.tsx
|
|
3265
|
-
import
|
|
3352
|
+
import React39, { useState as useState25 } from "react";
|
|
3266
3353
|
import Image12 from "next/image";
|
|
3267
|
-
import { HugeiconsIcon as
|
|
3354
|
+
import { HugeiconsIcon as HugeiconsIcon26 } from "@hugeicons/react";
|
|
3268
3355
|
import { Loading03Icon as Loading03Icon13 } from "@hugeicons/core-free-icons";
|
|
3269
3356
|
var ImageWithLoader2 = ({ src, alt, className, sizes }) => {
|
|
3270
|
-
const [isLoading, setIsLoading] =
|
|
3271
|
-
return /* @__PURE__ */
|
|
3357
|
+
const [isLoading, setIsLoading] = useState25(true);
|
|
3358
|
+
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: Loading03Icon13, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ React39.createElement(
|
|
3272
3359
|
Image12,
|
|
3273
3360
|
{
|
|
3274
3361
|
src,
|
|
@@ -3290,30 +3377,30 @@ var ContentGridBlock = ({
|
|
|
3290
3377
|
middleBottomCard,
|
|
3291
3378
|
rightCards
|
|
3292
3379
|
}) => {
|
|
3293
|
-
return /* @__PURE__ */
|
|
3380
|
+
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-100 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(
|
|
3294
3381
|
ImageWithLoader2,
|
|
3295
3382
|
{
|
|
3296
3383
|
src: card.bgImageSrc,
|
|
3297
3384
|
alt: card.title,
|
|
3298
3385
|
className: "absolute inset-0 w-full h-full"
|
|
3299
3386
|
}
|
|
3300
|
-
), /* @__PURE__ */
|
|
3387
|
+
), /* @__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)))))))));
|
|
3301
3388
|
};
|
|
3302
3389
|
|
|
3303
3390
|
// src/components/ManagedProjectsBlock.tsx
|
|
3304
|
-
import
|
|
3305
|
-
import
|
|
3391
|
+
import React40 from "react";
|
|
3392
|
+
import Link9 from "next/link";
|
|
3306
3393
|
var GridSection = ({
|
|
3307
3394
|
children,
|
|
3308
3395
|
isLast = false,
|
|
3309
3396
|
className = "py-8 md:py-10"
|
|
3310
|
-
}) => /* @__PURE__ */
|
|
3397
|
+
}) => /* @__PURE__ */ React40.createElement("div", { className: `relative px-5 md:px-12 ${className} ${!isLast ? "" : ""}` }, children);
|
|
3311
3398
|
var ManagedProjectsBlock = ({
|
|
3312
3399
|
tagline,
|
|
3313
3400
|
title,
|
|
3314
3401
|
projects
|
|
3315
3402
|
}) => {
|
|
3316
|
-
return /* @__PURE__ */
|
|
3403
|
+
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(
|
|
3317
3404
|
"div",
|
|
3318
3405
|
{
|
|
3319
3406
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3322,10 +3409,10 @@ var ManagedProjectsBlock = ({
|
|
|
3322
3409
|
backgroundRepeat: "repeat"
|
|
3323
3410
|
}
|
|
3324
3411
|
}
|
|
3325
|
-
), /* @__PURE__ */
|
|
3412
|
+
), /* @__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) => {
|
|
3326
3413
|
const isLast = index === projects.length - 1;
|
|
3327
|
-
const projectContent = /* @__PURE__ */
|
|
3328
|
-
return /* @__PURE__ */
|
|
3414
|
+
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));
|
|
3415
|
+
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));
|
|
3329
3416
|
}))));
|
|
3330
3417
|
};
|
|
3331
3418
|
export {
|
|
@@ -3362,6 +3449,7 @@ export {
|
|
|
3362
3449
|
UniversalOrganizationPage,
|
|
3363
3450
|
UniversalProfilePage,
|
|
3364
3451
|
UniversalProfileSettings,
|
|
3452
|
+
UniversalSidebar,
|
|
3365
3453
|
UniversalTransactionPage,
|
|
3366
3454
|
UniversalWalletPage,
|
|
3367
3455
|
WaitlistDialog
|