@retinalabsllc/zairusjs 9.0.50 → 9.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +31 -7
- package/dist/index.d.ts +31 -7
- package/dist/index.js +502 -527
- package/dist/index.mjs +452 -480
- 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
|
+
UniversalSidebar: () => UniversalSidebar,
|
|
67
68
|
UniversalTransactionPage: () => UniversalTransactionPage,
|
|
68
69
|
UniversalWalletPage: () => UniversalWalletPage,
|
|
69
70
|
WaitlistDialog: () => WaitlistDialog
|
|
@@ -663,201 +664,49 @@ var Footer = ({
|
|
|
663
664
|
};
|
|
664
665
|
|
|
665
666
|
// src/components/MobileNav.tsx
|
|
666
|
-
var
|
|
667
|
+
var import_react9 = __toESM(require("react"));
|
|
667
668
|
var import_link4 = __toESM(require("next/link"));
|
|
668
669
|
var import_navigation3 = require("next/navigation");
|
|
669
|
-
var import_react12 = require("@hugeicons/react");
|
|
670
|
-
var import_core_free_icons3 = require("@hugeicons/core-free-icons");
|
|
671
|
-
|
|
672
|
-
// src/components/ConfirmationDialog.tsx
|
|
673
|
-
var import_react9 = __toESM(require("react"));
|
|
674
670
|
var import_react10 = require("@hugeicons/react");
|
|
675
|
-
var
|
|
676
|
-
var ConfirmationDialog = ({
|
|
677
|
-
isOpen,
|
|
678
|
-
title,
|
|
679
|
-
message,
|
|
680
|
-
confirmText = "Confirm",
|
|
681
|
-
cancelText = "Cancel",
|
|
682
|
-
isProcessing = false,
|
|
683
|
-
isDestructive = true,
|
|
684
|
-
onClose,
|
|
685
|
-
onConfirm
|
|
686
|
-
}) => {
|
|
687
|
-
if (!isOpen) return null;
|
|
688
|
-
return /* @__PURE__ */ import_react9.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react9.default.createElement(
|
|
689
|
-
"div",
|
|
690
|
-
{
|
|
691
|
-
className: "absolute inset-0 bg-black/40 ",
|
|
692
|
-
onClick: () => !isProcessing && onClose()
|
|
693
|
-
}
|
|
694
|
-
), /* @__PURE__ */ import_react9.default.createElement("div", { className: "relative w-72 bg-white rounded-2xl flex flex-col items-center overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "p-6 pb-4 text-center w-full" }, /* @__PURE__ */ import_react9.default.createElement("h3", { className: "text-[17px] text-black tracking-tight mb-2" }, title), /* @__PURE__ */ import_react9.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-relaxed px-2" }, message)), /* @__PURE__ */ import_react9.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react9.default.createElement(
|
|
695
|
-
"button",
|
|
696
|
-
{
|
|
697
|
-
onClick: onClose,
|
|
698
|
-
disabled: isProcessing,
|
|
699
|
-
className: "flex-1 py-4 text-[14px] text-neutral-500 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none "
|
|
700
|
-
},
|
|
701
|
-
cancelText
|
|
702
|
-
), /* @__PURE__ */ import_react9.default.createElement(
|
|
703
|
-
"button",
|
|
704
|
-
{
|
|
705
|
-
onClick: onConfirm,
|
|
706
|
-
disabled: isProcessing,
|
|
707
|
-
className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-red-500 hover:bg-red-50" : "text-black hover:bg-neutral-50"}`
|
|
708
|
-
},
|
|
709
|
-
isProcessing ? /* @__PURE__ */ import_react9.default.createElement(import_react10.HugeiconsIcon, { icon: import_core_free_icons2.Loading03Icon, className: "animate-spin", size: 18 }) : confirmText
|
|
710
|
-
))));
|
|
711
|
-
};
|
|
712
|
-
|
|
713
|
-
// src/components/MobileNav.tsx
|
|
714
|
-
var MobileNav = ({
|
|
715
|
-
items,
|
|
716
|
-
web3Address,
|
|
717
|
-
web3Avatar,
|
|
718
|
-
userInitials = "U",
|
|
719
|
-
unreadCount = 0,
|
|
720
|
-
onOpenNotifications,
|
|
721
|
-
onLogout
|
|
722
|
-
}) => {
|
|
671
|
+
var MobileNav = ({ items }) => {
|
|
723
672
|
const pathname = (0, import_navigation3.usePathname)();
|
|
724
|
-
const router = (0, import_navigation3.useRouter)();
|
|
725
|
-
const [isCollapsed, setIsCollapsed] = (0, import_react11.useState)(false);
|
|
726
|
-
const [showLogoutDialog, setShowLogoutDialog] = (0, import_react11.useState)(false);
|
|
727
|
-
const [isLoggingOut, setIsLoggingOut] = (0, import_react11.useState)(false);
|
|
728
673
|
if (!items || items.length === 0) return null;
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
}
|
|
733
|
-
return pathname?.startsWith(href);
|
|
734
|
-
};
|
|
735
|
-
const isChildRoute = pathname !== "/" && pathname !== "/app" && !items.some((item) => item.href === pathname);
|
|
736
|
-
const handleLogout = async () => {
|
|
737
|
-
setIsLoggingOut(true);
|
|
738
|
-
try {
|
|
739
|
-
if (onLogout) await onLogout();
|
|
740
|
-
} finally {
|
|
741
|
-
setIsLoggingOut(false);
|
|
742
|
-
setShowLogoutDialog(false);
|
|
743
|
-
}
|
|
744
|
-
};
|
|
745
|
-
const handleCopyWallet = () => {
|
|
746
|
-
if (web3Address) {
|
|
747
|
-
navigator.clipboard.writeText(web3Address);
|
|
748
|
-
}
|
|
749
|
-
};
|
|
750
|
-
return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(
|
|
751
|
-
"aside",
|
|
752
|
-
{
|
|
753
|
-
className: `hidden md:flex fixed top-0 left-0 h-screen bg-white border-r border-neutral-100 flex-col transition-all duration-300 z-40 ${isCollapsed ? "w-20" : "w-64"}`
|
|
754
|
-
},
|
|
755
|
-
/* @__PURE__ */ import_react11.default.createElement("div", { className: `p-5 flex items-center shrink-0 ${isCollapsed ? "justify-center" : "justify-start"}` }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center gap-3 w-full" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "w-10 h-10 rounded-full flex items-center justify-center shrink-0 border border-neutral-100 bg-neutral-50 overflow-hidden" }, web3Avatar ? /* @__PURE__ */ import_react11.default.createElement("img", { src: web3Avatar, alt: "Avatar", className: "w-full h-full object-cover" }) : /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-[12px] font-medium text-black uppercase" }, userInitials)), !isCollapsed && /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-[14px] font-medium text-black truncate" }, "Aeona Profile"), web3Address && /* @__PURE__ */ import_react11.default.createElement(
|
|
756
|
-
"span",
|
|
757
|
-
{
|
|
758
|
-
onClick: handleCopyWallet,
|
|
759
|
-
className: "text-[10px] text-neutral-500 truncate cursor-pointer hover:text-black transition-colors"
|
|
760
|
-
},
|
|
761
|
-
web3Address
|
|
762
|
-
)))),
|
|
763
|
-
/* @__PURE__ */ import_react11.default.createElement("nav", { className: "flex-1 py-4 flex flex-col gap-2 px-3 overflow-y-auto custom-scrollbar" }, items.map((item) => {
|
|
764
|
-
const active = isItemActive(item.href);
|
|
765
|
-
return /* @__PURE__ */ import_react11.default.createElement(
|
|
766
|
-
import_link4.default,
|
|
767
|
-
{
|
|
768
|
-
key: item.label,
|
|
769
|
-
href: item.href,
|
|
770
|
-
className: `flex items-center gap-3 px-3 py-2.5 rounded-xl transition-all outline-none group shrink-0 ${active ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`,
|
|
771
|
-
title: isCollapsed ? item.label : void 0
|
|
772
|
-
},
|
|
773
|
-
/* @__PURE__ */ import_react11.default.createElement(
|
|
774
|
-
import_react12.HugeiconsIcon,
|
|
775
|
-
{
|
|
776
|
-
icon: item.icon,
|
|
777
|
-
size: 20,
|
|
778
|
-
className: `shrink-0 transition-colors ${active ? "text-black" : "text-neutral-400 group-hover:text-black"}`
|
|
779
|
-
}
|
|
780
|
-
),
|
|
781
|
-
!isCollapsed && /* @__PURE__ */ import_react11.default.createElement("span", { className: `text-[13px] font-medium tracking-wide truncate ${active ? "text-black" : ""}` }, item.label)
|
|
782
|
-
);
|
|
783
|
-
})),
|
|
784
|
-
/* @__PURE__ */ import_react11.default.createElement("div", { className: "p-4 shrink-0 flex flex-col gap-2 border-t border-neutral-50" }, /* @__PURE__ */ import_react11.default.createElement(
|
|
785
|
-
"button",
|
|
786
|
-
{
|
|
787
|
-
onClick: () => setShowLogoutDialog(true),
|
|
788
|
-
className: `flex items-center gap-3 px-3 py-2.5 rounded-xl transition-all outline-none group text-neutral-500 hover:bg-neutral-50 hover:text-red-500 ${isCollapsed ? "justify-center" : ""}`,
|
|
789
|
-
title: isCollapsed ? "Log Out" : void 0
|
|
790
|
-
},
|
|
791
|
-
/* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.LogoutCircle02Icon, size: 20, className: "shrink-0 transition-colors" }),
|
|
792
|
-
!isCollapsed && /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-[13px] font-medium tracking-wide" }, "Log Out")
|
|
793
|
-
), /* @__PURE__ */ import_react11.default.createElement(
|
|
794
|
-
"button",
|
|
795
|
-
{
|
|
796
|
-
onClick: () => setIsCollapsed(!isCollapsed),
|
|
797
|
-
className: `flex items-center gap-3 px-3 py-2.5 rounded-xl transition-all outline-none group text-neutral-400 hover:bg-neutral-50 hover:text-black ${isCollapsed ? "justify-center" : ""}`
|
|
798
|
-
},
|
|
799
|
-
/* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.SidebarLeft01Icon, size: 20, className: "shrink-0 transition-colors" }),
|
|
800
|
-
!isCollapsed && /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-[13px] font-medium tracking-wide" }, "Collapse")
|
|
801
|
-
))
|
|
802
|
-
), /* @__PURE__ */ import_react11.default.createElement("div", { className: "md:hidden fixed top-3 inset-x-0 z-50 flex justify-center pointer-events-none px-2.5" }, /* @__PURE__ */ import_react11.default.createElement("header", { className: "pointer-events-auto w-full max-w-sm backdrop-blur-xl bg-white/65 rounded-full p-2 flex items-center justify-between" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center gap-2" }, isChildRoute && /* @__PURE__ */ import_react11.default.createElement(
|
|
803
|
-
"button",
|
|
804
|
-
{
|
|
805
|
-
onClick: () => router.back(),
|
|
806
|
-
className: "w-8 h-8 rounded-full bg-white flex items-center justify-center text-neutral-600 hover:text-black transition-colors outline-none shrink-0 border border-neutral-100"
|
|
807
|
-
},
|
|
808
|
-
/* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.ArrowLeft01Icon, size: 16 })
|
|
809
|
-
), web3Address && /* @__PURE__ */ import_react11.default.createElement(
|
|
810
|
-
"div",
|
|
811
|
-
{
|
|
812
|
-
onClick: handleCopyWallet,
|
|
813
|
-
className: "flex items-center gap-2 bg-white rounded-full p-1 pr-3 cursor-pointer hover:bg-neutral-50 transition-colors border border-neutral-100"
|
|
814
|
-
},
|
|
815
|
-
web3Avatar ? /* @__PURE__ */ import_react11.default.createElement("img", { src: web3Avatar, alt: "Avatar", className: "w-6 h-6 rounded-full object-cover shrink-0" }) : /* @__PURE__ */ import_react11.default.createElement("div", { className: "w-6 h-6 rounded-full bg-neutral-100 flex items-center justify-center text-[10px] font-medium text-black shrink-0" }, userInitials),
|
|
816
|
-
/* @__PURE__ */ import_react11.default.createElement("span", { className: "text-[12px] font-medium text-black truncate max-w-24 sm:max-w-40" }, web3Address)
|
|
817
|
-
)), /* @__PURE__ */ import_react11.default.createElement(
|
|
818
|
-
"button",
|
|
819
|
-
{
|
|
820
|
-
onClick: onOpenNotifications,
|
|
821
|
-
className: "relative w-8 h-8 shrink-0 bg-white rounded-full flex items-center justify-center text-neutral-600 hover:text-black transition-colors outline-none mr-1 border border-neutral-100"
|
|
822
|
-
},
|
|
823
|
-
/* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: import_core_free_icons3.Notification01Icon, size: 16 }),
|
|
824
|
-
unreadCount > 0 && /* @__PURE__ */ import_react11.default.createElement("span", { className: "absolute top-1 right-1.5 w-2 h-2 bg-blue-600 rounded-full border-2 border-white" })
|
|
825
|
-
))), /* @__PURE__ */ import_react11.default.createElement("div", { className: "md:hidden fixed bottom-6 inset-x-0 z-100 flex justify-center pointer-events-none px-3 animate-in slide-in-from-bottom-8 fade-in duration-500" }, /* @__PURE__ */ import_react11.default.createElement("nav", { className: "pointer-events-auto w-full max-w-sm bg-white/65 backdrop-blur-xl shadow-[0_8px_30px_rgb(0,0,0,0.08)] rounded-full px-6 py-2.5 flex items-center justify-between border border-white/50" }, items.map((item) => {
|
|
826
|
-
const active = isItemActive(item.href);
|
|
827
|
-
return /* @__PURE__ */ import_react11.default.createElement(
|
|
674
|
+
return /* @__PURE__ */ import_react9.default.createElement("div", { className: "fixed bottom-6 inset-x-0 z-100 flex justify-center pointer-events-none px-3 animate-in slide-in-from-bottom-8 fade-in duration-500 md:hidden" }, /* @__PURE__ */ import_react9.default.createElement("nav", { className: "pointer-events-auto w-full max-w-sm bg-white/50 backdrop-blur-xl shadow-[0_8px_30px_rgb(0,0,0,0.08)] rounded-full px-6 py-2.5 flex items-center justify-between" }, items.map((item) => {
|
|
675
|
+
const isActive = item.href === "/" || item.href === "/app" ? pathname === "/" || pathname === "/app" : pathname === item.href || pathname?.startsWith(`${item.href}/`);
|
|
676
|
+
return /* @__PURE__ */ import_react9.default.createElement(
|
|
828
677
|
import_link4.default,
|
|
829
678
|
{
|
|
830
679
|
key: item.label,
|
|
831
680
|
href: item.href,
|
|
832
681
|
className: "flex flex-col items-center justify-center gap-1 min-w-14 transition-transform active:scale-95 outline-none"
|
|
833
682
|
},
|
|
834
|
-
/* @__PURE__ */
|
|
835
|
-
|
|
683
|
+
/* @__PURE__ */ import_react9.default.createElement("div", { className: `transition-colors duration-300 ${isActive ? "text-black" : "text-neutral-400 hover:text-neutral-600"}` }, /* @__PURE__ */ import_react9.default.createElement(
|
|
684
|
+
import_react10.HugeiconsIcon,
|
|
685
|
+
{
|
|
686
|
+
icon: item.icon,
|
|
687
|
+
size: 20
|
|
688
|
+
}
|
|
689
|
+
)),
|
|
690
|
+
/* @__PURE__ */ import_react9.default.createElement(
|
|
691
|
+
"span",
|
|
692
|
+
{
|
|
693
|
+
className: `text-[9px] tracking-wide transition-colors duration-300 ${isActive ? "text-black" : "text-neutral-400"}`
|
|
694
|
+
},
|
|
695
|
+
item.label
|
|
696
|
+
)
|
|
836
697
|
);
|
|
837
|
-
})))
|
|
838
|
-
ConfirmationDialog,
|
|
839
|
-
{
|
|
840
|
-
isOpen: showLogoutDialog,
|
|
841
|
-
title: "Secure Logout",
|
|
842
|
-
message: "Are you sure you want to log out? You will need to authenticate to return.",
|
|
843
|
-
confirmText: "Log Out",
|
|
844
|
-
isDestructive: true,
|
|
845
|
-
isProcessing: isLoggingOut,
|
|
846
|
-
onClose: () => setShowLogoutDialog(false),
|
|
847
|
-
onConfirm: handleLogout
|
|
848
|
-
}
|
|
849
|
-
));
|
|
698
|
+
})));
|
|
850
699
|
};
|
|
851
700
|
|
|
852
701
|
// src/components/UniversalOrganizationPage.tsx
|
|
853
|
-
var
|
|
702
|
+
var import_react15 = __toESM(require("react"));
|
|
854
703
|
var import_react_hot_toast3 = __toESM(require("react-hot-toast"));
|
|
855
704
|
|
|
856
705
|
// src/components/ManagedToaster.tsx
|
|
857
|
-
var
|
|
706
|
+
var import_react11 = __toESM(require("react"));
|
|
858
707
|
var import_react_hot_toast2 = require("react-hot-toast");
|
|
859
708
|
var ManagedToaster = () => {
|
|
860
|
-
return /* @__PURE__ */
|
|
709
|
+
return /* @__PURE__ */ import_react11.default.createElement(
|
|
861
710
|
import_react_hot_toast2.Toaster,
|
|
862
711
|
{
|
|
863
712
|
position: "top-right",
|
|
@@ -889,7 +738,7 @@ var ManagedToaster = () => {
|
|
|
889
738
|
};
|
|
890
739
|
|
|
891
740
|
// src/components/ReusableInputs.tsx
|
|
892
|
-
var
|
|
741
|
+
var import_react12 = __toESM(require("react"));
|
|
893
742
|
var TextInput = ({
|
|
894
743
|
label,
|
|
895
744
|
value,
|
|
@@ -900,7 +749,7 @@ var TextInput = ({
|
|
|
900
749
|
readOnly,
|
|
901
750
|
type = "text",
|
|
902
751
|
onClick
|
|
903
|
-
}) => /* @__PURE__ */
|
|
752
|
+
}) => /* @__PURE__ */ import_react12.default.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ import_react12.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, label), /* @__PURE__ */ import_react12.default.createElement(
|
|
904
753
|
"input",
|
|
905
754
|
{
|
|
906
755
|
type,
|
|
@@ -921,7 +770,7 @@ var NumberInput = ({
|
|
|
921
770
|
placeholder,
|
|
922
771
|
maxLength,
|
|
923
772
|
disabled
|
|
924
|
-
}) => /* @__PURE__ */
|
|
773
|
+
}) => /* @__PURE__ */ import_react12.default.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ import_react12.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, label), /* @__PURE__ */ import_react12.default.createElement(
|
|
925
774
|
"input",
|
|
926
775
|
{
|
|
927
776
|
type: "text",
|
|
@@ -939,9 +788,9 @@ var NumberInput = ({
|
|
|
939
788
|
));
|
|
940
789
|
|
|
941
790
|
// src/components/Banner.tsx
|
|
942
|
-
var
|
|
943
|
-
var
|
|
944
|
-
var
|
|
791
|
+
var import_react13 = __toESM(require("react"));
|
|
792
|
+
var import_react14 = require("@hugeicons/react");
|
|
793
|
+
var import_core_free_icons2 = require("@hugeicons/core-free-icons");
|
|
945
794
|
var Banner = ({
|
|
946
795
|
title,
|
|
947
796
|
message,
|
|
@@ -951,7 +800,7 @@ var Banner = ({
|
|
|
951
800
|
onDismiss,
|
|
952
801
|
action
|
|
953
802
|
}) => {
|
|
954
|
-
const [isVisible, setIsVisible] = (0,
|
|
803
|
+
const [isVisible, setIsVisible] = (0, import_react13.useState)(true);
|
|
955
804
|
if (!isVisible) return null;
|
|
956
805
|
const handleDismiss = () => {
|
|
957
806
|
setIsVisible(false);
|
|
@@ -963,7 +812,7 @@ var Banner = ({
|
|
|
963
812
|
iconColor: "text-emerald-600",
|
|
964
813
|
titleColor: "text-emerald-900",
|
|
965
814
|
msgColor: "text-emerald-700",
|
|
966
|
-
defaultIcon:
|
|
815
|
+
defaultIcon: import_core_free_icons2.CheckmarkBadge01Icon,
|
|
967
816
|
closeHover: "hover:bg-emerald-100 text-emerald-500"
|
|
968
817
|
},
|
|
969
818
|
warning: {
|
|
@@ -971,7 +820,7 @@ var Banner = ({
|
|
|
971
820
|
iconColor: "text-amber-600",
|
|
972
821
|
titleColor: "text-amber-900",
|
|
973
822
|
msgColor: "text-amber-700",
|
|
974
|
-
defaultIcon:
|
|
823
|
+
defaultIcon: import_core_free_icons2.InformationCircleIcon,
|
|
975
824
|
closeHover: "hover:bg-amber-100 text-amber-500"
|
|
976
825
|
},
|
|
977
826
|
alert: {
|
|
@@ -979,27 +828,27 @@ var Banner = ({
|
|
|
979
828
|
iconColor: "text-red-600",
|
|
980
829
|
titleColor: "text-red-900",
|
|
981
830
|
msgColor: "text-red-700",
|
|
982
|
-
defaultIcon:
|
|
831
|
+
defaultIcon: import_core_free_icons2.Alert02Icon,
|
|
983
832
|
closeHover: "hover:bg-red-100 text-red-500"
|
|
984
833
|
}
|
|
985
834
|
};
|
|
986
835
|
const currentConfig = config[type];
|
|
987
836
|
const IconToUse = icon || currentConfig.defaultIcon;
|
|
988
|
-
return /* @__PURE__ */
|
|
837
|
+
return /* @__PURE__ */ import_react13.default.createElement("div", { className: `relative w-full rounded-2xl p-4 flex items-start gap-4 transition-all duration-300 animate-in fade-in slide-in-from-top-2 ${currentConfig.bg}` }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, /* @__PURE__ */ import_react13.default.createElement("h4", { className: `text-sm tracking-tight mb-1 ${currentConfig.titleColor}` }, title), /* @__PURE__ */ import_react13.default.createElement("p", { className: `text-xs leading-relaxed ${currentConfig.msgColor}` }, message), action && /* @__PURE__ */ import_react13.default.createElement("div", { className: "mt-3" }, action)), isDismissible && /* @__PURE__ */ import_react13.default.createElement(
|
|
989
838
|
"button",
|
|
990
839
|
{
|
|
991
840
|
onClick: handleDismiss,
|
|
992
841
|
className: `absolute top-3 right-3 p-1.5 rounded-full transition-colors outline-none shrink-0 ${currentConfig.closeHover}`,
|
|
993
842
|
"aria-label": "Dismiss banner"
|
|
994
843
|
},
|
|
995
|
-
/* @__PURE__ */
|
|
844
|
+
/* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons2.Cancel01Icon, size: 16 })
|
|
996
845
|
));
|
|
997
846
|
};
|
|
998
847
|
|
|
999
848
|
// src/components/UniversalOrganizationPage.tsx
|
|
1000
|
-
var
|
|
1001
|
-
var
|
|
1002
|
-
var InputSpinner2 = () => /* @__PURE__ */
|
|
849
|
+
var import_react16 = require("@hugeicons/react");
|
|
850
|
+
var import_core_free_icons3 = require("@hugeicons/core-free-icons");
|
|
851
|
+
var InputSpinner2 = () => /* @__PURE__ */ import_react15.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react15.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react15.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
|
|
1003
852
|
var UniversalOrganizationPage = ({
|
|
1004
853
|
initialOrgName,
|
|
1005
854
|
initialSlug,
|
|
@@ -1012,13 +861,13 @@ var UniversalOrganizationPage = ({
|
|
|
1012
861
|
onCheckSlugAvailability
|
|
1013
862
|
}) => {
|
|
1014
863
|
const resolvedInitialUsername = initialUsername || initialSlug;
|
|
1015
|
-
const [web3Name, setWeb3Name] = (0,
|
|
1016
|
-
const [username, setUsername] = (0,
|
|
1017
|
-
const [slug, setSlug] = (0,
|
|
1018
|
-
const [isCheckingSlug, setIsCheckingSlug] = (0,
|
|
1019
|
-
const [slugAvailable, setSlugAvailable] = (0,
|
|
1020
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
1021
|
-
(0,
|
|
864
|
+
const [web3Name, setWeb3Name] = (0, import_react15.useState)(initialOrgName);
|
|
865
|
+
const [username, setUsername] = (0, import_react15.useState)(resolvedInitialUsername);
|
|
866
|
+
const [slug, setSlug] = (0, import_react15.useState)(initialSlug);
|
|
867
|
+
const [isCheckingSlug, setIsCheckingSlug] = (0, import_react15.useState)(false);
|
|
868
|
+
const [slugAvailable, setSlugAvailable] = (0, import_react15.useState)(null);
|
|
869
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react15.useState)(false);
|
|
870
|
+
(0, import_react15.useEffect)(() => {
|
|
1022
871
|
setWeb3Name(initialOrgName || "");
|
|
1023
872
|
setSlug(initialSlug || "");
|
|
1024
873
|
setUsername(initialUsername || initialSlug || "");
|
|
@@ -1032,7 +881,7 @@ var UniversalOrganizationPage = ({
|
|
|
1032
881
|
const handleSlugChange = (val) => {
|
|
1033
882
|
setSlug(val.toLowerCase().replace(/[^a-z0-9-]/g, "").replace(/-+/g, "-").substring(0, 50));
|
|
1034
883
|
};
|
|
1035
|
-
(0,
|
|
884
|
+
(0, import_react15.useEffect)(() => {
|
|
1036
885
|
if (!slug || slug === initialSlug) {
|
|
1037
886
|
setSlugAvailable(null);
|
|
1038
887
|
setIsCheckingSlug(false);
|
|
@@ -1087,7 +936,7 @@ var UniversalOrganizationPage = ({
|
|
|
1087
936
|
};
|
|
1088
937
|
const hasChanges = web3Name !== initialOrgName || slug !== initialSlug || username !== resolvedInitialUsername;
|
|
1089
938
|
const isSaveDisabled = isSubmitting || isReadOnly || isCheckingSlug || !hasChanges || web3Name.length < 3 || slug.length < 3 || username.length < 3 || slug !== initialSlug && slugAvailable === false;
|
|
1090
|
-
return /* @__PURE__ */
|
|
939
|
+
return /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-5xl 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(
|
|
1091
940
|
TextInput,
|
|
1092
941
|
{
|
|
1093
942
|
label: "Display Name",
|
|
@@ -1097,7 +946,7 @@ var UniversalOrganizationPage = ({
|
|
|
1097
946
|
placeholder: "Sovereign User",
|
|
1098
947
|
maxLength: 50
|
|
1099
948
|
}
|
|
1100
|
-
), /* @__PURE__ */
|
|
949
|
+
), /* @__PURE__ */ import_react15.default.createElement(
|
|
1101
950
|
TextInput,
|
|
1102
951
|
{
|
|
1103
952
|
label: "Digital Identity",
|
|
@@ -1107,7 +956,7 @@ var UniversalOrganizationPage = ({
|
|
|
1107
956
|
placeholder: "sovereignuser",
|
|
1108
957
|
maxLength: 30
|
|
1109
958
|
}
|
|
1110
|
-
), /* @__PURE__ */
|
|
959
|
+
), /* @__PURE__ */ import_react15.default.createElement("div", { className: "space-y-1.5 relative w-full" }, /* @__PURE__ */ import_react15.default.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block" }, "Wallet Username"), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex items-center relative w-full border-b border-neutral-100 focus-within:border-black transition-all duration-300" }, /* @__PURE__ */ import_react15.default.createElement(
|
|
1111
960
|
"input",
|
|
1112
961
|
{
|
|
1113
962
|
type: "text",
|
|
@@ -1119,7 +968,7 @@ var UniversalOrganizationPage = ({
|
|
|
1119
968
|
className: "w-full px-2 py-3 text-sm bg-transparent text-black outline-none disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1120
969
|
placeholder: "sovereign-user-handle"
|
|
1121
970
|
}
|
|
1122
|
-
), /* @__PURE__ */
|
|
971
|
+
), /* @__PURE__ */ import_react15.default.createElement("span", { className: "text-neutral-400 text-sm py-3 pr-8 shrink-0 whitespace-nowrap" }, slugPrefixUrl), /* @__PURE__ */ import_react15.default.createElement("div", { className: "absolute right-2 top-1/2 -translate-y-1/2" }, isCheckingSlug && /* @__PURE__ */ import_react15.default.createElement(InputSpinner2, null), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === false && /* @__PURE__ */ import_react15.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-red-100" }, /* @__PURE__ */ import_react15.default.createElement("svg", { className: "w-2 h-2 text-red-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react15.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" }))), !isCheckingSlug && !isReadOnly && slug !== initialSlug && slug.length >= 3 && slugAvailable === true && /* @__PURE__ */ import_react15.default.createElement("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-green-100" }, /* @__PURE__ */ import_react15.default.createElement("svg", { className: "w-2 h-2 text-green-600", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ import_react15.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.707 5.293a1 1 0 00-1.414 0L8 12.586 4.707 9.293a1 1 0 10-1.414 1.414l4 4a1 1 0 001.414 0l8-8a1 1 0 000-1.414z" })))))), /* @__PURE__ */ import_react15.default.createElement("div", { className: "pt-8 mt-2 flex items-center gap-4" }, /* @__PURE__ */ import_react15.default.createElement(
|
|
1123
972
|
ThreeDActionButton,
|
|
1124
973
|
{
|
|
1125
974
|
type: "submit",
|
|
@@ -1128,7 +977,7 @@ var UniversalOrganizationPage = ({
|
|
|
1128
977
|
className: "min-w-32"
|
|
1129
978
|
},
|
|
1130
979
|
"Save Changes"
|
|
1131
|
-
), hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */
|
|
980
|
+
), hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react15.default.createElement(
|
|
1132
981
|
"button",
|
|
1133
982
|
{
|
|
1134
983
|
type: "button",
|
|
@@ -1144,10 +993,10 @@ var UniversalOrganizationPage = ({
|
|
|
1144
993
|
};
|
|
1145
994
|
|
|
1146
995
|
// src/components/UniversalProfileSettings.tsx
|
|
1147
|
-
var
|
|
996
|
+
var import_react17 = __toESM(require("react"));
|
|
1148
997
|
var import_react_hot_toast4 = __toESM(require("react-hot-toast"));
|
|
1149
|
-
var
|
|
1150
|
-
var
|
|
998
|
+
var import_react18 = require("@hugeicons/react");
|
|
999
|
+
var import_core_free_icons4 = require("@hugeicons/core-free-icons");
|
|
1151
1000
|
var UniversalProfileSettings = ({
|
|
1152
1001
|
initialFirstName,
|
|
1153
1002
|
initialLastName,
|
|
@@ -1161,15 +1010,15 @@ var UniversalProfileSettings = ({
|
|
|
1161
1010
|
onSavePin,
|
|
1162
1011
|
onSaveProfile
|
|
1163
1012
|
}) => {
|
|
1164
|
-
const [firstName, setFirstName] = (0,
|
|
1165
|
-
const [lastName, setLastName] = (0,
|
|
1166
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
1167
|
-
const [isPinModalOpen, setIsPinModalOpen] = (0,
|
|
1168
|
-
const [oldPin, setOldPin] = (0,
|
|
1169
|
-
const [newPin, setNewPin] = (0,
|
|
1170
|
-
const [confirmPin, setConfirmPin] = (0,
|
|
1171
|
-
const [isPinSubmitting, setIsPinSubmitting] = (0,
|
|
1172
|
-
(0,
|
|
1013
|
+
const [firstName, setFirstName] = (0, import_react17.useState)(initialFirstName);
|
|
1014
|
+
const [lastName, setLastName] = (0, import_react17.useState)(initialLastName);
|
|
1015
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react17.useState)(false);
|
|
1016
|
+
const [isPinModalOpen, setIsPinModalOpen] = (0, import_react17.useState)(false);
|
|
1017
|
+
const [oldPin, setOldPin] = (0, import_react17.useState)("");
|
|
1018
|
+
const [newPin, setNewPin] = (0, import_react17.useState)("");
|
|
1019
|
+
const [confirmPin, setConfirmPin] = (0, import_react17.useState)("");
|
|
1020
|
+
const [isPinSubmitting, setIsPinSubmitting] = (0, import_react17.useState)(false);
|
|
1021
|
+
(0, import_react17.useEffect)(() => {
|
|
1173
1022
|
setFirstName(initialFirstName || "");
|
|
1174
1023
|
setLastName(initialLastName || "");
|
|
1175
1024
|
}, [initialFirstName, initialLastName]);
|
|
@@ -1235,7 +1084,7 @@ var UniversalProfileSettings = ({
|
|
|
1235
1084
|
};
|
|
1236
1085
|
const hasChanges = firstName !== initialFirstName || lastName !== initialLastName;
|
|
1237
1086
|
const isSaveDisabled = isSubmitting || isReadOnly || !hasChanges || firstName.trim().length === 0 || lastName.trim().length === 0;
|
|
1238
|
-
return /* @__PURE__ */
|
|
1087
|
+
return /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col max-w-5xl rounded-2xl p-6 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(
|
|
1239
1088
|
TextInput,
|
|
1240
1089
|
{
|
|
1241
1090
|
label: "First Name",
|
|
@@ -1244,7 +1093,7 @@ var UniversalProfileSettings = ({
|
|
|
1244
1093
|
disabled: isReadOnly || isSubmitting,
|
|
1245
1094
|
placeholder: "System"
|
|
1246
1095
|
}
|
|
1247
|
-
)), /* @__PURE__ */
|
|
1096
|
+
)), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react17.default.createElement(
|
|
1248
1097
|
TextInput,
|
|
1249
1098
|
{
|
|
1250
1099
|
label: "Last Name",
|
|
@@ -1253,7 +1102,7 @@ var UniversalProfileSettings = ({
|
|
|
1253
1102
|
disabled: isReadOnly || isSubmitting,
|
|
1254
1103
|
placeholder: "Admin"
|
|
1255
1104
|
}
|
|
1256
|
-
))), /* @__PURE__ */
|
|
1105
|
+
))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react17.default.createElement(
|
|
1257
1106
|
TextInput,
|
|
1258
1107
|
{
|
|
1259
1108
|
label: "Email ID",
|
|
@@ -1262,7 +1111,7 @@ var UniversalProfileSettings = ({
|
|
|
1262
1111
|
},
|
|
1263
1112
|
disabled: true
|
|
1264
1113
|
}
|
|
1265
|
-
), /* @__PURE__ */
|
|
1114
|
+
), /* @__PURE__ */ import_react17.default.createElement("p", { className: "text-[11px] text-neutral-500 mt-1 truncate" }, "To change your email address, please contact support.")), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between pt-8 mt-2 gap-6 sm:gap-4" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block truncate" }, "Account Status"), /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-xs text-black block truncate" }, accountStatus)), /* @__PURE__ */ import_react17.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block truncate" }, "Member Since"), /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-xs text-black block truncate" }, memberSince ? new Date(memberSince).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }) : "N/A")), /* @__PURE__ */ import_react17.default.createElement("div", { className: "min-w-0 pl-4" }, /* @__PURE__ */ import_react17.default.createElement(
|
|
1266
1115
|
"button",
|
|
1267
1116
|
{
|
|
1268
1117
|
type: "button",
|
|
@@ -1270,8 +1119,8 @@ var UniversalProfileSettings = ({
|
|
|
1270
1119
|
"aria-label": "PIN Settings",
|
|
1271
1120
|
className: "w-9 h-9 flex items-center justify-center border border-neutral-200 rounded-full text-black hover:bg-neutral-50 transition-colors outline-none"
|
|
1272
1121
|
},
|
|
1273
|
-
/* @__PURE__ */
|
|
1274
|
-
))), /* @__PURE__ */
|
|
1122
|
+
/* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons4.LockKeyIcon, size: 17, className: "text-black" })
|
|
1123
|
+
))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasChanges && !isSubmitting && !isReadOnly && /* @__PURE__ */ import_react17.default.createElement(
|
|
1275
1124
|
"button",
|
|
1276
1125
|
{
|
|
1277
1126
|
type: "button",
|
|
@@ -1282,7 +1131,7 @@ var UniversalProfileSettings = ({
|
|
|
1282
1131
|
className: "text-[11px] tracking-widest text-neutral-400 hover:text-black transition-colors w-full sm:w-auto py-2 sm:py-0 outline-none"
|
|
1283
1132
|
},
|
|
1284
1133
|
"Cancel"
|
|
1285
|
-
), /* @__PURE__ */
|
|
1134
|
+
), /* @__PURE__ */ import_react17.default.createElement(
|
|
1286
1135
|
ThreeDActionButton,
|
|
1287
1136
|
{
|
|
1288
1137
|
type: "submit",
|
|
@@ -1291,7 +1140,7 @@ var UniversalProfileSettings = ({
|
|
|
1291
1140
|
className: "min-w-32 w-full sm:w-auto"
|
|
1292
1141
|
},
|
|
1293
1142
|
"Save Changes"
|
|
1294
|
-
))))), isPinModalOpen && /* @__PURE__ */
|
|
1143
|
+
))))), isPinModalOpen && /* @__PURE__ */ import_react17.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "absolute inset-0 bg-black/40", onClick: closePinModal }), /* @__PURE__ */ import_react17.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_react17.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react17.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, hasPin ? "Change PIN" : "Create PIN"), /* @__PURE__ */ import_react17.default.createElement("button", { onClick: closePinModal, disabled: isPinSubmitting, className: "text-neutral-400 hover:text-black transition-colors outline-none disabled:opacity-50" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons4.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react17.default.createElement("div", { className: "p-6" }, isPinLoading ? /* @__PURE__ */ import_react17.default.createElement("div", { className: "flex flex-col items-center justify-center py-10" }, /* @__PURE__ */ import_react17.default.createElement(import_react18.HugeiconsIcon, { icon: import_core_free_icons4.Loading03Icon, size: 28, className: "animate-spin text-neutral-400 mb-4" })) : /* @__PURE__ */ import_react17.default.createElement("form", { onSubmit: handlePinSubmit, className: "flex flex-col gap-6" }, hasPin && /* @__PURE__ */ import_react17.default.createElement(
|
|
1295
1144
|
TextInput,
|
|
1296
1145
|
{
|
|
1297
1146
|
type: "password",
|
|
@@ -1302,7 +1151,7 @@ var UniversalProfileSettings = ({
|
|
|
1302
1151
|
onChange: (val) => handlePinInput(val, setOldPin),
|
|
1303
1152
|
placeholder: "\u2022\u2022\u2022\u2022"
|
|
1304
1153
|
}
|
|
1305
|
-
), /* @__PURE__ */
|
|
1154
|
+
), /* @__PURE__ */ import_react17.default.createElement(
|
|
1306
1155
|
TextInput,
|
|
1307
1156
|
{
|
|
1308
1157
|
type: "password",
|
|
@@ -1313,7 +1162,7 @@ var UniversalProfileSettings = ({
|
|
|
1313
1162
|
onChange: (val) => handlePinInput(val, setNewPin),
|
|
1314
1163
|
placeholder: "\u2022\u2022\u2022\u2022"
|
|
1315
1164
|
}
|
|
1316
|
-
), /* @__PURE__ */
|
|
1165
|
+
), /* @__PURE__ */ import_react17.default.createElement(
|
|
1317
1166
|
TextInput,
|
|
1318
1167
|
{
|
|
1319
1168
|
type: "password",
|
|
@@ -1324,7 +1173,7 @@ var UniversalProfileSettings = ({
|
|
|
1324
1173
|
onChange: (val) => handlePinInput(val, setConfirmPin),
|
|
1325
1174
|
placeholder: "\u2022\u2022\u2022\u2022"
|
|
1326
1175
|
}
|
|
1327
|
-
), /* @__PURE__ */
|
|
1176
|
+
), /* @__PURE__ */ import_react17.default.createElement("div", { className: "pt-2" }, /* @__PURE__ */ import_react17.default.createElement(
|
|
1328
1177
|
ThreeDActionButton,
|
|
1329
1178
|
{
|
|
1330
1179
|
type: "submit",
|
|
@@ -1337,14 +1186,14 @@ var UniversalProfileSettings = ({
|
|
|
1337
1186
|
};
|
|
1338
1187
|
|
|
1339
1188
|
// src/components/UniversalErrorView.tsx
|
|
1340
|
-
var import_react23 = __toESM(require("react"));
|
|
1341
|
-
var import_react24 = require("@hugeicons/react");
|
|
1342
|
-
var import_core_free_icons8 = require("@hugeicons/core-free-icons");
|
|
1343
|
-
|
|
1344
|
-
// src/components/PageSpinner.tsx
|
|
1345
1189
|
var import_react21 = __toESM(require("react"));
|
|
1346
1190
|
var import_react22 = require("@hugeicons/react");
|
|
1347
|
-
var
|
|
1191
|
+
var import_core_free_icons6 = require("@hugeicons/core-free-icons");
|
|
1192
|
+
|
|
1193
|
+
// src/components/PageSpinner.tsx
|
|
1194
|
+
var import_react19 = __toESM(require("react"));
|
|
1195
|
+
var import_react20 = require("@hugeicons/react");
|
|
1196
|
+
var import_core_free_icons5 = require("@hugeicons/core-free-icons");
|
|
1348
1197
|
var PageSpinner = ({
|
|
1349
1198
|
className = "",
|
|
1350
1199
|
iconClassName = "text-black",
|
|
@@ -1352,10 +1201,10 @@ var PageSpinner = ({
|
|
|
1352
1201
|
}) => {
|
|
1353
1202
|
return (
|
|
1354
1203
|
// z-[100] ensures it sits above absolute headers and modals
|
|
1355
|
-
/* @__PURE__ */
|
|
1356
|
-
|
|
1204
|
+
/* @__PURE__ */ import_react19.default.createElement("div", { className: `fixed inset-0 z-100 flex flex-col items-center justify-center w-full h-full pointer-events-none ${className}` }, /* @__PURE__ */ import_react19.default.createElement(
|
|
1205
|
+
import_react20.HugeiconsIcon,
|
|
1357
1206
|
{
|
|
1358
|
-
icon:
|
|
1207
|
+
icon: import_core_free_icons5.Loading03Icon,
|
|
1359
1208
|
size,
|
|
1360
1209
|
className: `animate-spin mb-4 ${iconClassName}`
|
|
1361
1210
|
}
|
|
@@ -1375,7 +1224,7 @@ var UniversalErrorView = ({
|
|
|
1375
1224
|
returnLabel = "Return to Workspace"
|
|
1376
1225
|
}) => {
|
|
1377
1226
|
if (isBooting || isLoading && !activeData) {
|
|
1378
|
-
return /* @__PURE__ */
|
|
1227
|
+
return /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex items-center justify-center h-screen w-full bg-white" }, /* @__PURE__ */ import_react21.default.createElement(PageSpinner, null));
|
|
1379
1228
|
}
|
|
1380
1229
|
if (!isLoading && (!activeData || activeError)) {
|
|
1381
1230
|
const errorString = typeof activeError === "string" ? activeError : JSON.stringify(activeError || "");
|
|
@@ -1386,7 +1235,7 @@ var UniversalErrorView = ({
|
|
|
1386
1235
|
const apiMessage = typeof activeError === "string" && activeError.trim() !== "" ? activeError : null;
|
|
1387
1236
|
let title = "Oops Connection Error";
|
|
1388
1237
|
let description = apiMessage || `We could not load your request. Please check your connection and try again.`;
|
|
1389
|
-
let IconComponent =
|
|
1238
|
+
let IconComponent = import_core_free_icons6.ConfusedIcon;
|
|
1390
1239
|
if (isNotFoundError) {
|
|
1391
1240
|
title = "Oops its not your fault";
|
|
1392
1241
|
description = apiMessage || `We could not reach the ${envName} you just loaded. Our team has been notified.`;
|
|
@@ -1394,7 +1243,7 @@ var UniversalErrorView = ({
|
|
|
1394
1243
|
title = "Access Restricted";
|
|
1395
1244
|
description = apiMessage || `You have insufficient permissions to view this ${envName}. Please contact your administrator.`;
|
|
1396
1245
|
}
|
|
1397
|
-
return /* @__PURE__ */
|
|
1246
|
+
return /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex flex-col items-center justify-center h-screen w-full px-4 animate-in fade-in duration-500" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "mb-4 flex justify-center" }, /* @__PURE__ */ import_react21.default.createElement(import_react22.HugeiconsIcon, { icon: IconComponent, size: 48, className: "text-neutral-300" })), /* @__PURE__ */ import_react21.default.createElement("h2", { className: "text-lg text-black tracking-tight " }, title), /* @__PURE__ */ import_react21.default.createElement("p", { className: "text-xs mt-2 mb-8 text-neutral-500 max-w-sm text-center leading-relaxed" }, description), /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-3 w-full justify-center sm:w-auto" }, isNotFoundError || isPermissionError ? /* @__PURE__ */ import_react21.default.createElement(
|
|
1398
1247
|
"button",
|
|
1399
1248
|
{
|
|
1400
1249
|
onClick: () => window.location.href = returnUrl,
|
|
@@ -1403,14 +1252,14 @@ var UniversalErrorView = ({
|
|
|
1403
1252
|
returnLabel
|
|
1404
1253
|
) : (
|
|
1405
1254
|
// Soft errors (Network timeouts) allow them to retry or optionally retreat
|
|
1406
|
-
/* @__PURE__ */
|
|
1255
|
+
/* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, envName.toLowerCase().includes("application") && /* @__PURE__ */ import_react21.default.createElement(
|
|
1407
1256
|
"button",
|
|
1408
1257
|
{
|
|
1409
1258
|
onClick: () => window.location.href = returnUrl,
|
|
1410
1259
|
className: "px-6 py-2 bg-transparent border border-neutral-200 text-neutral-500 hover:text-black hover:bg-neutral-50 rounded-full text-[11px] tracking-widest transition-colors w-full sm:w-auto outline-none "
|
|
1411
1260
|
},
|
|
1412
1261
|
"Back Home"
|
|
1413
|
-
), /* @__PURE__ */
|
|
1262
|
+
), /* @__PURE__ */ import_react21.default.createElement(
|
|
1414
1263
|
"button",
|
|
1415
1264
|
{
|
|
1416
1265
|
onClick: onRetry,
|
|
@@ -1425,11 +1274,11 @@ var UniversalErrorView = ({
|
|
|
1425
1274
|
};
|
|
1426
1275
|
|
|
1427
1276
|
// src/components/UniversalTransactionPage.tsx
|
|
1428
|
-
var
|
|
1429
|
-
var
|
|
1277
|
+
var import_react23 = __toESM(require("react"));
|
|
1278
|
+
var import_react24 = require("@hugeicons/react");
|
|
1430
1279
|
var import_react_hot_toast5 = __toESM(require("react-hot-toast"));
|
|
1431
|
-
var
|
|
1432
|
-
var PageSpinner2 = () => /* @__PURE__ */
|
|
1280
|
+
var import_core_free_icons7 = require("@hugeicons/core-free-icons");
|
|
1281
|
+
var PageSpinner2 = () => /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
1433
1282
|
var formatDate = (dateInput) => {
|
|
1434
1283
|
const d = new Date(dateInput);
|
|
1435
1284
|
const day = d.getDate();
|
|
@@ -1464,15 +1313,15 @@ var UniversalTransactionPage = ({
|
|
|
1464
1313
|
onReportTransaction,
|
|
1465
1314
|
onGenerateReceipt
|
|
1466
1315
|
}) => {
|
|
1467
|
-
const [selectedTransaction, setSelectedTransaction] = (0,
|
|
1468
|
-
const [isGeneratingReceipt, setIsGeneratingReceipt] = (0,
|
|
1469
|
-
const [localSearchQuery, setLocalSearchQuery] = (0,
|
|
1470
|
-
const [isTyping, setIsTyping] = (0,
|
|
1471
|
-
const [isDirectionModalOpen, setIsDirectionModalOpen] = (0,
|
|
1472
|
-
const [isTypeModalOpen, setIsTypeModalOpen] = (0,
|
|
1473
|
-
const directionDropdownRef = (0,
|
|
1474
|
-
const typeDropdownRef = (0,
|
|
1475
|
-
(0,
|
|
1316
|
+
const [selectedTransaction, setSelectedTransaction] = (0, import_react23.useState)(null);
|
|
1317
|
+
const [isGeneratingReceipt, setIsGeneratingReceipt] = (0, import_react23.useState)(false);
|
|
1318
|
+
const [localSearchQuery, setLocalSearchQuery] = (0, import_react23.useState)(searchQuery);
|
|
1319
|
+
const [isTyping, setIsTyping] = (0, import_react23.useState)(false);
|
|
1320
|
+
const [isDirectionModalOpen, setIsDirectionModalOpen] = (0, import_react23.useState)(false);
|
|
1321
|
+
const [isTypeModalOpen, setIsTypeModalOpen] = (0, import_react23.useState)(false);
|
|
1322
|
+
const directionDropdownRef = (0, import_react23.useRef)(null);
|
|
1323
|
+
const typeDropdownRef = (0, import_react23.useRef)(null);
|
|
1324
|
+
(0, import_react23.useEffect)(() => {
|
|
1476
1325
|
function handleClickOutside(event) {
|
|
1477
1326
|
if (directionDropdownRef.current && !directionDropdownRef.current.contains(event.target)) {
|
|
1478
1327
|
setIsDirectionModalOpen(false);
|
|
@@ -1484,7 +1333,7 @@ var UniversalTransactionPage = ({
|
|
|
1484
1333
|
document.addEventListener("mousedown", handleClickOutside);
|
|
1485
1334
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
1486
1335
|
}, []);
|
|
1487
|
-
(0,
|
|
1336
|
+
(0, import_react23.useEffect)(() => {
|
|
1488
1337
|
setIsTyping(true);
|
|
1489
1338
|
const handler = setTimeout(() => {
|
|
1490
1339
|
onSearchChange(localSearchQuery);
|
|
@@ -1492,7 +1341,7 @@ var UniversalTransactionPage = ({
|
|
|
1492
1341
|
}, 600);
|
|
1493
1342
|
return () => clearTimeout(handler);
|
|
1494
1343
|
}, [localSearchQuery, onSearchChange]);
|
|
1495
|
-
(0,
|
|
1344
|
+
(0, import_react23.useEffect)(() => {
|
|
1496
1345
|
if (searchQuery === "" && localSearchQuery !== "") {
|
|
1497
1346
|
setLocalSearchQuery("");
|
|
1498
1347
|
}
|
|
@@ -1514,63 +1363,77 @@ var UniversalTransactionPage = ({
|
|
|
1514
1363
|
setIsGeneratingReceipt(false);
|
|
1515
1364
|
}
|
|
1516
1365
|
};
|
|
1366
|
+
const handleCopyReference = async (reference) => {
|
|
1367
|
+
try {
|
|
1368
|
+
await navigator.clipboard.writeText(reference);
|
|
1369
|
+
import_react_hot_toast5.default.success("Copied");
|
|
1370
|
+
} catch {
|
|
1371
|
+
}
|
|
1372
|
+
};
|
|
1517
1373
|
const isListLoading = isLoading || isTyping;
|
|
1518
|
-
return /* @__PURE__ */
|
|
1374
|
+
return /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-col gap-6 animate-in max-w-5xl fade-in duration-300" }, /* @__PURE__ */ import_react23.default.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-row flex-nowrap items-center justify-between gap-4 w-full" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "relative flex-1 min-w-0 max-w-full" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react23.default.createElement(
|
|
1519
1375
|
"input",
|
|
1520
1376
|
{
|
|
1521
1377
|
type: "text",
|
|
1522
1378
|
placeholder: "Search reference or amount...",
|
|
1523
1379
|
value: localSearchQuery,
|
|
1524
1380
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
1525
|
-
className: "w-full pl-10 pr-4 py-2 bg-white
|
|
1381
|
+
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-[13px] text-black placeholder-neutral-400 outline-none transition-colors focus:border-black"
|
|
1526
1382
|
}
|
|
1527
|
-
)), /* @__PURE__ */
|
|
1383
|
+
)), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-3 w-auto pb-0 shrink-0" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
1528
1384
|
"button",
|
|
1529
1385
|
{
|
|
1530
1386
|
onClick: () => setIsDirectionModalOpen(true),
|
|
1531
1387
|
"aria-label": "Filter by payment type",
|
|
1532
1388
|
className: "flex items-center justify-center bg-white w-10 h-10 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
1533
1389
|
},
|
|
1534
|
-
/* @__PURE__ */
|
|
1535
|
-
), /* @__PURE__ */
|
|
1390
|
+
/* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.SearchList02Icon, size: 16 })
|
|
1391
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
1536
1392
|
"button",
|
|
1537
1393
|
{
|
|
1538
1394
|
onClick: () => setIsTypeModalOpen(true),
|
|
1539
1395
|
"aria-label": "Filter by transaction type",
|
|
1540
1396
|
className: "flex items-center justify-center bg-white w-10 h-10 rounded-full text-neutral-500 hover:text-black transition-colors outline-none"
|
|
1541
1397
|
},
|
|
1542
|
-
/* @__PURE__ */
|
|
1543
|
-
))), /* @__PURE__ */
|
|
1398
|
+
/* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.ListSettingIcon, size: 16 })
|
|
1399
|
+
))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ import_react23.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "w-full overflow-hidden" }, isListLoading ? /* @__PURE__ */ import_react23.default.createElement(PageSpinner2, null) : /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react23.default.createElement("div", null, transactions.length === 0 ? /* @__PURE__ */ import_react23.default.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No transactions found") : transactions.map((tx) => /* @__PURE__ */ import_react23.default.createElement(
|
|
1544
1400
|
"div",
|
|
1545
1401
|
{
|
|
1546
1402
|
key: tx.id,
|
|
1547
1403
|
onClick: () => setSelectedTransaction(tx),
|
|
1548
1404
|
className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
1549
1405
|
},
|
|
1550
|
-
/* @__PURE__ */
|
|
1551
|
-
/* @__PURE__ */
|
|
1552
|
-
))), !hidePagination && /* @__PURE__ */
|
|
1406
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: `w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black` }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: tx.direction === "CREDIT" ? import_core_free_icons7.ArrowDownRight01Icon : import_core_free_icons7.ArrowUpRight01Icon, size: 18 })), /* @__PURE__ */ import_react23.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react23.default.createElement("p", { className: "text-[13px] text-black truncate" }, getDisplayName(tx)), /* @__PURE__ */ import_react23.default.createElement("p", { className: `text-[12px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, tx.direction === "CREDIT" ? "+" : "-", tx.amount, " ", tx.currency))),
|
|
1407
|
+
/* @__PURE__ */ import_react23.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] text-neutral-400" }, formatDate(tx.createdAt)), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] text-neutral-400 capitalize" }, tx.direction.toLowerCase()))
|
|
1408
|
+
))), !hidePagination && /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center justify-between pt-6 mt-2 " }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-[0.2em]" }, "Page ", currentPage, " of ", totalPages === 0 ? 1 : totalPages), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
1553
1409
|
"button",
|
|
1554
1410
|
{
|
|
1555
1411
|
onClick: () => onPageChange(currentPage - 1),
|
|
1556
1412
|
disabled: currentPage <= 1 || isListLoading,
|
|
1557
1413
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
1558
1414
|
},
|
|
1559
|
-
/* @__PURE__ */
|
|
1560
|
-
), /* @__PURE__ */
|
|
1415
|
+
/* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.ArrowLeft01Icon, size: 14 })
|
|
1416
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
1561
1417
|
"button",
|
|
1562
1418
|
{
|
|
1563
1419
|
onClick: () => onPageChange(currentPage + 1),
|
|
1564
1420
|
disabled: currentPage >= totalPages || isListLoading || totalPages === 0,
|
|
1565
1421
|
className: "p-2 bg-white border border-neutral-200 rounded-full text-black hover:bg-neutral-50 disabled:opacity-30 disabled:cursor-not-allowed transition-all outline-none"
|
|
1566
1422
|
},
|
|
1567
|
-
/* @__PURE__ */
|
|
1568
|
-
)))))), selectedTransaction && /* @__PURE__ */
|
|
1423
|
+
/* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.ArrowRight01Icon, size: 14 })
|
|
1424
|
+
)))))), selectedTransaction && /* @__PURE__ */ import_react23.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedTransaction(null) }), /* @__PURE__ */ import_react23.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 max-h-[90vh]" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react23.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Details"), /* @__PURE__ */ import_react23.default.createElement("button", { onClick: () => setSelectedTransaction(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-col items-center justify-center mb-4" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: `w-12 h-12 rounded-full flex items-center justify-center mb-4 bg-neutral-100 text-black` }, /* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: selectedTransaction.direction === "CREDIT" ? import_core_free_icons7.ArrowDownRight01Icon : import_core_free_icons7.ArrowUpRight01Icon, size: 20 })), /* @__PURE__ */ import_react23.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedTransaction.direction === "CREDIT" ? "+" : "-", selectedTransaction.amount, " ", selectedTransaction.currency), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full bg-neutral-50" }, selectedTransaction.status)), /* @__PURE__ */ import_react23.default.createElement("div", { className: "grid grid-cols-1 gap-y-8 gap-x-4 mb-10 mt-6" }, /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Reference ID"), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-2 min-w-0" }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black truncate min-w-0 block" }, selectedTransaction.reference), /* @__PURE__ */ import_react23.default.createElement(
|
|
1425
|
+
"button",
|
|
1426
|
+
{
|
|
1427
|
+
onClick: () => handleCopyReference(selectedTransaction.reference),
|
|
1428
|
+
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1429
|
+
},
|
|
1430
|
+
/* @__PURE__ */ import_react23.default.createElement(import_react24.HugeiconsIcon, { icon: import_core_free_icons7.Copy01Icon, size: 14 })
|
|
1431
|
+
))), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Date & Time"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black" }, formatDate(selectedTransaction.createdAt), " at ", formatTime(selectedTransaction.createdAt))), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transaction Type"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.type.replace("_", " ").toLowerCase())), /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Flow Direction"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black capitalize" }, selectedTransaction.direction.toLowerCase())), selectedTransaction.metadata?.fromAddress && selectedTransaction.metadata?.toAddress && /* @__PURE__ */ import_react23.default.createElement("div", null, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Transfer Route"), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex items-center gap-2 text-[13px] text-black" }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "truncate " }, truncateAddress(String(selectedTransaction.metadata.fromAddress))), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-neutral-400" }, "\u2192"), /* @__PURE__ */ import_react23.default.createElement("span", { className: "truncate " }, truncateAddress(String(selectedTransaction.metadata.toAddress))))), selectedTransaction.metadata && Object.entries(selectedTransaction.metadata).map(([key, value]) => {
|
|
1569
1432
|
if (key === "fromAddress" || key === "toAddress") return null;
|
|
1570
1433
|
if (value === null || value === void 0 || typeof value === "object") return null;
|
|
1571
1434
|
const formattedKey = key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase());
|
|
1572
|
-
return /* @__PURE__ */
|
|
1573
|
-
})), /* @__PURE__ */
|
|
1435
|
+
return /* @__PURE__ */ import_react23.default.createElement("div", { key }, /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, formattedKey), /* @__PURE__ */ import_react23.default.createElement("span", { className: "text-[13px] text-black break-all" }, String(value)));
|
|
1436
|
+
})), /* @__PURE__ */ import_react23.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
1574
1437
|
ThreeDActionButton,
|
|
1575
1438
|
{
|
|
1576
1439
|
onClick: handleGenerateReceipt,
|
|
@@ -1578,14 +1441,14 @@ var UniversalTransactionPage = ({
|
|
|
1578
1441
|
className: "w-full py-3 text-[14px]"
|
|
1579
1442
|
},
|
|
1580
1443
|
"Generate Receipt"
|
|
1581
|
-
), /* @__PURE__ */
|
|
1444
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
1582
1445
|
"button",
|
|
1583
1446
|
{
|
|
1584
1447
|
onClick: () => onReportTransaction && onReportTransaction(selectedTransaction),
|
|
1585
1448
|
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-[13px] tracking-wide mt-2"
|
|
1586
1449
|
},
|
|
1587
1450
|
"Report Transaction"
|
|
1588
|
-
), selectedTransaction.type === "WALLET_TRANSACTION" && /* @__PURE__ */
|
|
1451
|
+
), selectedTransaction.type === "WALLET_TRANSACTION" && /* @__PURE__ */ import_react23.default.createElement(
|
|
1589
1452
|
"a",
|
|
1590
1453
|
{
|
|
1591
1454
|
href: `https://basescan.org/tx/${selectedTransaction.reference}`,
|
|
@@ -1594,7 +1457,7 @@ var UniversalTransactionPage = ({
|
|
|
1594
1457
|
className: "w-full flex items-center justify-center py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none text-[13px] tracking-wide mt-2"
|
|
1595
1458
|
},
|
|
1596
1459
|
"View in block explorer"
|
|
1597
|
-
))))), isDirectionModalOpen && /* @__PURE__ */
|
|
1460
|
+
))))), isDirectionModalOpen && /* @__PURE__ */ import_react23.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setIsDirectionModalOpen(false) }), /* @__PURE__ */ import_react23.default.createElement("div", { ref: directionDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react23.default.createElement("h3", { className: "text-[14px] text-black tracking-tight" }, "Payment Type")), /* @__PURE__ */ import_react23.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, ["ALL", "CREDIT", "DEBIT"].map((option) => /* @__PURE__ */ import_react23.default.createElement(
|
|
1598
1461
|
"button",
|
|
1599
1462
|
{
|
|
1600
1463
|
key: option,
|
|
@@ -1604,19 +1467,19 @@ var UniversalTransactionPage = ({
|
|
|
1604
1467
|
},
|
|
1605
1468
|
className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeDirectionFilter === option ? "bg-neutral-100 text-black " : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
|
|
1606
1469
|
},
|
|
1607
|
-
/* @__PURE__ */
|
|
1608
|
-
))), /* @__PURE__ */
|
|
1470
|
+
/* @__PURE__ */ import_react23.default.createElement("span", { className: "truncate pr-2" }, option.charAt(0).toUpperCase() + option.slice(1).toLowerCase())
|
|
1471
|
+
))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "w-full flex mt-2 " }, /* @__PURE__ */ import_react23.default.createElement(
|
|
1609
1472
|
"button",
|
|
1610
1473
|
{
|
|
1611
1474
|
onClick: () => setIsDirectionModalOpen(false),
|
|
1612
1475
|
className: "w-full py-4 text-[13px] text-neutral-500 hover:text-black transition-colors outline-none "
|
|
1613
1476
|
},
|
|
1614
1477
|
"Cancel"
|
|
1615
|
-
)))), isTypeModalOpen && /* @__PURE__ */
|
|
1478
|
+
)))), isTypeModalOpen && /* @__PURE__ */ import_react23.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setIsTypeModalOpen(false) }), /* @__PURE__ */ import_react23.default.createElement("div", { ref: typeDropdownRef, className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "p-6 text-center w-full mb-2" }, /* @__PURE__ */ import_react23.default.createElement("h3", { className: "text-[14px] text-black tracking-tight" }, "Transactions Type")), /* @__PURE__ */ import_react23.default.createElement("div", { className: "w-full flex flex-col pl-2 pr-2 gap-1" }, [
|
|
1616
1479
|
{ label: "All Transactions", value: "ALL" },
|
|
1617
1480
|
{ label: "Wallet Transactions", value: "WALLET_TRANSACTION" },
|
|
1618
1481
|
{ label: "Card Transactions", value: "CARD_TRANSACTION" }
|
|
1619
|
-
].map((option) => /* @__PURE__ */
|
|
1482
|
+
].map((option) => /* @__PURE__ */ import_react23.default.createElement(
|
|
1620
1483
|
"button",
|
|
1621
1484
|
{
|
|
1622
1485
|
key: option.value,
|
|
@@ -1626,8 +1489,8 @@ var UniversalTransactionPage = ({
|
|
|
1626
1489
|
},
|
|
1627
1490
|
className: `text-left px-4 py-3 text-[11px] tracking-wide transition-colors rounded-full flex items-center justify-between outline-none ${activeTypeFilter === option.value ? "bg-neutral-100 text-black " : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}`
|
|
1628
1491
|
},
|
|
1629
|
-
/* @__PURE__ */
|
|
1630
|
-
))), /* @__PURE__ */
|
|
1492
|
+
/* @__PURE__ */ import_react23.default.createElement("span", { className: "truncate pr-2" }, option.label.charAt(0).toUpperCase() + option.label.slice(1).toLowerCase())
|
|
1493
|
+
))), /* @__PURE__ */ import_react23.default.createElement("div", { className: "w-full flex mt-2 " }, /* @__PURE__ */ import_react23.default.createElement(
|
|
1631
1494
|
"button",
|
|
1632
1495
|
{
|
|
1633
1496
|
onClick: () => setIsTypeModalOpen(false),
|
|
@@ -1638,9 +1501,9 @@ var UniversalTransactionPage = ({
|
|
|
1638
1501
|
};
|
|
1639
1502
|
|
|
1640
1503
|
// src/components/UniversalHomeView.tsx
|
|
1641
|
-
var
|
|
1642
|
-
var
|
|
1643
|
-
var
|
|
1504
|
+
var import_react25 = __toESM(require("react"));
|
|
1505
|
+
var import_react26 = require("@hugeicons/react");
|
|
1506
|
+
var import_core_free_icons8 = require("@hugeicons/core-free-icons");
|
|
1644
1507
|
var UniversalHomeView = ({
|
|
1645
1508
|
balanceLabel = "Your Balance",
|
|
1646
1509
|
balanceAmount,
|
|
@@ -1649,9 +1512,9 @@ var UniversalHomeView = ({
|
|
|
1649
1512
|
secondaryAction,
|
|
1650
1513
|
transactionsProps
|
|
1651
1514
|
}) => {
|
|
1652
|
-
const [displayAmount, setDisplayAmount] = (0,
|
|
1653
|
-
const [isBalanceHidden, setIsBalanceHidden] = (0,
|
|
1654
|
-
(0,
|
|
1515
|
+
const [displayAmount, setDisplayAmount] = (0, import_react25.useState)("0.00");
|
|
1516
|
+
const [isBalanceHidden, setIsBalanceHidden] = (0, import_react25.useState)(false);
|
|
1517
|
+
(0, import_react25.useEffect)(() => {
|
|
1655
1518
|
const target = parseFloat(balanceAmount.replace(/,/g, ""));
|
|
1656
1519
|
if (isNaN(target)) {
|
|
1657
1520
|
setDisplayAmount(balanceAmount);
|
|
@@ -1680,29 +1543,29 @@ var UniversalHomeView = ({
|
|
|
1680
1543
|
requestAnimationFrame(step);
|
|
1681
1544
|
}, [balanceAmount]);
|
|
1682
1545
|
const [intPart, decPart] = displayAmount.includes(".") ? displayAmount.split(".") : [displayAmount, "00"];
|
|
1683
|
-
return /* @__PURE__ */
|
|
1546
|
+
return /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col animate-in fade-in duration-300" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "relative flex items-start justify-between w-full pt-4 pb-8" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex flex-col items-start text-left z-10 w-full" }, /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center gap-2 mb-1.5" }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[12px] sm:text-[13px] text-neutral-500" }, balanceLabel), /* @__PURE__ */ import_react25.default.createElement(
|
|
1684
1547
|
"button",
|
|
1685
1548
|
{
|
|
1686
1549
|
onClick: () => setIsBalanceHidden(!isBalanceHidden),
|
|
1687
1550
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1688
1551
|
},
|
|
1689
|
-
/* @__PURE__ */
|
|
1690
|
-
)), /* @__PURE__ */
|
|
1552
|
+
/* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: isBalanceHidden ? import_core_free_icons8.ViewIcon : import_core_free_icons8.ViewOffSlashIcon, size: 14 })
|
|
1553
|
+
)), /* @__PURE__ */ import_react25.default.createElement("h1", { className: `text-3xl sm:text-4xl md:text-5xl text-black tracking-tight mb-5 tabular-nums flex items-baseline transition-all duration-300 ${isBalanceHidden ? "blur-sm opacity-40 select-none" : ""}` }, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-2xl text-neutral-400 mr-1" }, balanceCurrency), intPart, /* @__PURE__ */ import_react25.default.createElement("span", { className: "text-xl sm:text-2xl text-neutral-400" }, ".", decPart)), /* @__PURE__ */ import_react25.default.createElement("div", { className: "flex items-center gap-3" }, primaryAction && /* @__PURE__ */ import_react25.default.createElement(
|
|
1691
1554
|
ThreeDActionButton,
|
|
1692
1555
|
{
|
|
1693
1556
|
onClick: primaryAction.onClick,
|
|
1694
1557
|
className: "px-6 py-2.5 sm:px-8 sm:py-2.5"
|
|
1695
1558
|
},
|
|
1696
|
-
/* @__PURE__ */
|
|
1697
|
-
), secondaryAction && /* @__PURE__ */
|
|
1559
|
+
/* @__PURE__ */ import_react25.default.createElement("span", { className: "flex items-center gap-1.5 text-[13px] tracking-wide " }, primaryAction.label, primaryAction.icon && /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: primaryAction.icon, size: 16 }))
|
|
1560
|
+
), secondaryAction && /* @__PURE__ */ import_react25.default.createElement(
|
|
1698
1561
|
"button",
|
|
1699
1562
|
{
|
|
1700
1563
|
onClick: secondaryAction.onClick,
|
|
1701
1564
|
className: "flex items-center gap-1.5 px-6 py-2.5 sm:px-8 sm:py-2.5 rounded-full border border-neutral-200 text-black hover:bg-neutral-50 transition-colors outline-none"
|
|
1702
1565
|
},
|
|
1703
|
-
/* @__PURE__ */
|
|
1704
|
-
secondaryAction.icon && /* @__PURE__ */
|
|
1705
|
-
)))), /* @__PURE__ */
|
|
1566
|
+
/* @__PURE__ */ import_react25.default.createElement("span", { className: "text-[13px] tracking-wide " }, secondaryAction.label),
|
|
1567
|
+
secondaryAction.icon && /* @__PURE__ */ import_react25.default.createElement(import_react26.HugeiconsIcon, { icon: secondaryAction.icon, size: 16 })
|
|
1568
|
+
)))), /* @__PURE__ */ import_react25.default.createElement("div", { className: "w-full mt-2" }, /* @__PURE__ */ import_react25.default.createElement(
|
|
1706
1569
|
UniversalTransactionPage,
|
|
1707
1570
|
{
|
|
1708
1571
|
...transactionsProps,
|
|
@@ -1714,14 +1577,14 @@ var UniversalHomeView = ({
|
|
|
1714
1577
|
};
|
|
1715
1578
|
|
|
1716
1579
|
// src/components/UniversalWalletPage.tsx
|
|
1717
|
-
var
|
|
1580
|
+
var import_react27 = __toESM(require("react"));
|
|
1718
1581
|
var import_react_hot_toast6 = __toESM(require("react-hot-toast"));
|
|
1719
|
-
var
|
|
1720
|
-
var
|
|
1721
|
-
var PageSpinner3 = () => /* @__PURE__ */
|
|
1582
|
+
var import_react28 = require("@hugeicons/react");
|
|
1583
|
+
var import_core_free_icons9 = require("@hugeicons/core-free-icons");
|
|
1584
|
+
var PageSpinner3 = () => /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex justify-center items-center py-12" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Loading03Icon, size: 32, className: "animate-spin mb-4 text-black" }));
|
|
1722
1585
|
var WalletLogo = ({ src, alt, sizeClass = "w-10 h-10" }) => {
|
|
1723
|
-
const [isLoaded, setIsLoaded] = (0,
|
|
1724
|
-
return /* @__PURE__ */
|
|
1586
|
+
const [isLoaded, setIsLoaded] = (0, import_react27.useState)(false);
|
|
1587
|
+
return /* @__PURE__ */ import_react27.default.createElement("div", { className: `relative shrink-0 rounded-full bg-neutral-100 flex items-center justify-center overflow-hidden ${sizeClass}` }, !isLoaded && /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Loading03Icon, size: 16, className: "animate-spin text-neutral-400 absolute" }), /* @__PURE__ */ import_react27.default.createElement(
|
|
1725
1588
|
"img",
|
|
1726
1589
|
{
|
|
1727
1590
|
src,
|
|
@@ -1743,8 +1606,8 @@ var UniversalWalletPage = ({
|
|
|
1743
1606
|
onDownloadPayId,
|
|
1744
1607
|
onCopyAddress
|
|
1745
1608
|
}) => {
|
|
1746
|
-
const [selectedWallet, setSelectedWallet] = (0,
|
|
1747
|
-
const [localSearchQuery, setLocalSearchQuery] = (0,
|
|
1609
|
+
const [selectedWallet, setSelectedWallet] = (0, import_react27.useState)(null);
|
|
1610
|
+
const [localSearchQuery, setLocalSearchQuery] = (0, import_react27.useState)("");
|
|
1748
1611
|
const filteredWallets = wallets.filter((wallet) => {
|
|
1749
1612
|
const q = localSearchQuery.toLowerCase();
|
|
1750
1613
|
return wallet.name.toLowerCase().includes(q) || wallet.currency.toLowerCase().includes(q) || wallet.network.toLowerCase().includes(q);
|
|
@@ -1757,7 +1620,7 @@ var UniversalWalletPage = ({
|
|
|
1757
1620
|
}
|
|
1758
1621
|
import_react_hot_toast6.default.success("Address copied to clipboard");
|
|
1759
1622
|
};
|
|
1760
|
-
return /* @__PURE__ */
|
|
1623
|
+
return /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-6 animate-in max-w-5xl fade-in duration-300" }, /* @__PURE__ */ import_react27.default.createElement(ManagedToaster, null), !hideControls && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 w-full" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative w-full sm:w-96" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.Search01Icon, size: 16, className: "text-neutral-400" })), /* @__PURE__ */ import_react27.default.createElement(
|
|
1761
1624
|
"input",
|
|
1762
1625
|
{
|
|
1763
1626
|
type: "text",
|
|
@@ -1766,16 +1629,16 @@ var UniversalWalletPage = ({
|
|
|
1766
1629
|
onChange: (e) => setLocalSearchQuery(e.target.value),
|
|
1767
1630
|
className: "w-full pl-10 pr-4 py-2 bg-white rounded-full text-[13px] text-black placeholder-neutral-400 outline-none transition-all duration-300 focus:border-black"
|
|
1768
1631
|
}
|
|
1769
|
-
))), /* @__PURE__ */
|
|
1632
|
+
))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-8 p-6 rounded-2xl bg-white w-full" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, /* @__PURE__ */ import_react27.default.createElement("div", null, /* @__PURE__ */ import_react27.default.createElement("h1", { className: "text-black text-xl mb-1 tracking-tight" }, headerTitle), headerDescription && /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-xs text-neutral-500" }, headerDescription))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-full overflow-hidden" }, isLoading ? /* @__PURE__ */ import_react27.default.createElement(PageSpinner3, null) : /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react27.default.createElement("div", null, filteredWallets.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-xs text-neutral-400 py-6 text-center" }, "No wallets found") : filteredWallets.map((wallet) => /* @__PURE__ */ import_react27.default.createElement(
|
|
1770
1633
|
"div",
|
|
1771
1634
|
{
|
|
1772
1635
|
key: wallet.id,
|
|
1773
1636
|
onClick: () => setSelectedWallet(wallet),
|
|
1774
1637
|
className: "flex items-center justify-between py-4 hover:bg-neutral-50 transition-colors cursor-pointer group min-w-0 px-3 -mx-3 rounded-xl"
|
|
1775
1638
|
},
|
|
1776
|
-
/* @__PURE__ */
|
|
1777
|
-
/* @__PURE__ */
|
|
1778
|
-
)))))), selectedWallet && /* @__PURE__ */
|
|
1639
|
+
/* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react27.default.createElement(WalletLogo, { src: wallet.logoSrc, alt: wallet.name }), /* @__PURE__ */ import_react27.default.createElement("div", { className: "min-w-0 flex-1 flex flex-col gap-1" }, /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-[13px] text-black truncate " }, wallet.name), /* @__PURE__ */ import_react27.default.createElement("p", { className: `text-[13px] text-neutral-500 truncate transition-all duration-300 ${hideBalanceAmounts ? "blur-sm opacity-40 select-none" : ""}` }, wallet.balance, " ", wallet.currency))),
|
|
1640
|
+
/* @__PURE__ */ import_react27.default.createElement("div", { className: "shrink-0 flex flex-col items-end gap-1 text-right" }, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[10px] tracking-wide text-neutral-600 bg-neutral-100 px-2.5 py-1 rounded-full " }, wallet.network))
|
|
1641
|
+
)))))), selectedWallet && /* @__PURE__ */ import_react27.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "absolute inset-0 bg-black/40 ", onClick: () => setSelectedWallet(null) }), /* @__PURE__ */ import_react27.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_react27.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0 " }, /* @__PURE__ */ import_react27.default.createElement("h3", { className: "text-[15px] text-black tracking-tight" }, "Wallet Details"), /* @__PURE__ */ import_react27.default.createElement("button", { onClick: () => setSelectedWallet(null), className: "text-neutral-400 hover:text-black transition-colors outline-none" }, /* @__PURE__ */ import_react27.default.createElement(import_react28.HugeiconsIcon, { icon: import_core_free_icons9.CancelCircleIcon, size: 18 }))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 pt-6" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col items-center justify-center mb-6" }, /* @__PURE__ */ import_react27.default.createElement(WalletLogo, { src: selectedWallet.logoSrc, alt: selectedWallet.name, sizeClass: "w-14 h-14 mb-4" }), /* @__PURE__ */ import_react27.default.createElement("h2", { className: `text-2xl text-black mb-2 transition-all duration-300 ${hideBalanceAmounts ? "blur-[6px] opacity-40 select-none" : ""}` }, selectedWallet.balance, " ", selectedWallet.currency), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[9px] tracking-widest text-neutral-500 px-4 py-1.5 rounded-full border border-neutral-200 uppercase mt-1 " }, selectedWallet.network, " NETWORK")), renderQrCode && /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-full flex justify-center mb-6 mix-blend-multiply" }, renderQrCode(selectedWallet)), /* @__PURE__ */ import_react27.default.createElement("div", { className: "grid grid-cols-1 gap-y-6 gap-x-4 mb-10" }, /* @__PURE__ */ import_react27.default.createElement("div", null, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Address"), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[13px] text-black break-all " }, selectedWallet.address)), /* @__PURE__ */ import_react27.default.createElement("div", null, /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-400 block mb-2" }, "Wallet Name"), /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[13px] text-black" }, selectedWallet.name))), /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex flex-col gap-3" }, /* @__PURE__ */ import_react27.default.createElement(
|
|
1779
1642
|
ThreeDActionButton,
|
|
1780
1643
|
{
|
|
1781
1644
|
onClick: () => onDownloadPayId && onDownloadPayId(selectedWallet),
|
|
@@ -1783,7 +1646,7 @@ var UniversalWalletPage = ({
|
|
|
1783
1646
|
className: "w-full py-3 text-[13px]"
|
|
1784
1647
|
},
|
|
1785
1648
|
"Generate Statement"
|
|
1786
|
-
), /* @__PURE__ */
|
|
1649
|
+
), /* @__PURE__ */ import_react27.default.createElement(
|
|
1787
1650
|
"button",
|
|
1788
1651
|
{
|
|
1789
1652
|
onClick: () => handleCopy(selectedWallet),
|
|
@@ -1796,12 +1659,53 @@ var UniversalWalletPage = ({
|
|
|
1796
1659
|
// src/components/UniversalCardPage.tsx
|
|
1797
1660
|
var import_react35 = __toESM(require("react"));
|
|
1798
1661
|
var import_react36 = require("@hugeicons/react");
|
|
1799
|
-
var
|
|
1662
|
+
var import_core_free_icons13 = require("@hugeicons/core-free-icons");
|
|
1663
|
+
|
|
1664
|
+
// src/components/ConfirmationDialog.tsx
|
|
1665
|
+
var import_react29 = __toESM(require("react"));
|
|
1666
|
+
var import_react30 = require("@hugeicons/react");
|
|
1667
|
+
var import_core_free_icons10 = require("@hugeicons/core-free-icons");
|
|
1668
|
+
var ConfirmationDialog = ({
|
|
1669
|
+
isOpen,
|
|
1670
|
+
title,
|
|
1671
|
+
message,
|
|
1672
|
+
confirmText = "Confirm",
|
|
1673
|
+
cancelText = "Cancel",
|
|
1674
|
+
isProcessing = false,
|
|
1675
|
+
isDestructive = true,
|
|
1676
|
+
onClose,
|
|
1677
|
+
onConfirm
|
|
1678
|
+
}) => {
|
|
1679
|
+
if (!isOpen) return null;
|
|
1680
|
+
return /* @__PURE__ */ import_react29.default.createElement("div", { className: "fixed inset-0 z-120 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
1681
|
+
"div",
|
|
1682
|
+
{
|
|
1683
|
+
className: "absolute inset-0 bg-black/40 ",
|
|
1684
|
+
onClick: () => !isProcessing && onClose()
|
|
1685
|
+
}
|
|
1686
|
+
), /* @__PURE__ */ import_react29.default.createElement("div", { className: "relative w-72 bg-white rounded-2xl flex flex-col items-center overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react29.default.createElement("div", { className: "p-6 pb-4 text-center w-full" }, /* @__PURE__ */ import_react29.default.createElement("h3", { className: "text-[17px] text-black tracking-tight mb-2" }, title), /* @__PURE__ */ import_react29.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-relaxed px-2" }, message)), /* @__PURE__ */ import_react29.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
1687
|
+
"button",
|
|
1688
|
+
{
|
|
1689
|
+
onClick: onClose,
|
|
1690
|
+
disabled: isProcessing,
|
|
1691
|
+
className: "flex-1 py-4 text-[14px] text-neutral-500 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none "
|
|
1692
|
+
},
|
|
1693
|
+
cancelText
|
|
1694
|
+
), /* @__PURE__ */ import_react29.default.createElement(
|
|
1695
|
+
"button",
|
|
1696
|
+
{
|
|
1697
|
+
onClick: onConfirm,
|
|
1698
|
+
disabled: isProcessing,
|
|
1699
|
+
className: `flex-1 py-4 text-[13px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none ${isDestructive ? "text-red-500 hover:bg-red-50" : "text-black hover:bg-neutral-50"}`
|
|
1700
|
+
},
|
|
1701
|
+
isProcessing ? /* @__PURE__ */ import_react29.default.createElement(import_react30.HugeiconsIcon, { icon: import_core_free_icons10.Loading03Icon, className: "animate-spin", size: 18 }) : confirmText
|
|
1702
|
+
))));
|
|
1703
|
+
};
|
|
1800
1704
|
|
|
1801
1705
|
// src/components/PinDialerBottomSheet.tsx
|
|
1802
1706
|
var import_react31 = __toESM(require("react"));
|
|
1803
1707
|
var import_react32 = require("@hugeicons/react");
|
|
1804
|
-
var
|
|
1708
|
+
var import_core_free_icons11 = require("@hugeicons/core-free-icons");
|
|
1805
1709
|
var PinDialerBottomSheet = ({
|
|
1806
1710
|
isOpen,
|
|
1807
1711
|
title = "Action Required",
|
|
@@ -1836,7 +1740,7 @@ var PinDialerBottomSheet = ({
|
|
|
1836
1740
|
if (!isVerifying) onClose();
|
|
1837
1741
|
}
|
|
1838
1742
|
}
|
|
1839
|
-
), /* @__PURE__ */ import_react31.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_react31.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react31.default.createElement("h3", { className: "text-[16px] text-black
|
|
1743
|
+
), /* @__PURE__ */ import_react31.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_react31.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react31.default.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title), /* @__PURE__ */ import_react31.default.createElement(
|
|
1840
1744
|
"button",
|
|
1841
1745
|
{
|
|
1842
1746
|
onClick: () => {
|
|
@@ -1844,14 +1748,14 @@ var PinDialerBottomSheet = ({
|
|
|
1844
1748
|
},
|
|
1845
1749
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1846
1750
|
},
|
|
1847
|
-
/* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon:
|
|
1751
|
+
/* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon: import_core_free_icons11.CancelCircleIcon, size: 20 })
|
|
1848
1752
|
)), /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex flex-col px-6 pb-8 pt-2 relative" }, /* @__PURE__ */ import_react31.default.createElement("div", { className: "flex justify-center gap-4 mb-8" }, [0, 1, 2, 3].map((i) => /* @__PURE__ */ import_react31.default.createElement(
|
|
1849
1753
|
"div",
|
|
1850
1754
|
{
|
|
1851
1755
|
key: i,
|
|
1852
1756
|
className: `w-2 h-2 rounded-full transition-colors duration-200 ${pin.length > i ? "bg-black" : "bg-neutral-200"}`
|
|
1853
1757
|
}
|
|
1854
|
-
))), isVerifying && /* @__PURE__ */ import_react31.default.createElement("div", { className: "absolute inset-0 bg-white/80 backdrop-blur-sm z-10 flex items-center justify-center rounded-b-2xl" }, /* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon:
|
|
1758
|
+
))), isVerifying && /* @__PURE__ */ import_react31.default.createElement("div", { className: "absolute inset-0 bg-white/80 backdrop-blur-sm z-10 flex items-center justify-center rounded-b-2xl" }, /* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon: import_core_free_icons11.Loading03Icon, size: 28, className: "animate-spin text-black" })), /* @__PURE__ */ import_react31.default.createElement("div", { className: "grid grid-cols-3 gap-y-4 gap-x-6 max-w-60 mx-auto" }, [1, 2, 3, 4, 5, 6, 7, 8, 9].map((num) => /* @__PURE__ */ import_react31.default.createElement(
|
|
1855
1759
|
"button",
|
|
1856
1760
|
{
|
|
1857
1761
|
key: num,
|
|
@@ -1872,14 +1776,14 @@ var PinDialerBottomSheet = ({
|
|
|
1872
1776
|
onClick: () => handlePinPress("del"),
|
|
1873
1777
|
className: "w-14 h-14 rounded-full flex items-center justify-center text-neutral-400 hover:text-black hover:bg-neutral-50 transition-colors mx-auto outline-none active:scale-95"
|
|
1874
1778
|
},
|
|
1875
|
-
/* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon:
|
|
1779
|
+
/* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon: import_core_free_icons11.LessThanIcon, size: 20 })
|
|
1876
1780
|
)))));
|
|
1877
1781
|
};
|
|
1878
1782
|
|
|
1879
1783
|
// src/components/CardAction.tsx
|
|
1880
1784
|
var import_react33 = __toESM(require("react"));
|
|
1881
1785
|
var import_react34 = require("@hugeicons/react");
|
|
1882
|
-
var
|
|
1786
|
+
var import_core_free_icons12 = require("@hugeicons/core-free-icons");
|
|
1883
1787
|
var CardActionDialog = ({
|
|
1884
1788
|
isOpen,
|
|
1885
1789
|
card,
|
|
@@ -1896,18 +1800,18 @@ var CardActionDialog = ({
|
|
|
1896
1800
|
className: "absolute inset-0 bg-black/40 animate-in fade-in duration-200",
|
|
1897
1801
|
onClick: onClose
|
|
1898
1802
|
}
|
|
1899
|
-
), /* @__PURE__ */ import_react33.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon:
|
|
1803
|
+
), /* @__PURE__ */ import_react33.default.createElement("div", { className: "relative w-full max-w-sm bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center justify-between p-5 shrink-0" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.CreditCardIcon, size: 20, className: "text-black" }), /* @__PURE__ */ import_react33.default.createElement("h3", { className: "text-[16px] text-black tracking-tight" }, title)), /* @__PURE__ */ import_react33.default.createElement(
|
|
1900
1804
|
"button",
|
|
1901
1805
|
{
|
|
1902
1806
|
onClick: onClose,
|
|
1903
1807
|
className: "text-neutral-400 hover:text-black transition-colors outline-none"
|
|
1904
1808
|
},
|
|
1905
|
-
/* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon:
|
|
1809
|
+
/* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.CancelCircleIcon, size: 20 })
|
|
1906
1810
|
)), /* @__PURE__ */ import_react33.default.createElement("div", { className: "p-6 text-center" }, /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-[13px] text-neutral-500 leading-relaxed mb-6" }, description), /* @__PURE__ */ import_react33.default.createElement(
|
|
1907
1811
|
"button",
|
|
1908
1812
|
{
|
|
1909
1813
|
onClick: onProceed,
|
|
1910
|
-
className: "w-full py-3.5 bg-black text-white text-[13px]
|
|
1814
|
+
className: "w-full py-3.5 bg-black text-white text-[13px] rounded-xl hover:bg-neutral-800 transition-colors outline-none active:scale-95"
|
|
1911
1815
|
},
|
|
1912
1816
|
actionType === "ACTIVATE" ? "Activate Now" : "Create Card"
|
|
1913
1817
|
))));
|
|
@@ -2011,17 +1915,17 @@ var UniversalCardPage = ({
|
|
|
2011
1915
|
const capitalized = type.charAt(0).toUpperCase() + type.slice(1).toLowerCase();
|
|
2012
1916
|
return `${capitalized} Card`;
|
|
2013
1917
|
};
|
|
2014
|
-
const displayCardNumber = isRevealed ? activeCard.cardNumber :
|
|
2015
|
-
const displayExpiry = isRevealed ? activeCard.expiry : "
|
|
2016
|
-
const displayCvv = isRevealed ? activeCard.cvv : "
|
|
2017
|
-
return /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full flex flex-col items-center animate-in fade-in duration-300 pb-12" }, cards.length > 1 && /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar " }, cards.map((tab, idx) => {
|
|
1918
|
+
const displayCardNumber = isRevealed ? activeCard.cardNumber : `XXXX XXXX XXXX ${activeCard.cardNumber.slice(-4)}`;
|
|
1919
|
+
const displayExpiry = isRevealed ? activeCard.expiry : "XX/XX";
|
|
1920
|
+
const displayCvv = isRevealed ? activeCard.cvv : "XXX";
|
|
1921
|
+
return /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full flex flex-col items-center animate-in max-w-5xl fade-in duration-300 pb-12" }, cards.length > 1 && /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex items-center justify-center mb-6 w-full px-2" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar " }, cards.map((tab, idx) => {
|
|
2018
1922
|
const isActive = activeTabIndex === idx;
|
|
2019
1923
|
return /* @__PURE__ */ import_react35.default.createElement(
|
|
2020
1924
|
"button",
|
|
2021
1925
|
{
|
|
2022
1926
|
key: tab.id,
|
|
2023
1927
|
onClick: () => setActiveTabIndex(idx),
|
|
2024
|
-
className: `px-4
|
|
1928
|
+
className: `px-4 py-1.5 rounded-full text-[11px] transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-100 text-black" : "text-neutral-500 hover:text-black hover:bg-neutral-50/50"}`
|
|
2025
1929
|
},
|
|
2026
1930
|
formatTabLabel(tab.type)
|
|
2027
1931
|
);
|
|
@@ -2038,7 +1942,7 @@ var UniversalCardPage = ({
|
|
|
2038
1942
|
transform: isFlipped ? "rotateY(180deg)" : "rotateY(0deg)"
|
|
2039
1943
|
}
|
|
2040
1944
|
},
|
|
2041
|
-
!isBgLoaded && /* @__PURE__ */ import_react35.default.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50 " }, /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon:
|
|
1945
|
+
!isBgLoaded && /* @__PURE__ */ import_react35.default.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50 " }, /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 28, className: "animate-spin text-black" })),
|
|
2042
1946
|
!isActivated && isBgLoaded && /* @__PURE__ */ import_react35.default.createElement("div", { className: "absolute inset-0 z-40 w-full h-full rounded-2xl backdrop-blur-sm bg-white/20 flex flex-col items-center justify-center border border-white/30", style: { transform: "translateZ(1px)" } }, isUnactivated && /* @__PURE__ */ import_react35.default.createElement(
|
|
2043
1947
|
"button",
|
|
2044
1948
|
{
|
|
@@ -2046,7 +1950,7 @@ var UniversalCardPage = ({
|
|
|
2046
1950
|
e.stopPropagation();
|
|
2047
1951
|
handleOverlayActionClick("ACTIVATE");
|
|
2048
1952
|
},
|
|
2049
|
-
className: "px-6 py-2.5 bg-white/35 text-
|
|
1953
|
+
className: "px-6 py-2.5 bg-white/35 text-white text-[12px] rounded-full transition-all outline-none active:scale-95"
|
|
2050
1954
|
},
|
|
2051
1955
|
"Activate Card"
|
|
2052
1956
|
), isDead && /* @__PURE__ */ import_react35.default.createElement(
|
|
@@ -2056,7 +1960,7 @@ var UniversalCardPage = ({
|
|
|
2056
1960
|
e.stopPropagation();
|
|
2057
1961
|
handleOverlayActionClick("CREATE");
|
|
2058
1962
|
},
|
|
2059
|
-
className: "px-6 py-2.5 bg-white/35 text-
|
|
1963
|
+
className: "px-6 py-2.5 bg-white/35 text-white text-[12px] rounded-full transition-all outline-none active:scale-95"
|
|
2060
1964
|
},
|
|
2061
1965
|
"Create Card"
|
|
2062
1966
|
), isFrozen && /* @__PURE__ */ import_react35.default.createElement(
|
|
@@ -2067,9 +1971,9 @@ var UniversalCardPage = ({
|
|
|
2067
1971
|
handleOverlayUnfreeze();
|
|
2068
1972
|
},
|
|
2069
1973
|
disabled: isOverlayActionLoading,
|
|
2070
|
-
className: "px-6 py-2.5 bg-white/35 text-
|
|
1974
|
+
className: "px-6 py-2.5 bg-white/35 text-white text-[12px] rounded-full transition-all outline-none active:scale-95 flex items-center gap-2 disabled:opacity-80"
|
|
2071
1975
|
},
|
|
2072
|
-
isOverlayActionLoading ? /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon:
|
|
1976
|
+
isOverlayActionLoading ? /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 16, className: "animate-spin" }) : "Unfreeze Card"
|
|
2073
1977
|
)),
|
|
2074
1978
|
/* @__PURE__ */ import_react35.default.createElement(
|
|
2075
1979
|
"div",
|
|
@@ -2122,7 +2026,7 @@ var UniversalCardPage = ({
|
|
|
2122
2026
|
)), /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-xs text-neutral-400 mb-6 mt-1" }, isActivated ? "Tap to flip card" : "Action Required"), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react35.default.createElement(
|
|
2123
2027
|
MenuRow,
|
|
2124
2028
|
{
|
|
2125
|
-
icon:
|
|
2029
|
+
icon: import_core_free_icons13.ViewOffSlashIcon,
|
|
2126
2030
|
title: "Reveal Information",
|
|
2127
2031
|
subtitle: "Show card informations",
|
|
2128
2032
|
onClick: handleToggleReveal,
|
|
@@ -2134,7 +2038,7 @@ var UniversalCardPage = ({
|
|
|
2134
2038
|
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2135
2039
|
MenuRow,
|
|
2136
2040
|
{
|
|
2137
|
-
icon:
|
|
2041
|
+
icon: import_core_free_icons13.SnowIcon,
|
|
2138
2042
|
title: "Freeze",
|
|
2139
2043
|
subtitle: "Freeze & Unfreeze card",
|
|
2140
2044
|
onClick: handleToggleFreeze,
|
|
@@ -2146,7 +2050,7 @@ var UniversalCardPage = ({
|
|
|
2146
2050
|
), /* @__PURE__ */ import_react35.default.createElement(
|
|
2147
2051
|
MenuRow,
|
|
2148
2052
|
{
|
|
2149
|
-
icon:
|
|
2053
|
+
icon: import_core_free_icons13.Dollar02Icon,
|
|
2150
2054
|
title: "Set Limits",
|
|
2151
2055
|
subtitle: "Set card limits",
|
|
2152
2056
|
onClick: () => {
|
|
@@ -2158,7 +2062,7 @@ var UniversalCardPage = ({
|
|
|
2158
2062
|
)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react35.default.createElement(
|
|
2159
2063
|
MenuRow,
|
|
2160
2064
|
{
|
|
2161
|
-
icon:
|
|
2065
|
+
icon: import_core_free_icons13.Delete02Icon,
|
|
2162
2066
|
title: "Delete card",
|
|
2163
2067
|
subtitle: "Permanently delete card",
|
|
2164
2068
|
onClick: () => {
|
|
@@ -2222,13 +2126,13 @@ var MenuRow = ({
|
|
|
2222
2126
|
},
|
|
2223
2127
|
/* @__PURE__ */ import_react35.default.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
2224
2128
|
/* @__PURE__ */ import_react35.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react35.default.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
2225
|
-
isToggle ? /* @__PURE__ */ import_react35.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_react35.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_react35.default.createElement(import_react36.HugeiconsIcon, { icon:
|
|
2129
|
+
isToggle ? /* @__PURE__ */ import_react35.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_react35.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_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.ArrowRight01Icon, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2226
2130
|
);
|
|
2227
2131
|
|
|
2228
2132
|
// src/components/UniversalProfilePage.tsx
|
|
2229
2133
|
var import_react37 = __toESM(require("react"));
|
|
2230
2134
|
var import_react38 = require("@hugeicons/react");
|
|
2231
|
-
var
|
|
2135
|
+
var import_core_free_icons14 = require("@hugeicons/core-free-icons");
|
|
2232
2136
|
var UniversalProfilePage = ({
|
|
2233
2137
|
avatarSrc,
|
|
2234
2138
|
roleName,
|
|
@@ -2256,7 +2160,7 @@ var UniversalProfilePage = ({
|
|
|
2256
2160
|
setShowLogoutDialog(false);
|
|
2257
2161
|
}
|
|
2258
2162
|
};
|
|
2259
|
-
return /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full max-w-
|
|
2163
|
+
return /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "pt-8 pb-4 flex flex-col items-center" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-22 h-22 rounded-full bg-white p-1 mb-4 flex items-center justify-center" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, avatarSrc ? /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, !isAvatarLoaded && /* @__PURE__ */ import_react37.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons14.Loading03Icon, size: 24, className: "animate-spin text-black" })), /* @__PURE__ */ import_react37.default.createElement(
|
|
2260
2164
|
"img",
|
|
2261
2165
|
{
|
|
2262
2166
|
src: avatarSrc,
|
|
@@ -2264,10 +2168,10 @@ var UniversalProfilePage = ({
|
|
|
2264
2168
|
onLoad: () => setIsAvatarLoaded(true),
|
|
2265
2169
|
className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
|
|
2266
2170
|
}
|
|
2267
|
-
)) : /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon:
|
|
2171
|
+
)) : /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons14.UserIcon, size: 40, className: "text-neutral-300" }))), /* @__PURE__ */ import_react37.default.createElement("div", { className: "bg-white rounded-full px-4 py-2 flex items-center justify-center gap-2 mb-3" }, /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-[12px] text-black" }, roleName), /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons14.CrownIcon, size: 14, className: "text-neutral-400" })), /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-[12px] text-neutral-500" }, memberSince)), /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full flex flex-col gap-4 mt-2" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
2268
2172
|
MenuRow2,
|
|
2269
2173
|
{
|
|
2270
|
-
icon:
|
|
2174
|
+
icon: import_core_free_icons14.UserIcon,
|
|
2271
2175
|
title: "Account",
|
|
2272
2176
|
subtitle: "Your account details",
|
|
2273
2177
|
onClick: onAccountTap
|
|
@@ -2275,7 +2179,7 @@ var UniversalProfilePage = ({
|
|
|
2275
2179
|
), /* @__PURE__ */ import_react37.default.createElement(
|
|
2276
2180
|
MenuRow2,
|
|
2277
2181
|
{
|
|
2278
|
-
icon:
|
|
2182
|
+
icon: import_core_free_icons14.LockKeyIcon,
|
|
2279
2183
|
title: "Security",
|
|
2280
2184
|
subtitle: "2FA & authentication",
|
|
2281
2185
|
onClick: onSecurityTap
|
|
@@ -2283,7 +2187,7 @@ var UniversalProfilePage = ({
|
|
|
2283
2187
|
), /* @__PURE__ */ import_react37.default.createElement(
|
|
2284
2188
|
MenuRow2,
|
|
2285
2189
|
{
|
|
2286
|
-
icon:
|
|
2190
|
+
icon: import_core_free_icons14.ShieldUserIcon,
|
|
2287
2191
|
title: "Web3 Profile",
|
|
2288
2192
|
subtitle: "Manage web3 profile",
|
|
2289
2193
|
onClick: onDefiTap
|
|
@@ -2291,7 +2195,7 @@ var UniversalProfilePage = ({
|
|
|
2291
2195
|
), /* @__PURE__ */ import_react37.default.createElement(
|
|
2292
2196
|
MenuRow2,
|
|
2293
2197
|
{
|
|
2294
|
-
icon:
|
|
2198
|
+
icon: import_core_free_icons14.MessageQuestionIcon,
|
|
2295
2199
|
title: "Get Help",
|
|
2296
2200
|
subtitle: "24/7 Support",
|
|
2297
2201
|
onClick: onHelpTap,
|
|
@@ -2300,7 +2204,7 @@ var UniversalProfilePage = ({
|
|
|
2300
2204
|
)), /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
2301
2205
|
MenuRow2,
|
|
2302
2206
|
{
|
|
2303
|
-
icon:
|
|
2207
|
+
icon: import_core_free_icons14.UserIdVerificationIcon,
|
|
2304
2208
|
title: "Verifications",
|
|
2305
2209
|
subtitle: "Account Verifications",
|
|
2306
2210
|
onClick: onVerificationsTap
|
|
@@ -2308,7 +2212,7 @@ var UniversalProfilePage = ({
|
|
|
2308
2212
|
), /* @__PURE__ */ import_react37.default.createElement(
|
|
2309
2213
|
MenuRow2,
|
|
2310
2214
|
{
|
|
2311
|
-
icon:
|
|
2215
|
+
icon: import_core_free_icons14.FileDownloadIcon,
|
|
2312
2216
|
title: "Export Account",
|
|
2313
2217
|
subtitle: "Transfer your account",
|
|
2314
2218
|
onClick: onExportTap
|
|
@@ -2316,7 +2220,7 @@ var UniversalProfilePage = ({
|
|
|
2316
2220
|
), /* @__PURE__ */ import_react37.default.createElement(
|
|
2317
2221
|
MenuRow2,
|
|
2318
2222
|
{
|
|
2319
|
-
icon:
|
|
2223
|
+
icon: import_core_free_icons14.LogoutCircle02Icon,
|
|
2320
2224
|
title: "LogOut",
|
|
2321
2225
|
subtitle: "End your session",
|
|
2322
2226
|
onClick: () => setShowLogoutDialog(true),
|
|
@@ -2325,7 +2229,7 @@ var UniversalProfilePage = ({
|
|
|
2325
2229
|
)), /* @__PURE__ */ import_react37.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden mb-4" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
2326
2230
|
MenuRow2,
|
|
2327
2231
|
{
|
|
2328
|
-
icon:
|
|
2232
|
+
icon: import_core_free_icons14.UserRemove01Icon,
|
|
2329
2233
|
title: "Delete Account",
|
|
2330
2234
|
subtitle: "Remove account",
|
|
2331
2235
|
onClick: onDeleteTap,
|
|
@@ -2353,20 +2257,90 @@ var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titl
|
|
|
2353
2257
|
},
|
|
2354
2258
|
/* @__PURE__ */ import_react37.default.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
2355
2259
|
/* @__PURE__ */ import_react37.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react37.default.createElement("p", { className: `text-[13px] truncate ${titleColor}` }, title), /* @__PURE__ */ import_react37.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
2356
|
-
/* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon:
|
|
2260
|
+
/* @__PURE__ */ import_react37.default.createElement(import_react38.HugeiconsIcon, { icon: import_core_free_icons14.ArrowRight01Icon, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
2357
2261
|
);
|
|
2358
2262
|
|
|
2359
|
-
// src/components/
|
|
2360
|
-
var
|
|
2263
|
+
// src/components/UniversalSidebar.tsx
|
|
2264
|
+
var import_react39 = __toESM(require("react"));
|
|
2361
2265
|
var import_link5 = __toESM(require("next/link"));
|
|
2266
|
+
var import_react40 = require("@hugeicons/react");
|
|
2267
|
+
var import_core_free_icons15 = require("@hugeicons/core-free-icons");
|
|
2268
|
+
var UniversalSidebar = ({
|
|
2269
|
+
navItems,
|
|
2270
|
+
currentPath,
|
|
2271
|
+
onNavClick,
|
|
2272
|
+
showLogoutAction = false,
|
|
2273
|
+
onLogout
|
|
2274
|
+
}) => {
|
|
2275
|
+
const [showLogoutDialog, setShowLogoutDialog] = (0, import_react39.useState)(false);
|
|
2276
|
+
const [isLoggingOut, setIsLoggingOut] = (0, import_react39.useState)(false);
|
|
2277
|
+
const hasActiveMatch = navItems.some(
|
|
2278
|
+
(item) => item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`)
|
|
2279
|
+
);
|
|
2280
|
+
const handleLogoutInitiation = async () => {
|
|
2281
|
+
if (isLoggingOut || !onLogout) return;
|
|
2282
|
+
setIsLoggingOut(true);
|
|
2283
|
+
try {
|
|
2284
|
+
await onLogout();
|
|
2285
|
+
} catch (error) {
|
|
2286
|
+
setIsLoggingOut(false);
|
|
2287
|
+
setShowLogoutDialog(false);
|
|
2288
|
+
}
|
|
2289
|
+
};
|
|
2290
|
+
return /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, /* @__PURE__ */ import_react39.default.createElement("aside", { className: "hidden md:flex fixed top-0 left-0 h-screen w-20 flex-col z-40 overflow-y-auto custom-scrollbar" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "h-24 shrink-0" }), /* @__PURE__ */ import_react39.default.createElement("nav", { className: "flex-1 flex flex-col gap-3 px-2" }, navItems.map((item, index) => {
|
|
2291
|
+
const isExactOrSubMatch = item.path === "/" || item.path === "/app" ? currentPath === "/" || currentPath === "/app" : currentPath === item.path || currentPath?.startsWith(`${item.path}/`);
|
|
2292
|
+
const isCurrentRoute = isExactOrSubMatch || !hasActiveMatch && index === 0;
|
|
2293
|
+
return /* @__PURE__ */ import_react39.default.createElement(
|
|
2294
|
+
import_link5.default,
|
|
2295
|
+
{
|
|
2296
|
+
key: item.name,
|
|
2297
|
+
href: item.path,
|
|
2298
|
+
onClick: (e) => onNavClick ? onNavClick(e, item.path) : void 0,
|
|
2299
|
+
className: `flex items-center justify-center w-12 h-12 mx-auto rounded-full transition-all outline-none group shrink-0 ${isCurrentRoute ? "bg-white text-black" : "text-neutral-500 hover:text-black hover:bg-white/50"}`,
|
|
2300
|
+
title: item.name
|
|
2301
|
+
},
|
|
2302
|
+
/* @__PURE__ */ import_react39.default.createElement(
|
|
2303
|
+
import_react40.HugeiconsIcon,
|
|
2304
|
+
{
|
|
2305
|
+
icon: item.icon,
|
|
2306
|
+
size: 20,
|
|
2307
|
+
className: `shrink-0 transition-colors ${isCurrentRoute ? "text-black" : "text-neutral-400 group-hover:text-black"}`
|
|
2308
|
+
}
|
|
2309
|
+
)
|
|
2310
|
+
);
|
|
2311
|
+
})), /* @__PURE__ */ import_react39.default.createElement("div", { className: "p-4 shrink-0 flex flex-col items-center gap-2 mb-4" }, showLogoutAction && /* @__PURE__ */ import_react39.default.createElement(
|
|
2312
|
+
"button",
|
|
2313
|
+
{
|
|
2314
|
+
onClick: () => setShowLogoutDialog(true),
|
|
2315
|
+
className: "w-12 h-12 rounded-full flex items-center justify-center text-neutral-500 hover:bg-white/50 transition-all outline-none"
|
|
2316
|
+
},
|
|
2317
|
+
/* @__PURE__ */ import_react39.default.createElement(import_react40.HugeiconsIcon, { icon: import_core_free_icons15.LogoutCircle02Icon, size: 20 })
|
|
2318
|
+
))), showLogoutAction && /* @__PURE__ */ import_react39.default.createElement(
|
|
2319
|
+
ConfirmationDialog,
|
|
2320
|
+
{
|
|
2321
|
+
isOpen: showLogoutDialog,
|
|
2322
|
+
title: "Secure Logout",
|
|
2323
|
+
message: "Are you sure you want to log out? You will need to authenticate to return.",
|
|
2324
|
+
confirmText: "Log Out",
|
|
2325
|
+
isDestructive: true,
|
|
2326
|
+
isProcessing: isLoggingOut,
|
|
2327
|
+
onClose: () => setShowLogoutDialog(false),
|
|
2328
|
+
onConfirm: handleLogoutInitiation
|
|
2329
|
+
}
|
|
2330
|
+
));
|
|
2331
|
+
};
|
|
2332
|
+
|
|
2333
|
+
// src/components/HeroSection.tsx
|
|
2334
|
+
var import_react42 = __toESM(require("react"));
|
|
2335
|
+
var import_link6 = __toESM(require("next/link"));
|
|
2362
2336
|
var import_image2 = __toESM(require("next/image"));
|
|
2363
2337
|
|
|
2364
2338
|
// src/components/WaitlistDialog.tsx
|
|
2365
|
-
var
|
|
2339
|
+
var import_react41 = __toESM(require("react"));
|
|
2366
2340
|
var import_react_hot_toast7 = require("react-hot-toast");
|
|
2367
2341
|
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
2368
|
-
const [email, setEmail] = (0,
|
|
2369
|
-
const [isLoading, setIsLoading] = (0,
|
|
2342
|
+
const [email, setEmail] = (0, import_react41.useState)("");
|
|
2343
|
+
const [isLoading, setIsLoading] = (0, import_react41.useState)(false);
|
|
2370
2344
|
if (!isOpen) return null;
|
|
2371
2345
|
const handleSubmit = async (e) => {
|
|
2372
2346
|
e.preventDefault();
|
|
@@ -2397,12 +2371,12 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2397
2371
|
setIsLoading(false);
|
|
2398
2372
|
}
|
|
2399
2373
|
};
|
|
2400
|
-
return /* @__PURE__ */
|
|
2374
|
+
return /* @__PURE__ */ import_react41.default.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ import_react41.default.createElement(
|
|
2401
2375
|
"div",
|
|
2402
2376
|
{
|
|
2403
2377
|
className: "w-full max-w-md bg-white rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200"
|
|
2404
2378
|
},
|
|
2405
|
-
/* @__PURE__ */
|
|
2379
|
+
/* @__PURE__ */ import_react41.default.createElement(
|
|
2406
2380
|
"button",
|
|
2407
2381
|
{
|
|
2408
2382
|
onClick: onClose,
|
|
@@ -2410,7 +2384,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2410
2384
|
className: "absolute top-4 right-4 p-2 text-neutral-700 hover:text-neutral-400 transition-colors disabled:opacity-50 outline-none",
|
|
2411
2385
|
"aria-label": "Close dialog"
|
|
2412
2386
|
},
|
|
2413
|
-
/* @__PURE__ */
|
|
2387
|
+
/* @__PURE__ */ import_react41.default.createElement(
|
|
2414
2388
|
"svg",
|
|
2415
2389
|
{
|
|
2416
2390
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2423,11 +2397,11 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2423
2397
|
strokeLinecap: "round",
|
|
2424
2398
|
strokeLinejoin: "round"
|
|
2425
2399
|
},
|
|
2426
|
-
/* @__PURE__ */
|
|
2427
|
-
/* @__PURE__ */
|
|
2400
|
+
/* @__PURE__ */ import_react41.default.createElement("path", { d: "M18 6 6 18" }),
|
|
2401
|
+
/* @__PURE__ */ import_react41.default.createElement("path", { d: "m6 6 12 12" })
|
|
2428
2402
|
)
|
|
2429
2403
|
),
|
|
2430
|
-
/* @__PURE__ */
|
|
2404
|
+
/* @__PURE__ */ import_react41.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ import_react41.default.createElement("h2", { className: "text-2xl text-black tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ import_react41.default.createElement("p", { className: "text-[13px] text-neutral-500 leading-relaxed" }, "Be the first to experience the future of Web3 freedom. Secure your early access spot today.")), /* @__PURE__ */ import_react41.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react41.default.createElement(
|
|
2431
2405
|
TextInput,
|
|
2432
2406
|
{
|
|
2433
2407
|
label: "Email ID",
|
|
@@ -2437,7 +2411,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
2437
2411
|
placeholder: "name@example.com",
|
|
2438
2412
|
disabled: isLoading
|
|
2439
2413
|
}
|
|
2440
|
-
), /* @__PURE__ */
|
|
2414
|
+
), /* @__PURE__ */ import_react41.default.createElement(
|
|
2441
2415
|
ThreeDActionButton,
|
|
2442
2416
|
{
|
|
2443
2417
|
type: "submit",
|
|
@@ -2470,10 +2444,10 @@ var HeroSection = ({
|
|
|
2470
2444
|
bgImageSrc,
|
|
2471
2445
|
isWaitlist = false
|
|
2472
2446
|
}) => {
|
|
2473
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2474
|
-
const [isWaitlistOpen, setIsWaitlistOpen] = (0,
|
|
2475
|
-
const titleRef = (0,
|
|
2476
|
-
(0,
|
|
2447
|
+
const [isAnimating, setIsAnimating] = (0, import_react42.useState)(false);
|
|
2448
|
+
const [isWaitlistOpen, setIsWaitlistOpen] = (0, import_react42.useState)(false);
|
|
2449
|
+
const titleRef = (0, import_react42.useRef)(null);
|
|
2450
|
+
(0, import_react42.useEffect)(() => {
|
|
2477
2451
|
const observer = new IntersectionObserver(
|
|
2478
2452
|
([entry]) => {
|
|
2479
2453
|
if (entry.isIntersecting) {
|
|
@@ -2495,7 +2469,7 @@ var HeroSection = ({
|
|
|
2495
2469
|
setIsWaitlistOpen(true);
|
|
2496
2470
|
}
|
|
2497
2471
|
};
|
|
2498
|
-
return /* @__PURE__ */
|
|
2472
|
+
return /* @__PURE__ */ import_react42.default.createElement("div", { className: "w-screen min-h-screen flex justify-center items-center p-4" }, /* @__PURE__ */ import_react42.default.createElement("section", { className: "relative h-[95vh] w-full overflow-hidden rounded-2xl " }, bgVideoSrc ? /* @__PURE__ */ import_react42.default.createElement(
|
|
2499
2473
|
"video",
|
|
2500
2474
|
{
|
|
2501
2475
|
src: bgVideoSrc,
|
|
@@ -2506,7 +2480,7 @@ var HeroSection = ({
|
|
|
2506
2480
|
playsInline: true,
|
|
2507
2481
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2508
2482
|
}
|
|
2509
|
-
) : bgImageSrc ? /* @__PURE__ */
|
|
2483
|
+
) : bgImageSrc ? /* @__PURE__ */ import_react42.default.createElement(
|
|
2510
2484
|
import_image2.default,
|
|
2511
2485
|
{
|
|
2512
2486
|
src: bgImageSrc,
|
|
@@ -2515,7 +2489,7 @@ var HeroSection = ({
|
|
|
2515
2489
|
priority: true,
|
|
2516
2490
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2517
2491
|
}
|
|
2518
|
-
) : null, /* @__PURE__ */
|
|
2492
|
+
) : null, /* @__PURE__ */ import_react42.default.createElement(
|
|
2519
2493
|
"div",
|
|
2520
2494
|
{
|
|
2521
2495
|
className: "pointer-events-none absolute inset-0 z-10 opacity-[0.7] mix-blend-overlay",
|
|
@@ -2523,31 +2497,31 @@ var HeroSection = ({
|
|
|
2523
2497
|
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")`
|
|
2524
2498
|
}
|
|
2525
2499
|
}
|
|
2526
|
-
), /* @__PURE__ */
|
|
2500
|
+
), /* @__PURE__ */ import_react42.default.createElement("div", { className: "pointer-events-none absolute inset-0 bg-linear-to-b from-black/30 via-transparent to-black/80 z-10" }), /* @__PURE__ */ import_react42.default.createElement("div", { className: "absolute bottom-0 left-0 right-0 px-4 pb-4 sm:px-6 md:px-10 z-20" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "grid grid-cols-12 items-end gap-4" }, /* @__PURE__ */ import_react42.default.createElement("div", { className: "col-span-12 lg:col-span-8" }, /* @__PURE__ */ import_react42.default.createElement(
|
|
2527
2501
|
"h1",
|
|
2528
2502
|
{
|
|
2529
2503
|
ref: titleRef,
|
|
2530
2504
|
className: "leading-[0.85] tracking-[-0.07em] text-[18.2vw] sm:text-[16.8vw] md:text-[15.4vw] lg:text-[14vw] xl:text-[13.3vw] 2xl:text-[14vw] text-[#ffffff]"
|
|
2531
2505
|
},
|
|
2532
|
-
/* @__PURE__ */
|
|
2533
|
-
)), /* @__PURE__ */
|
|
2534
|
-
/* @__PURE__ */
|
|
2535
|
-
|
|
2506
|
+
/* @__PURE__ */ import_react42.default.createElement("div", { className: "inline-flex flex-wrap" }, /* @__PURE__ */ import_react42.default.createElement("span", { className: `inline-block relative transition-all duration-1000 ${isAnimating ? "opacity-100 translate-y-0" : "opacity-0 translate-y-10"}` }, titlePrefix, titlePrefix && /* @__PURE__ */ import_react42.default.createElement("br", null), highlightText, /* @__PURE__ */ import_react42.default.createElement("span", { className: "absolute top-[0.65em] right-[-0.3em] text-[0.31em] text-[#ffffff]/70" }, "*")))
|
|
2507
|
+
)), /* @__PURE__ */ import_react42.default.createElement("div", { className: "col-span-12 flex flex-col gap-5 pb-6 lg:col-span-4 lg:pb-10" }, subtitle && /* @__PURE__ */ import_react42.default.createElement("p", { className: "text-xs text-[#ffffff]/70 sm:text-sm md:text-base leading-[1.2] max-w-md transition-opacity duration-1000 delay-300" }, subtitle), /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center gap-4" }, ctaText && // Changed from <button> to <Link> so it actually navigates!
|
|
2508
|
+
/* @__PURE__ */ import_react42.default.createElement(
|
|
2509
|
+
import_link6.default,
|
|
2536
2510
|
{
|
|
2537
2511
|
href: isWaitlist ? "#" : ctaHref || "#",
|
|
2538
2512
|
onClick: handleCtaClick,
|
|
2539
2513
|
className: "group inline-flex h-10 items-center gap-2 self-start rounded-full bg-[#ffffff] pl-5 pr-1 text-xs text-black transition-all hover:gap-3"
|
|
2540
2514
|
},
|
|
2541
2515
|
ctaText,
|
|
2542
|
-
/* @__PURE__ */
|
|
2543
|
-
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
2544
|
-
|
|
2516
|
+
/* @__PURE__ */ import_react42.default.createElement("span", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-black transition-transform group-hover:scale-110" }, /* @__PURE__ */ import_react42.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "lucide lucide-arrow-right h-4 w-4 text-[#ffffff]" }, /* @__PURE__ */ import_react42.default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ import_react42.default.createElement("path", { d: "m12 5 7 7-7 7" })))
|
|
2517
|
+
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react42.default.createElement(
|
|
2518
|
+
import_link6.default,
|
|
2545
2519
|
{
|
|
2546
2520
|
href: secondaryCtaHref,
|
|
2547
2521
|
className: "inline-flex h-10 items-center self-start justify-center text-xs tracking-wide rounded-full px-6 border border-[#ffffff]/30 text-[#ffffff] hover:bg-[#ffffff]/10 transition-colors"
|
|
2548
2522
|
},
|
|
2549
2523
|
secondaryCtaText
|
|
2550
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */
|
|
2524
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex flex-col gap-3 mt-4" }, appsText && /* @__PURE__ */ import_react42.default.createElement("span", { className: "text-[10px] tracking-widest uppercase text-[#ffffff]/50 " }, appsText), /* @__PURE__ */ import_react42.default.createElement("div", { className: "flex items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ import_react42.default.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-7 sm:w-7 opacity-70 hover:opacity-100 transition-opacity invert" }, /* @__PURE__ */ import_react42.default.createElement(
|
|
2551
2525
|
import_image2.default,
|
|
2552
2526
|
{
|
|
2553
2527
|
src: logo.src,
|
|
@@ -2556,7 +2530,7 @@ var HeroSection = ({
|
|
|
2556
2530
|
height: 28,
|
|
2557
2531
|
className: "object-contain"
|
|
2558
2532
|
}
|
|
2559
|
-
))))))))), /* @__PURE__ */
|
|
2533
|
+
))))))))), /* @__PURE__ */ import_react42.default.createElement(
|
|
2560
2534
|
WaitlistDialog,
|
|
2561
2535
|
{
|
|
2562
2536
|
isOpen: isWaitlistOpen,
|
|
@@ -2566,12 +2540,12 @@ var HeroSection = ({
|
|
|
2566
2540
|
};
|
|
2567
2541
|
|
|
2568
2542
|
// src/components/AppBento2.tsx
|
|
2569
|
-
var
|
|
2570
|
-
var
|
|
2543
|
+
var import_react43 = __toESM(require("react"));
|
|
2544
|
+
var import_react44 = require("@hugeicons/react");
|
|
2571
2545
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2572
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2573
|
-
const titleRef = (0,
|
|
2574
|
-
(0,
|
|
2546
|
+
const [isAnimating, setIsAnimating] = (0, import_react43.useState)(false);
|
|
2547
|
+
const titleRef = (0, import_react43.useRef)(null);
|
|
2548
|
+
(0, import_react43.useEffect)(() => {
|
|
2575
2549
|
const observer = new IntersectionObserver(
|
|
2576
2550
|
([entry]) => {
|
|
2577
2551
|
if (entry.isIntersecting) {
|
|
@@ -2589,7 +2563,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2589
2563
|
}
|
|
2590
2564
|
return () => observer.disconnect();
|
|
2591
2565
|
}, []);
|
|
2592
|
-
return /* @__PURE__ */
|
|
2566
|
+
return /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ import_react43.default.createElement(
|
|
2593
2567
|
"h2",
|
|
2594
2568
|
{
|
|
2595
2569
|
ref: titleRef,
|
|
@@ -2597,7 +2571,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2597
2571
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2598
2572
|
},
|
|
2599
2573
|
headline
|
|
2600
|
-
))), /* @__PURE__ */
|
|
2574
|
+
))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
2601
2575
|
const isWhite = i === 0;
|
|
2602
2576
|
const isBlack = i === 1;
|
|
2603
2577
|
const isNeutral = i === 2;
|
|
@@ -2619,36 +2593,36 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2619
2593
|
const textColor = isBlack ? "text-white" : "text-black";
|
|
2620
2594
|
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
2621
2595
|
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
2622
|
-
return /* @__PURE__ */
|
|
2596
|
+
return /* @__PURE__ */ import_react43.default.createElement(
|
|
2623
2597
|
"div",
|
|
2624
2598
|
{
|
|
2625
2599
|
key: i,
|
|
2626
2600
|
className: `relative rounded-2xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`,
|
|
2627
2601
|
style: { boxShadow: getShadowStyle() }
|
|
2628
2602
|
},
|
|
2629
|
-
/* @__PURE__ */
|
|
2603
|
+
/* @__PURE__ */ import_react43.default.createElement(
|
|
2630
2604
|
"div",
|
|
2631
2605
|
{
|
|
2632
2606
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
2633
2607
|
style: { backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")` }
|
|
2634
2608
|
}
|
|
2635
2609
|
),
|
|
2636
|
-
isBlack && /* @__PURE__ */
|
|
2637
|
-
/* @__PURE__ */
|
|
2638
|
-
/* @__PURE__ */
|
|
2610
|
+
isBlack && /* @__PURE__ */ import_react43.default.createElement("span", { className: "absolute inset-0 rounded-2xl bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none z-10" }),
|
|
2611
|
+
/* @__PURE__ */ import_react43.default.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: `absolute -bottom-8 -right-8 transform group-hover:scale-110 transition-transform duration-700 ease-out ${isBlack ? "text-white/5" : "text-black/5"}` }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: f.icon, size: 180 }))),
|
|
2612
|
+
/* @__PURE__ */ import_react43.default.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ import_react43.default.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ import_react43.default.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ import_react43.default.createElement(import_react44.HugeiconsIcon, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ import_react43.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react43.default.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ import_react43.default.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2639
2613
|
);
|
|
2640
2614
|
})))));
|
|
2641
2615
|
};
|
|
2642
2616
|
|
|
2643
2617
|
// src/components/FeatureScroll.tsx
|
|
2644
|
-
var
|
|
2618
|
+
var import_react45 = __toESM(require("react"));
|
|
2645
2619
|
var import_image3 = __toESM(require("next/image"));
|
|
2646
|
-
var
|
|
2620
|
+
var import_react46 = require("@hugeicons/react");
|
|
2647
2621
|
var import_core_free_icons16 = require("@hugeicons/core-free-icons");
|
|
2648
2622
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
2649
|
-
const [isBgLoading, setIsBgLoading] = (0,
|
|
2650
|
-
const [isFgLoading, setIsFgLoading] = (0,
|
|
2651
|
-
return /* @__PURE__ */
|
|
2623
|
+
const [isBgLoading, setIsBgLoading] = (0, import_react45.useState)(true);
|
|
2624
|
+
const [isFgLoading, setIsFgLoading] = (0, import_react45.useState)(!!feature.image);
|
|
2625
|
+
return /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-100 rounded-2xl overflow-hidden mb-6 flex items-center justify-center" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
2652
2626
|
import_image3.default,
|
|
2653
2627
|
{
|
|
2654
2628
|
src: bgImage,
|
|
@@ -2661,7 +2635,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2661
2635
|
${isBgLoading ? "blur-xl scale-110" : "blur-0 scale-100"}
|
|
2662
2636
|
`
|
|
2663
2637
|
}
|
|
2664
|
-
), /* @__PURE__ */
|
|
2638
|
+
), /* @__PURE__ */ import_react45.default.createElement(
|
|
2665
2639
|
"div",
|
|
2666
2640
|
{
|
|
2667
2641
|
className: "absolute inset-0 w-full h-full pointer-events-none z-0 opacity-[0.25] mix-blend-overlay",
|
|
@@ -2669,7 +2643,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2669
2643
|
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")`
|
|
2670
2644
|
}
|
|
2671
2645
|
}
|
|
2672
|
-
), isFgLoading && feature.image && /* @__PURE__ */
|
|
2646
|
+
), isFgLoading && feature.image && /* @__PURE__ */ import_react45.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-50/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.Loading03Icon, size: 32, className: "animate-spin text-neutral-400" })), feature.image && /* @__PURE__ */ import_react45.default.createElement("div", { className: "absolute -bottom-6 -right-6 w-[85%] h-[85%] z-10 transition-transform duration-700 ease-out group-hover:-translate-x-2 group-hover:-translate-y-2" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
2673
2647
|
import_image3.default,
|
|
2674
2648
|
{
|
|
2675
2649
|
src: feature.image,
|
|
@@ -2682,12 +2656,12 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2682
2656
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
2683
2657
|
`
|
|
2684
2658
|
}
|
|
2685
|
-
))), /* @__PURE__ */
|
|
2659
|
+
))), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ import_react45.default.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 max-w-[90%]" }, feature.desc)));
|
|
2686
2660
|
};
|
|
2687
2661
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
2688
|
-
const scrollRef = (0,
|
|
2689
|
-
const [canScrollLeft, setCanScrollLeft] = (0,
|
|
2690
|
-
const [canScrollRight, setCanScrollRight] = (0,
|
|
2662
|
+
const scrollRef = (0, import_react45.useRef)(null);
|
|
2663
|
+
const [canScrollLeft, setCanScrollLeft] = (0, import_react45.useState)(false);
|
|
2664
|
+
const [canScrollRight, setCanScrollRight] = (0, import_react45.useState)(true);
|
|
2691
2665
|
const checkScroll = () => {
|
|
2692
2666
|
if (scrollRef.current) {
|
|
2693
2667
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -2695,7 +2669,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2695
2669
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
2696
2670
|
}
|
|
2697
2671
|
};
|
|
2698
|
-
(0,
|
|
2672
|
+
(0, import_react45.useEffect)(() => {
|
|
2699
2673
|
checkScroll();
|
|
2700
2674
|
window.addEventListener("resize", checkScroll);
|
|
2701
2675
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -2711,7 +2685,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2711
2685
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
2712
2686
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
2713
2687
|
];
|
|
2714
|
-
return /* @__PURE__ */
|
|
2688
|
+
return /* @__PURE__ */ import_react45.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react45.default.createElement("h2", { className: " text-3xl tracking-tight text-black leading-[1.05]" }, headline)), /* @__PURE__ */ import_react45.default.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
2715
2689
|
"button",
|
|
2716
2690
|
{
|
|
2717
2691
|
onClick: () => scroll("left"),
|
|
@@ -2719,8 +2693,8 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2719
2693
|
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",
|
|
2720
2694
|
"aria-label": "Previous feature"
|
|
2721
2695
|
},
|
|
2722
|
-
/* @__PURE__ */
|
|
2723
|
-
), /* @__PURE__ */
|
|
2696
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowLeft01Icon, size: 20 })
|
|
2697
|
+
), /* @__PURE__ */ import_react45.default.createElement(
|
|
2724
2698
|
"button",
|
|
2725
2699
|
{
|
|
2726
2700
|
onClick: () => scroll("right"),
|
|
@@ -2728,57 +2702,57 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2728
2702
|
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",
|
|
2729
2703
|
"aria-label": "Next feature"
|
|
2730
2704
|
},
|
|
2731
|
-
/* @__PURE__ */
|
|
2732
|
-
))), /* @__PURE__ */
|
|
2705
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 20 })
|
|
2706
|
+
))), /* @__PURE__ */ import_react45.default.createElement(
|
|
2733
2707
|
"div",
|
|
2734
2708
|
{
|
|
2735
2709
|
ref: scrollRef,
|
|
2736
2710
|
onScroll: checkScroll,
|
|
2737
2711
|
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"
|
|
2738
2712
|
},
|
|
2739
|
-
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */
|
|
2740
|
-
), /* @__PURE__ */
|
|
2713
|
+
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ import_react45.default.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
|
|
2714
|
+
), /* @__PURE__ */ import_react45.default.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ import_react45.default.createElement(
|
|
2741
2715
|
"button",
|
|
2742
2716
|
{
|
|
2743
2717
|
onClick: () => scroll("left"),
|
|
2744
2718
|
disabled: !canScrollLeft,
|
|
2745
2719
|
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"
|
|
2746
2720
|
},
|
|
2747
|
-
/* @__PURE__ */
|
|
2748
|
-
), /* @__PURE__ */
|
|
2721
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowLeft01Icon, size: 20 })
|
|
2722
|
+
), /* @__PURE__ */ import_react45.default.createElement(
|
|
2749
2723
|
"button",
|
|
2750
2724
|
{
|
|
2751
2725
|
onClick: () => scroll("right"),
|
|
2752
2726
|
disabled: !canScrollRight,
|
|
2753
2727
|
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"
|
|
2754
2728
|
},
|
|
2755
|
-
/* @__PURE__ */
|
|
2729
|
+
/* @__PURE__ */ import_react45.default.createElement(import_react46.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 20 })
|
|
2756
2730
|
))));
|
|
2757
2731
|
};
|
|
2758
2732
|
|
|
2759
2733
|
// src/components/PlatformFeatures.tsx
|
|
2760
|
-
var
|
|
2761
|
-
var
|
|
2734
|
+
var import_react47 = __toESM(require("react"));
|
|
2735
|
+
var import_react48 = require("@hugeicons/react");
|
|
2762
2736
|
var PlatformFeatures = ({
|
|
2763
2737
|
tagline,
|
|
2764
2738
|
headline,
|
|
2765
2739
|
description,
|
|
2766
2740
|
features
|
|
2767
2741
|
}) => {
|
|
2768
|
-
return /* @__PURE__ */
|
|
2742
|
+
return /* @__PURE__ */ import_react47.default.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ import_react47.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react47.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.05] mb-6" }, headline), /* @__PURE__ */ import_react47.default.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-600 max-w-2xl" }, description)), /* @__PURE__ */ import_react47.default.createElement("div", { className: "w-full h-px bg-neutral-100 mb-16", "aria-hidden": "true" }), /* @__PURE__ */ import_react47.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-12" }, features.map((feature, idx) => /* @__PURE__ */ import_react47.default.createElement(
|
|
2769
2743
|
"div",
|
|
2770
2744
|
{
|
|
2771
2745
|
key: idx,
|
|
2772
2746
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
2773
2747
|
style: { animationDelay: feature.delay || "0ms" }
|
|
2774
2748
|
},
|
|
2775
|
-
/* @__PURE__ */
|
|
2776
|
-
/* @__PURE__ */
|
|
2749
|
+
/* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ import_react47.default.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-200 flex items-center justify-center text-neutral-600 transition-colors duration-300" }, /* @__PURE__ */ import_react47.default.createElement(import_react48.HugeiconsIcon, { icon: feature.icon, size: 24 })), /* @__PURE__ */ import_react47.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react47.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ import_react47.default.createElement("h3", { className: "text-xl tracking-tight text-black" }, feature.title))),
|
|
2750
|
+
/* @__PURE__ */ import_react47.default.createElement("div", null, /* @__PURE__ */ import_react47.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
2777
2751
|
)))));
|
|
2778
2752
|
};
|
|
2779
2753
|
|
|
2780
2754
|
// src/components/ManagedDocument.tsx
|
|
2781
|
-
var
|
|
2755
|
+
var import_react49 = __toESM(require("react"));
|
|
2782
2756
|
var ManagedDocument = ({
|
|
2783
2757
|
tagline,
|
|
2784
2758
|
title,
|
|
@@ -2786,9 +2760,9 @@ var ManagedDocument = ({
|
|
|
2786
2760
|
contactText,
|
|
2787
2761
|
contactEmail
|
|
2788
2762
|
}) => {
|
|
2789
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2790
|
-
const titleRef = (0,
|
|
2791
|
-
(0,
|
|
2763
|
+
const [isAnimating, setIsAnimating] = (0, import_react49.useState)(false);
|
|
2764
|
+
const titleRef = (0, import_react49.useRef)(null);
|
|
2765
|
+
(0, import_react49.useEffect)(() => {
|
|
2792
2766
|
const observer = new IntersectionObserver(
|
|
2793
2767
|
([entry]) => {
|
|
2794
2768
|
if (entry.isIntersecting) {
|
|
@@ -2808,7 +2782,7 @@ var ManagedDocument = ({
|
|
|
2808
2782
|
}, []);
|
|
2809
2783
|
return (
|
|
2810
2784
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
2811
|
-
/* @__PURE__ */
|
|
2785
|
+
/* @__PURE__ */ import_react49.default.createElement("div", { className: "grow pt-4 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react49.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react49.default.createElement(
|
|
2812
2786
|
"h1",
|
|
2813
2787
|
{
|
|
2814
2788
|
ref: titleRef,
|
|
@@ -2816,7 +2790,7 @@ var ManagedDocument = ({
|
|
|
2816
2790
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2817
2791
|
},
|
|
2818
2792
|
title
|
|
2819
|
-
)), sections.map((section, index) => /* @__PURE__ */
|
|
2793
|
+
)), sections.map((section, index) => /* @__PURE__ */ import_react49.default.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ import_react49.default.createElement("p", { className: " text-[11px] tracking-[0.2em] text-black mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ import_react49.default.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-700 space-y-4 text-left " }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ import_react49.default.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ import_react49.default.createElement("div", { className: `border-neutral-100 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ import_react49.default.createElement("p", { className: "text-neutral-900 text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react49.default.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react49.default.createElement(
|
|
2820
2794
|
"a",
|
|
2821
2795
|
{
|
|
2822
2796
|
href: `mailto:${contactEmail}`,
|
|
@@ -2828,18 +2802,18 @@ var ManagedDocument = ({
|
|
|
2828
2802
|
};
|
|
2829
2803
|
|
|
2830
2804
|
// src/components/ManagedContactBlock.tsx
|
|
2831
|
-
var
|
|
2832
|
-
var
|
|
2805
|
+
var import_react50 = __toESM(require("react"));
|
|
2806
|
+
var import_react51 = require("@hugeicons/react");
|
|
2833
2807
|
var SecureEmail = ({ user, domain, className }) => {
|
|
2834
|
-
const [isMounted, setIsMounted] = (0,
|
|
2835
|
-
(0,
|
|
2808
|
+
const [isMounted, setIsMounted] = (0, import_react50.useState)(false);
|
|
2809
|
+
(0, import_react50.useEffect)(() => {
|
|
2836
2810
|
setIsMounted(true);
|
|
2837
2811
|
}, []);
|
|
2838
2812
|
if (!isMounted) {
|
|
2839
|
-
return /* @__PURE__ */
|
|
2813
|
+
return /* @__PURE__ */ import_react50.default.createElement("span", { className, style: { opacity: 0 } }, "Loading");
|
|
2840
2814
|
}
|
|
2841
2815
|
const email = `${user}@${domain}`;
|
|
2842
|
-
return /* @__PURE__ */
|
|
2816
|
+
return /* @__PURE__ */ import_react50.default.createElement("a", { href: `mailto:${email}`, className }, email);
|
|
2843
2817
|
};
|
|
2844
2818
|
var ManagedContactBlock = ({
|
|
2845
2819
|
tagline,
|
|
@@ -2848,7 +2822,7 @@ var ManagedContactBlock = ({
|
|
|
2848
2822
|
emails,
|
|
2849
2823
|
socials
|
|
2850
2824
|
}) => {
|
|
2851
|
-
return /* @__PURE__ */
|
|
2825
|
+
return /* @__PURE__ */ import_react50.default.createElement("div", { className: "grow pt-4 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react50.default.createElement(
|
|
2852
2826
|
"div",
|
|
2853
2827
|
{
|
|
2854
2828
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2857,21 +2831,21 @@ var ManagedContactBlock = ({
|
|
|
2857
2831
|
backgroundRepeat: "repeat"
|
|
2858
2832
|
}
|
|
2859
2833
|
}
|
|
2860
|
-
), /* @__PURE__ */
|
|
2834
|
+
), /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react50.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react50.default.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Contact Details"), /* @__PURE__ */ import_react50.default.createElement("div", { className: "space-y-3 text-[13px] text-neutral-600 leading-[1.8]" }, company.name && /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-black" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ import_react50.default.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ import_react50.default.createElement("p", { className: "pt-2" }, /* @__PURE__ */ import_react50.default.createElement(
|
|
2861
2835
|
"a",
|
|
2862
2836
|
{
|
|
2863
2837
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
2864
2838
|
className: "transition-colors hover:text-black"
|
|
2865
2839
|
},
|
|
2866
2840
|
company.phone
|
|
2867
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */
|
|
2841
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Email Directory"), /* @__PURE__ */ import_react50.default.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ import_react50.default.createElement("div", { key: idx }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ import_react50.default.createElement(
|
|
2868
2842
|
SecureEmail,
|
|
2869
2843
|
{
|
|
2870
2844
|
user: email.user,
|
|
2871
2845
|
domain: email.domain,
|
|
2872
2846
|
className: "text-neutral-600 transition-colors hover:text-black"
|
|
2873
2847
|
}
|
|
2874
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */
|
|
2848
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react50.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Find Us Online"), /* @__PURE__ */ import_react50.default.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ import_react50.default.createElement(
|
|
2875
2849
|
"a",
|
|
2876
2850
|
{
|
|
2877
2851
|
key: idx,
|
|
@@ -2881,27 +2855,27 @@ var ManagedContactBlock = ({
|
|
|
2881
2855
|
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black",
|
|
2882
2856
|
"aria-label": social.label
|
|
2883
2857
|
},
|
|
2884
|
-
/* @__PURE__ */
|
|
2885
|
-
/* @__PURE__ */
|
|
2858
|
+
/* @__PURE__ */ import_react50.default.createElement(import_react51.HugeiconsIcon, { icon: social.icon, size: 18 }),
|
|
2859
|
+
/* @__PURE__ */ import_react50.default.createElement("span", { className: "text-[13px]" }, social.label)
|
|
2886
2860
|
)))))))));
|
|
2887
2861
|
};
|
|
2888
2862
|
|
|
2889
2863
|
// src/components/ManagedPricingBlock.tsx
|
|
2890
|
-
var
|
|
2891
|
-
var
|
|
2864
|
+
var import_react52 = __toESM(require("react"));
|
|
2865
|
+
var import_link7 = __toESM(require("next/link"));
|
|
2892
2866
|
var import_image4 = __toESM(require("next/image"));
|
|
2893
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */
|
|
2894
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */
|
|
2867
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ import_react52.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react52.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ import_react52.default.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
2868
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ import_react52.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react52.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ import_react52.default.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
2895
2869
|
var ManagedPricingBlock = ({
|
|
2896
2870
|
tagline,
|
|
2897
2871
|
title,
|
|
2898
2872
|
plans = [],
|
|
2899
2873
|
tabs
|
|
2900
2874
|
}) => {
|
|
2901
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2902
|
-
const [activeTabIndex, setActiveTabIndex] = (0,
|
|
2903
|
-
const titleRef = (0,
|
|
2904
|
-
(0,
|
|
2875
|
+
const [isAnimating, setIsAnimating] = (0, import_react52.useState)(false);
|
|
2876
|
+
const [activeTabIndex, setActiveTabIndex] = (0, import_react52.useState)(0);
|
|
2877
|
+
const titleRef = (0, import_react52.useRef)(null);
|
|
2878
|
+
(0, import_react52.useEffect)(() => {
|
|
2905
2879
|
const observer = new IntersectionObserver(
|
|
2906
2880
|
([entry]) => {
|
|
2907
2881
|
if (entry.isIntersecting) {
|
|
@@ -2921,7 +2895,7 @@ var ManagedPricingBlock = ({
|
|
|
2921
2895
|
}, []);
|
|
2922
2896
|
const hasTabs = tabs && tabs.length > 0;
|
|
2923
2897
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
2924
|
-
return /* @__PURE__ */
|
|
2898
|
+
return /* @__PURE__ */ import_react52.default.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-[9px] tracking-[0.4em] text-black block " }, tagline), /* @__PURE__ */ import_react52.default.createElement(
|
|
2925
2899
|
"h1",
|
|
2926
2900
|
{
|
|
2927
2901
|
ref: titleRef,
|
|
@@ -2929,30 +2903,30 @@ var ManagedPricingBlock = ({
|
|
|
2929
2903
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2930
2904
|
},
|
|
2931
2905
|
title
|
|
2932
|
-
)), hasTabs && /* @__PURE__ */
|
|
2906
|
+
)), hasTabs && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center bg-white rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, tabs.map((tab, idx) => {
|
|
2933
2907
|
const isActive = activeTabIndex === idx;
|
|
2934
|
-
return /* @__PURE__ */
|
|
2908
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
2935
2909
|
"button",
|
|
2936
2910
|
{
|
|
2937
2911
|
key: idx,
|
|
2938
2912
|
onClick: () => setActiveTabIndex(idx),
|
|
2939
|
-
className: `px-4
|
|
2913
|
+
className: `px-4 py-1.5 rounded-full text-[11px] transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-50 text-black " : "text-neutral-500 hover:text-black hover:bg-neutral-50/50 "}`
|
|
2940
2914
|
},
|
|
2941
2915
|
tab.label
|
|
2942
2916
|
);
|
|
2943
|
-
}))), /* @__PURE__ */
|
|
2917
|
+
}))), /* @__PURE__ */ import_react52.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-3xl animate-in slide-in-from-bottom-2 fade-in duration-500" }, currentPlans.map((plan, planIdx) => /* @__PURE__ */ import_react52.default.createElement(
|
|
2944
2918
|
"div",
|
|
2945
2919
|
{
|
|
2946
2920
|
key: `${activeTabIndex}-${planIdx}`,
|
|
2947
2921
|
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
2948
2922
|
},
|
|
2949
|
-
/* @__PURE__ */
|
|
2923
|
+
/* @__PURE__ */ import_react52.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react52.default.createElement("h3", { className: "text-3xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-xs text-neutral-500 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ import_react52.default.createElement(
|
|
2950
2924
|
"div",
|
|
2951
2925
|
{
|
|
2952
2926
|
key: logoIdx,
|
|
2953
2927
|
className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
|
|
2954
2928
|
},
|
|
2955
|
-
/* @__PURE__ */
|
|
2929
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
2956
2930
|
import_image4.default,
|
|
2957
2931
|
{
|
|
2958
2932
|
src: logo.src,
|
|
@@ -2963,28 +2937,28 @@ var ManagedPricingBlock = ({
|
|
|
2963
2937
|
}
|
|
2964
2938
|
)
|
|
2965
2939
|
)))),
|
|
2966
|
-
plan.isPremium ? /* @__PURE__ */
|
|
2967
|
-
|
|
2940
|
+
plan.isPremium ? /* @__PURE__ */ import_react52.default.createElement(ThreeDButton, { href: plan.ctaHref, className: "mb-6 w-full" }, plan.ctaText) : /* @__PURE__ */ import_react52.default.createElement(
|
|
2941
|
+
import_link7.default,
|
|
2968
2942
|
{
|
|
2969
2943
|
href: plan.ctaHref,
|
|
2970
2944
|
className: "w-full py-2.5 px-5 rounded-full border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 transition-colors mb-6 outline-none block"
|
|
2971
2945
|
},
|
|
2972
2946
|
plan.ctaText
|
|
2973
2947
|
),
|
|
2974
|
-
/* @__PURE__ */
|
|
2948
|
+
/* @__PURE__ */ import_react52.default.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
2975
2949
|
const isAvailable = feature.value !== false;
|
|
2976
2950
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
2977
|
-
return /* @__PURE__ */
|
|
2951
|
+
return /* @__PURE__ */ import_react52.default.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ import_react52.default.createElement(CheckIcon, null) : /* @__PURE__ */ import_react52.default.createElement(CrossIcon, null), /* @__PURE__ */ import_react52.default.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
2978
2952
|
}))
|
|
2979
2953
|
)))));
|
|
2980
2954
|
};
|
|
2981
2955
|
|
|
2982
2956
|
// src/components/ManagedBoardBlock.tsx
|
|
2983
|
-
var
|
|
2957
|
+
var import_react53 = __toESM(require("react"));
|
|
2984
2958
|
var import_image5 = __toESM(require("next/image"));
|
|
2985
|
-
var
|
|
2959
|
+
var import_react54 = require("@hugeicons/react");
|
|
2986
2960
|
var import_core_free_icons17 = require("@hugeicons/core-free-icons");
|
|
2987
|
-
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */
|
|
2961
|
+
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_react53.default.createElement(
|
|
2988
2962
|
"a",
|
|
2989
2963
|
{
|
|
2990
2964
|
href,
|
|
@@ -2993,7 +2967,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_r
|
|
|
2993
2967
|
className: "text-neutral-400 hover:text-black transition-colors",
|
|
2994
2968
|
"aria-label": `${name} on ${label}`
|
|
2995
2969
|
},
|
|
2996
|
-
/* @__PURE__ */
|
|
2970
|
+
/* @__PURE__ */ import_react53.default.createElement(import_react54.HugeiconsIcon, { icon, size: 16 })
|
|
2997
2971
|
);
|
|
2998
2972
|
var ManagedBoardBlock = ({
|
|
2999
2973
|
tagline,
|
|
@@ -3002,7 +2976,7 @@ var ManagedBoardBlock = ({
|
|
|
3002
2976
|
contactText,
|
|
3003
2977
|
contactEmail
|
|
3004
2978
|
}) => {
|
|
3005
|
-
return /* @__PURE__ */
|
|
2979
|
+
return /* @__PURE__ */ import_react53.default.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
3006
2980
|
"div",
|
|
3007
2981
|
{
|
|
3008
2982
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3011,7 +2985,7 @@ var ManagedBoardBlock = ({
|
|
|
3011
2985
|
backgroundRepeat: "repeat"
|
|
3012
2986
|
}
|
|
3013
2987
|
}
|
|
3014
|
-
), /* @__PURE__ */
|
|
2988
|
+
), /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react53.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react53.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5 md:gap-8" }, members.map((member, idx) => /* @__PURE__ */ import_react53.default.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-white flex flex-col transition-all group" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-white overflow-hidden rounded-xl" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
3015
2989
|
import_image5.default,
|
|
3016
2990
|
{
|
|
3017
2991
|
src: member.imageSrc,
|
|
@@ -3020,7 +2994,7 @@ var ManagedBoardBlock = ({
|
|
|
3020
2994
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
3021
2995
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
3022
2996
|
}
|
|
3023
|
-
)), /* @__PURE__ */
|
|
2997
|
+
)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "pt-1" }, /* @__PURE__ */ import_react53.default.createElement("h3", { className: " text-[14px] md:text-[15px] text-black tracking-tight" }, member.name), /* @__PURE__ */ import_react53.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ import_react53.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 text-left grow mb-8" }, member.bio), /* @__PURE__ */ import_react53.default.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ import_react53.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react53.default.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ import_react53.default.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ import_react53.default.createElement(
|
|
3024
2998
|
MemberSocialLink,
|
|
3025
2999
|
{
|
|
3026
3000
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -3028,7 +3002,7 @@ var ManagedBoardBlock = ({
|
|
|
3028
3002
|
label: "X",
|
|
3029
3003
|
name: member.name
|
|
3030
3004
|
}
|
|
3031
|
-
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */
|
|
3005
|
+
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */ import_react53.default.createElement(
|
|
3032
3006
|
MemberSocialLink,
|
|
3033
3007
|
{
|
|
3034
3008
|
href: member.linkedinHandle,
|
|
@@ -3036,28 +3010,28 @@ var ManagedBoardBlock = ({
|
|
|
3036
3010
|
label: "LinkedIn",
|
|
3037
3011
|
name: member.name
|
|
3038
3012
|
}
|
|
3039
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */
|
|
3013
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ import_react53.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react53.default.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react53.default.createElement("a", { href: `mailto:${contactEmail}`, className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
3040
3014
|
};
|
|
3041
3015
|
|
|
3042
3016
|
// src/components/ManagedNotFoundBlock.tsx
|
|
3043
|
-
var
|
|
3017
|
+
var import_react55 = __toESM(require("react"));
|
|
3044
3018
|
var ManagedNotFoundBlock = ({
|
|
3045
3019
|
title = "404 - Page Not Found",
|
|
3046
3020
|
description = "The page you are looking for does not exist or has been moved."
|
|
3047
3021
|
}) => {
|
|
3048
|
-
return /* @__PURE__ */
|
|
3022
|
+
return /* @__PURE__ */ import_react55.default.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-transparent" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ import_react55.default.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
3049
3023
|
"svg",
|
|
3050
3024
|
{
|
|
3051
3025
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3052
3026
|
viewBox: "0 0 24 24",
|
|
3053
3027
|
className: "w-12 h-12 fill-neutral-100"
|
|
3054
3028
|
},
|
|
3055
|
-
/* @__PURE__ */
|
|
3056
|
-
)), /* @__PURE__ */
|
|
3029
|
+
/* @__PURE__ */ import_react55.default.createElement("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" })
|
|
3030
|
+
)), /* @__PURE__ */ import_react55.default.createElement("h1", { className: " text-xl md:text-3xl text-black tracking-tight mb-4" }, title), /* @__PURE__ */ import_react55.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-12" }, description)));
|
|
3057
3031
|
};
|
|
3058
3032
|
|
|
3059
3033
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
3060
|
-
var
|
|
3034
|
+
var import_react56 = __toESM(require("react"));
|
|
3061
3035
|
var import_image6 = __toESM(require("next/image"));
|
|
3062
3036
|
var ManagedNewsletterSplitBlock = ({
|
|
3063
3037
|
tagline,
|
|
@@ -3071,7 +3045,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3071
3045
|
ctaHref = "/contact",
|
|
3072
3046
|
children
|
|
3073
3047
|
}) => {
|
|
3074
|
-
return /* @__PURE__ */
|
|
3048
|
+
return /* @__PURE__ */ import_react56.default.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden" }, /* @__PURE__ */ import_react56.default.createElement(
|
|
3075
3049
|
import_image6.default,
|
|
3076
3050
|
{
|
|
3077
3051
|
src: imageSrc,
|
|
@@ -3081,7 +3055,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3081
3055
|
className: "object-cover object-top grayscale opacity-60",
|
|
3082
3056
|
quality: 100
|
|
3083
3057
|
}
|
|
3084
|
-
), /* @__PURE__ */
|
|
3058
|
+
), /* @__PURE__ */ import_react56.default.createElement(
|
|
3085
3059
|
"div",
|
|
3086
3060
|
{
|
|
3087
3061
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
@@ -3089,7 +3063,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3089
3063
|
background: "linear-gradient(to right, rgba(255,255,255,0) 30%, #ffffff 100%)"
|
|
3090
3064
|
}
|
|
3091
3065
|
}
|
|
3092
|
-
), /* @__PURE__ */
|
|
3066
|
+
), /* @__PURE__ */ import_react56.default.createElement(
|
|
3093
3067
|
"div",
|
|
3094
3068
|
{
|
|
3095
3069
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
@@ -3097,7 +3071,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3097
3071
|
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
3098
3072
|
}
|
|
3099
3073
|
}
|
|
3100
|
-
)), /* @__PURE__ */
|
|
3074
|
+
)), /* @__PURE__ */ import_react56.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_react56.default.createElement("div", { className: "relative w-full max-w-lg p-8 md:p-12 text-center md:text-left transition-all duration-700 ease-out" }, /* @__PURE__ */ import_react56.default.createElement(
|
|
3101
3075
|
"div",
|
|
3102
3076
|
{
|
|
3103
3077
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3106,7 +3080,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3106
3080
|
backgroundRepeat: "repeat"
|
|
3107
3081
|
}
|
|
3108
3082
|
}
|
|
3109
|
-
), /* @__PURE__ */
|
|
3083
|
+
), /* @__PURE__ */ import_react56.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "mb-10 border-b border-neutral-100 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ import_react56.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 " }, tagline), /* @__PURE__ */ import_react56.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, subtitle)), /* @__PURE__ */ import_react56.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ import_react56.default.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ import_react56.default.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ import_react56.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react56.default.createElement("div", { className: "grow h-px bg-neutral-100" }), /* @__PURE__ */ import_react56.default.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-400 " }, dividerText), /* @__PURE__ */ import_react56.default.createElement("div", { className: "grow h-px bg-neutral-100" })), ctaText && ctaHref && /* @__PURE__ */ import_react56.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react56.default.createElement(
|
|
3110
3084
|
ThreeDButton,
|
|
3111
3085
|
{
|
|
3112
3086
|
href: ctaHref,
|
|
@@ -3117,14 +3091,14 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
3117
3091
|
};
|
|
3118
3092
|
|
|
3119
3093
|
// src/components/PortfolioHero.tsx
|
|
3120
|
-
var
|
|
3121
|
-
var
|
|
3094
|
+
var import_react57 = __toESM(require("react"));
|
|
3095
|
+
var import_link8 = __toESM(require("next/link"));
|
|
3122
3096
|
var import_image7 = __toESM(require("next/image"));
|
|
3123
|
-
var
|
|
3097
|
+
var import_react58 = require("@hugeicons/react");
|
|
3124
3098
|
var import_core_free_icons18 = require("@hugeicons/core-free-icons");
|
|
3125
3099
|
var useScrollAnimation = () => {
|
|
3126
|
-
const elementRef = (0,
|
|
3127
|
-
(0,
|
|
3100
|
+
const elementRef = (0, import_react57.useRef)(null);
|
|
3101
|
+
(0, import_react57.useEffect)(() => {
|
|
3128
3102
|
const el = elementRef.current;
|
|
3129
3103
|
if (!el) return;
|
|
3130
3104
|
const observer = new IntersectionObserver(
|
|
@@ -3160,13 +3134,13 @@ var PortfolioHero = ({
|
|
|
3160
3134
|
secondaryCtaHref
|
|
3161
3135
|
}) => {
|
|
3162
3136
|
const heroContentRef = useScrollAnimation();
|
|
3163
|
-
return /* @__PURE__ */
|
|
3137
|
+
return /* @__PURE__ */ import_react57.default.createElement("section", { className: "pt-8 pb-16 px-6 md:px-12 flex flex-col relative overflow-hidden z-10 w-full" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
3164
3138
|
"div",
|
|
3165
3139
|
{
|
|
3166
3140
|
ref: heroContentRef,
|
|
3167
3141
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
3168
3142
|
},
|
|
3169
|
-
/* @__PURE__ */
|
|
3143
|
+
/* @__PURE__ */ import_react57.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden border border-neutral-100 shrink-0 shadow-sm" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
3170
3144
|
import_image7.default,
|
|
3171
3145
|
{
|
|
3172
3146
|
src: imageSrc,
|
|
@@ -3177,7 +3151,7 @@ var PortfolioHero = ({
|
|
|
3177
3151
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
3178
3152
|
quality: 100
|
|
3179
3153
|
}
|
|
3180
|
-
)), /* @__PURE__ */
|
|
3154
|
+
)), /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ import_react57.default.createElement("h1", { className: " text-3xl sm:text-5xl lg:text-6xl tracking-tight text-black leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ import_react57.default.createElement(
|
|
3181
3155
|
"a",
|
|
3182
3156
|
{
|
|
3183
3157
|
href: socialLinkHref,
|
|
@@ -3187,30 +3161,30 @@ var PortfolioHero = ({
|
|
|
3187
3161
|
},
|
|
3188
3162
|
socialLinkText
|
|
3189
3163
|
))),
|
|
3190
|
-
/* @__PURE__ */
|
|
3191
|
-
/* @__PURE__ */
|
|
3164
|
+
/* @__PURE__ */ import_react57.default.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-600" }, bio),
|
|
3165
|
+
/* @__PURE__ */ import_react57.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ import_react57.default.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
3192
3166
|
ThreeDButton,
|
|
3193
3167
|
{
|
|
3194
3168
|
href: primaryCtaHref,
|
|
3195
3169
|
className: "py-3 tracking-widest text-[11px]"
|
|
3196
3170
|
},
|
|
3197
3171
|
primaryCtaText
|
|
3198
|
-
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
3199
|
-
|
|
3172
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react57.default.createElement(
|
|
3173
|
+
import_link8.default,
|
|
3200
3174
|
{
|
|
3201
3175
|
href: secondaryCtaHref,
|
|
3202
3176
|
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"
|
|
3203
3177
|
},
|
|
3204
3178
|
secondaryCtaText,
|
|
3205
|
-
/* @__PURE__ */
|
|
3179
|
+
/* @__PURE__ */ import_react57.default.createElement(import_react58.HugeiconsIcon, { icon: import_core_free_icons18.ArrowRight01Icon, size: 16 })
|
|
3206
3180
|
))
|
|
3207
3181
|
));
|
|
3208
3182
|
};
|
|
3209
3183
|
|
|
3210
3184
|
// src/components/GifFeatureCard.tsx
|
|
3211
|
-
var
|
|
3185
|
+
var import_react59 = __toESM(require("react"));
|
|
3212
3186
|
var import_image8 = __toESM(require("next/image"));
|
|
3213
|
-
var
|
|
3187
|
+
var import_react60 = require("@hugeicons/react");
|
|
3214
3188
|
var import_core_free_icons19 = require("@hugeicons/core-free-icons");
|
|
3215
3189
|
var GifFeatureCard = ({
|
|
3216
3190
|
gifSrc,
|
|
@@ -3219,20 +3193,20 @@ var GifFeatureCard = ({
|
|
|
3219
3193
|
alt = "Feature animation",
|
|
3220
3194
|
className = "aspect-video"
|
|
3221
3195
|
}) => {
|
|
3222
|
-
const [isLoading, setIsLoading] = (0,
|
|
3223
|
-
return /* @__PURE__ */
|
|
3224
|
-
|
|
3196
|
+
const [isLoading, setIsLoading] = (0, import_react59.useState)(true);
|
|
3197
|
+
return /* @__PURE__ */ import_react59.default.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ import_react59.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ import_react59.default.createElement(
|
|
3198
|
+
import_react60.HugeiconsIcon,
|
|
3225
3199
|
{
|
|
3226
3200
|
icon: import_core_free_icons19.Loading03Icon,
|
|
3227
3201
|
size: 32,
|
|
3228
3202
|
className: "animate-spin text-white"
|
|
3229
3203
|
}
|
|
3230
|
-
)), /* @__PURE__ */
|
|
3204
|
+
)), /* @__PURE__ */ import_react59.default.createElement(
|
|
3231
3205
|
"div",
|
|
3232
3206
|
{
|
|
3233
3207
|
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"}`
|
|
3234
3208
|
},
|
|
3235
|
-
/* @__PURE__ */
|
|
3209
|
+
/* @__PURE__ */ import_react59.default.createElement(
|
|
3236
3210
|
import_image8.default,
|
|
3237
3211
|
{
|
|
3238
3212
|
src: gifSrc,
|
|
@@ -3243,16 +3217,16 @@ var GifFeatureCard = ({
|
|
|
3243
3217
|
className: "object-cover object-center pointer-events-none"
|
|
3244
3218
|
}
|
|
3245
3219
|
)
|
|
3246
|
-
), /* @__PURE__ */
|
|
3220
|
+
), /* @__PURE__ */ import_react59.default.createElement(
|
|
3247
3221
|
"div",
|
|
3248
3222
|
{
|
|
3249
3223
|
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"
|
|
3250
3224
|
}
|
|
3251
|
-
), /* @__PURE__ */
|
|
3225
|
+
), /* @__PURE__ */ import_react59.default.createElement("div", { className: "absolute inset-x-0 bottom-0 p-6 sm:p-8 z-30 flex flex-col justify-end text-left pointer-events-none" }, title && /* @__PURE__ */ import_react59.default.createElement("h3", { className: " text-xl sm:text-2xl md:text-3xl text-white tracking-tight mb-2 sm:mb-3 drop-shadow-md" }, title), subtitle && /* @__PURE__ */ import_react59.default.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
3252
3226
|
};
|
|
3253
3227
|
|
|
3254
3228
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
3255
|
-
var
|
|
3229
|
+
var import_react61 = __toESM(require("react"));
|
|
3256
3230
|
var import_image9 = __toESM(require("next/image"));
|
|
3257
3231
|
var MedicalFeatureStatsBlock = ({
|
|
3258
3232
|
bottomHeadline,
|
|
@@ -3261,9 +3235,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3261
3235
|
trustText,
|
|
3262
3236
|
stats
|
|
3263
3237
|
}) => {
|
|
3264
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
3265
|
-
const titleRef = (0,
|
|
3266
|
-
(0,
|
|
3238
|
+
const [isAnimating, setIsAnimating] = (0, import_react61.useState)(false);
|
|
3239
|
+
const titleRef = (0, import_react61.useRef)(null);
|
|
3240
|
+
(0, import_react61.useEffect)(() => {
|
|
3267
3241
|
const observer = new IntersectionObserver(
|
|
3268
3242
|
([entry]) => {
|
|
3269
3243
|
if (entry.isIntersecting) {
|
|
@@ -3281,7 +3255,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3281
3255
|
}
|
|
3282
3256
|
return () => observer.disconnect();
|
|
3283
3257
|
}, []);
|
|
3284
|
-
return /* @__PURE__ */
|
|
3258
|
+
return /* @__PURE__ */ import_react61.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ import_react61.default.createElement(
|
|
3285
3259
|
"h2",
|
|
3286
3260
|
{
|
|
3287
3261
|
ref: titleRef,
|
|
@@ -3289,7 +3263,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3289
3263
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
3290
3264
|
},
|
|
3291
3265
|
bottomHeadline
|
|
3292
|
-
), /* @__PURE__ */
|
|
3266
|
+
), /* @__PURE__ */ import_react61.default.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ import_react61.default.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-white overflow-hidden bg-neutral-100 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ import_react61.default.createElement(
|
|
3293
3267
|
import_image9.default,
|
|
3294
3268
|
{
|
|
3295
3269
|
src,
|
|
@@ -3298,17 +3272,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
3298
3272
|
sizes: "48px",
|
|
3299
3273
|
className: "object-cover"
|
|
3300
3274
|
}
|
|
3301
|
-
)))), /* @__PURE__ */
|
|
3275
|
+
)))), /* @__PURE__ */ import_react61.default.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react61.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react61.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react61.default.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ import_react61.default.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react61.default.createElement("h1", { className: "text-6xl gradient-text md:text-[80px] tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
|
|
3302
3276
|
};
|
|
3303
3277
|
|
|
3304
3278
|
// src/components/ConsultantShowcase.tsx
|
|
3305
|
-
var
|
|
3279
|
+
var import_react62 = __toESM(require("react"));
|
|
3306
3280
|
var import_image10 = __toESM(require("next/image"));
|
|
3307
|
-
var
|
|
3281
|
+
var import_react63 = require("@hugeicons/react");
|
|
3308
3282
|
var import_core_free_icons20 = require("@hugeicons/core-free-icons");
|
|
3309
3283
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
3310
|
-
const [isLoading, setIsLoading] = (0,
|
|
3311
|
-
return /* @__PURE__ */
|
|
3284
|
+
const [isLoading, setIsLoading] = (0, import_react62.useState)(true);
|
|
3285
|
+
return /* @__PURE__ */ import_react62.default.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-800/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ import_react62.default.createElement(import_react63.HugeiconsIcon, { icon: import_core_free_icons20.Loading03Icon, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ import_react62.default.createElement(
|
|
3312
3286
|
import_image10.default,
|
|
3313
3287
|
{
|
|
3314
3288
|
src,
|
|
@@ -3327,9 +3301,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
3327
3301
|
var ConsultantShowcase = ({
|
|
3328
3302
|
profiles
|
|
3329
3303
|
}) => {
|
|
3330
|
-
const [currentIndex, setCurrentIndex] = (0,
|
|
3331
|
-
const [touchStart, setTouchStart] = (0,
|
|
3332
|
-
const [touchEnd, setTouchEnd] = (0,
|
|
3304
|
+
const [currentIndex, setCurrentIndex] = (0, import_react62.useState)(0);
|
|
3305
|
+
const [touchStart, setTouchStart] = (0, import_react62.useState)(null);
|
|
3306
|
+
const [touchEnd, setTouchEnd] = (0, import_react62.useState)(null);
|
|
3333
3307
|
const nextSlide = () => {
|
|
3334
3308
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
3335
3309
|
};
|
|
@@ -3354,7 +3328,7 @@ var ConsultantShowcase = ({
|
|
|
3354
3328
|
}
|
|
3355
3329
|
};
|
|
3356
3330
|
if (!profiles || profiles.length === 0) return null;
|
|
3357
|
-
return /* @__PURE__ */
|
|
3331
|
+
return /* @__PURE__ */ import_react62.default.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react62.default.createElement(
|
|
3358
3332
|
"div",
|
|
3359
3333
|
{
|
|
3360
3334
|
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
@@ -3364,13 +3338,13 @@ var ConsultantShowcase = ({
|
|
|
3364
3338
|
},
|
|
3365
3339
|
profiles.map((profile, idx) => {
|
|
3366
3340
|
const isActive = idx === currentIndex;
|
|
3367
|
-
return /* @__PURE__ */
|
|
3341
|
+
return /* @__PURE__ */ import_react62.default.createElement(
|
|
3368
3342
|
"div",
|
|
3369
3343
|
{
|
|
3370
3344
|
key: profile.id,
|
|
3371
3345
|
className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
|
|
3372
3346
|
},
|
|
3373
|
-
/* @__PURE__ */
|
|
3347
|
+
/* @__PURE__ */ import_react62.default.createElement(
|
|
3374
3348
|
ImageWithLoader,
|
|
3375
3349
|
{
|
|
3376
3350
|
src: profile.imageSrc,
|
|
@@ -3378,14 +3352,14 @@ var ConsultantShowcase = ({
|
|
|
3378
3352
|
priority: idx === 0
|
|
3379
3353
|
}
|
|
3380
3354
|
),
|
|
3381
|
-
/* @__PURE__ */
|
|
3382
|
-
/* @__PURE__ */
|
|
3383
|
-
/* @__PURE__ */
|
|
3355
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
3356
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/30 to-transparent z-20 pointer-events-none" }),
|
|
3357
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ import_react62.default.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ import_react62.default.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[15px] text-white/80 tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ import_react62.default.createElement("p", { className: "text-[15px] text-white/80 tracking-wide mt-1" }, profile.description)))
|
|
3384
3358
|
);
|
|
3385
3359
|
}),
|
|
3386
|
-
/* @__PURE__ */
|
|
3387
|
-
/* @__PURE__ */
|
|
3388
|
-
/* @__PURE__ */
|
|
3360
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide, "aria-label": "Previous image" }),
|
|
3361
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide, "aria-label": "Next image" }),
|
|
3362
|
+
/* @__PURE__ */ import_react62.default.createElement("div", { className: "absolute bottom-6 md:bottom-8 left-0 w-full px-4 z-30 flex justify-center items-center gap-2" }, profiles.map((_, idx) => /* @__PURE__ */ import_react62.default.createElement(
|
|
3389
3363
|
"button",
|
|
3390
3364
|
{
|
|
3391
3365
|
key: idx,
|
|
@@ -3398,13 +3372,13 @@ var ConsultantShowcase = ({
|
|
|
3398
3372
|
};
|
|
3399
3373
|
|
|
3400
3374
|
// src/components/ContentGridBlock.tsx
|
|
3401
|
-
var
|
|
3375
|
+
var import_react64 = __toESM(require("react"));
|
|
3402
3376
|
var import_image11 = __toESM(require("next/image"));
|
|
3403
|
-
var
|
|
3377
|
+
var import_react65 = require("@hugeicons/react");
|
|
3404
3378
|
var import_core_free_icons21 = require("@hugeicons/core-free-icons");
|
|
3405
3379
|
var ImageWithLoader2 = ({ src, alt, className, sizes }) => {
|
|
3406
|
-
const [isLoading, setIsLoading] = (0,
|
|
3407
|
-
return /* @__PURE__ */
|
|
3380
|
+
const [isLoading, setIsLoading] = (0, import_react64.useState)(true);
|
|
3381
|
+
return /* @__PURE__ */ import_react64.default.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-100/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ import_react64.default.createElement(import_react65.HugeiconsIcon, { icon: import_core_free_icons21.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react64.default.createElement(
|
|
3408
3382
|
import_image11.default,
|
|
3409
3383
|
{
|
|
3410
3384
|
src,
|
|
@@ -3426,30 +3400,30 @@ var ContentGridBlock = ({
|
|
|
3426
3400
|
middleBottomCard,
|
|
3427
3401
|
rightCards
|
|
3428
3402
|
}) => {
|
|
3429
|
-
return /* @__PURE__ */
|
|
3403
|
+
return /* @__PURE__ */ import_react64.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react64.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react64.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react64.default.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react64.default.createElement("div", null, /* @__PURE__ */ import_react64.default.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ import_react64.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react64.default.createElement(import_image11.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react64.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react64.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ import_react64.default.createElement(import_image11.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react64.default.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-50/50 border border-neutral-100 text-[13px] text-neutral-600" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ import_react64.default.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react64.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react64.default.createElement("div", null, /* @__PURE__ */ import_react64.default.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react64.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react64.default.createElement(import_image11.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react64.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react64.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ import_react64.default.createElement("div", { key: idx, className: "relative w-full h-80 text-white rounded-3xl overflow-hidden group" }, /* @__PURE__ */ import_react64.default.createElement(
|
|
3430
3404
|
ImageWithLoader2,
|
|
3431
3405
|
{
|
|
3432
3406
|
src: card.bgImageSrc,
|
|
3433
3407
|
alt: card.title,
|
|
3434
3408
|
className: "absolute inset-0 w-full h-full"
|
|
3435
3409
|
}
|
|
3436
|
-
), /* @__PURE__ */
|
|
3410
|
+
), /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ import_react64.default.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ import_react64.default.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ import_react64.default.createElement("div", { className: "pt-3" }, /* @__PURE__ */ import_react64.default.createElement("h4", { className: "text-[15px] text-white tracking-wide" }, card.title), /* @__PURE__ */ import_react64.default.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
|
|
3437
3411
|
};
|
|
3438
3412
|
|
|
3439
3413
|
// src/components/ManagedProjectsBlock.tsx
|
|
3440
|
-
var
|
|
3441
|
-
var
|
|
3414
|
+
var import_react66 = __toESM(require("react"));
|
|
3415
|
+
var import_link9 = __toESM(require("next/link"));
|
|
3442
3416
|
var GridSection = ({
|
|
3443
3417
|
children,
|
|
3444
3418
|
isLast = false,
|
|
3445
3419
|
className = "py-8 md:py-10"
|
|
3446
|
-
}) => /* @__PURE__ */
|
|
3420
|
+
}) => /* @__PURE__ */ import_react66.default.createElement("div", { className: `relative px-5 md:px-12 ${className} ${!isLast ? "" : ""}` }, children);
|
|
3447
3421
|
var ManagedProjectsBlock = ({
|
|
3448
3422
|
tagline,
|
|
3449
3423
|
title,
|
|
3450
3424
|
projects
|
|
3451
3425
|
}) => {
|
|
3452
|
-
return /* @__PURE__ */
|
|
3426
|
+
return /* @__PURE__ */ import_react66.default.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-5xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react66.default.createElement(
|
|
3453
3427
|
"div",
|
|
3454
3428
|
{
|
|
3455
3429
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -3458,10 +3432,10 @@ var ManagedProjectsBlock = ({
|
|
|
3458
3432
|
backgroundRepeat: "repeat"
|
|
3459
3433
|
}
|
|
3460
3434
|
}
|
|
3461
|
-
), /* @__PURE__ */
|
|
3435
|
+
), /* @__PURE__ */ import_react66.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react66.default.createElement(GridSection, null, tagline && /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react66.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
3462
3436
|
const isLast = index === projects.length - 1;
|
|
3463
|
-
const projectContent = /* @__PURE__ */
|
|
3464
|
-
return /* @__PURE__ */
|
|
3437
|
+
const projectContent = /* @__PURE__ */ import_react66.default.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ import_react66.default.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ import_react66.default.createElement("h2", { className: " text-[16px] text-black transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-[11px] opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300" }, project.isExternal ? "\u2197" : "\u2192")), /* @__PURE__ */ import_react66.default.createElement("span", { className: `text-[9px] px-2.5 py-1 rounded-full tracking-[0.15em] transition-colors ${project.status.toLowerCase() === "production" ? "bg-black text-white" : "bg-neutral-100 text-neutral-500 group-hover:bg-neutral-100 group-hover:text-black"}` }, project.status)), /* @__PURE__ */ import_react66.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0 " }, project.date)), /* @__PURE__ */ import_react66.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 max-w-4xl text-left transition-colors group-hover:text-black" }, project.description));
|
|
3438
|
+
return /* @__PURE__ */ import_react66.default.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ import_react66.default.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ import_react66.default.createElement(import_link9.default, { href: project.link, className: "block outline-none" }, projectContent));
|
|
3465
3439
|
}))));
|
|
3466
3440
|
};
|
|
3467
3441
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -3499,6 +3473,7 @@ var ManagedProjectsBlock = ({
|
|
|
3499
3473
|
UniversalOrganizationPage,
|
|
3500
3474
|
UniversalProfilePage,
|
|
3501
3475
|
UniversalProfileSettings,
|
|
3476
|
+
UniversalSidebar,
|
|
3502
3477
|
UniversalTransactionPage,
|
|
3503
3478
|
UniversalWalletPage,
|
|
3504
3479
|
WaitlistDialog
|