@retinalabsllc/zairusjs 8.1.60 → 8.1.80
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 +7 -21
- package/dist/index.d.ts +7 -21
- package/dist/index.js +218 -215
- package/dist/index.mjs +260 -257
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -21,6 +21,7 @@ var Faq = ({
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
{ threshold: 0.1 }
|
|
24
|
+
// Triggers when 10% of the title is visible
|
|
24
25
|
);
|
|
25
26
|
if (titleRef.current) {
|
|
26
27
|
observer.observe(titleRef.current);
|
|
@@ -30,11 +31,11 @@ var Faq = ({
|
|
|
30
31
|
const toggleFaq = (index) => {
|
|
31
32
|
setActiveFaq(activeFaq === index ? null : index);
|
|
32
33
|
};
|
|
33
|
-
return /* @__PURE__ */ React.createElement("div", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative
|
|
34
|
+
return /* @__PURE__ */ React.createElement("div", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-10 max-w-4xl w-full" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col items-center w-full" }, title && /* @__PURE__ */ React.createElement(
|
|
34
35
|
"h2",
|
|
35
36
|
{
|
|
36
37
|
ref: titleRef,
|
|
37
|
-
className: `text-3xl
|
|
38
|
+
className: `text-3xl text-black tracking-tight leading-[1.15] ${isAnimating ? "" : ""}`,
|
|
38
39
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
39
40
|
},
|
|
40
41
|
"FAQ"
|
|
@@ -42,10 +43,10 @@ var Faq = ({
|
|
|
42
43
|
const isOpen = activeFaq === index;
|
|
43
44
|
const getShadowStyle = () => {
|
|
44
45
|
if (isOpen) return `
|
|
45
|
-
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.
|
|
46
|
-
inset 0 -3px 0 0 rgba(0, 0, 0, 0.
|
|
47
|
-
0 4px 0 0 #
|
|
48
|
-
0 12px 24px rgba(0, 0, 0, 0.
|
|
46
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.2),
|
|
47
|
+
inset 0 -3px 0 0 rgba(0, 0, 0, 0.3),
|
|
48
|
+
0 4px 0 0 #0c0c0c,
|
|
49
|
+
0 12px 24px rgba(0, 0, 0, 0.1)
|
|
49
50
|
`;
|
|
50
51
|
return "none";
|
|
51
52
|
};
|
|
@@ -53,7 +54,7 @@ var Faq = ({
|
|
|
53
54
|
"div",
|
|
54
55
|
{
|
|
55
56
|
key: index,
|
|
56
|
-
className: `relative transition-all duration-500 rounded-4xl overflow-hidden
|
|
57
|
+
className: `relative transition-all duration-500 rounded-4xl overflow-hidden ${isOpen ? "bg-black border-transparent" : "border border-neutral-200 hover:border-neutral-300"}`,
|
|
57
58
|
style: { boxShadow: getShadowStyle() }
|
|
58
59
|
},
|
|
59
60
|
isOpen && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
@@ -72,19 +73,19 @@ var Faq = ({
|
|
|
72
73
|
/* @__PURE__ */ React.createElement(
|
|
73
74
|
"span",
|
|
74
75
|
{
|
|
75
|
-
className: `text-[15px] transition-colors duration-300 flex items-center gap-2 ${isOpen ? "text-white" : "text-
|
|
76
|
+
className: `text-[15px] transition-colors duration-300 flex items-center gap-2 ${isOpen ? "text-white" : "text-black"}`
|
|
76
77
|
},
|
|
77
|
-
/* @__PURE__ */ React.createElement("span", { className: "text-neutral-
|
|
78
|
+
/* @__PURE__ */ React.createElement("span", { className: isOpen ? "text-neutral-400" : "text-neutral-400" }, index + 1, "."),
|
|
78
79
|
faq.question
|
|
79
80
|
),
|
|
80
|
-
/* @__PURE__ */ React.createElement("div", { className: `shrink-0 transition-colors duration-300 ${isOpen ? "text-white" : "text-
|
|
81
|
+
/* @__PURE__ */ React.createElement("div", { className: `shrink-0 transition-colors duration-300 ${isOpen ? "text-white" : "text-black group-hover:text-black/70"}` }, isOpen ? /* @__PURE__ */ React.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React.createElement("path", { d: "M8 12h8", strokeLinecap: "round" })) : /* @__PURE__ */ React.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /* @__PURE__ */ React.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React.createElement("path", { d: "M12 8v8M8 12h8", strokeLinecap: "round" })))
|
|
81
82
|
),
|
|
82
83
|
/* @__PURE__ */ React.createElement(
|
|
83
84
|
"div",
|
|
84
85
|
{
|
|
85
86
|
className: `relative z-20 grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"}`
|
|
86
87
|
},
|
|
87
|
-
/* @__PURE__ */ React.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ React.createElement("p", { className: `text-[14px] leading-relaxed px-6 pb-6 pt-0 pr-12 transition-colors duration-300 ${isOpen ? "text-neutral-
|
|
88
|
+
/* @__PURE__ */ React.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ React.createElement("p", { className: `text-[14px] leading-relaxed px-6 pb-6 pt-0 pr-12 transition-colors duration-300 ${isOpen ? "text-neutral-300" : "text-transparent"}` }, faq.answer))
|
|
88
89
|
)
|
|
89
90
|
);
|
|
90
91
|
}))));
|
|
@@ -99,23 +100,31 @@ var ThreeDButton = ({
|
|
|
99
100
|
className = "",
|
|
100
101
|
onClick
|
|
101
102
|
}) => {
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
const baseShadow = `
|
|
104
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.3),
|
|
105
|
+
inset 0 -2px 0 0 rgba(0, 0, 0, 0.5),
|
|
106
|
+
0 3px 0 0 #0c0c0c,
|
|
107
|
+
0 6px 10px rgba(0, 0, 0, 0.3)
|
|
108
|
+
`;
|
|
109
|
+
const hoverShadow = `
|
|
110
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.35),
|
|
111
|
+
inset 0 -2px 0 0 rgba(0, 0, 0, 0.5),
|
|
112
|
+
0 4px 0 0 #0c0c0c,
|
|
113
|
+
0 8px 12px rgba(0, 0, 0, 0.35)
|
|
114
|
+
`;
|
|
115
|
+
const activeShadow = `
|
|
116
|
+
inset 0 1px 0 0 rgba(255, 255, 255, 0.1),
|
|
117
|
+
inset 0 -1px 0 0 rgba(0, 0, 0, 0.5),
|
|
118
|
+
0 1px 0 0 #0c0c0c,
|
|
119
|
+
0 2px 4px rgba(0, 0, 0, 0.2)
|
|
120
|
+
`;
|
|
106
121
|
return /* @__PURE__ */ React2.createElement(
|
|
107
122
|
Link,
|
|
108
123
|
{
|
|
109
124
|
href,
|
|
110
125
|
onClick,
|
|
111
|
-
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
112
|
-
style: {
|
|
113
|
-
backgroundImage: silverBg,
|
|
114
|
-
backgroundSize: "cover",
|
|
115
|
-
backgroundPosition: "center right",
|
|
116
|
-
boxShadow: baseShadow,
|
|
117
|
-
textShadow: "0 1px 1px rgba(255,255,255,0.6)"
|
|
118
|
-
},
|
|
126
|
+
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full bg-neutral-950 text-white text-xs transition-all duration-150 select-none group ${className}`,
|
|
127
|
+
style: { boxShadow: baseShadow },
|
|
119
128
|
onMouseEnter: (e) => {
|
|
120
129
|
e.currentTarget.style.boxShadow = hoverShadow;
|
|
121
130
|
e.currentTarget.style.transform = "translateY(-1px)";
|
|
@@ -132,8 +141,8 @@ var ThreeDButton = ({
|
|
|
132
141
|
e.currentTarget.style.transform = "translateY(-1px)";
|
|
133
142
|
}
|
|
134
143
|
},
|
|
135
|
-
/* @__PURE__ */ React2.createElement("span", { className: "absolute inset-0 bg-linear-to-
|
|
136
|
-
/* @__PURE__ */ React2.createElement("span", { className: "relative z-10 pt-1 tracking-wide text-
|
|
144
|
+
/* @__PURE__ */ React2.createElement("span", { className: "absolute inset-0 rounded-full bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none" }),
|
|
145
|
+
/* @__PURE__ */ React2.createElement("span", { className: "relative z-10 pt-1 tracking-wide text-white/95 group-hover:text-white transition-colors duration-150 flex items-center justify-center leading-none" }, children)
|
|
137
146
|
);
|
|
138
147
|
};
|
|
139
148
|
|
|
@@ -151,11 +160,29 @@ var ThreeDActionButton = ({
|
|
|
151
160
|
ariaLabel
|
|
152
161
|
}) => {
|
|
153
162
|
const isInteractionDisabled = disabled || isLoading;
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
163
|
+
const baseShadow = `
|
|
164
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.3),
|
|
165
|
+
inset 0 -2px 0 0 rgba(0, 0, 0, 0.5),
|
|
166
|
+
0 3px 0 0 #0c0c0c,
|
|
167
|
+
0 6px 10px rgba(0, 0, 0, 0.3)
|
|
168
|
+
`;
|
|
169
|
+
const hoverShadow = `
|
|
170
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.35),
|
|
171
|
+
inset 0 -2px 0 0 rgba(0, 0, 0, 0.5),
|
|
172
|
+
0 4px 0 0 #0c0c0c,
|
|
173
|
+
0 8px 12px rgba(0, 0, 0, 0.35)
|
|
174
|
+
`;
|
|
175
|
+
const activeShadow = `
|
|
176
|
+
inset 0 1px 0 0 rgba(255, 255, 255, 0.1),
|
|
177
|
+
inset 0 -1px 0 0 rgba(0, 0, 0, 0.5),
|
|
178
|
+
0 1px 0 0 #0c0c0c,
|
|
179
|
+
0 2px 4px rgba(0, 0, 0, 0.2)
|
|
180
|
+
`;
|
|
181
|
+
const disabledShadow = `
|
|
182
|
+
inset 0 1px 0 0 rgba(255, 255, 255, 0.15),
|
|
183
|
+
inset 0 -1px 0 0 rgba(0, 0, 0, 0.3),
|
|
184
|
+
0 1px 0 0 #1c1c1c
|
|
185
|
+
`;
|
|
159
186
|
return /* @__PURE__ */ React3.createElement(
|
|
160
187
|
"button",
|
|
161
188
|
{
|
|
@@ -165,18 +192,12 @@ var ThreeDActionButton = ({
|
|
|
165
192
|
"aria-label": ariaLabel,
|
|
166
193
|
className: `
|
|
167
194
|
relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
168
|
-
|
|
169
|
-
transition-all duration-150 select-none group outline-none
|
|
170
|
-
${isInteractionDisabled ? "opacity-
|
|
195
|
+
bg-neutral-950 text-white text-xs tracking-widest
|
|
196
|
+
transition-all duration-150 select-none group outline-none
|
|
197
|
+
${isInteractionDisabled ? "opacity-50 cursor-not-allowed" : "active:translate-y-0.5"}
|
|
171
198
|
${className}
|
|
172
199
|
`,
|
|
173
|
-
style: {
|
|
174
|
-
backgroundImage: silverBg,
|
|
175
|
-
backgroundSize: "cover",
|
|
176
|
-
backgroundPosition: "center right",
|
|
177
|
-
boxShadow: isInteractionDisabled ? disabledShadow : baseShadow,
|
|
178
|
-
textShadow: "0 1px 1px rgba(255,255,255,0.6)"
|
|
179
|
-
},
|
|
200
|
+
style: { boxShadow: isInteractionDisabled ? disabledShadow : baseShadow },
|
|
180
201
|
onMouseEnter: (e) => {
|
|
181
202
|
if (isInteractionDisabled) return;
|
|
182
203
|
e.currentTarget.style.boxShadow = hoverShadow;
|
|
@@ -197,13 +218,13 @@ var ThreeDActionButton = ({
|
|
|
197
218
|
e.currentTarget.style.transform = "translateY(-1px)";
|
|
198
219
|
}
|
|
199
220
|
},
|
|
200
|
-
/* @__PURE__ */ React3.createElement("span", { className: "absolute inset-0 bg-linear-to-
|
|
201
|
-
/* @__PURE__ */ React3.createElement("span", { className: "relative z-10 flex items-center justify-center gap-2 leading-none
|
|
221
|
+
/* @__PURE__ */ React3.createElement("span", { className: "absolute inset-0 rounded-full bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none" }),
|
|
222
|
+
/* @__PURE__ */ React3.createElement("span", { className: "relative z-10 flex items-center justify-center gap-2 leading-none" }, isLoading ? /* @__PURE__ */ React3.createElement(HugeiconsIcon, { icon: Loading03Icon, size: 16, className: "animate-spin text-white" }) : children)
|
|
202
223
|
);
|
|
203
224
|
};
|
|
204
225
|
|
|
205
226
|
// src/components/Header.tsx
|
|
206
|
-
import React4 from "react";
|
|
227
|
+
import React4, { useState as useState2, useEffect as useEffect2 } from "react";
|
|
207
228
|
import Link2 from "next/link";
|
|
208
229
|
import Image from "next/image";
|
|
209
230
|
import { usePathname } from "next/navigation";
|
|
@@ -214,8 +235,8 @@ var NavLink = ({
|
|
|
214
235
|
}) => {
|
|
215
236
|
const pathname = usePathname();
|
|
216
237
|
const isActive = pathname === href;
|
|
217
|
-
const activeClass = "text-
|
|
218
|
-
const inactiveClass = "text-neutral-
|
|
238
|
+
const activeClass = "text-neutral-900 ";
|
|
239
|
+
const inactiveClass = "text-neutral-500 hover:text-neutral-900";
|
|
219
240
|
return /* @__PURE__ */ React4.createElement(
|
|
220
241
|
Link2,
|
|
221
242
|
{
|
|
@@ -235,19 +256,30 @@ var Header = ({
|
|
|
235
256
|
hideHeaderText = false,
|
|
236
257
|
compact = false
|
|
237
258
|
}) => {
|
|
259
|
+
const [mounted, setMounted] = useState2(false);
|
|
260
|
+
useEffect2(() => {
|
|
261
|
+
setMounted(true);
|
|
262
|
+
}, []);
|
|
238
263
|
const headerLayoutWidth = compact ? "w-fit mx-auto gap-8 md:gap-16" : "w-full justify-between";
|
|
239
264
|
const hasBrandSection = showLogo || !hideHeaderText;
|
|
240
|
-
|
|
265
|
+
const headerBgClass = "bg-white/80";
|
|
266
|
+
const brandTitleClass = "text-neutral-900";
|
|
267
|
+
const brandSubtitleClass = "text-neutral-500";
|
|
268
|
+
const shouldInvertLogo = !invert;
|
|
269
|
+
if (!mounted) {
|
|
270
|
+
return /* @__PURE__ */ React4.createElement("div", { className: "absolute inset-x-0 top-0 w-full h-20 z-50 pointer-events-none px-4 pt-4 sm:pt-6" });
|
|
271
|
+
}
|
|
272
|
+
return /* @__PURE__ */ React4.createElement("div", { className: "absolute inset-x-0 top-0 w-full z-50 pointer-events-none px-4 pt-4 sm:pt-6" }, /* @__PURE__ */ React4.createElement("div", { className: "max-w-5xl mx-auto w-full pointer-events-auto flex justify-center" }, /* @__PURE__ */ React4.createElement("header", { className: `${headerLayoutWidth} ${headerBgClass} backdrop-blur-md rounded-full py-2 px-6 flex items-center transition-all duration-300` }, hasBrandSection && /* @__PURE__ */ React4.createElement("div", { className: "flex items-center shrink-0" }, /* @__PURE__ */ React4.createElement(Link2, { href: "/", className: "flex items-center gap-3 transition-opacity hover:opacity-70 outline-none" }, showLogo && /* @__PURE__ */ React4.createElement(
|
|
241
273
|
Image,
|
|
242
274
|
{
|
|
243
275
|
src: logoSrc,
|
|
244
276
|
alt: `${companyName} Logo`,
|
|
245
277
|
width: 40,
|
|
246
278
|
height: 40,
|
|
247
|
-
className: `object-contain w-8 h-auto ${
|
|
279
|
+
className: `object-contain w-8 h-auto ${shouldInvertLogo ? "invert" : ""}`,
|
|
248
280
|
priority: true
|
|
249
281
|
}
|
|
250
|
-
), !hideHeaderText && /* @__PURE__ */ React4.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React4.createElement("span", { className:
|
|
282
|
+
), !hideHeaderText && /* @__PURE__ */ React4.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React4.createElement("span", { className: `text-[11px] leading-none tracking-wide mb-1 ${brandTitleClass}` }, companyName), subtitle && /* @__PURE__ */ React4.createElement("span", { className: `text-[9px] tracking-widest leading-none ${brandSubtitleClass}` }, subtitle)))), /* @__PURE__ */ React4.createElement("nav", { className: "flex items-center gap-1 md:gap-2 shrink-0" }, links.map((link, index) => /* @__PURE__ */ React4.createElement(
|
|
251
283
|
NavLink,
|
|
252
284
|
{
|
|
253
285
|
key: index,
|
|
@@ -259,7 +291,7 @@ var Header = ({
|
|
|
259
291
|
};
|
|
260
292
|
|
|
261
293
|
// src/components/Footer.tsx
|
|
262
|
-
import React5, { useState as
|
|
294
|
+
import React5, { useState as useState3 } from "react";
|
|
263
295
|
import Link3 from "next/link";
|
|
264
296
|
import { HugeiconsIcon as HugeiconsIcon2 } from "@hugeicons/react";
|
|
265
297
|
var Footer = ({
|
|
@@ -269,38 +301,38 @@ var Footer = ({
|
|
|
269
301
|
copyrightText,
|
|
270
302
|
topSection
|
|
271
303
|
}) => {
|
|
272
|
-
const [openCol, setOpenCol] =
|
|
304
|
+
const [openCol, setOpenCol] = useState3(null);
|
|
273
305
|
const toggleColumn = (idx) => {
|
|
274
306
|
setOpenCol(openCol === idx ? null : idx);
|
|
275
307
|
};
|
|
276
|
-
return /* @__PURE__ */ React5.createElement("div", { className: "
|
|
308
|
+
return /* @__PURE__ */ React5.createElement("div", { className: "" }, topSection && topSection, /* @__PURE__ */ React5.createElement("footer", { className: "relative px-6 overflow-hidden flex flex-col" }, /* @__PURE__ */ React5.createElement("div", { className: "relative w-full max-w-7xl mx-auto z-20 flex flex-col" }, /* @__PURE__ */ React5.createElement("div", { className: "relative py-12 md:py-16" }, /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start gap-12 lg:gap-16 mb-12 text-left" }, /* @__PURE__ */ React5.createElement("div", { className: "w-full lg:max-w-sm flex flex-col items-start justify-between shrink-0" }, /* @__PURE__ */ React5.createElement("div", { className: "flex items-center gap-4 mb-4" }, /* @__PURE__ */ React5.createElement("img", { src: "https://retinalabs.company/assets/images/ndpr.avif", alt: "NDPR", className: "w-28 h-auto object-contain filter grayscale opacity-80" }), /* @__PURE__ */ React5.createElement("img", { src: "https://retinalabs.company/assets/images/gdpr.avif", alt: "GDPR", className: "w-12 h-12 object-contain filter grayscale opacity-80" })), /* @__PURE__ */ React5.createElement("div", null, /* @__PURE__ */ React5.createElement("p", { className: "text-[11px] text-neutral-600 leading-relaxed pr-4" }, description))), /* @__PURE__ */ React5.createElement("div", { className: "w-full lg:flex-1 lg:max-w-2xl" }, /* @__PURE__ */ React5.createElement("div", { className: "hidden md:grid grid-cols-2 gap-x-16 lg:gap-x-24 gap-y-12" }, columns.map((col, idx) => /* @__PURE__ */ React5.createElement("div", { key: idx, className: "flex flex-col" }, /* @__PURE__ */ React5.createElement("h4", { className: "text-[11px] tracking-[0.2em] text-black mb-6 " }, col.title), /* @__PURE__ */ React5.createElement("ul", { className: "space-y-4 text-[13px] text-neutral-500" }, col.links.map((link, lIdx) => /* @__PURE__ */ React5.createElement("li", { key: lIdx }, link.isExternal ? /* @__PURE__ */ React5.createElement("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-black transition-colors block truncate" }, link.label) : /* @__PURE__ */ React5.createElement(Link3, { href: link.href, className: "hover:text-black transition-colors block truncate" }, link.label))))))), /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col md:hidden w-full border-t border-neutral-100 mt-4" }, columns.map((col, idx) => {
|
|
277
309
|
const isOpen = openCol === idx;
|
|
278
|
-
return /* @__PURE__ */ React5.createElement("div", { key: idx, className: "border-b border-neutral-
|
|
310
|
+
return /* @__PURE__ */ React5.createElement("div", { key: idx, className: "border-b border-neutral-100" }, /* @__PURE__ */ React5.createElement(
|
|
279
311
|
"button",
|
|
280
312
|
{
|
|
281
313
|
onClick: () => toggleColumn(idx),
|
|
282
314
|
className: "w-full flex items-center justify-between py-5 text-left outline-none"
|
|
283
315
|
},
|
|
284
|
-
/* @__PURE__ */ React5.createElement("span", { className: "text-[11px] tracking-[0.2em] text-
|
|
316
|
+
/* @__PURE__ */ React5.createElement("span", { className: "text-[11px] tracking-[0.2em] text-black " }, col.title),
|
|
285
317
|
/* @__PURE__ */ React5.createElement(
|
|
286
318
|
"svg",
|
|
287
319
|
{
|
|
288
|
-
className: `w-4 h-4 text-neutral-
|
|
320
|
+
className: `w-4 h-4 text-neutral-400 transition-transform duration-300 ${isOpen ? "rotate-180" : ""}`,
|
|
289
321
|
fill: "none",
|
|
290
322
|
viewBox: "0 0 24 24",
|
|
291
323
|
stroke: "currentColor"
|
|
292
324
|
},
|
|
293
325
|
/* @__PURE__ */ React5.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M19 9l-7 7-7-7" })
|
|
294
326
|
)
|
|
295
|
-
), /* @__PURE__ */ React5.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ React5.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ React5.createElement("ul", { className: "space-y-4 text-[13px] text-neutral-500 pt-2" }, col.links.map((link, lIdx) => /* @__PURE__ */ React5.createElement("li", { key: lIdx }, link.isExternal ? /* @__PURE__ */ React5.createElement("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-
|
|
296
|
-
})))), /* @__PURE__ */ React5.createElement("div", { className: "pt-8 mt-4
|
|
327
|
+
), /* @__PURE__ */ React5.createElement("div", { className: `grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] pb-6 opacity-100" : "grid-rows-[0fr] opacity-0"}` }, /* @__PURE__ */ React5.createElement("div", { className: "overflow-hidden" }, /* @__PURE__ */ React5.createElement("ul", { className: "space-y-4 text-[13px] text-neutral-500 pt-2" }, col.links.map((link, lIdx) => /* @__PURE__ */ React5.createElement("li", { key: lIdx }, link.isExternal ? /* @__PURE__ */ React5.createElement("a", { href: link.href, target: "_blank", rel: "noopener noreferrer", className: "hover:text-black transition-colors" }, link.label) : /* @__PURE__ */ React5.createElement(Link3, { href: link.href, className: "hover:text-black transition-colors" }, link.label)))))));
|
|
328
|
+
})))), /* @__PURE__ */ React5.createElement("div", { className: "pt-8 mt-4 flex flex-col-reverse md:flex-row justify-between items-start md:items-center gap-6 relative z-20" }, /* @__PURE__ */ React5.createElement("p", { className: "text-[11px] text-neutral-400 tracking-widest text-left" }, copyrightText), socialLinks && socialLinks.length > 0 && /* @__PURE__ */ React5.createElement("div", { className: "flex items-center gap-6" }, socialLinks.map((social, idx) => /* @__PURE__ */ React5.createElement(
|
|
297
329
|
"a",
|
|
298
330
|
{
|
|
299
331
|
key: idx,
|
|
300
332
|
href: social.href,
|
|
301
333
|
target: "_blank",
|
|
302
334
|
rel: "noopener noreferrer",
|
|
303
|
-
className: "text-neutral-
|
|
335
|
+
className: "text-neutral-400 hover:text-black transition-colors",
|
|
304
336
|
"aria-label": social.name
|
|
305
337
|
},
|
|
306
338
|
/* @__PURE__ */ React5.createElement(HugeiconsIcon2, { icon: social.icon, size: 20 })
|
|
@@ -308,12 +340,12 @@ var Footer = ({
|
|
|
308
340
|
};
|
|
309
341
|
|
|
310
342
|
// src/components/HeroSection.tsx
|
|
311
|
-
import React8, { useState as
|
|
343
|
+
import React8, { useState as useState5, useEffect as useEffect3, useRef as useRef2 } from "react";
|
|
312
344
|
import Link4 from "next/link";
|
|
313
345
|
import Image2 from "next/image";
|
|
314
346
|
|
|
315
347
|
// src/components/WaitlistDialog.tsx
|
|
316
|
-
import React7, { useState as
|
|
348
|
+
import React7, { useState as useState4 } from "react";
|
|
317
349
|
import { toast } from "react-hot-toast";
|
|
318
350
|
|
|
319
351
|
// src/components/ReusableInputs.tsx
|
|
@@ -328,7 +360,7 @@ var TextInput = ({
|
|
|
328
360
|
readOnly,
|
|
329
361
|
type = "text",
|
|
330
362
|
onClick
|
|
331
|
-
}) => /* @__PURE__ */ React6.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ React6.createElement("label", { className: "text-[11px] text-neutral-
|
|
363
|
+
}) => /* @__PURE__ */ React6.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ React6.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, label), /* @__PURE__ */ React6.createElement(
|
|
332
364
|
"input",
|
|
333
365
|
{
|
|
334
366
|
type,
|
|
@@ -339,7 +371,7 @@ var TextInput = ({
|
|
|
339
371
|
readOnly,
|
|
340
372
|
autoComplete: "off",
|
|
341
373
|
spellCheck: "false",
|
|
342
|
-
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
374
|
+
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-100 text-black transition-all outline-none focus:border-black disabled:opacity-50 ${readOnly ? "cursor-pointer" : ""}`
|
|
343
375
|
}
|
|
344
376
|
));
|
|
345
377
|
var NumberInput = ({
|
|
@@ -349,7 +381,7 @@ var NumberInput = ({
|
|
|
349
381
|
placeholder,
|
|
350
382
|
maxLength,
|
|
351
383
|
disabled
|
|
352
|
-
}) => /* @__PURE__ */ React6.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ React6.createElement("label", { className: "text-[11px] text-neutral-
|
|
384
|
+
}) => /* @__PURE__ */ React6.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ React6.createElement("label", { className: "text-[11px] text-neutral-400 tracking-[0.2em] block " }, label), /* @__PURE__ */ React6.createElement(
|
|
353
385
|
"input",
|
|
354
386
|
{
|
|
355
387
|
type: "text",
|
|
@@ -362,14 +394,14 @@ var NumberInput = ({
|
|
|
362
394
|
disabled,
|
|
363
395
|
autoComplete: "off",
|
|
364
396
|
spellCheck: "false",
|
|
365
|
-
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
397
|
+
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-100 text-black transition-all outline-none focus:border-black disabled:opacity-50"
|
|
366
398
|
}
|
|
367
399
|
));
|
|
368
400
|
|
|
369
401
|
// src/components/WaitlistDialog.tsx
|
|
370
402
|
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
371
|
-
const [email, setEmail] =
|
|
372
|
-
const [isLoading, setIsLoading] =
|
|
403
|
+
const [email, setEmail] = useState4("");
|
|
404
|
+
const [isLoading, setIsLoading] = useState4(false);
|
|
373
405
|
if (!isOpen) return null;
|
|
374
406
|
const handleSubmit = async (e) => {
|
|
375
407
|
e.preventDefault();
|
|
@@ -400,17 +432,17 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
400
432
|
setIsLoading(false);
|
|
401
433
|
}
|
|
402
434
|
};
|
|
403
|
-
return /* @__PURE__ */ React7.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/
|
|
435
|
+
return /* @__PURE__ */ React7.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/30" }, /* @__PURE__ */ React7.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ React7.createElement(
|
|
404
436
|
"div",
|
|
405
437
|
{
|
|
406
|
-
className: "w-full max-w-md bg-
|
|
438
|
+
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"
|
|
407
439
|
},
|
|
408
440
|
/* @__PURE__ */ React7.createElement(
|
|
409
441
|
"button",
|
|
410
442
|
{
|
|
411
443
|
onClick: onClose,
|
|
412
444
|
disabled: isLoading,
|
|
413
|
-
className: "absolute top-4 right-4 p-2 text-neutral-
|
|
445
|
+
className: "absolute top-4 right-4 p-2 text-neutral-700 hover:text-neutral-400 transition-colors disabled:opacity-50 outline-none",
|
|
414
446
|
"aria-label": "Close dialog"
|
|
415
447
|
},
|
|
416
448
|
/* @__PURE__ */ React7.createElement(
|
|
@@ -430,7 +462,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
430
462
|
/* @__PURE__ */ React7.createElement("path", { d: "m6 6 12 12" })
|
|
431
463
|
)
|
|
432
464
|
),
|
|
433
|
-
/* @__PURE__ */ React7.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ React7.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ React7.createElement("h2", { className: "text-2xl font-light text-
|
|
465
|
+
/* @__PURE__ */ React7.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ React7.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ React7.createElement("h2", { className: "text-2xl font-light text-black tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ React7.createElement("p", { className: "text-[13px] text-neutral-500 font-light leading-relaxed" }, "Be the first to experience the future of natural language computing. Secure your early access spot today.")), /* @__PURE__ */ React7.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ React7.createElement(
|
|
434
466
|
TextInput,
|
|
435
467
|
{
|
|
436
468
|
label: "Email ID",
|
|
@@ -457,7 +489,7 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
457
489
|
var HeroSection = ({
|
|
458
490
|
badgeText,
|
|
459
491
|
titlePrefix,
|
|
460
|
-
highlightText,
|
|
492
|
+
highlightText = "Retina",
|
|
461
493
|
cursorLabel,
|
|
462
494
|
subtitle,
|
|
463
495
|
ctaText,
|
|
@@ -473,16 +505,14 @@ var HeroSection = ({
|
|
|
473
505
|
bgImageSrc,
|
|
474
506
|
isWaitlist = false
|
|
475
507
|
}) => {
|
|
476
|
-
const [isAnimating, setIsAnimating] =
|
|
477
|
-
const [isWaitlistOpen, setIsWaitlistOpen] =
|
|
508
|
+
const [isAnimating, setIsAnimating] = useState5(false);
|
|
509
|
+
const [isWaitlistOpen, setIsWaitlistOpen] = useState5(false);
|
|
478
510
|
const titleRef = useRef2(null);
|
|
479
|
-
|
|
511
|
+
useEffect3(() => {
|
|
480
512
|
const observer = new IntersectionObserver(
|
|
481
513
|
([entry]) => {
|
|
482
514
|
if (entry.isIntersecting) {
|
|
483
|
-
|
|
484
|
-
setIsAnimating(true);
|
|
485
|
-
}
|
|
515
|
+
setIsAnimating(true);
|
|
486
516
|
} else {
|
|
487
517
|
setIsAnimating(false);
|
|
488
518
|
}
|
|
@@ -494,7 +524,13 @@ var HeroSection = ({
|
|
|
494
524
|
}
|
|
495
525
|
return () => observer.disconnect();
|
|
496
526
|
}, []);
|
|
497
|
-
|
|
527
|
+
const handleCtaClick = (e) => {
|
|
528
|
+
if (isWaitlist) {
|
|
529
|
+
e.preventDefault();
|
|
530
|
+
setIsWaitlistOpen(true);
|
|
531
|
+
}
|
|
532
|
+
};
|
|
533
|
+
return /* @__PURE__ */ React8.createElement("div", { className: "w-screen min-h-screen flex justify-center items-center p-2 sm:p-4" }, /* @__PURE__ */ React8.createElement("section", { className: "relative h-[95vh] w-full overflow-hidden rounded-2xl " }, bgVideoSrc ? /* @__PURE__ */ React8.createElement(
|
|
498
534
|
"video",
|
|
499
535
|
{
|
|
500
536
|
src: bgVideoSrc,
|
|
@@ -503,7 +539,7 @@ var HeroSection = ({
|
|
|
503
539
|
loop: true,
|
|
504
540
|
muted: true,
|
|
505
541
|
playsInline: true,
|
|
506
|
-
className: "absolute inset-0
|
|
542
|
+
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
507
543
|
}
|
|
508
544
|
) : bgImageSrc ? /* @__PURE__ */ React8.createElement(
|
|
509
545
|
Image2,
|
|
@@ -512,71 +548,48 @@ var HeroSection = ({
|
|
|
512
548
|
alt: "Hero Background",
|
|
513
549
|
fill: true,
|
|
514
550
|
priority: true,
|
|
515
|
-
className: "object-cover z-0"
|
|
551
|
+
className: "absolute inset-0 h-full w-full object-cover z-0"
|
|
516
552
|
}
|
|
517
553
|
) : null, /* @__PURE__ */ React8.createElement(
|
|
518
554
|
"div",
|
|
519
555
|
{
|
|
520
|
-
className: "absolute inset-0 z-10 opacity-
|
|
521
|
-
style: {
|
|
522
|
-
backgroundImage: `linear-gradient(110deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0) 35%, rgba(0,0,0,0.2) 60%, rgba(255,255,255,0.4) 80%, rgba(0,0,0,0.4) 100%), url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2MDAnIGhlaWdodD0nODAnPjxmaWx0ZXIgaWQ9J2JydXNoZWQnIHg9JzAlJyB5PScwJScgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJSc+PGZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9JzAuMDA1IDAuOCcgbnVtT2N0YXZlcz0nNCcgc2VlZD0nNScgcmVzdWx0PSdub2lzZScvPjxmZUNvbG9yTWF0cml4IHR5cGU9J3NhdHVyYXRlJyB2YWx1ZXM9JzAnIHJlc3VsdD0nbW9ubycvPjxmZUNvbXBvbmVudFRyYW5zZmVyIHJlc3VsdD0nYWRqdXN0ZWQnPjxmZUZ1bmNSIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuNCcgaW50ZXJjZXB0PScwLjMnLz48ZmVGdW5jRyB0eXBlPSdsaW5lYXInIHNsb3BlPScwLjQnIGludGVyY2VwdD0nMC4zJy8+PGZlRnVuY0IgdHlwZT0nbGluZWFyJyBzbG9wZT0nMC40JyBpbnRlcmNlcHQ9JzAuMycvPjxmZUZ1bmNBIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuMTUnIGludGVyY2VwdD0nMCcvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48L2ZpbHRlcj48cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPScjZDFkNWRiJy8+PHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsdGVyPSd1cmwoI2JydXNoZWQpJyBvcGFjaXR5PScwLjgnLz48L3N2Zz4=")`,
|
|
523
|
-
backgroundSize: "cover",
|
|
524
|
-
backgroundPosition: "center"
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
), /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 bg-black/20 z-10" }), /* @__PURE__ */ React8.createElement(
|
|
528
|
-
"div",
|
|
529
|
-
{
|
|
530
|
-
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-10",
|
|
531
|
-
style: {
|
|
532
|
-
backgroundImage: "radial-gradient(circle at center, rgba(255,255,255,0.2) 1px, transparent 1px)",
|
|
533
|
-
backgroundSize: "32px 32px"
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
), /* @__PURE__ */ React8.createElement(
|
|
537
|
-
"div",
|
|
538
|
-
{
|
|
539
|
-
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-[0.10] mix-blend-overlay",
|
|
556
|
+
className: "pointer-events-none absolute inset-0 z-10 opacity-[0.7] mix-blend-overlay",
|
|
540
557
|
style: {
|
|
541
558
|
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")`
|
|
542
559
|
}
|
|
543
560
|
}
|
|
544
|
-
), /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-
|
|
561
|
+
), /* @__PURE__ */ React8.createElement("div", { className: "pointer-events-none absolute inset-0 bg-linear-to-b from-black/30 via-transparent to-black/80 z-10" }), /* @__PURE__ */ React8.createElement("div", { className: "absolute bottom-0 left-0 right-0 px-4 pb-4 sm:px-6 md:px-10 z-20" }, /* @__PURE__ */ React8.createElement("div", { className: "grid grid-cols-12 items-end gap-4" }, /* @__PURE__ */ React8.createElement("div", { className: "col-span-12 lg:col-span-8" }, /* @__PURE__ */ React8.createElement(
|
|
545
562
|
"h1",
|
|
546
563
|
{
|
|
547
564
|
ref: titleRef,
|
|
548
|
-
className:
|
|
549
|
-
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
565
|
+
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]"
|
|
550
566
|
},
|
|
551
|
-
/* @__PURE__ */ React8.createElement("span", { className:
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
ThreeDButton,
|
|
567
|
+
/* @__PURE__ */ React8.createElement("div", { className: "inline-flex flex-wrap" }, /* @__PURE__ */ React8.createElement("span", { className: `inline-block relative transition-all duration-1000 ${isAnimating ? "opacity-100 translate-y-0" : "opacity-0 translate-y-10"}` }, titlePrefix, titlePrefix && /* @__PURE__ */ React8.createElement("br", null), highlightText, /* @__PURE__ */ React8.createElement("span", { className: "absolute top-[0.65em] right-[-0.3em] text-[0.31em] text-[#ffffff]/70" }, "*")))
|
|
568
|
+
)), /* @__PURE__ */ React8.createElement("div", { className: "col-span-12 flex flex-col gap-5 pb-6 lg:col-span-4 lg:pb-10" }, subtitle && /* @__PURE__ */ React8.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__ */ React8.createElement("div", { className: "flex flex-col sm:flex-row items-start sm:items-center gap-4" }, ctaText && /* @__PURE__ */ React8.createElement(
|
|
569
|
+
"button",
|
|
555
570
|
{
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
e.preventDefault();
|
|
559
|
-
setIsWaitlistOpen(true);
|
|
560
|
-
} : void 0
|
|
571
|
+
onClick: handleCtaClick,
|
|
572
|
+
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"
|
|
561
573
|
},
|
|
562
|
-
ctaText
|
|
563
|
-
|
|
574
|
+
ctaText,
|
|
575
|
+
/* @__PURE__ */ React8.createElement("span", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-black transition-transform group-hover:scale-110" }, /* @__PURE__ */ React8.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__ */ React8.createElement("path", { d: "M5 12h14" }), /* @__PURE__ */ React8.createElement("path", { d: "m12 5 7 7-7 7" })))
|
|
576
|
+
), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React8.createElement(
|
|
564
577
|
Link4,
|
|
565
578
|
{
|
|
566
579
|
href: secondaryCtaHref,
|
|
567
|
-
className: "
|
|
580
|
+
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"
|
|
568
581
|
},
|
|
569
582
|
secondaryCtaText
|
|
570
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React8.createElement("div", { className: "
|
|
583
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React8.createElement("div", { className: "flex flex-col gap-3 mt-4" }, appsText && /* @__PURE__ */ React8.createElement("span", { className: "text-[10px] tracking-widest uppercase text-[#ffffff]/50 " }, appsText), /* @__PURE__ */ React8.createElement("div", { className: "flex items-center gap-4" }, appLogos.map((logo, idx) => /* @__PURE__ */ React8.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__ */ React8.createElement(
|
|
571
584
|
Image2,
|
|
572
585
|
{
|
|
573
586
|
src: logo.src,
|
|
574
587
|
alt: logo.alt,
|
|
575
|
-
width:
|
|
576
|
-
height:
|
|
577
|
-
className: "object-contain
|
|
588
|
+
width: 28,
|
|
589
|
+
height: 28,
|
|
590
|
+
className: "object-contain"
|
|
578
591
|
}
|
|
579
|
-
)))))), /* @__PURE__ */ React8.createElement(
|
|
592
|
+
))))))))), /* @__PURE__ */ React8.createElement(
|
|
580
593
|
WaitlistDialog,
|
|
581
594
|
{
|
|
582
595
|
isOpen: isWaitlistOpen,
|
|
@@ -586,12 +599,12 @@ var HeroSection = ({
|
|
|
586
599
|
};
|
|
587
600
|
|
|
588
601
|
// src/components/AppBento2.tsx
|
|
589
|
-
import React9, { useState as
|
|
602
|
+
import React9, { useState as useState6, useEffect as useEffect4, useRef as useRef3 } from "react";
|
|
590
603
|
import { HugeiconsIcon as HugeiconsIcon3 } from "@hugeicons/react";
|
|
591
604
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
592
|
-
const [isAnimating, setIsAnimating] =
|
|
605
|
+
const [isAnimating, setIsAnimating] = useState6(false);
|
|
593
606
|
const titleRef = useRef3(null);
|
|
594
|
-
|
|
607
|
+
useEffect4(() => {
|
|
595
608
|
const observer = new IntersectionObserver(
|
|
596
609
|
([entry]) => {
|
|
597
610
|
if (entry.isIntersecting) {
|
|
@@ -609,36 +622,36 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
609
622
|
}
|
|
610
623
|
return () => observer.disconnect();
|
|
611
624
|
}, []);
|
|
612
|
-
return /* @__PURE__ */ React9.createElement("div", { className: "w-full py-16
|
|
625
|
+
return /* @__PURE__ */ React9.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ React9.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React9.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React9.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React9.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React9.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ React9.createElement(
|
|
613
626
|
"h2",
|
|
614
627
|
{
|
|
615
628
|
ref: titleRef,
|
|
616
|
-
className: `text-3xl
|
|
629
|
+
className: ` text-3xl tracking-tight text-black leading-[1.1] ${isAnimating ? "" : ""}`,
|
|
617
630
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
618
631
|
},
|
|
619
632
|
headline
|
|
620
633
|
))), /* @__PURE__ */ React9.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
621
|
-
const
|
|
622
|
-
const
|
|
623
|
-
const
|
|
634
|
+
const isWhite = i === 0;
|
|
635
|
+
const isBlack = i === 1;
|
|
636
|
+
const isNeutral = i === 2;
|
|
624
637
|
const getBgStyle = () => {
|
|
625
|
-
if (
|
|
626
|
-
if (
|
|
627
|
-
if (
|
|
628
|
-
return "bg-neutral-
|
|
638
|
+
if (isWhite) return "bg-white";
|
|
639
|
+
if (isBlack) return "bg-black";
|
|
640
|
+
if (isNeutral) return "bg-neutral-200";
|
|
641
|
+
return "bg-neutral-200";
|
|
629
642
|
};
|
|
630
643
|
const getShadowStyle = () => {
|
|
631
|
-
if (
|
|
632
|
-
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.
|
|
633
|
-
inset 0 -3px 0 0 rgba(0, 0, 0, 0.
|
|
634
|
-
0 4px 0 0 #
|
|
635
|
-
0 12px 24px rgba(0, 0, 0, 0.
|
|
644
|
+
if (isBlack) return `
|
|
645
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.2),
|
|
646
|
+
inset 0 -3px 0 0 rgba(0, 0, 0, 0.3),
|
|
647
|
+
0 4px 0 0 #0c0c0c,
|
|
648
|
+
0 12px 24px rgba(0, 0, 0, 0.1)
|
|
636
649
|
`;
|
|
637
650
|
return "none";
|
|
638
651
|
};
|
|
639
|
-
const textColor = "text-white";
|
|
640
|
-
const subTextColor = "text-neutral-
|
|
641
|
-
const labelColor = "text-neutral-500";
|
|
652
|
+
const textColor = isBlack ? "text-white" : "text-black";
|
|
653
|
+
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
654
|
+
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
642
655
|
return /* @__PURE__ */ React9.createElement(
|
|
643
656
|
"div",
|
|
644
657
|
{
|
|
@@ -653,22 +666,22 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
653
666
|
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")` }
|
|
654
667
|
}
|
|
655
668
|
),
|
|
656
|
-
|
|
657
|
-
/* @__PURE__ */ React9.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React9.createElement("div", { className: `absolute -bottom-8 -right-8 transform group-hover:scale-110 transition-transform duration-700 ease-out ${
|
|
658
|
-
/* @__PURE__ */ React9.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React9.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React9.createElement("span", { className: `text-[9px]
|
|
669
|
+
isBlack && /* @__PURE__ */ React9.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" }),
|
|
670
|
+
/* @__PURE__ */ React9.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React9.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__ */ React9.createElement(HugeiconsIcon3, { icon: f.icon, size: 180 }))),
|
|
671
|
+
/* @__PURE__ */ React9.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React9.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React9.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ React9.createElement("div", { className: `p-2 rounded-full transition-colors ${isBlack ? "bg-white/10" : "bg-white/50 backdrop-blur-sm"}` }, /* @__PURE__ */ React9.createElement(HugeiconsIcon3, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ React9.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React9.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ React9.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
659
672
|
);
|
|
660
673
|
})))));
|
|
661
674
|
};
|
|
662
675
|
|
|
663
676
|
// src/components/FeatureScroll.tsx
|
|
664
|
-
import React10, { useRef as useRef4, useState as
|
|
677
|
+
import React10, { useRef as useRef4, useState as useState7, useEffect as useEffect5 } from "react";
|
|
665
678
|
import Image3 from "next/image";
|
|
666
679
|
import { HugeiconsIcon as HugeiconsIcon4 } from "@hugeicons/react";
|
|
667
680
|
import { ArrowLeft01Icon, ArrowRight01Icon, Loading03Icon as Loading03Icon2 } from "@hugeicons/core-free-icons";
|
|
668
681
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
669
|
-
const [isBgLoading, setIsBgLoading] =
|
|
670
|
-
const [isFgLoading, setIsFgLoading] =
|
|
671
|
-
return /* @__PURE__ */ React10.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__ */ React10.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-
|
|
682
|
+
const [isBgLoading, setIsBgLoading] = useState7(true);
|
|
683
|
+
const [isFgLoading, setIsFgLoading] = useState7(!!feature.image);
|
|
684
|
+
return /* @__PURE__ */ React10.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__ */ React10.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-100 rounded-2xl overflow-hidden mb-6 flex items-center justify-center" }, /* @__PURE__ */ React10.createElement(
|
|
672
685
|
Image3,
|
|
673
686
|
{
|
|
674
687
|
src: bgImage,
|
|
@@ -689,7 +702,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
689
702
|
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")`
|
|
690
703
|
}
|
|
691
704
|
}
|
|
692
|
-
), isFgLoading && feature.image && /* @__PURE__ */ React10.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-
|
|
705
|
+
), isFgLoading && feature.image && /* @__PURE__ */ React10.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__ */ React10.createElement(HugeiconsIcon4, { icon: Loading03Icon2, size: 32, className: "animate-spin text-neutral-400" })), feature.image && /* @__PURE__ */ React10.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__ */ React10.createElement(
|
|
693
706
|
Image3,
|
|
694
707
|
{
|
|
695
708
|
src: feature.image,
|
|
@@ -698,16 +711,16 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
698
711
|
sizes: "(max-width: 768px) 90vw, 600px",
|
|
699
712
|
onLoad: () => setIsFgLoading(false),
|
|
700
713
|
className: `
|
|
701
|
-
object-cover object-top-left rounded-tl-2xl shadow-[-12px_-12px_30px_rgba(0,0,0,0.
|
|
714
|
+
object-cover object-top-left rounded-tl-2xl shadow-[-12px_-12px_30px_rgba(0,0,0,0.06)] transition-all duration-700 ease-out
|
|
702
715
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
703
716
|
`
|
|
704
717
|
}
|
|
705
|
-
))), /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ React10.createElement("h3", { className: "text-xl tracking-tight text-
|
|
718
|
+
))), /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ React10.createElement("h3", { className: " text-xl tracking-tight text-black mb-2" }, feature.title), /* @__PURE__ */ React10.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 max-w-[90%]" }, feature.desc)));
|
|
706
719
|
};
|
|
707
720
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
708
721
|
const scrollRef = useRef4(null);
|
|
709
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
710
|
-
const [canScrollRight, setCanScrollRight] =
|
|
722
|
+
const [canScrollLeft, setCanScrollLeft] = useState7(false);
|
|
723
|
+
const [canScrollRight, setCanScrollRight] = useState7(true);
|
|
711
724
|
const checkScroll = () => {
|
|
712
725
|
if (scrollRef.current) {
|
|
713
726
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -715,7 +728,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
715
728
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
716
729
|
}
|
|
717
730
|
};
|
|
718
|
-
|
|
731
|
+
useEffect5(() => {
|
|
719
732
|
checkScroll();
|
|
720
733
|
window.addEventListener("resize", checkScroll);
|
|
721
734
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -731,12 +744,12 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
731
744
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
732
745
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
733
746
|
];
|
|
734
|
-
return /* @__PURE__ */ React10.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden
|
|
747
|
+
return /* @__PURE__ */ React10.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ React10.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ React10.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ React10.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React10.createElement("h2", { className: " text-3xl tracking-tight text-black leading-[1.05]" }, headline)), /* @__PURE__ */ React10.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ React10.createElement(
|
|
735
748
|
"button",
|
|
736
749
|
{
|
|
737
750
|
onClick: () => scroll("left"),
|
|
738
751
|
disabled: !canScrollLeft,
|
|
739
|
-
className: "p-4 border border-neutral-
|
|
752
|
+
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",
|
|
740
753
|
"aria-label": "Previous feature"
|
|
741
754
|
},
|
|
742
755
|
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowLeft01Icon, size: 20 })
|
|
@@ -745,7 +758,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
745
758
|
{
|
|
746
759
|
onClick: () => scroll("right"),
|
|
747
760
|
disabled: !canScrollRight,
|
|
748
|
-
className: "p-4 border border-neutral-
|
|
761
|
+
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",
|
|
749
762
|
"aria-label": "Next feature"
|
|
750
763
|
},
|
|
751
764
|
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowRight01Icon, size: 20 })
|
|
@@ -762,7 +775,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
762
775
|
{
|
|
763
776
|
onClick: () => scroll("left"),
|
|
764
777
|
disabled: !canScrollLeft,
|
|
765
|
-
className: "p-4 border border-neutral-
|
|
778
|
+
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"
|
|
766
779
|
},
|
|
767
780
|
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowLeft01Icon, size: 20 })
|
|
768
781
|
), /* @__PURE__ */ React10.createElement(
|
|
@@ -770,7 +783,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
770
783
|
{
|
|
771
784
|
onClick: () => scroll("right"),
|
|
772
785
|
disabled: !canScrollRight,
|
|
773
|
-
className: "p-4 border border-neutral-
|
|
786
|
+
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"
|
|
774
787
|
},
|
|
775
788
|
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowRight01Icon, size: 20 })
|
|
776
789
|
))));
|
|
@@ -785,20 +798,20 @@ var PlatformFeatures = ({
|
|
|
785
798
|
description,
|
|
786
799
|
features
|
|
787
800
|
}) => {
|
|
788
|
-
return /* @__PURE__ */ React11.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10
|
|
801
|
+
return /* @__PURE__ */ React11.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ React11.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ React11.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React11.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.05] mb-6" }, headline), /* @__PURE__ */ React11.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-600 max-w-2xl" }, description)), /* @__PURE__ */ React11.createElement("div", { className: "w-full h-px bg-neutral-100 mb-16", "aria-hidden": "true" }), /* @__PURE__ */ React11.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__ */ React11.createElement(
|
|
789
802
|
"div",
|
|
790
803
|
{
|
|
791
804
|
key: idx,
|
|
792
805
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
793
806
|
style: { animationDelay: feature.delay || "0ms" }
|
|
794
807
|
},
|
|
795
|
-
/* @__PURE__ */ React11.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ React11.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-
|
|
796
|
-
/* @__PURE__ */ React11.createElement("div", null, /* @__PURE__ */ React11.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-
|
|
808
|
+
/* @__PURE__ */ React11.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ React11.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__ */ React11.createElement(HugeiconsIcon5, { icon: feature.icon, size: 24 })), /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React11.createElement("span", { className: "text-[11px] tracking-widest text-neutral-400 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ React11.createElement("h3", { className: "text-xl tracking-tight text-black" }, feature.title))),
|
|
809
|
+
/* @__PURE__ */ React11.createElement("div", null, /* @__PURE__ */ React11.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
797
810
|
)))));
|
|
798
811
|
};
|
|
799
812
|
|
|
800
813
|
// src/components/ManagedDocument.tsx
|
|
801
|
-
import React12, { useState as
|
|
814
|
+
import React12, { useState as useState8, useEffect as useEffect6, useRef as useRef5 } from "react";
|
|
802
815
|
var ManagedDocument = ({
|
|
803
816
|
tagline,
|
|
804
817
|
title,
|
|
@@ -806,9 +819,9 @@ var ManagedDocument = ({
|
|
|
806
819
|
contactText,
|
|
807
820
|
contactEmail
|
|
808
821
|
}) => {
|
|
809
|
-
const [isAnimating, setIsAnimating] =
|
|
822
|
+
const [isAnimating, setIsAnimating] = useState8(false);
|
|
810
823
|
const titleRef = useRef5(null);
|
|
811
|
-
|
|
824
|
+
useEffect6(() => {
|
|
812
825
|
const observer = new IntersectionObserver(
|
|
813
826
|
([entry]) => {
|
|
814
827
|
if (entry.isIntersecting) {
|
|
@@ -828,19 +841,19 @@ var ManagedDocument = ({
|
|
|
828
841
|
}, []);
|
|
829
842
|
return (
|
|
830
843
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
831
|
-
/* @__PURE__ */ React12.createElement("div", { className: "grow pt-28 px-3 md:px-8 w-full flex justify-center z-10 relative
|
|
844
|
+
/* @__PURE__ */ React12.createElement("div", { className: "grow pt-28 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React12.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React12.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React12.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React12.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React12.createElement(
|
|
832
845
|
"h1",
|
|
833
846
|
{
|
|
834
847
|
ref: titleRef,
|
|
835
|
-
className: `text-3xl mt-4 text-
|
|
848
|
+
className: ` text-3xl mt-4 text-black tracking-tight text-left ${isAnimating ? "" : ""}`,
|
|
836
849
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
837
850
|
},
|
|
838
851
|
title
|
|
839
|
-
)), sections.map((section, index) => /* @__PURE__ */ React12.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ React12.createElement("p", { className: "text-[11px] tracking-[0.2em] text-
|
|
852
|
+
)), sections.map((section, index) => /* @__PURE__ */ React12.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ React12.createElement("p", { className: " text-[11px] tracking-[0.2em] text-black mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ React12.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-700 space-y-4 text-left font-light" }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ React12.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ React12.createElement("div", { className: `border-neutral-100 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ React12.createElement("p", { className: "text-neutral-900 text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ React12.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React12.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ React12.createElement(
|
|
840
853
|
"a",
|
|
841
854
|
{
|
|
842
855
|
href: `mailto:${contactEmail}`,
|
|
843
|
-
className: "text-
|
|
856
|
+
className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors"
|
|
844
857
|
},
|
|
845
858
|
contactEmail
|
|
846
859
|
))))))
|
|
@@ -848,11 +861,11 @@ var ManagedDocument = ({
|
|
|
848
861
|
};
|
|
849
862
|
|
|
850
863
|
// src/components/ManagedContactBlock.tsx
|
|
851
|
-
import React13, { useState as
|
|
864
|
+
import React13, { useState as useState9, useEffect as useEffect7 } from "react";
|
|
852
865
|
import { HugeiconsIcon as HugeiconsIcon6 } from "@hugeicons/react";
|
|
853
866
|
var SecureEmail = ({ user, domain, className }) => {
|
|
854
|
-
const [isMounted, setIsMounted] =
|
|
855
|
-
|
|
867
|
+
const [isMounted, setIsMounted] = useState9(false);
|
|
868
|
+
useEffect7(() => {
|
|
856
869
|
setIsMounted(true);
|
|
857
870
|
}, []);
|
|
858
871
|
if (!isMounted) {
|
|
@@ -868,7 +881,7 @@ var ManagedContactBlock = ({
|
|
|
868
881
|
emails,
|
|
869
882
|
socials
|
|
870
883
|
}) => {
|
|
871
|
-
return /* @__PURE__ */ React13.createElement("div", { className: "grow pt-28 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative
|
|
884
|
+
return /* @__PURE__ */ React13.createElement("div", { className: "grow pt-28 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React13.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React13.createElement(
|
|
872
885
|
"div",
|
|
873
886
|
{
|
|
874
887
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -877,28 +890,28 @@ var ManagedContactBlock = ({
|
|
|
877
890
|
backgroundRepeat: "repeat"
|
|
878
891
|
}
|
|
879
892
|
}
|
|
880
|
-
), /* @__PURE__ */ React13.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React13.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ React13.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React13.createElement("h1", { className: "text-3xl mt-4 text-
|
|
893
|
+
), /* @__PURE__ */ React13.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React13.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ React13.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React13.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ React13.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ React13.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ React13.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Contact Details"), /* @__PURE__ */ React13.createElement("div", { className: "space-y-3 text-[13px] text-neutral-600 leading-[1.8]" }, company.name && /* @__PURE__ */ React13.createElement("p", { className: "text-black" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ React13.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ React13.createElement("p", { className: "pt-2" }, /* @__PURE__ */ React13.createElement(
|
|
881
894
|
"a",
|
|
882
895
|
{
|
|
883
896
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
884
|
-
className: "transition-colors hover:text-
|
|
897
|
+
className: "transition-colors hover:text-black"
|
|
885
898
|
},
|
|
886
899
|
company.phone
|
|
887
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-
|
|
900
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Email Directory"), /* @__PURE__ */ React13.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ React13.createElement("div", { key: idx }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ React13.createElement(
|
|
888
901
|
SecureEmail,
|
|
889
902
|
{
|
|
890
903
|
user: email.user,
|
|
891
904
|
domain: email.domain,
|
|
892
|
-
className: "text-neutral-
|
|
905
|
+
className: "text-neutral-600 transition-colors hover:text-black"
|
|
893
906
|
}
|
|
894
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-
|
|
907
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-black mb-4 " }, "Find Us Online"), /* @__PURE__ */ React13.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ React13.createElement(
|
|
895
908
|
"a",
|
|
896
909
|
{
|
|
897
910
|
key: idx,
|
|
898
911
|
href: social.href,
|
|
899
912
|
target: "_blank",
|
|
900
913
|
rel: "noopener noreferrer",
|
|
901
|
-
className: "flex items-center gap-3 transition-colors group text-neutral-
|
|
914
|
+
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black",
|
|
902
915
|
"aria-label": social.label
|
|
903
916
|
},
|
|
904
917
|
/* @__PURE__ */ React13.createElement(HugeiconsIcon6, { icon: social.icon, size: 18 }),
|
|
@@ -907,21 +920,21 @@ var ManagedContactBlock = ({
|
|
|
907
920
|
};
|
|
908
921
|
|
|
909
922
|
// src/components/ManagedPricingBlock.tsx
|
|
910
|
-
import React14, { useState as
|
|
923
|
+
import React14, { useState as useState10, useEffect as useEffect8, useRef as useRef6 } from "react";
|
|
911
924
|
import Link5 from "next/link";
|
|
912
925
|
import Image4 from "next/image";
|
|
913
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ React14.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__ */ React14.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "
|
|
914
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ React14.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__ */ React14.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#
|
|
926
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ React14.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__ */ React14.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "black" }), /* @__PURE__ */ React14.createElement("path", { d: "M8 12L11 15L16 9", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
927
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ React14.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__ */ React14.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#F5F5F5" }), /* @__PURE__ */ React14.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#D4D4D4", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
915
928
|
var ManagedPricingBlock = ({
|
|
916
929
|
tagline,
|
|
917
930
|
title,
|
|
918
931
|
plans = [],
|
|
919
932
|
tabs
|
|
920
933
|
}) => {
|
|
921
|
-
const [isAnimating, setIsAnimating] =
|
|
922
|
-
const [activeTabIndex, setActiveTabIndex] =
|
|
934
|
+
const [isAnimating, setIsAnimating] = useState10(false);
|
|
935
|
+
const [activeTabIndex, setActiveTabIndex] = useState10(0);
|
|
923
936
|
const titleRef = useRef6(null);
|
|
924
|
-
|
|
937
|
+
useEffect8(() => {
|
|
925
938
|
const observer = new IntersectionObserver(
|
|
926
939
|
([entry]) => {
|
|
927
940
|
if (entry.isIntersecting) {
|
|
@@ -941,22 +954,22 @@ var ManagedPricingBlock = ({
|
|
|
941
954
|
}, []);
|
|
942
955
|
const hasTabs = tabs && tabs.length > 0;
|
|
943
956
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
944
|
-
return /* @__PURE__ */ React14.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative
|
|
957
|
+
return /* @__PURE__ */ React14.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React14.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ React14.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ React14.createElement("span", { className: "text-[9px] tracking-[0.4em] text-black block " }, tagline), /* @__PURE__ */ React14.createElement(
|
|
945
958
|
"h1",
|
|
946
959
|
{
|
|
947
960
|
ref: titleRef,
|
|
948
|
-
className: `text-2xl sm:text-3xl mt-3 text-
|
|
961
|
+
className: `text-2xl sm:text-3xl mt-3 text-black tracking-tight ${isAnimating ? "" : ""}`,
|
|
949
962
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
950
963
|
},
|
|
951
964
|
title
|
|
952
|
-
)), hasTabs && /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center bg-
|
|
965
|
+
)), hasTabs && /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ React14.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) => {
|
|
953
966
|
const isActive = activeTabIndex === idx;
|
|
954
967
|
return /* @__PURE__ */ React14.createElement(
|
|
955
968
|
"button",
|
|
956
969
|
{
|
|
957
970
|
key: idx,
|
|
958
971
|
onClick: () => setActiveTabIndex(idx),
|
|
959
|
-
className: `px-4 sm:px-6 py-1.5 sm:py-2 rounded-full text-[11px] sm:text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-
|
|
972
|
+
className: `px-4 sm:px-6 py-1.5 sm:py-2 rounded-full text-[11px] sm:text-xs transition-all duration-200 outline-none whitespace-nowrap shrink-0 ${isActive ? "bg-neutral-50 text-black " : "text-neutral-500 hover:text-black hover:bg-neutral-50/50 "}`
|
|
960
973
|
},
|
|
961
974
|
tab.label
|
|
962
975
|
);
|
|
@@ -964,9 +977,9 @@ var ManagedPricingBlock = ({
|
|
|
964
977
|
"div",
|
|
965
978
|
{
|
|
966
979
|
key: `${activeTabIndex}-${planIdx}`,
|
|
967
|
-
className: `bg-
|
|
980
|
+
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
968
981
|
},
|
|
969
|
-
/* @__PURE__ */ React14.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React14.createElement("span", { className: "text-
|
|
982
|
+
/* @__PURE__ */ React14.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React14.createElement("span", { className: "text-black text-base block mb-1" }, plan.name), /* @__PURE__ */ React14.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ React14.createElement("h3", { className: "text-3xl font-light text-black" }, plan.price), plan.period && /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ React14.createElement("p", { className: "text-xs text-neutral-500 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2 mt-4" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ React14.createElement(
|
|
970
983
|
"div",
|
|
971
984
|
{
|
|
972
985
|
key: logoIdx,
|
|
@@ -979,7 +992,7 @@ var ManagedPricingBlock = ({
|
|
|
979
992
|
alt: logo.alt,
|
|
980
993
|
width: 16,
|
|
981
994
|
height: 16,
|
|
982
|
-
className: "object-contain
|
|
995
|
+
className: "object-contain"
|
|
983
996
|
}
|
|
984
997
|
)
|
|
985
998
|
)))),
|
|
@@ -987,14 +1000,14 @@ var ManagedPricingBlock = ({
|
|
|
987
1000
|
Link5,
|
|
988
1001
|
{
|
|
989
1002
|
href: plan.ctaHref,
|
|
990
|
-
className: "w-full py-2.5 px-5 rounded-full
|
|
1003
|
+
className: "w-full py-2.5 px-5 rounded-full border border-neutral-100 text-center text-black text-xs hover:bg-neutral-50 transition-colors mb-6 outline-none block"
|
|
991
1004
|
},
|
|
992
1005
|
plan.ctaText
|
|
993
1006
|
),
|
|
994
1007
|
/* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
995
1008
|
const isAvailable = feature.value !== false;
|
|
996
1009
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
997
|
-
return /* @__PURE__ */ React14.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ React14.createElement(CheckIcon, null) : /* @__PURE__ */ React14.createElement(CrossIcon, null), /* @__PURE__ */ React14.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-
|
|
1010
|
+
return /* @__PURE__ */ React14.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ React14.createElement(CheckIcon, null) : /* @__PURE__ */ React14.createElement(CrossIcon, null), /* @__PURE__ */ React14.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-800" : "text-neutral-400"}` }, feature.name, valueText && /* @__PURE__ */ React14.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
998
1011
|
}))
|
|
999
1012
|
)))));
|
|
1000
1013
|
};
|
|
@@ -1010,7 +1023,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React15.
|
|
|
1010
1023
|
href,
|
|
1011
1024
|
target: "_blank",
|
|
1012
1025
|
rel: "noopener noreferrer",
|
|
1013
|
-
className: "text-neutral-
|
|
1026
|
+
className: "text-neutral-400 hover:text-black transition-colors",
|
|
1014
1027
|
"aria-label": `${name} on ${label}`
|
|
1015
1028
|
},
|
|
1016
1029
|
/* @__PURE__ */ React15.createElement(HugeiconsIcon7, { icon, size: 16 })
|
|
@@ -1022,7 +1035,7 @@ var ManagedBoardBlock = ({
|
|
|
1022
1035
|
contactText,
|
|
1023
1036
|
contactEmail
|
|
1024
1037
|
}) => {
|
|
1025
|
-
return /* @__PURE__ */ React15.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative
|
|
1038
|
+
return /* @__PURE__ */ React15.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React15.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ React15.createElement(
|
|
1026
1039
|
"div",
|
|
1027
1040
|
{
|
|
1028
1041
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1031,7 +1044,7 @@ var ManagedBoardBlock = ({
|
|
|
1031
1044
|
backgroundRepeat: "repeat"
|
|
1032
1045
|
}
|
|
1033
1046
|
}
|
|
1034
|
-
), /* @__PURE__ */ React15.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React15.createElement("h1", { className: "text-3xl mt-4 text-
|
|
1047
|
+
), /* @__PURE__ */ React15.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React15.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ React15.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__ */ React15.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-white flex flex-col transition-all group" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ React15.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-white overflow-hidden rounded-xl" }, /* @__PURE__ */ React15.createElement(
|
|
1035
1048
|
Image5,
|
|
1036
1049
|
{
|
|
1037
1050
|
src: member.imageSrc,
|
|
@@ -1040,7 +1053,7 @@ var ManagedBoardBlock = ({
|
|
|
1040
1053
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
1041
1054
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
1042
1055
|
}
|
|
1043
|
-
)), /* @__PURE__ */ React15.createElement("div", { className: "pt-1" }, /* @__PURE__ */ React15.createElement("h3", { className: "text-[14px] md:text-[15px] text-
|
|
1056
|
+
)), /* @__PURE__ */ React15.createElement("div", { className: "pt-1" }, /* @__PURE__ */ React15.createElement("h3", { className: " text-[14px] md:text-[15px] text-black tracking-tight" }, member.name), /* @__PURE__ */ React15.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ React15.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 text-left grow mb-8" }, member.bio), /* @__PURE__ */ React15.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ React15.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React15.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ React15.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ React15.createElement(
|
|
1044
1057
|
MemberSocialLink,
|
|
1045
1058
|
{
|
|
1046
1059
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -1056,34 +1069,24 @@ var ManagedBoardBlock = ({
|
|
|
1056
1069
|
label: "LinkedIn",
|
|
1057
1070
|
name: member.name
|
|
1058
1071
|
}
|
|
1059
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[11px] text-neutral-
|
|
1072
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[11px] text-neutral-600 text-left" }, contactText, contactEmail && /* @__PURE__ */ React15.createElement("a", { href: `mailto:${contactEmail}`, className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
1060
1073
|
};
|
|
1061
1074
|
|
|
1062
1075
|
// src/components/ManagedNotFoundBlock.tsx
|
|
1063
1076
|
import React16 from "react";
|
|
1064
|
-
import Link6 from "next/link";
|
|
1065
1077
|
var ManagedNotFoundBlock = ({
|
|
1066
1078
|
title = "404 - Page Not Found",
|
|
1067
|
-
description = "The page you are looking for does not exist or has been moved."
|
|
1068
|
-
backLinkText = "Go back to Homepage",
|
|
1069
|
-
backLinkHref = "/"
|
|
1079
|
+
description = "The page you are looking for does not exist or has been moved."
|
|
1070
1080
|
}) => {
|
|
1071
|
-
return /* @__PURE__ */ React16.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-
|
|
1081
|
+
return /* @__PURE__ */ React16.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-transparent" }, /* @__PURE__ */ React16.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ React16.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ React16.createElement(
|
|
1072
1082
|
"svg",
|
|
1073
1083
|
{
|
|
1074
1084
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1075
1085
|
viewBox: "0 0 24 24",
|
|
1076
|
-
className: "w-12 h-12 fill-neutral-
|
|
1086
|
+
className: "w-12 h-12 fill-neutral-100"
|
|
1077
1087
|
},
|
|
1078
1088
|
/* @__PURE__ */ React16.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" })
|
|
1079
|
-
)), /* @__PURE__ */ React16.createElement("h1", { className: "text-xl
|
|
1080
|
-
Link6,
|
|
1081
|
-
{
|
|
1082
|
-
href: backLinkHref,
|
|
1083
|
-
className: "inline-flex items-center justify-center px-8 py-2.5 border border-neutral-800 text-white hover:bg-neutral-800 transition-colors rounded-full text-[11px] tracking-widest outline-none"
|
|
1084
|
-
},
|
|
1085
|
-
backLinkText
|
|
1086
|
-
)));
|
|
1089
|
+
)), /* @__PURE__ */ React16.createElement("h1", { className: " text-xl md:text-3xl text-black tracking-tight mb-4" }, title), /* @__PURE__ */ React16.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-12" }, description)));
|
|
1087
1090
|
};
|
|
1088
1091
|
|
|
1089
1092
|
// src/components/PageSpinner.tsx
|
|
@@ -1155,10 +1158,10 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1155
1158
|
imageAlt = "Profile Image",
|
|
1156
1159
|
dividerText = "CONTACT",
|
|
1157
1160
|
ctaText = "Connect With Me",
|
|
1158
|
-
ctaHref = "/contact
|
|
1161
|
+
ctaHref = "/contact",
|
|
1159
1162
|
children
|
|
1160
1163
|
}) => {
|
|
1161
|
-
return /* @__PURE__ */ React19.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0
|
|
1164
|
+
return /* @__PURE__ */ React19.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0" }, /* @__PURE__ */ React19.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden" }, /* @__PURE__ */ React19.createElement(
|
|
1162
1165
|
Image6,
|
|
1163
1166
|
{
|
|
1164
1167
|
src: imageSrc,
|
|
@@ -1173,7 +1176,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1173
1176
|
{
|
|
1174
1177
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
1175
1178
|
style: {
|
|
1176
|
-
background: "linear-gradient(to right, rgba(
|
|
1179
|
+
background: "linear-gradient(to right, rgba(255,255,255,0) 30%, #ffffff 100%)"
|
|
1177
1180
|
}
|
|
1178
1181
|
}
|
|
1179
1182
|
), /* @__PURE__ */ React19.createElement(
|
|
@@ -1181,7 +1184,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1181
1184
|
{
|
|
1182
1185
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
1183
1186
|
style: {
|
|
1184
|
-
background: "linear-gradient(to bottom, rgba(
|
|
1187
|
+
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
1185
1188
|
}
|
|
1186
1189
|
}
|
|
1187
1190
|
)), /* @__PURE__ */ React19.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__ */ React19.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__ */ React19.createElement(
|
|
@@ -1193,25 +1196,25 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1193
1196
|
backgroundRepeat: "repeat"
|
|
1194
1197
|
}
|
|
1195
1198
|
}
|
|
1196
|
-
), /* @__PURE__ */ React19.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React19.createElement("div", { className: "mb-10 border-b border-neutral-
|
|
1199
|
+
), /* @__PURE__ */ React19.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React19.createElement("div", { className: "mb-10 border-b border-neutral-100 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ React19.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 " }, tagline), /* @__PURE__ */ React19.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ React19.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, subtitle)), /* @__PURE__ */ React19.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ React19.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ React19.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React19.createElement("div", { className: "grow h-px bg-neutral-100" }), /* @__PURE__ */ React19.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-400 " }, dividerText), /* @__PURE__ */ React19.createElement("div", { className: "grow h-px bg-neutral-100" })), ctaText && ctaHref && /* @__PURE__ */ React19.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React19.createElement(
|
|
1197
1200
|
ThreeDButton,
|
|
1198
1201
|
{
|
|
1199
1202
|
href: ctaHref,
|
|
1200
|
-
className: "py-
|
|
1203
|
+
className: "py-3 tracking-widest text-[11px]"
|
|
1201
1204
|
},
|
|
1202
1205
|
ctaText
|
|
1203
1206
|
)))))));
|
|
1204
1207
|
};
|
|
1205
1208
|
|
|
1206
1209
|
// src/components/PortfolioHero.tsx
|
|
1207
|
-
import React20, { useEffect as
|
|
1208
|
-
import
|
|
1210
|
+
import React20, { useEffect as useEffect9, useRef as useRef7 } from "react";
|
|
1211
|
+
import Link6 from "next/link";
|
|
1209
1212
|
import Image7 from "next/image";
|
|
1210
1213
|
import { HugeiconsIcon as HugeiconsIcon9 } from "@hugeicons/react";
|
|
1211
1214
|
import { ArrowRight01Icon as ArrowRight01Icon2 } from "@hugeicons/core-free-icons";
|
|
1212
1215
|
var useScrollAnimation = () => {
|
|
1213
1216
|
const elementRef = useRef7(null);
|
|
1214
|
-
|
|
1217
|
+
useEffect9(() => {
|
|
1215
1218
|
const el = elementRef.current;
|
|
1216
1219
|
if (!el) return;
|
|
1217
1220
|
const observer = new IntersectionObserver(
|
|
@@ -1247,13 +1250,13 @@ var PortfolioHero = ({
|
|
|
1247
1250
|
secondaryCtaHref
|
|
1248
1251
|
}) => {
|
|
1249
1252
|
const heroContentRef = useScrollAnimation();
|
|
1250
|
-
return /* @__PURE__ */ React20.createElement("section", { className: "pt-44 md:pt-52 pb-16 px-6 md:px-12 flex flex-col relative overflow-hidden z-10 w-full
|
|
1253
|
+
return /* @__PURE__ */ React20.createElement("section", { className: "pt-44 md:pt-52 pb-16 px-6 md:px-12 flex flex-col relative overflow-hidden z-10 w-full" }, /* @__PURE__ */ React20.createElement(
|
|
1251
1254
|
"div",
|
|
1252
1255
|
{
|
|
1253
1256
|
ref: heroContentRef,
|
|
1254
1257
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
1255
1258
|
},
|
|
1256
|
-
/* @__PURE__ */ React20.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ React20.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden
|
|
1259
|
+
/* @__PURE__ */ React20.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ React20.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__ */ React20.createElement(
|
|
1257
1260
|
Image7,
|
|
1258
1261
|
{
|
|
1259
1262
|
src: imageSrc,
|
|
@@ -1264,29 +1267,29 @@ var PortfolioHero = ({
|
|
|
1264
1267
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
1265
1268
|
quality: 100
|
|
1266
1269
|
}
|
|
1267
|
-
)), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ React20.createElement("h1", { className: "text-3xl
|
|
1270
|
+
)), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ React20.createElement("h1", { className: " text-3xl sm:text-5xl lg:text-6xl tracking-tight text-black leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ React20.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 " }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ React20.createElement(
|
|
1268
1271
|
"a",
|
|
1269
1272
|
{
|
|
1270
1273
|
href: socialLinkHref,
|
|
1271
1274
|
target: "_blank",
|
|
1272
1275
|
rel: "noopener noreferrer",
|
|
1273
|
-
className: "text-[11px] md:text-[14px] text-
|
|
1276
|
+
className: "text-[11px] md:text-[14px] text-black hover:text-neutral-500 transition-colors mt-1 underline underline-offset-4 decoration-neutral-300"
|
|
1274
1277
|
},
|
|
1275
1278
|
socialLinkText
|
|
1276
1279
|
))),
|
|
1277
|
-
/* @__PURE__ */ React20.createElement("p", { className: "text-[13px]
|
|
1280
|
+
/* @__PURE__ */ React20.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-600" }, bio),
|
|
1278
1281
|
/* @__PURE__ */ React20.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ React20.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ React20.createElement(
|
|
1279
1282
|
ThreeDButton,
|
|
1280
1283
|
{
|
|
1281
1284
|
href: primaryCtaHref,
|
|
1282
|
-
className: "py-
|
|
1285
|
+
className: "py-3 tracking-widest text-[11px]"
|
|
1283
1286
|
},
|
|
1284
1287
|
primaryCtaText
|
|
1285
1288
|
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React20.createElement(
|
|
1286
|
-
|
|
1289
|
+
Link6,
|
|
1287
1290
|
{
|
|
1288
1291
|
href: secondaryCtaHref,
|
|
1289
|
-
className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-[11px] tracking-[0.2em]
|
|
1292
|
+
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"
|
|
1290
1293
|
},
|
|
1291
1294
|
secondaryCtaText,
|
|
1292
1295
|
/* @__PURE__ */ React20.createElement(HugeiconsIcon9, { icon: ArrowRight01Icon2, size: 16 })
|
|
@@ -1295,7 +1298,7 @@ var PortfolioHero = ({
|
|
|
1295
1298
|
};
|
|
1296
1299
|
|
|
1297
1300
|
// src/components/GifFeatureCard.tsx
|
|
1298
|
-
import React21, { useState as
|
|
1301
|
+
import React21, { useState as useState11 } from "react";
|
|
1299
1302
|
import Image8 from "next/image";
|
|
1300
1303
|
import { HugeiconsIcon as HugeiconsIcon10 } from "@hugeicons/react";
|
|
1301
1304
|
import { Loading03Icon as Loading03Icon4 } from "@hugeicons/core-free-icons";
|
|
@@ -1306,8 +1309,8 @@ var GifFeatureCard = ({
|
|
|
1306
1309
|
alt = "Feature animation",
|
|
1307
1310
|
className = "aspect-video"
|
|
1308
1311
|
}) => {
|
|
1309
|
-
const [isLoading, setIsLoading] =
|
|
1310
|
-
return /* @__PURE__ */ React21.createElement("div", { className: `relative w-full bg-black
|
|
1312
|
+
const [isLoading, setIsLoading] = useState11(true);
|
|
1313
|
+
return /* @__PURE__ */ React21.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ React21.createElement(
|
|
1311
1314
|
HugeiconsIcon10,
|
|
1312
1315
|
{
|
|
1313
1316
|
icon: Loading03Icon4,
|
|
@@ -1335,11 +1338,11 @@ var GifFeatureCard = ({
|
|
|
1335
1338
|
{
|
|
1336
1339
|
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"
|
|
1337
1340
|
}
|
|
1338
|
-
), /* @__PURE__ */ React21.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__ */ React21.createElement("h3", { className: "text-xl sm:text-2xl md:text-3xl
|
|
1341
|
+
), /* @__PURE__ */ React21.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__ */ React21.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__ */ React21.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
1339
1342
|
};
|
|
1340
1343
|
|
|
1341
1344
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
1342
|
-
import React22, { useState as
|
|
1345
|
+
import React22, { useState as useState12, useEffect as useEffect10, useRef as useRef8 } from "react";
|
|
1343
1346
|
import Image9 from "next/image";
|
|
1344
1347
|
var MedicalFeatureStatsBlock = ({
|
|
1345
1348
|
bottomHeadline,
|
|
@@ -1348,9 +1351,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1348
1351
|
trustText,
|
|
1349
1352
|
stats
|
|
1350
1353
|
}) => {
|
|
1351
|
-
const [isAnimating, setIsAnimating] =
|
|
1354
|
+
const [isAnimating, setIsAnimating] = useState12(false);
|
|
1352
1355
|
const titleRef = useRef8(null);
|
|
1353
|
-
|
|
1356
|
+
useEffect10(() => {
|
|
1354
1357
|
const observer = new IntersectionObserver(
|
|
1355
1358
|
([entry]) => {
|
|
1356
1359
|
if (entry.isIntersecting) {
|
|
@@ -1368,15 +1371,15 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1368
1371
|
}
|
|
1369
1372
|
return () => observer.disconnect();
|
|
1370
1373
|
}, []);
|
|
1371
|
-
return /* @__PURE__ */ React22.createElement("section", { className: "py-24 w-full flex justify-center relative z-10
|
|
1374
|
+
return /* @__PURE__ */ React22.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ React22.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ React22.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ React22.createElement(
|
|
1372
1375
|
"h2",
|
|
1373
1376
|
{
|
|
1374
1377
|
ref: titleRef,
|
|
1375
|
-
className: `text-3xl text-
|
|
1378
|
+
className: `text-3xl text-black tracking-tight leading-[1.1] mb-5 ${isAnimating ? "" : ""}`,
|
|
1376
1379
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
1377
1380
|
},
|
|
1378
1381
|
bottomHeadline
|
|
1379
|
-
), /* @__PURE__ */ React22.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-
|
|
1382
|
+
), /* @__PURE__ */ React22.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-500" }, bottomDescription)), /* @__PURE__ */ React22.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ React22.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ React22.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__ */ React22.createElement(
|
|
1380
1383
|
Image9,
|
|
1381
1384
|
{
|
|
1382
1385
|
src,
|
|
@@ -1385,17 +1388,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1385
1388
|
sizes: "48px",
|
|
1386
1389
|
className: "object-cover"
|
|
1387
1390
|
}
|
|
1388
|
-
)))), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] text-neutral-
|
|
1391
|
+
)))), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] text-neutral-800 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ React22.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ React22.createElement("div", { key: idx, className: "bg-white rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ React22.createElement("span", { className: "text-[14px] text-neutral-500 tracking-wide" }, stat.label)), /* @__PURE__ */ React22.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-black mt-auto leading-none" }, stat.value))))));
|
|
1389
1392
|
};
|
|
1390
1393
|
|
|
1391
1394
|
// src/components/ConsultantShowcase.tsx
|
|
1392
|
-
import React23, { useState as
|
|
1395
|
+
import React23, { useState as useState13 } from "react";
|
|
1393
1396
|
import Image10 from "next/image";
|
|
1394
1397
|
import { HugeiconsIcon as HugeiconsIcon11 } from "@hugeicons/react";
|
|
1395
1398
|
import { Loading03Icon as Loading03Icon5 } from "@hugeicons/core-free-icons";
|
|
1396
1399
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
1397
|
-
const [isLoading, setIsLoading] =
|
|
1398
|
-
return /* @__PURE__ */ React23.createElement("div", { className: `absolute inset-0 bg-neutral-
|
|
1400
|
+
const [isLoading, setIsLoading] = useState13(true);
|
|
1401
|
+
return /* @__PURE__ */ React23.createElement("div", { className: `absolute inset-0 bg-neutral-800 ${className}` }, isLoading && /* @__PURE__ */ React23.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__ */ React23.createElement(HugeiconsIcon11, { icon: Loading03Icon5, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React23.createElement(
|
|
1399
1402
|
Image10,
|
|
1400
1403
|
{
|
|
1401
1404
|
src,
|
|
@@ -1414,9 +1417,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
1414
1417
|
var ConsultantShowcase = ({
|
|
1415
1418
|
profiles
|
|
1416
1419
|
}) => {
|
|
1417
|
-
const [currentIndex, setCurrentIndex] =
|
|
1418
|
-
const [touchStart, setTouchStart] =
|
|
1419
|
-
const [touchEnd, setTouchEnd] =
|
|
1420
|
+
const [currentIndex, setCurrentIndex] = useState13(0);
|
|
1421
|
+
const [touchStart, setTouchStart] = useState13(null);
|
|
1422
|
+
const [touchEnd, setTouchEnd] = useState13(null);
|
|
1420
1423
|
const nextSlide = () => {
|
|
1421
1424
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
1422
1425
|
};
|
|
@@ -1441,10 +1444,10 @@ var ConsultantShowcase = ({
|
|
|
1441
1444
|
}
|
|
1442
1445
|
};
|
|
1443
1446
|
if (!profiles || profiles.length === 0) return null;
|
|
1444
|
-
return /* @__PURE__ */ React23.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative
|
|
1447
|
+
return /* @__PURE__ */ React23.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ React23.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React23.createElement(
|
|
1445
1448
|
"div",
|
|
1446
1449
|
{
|
|
1447
|
-
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900
|
|
1450
|
+
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
1448
1451
|
onTouchStart,
|
|
1449
1452
|
onTouchMove,
|
|
1450
1453
|
onTouchEnd
|
|
@@ -1465,9 +1468,9 @@ var ConsultantShowcase = ({
|
|
|
1465
1468
|
priority: idx === 0
|
|
1466
1469
|
}
|
|
1467
1470
|
),
|
|
1468
|
-
/* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 bg-black/
|
|
1469
|
-
/* @__PURE__ */ React23.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/
|
|
1470
|
-
/* @__PURE__ */ React23.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__ */ React23.createElement("h2", { className: "text-[29px]
|
|
1471
|
+
/* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
1472
|
+
/* @__PURE__ */ React23.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" }),
|
|
1473
|
+
/* @__PURE__ */ React23.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__ */ React23.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React23.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ React23.createElement("p", { className: "text-[15px] text-white/80 font-light tracking-wide mt-1" }, profile.description)))
|
|
1471
1474
|
);
|
|
1472
1475
|
}),
|
|
1473
1476
|
/* @__PURE__ */ React23.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" }),
|
|
@@ -1485,7 +1488,7 @@ var ConsultantShowcase = ({
|
|
|
1485
1488
|
};
|
|
1486
1489
|
|
|
1487
1490
|
// src/components/ContentGridBlock.tsx
|
|
1488
|
-
import React24, { useState as
|
|
1491
|
+
import React24, { useState as useState14 } from "react";
|
|
1489
1492
|
import Image11 from "next/image";
|
|
1490
1493
|
import { HugeiconsIcon as HugeiconsIcon12 } from "@hugeicons/react";
|
|
1491
1494
|
import { Loading03Icon as Loading03Icon6 } from "@hugeicons/core-free-icons";
|
|
@@ -1496,12 +1499,12 @@ var ContentGridBlock = ({
|
|
|
1496
1499
|
middleBottomCard,
|
|
1497
1500
|
rightCards
|
|
1498
1501
|
}) => {
|
|
1499
|
-
return /* @__PURE__ */ React24.createElement("section", { className: "w-full flex justify-center z-10 relative
|
|
1502
|
+
return /* @__PURE__ */ React24.createElement("section", { className: " w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React24.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ React24.createElement("h2", { className: "text-3xl tracking-tight text-black leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ React24.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ React24.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ React24.createElement("div", { className: "bg-black rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React24.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ React24.createElement("span", { className: "mb-auto text-[11px] text-neutral-200 tracking-widest" }, leftCard.tag), /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ React24.createElement("div", null, /* @__PURE__ */ React24.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ React24.createElement("p", { className: "text-[13px] text-neutral-300" }, leftCard.subtitle)), /* @__PURE__ */ React24.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React24.createElement(Image11, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React24.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ React24.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ React24.createElement("span", { className: "text-[11px] text-neutral-400 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ React24.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React24.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ React24.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-white overflow-hidden relative z-10" }, /* @__PURE__ */ React24.createElement(Image11, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ React24.createElement("span", { className: "text-sm text-neutral-500" }, middleTopCard.topRightCount))), /* @__PURE__ */ React24.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ React24.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__ */ React24.createElement("span", { className: " text-black" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ React24.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React24.createElement("p", { className: "text-[11px] text-neutral-400 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ React24.createElement("p", { className: "text-[14px] text-black leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ React24.createElement("div", { className: "bg-white rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React24.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ React24.createElement("div", null, /* @__PURE__ */ React24.createElement("h4", { className: "text-[15px] text-black leading-tight" }, middleBottomCard.title), /* @__PURE__ */ React24.createElement("p", { className: "text-[13px] text-neutral-400" }, middleBottomCard.subtitle)), /* @__PURE__ */ React24.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React24.createElement(Image11, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ React24.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React24.createElement("p", { className: "text-[16px] text-black leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ React24.createElement("span", { className: "text-[11px] text-neutral-400 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ React24.createElement("div", { key: idx, className: "relative w-full h-80 bg-white text-black rounded-3xl overflow-hidden group" }, /* @__PURE__ */ React24.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ React24.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-black" }, /* @__PURE__ */ React24.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-black/90" }, card.mainText), card.tag && /* @__PURE__ */ React24.createElement("span", { className: "mb-4 text-[11px] text-black/50 tracking-widest" }, card.tag), /* @__PURE__ */ React24.createElement("div", { className: "pt-3" }, /* @__PURE__ */ React24.createElement("h4", { className: "text-[15px] tracking-wide" }, card.title), /* @__PURE__ */ React24.createElement("p", { className: "text-[13px] text-black/60" }, card.subtitle)))))))));
|
|
1500
1503
|
};
|
|
1501
1504
|
|
|
1502
1505
|
// src/components/ManagedProjectsBlock.tsx
|
|
1503
1506
|
import React25 from "react";
|
|
1504
|
-
import
|
|
1507
|
+
import Link7 from "next/link";
|
|
1505
1508
|
var GridSection = ({
|
|
1506
1509
|
children,
|
|
1507
1510
|
isLast = false,
|
|
@@ -1512,7 +1515,7 @@ var ManagedProjectsBlock = ({
|
|
|
1512
1515
|
title,
|
|
1513
1516
|
projects
|
|
1514
1517
|
}) => {
|
|
1515
|
-
return /* @__PURE__ */ React25.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative
|
|
1518
|
+
return /* @__PURE__ */ React25.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React25.createElement("div", { className: "relative bg-white rounded-2xl w-full max-w-5xl mx-auto overflow-hidden" }, /* @__PURE__ */ React25.createElement(
|
|
1516
1519
|
"div",
|
|
1517
1520
|
{
|
|
1518
1521
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1521,10 +1524,10 @@ var ManagedProjectsBlock = ({
|
|
|
1521
1524
|
backgroundRepeat: "repeat"
|
|
1522
1525
|
}
|
|
1523
1526
|
}
|
|
1524
|
-
), /* @__PURE__ */ React25.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React25.createElement(GridSection, null, tagline && /* @__PURE__ */ React25.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block" }, tagline), /* @__PURE__ */ React25.createElement("h1", { className: "text-3xl mt-4 text-
|
|
1527
|
+
), /* @__PURE__ */ React25.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React25.createElement(GridSection, null, tagline && /* @__PURE__ */ React25.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React25.createElement("h1", { className: " text-3xl mt-4 text-black tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
1525
1528
|
const isLast = index === projects.length - 1;
|
|
1526
|
-
const projectContent = /* @__PURE__ */ React25.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ React25.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__ */ React25.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ React25.createElement("h2", { className: "text-[16px] text-
|
|
1527
|
-
return /* @__PURE__ */ React25.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__ */ React25.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ React25.createElement(
|
|
1529
|
+
const projectContent = /* @__PURE__ */ React25.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ React25.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__ */ React25.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ React25.createElement("h2", { className: " text-[16px] text-black transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ React25.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__ */ React25.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__ */ React25.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0 " }, project.date)), /* @__PURE__ */ React25.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-600 max-w-4xl text-left transition-colors group-hover:text-black" }, project.description));
|
|
1530
|
+
return /* @__PURE__ */ React25.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__ */ React25.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ React25.createElement(Link7, { href: project.link, className: "block outline-none" }, projectContent));
|
|
1528
1531
|
}))));
|
|
1529
1532
|
};
|
|
1530
1533
|
export {
|