@retinalabsllc/zairusjs 9.0.80 → 9.0.90
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 +29 -1
- package/dist/index.d.ts +29 -1
- package/dist/index.js +446 -149
- package/dist/index.mjs +450 -144
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -64,6 +64,7 @@ __export(index_exports, {
|
|
|
64
64
|
UniversalOrganizationPage: () => UniversalOrganizationPage,
|
|
65
65
|
UniversalProfilePage: () => UniversalProfilePage,
|
|
66
66
|
UniversalProfileSettings: () => UniversalProfileSettings,
|
|
67
|
+
UniversalSecurityPage: () => UniversalSecurityPage,
|
|
67
68
|
UniversalSidebar: () => UniversalSidebar,
|
|
68
69
|
UniversalTransactionPage: () => UniversalTransactionPage,
|
|
69
70
|
UniversalWalletPage: () => UniversalWalletPage,
|
|
@@ -855,8 +856,12 @@ var UniversalOrganizationPage = ({
|
|
|
855
856
|
slugPrefixUrl = ".aeona.eth",
|
|
856
857
|
bannerProps,
|
|
857
858
|
onSaveConfiguration,
|
|
858
|
-
onCheckSlugAvailability
|
|
859
|
+
onCheckSlugAvailability,
|
|
860
|
+
onBack
|
|
859
861
|
}) => {
|
|
862
|
+
const onBackHandler = onBack ?? (() => {
|
|
863
|
+
if (typeof window !== "undefined") window.history.back();
|
|
864
|
+
});
|
|
860
865
|
const resolvedInitialUsername = initialUsername || initialSlug;
|
|
861
866
|
const [web3Name, setWeb3Name] = (0, import_react15.useState)(initialOrgName);
|
|
862
867
|
const [username, setUsername] = (0, import_react15.useState)(resolvedInitialUsername);
|
|
@@ -933,7 +938,15 @@ var UniversalOrganizationPage = ({
|
|
|
933
938
|
};
|
|
934
939
|
const hasChanges = web3Name !== initialOrgName || slug !== initialSlug || username !== resolvedInitialUsername;
|
|
935
940
|
const isSaveDisabled = isSubmitting || isReadOnly || isCheckingSlug || !hasChanges || web3Name.length < 3 || slug.length < 3 || username.length < 3 || slug !== initialSlug && slugAvailable === false;
|
|
936
|
-
return /* @__PURE__ */ import_react15.default.createElement("div",
|
|
941
|
+
return /* @__PURE__ */ import_react15.default.createElement("div", null, /* @__PURE__ */ import_react15.default.createElement("div", { className: "mb-3 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ import_react15.default.createElement(
|
|
942
|
+
"button",
|
|
943
|
+
{
|
|
944
|
+
onClick: onBackHandler,
|
|
945
|
+
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] font-medium outline-none"
|
|
946
|
+
},
|
|
947
|
+
/* @__PURE__ */ import_react15.default.createElement(import_react16.HugeiconsIcon, { icon: import_core_free_icons3.ArrowLeft01Icon, size: 16 }),
|
|
948
|
+
" Back"
|
|
949
|
+
)), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl w-full mx-auto rounded-2xl p-6 bg-white fade-in duration-300" }, /* @__PURE__ */ import_react15.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex items-start justify-between gap-4" }, /* @__PURE__ */ import_react15.default.createElement("div", null, /* @__PURE__ */ import_react15.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, "Public Profile"), /* @__PURE__ */ import_react15.default.createElement("p", { className: "text-xs text-neutral-500" }, "Manage your financial payment handle identifiers and global public cryptographic signature identity details.")), isReadOnly && /* @__PURE__ */ import_react15.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react15.default.createElement(import_react16.HugeiconsIcon, { icon: import_core_free_icons3.CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ import_react15.default.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ import_react15.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react15.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react15.default.createElement(
|
|
937
950
|
TextInput,
|
|
938
951
|
{
|
|
939
952
|
label: "Display Name",
|
|
@@ -986,7 +999,7 @@ var UniversalOrganizationPage = ({
|
|
|
986
999
|
className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors outline-none"
|
|
987
1000
|
},
|
|
988
1001
|
"Cancel"
|
|
989
|
-
)))));
|
|
1002
|
+
))))));
|
|
990
1003
|
};
|
|
991
1004
|
|
|
992
1005
|
// src/components/UniversalProfileSettings.tsx
|
|
@@ -1005,8 +1018,12 @@ var UniversalProfileSettings = ({
|
|
|
1005
1018
|
hasPin = false,
|
|
1006
1019
|
isPinLoading = false,
|
|
1007
1020
|
onSavePin,
|
|
1008
|
-
onSaveProfile
|
|
1021
|
+
onSaveProfile,
|
|
1022
|
+
onBack
|
|
1009
1023
|
}) => {
|
|
1024
|
+
const onBackHandler = onBack ?? (() => {
|
|
1025
|
+
if (typeof window !== "undefined") window.history.back();
|
|
1026
|
+
});
|
|
1010
1027
|
const [firstName, setFirstName] = (0, import_react17.useState)(initialFirstName);
|
|
1011
1028
|
const [lastName, setLastName] = (0, import_react17.useState)(initialLastName);
|
|
1012
1029
|
const [isSubmitting, setIsSubmitting] = (0, import_react17.useState)(false);
|
|
@@ -1081,7 +1098,15 @@ var UniversalProfileSettings = ({
|
|
|
1081
1098
|
};
|
|
1082
1099
|
const hasChanges = firstName !== initialFirstName || lastName !== initialLastName;
|
|
1083
1100
|
const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || firstName.trim().length === 0 || lastName.trim().length === 0;
|
|
1084
|
-
return /* @__PURE__ */ import_react17.default.createElement("div",
|
|
1101
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", null, /* @__PURE__ */ import_react17.default.createElement("div", { className: "mb-3 flex max-w-3xl w-full mx-auto items-center px-1" }, /* @__PURE__ */ import_react17.default.createElement(
|
|
1102
|
+
"button",
|
|
1103
|
+
{
|
|
1104
|
+
onClick: onBackHandler,
|
|
1105
|
+
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] font-medium outline-none"
|
|
1106
|
+
},
|
|
1107
|
+
/* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons4.ArrowLeft01Icon, size: 16 }),
|
|
1108
|
+
" Back"
|
|
1109
|
+
)), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col max-w-3xl w-full mx-auto rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300" }, /* @__PURE__ */ import_react17.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react17.default.createElement("h1", { className: "text-black text-xl mb-1 truncate tracking-tight" }, "Personal Settings"), /* @__PURE__ */ import_react17.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your personal account profile.")), isReadOnly && /* @__PURE__ */ import_react17.default.createElement("span", { className: "p-2 w-9 h-9 bg-neutral-100 text-neutral-400 rounded-full shrink-0" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons4.CircleLock02Icon, size: 18, className: "text-current" }))), bannerProps && /* @__PURE__ */ import_react17.default.createElement(Banner, { ...bannerProps }), /* @__PURE__ */ import_react17.default.createElement("div", { className: "w-full max-w-5xl" }, /* @__PURE__ */ import_react17.default.createElement("form", { className: "flex flex-col gap-8", onSubmit: handleSave, autoComplete: "off" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col sm:flex-row gap-6" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react17.default.createElement(
|
|
1085
1110
|
TextInput,
|
|
1086
1111
|
{
|
|
1087
1112
|
label: "First Name",
|
|
@@ -1179,7 +1204,7 @@ var UniversalProfileSettings = ({
|
|
|
1179
1204
|
className: "w-full py-3"
|
|
1180
1205
|
},
|
|
1181
1206
|
hasPin ? "Update PIN" : "Set PIN"
|
|
1182
|
-
)))))));
|
|
1207
|
+
))))))));
|
|
1183
1208
|
};
|
|
1184
1209
|
|
|
1185
1210
|
// src/components/UniversalErrorView.tsx
|
|
@@ -2623,15 +2648,286 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2623
2648
|
})))));
|
|
2624
2649
|
};
|
|
2625
2650
|
|
|
2626
|
-
// src/components/
|
|
2651
|
+
// src/components/UniversalSecurityPage.tsx
|
|
2627
2652
|
var import_react45 = __toESM(require("react"));
|
|
2628
|
-
var
|
|
2653
|
+
var import_react_hot_toast8 = __toESM(require("react-hot-toast"));
|
|
2629
2654
|
var import_react46 = require("@hugeicons/react");
|
|
2630
2655
|
var import_core_free_icons16 = require("@hugeicons/core-free-icons");
|
|
2656
|
+
var UniversalSecurityPage = ({
|
|
2657
|
+
has2FA,
|
|
2658
|
+
hasPasskey,
|
|
2659
|
+
userEmail = "your account",
|
|
2660
|
+
is2FALoading = false,
|
|
2661
|
+
isPasskeyLoading = false,
|
|
2662
|
+
onBack,
|
|
2663
|
+
onRequest2FASetup,
|
|
2664
|
+
onVerifyAndEnable2FA,
|
|
2665
|
+
onVerifyAndDisable2FA,
|
|
2666
|
+
onEnablePasskey,
|
|
2667
|
+
onDisablePasskey
|
|
2668
|
+
}) => {
|
|
2669
|
+
const [show2FASetupModal, setShow2FASetupModal] = (0, import_react45.useState)(false);
|
|
2670
|
+
const [show2FADisableModal, setShow2FADisableModal] = (0, import_react45.useState)(false);
|
|
2671
|
+
const [showPasskeyModal, setShowPasskeyModal] = (0, import_react45.useState)(false);
|
|
2672
|
+
const [twoFaSecret, setTwoFaSecret] = (0, import_react45.useState)("");
|
|
2673
|
+
const [twoFaQr, setTwoFaQr] = (0, import_react45.useState)("");
|
|
2674
|
+
const [isFetchingSetup, setIsFetchingSetup] = (0, import_react45.useState)(false);
|
|
2675
|
+
const [otp, setOtp] = (0, import_react45.useState)(Array(6).fill(""));
|
|
2676
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react45.useState)(false);
|
|
2677
|
+
const inputRefs = (0, import_react45.useRef)([]);
|
|
2678
|
+
const resetOtp = () => {
|
|
2679
|
+
setOtp(Array(6).fill(""));
|
|
2680
|
+
setIsSubmitting(false);
|
|
2681
|
+
};
|
|
2682
|
+
const handleOtpChange = (index, value) => {
|
|
2683
|
+
const sanitizedValue = value.replace(/\D/g, "").slice(-1);
|
|
2684
|
+
const newOtp = [...otp];
|
|
2685
|
+
newOtp[index] = sanitizedValue;
|
|
2686
|
+
setOtp(newOtp);
|
|
2687
|
+
if (sanitizedValue && index < 5) {
|
|
2688
|
+
inputRefs.current[index + 1]?.focus();
|
|
2689
|
+
}
|
|
2690
|
+
};
|
|
2691
|
+
const handlePaste = (e) => {
|
|
2692
|
+
e.preventDefault();
|
|
2693
|
+
const pastedData = e.clipboardData.getData("text").replace(/\D/g, "").slice(0, 6);
|
|
2694
|
+
if (!pastedData) return;
|
|
2695
|
+
const newOtp = [...otp];
|
|
2696
|
+
for (let i = 0; i < pastedData.length; i++) {
|
|
2697
|
+
newOtp[i] = pastedData[i];
|
|
2698
|
+
}
|
|
2699
|
+
setOtp(newOtp);
|
|
2700
|
+
const focusIndex = Math.min(pastedData.length, 5);
|
|
2701
|
+
inputRefs.current[focusIndex]?.focus();
|
|
2702
|
+
};
|
|
2703
|
+
const handleCopySecret = async (secret) => {
|
|
2704
|
+
try {
|
|
2705
|
+
await navigator.clipboard.writeText(secret);
|
|
2706
|
+
import_react_hot_toast8.default.success("Secret copied to clipboard");
|
|
2707
|
+
} catch {
|
|
2708
|
+
import_react_hot_toast8.default.error("Failed to copy");
|
|
2709
|
+
}
|
|
2710
|
+
};
|
|
2711
|
+
const handleToggle2FA = async () => {
|
|
2712
|
+
if (is2FALoading) return;
|
|
2713
|
+
if (has2FA) {
|
|
2714
|
+
resetOtp();
|
|
2715
|
+
setShow2FADisableModal(true);
|
|
2716
|
+
} else {
|
|
2717
|
+
if (!onRequest2FASetup) return;
|
|
2718
|
+
setIsFetchingSetup(true);
|
|
2719
|
+
try {
|
|
2720
|
+
const data = await onRequest2FASetup();
|
|
2721
|
+
setTwoFaSecret(data.secret);
|
|
2722
|
+
setTwoFaQr(data.qrCodeUrl);
|
|
2723
|
+
resetOtp();
|
|
2724
|
+
setShow2FASetupModal(true);
|
|
2725
|
+
} catch (error) {
|
|
2726
|
+
import_react_hot_toast8.default.error("Failed to initialize 2FA setup");
|
|
2727
|
+
} finally {
|
|
2728
|
+
setIsFetchingSetup(false);
|
|
2729
|
+
}
|
|
2730
|
+
}
|
|
2731
|
+
};
|
|
2732
|
+
const handleTogglePasskey = () => {
|
|
2733
|
+
if (isPasskeyLoading) return;
|
|
2734
|
+
if (hasPasskey) {
|
|
2735
|
+
if (onDisablePasskey) onDisablePasskey();
|
|
2736
|
+
} else {
|
|
2737
|
+
setShowPasskeyModal(true);
|
|
2738
|
+
}
|
|
2739
|
+
};
|
|
2740
|
+
const submitEnable2FA = async (code) => {
|
|
2741
|
+
if (!onVerifyAndEnable2FA) return;
|
|
2742
|
+
setIsSubmitting(true);
|
|
2743
|
+
try {
|
|
2744
|
+
const res = await onVerifyAndEnable2FA(code);
|
|
2745
|
+
if (res.success) {
|
|
2746
|
+
import_react_hot_toast8.default.success("2FA Enabled Successfully");
|
|
2747
|
+
setShow2FASetupModal(false);
|
|
2748
|
+
} else {
|
|
2749
|
+
import_react_hot_toast8.default.error("Invalid verification code");
|
|
2750
|
+
}
|
|
2751
|
+
} catch (error) {
|
|
2752
|
+
import_react_hot_toast8.default.error("Verification failed");
|
|
2753
|
+
} finally {
|
|
2754
|
+
setIsSubmitting(false);
|
|
2755
|
+
}
|
|
2756
|
+
};
|
|
2757
|
+
const submitDisable2FA = async (code) => {
|
|
2758
|
+
if (!onVerifyAndDisable2FA) return;
|
|
2759
|
+
setIsSubmitting(true);
|
|
2760
|
+
try {
|
|
2761
|
+
const res = await onVerifyAndDisable2FA(code);
|
|
2762
|
+
if (res.success) {
|
|
2763
|
+
import_react_hot_toast8.default.success("2FA Disabled");
|
|
2764
|
+
setShow2FADisableModal(false);
|
|
2765
|
+
} else {
|
|
2766
|
+
import_react_hot_toast8.default.error("Invalid verification code");
|
|
2767
|
+
}
|
|
2768
|
+
} catch (error) {
|
|
2769
|
+
import_react_hot_toast8.default.error("Verification failed");
|
|
2770
|
+
} finally {
|
|
2771
|
+
setIsSubmitting(false);
|
|
2772
|
+
}
|
|
2773
|
+
};
|
|
2774
|
+
const submitEnablePasskey = async () => {
|
|
2775
|
+
if (!onEnablePasskey) return;
|
|
2776
|
+
setIsSubmitting(true);
|
|
2777
|
+
try {
|
|
2778
|
+
const res = await onEnablePasskey();
|
|
2779
|
+
if (res.success) {
|
|
2780
|
+
import_react_hot_toast8.default.success("Passkey Created Successfully");
|
|
2781
|
+
setShowPasskeyModal(false);
|
|
2782
|
+
}
|
|
2783
|
+
} catch (error) {
|
|
2784
|
+
import_react_hot_toast8.default.error("Passkey setup failed or was canceled");
|
|
2785
|
+
} finally {
|
|
2786
|
+
setIsSubmitting(false);
|
|
2787
|
+
}
|
|
2788
|
+
};
|
|
2789
|
+
return /* @__PURE__ */ import_react45.default.createElement("div", { className: "w-full max-w-3xl mx-auto flex flex-col animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ import_react45.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react45.default.createElement("div", { className: "mb-6 flex items-center px-1" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
2790
|
+
"button",
|
|
2791
|
+
{
|
|
2792
|
+
onClick: onBack,
|
|
2793
|
+
className: "flex items-center gap-2 text-neutral-500 hover:text-black transition-colors text-[13px] font-medium outline-none"
|
|
2794
|
+
},
|
|
2795
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowLeft01Icon, size: 16 }),
|
|
2796
|
+
" Back"
|
|
2797
|
+
)), /* @__PURE__ */ import_react45.default.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
2798
|
+
MenuRow3,
|
|
2799
|
+
{
|
|
2800
|
+
icon: import_core_free_icons16.Shield02Icon,
|
|
2801
|
+
title: "Authenticator App",
|
|
2802
|
+
subtitle: "Secure your account with 2FA",
|
|
2803
|
+
onClick: handleToggle2FA,
|
|
2804
|
+
isToggle: true,
|
|
2805
|
+
toggleState: has2FA,
|
|
2806
|
+
toggleLoading: is2FALoading || isFetchingSetup
|
|
2807
|
+
}
|
|
2808
|
+
), /* @__PURE__ */ import_react45.default.createElement(
|
|
2809
|
+
MenuRow3,
|
|
2810
|
+
{
|
|
2811
|
+
icon: import_core_free_icons16.Key01Icon,
|
|
2812
|
+
title: "Passkeys",
|
|
2813
|
+
subtitle: "Sign in quickly with biometrics",
|
|
2814
|
+
onClick: handleTogglePasskey,
|
|
2815
|
+
isToggle: true,
|
|
2816
|
+
toggleState: hasPasskey,
|
|
2817
|
+
toggleLoading: isPasskeyLoading,
|
|
2818
|
+
isLast: true
|
|
2819
|
+
}
|
|
2820
|
+
))), show2FASetupModal && /* @__PURE__ */ import_react45.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShow2FASetupModal(false) }), /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react45.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Enable 2FA"), /* @__PURE__ */ import_react45.default.createElement("button", { onClick: () => !isSubmitting && setShow2FASetupModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-2" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "w-full flex justify-center mb-6 mix-blend-multiply" }, twoFaQr ? /* @__PURE__ */ import_react45.default.createElement("img", { src: twoFaQr, alt: "2FA QR Code", className: "w-40 h-40 object-contain rounded-xl border border-neutral-100 p-2" }) : /* @__PURE__ */ import_react45.default.createElement("div", { className: "w-40 h-40 bg-neutral-100 rounded-xl flex items-center justify-center animate-pulse" })), /* @__PURE__ */ import_react45.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-8" }, /* @__PURE__ */ import_react45.default.createElement("div", null, /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2 uppercase" }, "Setup Key"), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex items-center gap-2 min-w-0 bg-neutral-50 px-3 py-2.5 rounded-xl border border-neutral-100" }, /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-[13px] font-mono tracking-widest text-black truncate min-w-0 block flex-1" }, twoFaSecret), /* @__PURE__ */ import_react45.default.createElement(
|
|
2821
|
+
"button",
|
|
2822
|
+
{
|
|
2823
|
+
onClick: () => handleCopySecret(twoFaSecret),
|
|
2824
|
+
className: "text-neutral-400 hover:text-black transition-colors outline-none shrink-0 ml-2"
|
|
2825
|
+
},
|
|
2826
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.Copy01Icon, size: 16 })
|
|
2827
|
+
)))), /* @__PURE__ */ import_react45.default.createElement("div", { className: "text-center mb-8 mt-2" }, /* @__PURE__ */ import_react45.default.createElement("h2", { className: "text-xl text-black mb-2 tracking-tight" }, "Security Check"), /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-[13px] text-neutral-500" }, "Enter the 6-digit code from your app")), /* @__PURE__ */ import_react45.default.createElement("form", { className: "space-y-8", autoComplete: "off", onSubmit: (e) => {
|
|
2828
|
+
e.preventDefault();
|
|
2829
|
+
submitEnable2FA(otp.join(""));
|
|
2830
|
+
} }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex justify-between gap-2", onPaste: handlePaste }, otp.map((digit, index) => /* @__PURE__ */ import_react45.default.createElement(
|
|
2831
|
+
"input",
|
|
2832
|
+
{
|
|
2833
|
+
key: index,
|
|
2834
|
+
ref: (el) => {
|
|
2835
|
+
inputRefs.current[index] = el;
|
|
2836
|
+
},
|
|
2837
|
+
type: "text",
|
|
2838
|
+
inputMode: "numeric",
|
|
2839
|
+
maxLength: 1,
|
|
2840
|
+
value: digit,
|
|
2841
|
+
onChange: (e) => handleOtpChange(index, e.target.value),
|
|
2842
|
+
onKeyDown: (e) => {
|
|
2843
|
+
if (e.key === "Backspace" && !otp[index] && index > 0) {
|
|
2844
|
+
inputRefs.current[index - 1]?.focus();
|
|
2845
|
+
}
|
|
2846
|
+
},
|
|
2847
|
+
className: "w-10 h-12 text-center text-lg bg-transparent border-b-2 border-neutral-100 text-black outline-none focus:border-black transition-all duration-300"
|
|
2848
|
+
}
|
|
2849
|
+
))), /* @__PURE__ */ import_react45.default.createElement(
|
|
2850
|
+
ThreeDActionButton,
|
|
2851
|
+
{
|
|
2852
|
+
type: "submit",
|
|
2853
|
+
disabled: otp.join("").length < 6,
|
|
2854
|
+
isLoading: isSubmitting,
|
|
2855
|
+
className: "w-full py-3.5"
|
|
2856
|
+
},
|
|
2857
|
+
"Verify & Enable"
|
|
2858
|
+
))))), show2FADisableModal && /* @__PURE__ */ import_react45.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShow2FADisableModal(false) }), /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 border-b border-neutral-50" }, /* @__PURE__ */ import_react45.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Disable 2FA"), /* @__PURE__ */ import_react45.default.createElement("button", { onClick: () => !isSubmitting && setShow2FADisableModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react45.default.createElement("div", { className: "p-6" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "text-center mb-8 mt-2" }, /* @__PURE__ */ import_react45.default.createElement("h2", { className: "text-xl text-black mb-2 tracking-tight" }, "Security Check"), /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-[13px] text-neutral-500" }, "Enter the code from your authenticator app to disable 2FA.")), /* @__PURE__ */ import_react45.default.createElement("form", { className: "space-y-8", autoComplete: "off", onSubmit: (e) => {
|
|
2859
|
+
e.preventDefault();
|
|
2860
|
+
submitDisable2FA(otp.join(""));
|
|
2861
|
+
} }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex justify-between gap-2", onPaste: handlePaste }, otp.map((digit, index) => /* @__PURE__ */ import_react45.default.createElement(
|
|
2862
|
+
"input",
|
|
2863
|
+
{
|
|
2864
|
+
key: index,
|
|
2865
|
+
ref: (el) => {
|
|
2866
|
+
inputRefs.current[index] = el;
|
|
2867
|
+
},
|
|
2868
|
+
type: "text",
|
|
2869
|
+
inputMode: "numeric",
|
|
2870
|
+
maxLength: 1,
|
|
2871
|
+
value: digit,
|
|
2872
|
+
onChange: (e) => handleOtpChange(index, e.target.value),
|
|
2873
|
+
onKeyDown: (e) => {
|
|
2874
|
+
if (e.key === "Backspace" && !otp[index] && index > 0) {
|
|
2875
|
+
inputRefs.current[index - 1]?.focus();
|
|
2876
|
+
}
|
|
2877
|
+
},
|
|
2878
|
+
className: "w-10 h-12 text-center text-lg bg-transparent border-b-2 border-neutral-100 text-black outline-none focus:border-black transition-all duration-300"
|
|
2879
|
+
}
|
|
2880
|
+
))), /* @__PURE__ */ import_react45.default.createElement(
|
|
2881
|
+
ThreeDActionButton,
|
|
2882
|
+
{
|
|
2883
|
+
type: "submit",
|
|
2884
|
+
disabled: otp.join("").length < 6,
|
|
2885
|
+
isLoading: isSubmitting,
|
|
2886
|
+
className: "w-full py-3.5"
|
|
2887
|
+
},
|
|
2888
|
+
"Verify & Disable"
|
|
2889
|
+
))))), showPasskeyModal && /* @__PURE__ */ import_react45.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => !isSubmitting && setShowPasskeyModal(false) }), /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 border-b border-neutral-50" }, /* @__PURE__ */ import_react45.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Enable Passkey"), /* @__PURE__ */ import_react45.default.createElement("button", { onClick: () => !isSubmitting && setShowPasskeyModal(false), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react45.default.createElement("div", { className: "p-6 text-center" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "w-16 h-16 bg-neutral-100 rounded-full flex items-center justify-center mx-auto mb-4 text-black" }, /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.Key01Icon, size: 28 })), /* @__PURE__ */ import_react45.default.createElement("h2", { className: "text-lg text-black mb-2 tracking-tight" }, "Simplify your Sign In"), /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-[13px] text-neutral-500 mb-8 leading-relaxed" }, "Use your device's biometrics (Face ID, Touch ID, or PIN) to securely sign into your account without needing a password."), /* @__PURE__ */ import_react45.default.createElement(
|
|
2890
|
+
ThreeDActionButton,
|
|
2891
|
+
{
|
|
2892
|
+
onClick: submitEnablePasskey,
|
|
2893
|
+
isLoading: isSubmitting,
|
|
2894
|
+
className: "w-full py-3.5"
|
|
2895
|
+
},
|
|
2896
|
+
"Create Passkey"
|
|
2897
|
+
)))));
|
|
2898
|
+
};
|
|
2899
|
+
var MenuRow3 = ({
|
|
2900
|
+
icon,
|
|
2901
|
+
title,
|
|
2902
|
+
subtitle,
|
|
2903
|
+
onClick,
|
|
2904
|
+
iconColor = "text-black",
|
|
2905
|
+
titleColor = "text-black",
|
|
2906
|
+
isLast = false,
|
|
2907
|
+
isToggle = false,
|
|
2908
|
+
toggleState = false,
|
|
2909
|
+
toggleLoading = false,
|
|
2910
|
+
disabled = false
|
|
2911
|
+
}) => /* @__PURE__ */ import_react45.default.createElement(
|
|
2912
|
+
"div",
|
|
2913
|
+
{
|
|
2914
|
+
onClick: disabled ? void 0 : onClick,
|
|
2915
|
+
className: `flex items-center p-4 transition-colors ${!isLast ? "border-b border-neutral-50" : ""} ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-neutral-50"}`
|
|
2916
|
+
},
|
|
2917
|
+
/* @__PURE__ */ import_react45.default.createElement("div", { className: "w-10 h-10 rounded-full border border-neutral-100 bg-neutral-50 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon, size: 18, className: iconColor })),
|
|
2918
|
+
/* @__PURE__ */ import_react45.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react45.default.createElement("p", { className: `text-[14px] font-medium truncate ${titleColor}` }, title), /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-[12px] text-neutral-500 truncate" }, subtitle)),
|
|
2919
|
+
isToggle ? /* @__PURE__ */ import_react45.default.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-neutral-200"} ${disabled ? "opacity-50" : ""}` }, /* @__PURE__ */ import_react45.default.createElement("div", { className: `absolute top-1 left-1 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300 flex items-center justify-center ${toggleState ? "translate-x-5" : "translate-x-0"}` }, toggleLoading && /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.Loading03Icon, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2920
|
+
);
|
|
2921
|
+
|
|
2922
|
+
// src/components/FeatureScroll.tsx
|
|
2923
|
+
var import_react47 = __toESM(require("react"));
|
|
2924
|
+
var import_image3 = __toESM(require("next/image"));
|
|
2925
|
+
var import_react48 = require("@hugeicons/react");
|
|
2926
|
+
var import_core_free_icons17 = require("@hugeicons/core-free-icons");
|
|
2631
2927
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
2632
|
-
const [isBgLoading, setIsBgLoading] = (0,
|
|
2633
|
-
const [isFgLoading, setIsFgLoading] = (0,
|
|
2634
|
-
return /* @__PURE__ */
|
|
2928
|
+
const [isBgLoading, setIsBgLoading] = (0, import_react47.useState)(true);
|
|
2929
|
+
const [isFgLoading, setIsFgLoading] = (0, import_react47.useState)(!!feature.image);
|
|
2930
|
+
return /* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-100 rounded-2xl overflow-hidden mb-6 flex items-center justify-center" }, /* @__PURE__ */ import_react47.default.createElement(
|
|
2635
2931
|
import_image3.default,
|
|
2636
2932
|
{
|
|
2637
2933
|
src: bgImage,
|
|
@@ -2644,7 +2940,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2644
2940
|
${isBgLoading ? "blur-xl scale-110" : "blur-0 scale-100"}
|
|
2645
2941
|
`
|
|
2646
2942
|
}
|
|
2647
|
-
), /* @__PURE__ */
|
|
2943
|
+
), /* @__PURE__ */ import_react47.default.createElement(
|
|
2648
2944
|
"div",
|
|
2649
2945
|
{
|
|
2650
2946
|
className: "absolute inset-0 w-full h-full pointer-events-none z-0 opacity-[0.25] mix-blend-overlay",
|
|
@@ -2652,7 +2948,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2652
2948
|
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")`
|
|
2653
2949
|
}
|
|
2654
2950
|
}
|
|
2655
|
-
), isFgLoading && feature.image && /* @__PURE__ */
|
|
2951
|
+
), isFgLoading && feature.image && /* @__PURE__ */ import_react47.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-50/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react47.default.createElement(import_react48.HugeiconsIcon, { icon: import_core_free_icons17.Loading03Icon, size: 32, className: "animate-spin text-neutral-400" })), feature.image && /* @__PURE__ */ import_react47.default.createElement("div", { className: "absolute -bottom-6 -right-6 w-[85%] h-[85%] z-10 transition-transform duration-700 ease-out group-hover:-translate-x-2 group-hover:-translate-y-2" }, /* @__PURE__ */ import_react47.default.createElement(
|
|
2656
2952
|
import_image3.default,
|
|
2657
2953
|
{
|
|
2658
2954
|
src: feature.image,
|
|
@@ -2665,12 +2961,12 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2665
2961
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
2666
2962
|
`
|
|
2667
2963
|
}
|
|
2668
|
-
))), /* @__PURE__ */
|
|
2964
|
+
))), /* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ import_react47.default.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ import_react47.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 max-w-[90%]" }, feature.desc)));
|
|
2669
2965
|
};
|
|
2670
2966
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
2671
|
-
const scrollRef = (0,
|
|
2672
|
-
const [canScrollLeft, setCanScrollLeft] = (0,
|
|
2673
|
-
const [canScrollRight, setCanScrollRight] = (0,
|
|
2967
|
+
const scrollRef = (0, import_react47.useRef)(null);
|
|
2968
|
+
const [canScrollLeft, setCanScrollLeft] = (0, import_react47.useState)(false);
|
|
2969
|
+
const [canScrollRight, setCanScrollRight] = (0, import_react47.useState)(true);
|
|
2674
2970
|
const checkScroll = () => {
|
|
2675
2971
|
if (scrollRef.current) {
|
|
2676
2972
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -2678,7 +2974,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2678
2974
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
2679
2975
|
}
|
|
2680
2976
|
};
|
|
2681
|
-
(0,
|
|
2977
|
+
(0, import_react47.useEffect)(() => {
|
|
2682
2978
|
checkScroll();
|
|
2683
2979
|
window.addEventListener("resize", checkScroll);
|
|
2684
2980
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -2694,72 +2990,72 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2694
2990
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
2695
2991
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
2696
2992
|
];
|
|
2697
|
-
return /* @__PURE__ */
|
|
2993
|
+
return /* @__PURE__ */ import_react47.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ import_react47.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react47.default.createElement("h2", { className: " text-3xl tracking-tight text-black leading-[1.05]" }, headline)), /* @__PURE__ */ import_react47.default.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ import_react47.default.createElement(
|
|
2698
2994
|
"button",
|
|
2699
2995
|
{
|
|
2700
2996
|
onClick: () => scroll("left"),
|
|
2701
2997
|
disabled: !canScrollLeft,
|
|
2702
2998
|
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"
|
|
2703
2999
|
},
|
|
2704
|
-
/* @__PURE__ */
|
|
2705
|
-
), /* @__PURE__ */
|
|
3000
|
+
/* @__PURE__ */ import_react47.default.createElement(import_react48.HugeiconsIcon, { icon: import_core_free_icons17.ArrowLeft01Icon, size: 20 })
|
|
3001
|
+
), /* @__PURE__ */ import_react47.default.createElement(
|
|
2706
3002
|
"button",
|
|
2707
3003
|
{
|
|
2708
3004
|
onClick: () => scroll("right"),
|
|
2709
3005
|
disabled: !canScrollRight,
|
|
2710
3006
|
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"
|
|
2711
3007
|
},
|
|
2712
|
-
/* @__PURE__ */
|
|
2713
|
-
))), /* @__PURE__ */
|
|
3008
|
+
/* @__PURE__ */ import_react47.default.createElement(import_react48.HugeiconsIcon, { icon: import_core_free_icons17.ArrowRight01Icon, size: 20 })
|
|
3009
|
+
))), /* @__PURE__ */ import_react47.default.createElement(
|
|
2714
3010
|
"div",
|
|
2715
3011
|
{
|
|
2716
3012
|
ref: scrollRef,
|
|
2717
3013
|
onScroll: checkScroll,
|
|
2718
3014
|
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"
|
|
2719
3015
|
},
|
|
2720
|
-
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */
|
|
2721
|
-
), /* @__PURE__ */
|
|
3016
|
+
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ import_react47.default.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
|
|
3017
|
+
), /* @__PURE__ */ import_react47.default.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ import_react47.default.createElement(
|
|
2722
3018
|
"button",
|
|
2723
3019
|
{
|
|
2724
3020
|
onClick: () => scroll("left"),
|
|
2725
3021
|
disabled: !canScrollLeft,
|
|
2726
3022
|
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"
|
|
2727
3023
|
},
|
|
2728
|
-
/* @__PURE__ */
|
|
2729
|
-
), /* @__PURE__ */
|
|
3024
|
+
/* @__PURE__ */ import_react47.default.createElement(import_react48.HugeiconsIcon, { icon: import_core_free_icons17.ArrowLeft01Icon, size: 20 })
|
|
3025
|
+
), /* @__PURE__ */ import_react47.default.createElement(
|
|
2730
3026
|
"button",
|
|
2731
3027
|
{
|
|
2732
3028
|
onClick: () => scroll("right"),
|
|
2733
3029
|
disabled: !canScrollRight,
|
|
2734
3030
|
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"
|
|
2735
3031
|
},
|
|
2736
|
-
/* @__PURE__ */
|
|
3032
|
+
/* @__PURE__ */ import_react47.default.createElement(import_react48.HugeiconsIcon, { icon: import_core_free_icons17.ArrowRight01Icon, size: 20 })
|
|
2737
3033
|
))));
|
|
2738
3034
|
};
|
|
2739
3035
|
|
|
2740
3036
|
// src/components/PlatformFeatures.tsx
|
|
2741
|
-
var
|
|
2742
|
-
var
|
|
3037
|
+
var import_react49 = __toESM(require("react"));
|
|
3038
|
+
var import_react50 = require("@hugeicons/react");
|
|
2743
3039
|
var PlatformFeatures = ({
|
|
2744
3040
|
tagline,
|
|
2745
3041
|
headline,
|
|
2746
3042
|
description,
|
|
2747
3043
|
features
|
|
2748
3044
|
}) => {
|
|
2749
|
-
return /* @__PURE__ */
|
|
3045
|
+
return /* @__PURE__ */ import_react49.default.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ import_react49.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react49.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.05] mb-6" }, headline), /* @__PURE__ */ import_react49.default.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-600 max-w-2xl" }, description)), /* @__PURE__ */ import_react49.default.createElement("div", { className: "w-full h-px bg-neutral-100 mb-16", "aria-hidden": "true" }), /* @__PURE__ */ import_react49.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-12" }, features.map((feature, idx) => /* @__PURE__ */ import_react49.default.createElement(
|
|
2750
3046
|
"div",
|
|
2751
3047
|
{
|
|
2752
3048
|
key: idx,
|
|
2753
3049
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
2754
3050
|
style: { animationDelay: feature.delay || "0ms" }
|
|
2755
3051
|
},
|
|
2756
|
-
/* @__PURE__ */
|
|
2757
|
-
/* @__PURE__ */
|
|
3052
|
+
/* @__PURE__ */ import_react49.default.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-200 flex items-center justify-center text-neutral-600 transition-colors duration-300" }, /* @__PURE__ */ import_react49.default.createElement(import_react50.HugeiconsIcon, { icon: feature.icon, size: 24 })), /* @__PURE__ */ import_react49.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react49.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ import_react49.default.createElement("h3", { className: "text-xl tracking-tight text-black" }, feature.title))),
|
|
3053
|
+
/* @__PURE__ */ import_react49.default.createElement("div", null, /* @__PURE__ */ import_react49.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
2758
3054
|
)))));
|
|
2759
3055
|
};
|
|
2760
3056
|
|
|
2761
3057
|
// src/components/ManagedDocument.tsx
|
|
2762
|
-
var
|
|
3058
|
+
var import_react51 = __toESM(require("react"));
|
|
2763
3059
|
var ManagedDocument = ({
|
|
2764
3060
|
tagline,
|
|
2765
3061
|
title,
|
|
@@ -2767,9 +3063,9 @@ var ManagedDocument = ({
|
|
|
2767
3063
|
contactText,
|
|
2768
3064
|
contactEmail
|
|
2769
3065
|
}) => {
|
|
2770
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2771
|
-
const titleRef = (0,
|
|
2772
|
-
(0,
|
|
3066
|
+
const [isAnimating, setIsAnimating] = (0, import_react51.useState)(false);
|
|
3067
|
+
const titleRef = (0, import_react51.useRef)(null);
|
|
3068
|
+
(0, import_react51.useEffect)(() => {
|
|
2773
3069
|
const observer = new IntersectionObserver(
|
|
2774
3070
|
([entry]) => {
|
|
2775
3071
|
if (entry.isIntersecting) {
|
|
@@ -2789,7 +3085,7 @@ var ManagedDocument = ({
|
|
|
2789
3085
|
}, []);
|
|
2790
3086
|
return (
|
|
2791
3087
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
2792
|
-
/* @__PURE__ */
|
|
3088
|
+
/* @__PURE__ */ import_react51.default.createElement("div", { className: "grow pt-4 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react51.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react51.default.createElement(
|
|
2793
3089
|
"h1",
|
|
2794
3090
|
{
|
|
2795
3091
|
ref: titleRef,
|
|
@@ -2797,7 +3093,7 @@ var ManagedDocument = ({
|
|
|
2797
3093
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2798
3094
|
},
|
|
2799
3095
|
title
|
|
2800
|
-
)), sections.map((section, index) => /* @__PURE__ */
|
|
3096
|
+
)), sections.map((section, index) => /* @__PURE__ */ import_react51.default.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ import_react51.default.createElement("p", { className: " text-[11px] tracking-[0.2em] text-black mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ import_react51.default.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-700 space-y-4 text-left " }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ import_react51.default.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ import_react51.default.createElement("div", { className: `border-neutral-100 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ import_react51.default.createElement("p", { className: "text-neutral-900 text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ import_react51.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react51.default.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react51.default.createElement(
|
|
2801
3097
|
"a",
|
|
2802
3098
|
{
|
|
2803
3099
|
href: `mailto:${contactEmail}`,
|
|
@@ -2809,18 +3105,18 @@ var ManagedDocument = ({
|
|
|
2809
3105
|
};
|
|
2810
3106
|
|
|
2811
3107
|
// src/components/ManagedContactBlock.tsx
|
|
2812
|
-
var
|
|
2813
|
-
var
|
|
3108
|
+
var import_react52 = __toESM(require("react"));
|
|
3109
|
+
var import_react53 = require("@hugeicons/react");
|
|
2814
3110
|
var SecureEmail = ({ user, domain, className }) => {
|
|
2815
|
-
const [isMounted, setIsMounted] = (0,
|
|
2816
|
-
(0,
|
|
3111
|
+
const [isMounted, setIsMounted] = (0, import_react52.useState)(false);
|
|
3112
|
+
(0, import_react52.useEffect)(() => {
|
|
2817
3113
|
setIsMounted(true);
|
|
2818
3114
|
}, []);
|
|
2819
3115
|
if (!isMounted) {
|
|
2820
|
-
return /* @__PURE__ */
|
|
3116
|
+
return /* @__PURE__ */ import_react52.default.createElement("span", { className, style: { opacity: 0 } }, "Loading");
|
|
2821
3117
|
}
|
|
2822
3118
|
const email = `${user}@${domain}`;
|
|
2823
|
-
return /* @__PURE__ */
|
|
3119
|
+
return /* @__PURE__ */ import_react52.default.createElement("a", { href: `mailto:${email}`, className }, email);
|
|
2824
3120
|
};
|
|
2825
3121
|
var ManagedContactBlock = ({
|
|
2826
3122
|
tagline,
|
|
@@ -2829,7 +3125,7 @@ var ManagedContactBlock = ({
|
|
|
2829
3125
|
emails,
|
|
2830
3126
|
socials
|
|
2831
3127
|
}) => {
|
|
2832
|
-
return /* @__PURE__ */
|
|
3128
|
+
return /* @__PURE__ */ import_react52.default.createElement("div", { className: "grow pt-4 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react52.default.createElement(
|
|
2833
3129
|
"div",
|
|
2834
3130
|
{
|
|
2835
3131
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2838,21 +3134,21 @@ var ManagedContactBlock = ({
|
|
|
2838
3134
|
backgroundRepeat: "repeat"
|
|
2839
3135
|
}
|
|
2840
3136
|
}
|
|
2841
|
-
), /* @__PURE__ */
|
|
3137
|
+
), /* @__PURE__ */ import_react52.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react52.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react52.default.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Contact Details"), /* @__PURE__ */ import_react52.default.createElement("div", { className: "space-y-3 text-[13px] text-neutral-600 leading-[1.8]" }, company.name && /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-black" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ import_react52.default.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ import_react52.default.createElement("p", { className: "pt-2" }, /* @__PURE__ */ import_react52.default.createElement(
|
|
2842
3138
|
"a",
|
|
2843
3139
|
{
|
|
2844
3140
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
2845
3141
|
className: "transition-colors hover:text-black"
|
|
2846
3142
|
},
|
|
2847
3143
|
company.phone
|
|
2848
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */
|
|
3144
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Email Directory"), /* @__PURE__ */ import_react52.default.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ import_react52.default.createElement("div", { key: idx }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ import_react52.default.createElement(
|
|
2849
3145
|
SecureEmail,
|
|
2850
3146
|
{
|
|
2851
3147
|
user: email.user,
|
|
2852
3148
|
domain: email.domain,
|
|
2853
3149
|
className: "text-neutral-600 transition-colors hover:text-black"
|
|
2854
3150
|
}
|
|
2855
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */
|
|
3151
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Find Us Online"), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ import_react52.default.createElement(
|
|
2856
3152
|
"a",
|
|
2857
3153
|
{
|
|
2858
3154
|
key: idx,
|
|
@@ -2861,27 +3157,27 @@ var ManagedContactBlock = ({
|
|
|
2861
3157
|
rel: "noopener noreferrer",
|
|
2862
3158
|
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black"
|
|
2863
3159
|
},
|
|
2864
|
-
/* @__PURE__ */
|
|
2865
|
-
/* @__PURE__ */
|
|
3160
|
+
/* @__PURE__ */ import_react52.default.createElement(import_react53.HugeiconsIcon, { icon: social.icon, size: 18 }),
|
|
3161
|
+
/* @__PURE__ */ import_react52.default.createElement("span", { className: "text-[13px]" }, social.label)
|
|
2866
3162
|
)))))))));
|
|
2867
3163
|
};
|
|
2868
3164
|
|
|
2869
3165
|
// src/components/ManagedPricingBlock.tsx
|
|
2870
|
-
var
|
|
3166
|
+
var import_react54 = __toESM(require("react"));
|
|
2871
3167
|
var import_link7 = __toESM(require("next/link"));
|
|
2872
3168
|
var import_image4 = __toESM(require("next/image"));
|
|
2873
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */
|
|
2874
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */
|
|
3169
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ import_react54.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react54.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ import_react54.default.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
3170
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ import_react54.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react54.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ import_react54.default.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
2875
3171
|
var ManagedPricingBlock = ({
|
|
2876
3172
|
tagline,
|
|
2877
3173
|
title,
|
|
2878
3174
|
plans = [],
|
|
2879
3175
|
tabs
|
|
2880
3176
|
}) => {
|
|
2881
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2882
|
-
const [activeTabIndex, setActiveTabIndex] = (0,
|
|
2883
|
-
const titleRef = (0,
|
|
2884
|
-
(0,
|
|
3177
|
+
const [isAnimating, setIsAnimating] = (0, import_react54.useState)(false);
|
|
3178
|
+
const [activeTabIndex, setActiveTabIndex] = (0, import_react54.useState)(0);
|
|
3179
|
+
const titleRef = (0, import_react54.useRef)(null);
|
|
3180
|
+
(0, import_react54.useEffect)(() => {
|
|
2885
3181
|
const observer = new IntersectionObserver(
|
|
2886
3182
|
([entry]) => {
|
|
2887
3183
|
if (entry.isIntersecting) {
|
|
@@ -2901,7 +3197,7 @@ var ManagedPricingBlock = ({
|
|
|
2901
3197
|
}, []);
|
|
2902
3198
|
const hasTabs = tabs && tabs.length > 0;
|
|
2903
3199
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
2904
|
-
return /* @__PURE__ */
|
|
3200
|
+
return /* @__PURE__ */ import_react54.default.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-[9px] tracking-[0.4em] text-black block " }, tagline), /* @__PURE__ */ import_react54.default.createElement(
|
|
2905
3201
|
"h1",
|
|
2906
3202
|
{
|
|
2907
3203
|
ref: titleRef,
|
|
@@ -2909,9 +3205,9 @@ var ManagedPricingBlock = ({
|
|
|
2909
3205
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2910
3206
|
},
|
|
2911
3207
|
title
|
|
2912
|
-
)), hasTabs && /* @__PURE__ */
|
|
3208
|
+
)), hasTabs && /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, tabs.map((tab, idx) => {
|
|
2913
3209
|
const isActive = activeTabIndex === idx;
|
|
2914
|
-
return /* @__PURE__ */
|
|
3210
|
+
return /* @__PURE__ */ import_react54.default.createElement(
|
|
2915
3211
|
"button",
|
|
2916
3212
|
{
|
|
2917
3213
|
key: idx,
|
|
@@ -2920,19 +3216,19 @@ var ManagedPricingBlock = ({
|
|
|
2920
3216
|
},
|
|
2921
3217
|
tab.label
|
|
2922
3218
|
);
|
|
2923
|
-
}))), /* @__PURE__ */
|
|
3219
|
+
}))), /* @__PURE__ */ import_react54.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-3xl animate-in slide-in-from-bottom-2 fade-in duration-500" }, currentPlans.map((plan, planIdx) => /* @__PURE__ */ import_react54.default.createElement(
|
|
2924
3220
|
"div",
|
|
2925
3221
|
{
|
|
2926
3222
|
key: `${activeTabIndex}-${planIdx}`,
|
|
2927
3223
|
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
2928
3224
|
},
|
|
2929
|
-
/* @__PURE__ */
|
|
3225
|
+
/* @__PURE__ */ import_react54.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react54.default.createElement("h3", { className: "text-3xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ import_react54.default.createElement("p", { className: "text-xs text-neutral-500 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ import_react54.default.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ import_react54.default.createElement(
|
|
2930
3226
|
"div",
|
|
2931
3227
|
{
|
|
2932
3228
|
key: logoIdx,
|
|
2933
3229
|
className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
|
|
2934
3230
|
},
|
|
2935
|
-
/* @__PURE__ */
|
|
3231
|
+
/* @__PURE__ */ import_react54.default.createElement(
|
|
2936
3232
|
import_image4.default,
|
|
2937
3233
|
{
|
|
2938
3234
|
src: logo.src,
|
|
@@ -2943,7 +3239,7 @@ var ManagedPricingBlock = ({
|
|
|
2943
3239
|
}
|
|
2944
3240
|
)
|
|
2945
3241
|
)))),
|
|
2946
|
-
plan.isPremium ? /* @__PURE__ */
|
|
3242
|
+
plan.isPremium ? /* @__PURE__ */ import_react54.default.createElement(ThreeDButton, { href: plan.ctaHref, className: "mb-6 w-full" }, plan.ctaText) : /* @__PURE__ */ import_react54.default.createElement(
|
|
2947
3243
|
import_link7.default,
|
|
2948
3244
|
{
|
|
2949
3245
|
href: plan.ctaHref,
|
|
@@ -2951,20 +3247,20 @@ var ManagedPricingBlock = ({
|
|
|
2951
3247
|
},
|
|
2952
3248
|
plan.ctaText
|
|
2953
3249
|
),
|
|
2954
|
-
/* @__PURE__ */
|
|
3250
|
+
/* @__PURE__ */ import_react54.default.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
2955
3251
|
const isAvailable = feature.value !== false;
|
|
2956
3252
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
2957
|
-
return /* @__PURE__ */
|
|
3253
|
+
return /* @__PURE__ */ import_react54.default.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ import_react54.default.createElement(CheckIcon, null) : /* @__PURE__ */ import_react54.default.createElement(CrossIcon, null), /* @__PURE__ */ import_react54.default.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ import_react54.default.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
2958
3254
|
}))
|
|
2959
3255
|
)))));
|
|
2960
3256
|
};
|
|
2961
3257
|
|
|
2962
3258
|
// src/components/ManagedBoardBlock.tsx
|
|
2963
|
-
var
|
|
3259
|
+
var import_react55 = __toESM(require("react"));
|
|
2964
3260
|
var import_image5 = __toESM(require("next/image"));
|
|
2965
|
-
var
|
|
2966
|
-
var
|
|
2967
|
-
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */
|
|
3261
|
+
var import_react56 = require("@hugeicons/react");
|
|
3262
|
+
var import_core_free_icons18 = require("@hugeicons/core-free-icons");
|
|
3263
|
+
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_react55.default.createElement(
|
|
2968
3264
|
"a",
|
|
2969
3265
|
{
|
|
2970
3266
|
href,
|
|
@@ -2972,7 +3268,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_r
|
|
|
2972
3268
|
rel: "noopener noreferrer",
|
|
2973
3269
|
className: "text-neutral-400 hover:text-black transition-colors"
|
|
2974
3270
|
},
|
|
2975
|
-
/* @__PURE__ */
|
|
3271
|
+
/* @__PURE__ */ import_react55.default.createElement(import_react56.HugeiconsIcon, { icon, size: 16 })
|
|
2976
3272
|
);
|
|
2977
3273
|
var ManagedBoardBlock = ({
|
|
2978
3274
|
tagline,
|
|
@@ -2981,7 +3277,7 @@ var ManagedBoardBlock = ({
|
|
|
2981
3277
|
contactText,
|
|
2982
3278
|
contactEmail
|
|
2983
3279
|
}) => {
|
|
2984
|
-
return /* @__PURE__ */
|
|
3280
|
+
return /* @__PURE__ */ import_react55.default.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
2985
3281
|
"div",
|
|
2986
3282
|
{
|
|
2987
3283
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2990,7 +3286,7 @@ var ManagedBoardBlock = ({
|
|
|
2990
3286
|
backgroundRepeat: "repeat"
|
|
2991
3287
|
}
|
|
2992
3288
|
}
|
|
2993
|
-
), /* @__PURE__ */
|
|
3289
|
+
), /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react55.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react55.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5 md:gap-8" }, members.map((member, idx) => /* @__PURE__ */ import_react55.default.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-white flex flex-col transition-all group" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-white overflow-hidden rounded-xl" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
2994
3290
|
import_image5.default,
|
|
2995
3291
|
{
|
|
2996
3292
|
src: member.imageSrc,
|
|
@@ -2999,44 +3295,44 @@ var ManagedBoardBlock = ({
|
|
|
2999
3295
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
3000
3296
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
3001
3297
|
}
|
|
3002
|
-
)), /* @__PURE__ */
|
|
3298
|
+
)), /* @__PURE__ */ import_react55.default.createElement("div", { className: "pt-1" }, /* @__PURE__ */ import_react55.default.createElement("h3", { className: " text-[14px] md:text-[15px] text-black tracking-tight" }, member.name), /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 text-left grow mb-8" }, member.bio), /* @__PURE__ */ import_react55.default.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react55.default.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ import_react55.default.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ import_react55.default.createElement(
|
|
3003
3299
|
MemberSocialLink,
|
|
3004
3300
|
{
|
|
3005
3301
|
href: `https://x.com/${member.twitterHandle}`,
|
|
3006
|
-
icon:
|
|
3302
|
+
icon: import_core_free_icons18.TwitterIcon,
|
|
3007
3303
|
label: "X",
|
|
3008
3304
|
name: member.name
|
|
3009
3305
|
}
|
|
3010
|
-
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */
|
|
3306
|
+
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */ import_react55.default.createElement(
|
|
3011
3307
|
MemberSocialLink,
|
|
3012
3308
|
{
|
|
3013
3309
|
href: member.linkedinHandle,
|
|
3014
|
-
icon:
|
|
3310
|
+
icon: import_core_free_icons18.LinkedinIcon,
|
|
3015
3311
|
label: "LinkedIn",
|
|
3016
3312
|
name: member.name
|
|
3017
3313
|
}
|
|
3018
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */
|
|
3314
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ import_react55.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react55.default.createElement("a", { href: `mailto:${contactEmail}`, className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
3019
3315
|
};
|
|
3020
3316
|
|
|
3021
3317
|
// src/components/ManagedNotFoundBlock.tsx
|
|
3022
|
-
var
|
|
3318
|
+
var import_react57 = __toESM(require("react"));
|
|
3023
3319
|
var ManagedNotFoundBlock = ({
|
|
3024
3320
|
title = "404 - Page Not Found",
|
|
3025
3321
|
description = "The page you are looking for does not exist or has been moved."
|
|
3026
3322
|
}) => {
|
|
3027
|
-
return /* @__PURE__ */
|
|
3323
|
+
return /* @__PURE__ */ import_react57.default.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-transparent" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
3028
3324
|
"svg",
|
|
3029
3325
|
{
|
|
3030
3326
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3031
3327
|
viewBox: "0 0 24 24",
|
|
3032
3328
|
className: "w-12 h-12 fill-neutral-100"
|
|
3033
3329
|
},
|
|
3034
|
-
/* @__PURE__ */
|
|
3035
|
-
)), /* @__PURE__ */
|
|
3330
|
+
/* @__PURE__ */ import_react57.default.createElement("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" })
|
|
3331
|
+
)), /* @__PURE__ */ import_react57.default.createElement("h1", { className: " text-xl md:text-3xl text-black tracking-tight mb-4" }, title), /* @__PURE__ */ import_react57.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-12" }, description)));
|
|
3036
3332
|
};
|
|
3037
3333
|
|
|
3038
3334
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
3039
|
-
var
|
|
3335
|
+
var import_react58 = __toESM(require("react"));
|
|
3040
3336
|
var import_image6 = __toESM(require("next/image"));
|
|
3041
3337
|
var ManagedNewsletterSplitBlock = ({
|
|
3042
3338
|
tagline,
|
|
@@ -3050,7 +3346,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3050
3346
|
ctaHref = "/contact",
|
|
3051
3347
|
children
|
|
3052
3348
|
}) => {
|
|
3053
|
-
return /* @__PURE__ */
|
|
3349
|
+
return /* @__PURE__ */ import_react58.default.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden" }, /* @__PURE__ */ import_react58.default.createElement(
|
|
3054
3350
|
import_image6.default,
|
|
3055
3351
|
{
|
|
3056
3352
|
src: imageSrc,
|
|
@@ -3060,7 +3356,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3060
3356
|
className: "object-cover object-top grayscale opacity-60",
|
|
3061
3357
|
quality: 100
|
|
3062
3358
|
}
|
|
3063
|
-
), /* @__PURE__ */
|
|
3359
|
+
), /* @__PURE__ */ import_react58.default.createElement(
|
|
3064
3360
|
"div",
|
|
3065
3361
|
{
|
|
3066
3362
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
@@ -3068,7 +3364,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3068
3364
|
background: "linear-gradient(to right, rgba(255,255,255,0) 30%, #ffffff 100%)"
|
|
3069
3365
|
}
|
|
3070
3366
|
}
|
|
3071
|
-
), /* @__PURE__ */
|
|
3367
|
+
), /* @__PURE__ */ import_react58.default.createElement(
|
|
3072
3368
|
"div",
|
|
3073
3369
|
{
|
|
3074
3370
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
@@ -3076,7 +3372,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3076
3372
|
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
3077
3373
|
}
|
|
3078
3374
|
}
|
|
3079
|
-
)), /* @__PURE__ */
|
|
3375
|
+
)), /* @__PURE__ */ import_react58.default.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__ */ import_react58.default.createElement("div", { className: "relative w-full max-w-lg p-8 md:p-12 text-center md:text-left transition-all duration-700 ease-out" }, /* @__PURE__ */ import_react58.default.createElement(
|
|
3080
3376
|
"div",
|
|
3081
3377
|
{
|
|
3082
3378
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3085,7 +3381,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3085
3381
|
backgroundRepeat: "repeat"
|
|
3086
3382
|
}
|
|
3087
3383
|
}
|
|
3088
|
-
), /* @__PURE__ */
|
|
3384
|
+
), /* @__PURE__ */ import_react58.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "mb-10 border-b border-neutral-100 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ import_react58.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 " }, tagline), /* @__PURE__ */ import_react58.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ import_react58.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, subtitle)), /* @__PURE__ */ import_react58.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ import_react58.default.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ import_react58.default.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ import_react58.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "grow h-px bg-neutral-100" }), /* @__PURE__ */ import_react58.default.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-400 " }, dividerText), /* @__PURE__ */ import_react58.default.createElement("div", { className: "grow h-px bg-neutral-100" })), ctaText && ctaHref && /* @__PURE__ */ import_react58.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react58.default.createElement(
|
|
3089
3385
|
ThreeDButton,
|
|
3090
3386
|
{
|
|
3091
3387
|
href: ctaHref,
|
|
@@ -3096,14 +3392,14 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3096
3392
|
};
|
|
3097
3393
|
|
|
3098
3394
|
// src/components/PortfolioHero.tsx
|
|
3099
|
-
var
|
|
3395
|
+
var import_react59 = __toESM(require("react"));
|
|
3100
3396
|
var import_link8 = __toESM(require("next/link"));
|
|
3101
3397
|
var import_image7 = __toESM(require("next/image"));
|
|
3102
|
-
var
|
|
3103
|
-
var
|
|
3398
|
+
var import_react60 = require("@hugeicons/react");
|
|
3399
|
+
var import_core_free_icons19 = require("@hugeicons/core-free-icons");
|
|
3104
3400
|
var useScrollAnimation = () => {
|
|
3105
|
-
const elementRef = (0,
|
|
3106
|
-
(0,
|
|
3401
|
+
const elementRef = (0, import_react59.useRef)(null);
|
|
3402
|
+
(0, import_react59.useEffect)(() => {
|
|
3107
3403
|
const el = elementRef.current;
|
|
3108
3404
|
if (!el) return;
|
|
3109
3405
|
const observer = new IntersectionObserver(
|
|
@@ -3139,13 +3435,13 @@ var PortfolioHero = ({
|
|
|
3139
3435
|
secondaryCtaHref
|
|
3140
3436
|
}) => {
|
|
3141
3437
|
const heroContentRef = useScrollAnimation();
|
|
3142
|
-
return /* @__PURE__ */
|
|
3438
|
+
return /* @__PURE__ */ import_react59.default.createElement("section", { className: "pt-8 pb-16 px-6 md:px-12 flex flex-col relative overflow-hidden z-10 w-full" }, /* @__PURE__ */ import_react59.default.createElement(
|
|
3143
3439
|
"div",
|
|
3144
3440
|
{
|
|
3145
3441
|
ref: heroContentRef,
|
|
3146
3442
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
3147
3443
|
},
|
|
3148
|
-
/* @__PURE__ */
|
|
3444
|
+
/* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ import_react59.default.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__ */ import_react59.default.createElement(
|
|
3149
3445
|
import_image7.default,
|
|
3150
3446
|
{
|
|
3151
3447
|
src: imageSrc,
|
|
@@ -3156,7 +3452,7 @@ var PortfolioHero = ({
|
|
|
3156
3452
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
3157
3453
|
quality: 100
|
|
3158
3454
|
}
|
|
3159
|
-
)), /* @__PURE__ */
|
|
3455
|
+
)), /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ import_react59.default.createElement("h1", { className: " text-3xl sm:text-5xl lg:text-6xl tracking-tight text-black leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ import_react59.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ import_react59.default.createElement(
|
|
3160
3456
|
"a",
|
|
3161
3457
|
{
|
|
3162
3458
|
href: socialLinkHref,
|
|
@@ -3166,31 +3462,31 @@ var PortfolioHero = ({
|
|
|
3166
3462
|
},
|
|
3167
3463
|
socialLinkText
|
|
3168
3464
|
))),
|
|
3169
|
-
/* @__PURE__ */
|
|
3170
|
-
/* @__PURE__ */
|
|
3465
|
+
/* @__PURE__ */ import_react59.default.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-600" }, bio),
|
|
3466
|
+
/* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ import_react59.default.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ import_react59.default.createElement(
|
|
3171
3467
|
ThreeDButton,
|
|
3172
3468
|
{
|
|
3173
3469
|
href: primaryCtaHref,
|
|
3174
3470
|
className: "py-3 tracking-widest text-[11px]"
|
|
3175
3471
|
},
|
|
3176
3472
|
primaryCtaText
|
|
3177
|
-
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
3473
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react59.default.createElement(
|
|
3178
3474
|
import_link8.default,
|
|
3179
3475
|
{
|
|
3180
3476
|
href: secondaryCtaHref,
|
|
3181
3477
|
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"
|
|
3182
3478
|
},
|
|
3183
3479
|
secondaryCtaText,
|
|
3184
|
-
/* @__PURE__ */
|
|
3480
|
+
/* @__PURE__ */ import_react59.default.createElement(import_react60.HugeiconsIcon, { icon: import_core_free_icons19.ArrowRight01Icon, size: 16 })
|
|
3185
3481
|
))
|
|
3186
3482
|
));
|
|
3187
3483
|
};
|
|
3188
3484
|
|
|
3189
3485
|
// src/components/GifFeatureCard.tsx
|
|
3190
|
-
var
|
|
3486
|
+
var import_react61 = __toESM(require("react"));
|
|
3191
3487
|
var import_image8 = __toESM(require("next/image"));
|
|
3192
|
-
var
|
|
3193
|
-
var
|
|
3488
|
+
var import_react62 = require("@hugeicons/react");
|
|
3489
|
+
var import_core_free_icons20 = require("@hugeicons/core-free-icons");
|
|
3194
3490
|
var GifFeatureCard = ({
|
|
3195
3491
|
gifSrc,
|
|
3196
3492
|
title,
|
|
@@ -3198,20 +3494,20 @@ var GifFeatureCard = ({
|
|
|
3198
3494
|
alt = "Feature animation",
|
|
3199
3495
|
className = "aspect-video"
|
|
3200
3496
|
}) => {
|
|
3201
|
-
const [isLoading, setIsLoading] = (0,
|
|
3202
|
-
return /* @__PURE__ */
|
|
3203
|
-
|
|
3497
|
+
const [isLoading, setIsLoading] = (0, import_react61.useState)(true);
|
|
3498
|
+
return /* @__PURE__ */ import_react61.default.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ import_react61.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ import_react61.default.createElement(
|
|
3499
|
+
import_react62.HugeiconsIcon,
|
|
3204
3500
|
{
|
|
3205
|
-
icon:
|
|
3501
|
+
icon: import_core_free_icons20.Loading03Icon,
|
|
3206
3502
|
size: 32,
|
|
3207
3503
|
className: "animate-spin text-white"
|
|
3208
3504
|
}
|
|
3209
|
-
)), /* @__PURE__ */
|
|
3505
|
+
)), /* @__PURE__ */ import_react61.default.createElement(
|
|
3210
3506
|
"div",
|
|
3211
3507
|
{
|
|
3212
3508
|
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"}`
|
|
3213
3509
|
},
|
|
3214
|
-
/* @__PURE__ */
|
|
3510
|
+
/* @__PURE__ */ import_react61.default.createElement(
|
|
3215
3511
|
import_image8.default,
|
|
3216
3512
|
{
|
|
3217
3513
|
src: gifSrc,
|
|
@@ -3222,16 +3518,16 @@ var GifFeatureCard = ({
|
|
|
3222
3518
|
className: "object-cover object-center pointer-events-none"
|
|
3223
3519
|
}
|
|
3224
3520
|
)
|
|
3225
|
-
), /* @__PURE__ */
|
|
3521
|
+
), /* @__PURE__ */ import_react61.default.createElement(
|
|
3226
3522
|
"div",
|
|
3227
3523
|
{
|
|
3228
3524
|
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"
|
|
3229
3525
|
}
|
|
3230
|
-
), /* @__PURE__ */
|
|
3526
|
+
), /* @__PURE__ */ import_react61.default.createElement("div", { className: "absolute inset-x-0 bottom-0 p-6 sm:p-8 z-30 flex flex-col justify-end text-left pointer-events-none" }, title && /* @__PURE__ */ import_react61.default.createElement("h3", { className: " text-xl sm:text-2xl md:text-3xl text-white tracking-tight mb-2 sm:mb-3 drop-shadow-md" }, title), subtitle && /* @__PURE__ */ import_react61.default.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
3231
3527
|
};
|
|
3232
3528
|
|
|
3233
3529
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
3234
|
-
var
|
|
3530
|
+
var import_react63 = __toESM(require("react"));
|
|
3235
3531
|
var import_image9 = __toESM(require("next/image"));
|
|
3236
3532
|
var MedicalFeatureStatsBlock = ({
|
|
3237
3533
|
bottomHeadline,
|
|
@@ -3240,9 +3536,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3240
3536
|
trustText,
|
|
3241
3537
|
stats
|
|
3242
3538
|
}) => {
|
|
3243
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
3244
|
-
const titleRef = (0,
|
|
3245
|
-
(0,
|
|
3539
|
+
const [isAnimating, setIsAnimating] = (0, import_react63.useState)(false);
|
|
3540
|
+
const titleRef = (0, import_react63.useRef)(null);
|
|
3541
|
+
(0, import_react63.useEffect)(() => {
|
|
3246
3542
|
const observer = new IntersectionObserver(
|
|
3247
3543
|
([entry]) => {
|
|
3248
3544
|
if (entry.isIntersecting) {
|
|
@@ -3260,7 +3556,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3260
3556
|
}
|
|
3261
3557
|
return () => observer.disconnect();
|
|
3262
3558
|
}, []);
|
|
3263
|
-
return /* @__PURE__ */
|
|
3559
|
+
return /* @__PURE__ */ import_react63.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ import_react63.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react63.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ import_react63.default.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ import_react63.default.createElement(
|
|
3264
3560
|
"h2",
|
|
3265
3561
|
{
|
|
3266
3562
|
ref: titleRef,
|
|
@@ -3268,7 +3564,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3268
3564
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3269
3565
|
},
|
|
3270
3566
|
bottomHeadline
|
|
3271
|
-
), /* @__PURE__ */
|
|
3567
|
+
), /* @__PURE__ */ import_react63.default.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ import_react63.default.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ import_react63.default.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ import_react63.default.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-white overflow-hidden bg-neutral-100 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ import_react63.default.createElement(
|
|
3272
3568
|
import_image9.default,
|
|
3273
3569
|
{
|
|
3274
3570
|
src,
|
|
@@ -3277,17 +3573,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3277
3573
|
sizes: "48px",
|
|
3278
3574
|
className: "object-cover"
|
|
3279
3575
|
}
|
|
3280
|
-
)))), /* @__PURE__ */
|
|
3576
|
+
)))), /* @__PURE__ */ import_react63.default.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react63.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react63.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react63.default.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ import_react63.default.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react63.default.createElement("h1", { className: "text-6xl gradient-text md:text-[80px] tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
|
|
3281
3577
|
};
|
|
3282
3578
|
|
|
3283
3579
|
// src/components/ConsultantShowcase.tsx
|
|
3284
|
-
var
|
|
3580
|
+
var import_react64 = __toESM(require("react"));
|
|
3285
3581
|
var import_image10 = __toESM(require("next/image"));
|
|
3286
|
-
var
|
|
3287
|
-
var
|
|
3582
|
+
var import_react65 = require("@hugeicons/react");
|
|
3583
|
+
var import_core_free_icons21 = require("@hugeicons/core-free-icons");
|
|
3288
3584
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3289
|
-
const [isLoading, setIsLoading] = (0,
|
|
3290
|
-
return /* @__PURE__ */
|
|
3585
|
+
const [isLoading, setIsLoading] = (0, import_react64.useState)(true);
|
|
3586
|
+
return /* @__PURE__ */ import_react64.default.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ import_react64.default.createElement(import_react65.HugeiconsIcon, { icon: import_core_free_icons21.Loading03Icon, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ import_react64.default.createElement(
|
|
3291
3587
|
import_image10.default,
|
|
3292
3588
|
{
|
|
3293
3589
|
src,
|
|
@@ -3306,9 +3602,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
3306
3602
|
var ConsultantShowcase = ({
|
|
3307
3603
|
profiles
|
|
3308
3604
|
}) => {
|
|
3309
|
-
const [currentIndex, setCurrentIndex] = (0,
|
|
3310
|
-
const [touchStart, setTouchStart] = (0,
|
|
3311
|
-
const [touchEnd, setTouchEnd] = (0,
|
|
3605
|
+
const [currentIndex, setCurrentIndex] = (0, import_react64.useState)(0);
|
|
3606
|
+
const [touchStart, setTouchStart] = (0, import_react64.useState)(null);
|
|
3607
|
+
const [touchEnd, setTouchEnd] = (0, import_react64.useState)(null);
|
|
3312
3608
|
const nextSlide = () => {
|
|
3313
3609
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
3314
3610
|
};
|
|
@@ -3333,7 +3629,7 @@ var ConsultantShowcase = ({
|
|
|
3333
3629
|
}
|
|
3334
3630
|
};
|
|
3335
3631
|
if (!profiles || profiles.length === 0) return null;
|
|
3336
|
-
return /* @__PURE__ */
|
|
3632
|
+
return /* @__PURE__ */ import_react64.default.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react64.default.createElement(
|
|
3337
3633
|
"div",
|
|
3338
3634
|
{
|
|
3339
3635
|
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
@@ -3343,13 +3639,13 @@ var ConsultantShowcase = ({
|
|
|
3343
3639
|
},
|
|
3344
3640
|
profiles.map((profile, idx) => {
|
|
3345
3641
|
const isActive = idx === currentIndex;
|
|
3346
|
-
return /* @__PURE__ */
|
|
3642
|
+
return /* @__PURE__ */ import_react64.default.createElement(
|
|
3347
3643
|
"div",
|
|
3348
3644
|
{
|
|
3349
3645
|
key: profile.id,
|
|
3350
3646
|
className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
|
|
3351
3647
|
},
|
|
3352
|
-
/* @__PURE__ */
|
|
3648
|
+
/* @__PURE__ */ import_react64.default.createElement(
|
|
3353
3649
|
ImageWithLoader,
|
|
3354
3650
|
{
|
|
3355
3651
|
src: profile.imageSrc,
|
|
@@ -3357,14 +3653,14 @@ var ConsultantShowcase = ({
|
|
|
3357
3653
|
priority: idx === 0
|
|
3358
3654
|
}
|
|
3359
3655
|
),
|
|
3360
|
-
/* @__PURE__ */
|
|
3361
|
-
/* @__PURE__ */
|
|
3362
|
-
/* @__PURE__ */
|
|
3656
|
+
/* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
3657
|
+
/* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/30 to-transparent z-20 pointer-events-none" }),
|
|
3658
|
+
/* @__PURE__ */ import_react64.default.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ import_react64.default.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[15px] text-white/80 tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[15px] text-white/80 tracking-wide mt-1" }, profile.description)))
|
|
3363
3659
|
);
|
|
3364
3660
|
}),
|
|
3365
|
-
/* @__PURE__ */
|
|
3366
|
-
/* @__PURE__ */
|
|
3367
|
-
/* @__PURE__ */
|
|
3661
|
+
/* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide }),
|
|
3662
|
+
/* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide }),
|
|
3663
|
+
/* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute bottom-6 md:bottom-8 left-0 w-full px-4 z-30 flex justify-center items-center gap-2" }, profiles.map((_, idx) => /* @__PURE__ */ import_react64.default.createElement(
|
|
3368
3664
|
"button",
|
|
3369
3665
|
{
|
|
3370
3666
|
key: idx,
|
|
@@ -3376,13 +3672,13 @@ var ConsultantShowcase = ({
|
|
|
3376
3672
|
};
|
|
3377
3673
|
|
|
3378
3674
|
// src/components/ContentGridBlock.tsx
|
|
3379
|
-
var
|
|
3675
|
+
var import_react66 = __toESM(require("react"));
|
|
3380
3676
|
var import_image11 = __toESM(require("next/image"));
|
|
3381
|
-
var
|
|
3382
|
-
var
|
|
3677
|
+
var import_react67 = require("@hugeicons/react");
|
|
3678
|
+
var import_core_free_icons22 = require("@hugeicons/core-free-icons");
|
|
3383
3679
|
var ImageWithLoader2 = ({ src, alt, className, sizes }) => {
|
|
3384
|
-
const [isLoading, setIsLoading] = (0,
|
|
3385
|
-
return /* @__PURE__ */
|
|
3680
|
+
const [isLoading, setIsLoading] = (0, import_react66.useState)(true);
|
|
3681
|
+
return /* @__PURE__ */ import_react66.default.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ import_react66.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-100/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react66.default.createElement(import_react67.HugeiconsIcon, { icon: import_core_free_icons22.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react66.default.createElement(
|
|
3386
3682
|
import_image11.default,
|
|
3387
3683
|
{
|
|
3388
3684
|
src,
|
|
@@ -3404,30 +3700,30 @@ var ContentGridBlock = ({
|
|
|
3404
3700
|
middleBottomCard,
|
|
3405
3701
|
rightCards
|
|
3406
3702
|
}) => {
|
|
3407
|
-
return /* @__PURE__ */
|
|
3703
|
+
return /* @__PURE__ */ import_react66.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react66.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react66.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react66.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react66.default.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react66.default.createElement("div", null, /* @__PURE__ */ import_react66.default.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ import_react66.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react66.default.createElement(import_image11.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react66.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ import_react66.default.createElement(import_image11.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react66.default.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ import_react66.default.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__ */ import_react66.default.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react66.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react66.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react66.default.createElement("div", null, /* @__PURE__ */ import_react66.default.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react66.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react66.default.createElement(import_image11.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react66.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ import_react66.default.createElement("div", { key: idx, className: "relative w-full h-80 text-white rounded-3xl overflow-hidden group" }, /* @__PURE__ */ import_react66.default.createElement(
|
|
3408
3704
|
ImageWithLoader2,
|
|
3409
3705
|
{
|
|
3410
3706
|
src: card.bgImageSrc,
|
|
3411
3707
|
alt: card.title,
|
|
3412
3708
|
className: "absolute inset-0 w-full h-full"
|
|
3413
3709
|
}
|
|
3414
|
-
), /* @__PURE__ */
|
|
3710
|
+
), /* @__PURE__ */ import_react66.default.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ import_react66.default.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ import_react66.default.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ import_react66.default.createElement("div", { className: "pt-3" }, /* @__PURE__ */ import_react66.default.createElement("h4", { className: "text-[15px] text-white tracking-wide" }, card.title), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
|
|
3415
3711
|
};
|
|
3416
3712
|
|
|
3417
3713
|
// src/components/ManagedProjectsBlock.tsx
|
|
3418
|
-
var
|
|
3714
|
+
var import_react68 = __toESM(require("react"));
|
|
3419
3715
|
var import_link9 = __toESM(require("next/link"));
|
|
3420
3716
|
var GridSection = ({
|
|
3421
3717
|
children,
|
|
3422
3718
|
isLast = false,
|
|
3423
3719
|
className = "py-8 md:py-10"
|
|
3424
|
-
}) => /* @__PURE__ */
|
|
3720
|
+
}) => /* @__PURE__ */ import_react68.default.createElement("div", { className: `relative px-5 md:px-12 ${className} ${!isLast ? "" : ""}` }, children);
|
|
3425
3721
|
var ManagedProjectsBlock = ({
|
|
3426
3722
|
tagline,
|
|
3427
3723
|
title,
|
|
3428
3724
|
projects
|
|
3429
3725
|
}) => {
|
|
3430
|
-
return /* @__PURE__ */
|
|
3726
|
+
return /* @__PURE__ */ import_react68.default.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react68.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-5xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react68.default.createElement(
|
|
3431
3727
|
"div",
|
|
3432
3728
|
{
|
|
3433
3729
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3436,10 +3732,10 @@ var ManagedProjectsBlock = ({
|
|
|
3436
3732
|
backgroundRepeat: "repeat"
|
|
3437
3733
|
}
|
|
3438
3734
|
}
|
|
3439
|
-
), /* @__PURE__ */
|
|
3735
|
+
), /* @__PURE__ */ import_react68.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react68.default.createElement(GridSection, null, tagline && /* @__PURE__ */ import_react68.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react68.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
3440
3736
|
const isLast = index === projects.length - 1;
|
|
3441
|
-
const projectContent = /* @__PURE__ */
|
|
3442
|
-
return /* @__PURE__ */
|
|
3737
|
+
const projectContent = /* @__PURE__ */ import_react68.default.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ import_react68.default.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ import_react68.default.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ import_react68.default.createElement("h2", { className: " text-[16px] text-black transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ import_react68.default.createElement("span", { className: "text-[11px] opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300" }, project.isExternal ? "\u2197" : "\u2192")), /* @__PURE__ */ import_react68.default.createElement("span", { className: `text-[9px] px-2.5 py-1 rounded-full tracking-[0.15em] transition-colors ${project.status.toLowerCase() === "production" ? "bg-black text-white" : "bg-neutral-100 text-neutral-500 group-hover:bg-neutral-100 group-hover:text-black"}` }, project.status)), /* @__PURE__ */ import_react68.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0 " }, project.date)), /* @__PURE__ */ import_react68.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 max-w-4xl text-left transition-colors group-hover:text-black" }, project.description));
|
|
3738
|
+
return /* @__PURE__ */ import_react68.default.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ import_react68.default.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ import_react68.default.createElement(import_link9.default, { href: project.link, className: "block outline-none" }, projectContent));
|
|
3443
3739
|
}))));
|
|
3444
3740
|
};
|
|
3445
3741
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -3477,6 +3773,7 @@ var ManagedProjectsBlock = ({
|
|
|
3477
3773
|
UniversalOrganizationPage,
|
|
3478
3774
|
UniversalProfilePage,
|
|
3479
3775
|
UniversalProfileSettings,
|
|
3776
|
+
UniversalSecurityPage,
|
|
3480
3777
|
UniversalSidebar,
|
|
3481
3778
|
UniversalTransactionPage,
|
|
3482
3779
|
UniversalWalletPage,
|