@retinalabsllc/zairusjs 8.1.60 → 8.1.65
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 +6 -21
- package/dist/index.d.ts +6 -21
- package/dist/index.js +205 -182
- package/dist/index.mjs +247 -224
- 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 font-medium";
|
|
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,8 @@ var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
|
457
489
|
var HeroSection = ({
|
|
458
490
|
badgeText,
|
|
459
491
|
titlePrefix,
|
|
460
|
-
highlightText,
|
|
492
|
+
highlightText = "Retina",
|
|
493
|
+
// Defaulted to Retina as requested
|
|
461
494
|
cursorLabel,
|
|
462
495
|
subtitle,
|
|
463
496
|
ctaText,
|
|
@@ -473,10 +506,10 @@ var HeroSection = ({
|
|
|
473
506
|
bgImageSrc,
|
|
474
507
|
isWaitlist = false
|
|
475
508
|
}) => {
|
|
476
|
-
const [isAnimating, setIsAnimating] =
|
|
477
|
-
const [isWaitlistOpen, setIsWaitlistOpen] =
|
|
509
|
+
const [isAnimating, setIsAnimating] = useState5(false);
|
|
510
|
+
const [isWaitlistOpen, setIsWaitlistOpen] = useState5(false);
|
|
478
511
|
const titleRef = useRef2(null);
|
|
479
|
-
|
|
512
|
+
useEffect3(() => {
|
|
480
513
|
const observer = new IntersectionObserver(
|
|
481
514
|
([entry]) => {
|
|
482
515
|
if (entry.isIntersecting) {
|
|
@@ -494,7 +527,7 @@ var HeroSection = ({
|
|
|
494
527
|
}
|
|
495
528
|
return () => observer.disconnect();
|
|
496
529
|
}, []);
|
|
497
|
-
return /* @__PURE__ */ React8.createElement("section", { className: "relative min-h-[85vh] pt-40 sm:pt-48 pb-20 flex flex-col items-center justify-center overflow-hidden w-full bg-
|
|
530
|
+
return /* @__PURE__ */ React8.createElement("section", { className: "relative min-h-[85vh] pt-40 sm:pt-48 pb-20 flex flex-col items-center justify-center overflow-hidden w-full bg-white" }, /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 w-full h-full z-0 overflow-hidden" }, bgVideoSrc ? /* @__PURE__ */ React8.createElement(
|
|
498
531
|
"video",
|
|
499
532
|
{
|
|
500
533
|
src: bgVideoSrc,
|
|
@@ -517,40 +550,40 @@ var HeroSection = ({
|
|
|
517
550
|
) : null, /* @__PURE__ */ React8.createElement(
|
|
518
551
|
"div",
|
|
519
552
|
{
|
|
520
|
-
className: "absolute inset-0 z-10 opacity-
|
|
553
|
+
className: "absolute inset-0 z-10 opacity-40 mix-blend-overlay pointer-events-none",
|
|
521
554
|
style: {
|
|
522
|
-
backgroundImage: `linear-gradient(110deg, rgba(255,255,255,0.
|
|
555
|
+
backgroundImage: `linear-gradient(110deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0.4) 35%, rgba(0,0,0,0.05) 60%, rgba(255,255,255,0.6) 80%, rgba(0,0,0,0.1) 100%), url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2MDAnIGhlaWdodD0nODAnPjxmaWx0ZXIgaWQ9J2JydXNoZWQnIHg9JzAlJyB5PScwJScgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJSc+PGZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9JzAuMDA1IDAuOCcgbnVtT2N0YXZlcz0nNCcgc2VlZD0nNScgcmVzdWx0PSdub2lzZScvPjxmZUNvbG9yTWF0cml4IHR5cGU9J3NhdHVyYXRlJyB2YWx1ZXM9JzAnIHJlc3VsdD0nbW9ubycvPjxmZUNvbXBvbmVudFRyYW5zZmVyIHJlc3VsdD0nYWRqdXN0ZWQnPjxmZUZ1bmNSIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuNCcgaW50ZXJjZXB0PScwLjMnLz48ZmVGdW5jRyB0eXBlPSdsaW5lYXInIHNsb3BlPScwLjQnIGludGVyY2VwdD0nMC4zJy8+PGZlRnVuY0IgdHlwZT0nbGluZWFyJyBzbG9wZT0nMC40JyBpbnRlcmNlcHQ9JzAuMycvPjxmZUZ1bmNBIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuMTUnIGludGVyY2VwdD0nMCcvPjwvZmVDb25lbnRUcmFuc2Zlcj48L2ZpbHRlcj48cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPScjZDFkNWRiJy8+PHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsdGVyPSd1cmwoI2JydXNoZWQpJyBvcGFjaXR5PScwLjgnLz48L3N2Zz4=")`,
|
|
523
556
|
backgroundSize: "cover",
|
|
524
557
|
backgroundPosition: "center"
|
|
525
558
|
}
|
|
526
559
|
}
|
|
527
|
-
), /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 bg-
|
|
560
|
+
), /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 bg-white/70 backdrop-blur-[2px] z-10" }), /* @__PURE__ */ React8.createElement(
|
|
528
561
|
"div",
|
|
529
562
|
{
|
|
530
|
-
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-
|
|
563
|
+
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-[0.04]",
|
|
531
564
|
style: {
|
|
532
|
-
backgroundImage: "radial-gradient(circle at center, rgba(
|
|
565
|
+
backgroundImage: "radial-gradient(circle at center, rgba(0,0,0,1) 1px, transparent 1px)",
|
|
533
566
|
backgroundSize: "32px 32px"
|
|
534
567
|
}
|
|
535
568
|
}
|
|
536
569
|
), /* @__PURE__ */ React8.createElement(
|
|
537
570
|
"div",
|
|
538
571
|
{
|
|
539
|
-
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-[0.
|
|
572
|
+
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-[0.05] mix-blend-overlay",
|
|
540
573
|
style: {
|
|
541
574
|
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
575
|
}
|
|
543
576
|
}
|
|
544
|
-
), /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-x-0 bottom-0 h-40 bg-linear-to-t from-
|
|
577
|
+
), /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-x-0 bottom-0 h-40 bg-linear-to-t from-white to-transparent z-10 pointer-events-none" })), /* @__PURE__ */ React8.createElement("div", { className: "relative max-w-5xl mx-auto px-4 sm:px-6 w-full flex flex-col items-center text-center z-20" }, /* @__PURE__ */ React8.createElement(
|
|
545
578
|
"h1",
|
|
546
579
|
{
|
|
547
580
|
ref: titleRef,
|
|
548
|
-
className: `text-4xl sm:text-5xl lg:text-7xl font-light mb-6 text-
|
|
581
|
+
className: `text-4xl sm:text-5xl lg:text-7xl font-serif font-light mb-6 text-neutral-900 tracking-tight leading-[1.05] max-w-4xl`,
|
|
549
582
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
550
583
|
},
|
|
551
584
|
/* @__PURE__ */ React8.createElement("span", { className: "block" }, titlePrefix),
|
|
552
|
-
/* @__PURE__ */ React8.createElement("span", { className: "block mt-2 font-medium
|
|
553
|
-
), subtitle && /* @__PURE__ */ React8.createElement("p", { className: "text-[14px] md:text-[16px] text-neutral-
|
|
585
|
+
/* @__PURE__ */ React8.createElement("span", { className: "block mt-2 font-medium text-neutral-900" }, highlightText)
|
|
586
|
+
), subtitle && /* @__PURE__ */ React8.createElement("p", { className: "text-[14px] md:text-[16px] text-neutral-600 max-w-xl mx-auto mb-10 font-light leading-relaxed" }, subtitle), /* @__PURE__ */ React8.createElement("div", { className: "flex flex-col sm:flex-row gap-4 justify-center items-center w-full px-2 sm:px-0 mx-auto mb-16" }, ctaText && (ctaHref || isWaitlist) && /* @__PURE__ */ React8.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ React8.createElement(
|
|
554
587
|
ThreeDButton,
|
|
555
588
|
{
|
|
556
589
|
href: isWaitlist ? "#" : ctaHref || "#",
|
|
@@ -564,10 +597,10 @@ var HeroSection = ({
|
|
|
564
597
|
Link4,
|
|
565
598
|
{
|
|
566
599
|
href: secondaryCtaHref,
|
|
567
|
-
className: "w-full sm:w-60 inline-flex font-medium items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3
|
|
600
|
+
className: "w-full sm:w-60 inline-flex font-medium items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3 bg-white/80 backdrop-blur-md text-center text-neutral-900 text-xs hover:bg-neutral-50 hover:border-neutral-300 border border-neutral-200 outline-none transition-all shadow-sm"
|
|
568
601
|
},
|
|
569
602
|
secondaryCtaText
|
|
570
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React8.createElement("div", { className: "w-full flex flex-col items-center mt-4" }, appsText && /* @__PURE__ */ React8.createElement("p", { className: "text-[9px] tracking-[0.2em] text-neutral-
|
|
603
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React8.createElement("div", { className: "w-full flex flex-col items-center mt-4" }, appsText && /* @__PURE__ */ React8.createElement("p", { className: "text-[9px] tracking-[0.2em] text-neutral-500 mb-5" }, appsText), /* @__PURE__ */ React8.createElement("div", { className: "flex flex-wrap justify-center items-center gap-6 opacity-80 mix-blend-multiply" }, appLogos.map((logo, idx) => /* @__PURE__ */ React8.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-8 sm:w-8 flex items-center justify-center cursor-default" }, /* @__PURE__ */ React8.createElement(
|
|
571
604
|
Image2,
|
|
572
605
|
{
|
|
573
606
|
src: logo.src,
|
|
@@ -586,12 +619,12 @@ var HeroSection = ({
|
|
|
586
619
|
};
|
|
587
620
|
|
|
588
621
|
// src/components/AppBento2.tsx
|
|
589
|
-
import React9, { useState as
|
|
622
|
+
import React9, { useState as useState6, useEffect as useEffect4, useRef as useRef3 } from "react";
|
|
590
623
|
import { HugeiconsIcon as HugeiconsIcon3 } from "@hugeicons/react";
|
|
591
624
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
592
|
-
const [isAnimating, setIsAnimating] =
|
|
625
|
+
const [isAnimating, setIsAnimating] = useState6(false);
|
|
593
626
|
const titleRef = useRef3(null);
|
|
594
|
-
|
|
627
|
+
useEffect4(() => {
|
|
595
628
|
const observer = new IntersectionObserver(
|
|
596
629
|
([entry]) => {
|
|
597
630
|
if (entry.isIntersecting) {
|
|
@@ -609,36 +642,36 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
609
642
|
}
|
|
610
643
|
return () => observer.disconnect();
|
|
611
644
|
}, []);
|
|
612
|
-
return /* @__PURE__ */ React9.createElement("div", { className: "w-full py-16
|
|
645
|
+
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
646
|
"h2",
|
|
614
647
|
{
|
|
615
648
|
ref: titleRef,
|
|
616
|
-
className: `text-3xl
|
|
649
|
+
className: ` text-3xl tracking-tight text-black leading-[1.1] ${isAnimating ? "" : ""}`,
|
|
617
650
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
618
651
|
},
|
|
619
652
|
headline
|
|
620
653
|
))), /* @__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
|
|
654
|
+
const isWhite = i === 0;
|
|
655
|
+
const isBlack = i === 1;
|
|
656
|
+
const isNeutral = i === 2;
|
|
624
657
|
const getBgStyle = () => {
|
|
625
|
-
if (
|
|
626
|
-
if (
|
|
627
|
-
if (
|
|
628
|
-
return "bg-neutral-
|
|
658
|
+
if (isWhite) return "bg-white";
|
|
659
|
+
if (isBlack) return "bg-black";
|
|
660
|
+
if (isNeutral) return "bg-neutral-200";
|
|
661
|
+
return "bg-neutral-200";
|
|
629
662
|
};
|
|
630
663
|
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.
|
|
664
|
+
if (isBlack) return `
|
|
665
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.2),
|
|
666
|
+
inset 0 -3px 0 0 rgba(0, 0, 0, 0.3),
|
|
667
|
+
0 4px 0 0 #0c0c0c,
|
|
668
|
+
0 12px 24px rgba(0, 0, 0, 0.1)
|
|
636
669
|
`;
|
|
637
670
|
return "none";
|
|
638
671
|
};
|
|
639
|
-
const textColor = "text-white";
|
|
640
|
-
const subTextColor = "text-neutral-
|
|
641
|
-
const labelColor = "text-neutral-500";
|
|
672
|
+
const textColor = isBlack ? "text-white" : "text-black";
|
|
673
|
+
const subTextColor = isBlack ? "text-neutral-300" : "text-neutral-600";
|
|
674
|
+
const labelColor = isBlack ? "text-neutral-400" : "text-neutral-500";
|
|
642
675
|
return /* @__PURE__ */ React9.createElement(
|
|
643
676
|
"div",
|
|
644
677
|
{
|
|
@@ -653,22 +686,22 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
653
686
|
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
687
|
}
|
|
655
688
|
),
|
|
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]
|
|
689
|
+
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" }),
|
|
690
|
+
/* @__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 }))),
|
|
691
|
+
/* @__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
692
|
);
|
|
660
693
|
})))));
|
|
661
694
|
};
|
|
662
695
|
|
|
663
696
|
// src/components/FeatureScroll.tsx
|
|
664
|
-
import React10, { useRef as useRef4, useState as
|
|
697
|
+
import React10, { useRef as useRef4, useState as useState7, useEffect as useEffect5 } from "react";
|
|
665
698
|
import Image3 from "next/image";
|
|
666
699
|
import { HugeiconsIcon as HugeiconsIcon4 } from "@hugeicons/react";
|
|
667
700
|
import { ArrowLeft01Icon, ArrowRight01Icon, Loading03Icon as Loading03Icon2 } from "@hugeicons/core-free-icons";
|
|
668
701
|
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-
|
|
702
|
+
const [isBgLoading, setIsBgLoading] = useState7(true);
|
|
703
|
+
const [isFgLoading, setIsFgLoading] = useState7(!!feature.image);
|
|
704
|
+
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
705
|
Image3,
|
|
673
706
|
{
|
|
674
707
|
src: bgImage,
|
|
@@ -689,7 +722,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
689
722
|
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
723
|
}
|
|
691
724
|
}
|
|
692
|
-
), isFgLoading && feature.image && /* @__PURE__ */ React10.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-
|
|
725
|
+
), 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
726
|
Image3,
|
|
694
727
|
{
|
|
695
728
|
src: feature.image,
|
|
@@ -698,16 +731,16 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
698
731
|
sizes: "(max-width: 768px) 90vw, 600px",
|
|
699
732
|
onLoad: () => setIsFgLoading(false),
|
|
700
733
|
className: `
|
|
701
|
-
object-cover object-top-left rounded-tl-2xl shadow-[-12px_-12px_30px_rgba(0,0,0,0.
|
|
734
|
+
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
735
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
703
736
|
`
|
|
704
737
|
}
|
|
705
|
-
))), /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ React10.createElement("h3", { className: "text-xl tracking-tight text-
|
|
738
|
+
))), /* @__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
739
|
};
|
|
707
740
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
708
741
|
const scrollRef = useRef4(null);
|
|
709
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
710
|
-
const [canScrollRight, setCanScrollRight] =
|
|
742
|
+
const [canScrollLeft, setCanScrollLeft] = useState7(false);
|
|
743
|
+
const [canScrollRight, setCanScrollRight] = useState7(true);
|
|
711
744
|
const checkScroll = () => {
|
|
712
745
|
if (scrollRef.current) {
|
|
713
746
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -715,7 +748,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
715
748
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
716
749
|
}
|
|
717
750
|
};
|
|
718
|
-
|
|
751
|
+
useEffect5(() => {
|
|
719
752
|
checkScroll();
|
|
720
753
|
window.addEventListener("resize", checkScroll);
|
|
721
754
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -731,12 +764,12 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
731
764
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
732
765
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
733
766
|
];
|
|
734
|
-
return /* @__PURE__ */ React10.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden
|
|
767
|
+
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
768
|
"button",
|
|
736
769
|
{
|
|
737
770
|
onClick: () => scroll("left"),
|
|
738
771
|
disabled: !canScrollLeft,
|
|
739
|
-
className: "p-4 border border-neutral-
|
|
772
|
+
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
773
|
"aria-label": "Previous feature"
|
|
741
774
|
},
|
|
742
775
|
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowLeft01Icon, size: 20 })
|
|
@@ -745,7 +778,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
745
778
|
{
|
|
746
779
|
onClick: () => scroll("right"),
|
|
747
780
|
disabled: !canScrollRight,
|
|
748
|
-
className: "p-4 border border-neutral-
|
|
781
|
+
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
782
|
"aria-label": "Next feature"
|
|
750
783
|
},
|
|
751
784
|
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowRight01Icon, size: 20 })
|
|
@@ -762,7 +795,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
762
795
|
{
|
|
763
796
|
onClick: () => scroll("left"),
|
|
764
797
|
disabled: !canScrollLeft,
|
|
765
|
-
className: "p-4 border border-neutral-
|
|
798
|
+
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
799
|
},
|
|
767
800
|
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowLeft01Icon, size: 20 })
|
|
768
801
|
), /* @__PURE__ */ React10.createElement(
|
|
@@ -770,7 +803,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
770
803
|
{
|
|
771
804
|
onClick: () => scroll("right"),
|
|
772
805
|
disabled: !canScrollRight,
|
|
773
|
-
className: "p-4 border border-neutral-
|
|
806
|
+
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
807
|
},
|
|
775
808
|
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowRight01Icon, size: 20 })
|
|
776
809
|
))));
|
|
@@ -785,20 +818,20 @@ var PlatformFeatures = ({
|
|
|
785
818
|
description,
|
|
786
819
|
features
|
|
787
820
|
}) => {
|
|
788
|
-
return /* @__PURE__ */ React11.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10
|
|
821
|
+
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
822
|
"div",
|
|
790
823
|
{
|
|
791
824
|
key: idx,
|
|
792
825
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
793
826
|
style: { animationDelay: feature.delay || "0ms" }
|
|
794
827
|
},
|
|
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-
|
|
828
|
+
/* @__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))),
|
|
829
|
+
/* @__PURE__ */ React11.createElement("div", null, /* @__PURE__ */ React11.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-600 pr-4" }, feature.desc))
|
|
797
830
|
)))));
|
|
798
831
|
};
|
|
799
832
|
|
|
800
833
|
// src/components/ManagedDocument.tsx
|
|
801
|
-
import React12, { useState as
|
|
834
|
+
import React12, { useState as useState8, useEffect as useEffect6, useRef as useRef5 } from "react";
|
|
802
835
|
var ManagedDocument = ({
|
|
803
836
|
tagline,
|
|
804
837
|
title,
|
|
@@ -806,9 +839,9 @@ var ManagedDocument = ({
|
|
|
806
839
|
contactText,
|
|
807
840
|
contactEmail
|
|
808
841
|
}) => {
|
|
809
|
-
const [isAnimating, setIsAnimating] =
|
|
842
|
+
const [isAnimating, setIsAnimating] = useState8(false);
|
|
810
843
|
const titleRef = useRef5(null);
|
|
811
|
-
|
|
844
|
+
useEffect6(() => {
|
|
812
845
|
const observer = new IntersectionObserver(
|
|
813
846
|
([entry]) => {
|
|
814
847
|
if (entry.isIntersecting) {
|
|
@@ -828,19 +861,19 @@ var ManagedDocument = ({
|
|
|
828
861
|
}, []);
|
|
829
862
|
return (
|
|
830
863
|
// 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
|
|
864
|
+
/* @__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
865
|
"h1",
|
|
833
866
|
{
|
|
834
867
|
ref: titleRef,
|
|
835
|
-
className: `text-3xl mt-4 text-
|
|
868
|
+
className: ` text-3xl mt-4 text-black tracking-tight text-left ${isAnimating ? "" : ""}`,
|
|
836
869
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
837
870
|
},
|
|
838
871
|
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-
|
|
872
|
+
)), 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
873
|
"a",
|
|
841
874
|
{
|
|
842
875
|
href: `mailto:${contactEmail}`,
|
|
843
|
-
className: "text-
|
|
876
|
+
className: "text-black decoration-black decoration-2 underline-offset-4 ml-1 transition-colors"
|
|
844
877
|
},
|
|
845
878
|
contactEmail
|
|
846
879
|
))))))
|
|
@@ -848,11 +881,11 @@ var ManagedDocument = ({
|
|
|
848
881
|
};
|
|
849
882
|
|
|
850
883
|
// src/components/ManagedContactBlock.tsx
|
|
851
|
-
import React13, { useState as
|
|
884
|
+
import React13, { useState as useState9, useEffect as useEffect7 } from "react";
|
|
852
885
|
import { HugeiconsIcon as HugeiconsIcon6 } from "@hugeicons/react";
|
|
853
886
|
var SecureEmail = ({ user, domain, className }) => {
|
|
854
|
-
const [isMounted, setIsMounted] =
|
|
855
|
-
|
|
887
|
+
const [isMounted, setIsMounted] = useState9(false);
|
|
888
|
+
useEffect7(() => {
|
|
856
889
|
setIsMounted(true);
|
|
857
890
|
}, []);
|
|
858
891
|
if (!isMounted) {
|
|
@@ -868,7 +901,7 @@ var ManagedContactBlock = ({
|
|
|
868
901
|
emails,
|
|
869
902
|
socials
|
|
870
903
|
}) => {
|
|
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
|
|
904
|
+
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
905
|
"div",
|
|
873
906
|
{
|
|
874
907
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -877,28 +910,28 @@ var ManagedContactBlock = ({
|
|
|
877
910
|
backgroundRepeat: "repeat"
|
|
878
911
|
}
|
|
879
912
|
}
|
|
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-
|
|
913
|
+
), /* @__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
914
|
"a",
|
|
882
915
|
{
|
|
883
916
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
884
|
-
className: "transition-colors hover:text-
|
|
917
|
+
className: "transition-colors hover:text-black"
|
|
885
918
|
},
|
|
886
919
|
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-
|
|
920
|
+
)))), 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
921
|
SecureEmail,
|
|
889
922
|
{
|
|
890
923
|
user: email.user,
|
|
891
924
|
domain: email.domain,
|
|
892
|
-
className: "text-neutral-
|
|
925
|
+
className: "text-neutral-600 transition-colors hover:text-black"
|
|
893
926
|
}
|
|
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-
|
|
927
|
+
))))), 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
928
|
"a",
|
|
896
929
|
{
|
|
897
930
|
key: idx,
|
|
898
931
|
href: social.href,
|
|
899
932
|
target: "_blank",
|
|
900
933
|
rel: "noopener noreferrer",
|
|
901
|
-
className: "flex items-center gap-3 transition-colors group text-neutral-
|
|
934
|
+
className: "flex items-center gap-3 transition-colors group text-neutral-600 hover:text-black",
|
|
902
935
|
"aria-label": social.label
|
|
903
936
|
},
|
|
904
937
|
/* @__PURE__ */ React13.createElement(HugeiconsIcon6, { icon: social.icon, size: 18 }),
|
|
@@ -907,21 +940,21 @@ var ManagedContactBlock = ({
|
|
|
907
940
|
};
|
|
908
941
|
|
|
909
942
|
// src/components/ManagedPricingBlock.tsx
|
|
910
|
-
import React14, { useState as
|
|
943
|
+
import React14, { useState as useState10, useEffect as useEffect8, useRef as useRef6 } from "react";
|
|
911
944
|
import Link5 from "next/link";
|
|
912
945
|
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: "#
|
|
946
|
+
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" }));
|
|
947
|
+
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
948
|
var ManagedPricingBlock = ({
|
|
916
949
|
tagline,
|
|
917
950
|
title,
|
|
918
951
|
plans = [],
|
|
919
952
|
tabs
|
|
920
953
|
}) => {
|
|
921
|
-
const [isAnimating, setIsAnimating] =
|
|
922
|
-
const [activeTabIndex, setActiveTabIndex] =
|
|
954
|
+
const [isAnimating, setIsAnimating] = useState10(false);
|
|
955
|
+
const [activeTabIndex, setActiveTabIndex] = useState10(0);
|
|
923
956
|
const titleRef = useRef6(null);
|
|
924
|
-
|
|
957
|
+
useEffect8(() => {
|
|
925
958
|
const observer = new IntersectionObserver(
|
|
926
959
|
([entry]) => {
|
|
927
960
|
if (entry.isIntersecting) {
|
|
@@ -941,22 +974,22 @@ var ManagedPricingBlock = ({
|
|
|
941
974
|
}, []);
|
|
942
975
|
const hasTabs = tabs && tabs.length > 0;
|
|
943
976
|
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
|
|
977
|
+
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
978
|
"h1",
|
|
946
979
|
{
|
|
947
980
|
ref: titleRef,
|
|
948
|
-
className: `text-2xl sm:text-3xl mt-3 text-
|
|
981
|
+
className: `text-2xl sm:text-3xl mt-3 text-black tracking-tight ${isAnimating ? "" : ""}`,
|
|
949
982
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
950
983
|
},
|
|
951
984
|
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-
|
|
985
|
+
)), 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
986
|
const isActive = activeTabIndex === idx;
|
|
954
987
|
return /* @__PURE__ */ React14.createElement(
|
|
955
988
|
"button",
|
|
956
989
|
{
|
|
957
990
|
key: idx,
|
|
958
991
|
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-
|
|
992
|
+
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
993
|
},
|
|
961
994
|
tab.label
|
|
962
995
|
);
|
|
@@ -964,9 +997,9 @@ var ManagedPricingBlock = ({
|
|
|
964
997
|
"div",
|
|
965
998
|
{
|
|
966
999
|
key: `${activeTabIndex}-${planIdx}`,
|
|
967
|
-
className: `bg-
|
|
1000
|
+
className: `bg-white rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "" : ""}`
|
|
968
1001
|
},
|
|
969
|
-
/* @__PURE__ */ React14.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React14.createElement("span", { className: "text-
|
|
1002
|
+
/* @__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
1003
|
"div",
|
|
971
1004
|
{
|
|
972
1005
|
key: logoIdx,
|
|
@@ -979,7 +1012,7 @@ var ManagedPricingBlock = ({
|
|
|
979
1012
|
alt: logo.alt,
|
|
980
1013
|
width: 16,
|
|
981
1014
|
height: 16,
|
|
982
|
-
className: "object-contain
|
|
1015
|
+
className: "object-contain"
|
|
983
1016
|
}
|
|
984
1017
|
)
|
|
985
1018
|
)))),
|
|
@@ -987,14 +1020,14 @@ var ManagedPricingBlock = ({
|
|
|
987
1020
|
Link5,
|
|
988
1021
|
{
|
|
989
1022
|
href: plan.ctaHref,
|
|
990
|
-
className: "w-full py-2.5 px-5 rounded-full
|
|
1023
|
+
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
1024
|
},
|
|
992
1025
|
plan.ctaText
|
|
993
1026
|
),
|
|
994
1027
|
/* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
995
1028
|
const isAvailable = feature.value !== false;
|
|
996
1029
|
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-
|
|
1030
|
+
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
1031
|
}))
|
|
999
1032
|
)))));
|
|
1000
1033
|
};
|
|
@@ -1010,7 +1043,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React15.
|
|
|
1010
1043
|
href,
|
|
1011
1044
|
target: "_blank",
|
|
1012
1045
|
rel: "noopener noreferrer",
|
|
1013
|
-
className: "text-neutral-
|
|
1046
|
+
className: "text-neutral-400 hover:text-black transition-colors",
|
|
1014
1047
|
"aria-label": `${name} on ${label}`
|
|
1015
1048
|
},
|
|
1016
1049
|
/* @__PURE__ */ React15.createElement(HugeiconsIcon7, { icon, size: 16 })
|
|
@@ -1022,7 +1055,7 @@ var ManagedBoardBlock = ({
|
|
|
1022
1055
|
contactText,
|
|
1023
1056
|
contactEmail
|
|
1024
1057
|
}) => {
|
|
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
|
|
1058
|
+
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
1059
|
"div",
|
|
1027
1060
|
{
|
|
1028
1061
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1031,7 +1064,7 @@ var ManagedBoardBlock = ({
|
|
|
1031
1064
|
backgroundRepeat: "repeat"
|
|
1032
1065
|
}
|
|
1033
1066
|
}
|
|
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-
|
|
1067
|
+
), /* @__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
1068
|
Image5,
|
|
1036
1069
|
{
|
|
1037
1070
|
src: member.imageSrc,
|
|
@@ -1040,7 +1073,7 @@ var ManagedBoardBlock = ({
|
|
|
1040
1073
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
1041
1074
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
1042
1075
|
}
|
|
1043
|
-
)), /* @__PURE__ */ React15.createElement("div", { className: "pt-1" }, /* @__PURE__ */ React15.createElement("h3", { className: "text-[14px] md:text-[15px] text-
|
|
1076
|
+
)), /* @__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
1077
|
MemberSocialLink,
|
|
1045
1078
|
{
|
|
1046
1079
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -1056,34 +1089,24 @@ var ManagedBoardBlock = ({
|
|
|
1056
1089
|
label: "LinkedIn",
|
|
1057
1090
|
name: member.name
|
|
1058
1091
|
}
|
|
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-
|
|
1092
|
+
))))))), (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
1093
|
};
|
|
1061
1094
|
|
|
1062
1095
|
// src/components/ManagedNotFoundBlock.tsx
|
|
1063
1096
|
import React16 from "react";
|
|
1064
|
-
import Link6 from "next/link";
|
|
1065
1097
|
var ManagedNotFoundBlock = ({
|
|
1066
1098
|
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 = "/"
|
|
1099
|
+
description = "The page you are looking for does not exist or has been moved."
|
|
1070
1100
|
}) => {
|
|
1071
|
-
return /* @__PURE__ */ React16.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-
|
|
1101
|
+
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
1102
|
"svg",
|
|
1073
1103
|
{
|
|
1074
1104
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1075
1105
|
viewBox: "0 0 24 24",
|
|
1076
|
-
className: "w-12 h-12 fill-neutral-
|
|
1106
|
+
className: "w-12 h-12 fill-neutral-100"
|
|
1077
1107
|
},
|
|
1078
1108
|
/* @__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
|
-
)));
|
|
1109
|
+
)), /* @__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
1110
|
};
|
|
1088
1111
|
|
|
1089
1112
|
// src/components/PageSpinner.tsx
|
|
@@ -1155,10 +1178,10 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1155
1178
|
imageAlt = "Profile Image",
|
|
1156
1179
|
dividerText = "CONTACT",
|
|
1157
1180
|
ctaText = "Connect With Me",
|
|
1158
|
-
ctaHref = "/contact
|
|
1181
|
+
ctaHref = "/contact",
|
|
1159
1182
|
children
|
|
1160
1183
|
}) => {
|
|
1161
|
-
return /* @__PURE__ */ React19.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0
|
|
1184
|
+
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
1185
|
Image6,
|
|
1163
1186
|
{
|
|
1164
1187
|
src: imageSrc,
|
|
@@ -1173,7 +1196,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1173
1196
|
{
|
|
1174
1197
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
1175
1198
|
style: {
|
|
1176
|
-
background: "linear-gradient(to right, rgba(
|
|
1199
|
+
background: "linear-gradient(to right, rgba(255,255,255,0) 30%, #ffffff 100%)"
|
|
1177
1200
|
}
|
|
1178
1201
|
}
|
|
1179
1202
|
), /* @__PURE__ */ React19.createElement(
|
|
@@ -1181,7 +1204,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1181
1204
|
{
|
|
1182
1205
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
1183
1206
|
style: {
|
|
1184
|
-
background: "linear-gradient(to bottom, rgba(
|
|
1207
|
+
background: "linear-gradient(to bottom, rgba(255,255,255,0) 0%, #ffffff 100%)"
|
|
1185
1208
|
}
|
|
1186
1209
|
}
|
|
1187
1210
|
)), /* @__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 +1216,25 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1193
1216
|
backgroundRepeat: "repeat"
|
|
1194
1217
|
}
|
|
1195
1218
|
}
|
|
1196
|
-
), /* @__PURE__ */ React19.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React19.createElement("div", { className: "mb-10 border-b border-neutral-
|
|
1219
|
+
), /* @__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
1220
|
ThreeDButton,
|
|
1198
1221
|
{
|
|
1199
1222
|
href: ctaHref,
|
|
1200
|
-
className: "py-
|
|
1223
|
+
className: "py-3 tracking-widest text-[11px]"
|
|
1201
1224
|
},
|
|
1202
1225
|
ctaText
|
|
1203
1226
|
)))))));
|
|
1204
1227
|
};
|
|
1205
1228
|
|
|
1206
1229
|
// src/components/PortfolioHero.tsx
|
|
1207
|
-
import React20, { useEffect as
|
|
1208
|
-
import
|
|
1230
|
+
import React20, { useEffect as useEffect9, useRef as useRef7 } from "react";
|
|
1231
|
+
import Link6 from "next/link";
|
|
1209
1232
|
import Image7 from "next/image";
|
|
1210
1233
|
import { HugeiconsIcon as HugeiconsIcon9 } from "@hugeicons/react";
|
|
1211
1234
|
import { ArrowRight01Icon as ArrowRight01Icon2 } from "@hugeicons/core-free-icons";
|
|
1212
1235
|
var useScrollAnimation = () => {
|
|
1213
1236
|
const elementRef = useRef7(null);
|
|
1214
|
-
|
|
1237
|
+
useEffect9(() => {
|
|
1215
1238
|
const el = elementRef.current;
|
|
1216
1239
|
if (!el) return;
|
|
1217
1240
|
const observer = new IntersectionObserver(
|
|
@@ -1247,13 +1270,13 @@ var PortfolioHero = ({
|
|
|
1247
1270
|
secondaryCtaHref
|
|
1248
1271
|
}) => {
|
|
1249
1272
|
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
|
|
1273
|
+
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
1274
|
"div",
|
|
1252
1275
|
{
|
|
1253
1276
|
ref: heroContentRef,
|
|
1254
1277
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
1255
1278
|
},
|
|
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
|
|
1279
|
+
/* @__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
1280
|
Image7,
|
|
1258
1281
|
{
|
|
1259
1282
|
src: imageSrc,
|
|
@@ -1264,29 +1287,29 @@ var PortfolioHero = ({
|
|
|
1264
1287
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
1265
1288
|
quality: 100
|
|
1266
1289
|
}
|
|
1267
|
-
)), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ React20.createElement("h1", { className: "text-3xl
|
|
1290
|
+
)), /* @__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
1291
|
"a",
|
|
1269
1292
|
{
|
|
1270
1293
|
href: socialLinkHref,
|
|
1271
1294
|
target: "_blank",
|
|
1272
1295
|
rel: "noopener noreferrer",
|
|
1273
|
-
className: "text-[11px] md:text-[14px] text-
|
|
1296
|
+
className: "text-[11px] md:text-[14px] text-black hover:text-neutral-500 transition-colors mt-1 underline underline-offset-4 decoration-neutral-300"
|
|
1274
1297
|
},
|
|
1275
1298
|
socialLinkText
|
|
1276
1299
|
))),
|
|
1277
|
-
/* @__PURE__ */ React20.createElement("p", { className: "text-[13px]
|
|
1300
|
+
/* @__PURE__ */ React20.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-600" }, bio),
|
|
1278
1301
|
/* @__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
1302
|
ThreeDButton,
|
|
1280
1303
|
{
|
|
1281
1304
|
href: primaryCtaHref,
|
|
1282
|
-
className: "py-
|
|
1305
|
+
className: "py-3 tracking-widest text-[11px]"
|
|
1283
1306
|
},
|
|
1284
1307
|
primaryCtaText
|
|
1285
1308
|
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React20.createElement(
|
|
1286
|
-
|
|
1309
|
+
Link6,
|
|
1287
1310
|
{
|
|
1288
1311
|
href: secondaryCtaHref,
|
|
1289
|
-
className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-[11px] tracking-[0.2em]
|
|
1312
|
+
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
1313
|
},
|
|
1291
1314
|
secondaryCtaText,
|
|
1292
1315
|
/* @__PURE__ */ React20.createElement(HugeiconsIcon9, { icon: ArrowRight01Icon2, size: 16 })
|
|
@@ -1295,7 +1318,7 @@ var PortfolioHero = ({
|
|
|
1295
1318
|
};
|
|
1296
1319
|
|
|
1297
1320
|
// src/components/GifFeatureCard.tsx
|
|
1298
|
-
import React21, { useState as
|
|
1321
|
+
import React21, { useState as useState11 } from "react";
|
|
1299
1322
|
import Image8 from "next/image";
|
|
1300
1323
|
import { HugeiconsIcon as HugeiconsIcon10 } from "@hugeicons/react";
|
|
1301
1324
|
import { Loading03Icon as Loading03Icon4 } from "@hugeicons/core-free-icons";
|
|
@@ -1306,8 +1329,8 @@ var GifFeatureCard = ({
|
|
|
1306
1329
|
alt = "Feature animation",
|
|
1307
1330
|
className = "aspect-video"
|
|
1308
1331
|
}) => {
|
|
1309
|
-
const [isLoading, setIsLoading] =
|
|
1310
|
-
return /* @__PURE__ */ React21.createElement("div", { className: `relative w-full bg-black
|
|
1332
|
+
const [isLoading, setIsLoading] = useState11(true);
|
|
1333
|
+
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
1334
|
HugeiconsIcon10,
|
|
1312
1335
|
{
|
|
1313
1336
|
icon: Loading03Icon4,
|
|
@@ -1335,11 +1358,11 @@ var GifFeatureCard = ({
|
|
|
1335
1358
|
{
|
|
1336
1359
|
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
1360
|
}
|
|
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
|
|
1361
|
+
), /* @__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
1362
|
};
|
|
1340
1363
|
|
|
1341
1364
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
1342
|
-
import React22, { useState as
|
|
1365
|
+
import React22, { useState as useState12, useEffect as useEffect10, useRef as useRef8 } from "react";
|
|
1343
1366
|
import Image9 from "next/image";
|
|
1344
1367
|
var MedicalFeatureStatsBlock = ({
|
|
1345
1368
|
bottomHeadline,
|
|
@@ -1348,9 +1371,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1348
1371
|
trustText,
|
|
1349
1372
|
stats
|
|
1350
1373
|
}) => {
|
|
1351
|
-
const [isAnimating, setIsAnimating] =
|
|
1374
|
+
const [isAnimating, setIsAnimating] = useState12(false);
|
|
1352
1375
|
const titleRef = useRef8(null);
|
|
1353
|
-
|
|
1376
|
+
useEffect10(() => {
|
|
1354
1377
|
const observer = new IntersectionObserver(
|
|
1355
1378
|
([entry]) => {
|
|
1356
1379
|
if (entry.isIntersecting) {
|
|
@@ -1368,15 +1391,15 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1368
1391
|
}
|
|
1369
1392
|
return () => observer.disconnect();
|
|
1370
1393
|
}, []);
|
|
1371
|
-
return /* @__PURE__ */ React22.createElement("section", { className: "py-24 w-full flex justify-center relative z-10
|
|
1394
|
+
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
1395
|
"h2",
|
|
1373
1396
|
{
|
|
1374
1397
|
ref: titleRef,
|
|
1375
|
-
className: `text-3xl text-
|
|
1398
|
+
className: `text-3xl text-black tracking-tight leading-[1.1] mb-5 ${isAnimating ? "" : ""}`,
|
|
1376
1399
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
1377
1400
|
},
|
|
1378
1401
|
bottomHeadline
|
|
1379
|
-
), /* @__PURE__ */ React22.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-
|
|
1402
|
+
), /* @__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
1403
|
Image9,
|
|
1381
1404
|
{
|
|
1382
1405
|
src,
|
|
@@ -1385,17 +1408,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1385
1408
|
sizes: "48px",
|
|
1386
1409
|
className: "object-cover"
|
|
1387
1410
|
}
|
|
1388
|
-
)))), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] text-neutral-
|
|
1411
|
+
)))), /* @__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
1412
|
};
|
|
1390
1413
|
|
|
1391
1414
|
// src/components/ConsultantShowcase.tsx
|
|
1392
|
-
import React23, { useState as
|
|
1415
|
+
import React23, { useState as useState13 } from "react";
|
|
1393
1416
|
import Image10 from "next/image";
|
|
1394
1417
|
import { HugeiconsIcon as HugeiconsIcon11 } from "@hugeicons/react";
|
|
1395
1418
|
import { Loading03Icon as Loading03Icon5 } from "@hugeicons/core-free-icons";
|
|
1396
1419
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
1397
|
-
const [isLoading, setIsLoading] =
|
|
1398
|
-
return /* @__PURE__ */ React23.createElement("div", { className: `absolute inset-0 bg-neutral-
|
|
1420
|
+
const [isLoading, setIsLoading] = useState13(true);
|
|
1421
|
+
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
1422
|
Image10,
|
|
1400
1423
|
{
|
|
1401
1424
|
src,
|
|
@@ -1414,9 +1437,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
1414
1437
|
var ConsultantShowcase = ({
|
|
1415
1438
|
profiles
|
|
1416
1439
|
}) => {
|
|
1417
|
-
const [currentIndex, setCurrentIndex] =
|
|
1418
|
-
const [touchStart, setTouchStart] =
|
|
1419
|
-
const [touchEnd, setTouchEnd] =
|
|
1440
|
+
const [currentIndex, setCurrentIndex] = useState13(0);
|
|
1441
|
+
const [touchStart, setTouchStart] = useState13(null);
|
|
1442
|
+
const [touchEnd, setTouchEnd] = useState13(null);
|
|
1420
1443
|
const nextSlide = () => {
|
|
1421
1444
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
1422
1445
|
};
|
|
@@ -1441,10 +1464,10 @@ var ConsultantShowcase = ({
|
|
|
1441
1464
|
}
|
|
1442
1465
|
};
|
|
1443
1466
|
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
|
|
1467
|
+
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
1468
|
"div",
|
|
1446
1469
|
{
|
|
1447
|
-
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900
|
|
1470
|
+
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
1448
1471
|
onTouchStart,
|
|
1449
1472
|
onTouchMove,
|
|
1450
1473
|
onTouchEnd
|
|
@@ -1465,9 +1488,9 @@ var ConsultantShowcase = ({
|
|
|
1465
1488
|
priority: idx === 0
|
|
1466
1489
|
}
|
|
1467
1490
|
),
|
|
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]
|
|
1491
|
+
/* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 bg-black/20 z-10 pointer-events-none" }),
|
|
1492
|
+
/* @__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" }),
|
|
1493
|
+
/* @__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
1494
|
);
|
|
1472
1495
|
}),
|
|
1473
1496
|
/* @__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 +1508,7 @@ var ConsultantShowcase = ({
|
|
|
1485
1508
|
};
|
|
1486
1509
|
|
|
1487
1510
|
// src/components/ContentGridBlock.tsx
|
|
1488
|
-
import React24, { useState as
|
|
1511
|
+
import React24, { useState as useState14 } from "react";
|
|
1489
1512
|
import Image11 from "next/image";
|
|
1490
1513
|
import { HugeiconsIcon as HugeiconsIcon12 } from "@hugeicons/react";
|
|
1491
1514
|
import { Loading03Icon as Loading03Icon6 } from "@hugeicons/core-free-icons";
|
|
@@ -1496,12 +1519,12 @@ var ContentGridBlock = ({
|
|
|
1496
1519
|
middleBottomCard,
|
|
1497
1520
|
rightCards
|
|
1498
1521
|
}) => {
|
|
1499
|
-
return /* @__PURE__ */ React24.createElement("section", { className: "w-full flex justify-center z-10 relative
|
|
1522
|
+
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
1523
|
};
|
|
1501
1524
|
|
|
1502
1525
|
// src/components/ManagedProjectsBlock.tsx
|
|
1503
1526
|
import React25 from "react";
|
|
1504
|
-
import
|
|
1527
|
+
import Link7 from "next/link";
|
|
1505
1528
|
var GridSection = ({
|
|
1506
1529
|
children,
|
|
1507
1530
|
isLast = false,
|
|
@@ -1512,7 +1535,7 @@ var ManagedProjectsBlock = ({
|
|
|
1512
1535
|
title,
|
|
1513
1536
|
projects
|
|
1514
1537
|
}) => {
|
|
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
|
|
1538
|
+
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
1539
|
"div",
|
|
1517
1540
|
{
|
|
1518
1541
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1521,10 +1544,10 @@ var ManagedProjectsBlock = ({
|
|
|
1521
1544
|
backgroundRepeat: "repeat"
|
|
1522
1545
|
}
|
|
1523
1546
|
}
|
|
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-
|
|
1547
|
+
), /* @__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
1548
|
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(
|
|
1549
|
+
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));
|
|
1550
|
+
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
1551
|
}))));
|
|
1529
1552
|
};
|
|
1530
1553
|
export {
|