@retinalabsllc/zairusjs 9.0.9 → 9.0.10
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 +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +479 -237
- package/dist/index.mjs +489 -245
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1642,9 +1642,121 @@ var UniversalWalletPage = ({
|
|
|
1642
1642
|
};
|
|
1643
1643
|
|
|
1644
1644
|
// src/components/UniversalCardPage.tsx
|
|
1645
|
+
var import_react33 = __toESM(require("react"));
|
|
1646
|
+
var import_react34 = require("@hugeicons/react");
|
|
1647
|
+
var import_core_free_icons12 = require("@hugeicons/core-free-icons");
|
|
1648
|
+
|
|
1649
|
+
// src/components/ConfirmationDialog.tsx
|
|
1645
1650
|
var import_react29 = __toESM(require("react"));
|
|
1646
1651
|
var import_react30 = require("@hugeicons/react");
|
|
1647
1652
|
var import_core_free_icons10 = require("@hugeicons/core-free-icons");
|
|
1653
|
+
var ConfirmationDialog = ({
|
|
1654
|
+
isOpen,
|
|
1655
|
+
title,
|
|
1656
|
+
message,
|
|
1657
|
+
confirmText = "Confirm",
|
|
1658
|
+
cancelText = "Cancel",
|
|
1659
|
+
isProcessing = false,
|
|
1660
|
+
isDestructive = true,
|
|
1661
|
+
onClose,
|
|
1662
|
+
onConfirm
|
|
1663
|
+
}) => {
|
|
1664
|
+
if (!isOpen) return null;
|
|
1665
|
+
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(
|
|
1666
|
+
"div",
|
|
1667
|
+
{
|
|
1668
|
+
className: "absolute inset-0 bg-black/40 ",
|
|
1669
|
+
onClick: () => !isProcessing && onClose()
|
|
1670
|
+
}
|
|
1671
|
+
), /* @__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 font-medium 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(
|
|
1672
|
+
"button",
|
|
1673
|
+
{
|
|
1674
|
+
onClick: onClose,
|
|
1675
|
+
disabled: isProcessing,
|
|
1676
|
+
className: "flex-1 py-4 text-[14px] text-neutral-500 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none font-medium"
|
|
1677
|
+
},
|
|
1678
|
+
cancelText
|
|
1679
|
+
), /* @__PURE__ */ import_react29.default.createElement(
|
|
1680
|
+
"button",
|
|
1681
|
+
{
|
|
1682
|
+
onClick: onConfirm,
|
|
1683
|
+
disabled: isProcessing,
|
|
1684
|
+
className: `flex-1 py-4 text-[14px] transition-colors disabled:opacity-50 flex justify-center items-center outline-none font-medium ${isDestructive ? "text-red-500 hover:bg-red-50" : "text-black hover:bg-neutral-50"}`
|
|
1685
|
+
},
|
|
1686
|
+
isProcessing ? /* @__PURE__ */ import_react29.default.createElement(import_react30.HugeiconsIcon, { icon: import_core_free_icons10.Loading03Icon, className: "animate-spin", size: 18 }) : confirmText
|
|
1687
|
+
))));
|
|
1688
|
+
};
|
|
1689
|
+
|
|
1690
|
+
// src/components/PinDialerBottomSheet.tsx
|
|
1691
|
+
var import_react31 = __toESM(require("react"));
|
|
1692
|
+
var import_react32 = require("@hugeicons/react");
|
|
1693
|
+
var import_core_free_icons11 = require("@hugeicons/core-free-icons");
|
|
1694
|
+
var PinDialerBottomSheet = ({
|
|
1695
|
+
isOpen,
|
|
1696
|
+
title = "Enter PIN to Continue",
|
|
1697
|
+
isVerifying = false,
|
|
1698
|
+
onClose,
|
|
1699
|
+
onComplete
|
|
1700
|
+
}) => {
|
|
1701
|
+
const [pin, setPin] = (0, import_react31.useState)("");
|
|
1702
|
+
(0, import_react31.useEffect)(() => {
|
|
1703
|
+
setPin("");
|
|
1704
|
+
}, [isOpen]);
|
|
1705
|
+
const handlePinPress = (value) => {
|
|
1706
|
+
if (isVerifying) return;
|
|
1707
|
+
if (value === "del") {
|
|
1708
|
+
setPin((prev) => prev.slice(0, -1));
|
|
1709
|
+
return;
|
|
1710
|
+
}
|
|
1711
|
+
if (pin.length < 4) {
|
|
1712
|
+
const newPin = pin + value;
|
|
1713
|
+
setPin(newPin);
|
|
1714
|
+
if (newPin.length === 4) {
|
|
1715
|
+
onComplete(newPin);
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
};
|
|
1719
|
+
if (!isOpen) return null;
|
|
1720
|
+
return /* @__PURE__ */ import_react31.default.createElement("div", { className: "fixed inset-0 z-150 flex flex-col justify-end pointer-events-auto" }, /* @__PURE__ */ import_react31.default.createElement(
|
|
1721
|
+
"div",
|
|
1722
|
+
{
|
|
1723
|
+
className: "absolute inset-0 bg-black/40 animate-in fade-in duration-300",
|
|
1724
|
+
onClick: () => {
|
|
1725
|
+
if (!isVerifying) onClose();
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
), /* @__PURE__ */ import_react31.default.createElement("div", { className: "relative w-full max-w-md mx-auto bg-white rounded-t-3xl shadow-2xl p-6 pb-12 animate-in slide-in-from-bottom-full duration-300" }, /* @__PURE__ */ import_react31.default.createElement("h3", { className: "text-center font-medium text-black mb-6 tracking-tight" }, title), /* @__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(
|
|
1729
|
+
"div",
|
|
1730
|
+
{
|
|
1731
|
+
key: i,
|
|
1732
|
+
className: `w-3.5 h-3.5 rounded-full transition-colors duration-200 ${pin.length > i ? "bg-black" : "bg-neutral-200"}`
|
|
1733
|
+
}
|
|
1734
|
+
))), isVerifying && /* @__PURE__ */ import_react31.default.createElement("div", { className: "absolute inset-0 bg-white/80 backdrop-blur-sm z-10 flex flex-col items-center justify-center rounded-t-3xl" }, /* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon: import_core_free_icons11.Loading03Icon, size: 32, className: "animate-spin text-black mb-2" })), /* @__PURE__ */ import_react31.default.createElement("div", { className: "grid grid-cols-3 gap-y-4 gap-x-6 max-w-65 mx-auto" }, [1, 2, 3, 4, 5, 6, 7, 8, 9].map((num) => /* @__PURE__ */ import_react31.default.createElement(
|
|
1735
|
+
"button",
|
|
1736
|
+
{
|
|
1737
|
+
key: num,
|
|
1738
|
+
onClick: () => handlePinPress(num),
|
|
1739
|
+
className: "w-16 h-16 rounded-full flex items-center justify-center text-2xl font-medium text-black hover:bg-neutral-100 transition-colors mx-auto outline-none active:scale-95"
|
|
1740
|
+
},
|
|
1741
|
+
num
|
|
1742
|
+
)), /* @__PURE__ */ import_react31.default.createElement("div", null), " ", /* @__PURE__ */ import_react31.default.createElement(
|
|
1743
|
+
"button",
|
|
1744
|
+
{
|
|
1745
|
+
onClick: () => handlePinPress(0),
|
|
1746
|
+
className: "w-16 h-16 rounded-full flex items-center justify-center text-2xl font-medium text-black hover:bg-neutral-100 transition-colors mx-auto outline-none active:scale-95"
|
|
1747
|
+
},
|
|
1748
|
+
"0"
|
|
1749
|
+
), /* @__PURE__ */ import_react31.default.createElement(
|
|
1750
|
+
"button",
|
|
1751
|
+
{
|
|
1752
|
+
onClick: () => handlePinPress("del"),
|
|
1753
|
+
className: "w-16 h-16 rounded-full flex items-center justify-center text-black hover:bg-neutral-100 transition-colors mx-auto outline-none active:scale-95"
|
|
1754
|
+
},
|
|
1755
|
+
/* @__PURE__ */ import_react31.default.createElement(import_react32.HugeiconsIcon, { icon: import_core_free_icons11.Delete01Icon, size: 24 })
|
|
1756
|
+
))));
|
|
1757
|
+
};
|
|
1758
|
+
|
|
1759
|
+
// src/components/UniversalCardPage.tsx
|
|
1648
1760
|
var UniversalCardPage = ({
|
|
1649
1761
|
cardHolderName,
|
|
1650
1762
|
cardNumber,
|
|
@@ -1658,101 +1770,204 @@ var UniversalCardPage = ({
|
|
|
1658
1770
|
onSetLimits,
|
|
1659
1771
|
onDelete
|
|
1660
1772
|
}) => {
|
|
1661
|
-
const [isFlipped, setIsFlipped] = (0,
|
|
1662
|
-
|
|
1773
|
+
const [isFlipped, setIsFlipped] = (0, import_react33.useState)(false);
|
|
1774
|
+
const [isBgLoaded, setIsBgLoaded] = (0, import_react33.useState)(false);
|
|
1775
|
+
const [isRevealed, setIsRevealed] = (0, import_react33.useState)(false);
|
|
1776
|
+
const [isRevealing, setIsRevealing] = (0, import_react33.useState)(false);
|
|
1777
|
+
const [isFrozen, setIsFrozen] = (0, import_react33.useState)(false);
|
|
1778
|
+
const [isFreezing, setIsFreezing] = (0, import_react33.useState)(false);
|
|
1779
|
+
const [showDeleteDialog, setShowDeleteDialog] = (0, import_react33.useState)(false);
|
|
1780
|
+
const [isDeleting, setIsDeleting] = (0, import_react33.useState)(false);
|
|
1781
|
+
const [showPinDialer, setShowPinDialer] = (0, import_react33.useState)(false);
|
|
1782
|
+
(0, import_react33.useEffect)(() => {
|
|
1783
|
+
if (!cardBgSrc) return;
|
|
1784
|
+
const img = new Image();
|
|
1785
|
+
img.src = cardBgSrc;
|
|
1786
|
+
img.onload = () => {
|
|
1787
|
+
setTimeout(() => setIsBgLoaded(true), 300);
|
|
1788
|
+
};
|
|
1789
|
+
}, [cardBgSrc]);
|
|
1790
|
+
const handleToggleReveal = () => {
|
|
1791
|
+
if (isRevealing) return;
|
|
1792
|
+
if (isRevealed) {
|
|
1793
|
+
setIsRevealed(false);
|
|
1794
|
+
setIsRevealing(true);
|
|
1795
|
+
setTimeout(() => {
|
|
1796
|
+
if (onReveal) onReveal();
|
|
1797
|
+
setIsRevealing(false);
|
|
1798
|
+
}, 800);
|
|
1799
|
+
} else {
|
|
1800
|
+
setShowPinDialer(true);
|
|
1801
|
+
}
|
|
1802
|
+
};
|
|
1803
|
+
const handlePinComplete = (pin) => {
|
|
1804
|
+
setIsRevealing(true);
|
|
1805
|
+
setTimeout(() => {
|
|
1806
|
+
setShowPinDialer(false);
|
|
1807
|
+
setIsRevealed(true);
|
|
1808
|
+
if (onReveal) onReveal();
|
|
1809
|
+
setIsRevealing(false);
|
|
1810
|
+
}, 1e3);
|
|
1811
|
+
};
|
|
1812
|
+
const handleToggleFreeze = () => {
|
|
1813
|
+
if (isFreezing) return;
|
|
1814
|
+
setIsFreezing(true);
|
|
1815
|
+
setTimeout(() => {
|
|
1816
|
+
setIsFrozen(!isFrozen);
|
|
1817
|
+
if (onFreeze) onFreeze();
|
|
1818
|
+
setIsFreezing(false);
|
|
1819
|
+
}, 800);
|
|
1820
|
+
};
|
|
1821
|
+
const confirmDelete = async () => {
|
|
1822
|
+
setIsDeleting(true);
|
|
1823
|
+
setTimeout(() => {
|
|
1824
|
+
if (onDelete) onDelete();
|
|
1825
|
+
setIsDeleting(false);
|
|
1826
|
+
setShowDeleteDialog(false);
|
|
1827
|
+
}, 1200);
|
|
1828
|
+
};
|
|
1829
|
+
const displayCardNumber = isRevealed ? cardNumber : `\u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 \u2022\u2022\u2022\u2022 ${cardNumber.slice(-4)}`;
|
|
1830
|
+
const displayExpiry = isRevealed ? expiry : "\u2022\u2022/\u2022\u2022";
|
|
1831
|
+
const displayCvv = isRevealed ? cvv : "\u2022\u2022\u2022";
|
|
1832
|
+
return /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full flex flex-col items-center animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ import_react33.default.createElement("style", { jsx: true, global: true }, `@import url('https://fonts.googleapis.com/css2?family=Whisper&display=swap');`), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full pt-6 pb-2 shadow-sm flex justify-center", style: { perspective: "1000px" } }, /* @__PURE__ */ import_react33.default.createElement(
|
|
1663
1833
|
"div",
|
|
1664
1834
|
{
|
|
1665
|
-
onClick: () =>
|
|
1666
|
-
|
|
1835
|
+
onClick: () => {
|
|
1836
|
+
if (isBgLoaded) setIsFlipped(!isFlipped);
|
|
1837
|
+
},
|
|
1838
|
+
className: `relative w-full max-w-85 transition-transform duration-700 ${!isBgLoaded ? "cursor-wait" : "cursor-pointer"}`,
|
|
1667
1839
|
style: {
|
|
1840
|
+
height: 215,
|
|
1668
1841
|
transformStyle: "preserve-3d",
|
|
1669
1842
|
transform: isFlipped ? "rotateY(180deg)" : "rotateY(0deg)"
|
|
1670
1843
|
}
|
|
1671
1844
|
},
|
|
1672
|
-
/* @__PURE__ */
|
|
1845
|
+
!isBgLoaded && /* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute inset-0 w-full h-full bg-white rounded-2xl flex items-center justify-center z-50 shadow-sm" }, /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 28, className: "animate-spin text-black" })),
|
|
1846
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
1673
1847
|
"div",
|
|
1674
1848
|
{
|
|
1675
|
-
className:
|
|
1849
|
+
className: `absolute inset-0 w-full h-full rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
1676
1850
|
style: { backfaceVisibility: "hidden" }
|
|
1677
1851
|
},
|
|
1678
|
-
/* @__PURE__ */
|
|
1852
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
1679
1853
|
"div",
|
|
1680
1854
|
{
|
|
1681
1855
|
className: "absolute inset-0 bg-cover bg-center",
|
|
1682
1856
|
style: { backgroundImage: `url(${cardBgSrc}), linear-gradient(to bottom right, #111, #333)` }
|
|
1683
1857
|
}
|
|
1684
1858
|
),
|
|
1685
|
-
/* @__PURE__ */
|
|
1859
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-between" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex justify-between items-start w-full" }, /* @__PURE__ */ import_react33.default.createElement("div", null, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[12px] text-white/70 font-medium" }, "Prepaid Card")), companyLogoSrc && /* @__PURE__ */ import_react33.default.createElement("img", { src: companyLogoSrc, alt: "Company Logo", className: "h-8 max-h-8 object-contain opacity-90" })), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex justify-between items-end w-full" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[10px] text-white/60 tracking-widest uppercase" }, "Card Number"), /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[14px] text-white tracking-widest font-light" }, displayCardNumber)), networkLogoSrc && /* @__PURE__ */ import_react33.default.createElement("img", { src: networkLogoSrc, alt: "Network Logo", className: "h-8 max-h-8 object-contain opacity-90" })))
|
|
1686
1860
|
),
|
|
1687
|
-
/* @__PURE__ */
|
|
1861
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
1688
1862
|
"div",
|
|
1689
1863
|
{
|
|
1690
|
-
className:
|
|
1864
|
+
className: `absolute inset-0 w-full h-full rounded-2xl overflow-hidden transition-all duration-700 ${isBgLoaded ? "opacity-100 scale-100" : "opacity-0 scale-105"}`,
|
|
1691
1865
|
style: {
|
|
1692
1866
|
backfaceVisibility: "hidden",
|
|
1693
1867
|
transform: "rotateY(180deg)"
|
|
1694
1868
|
}
|
|
1695
1869
|
},
|
|
1696
|
-
/* @__PURE__ */
|
|
1870
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
1697
1871
|
"div",
|
|
1698
1872
|
{
|
|
1699
1873
|
className: "absolute inset-0 bg-cover bg-center",
|
|
1700
1874
|
style: { backgroundImage: `url(${cardBgSrc}), linear-gradient(to bottom right, #111, #333)` }
|
|
1701
1875
|
}
|
|
1702
1876
|
),
|
|
1703
|
-
/* @__PURE__ */
|
|
1877
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute top-6 left-0 right-0 h-10 bg-black/80 w-full" }),
|
|
1878
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "relative z-10 w-full h-full p-5 flex flex-col justify-end" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full text-center mb-6" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-white text-3xl font-serif italic tracking-wide opacity-90" }, cardHolderName)), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex justify-between w-full max-w-[80%]" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[9px] text-white/60 tracking-widest uppercase" }, "Expiry"), /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[14px] text-white font-light" }, displayExpiry)), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[9px] text-white/60 tracking-widest uppercase" }, "CVV"), /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-[14px] text-white font-light" }, displayCvv))))
|
|
1704
1879
|
)
|
|
1705
|
-
)), /* @__PURE__ */
|
|
1880
|
+
)), /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-xs text-neutral-400 mb-6" }, "Tap to flip card"), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full flex flex-col gap-4" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
1706
1881
|
MenuRow,
|
|
1707
1882
|
{
|
|
1708
|
-
icon:
|
|
1883
|
+
icon: import_core_free_icons12.ViewOffSlashIcon,
|
|
1709
1884
|
title: "Reveal Information",
|
|
1710
1885
|
subtitle: "Show card informations",
|
|
1711
|
-
onClick:
|
|
1886
|
+
onClick: handleToggleReveal,
|
|
1887
|
+
isToggle: true,
|
|
1888
|
+
toggleState: isRevealed,
|
|
1889
|
+
toggleLoading: isRevealing
|
|
1712
1890
|
}
|
|
1713
|
-
), /* @__PURE__ */
|
|
1891
|
+
), /* @__PURE__ */ import_react33.default.createElement(
|
|
1714
1892
|
MenuRow,
|
|
1715
1893
|
{
|
|
1716
|
-
icon:
|
|
1894
|
+
icon: import_core_free_icons12.SnowIcon,
|
|
1717
1895
|
title: "Freeze",
|
|
1718
1896
|
subtitle: "Freeze & Unfreeze card",
|
|
1719
|
-
onClick:
|
|
1897
|
+
onClick: handleToggleFreeze,
|
|
1898
|
+
isToggle: true,
|
|
1899
|
+
toggleState: isFrozen,
|
|
1900
|
+
toggleLoading: isFreezing
|
|
1720
1901
|
}
|
|
1721
|
-
), /* @__PURE__ */
|
|
1902
|
+
), /* @__PURE__ */ import_react33.default.createElement(
|
|
1722
1903
|
MenuRow,
|
|
1723
1904
|
{
|
|
1724
|
-
icon:
|
|
1905
|
+
icon: import_core_free_icons12.Dollar02Icon,
|
|
1725
1906
|
title: "Set Limits",
|
|
1726
1907
|
subtitle: "Set card limits",
|
|
1727
1908
|
onClick: onSetLimits,
|
|
1728
1909
|
isLast: true
|
|
1729
1910
|
}
|
|
1730
|
-
)), /* @__PURE__ */
|
|
1911
|
+
)), /* @__PURE__ */ import_react33.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
1731
1912
|
MenuRow,
|
|
1732
1913
|
{
|
|
1733
|
-
icon:
|
|
1914
|
+
icon: import_core_free_icons12.Delete02Icon,
|
|
1734
1915
|
title: "Delete card",
|
|
1735
1916
|
subtitle: "Permanently delete card",
|
|
1736
|
-
onClick:
|
|
1917
|
+
onClick: () => setShowDeleteDialog(true),
|
|
1918
|
+
iconColor: "text-red-500",
|
|
1919
|
+
titleColor: "text-red-500",
|
|
1737
1920
|
isLast: true
|
|
1738
1921
|
}
|
|
1739
|
-
)))
|
|
1922
|
+
))), /* @__PURE__ */ import_react33.default.createElement(
|
|
1923
|
+
ConfirmationDialog,
|
|
1924
|
+
{
|
|
1925
|
+
isOpen: showDeleteDialog,
|
|
1926
|
+
title: "Delete Card",
|
|
1927
|
+
message: "Are you sure? The card will be permanently deleted from your account.",
|
|
1928
|
+
confirmText: "Delete",
|
|
1929
|
+
isDestructive: true,
|
|
1930
|
+
isProcessing: isDeleting,
|
|
1931
|
+
onClose: () => setShowDeleteDialog(false),
|
|
1932
|
+
onConfirm: confirmDelete
|
|
1933
|
+
}
|
|
1934
|
+
), /* @__PURE__ */ import_react33.default.createElement(
|
|
1935
|
+
PinDialerBottomSheet,
|
|
1936
|
+
{
|
|
1937
|
+
isOpen: showPinDialer,
|
|
1938
|
+
title: "Enter PIN to Reveal",
|
|
1939
|
+
isVerifying: isRevealing,
|
|
1940
|
+
onClose: () => setShowPinDialer(false),
|
|
1941
|
+
onComplete: handlePinComplete
|
|
1942
|
+
}
|
|
1943
|
+
));
|
|
1740
1944
|
};
|
|
1741
|
-
var MenuRow = ({
|
|
1945
|
+
var MenuRow = ({
|
|
1946
|
+
icon,
|
|
1947
|
+
title,
|
|
1948
|
+
subtitle,
|
|
1949
|
+
onClick,
|
|
1950
|
+
iconColor = "text-black",
|
|
1951
|
+
titleColor = "text-black",
|
|
1952
|
+
isLast = false,
|
|
1953
|
+
isToggle = false,
|
|
1954
|
+
toggleState = false,
|
|
1955
|
+
toggleLoading = false
|
|
1956
|
+
}) => /* @__PURE__ */ import_react33.default.createElement(
|
|
1742
1957
|
"div",
|
|
1743
1958
|
{
|
|
1744
1959
|
onClick,
|
|
1745
1960
|
className: `flex items-center p-3 cursor-pointer hover:bg-neutral-50 transition-colors ${!isLast ? "" : ""}`
|
|
1746
1961
|
},
|
|
1747
|
-
/* @__PURE__ */
|
|
1748
|
-
/* @__PURE__ */
|
|
1749
|
-
/* @__PURE__ */
|
|
1962
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "w-9 h-9 rounded-full border border-neutral-200 flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
1963
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react33.default.createElement("p", { className: `text-[13px] font-medium truncate ${titleColor}` }, title), /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
1964
|
+
isToggle ? /* @__PURE__ */ import_react33.default.createElement("div", { className: `relative w-11 h-6 rounded-full transition-colors duration-300 ml-2 shrink-0 ${toggleState ? "bg-black" : "bg-neutral-200"}` }, /* @__PURE__ */ import_react33.default.createElement("div", { className: `absolute top-1 left-1 w-4 h-4 rounded-full bg-white shadow-sm transition-transform duration-300 flex items-center justify-center ${toggleState ? "translate-x-5" : "translate-x-0"}` }, toggleLoading && /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.Loading03Icon, size: 10, className: "animate-spin text-black" }))) : /* @__PURE__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons12.ArrowRight01Icon, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
1750
1965
|
);
|
|
1751
1966
|
|
|
1752
1967
|
// src/components/UniversalProfilePage.tsx
|
|
1753
|
-
var
|
|
1754
|
-
var
|
|
1755
|
-
var
|
|
1968
|
+
var import_react35 = __toESM(require("react"));
|
|
1969
|
+
var import_react36 = require("@hugeicons/react");
|
|
1970
|
+
var import_core_free_icons13 = require("@hugeicons/core-free-icons");
|
|
1756
1971
|
var UniversalProfilePage = ({
|
|
1757
1972
|
avatarSrc,
|
|
1758
1973
|
roleName,
|
|
@@ -1766,104 +1981,131 @@ var UniversalProfilePage = ({
|
|
|
1766
1981
|
onLogoutTap,
|
|
1767
1982
|
onDeleteTap
|
|
1768
1983
|
}) => {
|
|
1769
|
-
|
|
1984
|
+
const [isAvatarLoaded, setIsAvatarLoaded] = (0, import_react35.useState)(false);
|
|
1985
|
+
const [showLogoutDialog, setShowLogoutDialog] = (0, import_react35.useState)(false);
|
|
1986
|
+
const [isLoggingOut, setIsLoggingOut] = (0, import_react35.useState)(false);
|
|
1987
|
+
const handleConfirmLogout = async () => {
|
|
1988
|
+
setIsLoggingOut(true);
|
|
1989
|
+
try {
|
|
1990
|
+
if (onLogoutTap) {
|
|
1991
|
+
await onLogoutTap();
|
|
1992
|
+
}
|
|
1993
|
+
} finally {
|
|
1994
|
+
setIsLoggingOut(false);
|
|
1995
|
+
setShowLogoutDialog(false);
|
|
1996
|
+
}
|
|
1997
|
+
};
|
|
1998
|
+
return /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full max-w-md mx-auto flex flex-col items-center animate-in fade-in duration-300 pb-12" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "pt-8 pb-4 flex flex-col items-center" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-22 h-22 rounded-full bg-white p-1 mb-4 flex items-center justify-center" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "relative w-full h-full rounded-full overflow-hidden bg-neutral-100 flex items-center justify-center" }, avatarSrc ? /* @__PURE__ */ import_react35.default.createElement(import_react35.default.Fragment, null, !isAvatarLoaded && /* @__PURE__ */ import_react35.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-10 bg-neutral-100" }, /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.Loading03Icon, size: 24, className: "animate-spin text-black" })), /* @__PURE__ */ import_react35.default.createElement(
|
|
1770
1999
|
"img",
|
|
1771
2000
|
{
|
|
1772
2001
|
src: avatarSrc,
|
|
1773
2002
|
alt: "User Avatar",
|
|
1774
|
-
|
|
2003
|
+
onLoad: () => setIsAvatarLoaded(true),
|
|
2004
|
+
className: `w-full h-full object-cover transition-opacity duration-300 ${isAvatarLoaded ? "opacity-100" : "opacity-0"}`
|
|
1775
2005
|
}
|
|
1776
|
-
) : /* @__PURE__ */
|
|
2006
|
+
)) : /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.UserIcon, size: 40, className: "text-neutral-300" }))), /* @__PURE__ */ import_react35.default.createElement("div", { className: "bg-white rounded-full px-4 py-2 flex items-center justify-center gap-2 mb-3" }, /* @__PURE__ */ import_react35.default.createElement("span", { className: "text-[12px] font-medium text-black" }, roleName), /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.ArrowRight01Icon, size: 14, className: "text-neutral-400" })), /* @__PURE__ */ import_react35.default.createElement("span", { className: "text-[12px] text-neutral-500" }, memberSince)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full flex flex-col gap-4 mt-2" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react35.default.createElement(
|
|
1777
2007
|
MenuRow2,
|
|
1778
2008
|
{
|
|
1779
|
-
icon:
|
|
2009
|
+
icon: import_core_free_icons13.UserIcon,
|
|
1780
2010
|
title: "Account",
|
|
1781
2011
|
subtitle: "Your account details",
|
|
1782
2012
|
onClick: onAccountTap
|
|
1783
2013
|
}
|
|
1784
|
-
), /* @__PURE__ */
|
|
2014
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
1785
2015
|
MenuRow2,
|
|
1786
2016
|
{
|
|
1787
|
-
icon:
|
|
2017
|
+
icon: import_core_free_icons13.LockKeyIcon,
|
|
1788
2018
|
title: "Security",
|
|
1789
2019
|
subtitle: "2FA & authentication",
|
|
1790
2020
|
onClick: onSecurityTap
|
|
1791
2021
|
}
|
|
1792
|
-
), /* @__PURE__ */
|
|
2022
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
1793
2023
|
MenuRow2,
|
|
1794
2024
|
{
|
|
1795
|
-
icon:
|
|
2025
|
+
icon: import_core_free_icons13.Notification03Icon,
|
|
1796
2026
|
title: "Notifications",
|
|
1797
2027
|
subtitle: "Manage notifications",
|
|
1798
2028
|
onClick: onNotificationsTap
|
|
1799
2029
|
}
|
|
1800
|
-
), /* @__PURE__ */
|
|
2030
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
1801
2031
|
MenuRow2,
|
|
1802
2032
|
{
|
|
1803
|
-
icon:
|
|
2033
|
+
icon: import_core_free_icons13.HelpCircleIcon,
|
|
1804
2034
|
title: "Get Help",
|
|
1805
2035
|
subtitle: "24/7 Support",
|
|
1806
2036
|
onClick: onHelpTap,
|
|
1807
2037
|
isLast: true
|
|
1808
2038
|
}
|
|
1809
|
-
)), /* @__PURE__ */
|
|
2039
|
+
)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden" }, /* @__PURE__ */ import_react35.default.createElement(
|
|
1810
2040
|
MenuRow2,
|
|
1811
2041
|
{
|
|
1812
|
-
icon:
|
|
2042
|
+
icon: import_core_free_icons13.Shield01Icon,
|
|
1813
2043
|
title: "Verifications",
|
|
1814
2044
|
subtitle: "Account Verifications",
|
|
1815
2045
|
onClick: onVerificationsTap
|
|
1816
2046
|
}
|
|
1817
|
-
), /* @__PURE__ */
|
|
2047
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
1818
2048
|
MenuRow2,
|
|
1819
2049
|
{
|
|
1820
|
-
icon:
|
|
2050
|
+
icon: import_core_free_icons13.Download04Icon,
|
|
1821
2051
|
title: "Export Account",
|
|
1822
2052
|
subtitle: "Transfer your account",
|
|
1823
2053
|
onClick: onExportTap
|
|
1824
2054
|
}
|
|
1825
|
-
), /* @__PURE__ */
|
|
2055
|
+
), /* @__PURE__ */ import_react35.default.createElement(
|
|
1826
2056
|
MenuRow2,
|
|
1827
2057
|
{
|
|
1828
|
-
icon:
|
|
2058
|
+
icon: import_core_free_icons13.Logout03Icon,
|
|
1829
2059
|
title: "LogOut",
|
|
1830
2060
|
subtitle: "End your session",
|
|
1831
|
-
onClick:
|
|
2061
|
+
onClick: () => setShowLogoutDialog(true),
|
|
1832
2062
|
isLast: true
|
|
1833
2063
|
}
|
|
1834
|
-
)), /* @__PURE__ */
|
|
2064
|
+
)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-full bg-white rounded-2xl overflow-hidden mb-4" }, /* @__PURE__ */ import_react35.default.createElement(
|
|
1835
2065
|
MenuRow2,
|
|
1836
2066
|
{
|
|
1837
|
-
icon:
|
|
2067
|
+
icon: import_core_free_icons13.Delete02Icon,
|
|
1838
2068
|
title: "Delete Account",
|
|
1839
2069
|
subtitle: "Remove account",
|
|
1840
2070
|
onClick: onDeleteTap,
|
|
1841
2071
|
isLast: true
|
|
1842
2072
|
}
|
|
1843
|
-
)))
|
|
2073
|
+
))), /* @__PURE__ */ import_react35.default.createElement(
|
|
2074
|
+
ConfirmationDialog,
|
|
2075
|
+
{
|
|
2076
|
+
isOpen: showLogoutDialog,
|
|
2077
|
+
title: "Secure Logout",
|
|
2078
|
+
message: "Are you sure you want to log out? You will need to authenticate to return.",
|
|
2079
|
+
confirmText: "Log Out",
|
|
2080
|
+
isDestructive: true,
|
|
2081
|
+
isProcessing: isLoggingOut,
|
|
2082
|
+
onClose: () => setShowLogoutDialog(false),
|
|
2083
|
+
onConfirm: handleConfirmLogout
|
|
2084
|
+
}
|
|
2085
|
+
));
|
|
1844
2086
|
};
|
|
1845
|
-
var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titleColor = "text-black", isLast = false }) => /* @__PURE__ */
|
|
2087
|
+
var MenuRow2 = ({ icon, title, subtitle, onClick, iconColor = "text-black", titleColor = "text-black", isLast = false }) => /* @__PURE__ */ import_react35.default.createElement(
|
|
1846
2088
|
"div",
|
|
1847
2089
|
{
|
|
1848
2090
|
onClick,
|
|
1849
2091
|
className: `flex items-center p-4 cursor-pointer hover:bg-neutral-50 transition-colors ${!isLast ? "" : ""}`
|
|
1850
2092
|
},
|
|
1851
|
-
/* @__PURE__ */
|
|
1852
|
-
/* @__PURE__ */
|
|
1853
|
-
/* @__PURE__ */
|
|
2093
|
+
/* @__PURE__ */ import_react35.default.createElement("div", { className: "w-9 h-9 rounded-full flex items-center justify-center shrink-0 mr-4" }, /* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon, size: 16, className: iconColor })),
|
|
2094
|
+
/* @__PURE__ */ import_react35.default.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ import_react35.default.createElement("p", { className: `text-[13px] font-medium truncate ${titleColor}` }, title), /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[11px] text-neutral-500 truncate" }, subtitle)),
|
|
2095
|
+
/* @__PURE__ */ import_react35.default.createElement(import_react36.HugeiconsIcon, { icon: import_core_free_icons13.ArrowRight01Icon, size: 18, className: "text-neutral-400 shrink-0 ml-2" })
|
|
1854
2096
|
);
|
|
1855
2097
|
|
|
1856
2098
|
// src/components/HeroSection.tsx
|
|
1857
|
-
var
|
|
2099
|
+
var import_react38 = __toESM(require("react"));
|
|
1858
2100
|
var import_link5 = __toESM(require("next/link"));
|
|
1859
2101
|
var import_image2 = __toESM(require("next/image"));
|
|
1860
2102
|
|
|
1861
2103
|
// src/components/WaitlistDialog.tsx
|
|
1862
|
-
var
|
|
2104
|
+
var import_react37 = __toESM(require("react"));
|
|
1863
2105
|
var import_react_hot_toast7 = require("react-hot-toast");
|
|
1864
2106
|
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
1865
|
-
const [email, setEmail] = (0,
|
|
1866
|
-
const [isLoading, setIsLoading] = (0,
|
|
2107
|
+
const [email, setEmail] = (0, import_react37.useState)("");
|
|
2108
|
+
const [isLoading, setIsLoading] = (0, import_react37.useState)(false);
|
|
1867
2109
|
if (!isOpen) return null;
|
|
1868
2110
|
const handleSubmit = async (e) => {
|
|
1869
2111
|
e.preventDefault();
|
|
@@ -1894,12 +2136,12 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
1894
2136
|
setIsLoading(false);
|
|
1895
2137
|
}
|
|
1896
2138
|
};
|
|
1897
|
-
return /* @__PURE__ */
|
|
2139
|
+
return /* @__PURE__ */ import_react37.default.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/40" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ import_react37.default.createElement(
|
|
1898
2140
|
"div",
|
|
1899
2141
|
{
|
|
1900
2142
|
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"
|
|
1901
2143
|
},
|
|
1902
|
-
/* @__PURE__ */
|
|
2144
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
1903
2145
|
"button",
|
|
1904
2146
|
{
|
|
1905
2147
|
onClick: onClose,
|
|
@@ -1907,7 +2149,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
1907
2149
|
className: "absolute top-4 right-4 p-2 text-neutral-700 hover:text-neutral-400 transition-colors disabled:opacity-50 outline-none",
|
|
1908
2150
|
"aria-label": "Close dialog"
|
|
1909
2151
|
},
|
|
1910
|
-
/* @__PURE__ */
|
|
2152
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
1911
2153
|
"svg",
|
|
1912
2154
|
{
|
|
1913
2155
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1920,11 +2162,11 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
1920
2162
|
strokeLinecap: "round",
|
|
1921
2163
|
strokeLinejoin: "round"
|
|
1922
2164
|
},
|
|
1923
|
-
/* @__PURE__ */
|
|
1924
|
-
/* @__PURE__ */
|
|
2165
|
+
/* @__PURE__ */ import_react37.default.createElement("path", { d: "M18 6 6 18" }),
|
|
2166
|
+
/* @__PURE__ */ import_react37.default.createElement("path", { d: "m6 6 12 12" })
|
|
1925
2167
|
)
|
|
1926
2168
|
),
|
|
1927
|
-
/* @__PURE__ */
|
|
2169
|
+
/* @__PURE__ */ import_react37.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ import_react37.default.createElement("h2", { className: "text-2xl text-black tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ import_react37.default.createElement("p", { className: "text-[13px] text-neutral-500 leading-relaxed" }, "Be the first to experience the future of natural language computing. Secure your early access spot today.")), /* @__PURE__ */ import_react37.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
1928
2170
|
TextInput,
|
|
1929
2171
|
{
|
|
1930
2172
|
label: "Email ID",
|
|
@@ -1934,7 +2176,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
1934
2176
|
placeholder: "name@example.com",
|
|
1935
2177
|
disabled: isLoading
|
|
1936
2178
|
}
|
|
1937
|
-
), /* @__PURE__ */
|
|
2179
|
+
), /* @__PURE__ */ import_react37.default.createElement(
|
|
1938
2180
|
ThreeDActionButton,
|
|
1939
2181
|
{
|
|
1940
2182
|
type: "submit",
|
|
@@ -1967,10 +2209,10 @@ var HeroSection = ({
|
|
|
1967
2209
|
bgImageSrc,
|
|
1968
2210
|
isWaitlist = false
|
|
1969
2211
|
}) => {
|
|
1970
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
1971
|
-
const [isWaitlistOpen, setIsWaitlistOpen] = (0,
|
|
1972
|
-
const titleRef = (0,
|
|
1973
|
-
(0,
|
|
2212
|
+
const [isAnimating, setIsAnimating] = (0, import_react38.useState)(false);
|
|
2213
|
+
const [isWaitlistOpen, setIsWaitlistOpen] = (0, import_react38.useState)(false);
|
|
2214
|
+
const titleRef = (0, import_react38.useRef)(null);
|
|
2215
|
+
(0, import_react38.useEffect)(() => {
|
|
1974
2216
|
const observer = new IntersectionObserver(
|
|
1975
2217
|
([entry]) => {
|
|
1976
2218
|
if (entry.isIntersecting) {
|
|
@@ -1992,7 +2234,7 @@ var HeroSection = ({
|
|
|
1992
2234
|
setIsWaitlistOpen(true);
|
|
1993
2235
|
}
|
|
1994
2236
|
};
|
|
1995
|
-
return /* @__PURE__ */
|
|
2237
|
+
return /* @__PURE__ */ import_react38.default.createElement("div", { className: "w-screen min-h-screen flex justify-center items-center p-4" }, /* @__PURE__ */ import_react38.default.createElement("section", { className: "relative h-[95vh] w-full overflow-hidden rounded-2xl " }, bgVideoSrc ? /* @__PURE__ */ import_react38.default.createElement(
|
|
1996
2238
|
"video",
|
|
1997
2239
|
{
|
|
1998
2240
|
src: bgVideoSrc,
|
|
@@ -2003,7 +2245,7 @@ var HeroSection = ({
|
|
|
2003
2245
|
playsInline: true,
|
|
2004
2246
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2005
2247
|
}
|
|
2006
|
-
) : bgImageSrc ? /* @__PURE__ */
|
|
2248
|
+
) : bgImageSrc ? /* @__PURE__ */ import_react38.default.createElement(
|
|
2007
2249
|
import_image2.default,
|
|
2008
2250
|
{
|
|
2009
2251
|
src: bgImageSrc,
|
|
@@ -2012,7 +2254,7 @@ var HeroSection = ({
|
|
|
2012
2254
|
priority: true,
|
|
2013
2255
|
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
2014
2256
|
}
|
|
2015
|
-
) : null, /* @__PURE__ */
|
|
2257
|
+
) : null, /* @__PURE__ */ import_react38.default.createElement(
|
|
2016
2258
|
"div",
|
|
2017
2259
|
{
|
|
2018
2260
|
className: "pointer-events-none absolute inset-0 z-10 opacity-[0.7] mix-blend-overlay",
|
|
@@ -2020,15 +2262,15 @@ var HeroSection = ({
|
|
|
2020
2262
|
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")`
|
|
2021
2263
|
}
|
|
2022
2264
|
}
|
|
2023
|
-
), /* @__PURE__ */
|
|
2265
|
+
), /* @__PURE__ */ import_react38.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_react38.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_react38.default.createElement("div", { className: "grid grid-cols-12 items-end gap-4" }, /* @__PURE__ */ import_react38.default.createElement("div", { className: "col-span-12 lg:col-span-8" }, /* @__PURE__ */ import_react38.default.createElement(
|
|
2024
2266
|
"h1",
|
|
2025
2267
|
{
|
|
2026
2268
|
ref: titleRef,
|
|
2027
2269
|
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]"
|
|
2028
2270
|
},
|
|
2029
|
-
/* @__PURE__ */
|
|
2030
|
-
)), /* @__PURE__ */
|
|
2031
|
-
/* @__PURE__ */
|
|
2271
|
+
/* @__PURE__ */ import_react38.default.createElement("div", { className: "inline-flex flex-wrap" }, /* @__PURE__ */ import_react38.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_react38.default.createElement("br", null), highlightText, /* @__PURE__ */ import_react38.default.createElement("span", { className: "absolute top-[0.65em] right-[-0.3em] text-[0.31em] text-[#ffffff]/70" }, "*")))
|
|
2272
|
+
)), /* @__PURE__ */ import_react38.default.createElement("div", { className: "col-span-12 flex flex-col gap-5 pb-6 lg:col-span-4 lg:pb-10" }, subtitle && /* @__PURE__ */ import_react38.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_react38.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!
|
|
2273
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
2032
2274
|
import_link5.default,
|
|
2033
2275
|
{
|
|
2034
2276
|
href: isWaitlist ? "#" : ctaHref || "#",
|
|
@@ -2036,15 +2278,15 @@ var HeroSection = ({
|
|
|
2036
2278
|
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"
|
|
2037
2279
|
},
|
|
2038
2280
|
ctaText,
|
|
2039
|
-
/* @__PURE__ */
|
|
2040
|
-
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
2281
|
+
/* @__PURE__ */ import_react38.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_react38.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_react38.default.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ import_react38.default.createElement("path", { d: "m12 5 7 7-7 7" })))
|
|
2282
|
+
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react38.default.createElement(
|
|
2041
2283
|
import_link5.default,
|
|
2042
2284
|
{
|
|
2043
2285
|
href: secondaryCtaHref,
|
|
2044
2286
|
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"
|
|
2045
2287
|
},
|
|
2046
2288
|
secondaryCtaText
|
|
2047
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */
|
|
2289
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex flex-col gap-3 mt-4" }, appsText && /* @__PURE__ */ import_react38.default.createElement("span", { className: "text-[10px] tracking-widest uppercase text-[#ffffff]/50 " }, appsText), /* @__PURE__ */ import_react38.default.createElement("div", { className: "flex items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ import_react38.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_react38.default.createElement(
|
|
2048
2290
|
import_image2.default,
|
|
2049
2291
|
{
|
|
2050
2292
|
src: logo.src,
|
|
@@ -2053,7 +2295,7 @@ var HeroSection = ({
|
|
|
2053
2295
|
height: 28,
|
|
2054
2296
|
className: "object-contain"
|
|
2055
2297
|
}
|
|
2056
|
-
))))))))), /* @__PURE__ */
|
|
2298
|
+
))))))))), /* @__PURE__ */ import_react38.default.createElement(
|
|
2057
2299
|
WaitlistDialog,
|
|
2058
2300
|
{
|
|
2059
2301
|
isOpen: isWaitlistOpen,
|
|
@@ -2063,12 +2305,12 @@ var HeroSection = ({
|
|
|
2063
2305
|
};
|
|
2064
2306
|
|
|
2065
2307
|
// src/components/AppBento2.tsx
|
|
2066
|
-
var
|
|
2067
|
-
var
|
|
2308
|
+
var import_react39 = __toESM(require("react"));
|
|
2309
|
+
var import_react40 = require("@hugeicons/react");
|
|
2068
2310
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
2069
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2070
|
-
const titleRef = (0,
|
|
2071
|
-
(0,
|
|
2311
|
+
const [isAnimating, setIsAnimating] = (0, import_react39.useState)(false);
|
|
2312
|
+
const titleRef = (0, import_react39.useRef)(null);
|
|
2313
|
+
(0, import_react39.useEffect)(() => {
|
|
2072
2314
|
const observer = new IntersectionObserver(
|
|
2073
2315
|
([entry]) => {
|
|
2074
2316
|
if (entry.isIntersecting) {
|
|
@@ -2086,7 +2328,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2086
2328
|
}
|
|
2087
2329
|
return () => observer.disconnect();
|
|
2088
2330
|
}, []);
|
|
2089
|
-
return /* @__PURE__ */
|
|
2331
|
+
return /* @__PURE__ */ import_react39.default.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react39.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ import_react39.default.createElement(
|
|
2090
2332
|
"h2",
|
|
2091
2333
|
{
|
|
2092
2334
|
ref: titleRef,
|
|
@@ -2094,7 +2336,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2094
2336
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2095
2337
|
},
|
|
2096
2338
|
headline
|
|
2097
|
-
))), /* @__PURE__ */
|
|
2339
|
+
))), /* @__PURE__ */ import_react39.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
2098
2340
|
const isWhite = i === 0;
|
|
2099
2341
|
const isBlack = i === 1;
|
|
2100
2342
|
const isNeutral = i === 2;
|
|
@@ -2116,36 +2358,36 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
2116
2358
|
const textColor = isBlack ? "text-white" : "text-black";
|
|
2117
2359
|
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
2118
2360
|
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
2119
|
-
return /* @__PURE__ */
|
|
2361
|
+
return /* @__PURE__ */ import_react39.default.createElement(
|
|
2120
2362
|
"div",
|
|
2121
2363
|
{
|
|
2122
2364
|
key: i,
|
|
2123
2365
|
className: `relative rounded-2xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`,
|
|
2124
2366
|
style: { boxShadow: getShadowStyle() }
|
|
2125
2367
|
},
|
|
2126
|
-
/* @__PURE__ */
|
|
2368
|
+
/* @__PURE__ */ import_react39.default.createElement(
|
|
2127
2369
|
"div",
|
|
2128
2370
|
{
|
|
2129
2371
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
2130
2372
|
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")` }
|
|
2131
2373
|
}
|
|
2132
2374
|
),
|
|
2133
|
-
isBlack && /* @__PURE__ */
|
|
2134
|
-
/* @__PURE__ */
|
|
2135
|
-
/* @__PURE__ */
|
|
2375
|
+
isBlack && /* @__PURE__ */ import_react39.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" }),
|
|
2376
|
+
/* @__PURE__ */ import_react39.default.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ import_react39.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_react39.default.createElement(import_react40.HugeiconsIcon, { icon: f.icon, size: 180 }))),
|
|
2377
|
+
/* @__PURE__ */ import_react39.default.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ import_react39.default.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ import_react39.default.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ import_react39.default.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ import_react39.default.createElement(import_react40.HugeiconsIcon, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ import_react39.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react39.default.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ import_react39.default.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
2136
2378
|
);
|
|
2137
2379
|
})))));
|
|
2138
2380
|
};
|
|
2139
2381
|
|
|
2140
2382
|
// src/components/FeatureScroll.tsx
|
|
2141
|
-
var
|
|
2383
|
+
var import_react41 = __toESM(require("react"));
|
|
2142
2384
|
var import_image3 = __toESM(require("next/image"));
|
|
2143
|
-
var
|
|
2144
|
-
var
|
|
2385
|
+
var import_react42 = require("@hugeicons/react");
|
|
2386
|
+
var import_core_free_icons14 = require("@hugeicons/core-free-icons");
|
|
2145
2387
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
2146
|
-
const [isBgLoading, setIsBgLoading] = (0,
|
|
2147
|
-
const [isFgLoading, setIsFgLoading] = (0,
|
|
2148
|
-
return /* @__PURE__ */
|
|
2388
|
+
const [isBgLoading, setIsBgLoading] = (0, import_react41.useState)(true);
|
|
2389
|
+
const [isFgLoading, setIsFgLoading] = (0, import_react41.useState)(!!feature.image);
|
|
2390
|
+
return /* @__PURE__ */ import_react41.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_react41.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_react41.default.createElement(
|
|
2149
2391
|
import_image3.default,
|
|
2150
2392
|
{
|
|
2151
2393
|
src: bgImage,
|
|
@@ -2158,7 +2400,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2158
2400
|
${isBgLoading ? "blur-xl scale-110" : "blur-0 scale-100"}
|
|
2159
2401
|
`
|
|
2160
2402
|
}
|
|
2161
|
-
), /* @__PURE__ */
|
|
2403
|
+
), /* @__PURE__ */ import_react41.default.createElement(
|
|
2162
2404
|
"div",
|
|
2163
2405
|
{
|
|
2164
2406
|
className: "absolute inset-0 w-full h-full pointer-events-none z-0 opacity-[0.25] mix-blend-overlay",
|
|
@@ -2166,7 +2408,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2166
2408
|
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")`
|
|
2167
2409
|
}
|
|
2168
2410
|
}
|
|
2169
|
-
), isFgLoading && feature.image && /* @__PURE__ */
|
|
2411
|
+
), isFgLoading && feature.image && /* @__PURE__ */ import_react41.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_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons14.Loading03Icon, size: 32, className: "animate-spin text-neutral-400" })), feature.image && /* @__PURE__ */ import_react41.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_react41.default.createElement(
|
|
2170
2412
|
import_image3.default,
|
|
2171
2413
|
{
|
|
2172
2414
|
src: feature.image,
|
|
@@ -2179,12 +2421,12 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
2179
2421
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
2180
2422
|
`
|
|
2181
2423
|
}
|
|
2182
|
-
))), /* @__PURE__ */
|
|
2424
|
+
))), /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ import_react41.default.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ import_react41.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 max-w-[90%]" }, feature.desc)));
|
|
2183
2425
|
};
|
|
2184
2426
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
2185
|
-
const scrollRef = (0,
|
|
2186
|
-
const [canScrollLeft, setCanScrollLeft] = (0,
|
|
2187
|
-
const [canScrollRight, setCanScrollRight] = (0,
|
|
2427
|
+
const scrollRef = (0, import_react41.useRef)(null);
|
|
2428
|
+
const [canScrollLeft, setCanScrollLeft] = (0, import_react41.useState)(false);
|
|
2429
|
+
const [canScrollRight, setCanScrollRight] = (0, import_react41.useState)(true);
|
|
2188
2430
|
const checkScroll = () => {
|
|
2189
2431
|
if (scrollRef.current) {
|
|
2190
2432
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -2192,7 +2434,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2192
2434
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
2193
2435
|
}
|
|
2194
2436
|
};
|
|
2195
|
-
(0,
|
|
2437
|
+
(0, import_react41.useEffect)(() => {
|
|
2196
2438
|
checkScroll();
|
|
2197
2439
|
window.addEventListener("resize", checkScroll);
|
|
2198
2440
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -2208,7 +2450,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2208
2450
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
2209
2451
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
2210
2452
|
];
|
|
2211
|
-
return /* @__PURE__ */
|
|
2453
|
+
return /* @__PURE__ */ import_react41.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ import_react41.default.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ import_react41.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react41.default.createElement("h2", { className: " text-3xl tracking-tight text-black leading-[1.05]" }, headline)), /* @__PURE__ */ import_react41.default.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ import_react41.default.createElement(
|
|
2212
2454
|
"button",
|
|
2213
2455
|
{
|
|
2214
2456
|
onClick: () => scroll("left"),
|
|
@@ -2216,8 +2458,8 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2216
2458
|
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",
|
|
2217
2459
|
"aria-label": "Previous feature"
|
|
2218
2460
|
},
|
|
2219
|
-
/* @__PURE__ */
|
|
2220
|
-
), /* @__PURE__ */
|
|
2461
|
+
/* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons14.ArrowLeft01Icon, size: 20 })
|
|
2462
|
+
), /* @__PURE__ */ import_react41.default.createElement(
|
|
2221
2463
|
"button",
|
|
2222
2464
|
{
|
|
2223
2465
|
onClick: () => scroll("right"),
|
|
@@ -2225,57 +2467,57 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
2225
2467
|
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",
|
|
2226
2468
|
"aria-label": "Next feature"
|
|
2227
2469
|
},
|
|
2228
|
-
/* @__PURE__ */
|
|
2229
|
-
))), /* @__PURE__ */
|
|
2470
|
+
/* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons14.ArrowRight01Icon, size: 20 })
|
|
2471
|
+
))), /* @__PURE__ */ import_react41.default.createElement(
|
|
2230
2472
|
"div",
|
|
2231
2473
|
{
|
|
2232
2474
|
ref: scrollRef,
|
|
2233
2475
|
onScroll: checkScroll,
|
|
2234
2476
|
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"
|
|
2235
2477
|
},
|
|
2236
|
-
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */
|
|
2237
|
-
), /* @__PURE__ */
|
|
2478
|
+
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ import_react41.default.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
|
|
2479
|
+
), /* @__PURE__ */ import_react41.default.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ import_react41.default.createElement(
|
|
2238
2480
|
"button",
|
|
2239
2481
|
{
|
|
2240
2482
|
onClick: () => scroll("left"),
|
|
2241
2483
|
disabled: !canScrollLeft,
|
|
2242
2484
|
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"
|
|
2243
2485
|
},
|
|
2244
|
-
/* @__PURE__ */
|
|
2245
|
-
), /* @__PURE__ */
|
|
2486
|
+
/* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons14.ArrowLeft01Icon, size: 20 })
|
|
2487
|
+
), /* @__PURE__ */ import_react41.default.createElement(
|
|
2246
2488
|
"button",
|
|
2247
2489
|
{
|
|
2248
2490
|
onClick: () => scroll("right"),
|
|
2249
2491
|
disabled: !canScrollRight,
|
|
2250
2492
|
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"
|
|
2251
2493
|
},
|
|
2252
|
-
/* @__PURE__ */
|
|
2494
|
+
/* @__PURE__ */ import_react41.default.createElement(import_react42.HugeiconsIcon, { icon: import_core_free_icons14.ArrowRight01Icon, size: 20 })
|
|
2253
2495
|
))));
|
|
2254
2496
|
};
|
|
2255
2497
|
|
|
2256
2498
|
// src/components/PlatformFeatures.tsx
|
|
2257
|
-
var
|
|
2258
|
-
var
|
|
2499
|
+
var import_react43 = __toESM(require("react"));
|
|
2500
|
+
var import_react44 = require("@hugeicons/react");
|
|
2259
2501
|
var PlatformFeatures = ({
|
|
2260
2502
|
tagline,
|
|
2261
2503
|
headline,
|
|
2262
2504
|
description,
|
|
2263
2505
|
features
|
|
2264
2506
|
}) => {
|
|
2265
|
-
return /* @__PURE__ */
|
|
2507
|
+
return /* @__PURE__ */ import_react43.default.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col items-start mb-16 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("h2", { className: "text-3xl tracking-tight text-black leading-[1.05] mb-6" }, headline), /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-600 max-w-2xl" }, description)), /* @__PURE__ */ import_react43.default.createElement("div", { className: "w-full h-px bg-neutral-100 mb-16", "aria-hidden": "true" }), /* @__PURE__ */ import_react43.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_react43.default.createElement(
|
|
2266
2508
|
"div",
|
|
2267
2509
|
{
|
|
2268
2510
|
key: idx,
|
|
2269
2511
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
2270
2512
|
style: { animationDelay: feature.delay || "0ms" }
|
|
2271
2513
|
},
|
|
2272
|
-
/* @__PURE__ */
|
|
2273
|
-
/* @__PURE__ */
|
|
2514
|
+
/* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ import_react43.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_react43.default.createElement(import_react44.HugeiconsIcon, { icon: feature.icon, size: 24 })), /* @__PURE__ */ import_react43.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react43.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ import_react43.default.createElement("h3", { className: "text-xl tracking-tight text-black" }, feature.title))),
|
|
2515
|
+
/* @__PURE__ */ import_react43.default.createElement("div", null, /* @__PURE__ */ import_react43.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
2274
2516
|
)))));
|
|
2275
2517
|
};
|
|
2276
2518
|
|
|
2277
2519
|
// src/components/ManagedDocument.tsx
|
|
2278
|
-
var
|
|
2520
|
+
var import_react45 = __toESM(require("react"));
|
|
2279
2521
|
var ManagedDocument = ({
|
|
2280
2522
|
tagline,
|
|
2281
2523
|
title,
|
|
@@ -2283,9 +2525,9 @@ var ManagedDocument = ({
|
|
|
2283
2525
|
contactText,
|
|
2284
2526
|
contactEmail
|
|
2285
2527
|
}) => {
|
|
2286
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2287
|
-
const titleRef = (0,
|
|
2288
|
-
(0,
|
|
2528
|
+
const [isAnimating, setIsAnimating] = (0, import_react45.useState)(false);
|
|
2529
|
+
const titleRef = (0, import_react45.useRef)(null);
|
|
2530
|
+
(0, import_react45.useEffect)(() => {
|
|
2289
2531
|
const observer = new IntersectionObserver(
|
|
2290
2532
|
([entry]) => {
|
|
2291
2533
|
if (entry.isIntersecting) {
|
|
@@ -2305,7 +2547,7 @@ var ManagedDocument = ({
|
|
|
2305
2547
|
}, []);
|
|
2306
2548
|
return (
|
|
2307
2549
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
2308
|
-
/* @__PURE__ */
|
|
2550
|
+
/* @__PURE__ */ import_react45.default.createElement("div", { className: "grow pt-4 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react45.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react45.default.createElement(
|
|
2309
2551
|
"h1",
|
|
2310
2552
|
{
|
|
2311
2553
|
ref: titleRef,
|
|
@@ -2313,7 +2555,7 @@ var ManagedDocument = ({
|
|
|
2313
2555
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2314
2556
|
},
|
|
2315
2557
|
title
|
|
2316
|
-
)), sections.map((section, index) => /* @__PURE__ */
|
|
2558
|
+
)), sections.map((section, index) => /* @__PURE__ */ import_react45.default.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ import_react45.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_react45.default.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-700 space-y-4 text-left " }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ import_react45.default.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ import_react45.default.createElement("div", { className: `border-neutral-100 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-neutral-900 text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ import_react45.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react45.default.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react45.default.createElement(
|
|
2317
2559
|
"a",
|
|
2318
2560
|
{
|
|
2319
2561
|
href: `mailto:${contactEmail}`,
|
|
@@ -2325,18 +2567,18 @@ var ManagedDocument = ({
|
|
|
2325
2567
|
};
|
|
2326
2568
|
|
|
2327
2569
|
// src/components/ManagedContactBlock.tsx
|
|
2328
|
-
var
|
|
2329
|
-
var
|
|
2570
|
+
var import_react46 = __toESM(require("react"));
|
|
2571
|
+
var import_react47 = require("@hugeicons/react");
|
|
2330
2572
|
var SecureEmail = ({ user, domain, className }) => {
|
|
2331
|
-
const [isMounted, setIsMounted] = (0,
|
|
2332
|
-
(0,
|
|
2573
|
+
const [isMounted, setIsMounted] = (0, import_react46.useState)(false);
|
|
2574
|
+
(0, import_react46.useEffect)(() => {
|
|
2333
2575
|
setIsMounted(true);
|
|
2334
2576
|
}, []);
|
|
2335
2577
|
if (!isMounted) {
|
|
2336
|
-
return /* @__PURE__ */
|
|
2578
|
+
return /* @__PURE__ */ import_react46.default.createElement("span", { className, style: { opacity: 0 } }, "Loading");
|
|
2337
2579
|
}
|
|
2338
2580
|
const email = `${user}@${domain}`;
|
|
2339
|
-
return /* @__PURE__ */
|
|
2581
|
+
return /* @__PURE__ */ import_react46.default.createElement("a", { href: `mailto:${email}`, className }, email);
|
|
2340
2582
|
};
|
|
2341
2583
|
var ManagedContactBlock = ({
|
|
2342
2584
|
tagline,
|
|
@@ -2345,7 +2587,7 @@ var ManagedContactBlock = ({
|
|
|
2345
2587
|
emails,
|
|
2346
2588
|
socials
|
|
2347
2589
|
}) => {
|
|
2348
|
-
return /* @__PURE__ */
|
|
2590
|
+
return /* @__PURE__ */ import_react46.default.createElement("div", { className: "grow pt-4 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react46.default.createElement(
|
|
2349
2591
|
"div",
|
|
2350
2592
|
{
|
|
2351
2593
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2354,21 +2596,21 @@ var ManagedContactBlock = ({
|
|
|
2354
2596
|
backgroundRepeat: "repeat"
|
|
2355
2597
|
}
|
|
2356
2598
|
}
|
|
2357
|
-
), /* @__PURE__ */
|
|
2599
|
+
), /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react46.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react46.default.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Contact Details"), /* @__PURE__ */ import_react46.default.createElement("div", { className: "space-y-3 text-[13px] text-neutral-600 leading-[1.8]" }, company.name && /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-black" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ import_react46.default.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ import_react46.default.createElement("p", { className: "pt-2" }, /* @__PURE__ */ import_react46.default.createElement(
|
|
2358
2600
|
"a",
|
|
2359
2601
|
{
|
|
2360
2602
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
2361
2603
|
className: "transition-colors hover:text-black"
|
|
2362
2604
|
},
|
|
2363
2605
|
company.phone
|
|
2364
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */
|
|
2606
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Email Directory"), /* @__PURE__ */ import_react46.default.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ import_react46.default.createElement("div", { key: idx }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ import_react46.default.createElement(
|
|
2365
2607
|
SecureEmail,
|
|
2366
2608
|
{
|
|
2367
2609
|
user: email.user,
|
|
2368
2610
|
domain: email.domain,
|
|
2369
2611
|
className: "text-neutral-600 transition-colors hover:text-black"
|
|
2370
2612
|
}
|
|
2371
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */
|
|
2613
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react46.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Find Us Online"), /* @__PURE__ */ import_react46.default.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ import_react46.default.createElement(
|
|
2372
2614
|
"a",
|
|
2373
2615
|
{
|
|
2374
2616
|
key: idx,
|
|
@@ -2378,27 +2620,27 @@ var ManagedContactBlock = ({
|
|
|
2378
2620
|
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black",
|
|
2379
2621
|
"aria-label": social.label
|
|
2380
2622
|
},
|
|
2381
|
-
/* @__PURE__ */
|
|
2382
|
-
/* @__PURE__ */
|
|
2623
|
+
/* @__PURE__ */ import_react46.default.createElement(import_react47.HugeiconsIcon, { icon: social.icon, size: 18 }),
|
|
2624
|
+
/* @__PURE__ */ import_react46.default.createElement("span", { className: "text-[13px]" }, social.label)
|
|
2383
2625
|
)))))))));
|
|
2384
2626
|
};
|
|
2385
2627
|
|
|
2386
2628
|
// src/components/ManagedPricingBlock.tsx
|
|
2387
|
-
var
|
|
2629
|
+
var import_react48 = __toESM(require("react"));
|
|
2388
2630
|
var import_link6 = __toESM(require("next/link"));
|
|
2389
2631
|
var import_image4 = __toESM(require("next/image"));
|
|
2390
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */
|
|
2391
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */
|
|
2632
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ import_react48.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_react48.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ import_react48.default.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
2633
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ import_react48.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_react48.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ import_react48.default.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
2392
2634
|
var ManagedPricingBlock = ({
|
|
2393
2635
|
tagline,
|
|
2394
2636
|
title,
|
|
2395
2637
|
plans = [],
|
|
2396
2638
|
tabs
|
|
2397
2639
|
}) => {
|
|
2398
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2399
|
-
const [activeTabIndex, setActiveTabIndex] = (0,
|
|
2400
|
-
const titleRef = (0,
|
|
2401
|
-
(0,
|
|
2640
|
+
const [isAnimating, setIsAnimating] = (0, import_react48.useState)(false);
|
|
2641
|
+
const [activeTabIndex, setActiveTabIndex] = (0, import_react48.useState)(0);
|
|
2642
|
+
const titleRef = (0, import_react48.useRef)(null);
|
|
2643
|
+
(0, import_react48.useEffect)(() => {
|
|
2402
2644
|
const observer = new IntersectionObserver(
|
|
2403
2645
|
([entry]) => {
|
|
2404
2646
|
if (entry.isIntersecting) {
|
|
@@ -2418,7 +2660,7 @@ var ManagedPricingBlock = ({
|
|
|
2418
2660
|
}, []);
|
|
2419
2661
|
const hasTabs = tabs && tabs.length > 0;
|
|
2420
2662
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
2421
|
-
return /* @__PURE__ */
|
|
2663
|
+
return /* @__PURE__ */ import_react48.default.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ import_react48.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-[9px] tracking-[0.4em] text-black block " }, tagline), /* @__PURE__ */ import_react48.default.createElement(
|
|
2422
2664
|
"h1",
|
|
2423
2665
|
{
|
|
2424
2666
|
ref: titleRef,
|
|
@@ -2426,9 +2668,9 @@ var ManagedPricingBlock = ({
|
|
|
2426
2668
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2427
2669
|
},
|
|
2428
2670
|
title
|
|
2429
|
-
)), hasTabs && /* @__PURE__ */
|
|
2671
|
+
)), hasTabs && /* @__PURE__ */ import_react48.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_react48.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) => {
|
|
2430
2672
|
const isActive = activeTabIndex === idx;
|
|
2431
|
-
return /* @__PURE__ */
|
|
2673
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
2432
2674
|
"button",
|
|
2433
2675
|
{
|
|
2434
2676
|
key: idx,
|
|
@@ -2437,19 +2679,19 @@ var ManagedPricingBlock = ({
|
|
|
2437
2679
|
},
|
|
2438
2680
|
tab.label
|
|
2439
2681
|
);
|
|
2440
|
-
}))), /* @__PURE__ */
|
|
2682
|
+
}))), /* @__PURE__ */ import_react48.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_react48.default.createElement(
|
|
2441
2683
|
"div",
|
|
2442
2684
|
{
|
|
2443
2685
|
key: `${activeTabIndex}-${planIdx}`,
|
|
2444
2686
|
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
2445
2687
|
},
|
|
2446
|
-
/* @__PURE__ */
|
|
2688
|
+
/* @__PURE__ */ import_react48.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react48.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react48.default.createElement("h3", { className: "text-3xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ import_react48.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_react48.default.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ import_react48.default.createElement(
|
|
2447
2689
|
"div",
|
|
2448
2690
|
{
|
|
2449
2691
|
key: logoIdx,
|
|
2450
2692
|
className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
|
|
2451
2693
|
},
|
|
2452
|
-
/* @__PURE__ */
|
|
2694
|
+
/* @__PURE__ */ import_react48.default.createElement(
|
|
2453
2695
|
import_image4.default,
|
|
2454
2696
|
{
|
|
2455
2697
|
src: logo.src,
|
|
@@ -2460,7 +2702,7 @@ var ManagedPricingBlock = ({
|
|
|
2460
2702
|
}
|
|
2461
2703
|
)
|
|
2462
2704
|
)))),
|
|
2463
|
-
plan.isPremium ? /* @__PURE__ */
|
|
2705
|
+
plan.isPremium ? /* @__PURE__ */ import_react48.default.createElement(ThreeDButton, { href: plan.ctaHref, className: "mb-6 w-full" }, plan.ctaText) : /* @__PURE__ */ import_react48.default.createElement(
|
|
2464
2706
|
import_link6.default,
|
|
2465
2707
|
{
|
|
2466
2708
|
href: plan.ctaHref,
|
|
@@ -2468,20 +2710,20 @@ var ManagedPricingBlock = ({
|
|
|
2468
2710
|
},
|
|
2469
2711
|
plan.ctaText
|
|
2470
2712
|
),
|
|
2471
|
-
/* @__PURE__ */
|
|
2713
|
+
/* @__PURE__ */ import_react48.default.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
2472
2714
|
const isAvailable = feature.value !== false;
|
|
2473
2715
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
2474
|
-
return /* @__PURE__ */
|
|
2716
|
+
return /* @__PURE__ */ import_react48.default.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ import_react48.default.createElement(CheckIcon, null) : /* @__PURE__ */ import_react48.default.createElement(CrossIcon, null), /* @__PURE__ */ import_react48.default.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ import_react48.default.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
2475
2717
|
}))
|
|
2476
2718
|
)))));
|
|
2477
2719
|
};
|
|
2478
2720
|
|
|
2479
2721
|
// src/components/ManagedBoardBlock.tsx
|
|
2480
|
-
var
|
|
2722
|
+
var import_react49 = __toESM(require("react"));
|
|
2481
2723
|
var import_image5 = __toESM(require("next/image"));
|
|
2482
|
-
var
|
|
2483
|
-
var
|
|
2484
|
-
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */
|
|
2724
|
+
var import_react50 = require("@hugeicons/react");
|
|
2725
|
+
var import_core_free_icons15 = require("@hugeicons/core-free-icons");
|
|
2726
|
+
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_react49.default.createElement(
|
|
2485
2727
|
"a",
|
|
2486
2728
|
{
|
|
2487
2729
|
href,
|
|
@@ -2490,7 +2732,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_r
|
|
|
2490
2732
|
className: "text-neutral-400 hover:text-black transition-colors",
|
|
2491
2733
|
"aria-label": `${name} on ${label}`
|
|
2492
2734
|
},
|
|
2493
|
-
/* @__PURE__ */
|
|
2735
|
+
/* @__PURE__ */ import_react49.default.createElement(import_react50.HugeiconsIcon, { icon, size: 16 })
|
|
2494
2736
|
);
|
|
2495
2737
|
var ManagedBoardBlock = ({
|
|
2496
2738
|
tagline,
|
|
@@ -2499,7 +2741,7 @@ var ManagedBoardBlock = ({
|
|
|
2499
2741
|
contactText,
|
|
2500
2742
|
contactEmail
|
|
2501
2743
|
}) => {
|
|
2502
|
-
return /* @__PURE__ */
|
|
2744
|
+
return /* @__PURE__ */ import_react49.default.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ import_react49.default.createElement(
|
|
2503
2745
|
"div",
|
|
2504
2746
|
{
|
|
2505
2747
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2508,7 +2750,7 @@ var ManagedBoardBlock = ({
|
|
|
2508
2750
|
backgroundRepeat: "repeat"
|
|
2509
2751
|
}
|
|
2510
2752
|
}
|
|
2511
|
-
), /* @__PURE__ */
|
|
2753
|
+
), /* @__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("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ import_react49.default.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ import_react49.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_react49.default.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-white flex flex-col transition-all group" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ import_react49.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_react49.default.createElement(
|
|
2512
2754
|
import_image5.default,
|
|
2513
2755
|
{
|
|
2514
2756
|
src: member.imageSrc,
|
|
@@ -2517,44 +2759,44 @@ var ManagedBoardBlock = ({
|
|
|
2517
2759
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
2518
2760
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
2519
2761
|
}
|
|
2520
|
-
)), /* @__PURE__ */
|
|
2762
|
+
)), /* @__PURE__ */ import_react49.default.createElement("div", { className: "pt-1" }, /* @__PURE__ */ import_react49.default.createElement("h3", { className: " text-[14px] md:text-[15px] text-black tracking-tight" }, member.name), /* @__PURE__ */ import_react49.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ import_react49.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 text-left grow mb-8" }, member.bio), /* @__PURE__ */ import_react49.default.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ import_react49.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react49.default.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ import_react49.default.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ import_react49.default.createElement(
|
|
2521
2763
|
MemberSocialLink,
|
|
2522
2764
|
{
|
|
2523
2765
|
href: `https://x.com/${member.twitterHandle}`,
|
|
2524
|
-
icon:
|
|
2766
|
+
icon: import_core_free_icons15.TwitterIcon,
|
|
2525
2767
|
label: "X",
|
|
2526
2768
|
name: member.name
|
|
2527
2769
|
}
|
|
2528
|
-
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */
|
|
2770
|
+
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */ import_react49.default.createElement(
|
|
2529
2771
|
MemberSocialLink,
|
|
2530
2772
|
{
|
|
2531
2773
|
href: member.linkedinHandle,
|
|
2532
|
-
icon:
|
|
2774
|
+
icon: import_core_free_icons15.LinkedinIcon,
|
|
2533
2775
|
label: "LinkedIn",
|
|
2534
2776
|
name: member.name
|
|
2535
2777
|
}
|
|
2536
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */
|
|
2778
|
+
))))))), (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("a", { href: `mailto:${contactEmail}`, className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
2537
2779
|
};
|
|
2538
2780
|
|
|
2539
2781
|
// src/components/ManagedNotFoundBlock.tsx
|
|
2540
|
-
var
|
|
2782
|
+
var import_react51 = __toESM(require("react"));
|
|
2541
2783
|
var ManagedNotFoundBlock = ({
|
|
2542
2784
|
title = "404 - Page Not Found",
|
|
2543
2785
|
description = "The page you are looking for does not exist or has been moved."
|
|
2544
2786
|
}) => {
|
|
2545
|
-
return /* @__PURE__ */
|
|
2787
|
+
return /* @__PURE__ */ import_react51.default.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-transparent" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ import_react51.default.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ import_react51.default.createElement(
|
|
2546
2788
|
"svg",
|
|
2547
2789
|
{
|
|
2548
2790
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2549
2791
|
viewBox: "0 0 24 24",
|
|
2550
2792
|
className: "w-12 h-12 fill-neutral-100"
|
|
2551
2793
|
},
|
|
2552
|
-
/* @__PURE__ */
|
|
2553
|
-
)), /* @__PURE__ */
|
|
2794
|
+
/* @__PURE__ */ import_react51.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" })
|
|
2795
|
+
)), /* @__PURE__ */ import_react51.default.createElement("h1", { className: " text-xl md:text-3xl text-black tracking-tight mb-4" }, title), /* @__PURE__ */ import_react51.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-12" }, description)));
|
|
2554
2796
|
};
|
|
2555
2797
|
|
|
2556
2798
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
2557
|
-
var
|
|
2799
|
+
var import_react52 = __toESM(require("react"));
|
|
2558
2800
|
var import_image6 = __toESM(require("next/image"));
|
|
2559
2801
|
var ManagedNewsletterSplitBlock = ({
|
|
2560
2802
|
tagline,
|
|
@@ -2568,7 +2810,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2568
2810
|
ctaHref = "/contact",
|
|
2569
2811
|
children
|
|
2570
2812
|
}) => {
|
|
2571
|
-
return /* @__PURE__ */
|
|
2813
|
+
return /* @__PURE__ */ import_react52.default.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden" }, /* @__PURE__ */ import_react52.default.createElement(
|
|
2572
2814
|
import_image6.default,
|
|
2573
2815
|
{
|
|
2574
2816
|
src: imageSrc,
|
|
@@ -2578,7 +2820,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2578
2820
|
className: "object-cover object-top grayscale opacity-60",
|
|
2579
2821
|
quality: 100
|
|
2580
2822
|
}
|
|
2581
|
-
), /* @__PURE__ */
|
|
2823
|
+
), /* @__PURE__ */ import_react52.default.createElement(
|
|
2582
2824
|
"div",
|
|
2583
2825
|
{
|
|
2584
2826
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
@@ -2586,7 +2828,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2586
2828
|
background: "linear-gradient(to right, rgba(255,255,255,0) 30%, #ffffff 100%)"
|
|
2587
2829
|
}
|
|
2588
2830
|
}
|
|
2589
|
-
), /* @__PURE__ */
|
|
2831
|
+
), /* @__PURE__ */ import_react52.default.createElement(
|
|
2590
2832
|
"div",
|
|
2591
2833
|
{
|
|
2592
2834
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
@@ -2594,7 +2836,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2594
2836
|
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
2595
2837
|
}
|
|
2596
2838
|
}
|
|
2597
|
-
)), /* @__PURE__ */
|
|
2839
|
+
)), /* @__PURE__ */ import_react52.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_react52.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_react52.default.createElement(
|
|
2598
2840
|
"div",
|
|
2599
2841
|
{
|
|
2600
2842
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2603,7 +2845,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2603
2845
|
backgroundRepeat: "repeat"
|
|
2604
2846
|
}
|
|
2605
2847
|
}
|
|
2606
|
-
), /* @__PURE__ */
|
|
2848
|
+
), /* @__PURE__ */ import_react52.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "mb-10 border-b border-neutral-100 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ import_react52.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 " }, tagline), /* @__PURE__ */ import_react52.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, subtitle)), /* @__PURE__ */ import_react52.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ import_react52.default.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ import_react52.default.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ import_react52.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react52.default.createElement("div", { className: "grow h-px bg-neutral-100" }), /* @__PURE__ */ import_react52.default.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-400 " }, dividerText), /* @__PURE__ */ import_react52.default.createElement("div", { className: "grow h-px bg-neutral-100" })), ctaText && ctaHref && /* @__PURE__ */ import_react52.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react52.default.createElement(
|
|
2607
2849
|
ThreeDButton,
|
|
2608
2850
|
{
|
|
2609
2851
|
href: ctaHref,
|
|
@@ -2614,14 +2856,14 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
2614
2856
|
};
|
|
2615
2857
|
|
|
2616
2858
|
// src/components/PortfolioHero.tsx
|
|
2617
|
-
var
|
|
2859
|
+
var import_react53 = __toESM(require("react"));
|
|
2618
2860
|
var import_link7 = __toESM(require("next/link"));
|
|
2619
2861
|
var import_image7 = __toESM(require("next/image"));
|
|
2620
|
-
var
|
|
2621
|
-
var
|
|
2862
|
+
var import_react54 = require("@hugeicons/react");
|
|
2863
|
+
var import_core_free_icons16 = require("@hugeicons/core-free-icons");
|
|
2622
2864
|
var useScrollAnimation = () => {
|
|
2623
|
-
const elementRef = (0,
|
|
2624
|
-
(0,
|
|
2865
|
+
const elementRef = (0, import_react53.useRef)(null);
|
|
2866
|
+
(0, import_react53.useEffect)(() => {
|
|
2625
2867
|
const el = elementRef.current;
|
|
2626
2868
|
if (!el) return;
|
|
2627
2869
|
const observer = new IntersectionObserver(
|
|
@@ -2657,13 +2899,13 @@ var PortfolioHero = ({
|
|
|
2657
2899
|
secondaryCtaHref
|
|
2658
2900
|
}) => {
|
|
2659
2901
|
const heroContentRef = useScrollAnimation();
|
|
2660
|
-
return /* @__PURE__ */
|
|
2902
|
+
return /* @__PURE__ */ import_react53.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_react53.default.createElement(
|
|
2661
2903
|
"div",
|
|
2662
2904
|
{
|
|
2663
2905
|
ref: heroContentRef,
|
|
2664
2906
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
2665
2907
|
},
|
|
2666
|
-
/* @__PURE__ */
|
|
2908
|
+
/* @__PURE__ */ import_react53.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ import_react53.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_react53.default.createElement(
|
|
2667
2909
|
import_image7.default,
|
|
2668
2910
|
{
|
|
2669
2911
|
src: imageSrc,
|
|
@@ -2674,7 +2916,7 @@ var PortfolioHero = ({
|
|
|
2674
2916
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
2675
2917
|
quality: 100
|
|
2676
2918
|
}
|
|
2677
|
-
)), /* @__PURE__ */
|
|
2919
|
+
)), /* @__PURE__ */ import_react53.default.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ import_react53.default.createElement("h1", { className: " text-3xl sm:text-5xl lg:text-6xl tracking-tight text-black leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ import_react53.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ import_react53.default.createElement(
|
|
2678
2920
|
"a",
|
|
2679
2921
|
{
|
|
2680
2922
|
href: socialLinkHref,
|
|
@@ -2684,31 +2926,31 @@ var PortfolioHero = ({
|
|
|
2684
2926
|
},
|
|
2685
2927
|
socialLinkText
|
|
2686
2928
|
))),
|
|
2687
|
-
/* @__PURE__ */
|
|
2688
|
-
/* @__PURE__ */
|
|
2929
|
+
/* @__PURE__ */ import_react53.default.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-600" }, bio),
|
|
2930
|
+
/* @__PURE__ */ import_react53.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ import_react53.default.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
2689
2931
|
ThreeDButton,
|
|
2690
2932
|
{
|
|
2691
2933
|
href: primaryCtaHref,
|
|
2692
2934
|
className: "py-3 tracking-widest text-[11px]"
|
|
2693
2935
|
},
|
|
2694
2936
|
primaryCtaText
|
|
2695
|
-
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
2937
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react53.default.createElement(
|
|
2696
2938
|
import_link7.default,
|
|
2697
2939
|
{
|
|
2698
2940
|
href: secondaryCtaHref,
|
|
2699
2941
|
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"
|
|
2700
2942
|
},
|
|
2701
2943
|
secondaryCtaText,
|
|
2702
|
-
/* @__PURE__ */
|
|
2944
|
+
/* @__PURE__ */ import_react53.default.createElement(import_react54.HugeiconsIcon, { icon: import_core_free_icons16.ArrowRight01Icon, size: 16 })
|
|
2703
2945
|
))
|
|
2704
2946
|
));
|
|
2705
2947
|
};
|
|
2706
2948
|
|
|
2707
2949
|
// src/components/GifFeatureCard.tsx
|
|
2708
|
-
var
|
|
2950
|
+
var import_react55 = __toESM(require("react"));
|
|
2709
2951
|
var import_image8 = __toESM(require("next/image"));
|
|
2710
|
-
var
|
|
2711
|
-
var
|
|
2952
|
+
var import_react56 = require("@hugeicons/react");
|
|
2953
|
+
var import_core_free_icons17 = require("@hugeicons/core-free-icons");
|
|
2712
2954
|
var GifFeatureCard = ({
|
|
2713
2955
|
gifSrc,
|
|
2714
2956
|
title,
|
|
@@ -2716,20 +2958,20 @@ var GifFeatureCard = ({
|
|
|
2716
2958
|
alt = "Feature animation",
|
|
2717
2959
|
className = "aspect-video"
|
|
2718
2960
|
}) => {
|
|
2719
|
-
const [isLoading, setIsLoading] = (0,
|
|
2720
|
-
return /* @__PURE__ */
|
|
2721
|
-
|
|
2961
|
+
const [isLoading, setIsLoading] = (0, import_react55.useState)(true);
|
|
2962
|
+
return /* @__PURE__ */ import_react55.default.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ import_react55.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ import_react55.default.createElement(
|
|
2963
|
+
import_react56.HugeiconsIcon,
|
|
2722
2964
|
{
|
|
2723
|
-
icon:
|
|
2965
|
+
icon: import_core_free_icons17.Loading03Icon,
|
|
2724
2966
|
size: 32,
|
|
2725
2967
|
className: "animate-spin text-white"
|
|
2726
2968
|
}
|
|
2727
|
-
)), /* @__PURE__ */
|
|
2969
|
+
)), /* @__PURE__ */ import_react55.default.createElement(
|
|
2728
2970
|
"div",
|
|
2729
2971
|
{
|
|
2730
2972
|
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"}`
|
|
2731
2973
|
},
|
|
2732
|
-
/* @__PURE__ */
|
|
2974
|
+
/* @__PURE__ */ import_react55.default.createElement(
|
|
2733
2975
|
import_image8.default,
|
|
2734
2976
|
{
|
|
2735
2977
|
src: gifSrc,
|
|
@@ -2740,16 +2982,16 @@ var GifFeatureCard = ({
|
|
|
2740
2982
|
className: "object-cover object-center pointer-events-none"
|
|
2741
2983
|
}
|
|
2742
2984
|
)
|
|
2743
|
-
), /* @__PURE__ */
|
|
2985
|
+
), /* @__PURE__ */ import_react55.default.createElement(
|
|
2744
2986
|
"div",
|
|
2745
2987
|
{
|
|
2746
2988
|
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"
|
|
2747
2989
|
}
|
|
2748
|
-
), /* @__PURE__ */
|
|
2990
|
+
), /* @__PURE__ */ import_react55.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_react55.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_react55.default.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
2749
2991
|
};
|
|
2750
2992
|
|
|
2751
2993
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
2752
|
-
var
|
|
2994
|
+
var import_react57 = __toESM(require("react"));
|
|
2753
2995
|
var import_image9 = __toESM(require("next/image"));
|
|
2754
2996
|
var MedicalFeatureStatsBlock = ({
|
|
2755
2997
|
bottomHeadline,
|
|
@@ -2758,9 +3000,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
2758
3000
|
trustText,
|
|
2759
3001
|
stats
|
|
2760
3002
|
}) => {
|
|
2761
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
2762
|
-
const titleRef = (0,
|
|
2763
|
-
(0,
|
|
3003
|
+
const [isAnimating, setIsAnimating] = (0, import_react57.useState)(false);
|
|
3004
|
+
const titleRef = (0, import_react57.useRef)(null);
|
|
3005
|
+
(0, import_react57.useEffect)(() => {
|
|
2764
3006
|
const observer = new IntersectionObserver(
|
|
2765
3007
|
([entry]) => {
|
|
2766
3008
|
if (entry.isIntersecting) {
|
|
@@ -2778,7 +3020,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
2778
3020
|
}
|
|
2779
3021
|
return () => observer.disconnect();
|
|
2780
3022
|
}, []);
|
|
2781
|
-
return /* @__PURE__ */
|
|
3023
|
+
return /* @__PURE__ */ import_react57.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ import_react57.default.createElement(
|
|
2782
3024
|
"h2",
|
|
2783
3025
|
{
|
|
2784
3026
|
ref: titleRef,
|
|
@@ -2786,7 +3028,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
2786
3028
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
2787
3029
|
},
|
|
2788
3030
|
bottomHeadline
|
|
2789
|
-
), /* @__PURE__ */
|
|
3031
|
+
), /* @__PURE__ */ import_react57.default.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ import_react57.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_react57.default.createElement(
|
|
2790
3032
|
import_image9.default,
|
|
2791
3033
|
{
|
|
2792
3034
|
src,
|
|
@@ -2795,17 +3037,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
2795
3037
|
sizes: "48px",
|
|
2796
3038
|
className: "object-cover"
|
|
2797
3039
|
}
|
|
2798
|
-
)))), /* @__PURE__ */
|
|
3040
|
+
)))), /* @__PURE__ */ import_react57.default.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react57.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react57.default.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react57.default.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ import_react57.default.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react57.default.createElement("h1", { className: "text-6xl gradient-text md:text-[80px] tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
|
|
2799
3041
|
};
|
|
2800
3042
|
|
|
2801
3043
|
// src/components/ConsultantShowcase.tsx
|
|
2802
|
-
var
|
|
3044
|
+
var import_react58 = __toESM(require("react"));
|
|
2803
3045
|
var import_image10 = __toESM(require("next/image"));
|
|
2804
|
-
var
|
|
2805
|
-
var
|
|
3046
|
+
var import_react59 = require("@hugeicons/react");
|
|
3047
|
+
var import_core_free_icons18 = require("@hugeicons/core-free-icons");
|
|
2806
3048
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
2807
|
-
const [isLoading, setIsLoading] = (0,
|
|
2808
|
-
return /* @__PURE__ */
|
|
3049
|
+
const [isLoading, setIsLoading] = (0, import_react58.useState)(true);
|
|
3050
|
+
return /* @__PURE__ */ import_react58.default.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ import_react58.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_react58.default.createElement(import_react59.HugeiconsIcon, { icon: import_core_free_icons18.Loading03Icon, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ import_react58.default.createElement(
|
|
2809
3051
|
import_image10.default,
|
|
2810
3052
|
{
|
|
2811
3053
|
src,
|
|
@@ -2824,9 +3066,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
2824
3066
|
var ConsultantShowcase = ({
|
|
2825
3067
|
profiles
|
|
2826
3068
|
}) => {
|
|
2827
|
-
const [currentIndex, setCurrentIndex] = (0,
|
|
2828
|
-
const [touchStart, setTouchStart] = (0,
|
|
2829
|
-
const [touchEnd, setTouchEnd] = (0,
|
|
3069
|
+
const [currentIndex, setCurrentIndex] = (0, import_react58.useState)(0);
|
|
3070
|
+
const [touchStart, setTouchStart] = (0, import_react58.useState)(null);
|
|
3071
|
+
const [touchEnd, setTouchEnd] = (0, import_react58.useState)(null);
|
|
2830
3072
|
const nextSlide = () => {
|
|
2831
3073
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
2832
3074
|
};
|
|
@@ -2851,7 +3093,7 @@ var ConsultantShowcase = ({
|
|
|
2851
3093
|
}
|
|
2852
3094
|
};
|
|
2853
3095
|
if (!profiles || profiles.length === 0) return null;
|
|
2854
|
-
return /* @__PURE__ */
|
|
3096
|
+
return /* @__PURE__ */ import_react58.default.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ import_react58.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react58.default.createElement(
|
|
2855
3097
|
"div",
|
|
2856
3098
|
{
|
|
2857
3099
|
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
@@ -2861,13 +3103,13 @@ var ConsultantShowcase = ({
|
|
|
2861
3103
|
},
|
|
2862
3104
|
profiles.map((profile, idx) => {
|
|
2863
3105
|
const isActive = idx === currentIndex;
|
|
2864
|
-
return /* @__PURE__ */
|
|
3106
|
+
return /* @__PURE__ */ import_react58.default.createElement(
|
|
2865
3107
|
"div",
|
|
2866
3108
|
{
|
|
2867
3109
|
key: profile.id,
|
|
2868
3110
|
className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
|
|
2869
3111
|
},
|
|
2870
|
-
/* @__PURE__ */
|
|
3112
|
+
/* @__PURE__ */ import_react58.default.createElement(
|
|
2871
3113
|
ImageWithLoader,
|
|
2872
3114
|
{
|
|
2873
3115
|
src: profile.imageSrc,
|
|
@@ -2875,14 +3117,14 @@ var ConsultantShowcase = ({
|
|
|
2875
3117
|
priority: idx === 0
|
|
2876
3118
|
}
|
|
2877
3119
|
),
|
|
2878
|
-
/* @__PURE__ */
|
|
2879
|
-
/* @__PURE__ */
|
|
2880
|
-
/* @__PURE__ */
|
|
3120
|
+
/* @__PURE__ */ import_react58.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
3121
|
+
/* @__PURE__ */ import_react58.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" }),
|
|
3122
|
+
/* @__PURE__ */ import_react58.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_react58.default.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ import_react58.default.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react58.default.createElement("p", { className: "text-[15px] text-white/80 tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ import_react58.default.createElement("p", { className: "text-[15px] text-white/80 tracking-wide mt-1" }, profile.description)))
|
|
2881
3123
|
);
|
|
2882
3124
|
}),
|
|
2883
|
-
/* @__PURE__ */
|
|
2884
|
-
/* @__PURE__ */
|
|
2885
|
-
/* @__PURE__ */
|
|
3125
|
+
/* @__PURE__ */ import_react58.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" }),
|
|
3126
|
+
/* @__PURE__ */ import_react58.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" }),
|
|
3127
|
+
/* @__PURE__ */ import_react58.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_react58.default.createElement(
|
|
2886
3128
|
"button",
|
|
2887
3129
|
{
|
|
2888
3130
|
key: idx,
|
|
@@ -2895,13 +3137,13 @@ var ConsultantShowcase = ({
|
|
|
2895
3137
|
};
|
|
2896
3138
|
|
|
2897
3139
|
// src/components/ContentGridBlock.tsx
|
|
2898
|
-
var
|
|
3140
|
+
var import_react60 = __toESM(require("react"));
|
|
2899
3141
|
var import_image11 = __toESM(require("next/image"));
|
|
2900
|
-
var
|
|
2901
|
-
var
|
|
3142
|
+
var import_react61 = require("@hugeicons/react");
|
|
3143
|
+
var import_core_free_icons19 = require("@hugeicons/core-free-icons");
|
|
2902
3144
|
var ImageWithLoader2 = ({ src, alt, className, sizes }) => {
|
|
2903
|
-
const [isLoading, setIsLoading] = (0,
|
|
2904
|
-
return /* @__PURE__ */
|
|
3145
|
+
const [isLoading, setIsLoading] = (0, import_react60.useState)(true);
|
|
3146
|
+
return /* @__PURE__ */ import_react60.default.createElement("div", { className: `relative overflow-hidden bg-neutral-100 ${className}` }, isLoading && /* @__PURE__ */ import_react60.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_react60.default.createElement(import_react61.HugeiconsIcon, { icon: import_core_free_icons19.Loading03Icon, size: 24, className: "animate-spin text-neutral-400" })), /* @__PURE__ */ import_react60.default.createElement(
|
|
2905
3147
|
import_image11.default,
|
|
2906
3148
|
{
|
|
2907
3149
|
src,
|
|
@@ -2923,30 +3165,30 @@ var ContentGridBlock = ({
|
|
|
2923
3165
|
middleBottomCard,
|
|
2924
3166
|
rightCards
|
|
2925
3167
|
}) => {
|
|
2926
|
-
return /* @__PURE__ */
|
|
3168
|
+
return /* @__PURE__ */ import_react60.default.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react60.default.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react60.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react60.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react60.default.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react60.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react60.default.createElement("div", null, /* @__PURE__ */ import_react60.default.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ import_react60.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react60.default.createElement(import_image11.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react60.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react60.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react60.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react60.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ import_react60.default.createElement(import_image11.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react60.default.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react60.default.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ import_react60.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_react60.default.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react60.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react60.default.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react60.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react60.default.createElement("div", null, /* @__PURE__ */ import_react60.default.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react60.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react60.default.createElement(import_image11.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react60.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react60.default.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react60.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ import_react60.default.createElement("div", { key: idx, className: "relative w-full h-80 text-white rounded-3xl overflow-hidden group" }, /* @__PURE__ */ import_react60.default.createElement(
|
|
2927
3169
|
ImageWithLoader2,
|
|
2928
3170
|
{
|
|
2929
3171
|
src: card.bgImageSrc,
|
|
2930
3172
|
alt: card.title,
|
|
2931
3173
|
className: "absolute inset-0 w-full h-full"
|
|
2932
3174
|
}
|
|
2933
|
-
), /* @__PURE__ */
|
|
3175
|
+
), /* @__PURE__ */ import_react60.default.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ import_react60.default.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ import_react60.default.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ import_react60.default.createElement("div", { className: "pt-3" }, /* @__PURE__ */ import_react60.default.createElement("h4", { className: "text-[15px] text-white tracking-wide" }, card.title), /* @__PURE__ */ import_react60.default.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
|
|
2934
3176
|
};
|
|
2935
3177
|
|
|
2936
3178
|
// src/components/ManagedProjectsBlock.tsx
|
|
2937
|
-
var
|
|
3179
|
+
var import_react62 = __toESM(require("react"));
|
|
2938
3180
|
var import_link8 = __toESM(require("next/link"));
|
|
2939
3181
|
var GridSection = ({
|
|
2940
3182
|
children,
|
|
2941
3183
|
isLast = false,
|
|
2942
3184
|
className = "py-8 md:py-10"
|
|
2943
|
-
}) => /* @__PURE__ */
|
|
3185
|
+
}) => /* @__PURE__ */ import_react62.default.createElement("div", { className: `relative px-5 md:px-12 ${className} ${!isLast ? "" : ""}` }, children);
|
|
2944
3186
|
var ManagedProjectsBlock = ({
|
|
2945
3187
|
tagline,
|
|
2946
3188
|
title,
|
|
2947
3189
|
projects
|
|
2948
3190
|
}) => {
|
|
2949
|
-
return /* @__PURE__ */
|
|
3191
|
+
return /* @__PURE__ */ import_react62.default.createElement("div", { className: "grow pt-4 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ import_react62.default.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-5xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react62.default.createElement(
|
|
2950
3192
|
"div",
|
|
2951
3193
|
{
|
|
2952
3194
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -2955,10 +3197,10 @@ var ManagedProjectsBlock = ({
|
|
|
2955
3197
|
backgroundRepeat: "repeat"
|
|
2956
3198
|
}
|
|
2957
3199
|
}
|
|
2958
|
-
), /* @__PURE__ */
|
|
3200
|
+
), /* @__PURE__ */ import_react62.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react62.default.createElement(GridSection, null, tagline && /* @__PURE__ */ import_react62.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react62.default.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
2959
3201
|
const isLast = index === projects.length - 1;
|
|
2960
|
-
const projectContent = /* @__PURE__ */
|
|
2961
|
-
return /* @__PURE__ */
|
|
3202
|
+
const projectContent = /* @__PURE__ */ import_react62.default.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ import_react62.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_react62.default.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ import_react62.default.createElement("h2", { className: " text-[16px] text-black transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ import_react62.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_react62.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_react62.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0 " }, project.date)), /* @__PURE__ */ import_react62.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));
|
|
3203
|
+
return /* @__PURE__ */ import_react62.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_react62.default.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ import_react62.default.createElement(import_link8.default, { href: project.link, className: "block outline-none" }, projectContent));
|
|
2962
3204
|
}))));
|
|
2963
3205
|
};
|
|
2964
3206
|
// Annotate the CommonJS export names for ESM import in node:
|