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