@retinalabsllc/zairusjs 6.1.5 → 8.1.50
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 +1 -3
- package/dist/index.d.ts +1 -3
- package/dist/index.js +220 -215
- package/dist/index.mjs +258 -253
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -21,7 +21,6 @@ var Faq = ({
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
{ threshold: 0.1 }
|
|
24
|
-
// Triggers when 10% of the title is visible
|
|
25
24
|
);
|
|
26
25
|
if (titleRef.current) {
|
|
27
26
|
observer.observe(titleRef.current);
|
|
@@ -31,11 +30,11 @@ var Faq = ({
|
|
|
31
30
|
const toggleFaq = (index) => {
|
|
32
31
|
setActiveFaq(activeFaq === index ? null : index);
|
|
33
32
|
};
|
|
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(
|
|
33
|
+
return /* @__PURE__ */ React.createElement("div", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative bg-black" }, /* @__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(
|
|
35
34
|
"h2",
|
|
36
35
|
{
|
|
37
36
|
ref: titleRef,
|
|
38
|
-
className: `text-3xl
|
|
37
|
+
className: `text-3xl text-white tracking-tight leading-[1.15] ${isAnimating ? "" : ""}`,
|
|
39
38
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
40
39
|
},
|
|
41
40
|
"FAQ"
|
|
@@ -43,10 +42,10 @@ var Faq = ({
|
|
|
43
42
|
const isOpen = activeFaq === index;
|
|
44
43
|
const getShadowStyle = () => {
|
|
45
44
|
if (isOpen) return `
|
|
46
|
-
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.
|
|
47
|
-
inset 0 -3px 0 0 rgba(0, 0, 0, 0.
|
|
48
|
-
0 4px 0 0 #
|
|
49
|
-
0 12px 24px rgba(0, 0, 0, 0.
|
|
45
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.05),
|
|
46
|
+
inset 0 -3px 0 0 rgba(0, 0, 0, 0.5),
|
|
47
|
+
0 4px 0 0 #000000,
|
|
48
|
+
0 12px 24px rgba(0, 0, 0, 0.5)
|
|
50
49
|
`;
|
|
51
50
|
return "none";
|
|
52
51
|
};
|
|
@@ -54,7 +53,7 @@ var Faq = ({
|
|
|
54
53
|
"div",
|
|
55
54
|
{
|
|
56
55
|
key: index,
|
|
57
|
-
className: `relative transition-all duration-500 rounded-4xl overflow-hidden ${isOpen ? "bg-
|
|
56
|
+
className: `relative transition-all duration-500 rounded-4xl overflow-hidden border ${isOpen ? "bg-neutral-900 border-neutral-800" : "bg-black border-neutral-800 hover:border-neutral-700"}`,
|
|
58
57
|
style: { boxShadow: getShadowStyle() }
|
|
59
58
|
},
|
|
60
59
|
isOpen && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
@@ -73,19 +72,19 @@ var Faq = ({
|
|
|
73
72
|
/* @__PURE__ */ React.createElement(
|
|
74
73
|
"span",
|
|
75
74
|
{
|
|
76
|
-
className: `text-[15px] transition-colors duration-300 flex items-center gap-2 ${isOpen ? "text-white" : "text-
|
|
75
|
+
className: `text-[15px] transition-colors duration-300 flex items-center gap-2 ${isOpen ? "text-white" : "text-neutral-300"}`
|
|
77
76
|
},
|
|
78
|
-
/* @__PURE__ */ React.createElement("span", { className:
|
|
77
|
+
/* @__PURE__ */ React.createElement("span", { className: "text-neutral-500" }, index + 1, "."),
|
|
79
78
|
faq.question
|
|
80
79
|
),
|
|
81
|
-
/* @__PURE__ */ React.createElement("div", { className: `shrink-0 transition-colors duration-300 ${isOpen ? "text-white" : "text-
|
|
80
|
+
/* @__PURE__ */ React.createElement("div", { className: `shrink-0 transition-colors duration-300 ${isOpen ? "text-white" : "text-neutral-400 group-hover:text-white"}` }, 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" })))
|
|
82
81
|
),
|
|
83
82
|
/* @__PURE__ */ React.createElement(
|
|
84
83
|
"div",
|
|
85
84
|
{
|
|
86
85
|
className: `relative z-20 grid transition-all duration-300 ease-in-out ${isOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"}`
|
|
87
86
|
},
|
|
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-
|
|
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-400" : "text-transparent"}` }, faq.answer))
|
|
89
88
|
)
|
|
90
89
|
);
|
|
91
90
|
}))));
|
|
@@ -100,31 +99,23 @@ var ThreeDButton = ({
|
|
|
100
99
|
className = "",
|
|
101
100
|
onClick
|
|
102
101
|
}) => {
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
`;
|
|
102
|
+
const silverBg = `linear-gradient(110deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 35%, rgba(0,0,0,0.1) 60%, rgba(255,255,255,0.6) 80%, rgba(0,0,0,0.2) 100%), url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2MDAnIGhlaWdodD0nODAnPjxmaWx0ZXIgaWQ9J2JydXNoZWQnIHg9JzAlJyB5PScwJScgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJSc+PGZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9JzAuMDA1IDAuOCcgbnVtT2N0YXZlcz0nNCcgc2VlZD0nNScgcmVzdWx0PSdub2lzZScvPjxmZUNvbG9yTWF0cml4IHR5cGU9J3NhdHVyYXRlJyB2YWx1ZXM9JzAnIHJlc3VsdD0nbW9ubycvPjxmZUNvbXBvbmVudFRyYW5zZmVyIHJlc3VsdD0nYWRqdXN0ZWQnPjxmZUZ1bmNSIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuNCcgaW50ZXJjZXB0PScwLjMnLz48ZmVGdW5jRyB0eXBlPSdsaW5lYXInIHNsb3BlPScwLjQnIGludGVyY2VwdD0nMC4zJy8+PGZlRnVuY0IgdHlwZT0nbGluZWFyJyBzbG9wZT0nMC40JyBpbnRlcmNlcHQ9JzAuMycvPjxmZUZ1bmNBIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuMTUnIGludGVyY2VwdD0nMCcvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48L2ZpbHRlcj48cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPScjZDFkNWRiJy8+PHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsdGVyPSd1cmwoI2JydXNoZWQpJyBvcGFjaXR5PScwLjgnLz48L3N2Zz4=")`;
|
|
103
|
+
const baseShadow = "inset 0 1px 2px rgba(255,255,255,1), inset 0 -2px 3px rgba(0,0,0,0.3), 0 4px 10px rgba(0,0,0,0.5)";
|
|
104
|
+
const hoverShadow = "inset 0 1px 2px rgba(255,255,255,1), inset 0 -2px 3px rgba(0,0,0,0.3), 0 6px 14px rgba(0,0,0,0.7)";
|
|
105
|
+
const activeShadow = "inset 0 2px 4px rgba(0,0,0,0.4), inset 0 -1px 2px rgba(255,255,255,0.5), 0 2px 4px rgba(0,0,0,0.3)";
|
|
121
106
|
return /* @__PURE__ */ React2.createElement(
|
|
122
107
|
Link,
|
|
123
108
|
{
|
|
124
109
|
href,
|
|
125
110
|
onClick,
|
|
126
|
-
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
127
|
-
style: {
|
|
111
|
+
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-semibold transition-all duration-150 select-none group overflow-hidden ${className}`,
|
|
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
|
+
},
|
|
128
119
|
onMouseEnter: (e) => {
|
|
129
120
|
e.currentTarget.style.boxShadow = hoverShadow;
|
|
130
121
|
e.currentTarget.style.transform = "translateY(-1px)";
|
|
@@ -141,8 +132,8 @@ var ThreeDButton = ({
|
|
|
141
132
|
e.currentTarget.style.transform = "translateY(-1px)";
|
|
142
133
|
}
|
|
143
134
|
},
|
|
144
|
-
/* @__PURE__ */ React2.createElement("span", { className: "absolute inset-0
|
|
145
|
-
/* @__PURE__ */ React2.createElement("span", { className: "relative z-10 pt-1 tracking-wide text-
|
|
135
|
+
/* @__PURE__ */ React2.createElement("span", { className: "absolute inset-0 bg-linear-to-r from-white/30 to-transparent pointer-events-none" }),
|
|
136
|
+
/* @__PURE__ */ React2.createElement("span", { className: "relative z-10 pt-1 tracking-wide text-neutral-900/95 group-hover:text-neutral-950 transition-colors duration-150 flex items-center justify-center leading-none drop-shadow-[0_1px_1px_rgba(255,255,255,0.8)]" }, children)
|
|
146
137
|
);
|
|
147
138
|
};
|
|
148
139
|
|
|
@@ -160,29 +151,11 @@ var ThreeDActionButton = ({
|
|
|
160
151
|
ariaLabel
|
|
161
152
|
}) => {
|
|
162
153
|
const isInteractionDisabled = disabled || isLoading;
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
`;
|
|
154
|
+
const silverBg = `linear-gradient(110deg, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 35%, rgba(0,0,0,0.1) 60%, rgba(255,255,255,0.6) 80%, rgba(0,0,0,0.2) 100%), url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2MDAnIGhlaWdodD0nODAnPjxmaWx0ZXIgaWQ9J2JydXNoZWQnIHg9JzAlJyB5PScwJScgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJSc+PGZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9JzAuMDA1IDAuOCcgbnVtT2N0YXZlcz0nNCcgc2VlZD0nNScgcmVzdWx0PSdub2lzZScvPjxmZUNvbG9yTWF0cml4IHR5cGU9J3NhdHVyYXRlJyB2YWx1ZXM9JzAnIHJlc3VsdD0nbW9ubycvPjxmZUNvbXBvbmVudFRyYW5zZmVyIHJlc3VsdD0nYWRqdXN0ZWQnPjxmZUZ1bmNSIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuNCcgaW50ZXJjZXB0PScwLjMnLz48ZmVGdW5jRyB0eXBlPSdsaW5lYXInIHNsb3BlPScwLjQnIGludGVyY2VwdD0nMC4zJy8+PGZlRnVuY0IgdHlwZT0nbGluZWFyJyBzbG9wZT0nMC40JyBpbnRlcmNlcHQ9JzAuMycvPjxmZUZ1bmNBIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuMTUnIGludGVyY2VwdD0nMCcvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48L2ZpbHRlcj48cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPScjZDFkNWRiJy8+PHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsdGVyPSd1cmwoI2JydXNoZWQpJyBvcGFjaXR5PScwLjgnLz48L3N2Zz4=")`;
|
|
155
|
+
const baseShadow = "inset 0 1px 2px rgba(255,255,255,1), inset 0 -2px 3px rgba(0,0,0,0.3), 0 4px 10px rgba(0,0,0,0.5)";
|
|
156
|
+
const hoverShadow = "inset 0 1px 2px rgba(255,255,255,1), inset 0 -2px 3px rgba(0,0,0,0.3), 0 6px 14px rgba(0,0,0,0.7)";
|
|
157
|
+
const activeShadow = "inset 0 2px 4px rgba(0,0,0,0.4), inset 0 -1px 2px rgba(255,255,255,0.5), 0 2px 4px rgba(0,0,0,0.3)";
|
|
158
|
+
const disabledShadow = "inset 0 1px 2px rgba(255,255,255,0.5), inset 0 -1px 2px rgba(0,0,0,0.2), 0 2px 4px rgba(0,0,0,0.2)";
|
|
186
159
|
return /* @__PURE__ */ React3.createElement(
|
|
187
160
|
"button",
|
|
188
161
|
{
|
|
@@ -192,12 +165,18 @@ var ThreeDActionButton = ({
|
|
|
192
165
|
"aria-label": ariaLabel,
|
|
193
166
|
className: `
|
|
194
167
|
relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
195
|
-
|
|
196
|
-
transition-all duration-150 select-none group outline-none
|
|
197
|
-
${isInteractionDisabled ? "opacity-
|
|
168
|
+
text-neutral-900 text-xs font-semibold tracking-widest
|
|
169
|
+
transition-all duration-150 select-none group outline-none overflow-hidden
|
|
170
|
+
${isInteractionDisabled ? "opacity-70 cursor-not-allowed" : "active:translate-y-0.5"}
|
|
198
171
|
${className}
|
|
199
172
|
`,
|
|
200
|
-
style: {
|
|
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
|
+
},
|
|
201
180
|
onMouseEnter: (e) => {
|
|
202
181
|
if (isInteractionDisabled) return;
|
|
203
182
|
e.currentTarget.style.boxShadow = hoverShadow;
|
|
@@ -218,13 +197,13 @@ var ThreeDActionButton = ({
|
|
|
218
197
|
e.currentTarget.style.transform = "translateY(-1px)";
|
|
219
198
|
}
|
|
220
199
|
},
|
|
221
|
-
/* @__PURE__ */ React3.createElement("span", { className: "absolute inset-0
|
|
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-
|
|
200
|
+
/* @__PURE__ */ React3.createElement("span", { className: "absolute inset-0 bg-linear-to-r from-white/30 to-transparent pointer-events-none" }),
|
|
201
|
+
/* @__PURE__ */ React3.createElement("span", { className: "relative z-10 flex items-center justify-center gap-2 leading-none drop-shadow-[0_1px_1px_rgba(255,255,255,0.8)]" }, isLoading ? /* @__PURE__ */ React3.createElement(HugeiconsIcon, { icon: Loading03Icon, size: 16, className: "animate-spin text-neutral-900" }) : children)
|
|
223
202
|
);
|
|
224
203
|
};
|
|
225
204
|
|
|
226
205
|
// src/components/Header.tsx
|
|
227
|
-
import React4
|
|
206
|
+
import React4 from "react";
|
|
228
207
|
import Link2 from "next/link";
|
|
229
208
|
import Image from "next/image";
|
|
230
209
|
import { usePathname } from "next/navigation";
|
|
@@ -235,8 +214,8 @@ var NavLink = ({
|
|
|
235
214
|
}) => {
|
|
236
215
|
const pathname = usePathname();
|
|
237
216
|
const isActive = pathname === href;
|
|
238
|
-
const activeClass = "text-
|
|
239
|
-
const inactiveClass = "text-neutral-
|
|
217
|
+
const activeClass = "text-white";
|
|
218
|
+
const inactiveClass = "text-neutral-400 hover:text-white";
|
|
240
219
|
return /* @__PURE__ */ React4.createElement(
|
|
241
220
|
Link2,
|
|
242
221
|
{
|
|
@@ -256,30 +235,19 @@ var Header = ({
|
|
|
256
235
|
hideHeaderText = false,
|
|
257
236
|
compact = false
|
|
258
237
|
}) => {
|
|
259
|
-
const [mounted, setMounted] = useState2(false);
|
|
260
|
-
useEffect2(() => {
|
|
261
|
-
setMounted(true);
|
|
262
|
-
}, []);
|
|
263
238
|
const headerLayoutWidth = compact ? "w-fit mx-auto gap-8 md:gap-16" : "w-full justify-between";
|
|
264
239
|
const hasBrandSection = showLogo || !hideHeaderText;
|
|
265
|
-
|
|
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(
|
|
240
|
+
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} bg-black/40 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(
|
|
273
241
|
Image,
|
|
274
242
|
{
|
|
275
243
|
src: logoSrc,
|
|
276
244
|
alt: `${companyName} Logo`,
|
|
277
245
|
width: 40,
|
|
278
246
|
height: 40,
|
|
279
|
-
className: `object-contain w-8 h-auto ${
|
|
247
|
+
className: `object-contain w-8 h-auto ${invert ? "invert" : ""}`,
|
|
280
248
|
priority: true
|
|
281
249
|
}
|
|
282
|
-
), !hideHeaderText && /* @__PURE__ */ React4.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React4.createElement("span", { className:
|
|
250
|
+
), !hideHeaderText && /* @__PURE__ */ React4.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React4.createElement("span", { className: "text-[11px] leading-none tracking-wide mb-1 transition-colors text-white" }, companyName), subtitle && /* @__PURE__ */ React4.createElement("span", { className: "text-[9px] tracking-widest leading-none transition-colors text-neutral-400" }, subtitle)))), /* @__PURE__ */ React4.createElement("nav", { className: "flex items-center gap-1 md:gap-2 shrink-0" }, links.map((link, index) => /* @__PURE__ */ React4.createElement(
|
|
283
251
|
NavLink,
|
|
284
252
|
{
|
|
285
253
|
key: index,
|
|
@@ -291,7 +259,7 @@ var Header = ({
|
|
|
291
259
|
};
|
|
292
260
|
|
|
293
261
|
// src/components/Footer.tsx
|
|
294
|
-
import React5, { useState as
|
|
262
|
+
import React5, { useState as useState2 } from "react";
|
|
295
263
|
import Link3 from "next/link";
|
|
296
264
|
import { HugeiconsIcon as HugeiconsIcon2 } from "@hugeicons/react";
|
|
297
265
|
var Footer = ({
|
|
@@ -301,38 +269,38 @@ var Footer = ({
|
|
|
301
269
|
copyrightText,
|
|
302
270
|
topSection
|
|
303
271
|
}) => {
|
|
304
|
-
const [openCol, setOpenCol] =
|
|
272
|
+
const [openCol, setOpenCol] = useState2(null);
|
|
305
273
|
const toggleColumn = (idx) => {
|
|
306
274
|
setOpenCol(openCol === idx ? null : idx);
|
|
307
275
|
};
|
|
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]
|
|
276
|
+
return /* @__PURE__ */ React5.createElement("div", { className: "bg-black" }, 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 invert 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 invert opacity-80" })), /* @__PURE__ */ React5.createElement("div", null, /* @__PURE__ */ React5.createElement("p", { className: "text-[11px] text-neutral-400 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-white 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-white transition-colors block truncate" }, link.label) : /* @__PURE__ */ React5.createElement(Link3, { href: link.href, className: "hover:text-white transition-colors block truncate" }, link.label))))))), /* @__PURE__ */ React5.createElement("div", { className: "flex flex-col md:hidden w-full border-t border-neutral-800 mt-4" }, columns.map((col, idx) => {
|
|
309
277
|
const isOpen = openCol === idx;
|
|
310
|
-
return /* @__PURE__ */ React5.createElement("div", { key: idx, className: "border-b border-neutral-
|
|
278
|
+
return /* @__PURE__ */ React5.createElement("div", { key: idx, className: "border-b border-neutral-800" }, /* @__PURE__ */ React5.createElement(
|
|
311
279
|
"button",
|
|
312
280
|
{
|
|
313
281
|
onClick: () => toggleColumn(idx),
|
|
314
282
|
className: "w-full flex items-center justify-between py-5 text-left outline-none"
|
|
315
283
|
},
|
|
316
|
-
/* @__PURE__ */ React5.createElement("span", { className: "text-[11px] tracking-[0.2em] text-
|
|
284
|
+
/* @__PURE__ */ React5.createElement("span", { className: "text-[11px] tracking-[0.2em] text-white " }, col.title),
|
|
317
285
|
/* @__PURE__ */ React5.createElement(
|
|
318
286
|
"svg",
|
|
319
287
|
{
|
|
320
|
-
className: `w-4 h-4 text-neutral-
|
|
288
|
+
className: `w-4 h-4 text-neutral-500 transition-transform duration-300 ${isOpen ? "rotate-180" : ""}`,
|
|
321
289
|
fill: "none",
|
|
322
290
|
viewBox: "0 0 24 24",
|
|
323
291
|
stroke: "currentColor"
|
|
324
292
|
},
|
|
325
293
|
/* @__PURE__ */ React5.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M19 9l-7 7-7-7" })
|
|
326
294
|
)
|
|
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-
|
|
328
|
-
})))), /* @__PURE__ */ React5.createElement("div", { className: "pt-8 mt-4
|
|
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-white transition-colors" }, link.label) : /* @__PURE__ */ React5.createElement(Link3, { href: link.href, className: "hover:text-white transition-colors" }, link.label)))))));
|
|
296
|
+
})))), /* @__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-500 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(
|
|
329
297
|
"a",
|
|
330
298
|
{
|
|
331
299
|
key: idx,
|
|
332
300
|
href: social.href,
|
|
333
301
|
target: "_blank",
|
|
334
302
|
rel: "noopener noreferrer",
|
|
335
|
-
className: "text-neutral-
|
|
303
|
+
className: "text-neutral-500 hover:text-white transition-colors",
|
|
336
304
|
"aria-label": social.name
|
|
337
305
|
},
|
|
338
306
|
/* @__PURE__ */ React5.createElement(HugeiconsIcon2, { icon: social.icon, size: 20 })
|
|
@@ -340,7 +308,7 @@ var Footer = ({
|
|
|
340
308
|
};
|
|
341
309
|
|
|
342
310
|
// src/components/HeroSection.tsx
|
|
343
|
-
import React6, { useState as
|
|
311
|
+
import React6, { useState as useState3, useEffect as useEffect2, useRef as useRef2 } from "react";
|
|
344
312
|
import Link4 from "next/link";
|
|
345
313
|
import Image2 from "next/image";
|
|
346
314
|
var HeroSection = ({
|
|
@@ -361,9 +329,9 @@ var HeroSection = ({
|
|
|
361
329
|
bgVideoSrc,
|
|
362
330
|
bgImageSrc
|
|
363
331
|
}) => {
|
|
364
|
-
const [isAnimating, setIsAnimating] =
|
|
332
|
+
const [isAnimating, setIsAnimating] = useState3(false);
|
|
365
333
|
const titleRef = useRef2(null);
|
|
366
|
-
|
|
334
|
+
useEffect2(() => {
|
|
367
335
|
const observer = new IntersectionObserver(
|
|
368
336
|
([entry]) => {
|
|
369
337
|
if (entry.isIntersecting) {
|
|
@@ -381,62 +349,89 @@ var HeroSection = ({
|
|
|
381
349
|
}
|
|
382
350
|
return () => observer.disconnect();
|
|
383
351
|
}, []);
|
|
384
|
-
return /* @__PURE__ */ React6.createElement("section", { className: "relative min-h-[85vh] pt-40 sm:pt-48 pb-20
|
|
352
|
+
return /* @__PURE__ */ React6.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-black" }, /* @__PURE__ */ React6.createElement("div", { className: "absolute inset-0 w-full h-full z-0 overflow-hidden" }, bgVideoSrc ? /* @__PURE__ */ React6.createElement(
|
|
353
|
+
"video",
|
|
354
|
+
{
|
|
355
|
+
src: bgVideoSrc,
|
|
356
|
+
poster: bgImageSrc,
|
|
357
|
+
autoPlay: true,
|
|
358
|
+
loop: true,
|
|
359
|
+
muted: true,
|
|
360
|
+
playsInline: true,
|
|
361
|
+
className: "absolute inset-0 w-full h-full object-cover z-0"
|
|
362
|
+
}
|
|
363
|
+
) : bgImageSrc ? /* @__PURE__ */ React6.createElement(
|
|
364
|
+
Image2,
|
|
365
|
+
{
|
|
366
|
+
src: bgImageSrc,
|
|
367
|
+
alt: "Hero Background",
|
|
368
|
+
fill: true,
|
|
369
|
+
priority: true,
|
|
370
|
+
className: "object-cover z-0"
|
|
371
|
+
}
|
|
372
|
+
) : null, /* @__PURE__ */ React6.createElement(
|
|
373
|
+
"div",
|
|
374
|
+
{
|
|
375
|
+
className: "absolute inset-0 z-10 opacity-30 mix-blend-overlay pointer-events-none",
|
|
376
|
+
style: {
|
|
377
|
+
backgroundImage: `linear-gradient(110deg, rgba(255,255,255,0.6) 0%, rgba(255,255,255,0) 35%, rgba(0,0,0,0.2) 60%, rgba(255,255,255,0.4) 80%, rgba(0,0,0,0.4) 100%), url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2MDAnIGhlaWdodD0nODAnPjxmaWx0ZXIgaWQ9J2JydXNoZWQnIHg9JzAlJyB5PScwJScgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJSc+PGZlVHVyYnVsZW5jZSB0eXBlPSdmcmFjdGFsTm9pc2UnIGJhc2VGcmVxdWVuY3k9JzAuMDA1IDAuOCcgbnVtT2N0YXZlcz0nNCcgc2VlZD0nNScgcmVzdWx0PSdub2lzZScvPjxmZUNvbG9yTWF0cml4IHR5cGU9J3NhdHVyYXRlJyB2YWx1ZXM9JzAnIHJlc3VsdD0nbW9ubycvPjxmZUNvbXBvbmVudFRyYW5zZmVyIHJlc3VsdD0nYWRqdXN0ZWQnPjxmZUZ1bmNSIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuNCcgaW50ZXJjZXB0PScwLjMnLz48ZmVGdW5jRyB0eXBlPSdsaW5lYXInIHNsb3BlPScwLjQnIGludGVyY2VwdD0nMC4zJy8+PGZlRnVuY0IgdHlwZT0nbGluZWFyJyBzbG9wZT0nMC40JyBpbnRlcmNlcHQ9JzAuMycvPjxmZUZ1bmNBIHR5cGU9J2xpbmVhcicgc2xvcGU9JzAuMTUnIGludGVyY2VwdD0nMCcvPjwvZmVDb21wb25lbnRUcmFuc2Zlcj48L2ZpbHRlcj48cmVjdCB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPScjZDFkNWRiJy8+PHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsdGVyPSd1cmwoI2JydXNoZWQpJyBvcGFjaXR5PScwLjgnLz48L3N2Zz4=")`,
|
|
378
|
+
backgroundSize: "cover",
|
|
379
|
+
backgroundPosition: "center"
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
), /* @__PURE__ */ React6.createElement("div", { className: "absolute inset-0 bg-black/20 z-10" }), /* @__PURE__ */ React6.createElement(
|
|
383
|
+
"div",
|
|
384
|
+
{
|
|
385
|
+
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-10",
|
|
386
|
+
style: {
|
|
387
|
+
backgroundImage: "radial-gradient(circle at center, rgba(255,255,255,0.2) 1px, transparent 1px)",
|
|
388
|
+
backgroundSize: "32px 32px"
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
), /* @__PURE__ */ React6.createElement(
|
|
392
|
+
"div",
|
|
393
|
+
{
|
|
394
|
+
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-[0.10] mix-blend-overlay",
|
|
395
|
+
style: {
|
|
396
|
+
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")`
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
), /* @__PURE__ */ React6.createElement("div", { className: "absolute inset-x-0 bottom-0 h-40 bg-linear-to-t from-black to-transparent z-10 pointer-events-none" })), /* @__PURE__ */ React6.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__ */ React6.createElement(
|
|
385
400
|
"h1",
|
|
386
401
|
{
|
|
387
402
|
ref: titleRef,
|
|
388
|
-
className: `text-4xl sm:text-5xl lg:text-
|
|
403
|
+
className: `text-4xl sm:text-5xl lg:text-7xl font-light mb-6 text-white tracking-tight leading-[1.05] max-w-4xl drop-shadow-[0_4px_24px_rgba(0,0,0,0.5)]`,
|
|
389
404
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
390
405
|
},
|
|
391
406
|
titlePrefix,
|
|
392
407
|
" ",
|
|
393
|
-
/* @__PURE__ */ React6.createElement("span", { className: "font-medium gradient-text
|
|
394
|
-
), subtitle && /* @__PURE__ */ React6.createElement("p", { className: "text-[
|
|
408
|
+
/* @__PURE__ */ React6.createElement("span", { className: "font-medium gradient-text" }, highlightText)
|
|
409
|
+
), subtitle && /* @__PURE__ */ React6.createElement("p", { className: "text-[14px] md:text-[16px] text-neutral-200 max-w-xl mx-auto mb-10 font-light leading-relaxed drop-shadow-md" }, subtitle), /* @__PURE__ */ React6.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 && /* @__PURE__ */ React6.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ React6.createElement(ThreeDButton, { href: ctaHref }, ctaText)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React6.createElement(
|
|
395
410
|
Link4,
|
|
396
411
|
{
|
|
397
412
|
href: secondaryCtaHref,
|
|
398
|
-
className: "w-full sm:w-
|
|
413
|
+
className: "w-full sm:w-60 inline-flex font-semibold items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3 bg-black/40 backdrop-blur-md text-center text-white text-xs hover:bg-neutral-800 hover:border-neutral-500 outline-none transition-all drop-shadow-lg"
|
|
399
414
|
},
|
|
400
415
|
secondaryCtaText
|
|
401
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React6.createElement("div", { className: "w-full flex flex-col items-
|
|
416
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React6.createElement("div", { className: "w-full flex flex-col items-center mt-4" }, appsText && /* @__PURE__ */ React6.createElement("p", { className: "text-[9px] tracking-[0.2em] text-neutral-300 mb-5 " }, appsText), /* @__PURE__ */ React6.createElement("div", { className: "flex flex-wrap justify-center items-center gap-6 opacity-90" }, appLogos.map((logo, idx) => /* @__PURE__ */ React6.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-8 sm:w-8 flex items-center justify-center cursor-default filter invert" }, /* @__PURE__ */ React6.createElement(
|
|
402
417
|
Image2,
|
|
403
418
|
{
|
|
404
419
|
src: logo.src,
|
|
405
420
|
alt: logo.alt,
|
|
406
|
-
width:
|
|
407
|
-
height:
|
|
421
|
+
width: 50,
|
|
422
|
+
height: 50,
|
|
408
423
|
className: "object-contain h-full w-auto"
|
|
409
424
|
}
|
|
410
|
-
))))))
|
|
411
|
-
"video",
|
|
412
|
-
{
|
|
413
|
-
src: bgVideoSrc,
|
|
414
|
-
poster: bgImageSrc,
|
|
415
|
-
autoPlay: true,
|
|
416
|
-
loop: true,
|
|
417
|
-
muted: true,
|
|
418
|
-
playsInline: true,
|
|
419
|
-
className: "absolute inset-0 w-full h-full object-cover"
|
|
420
|
-
}
|
|
421
|
-
) : bgImageSrc ? /* @__PURE__ */ React6.createElement(
|
|
422
|
-
Image2,
|
|
423
|
-
{
|
|
424
|
-
src: bgImageSrc,
|
|
425
|
-
alt: "Hero Media",
|
|
426
|
-
fill: true,
|
|
427
|
-
priority: true,
|
|
428
|
-
className: "object-cover"
|
|
429
|
-
}
|
|
430
|
-
) : null, /* @__PURE__ */ React6.createElement("div", { className: "absolute inset-0 bg-black/5 pointer-events-none mix-blend-overlay" }))));
|
|
425
|
+
)))))));
|
|
431
426
|
};
|
|
432
427
|
|
|
433
428
|
// src/components/AppBento2.tsx
|
|
434
|
-
import React7, { useState as
|
|
429
|
+
import React7, { useState as useState4, useEffect as useEffect3, useRef as useRef3 } from "react";
|
|
435
430
|
import { HugeiconsIcon as HugeiconsIcon3 } from "@hugeicons/react";
|
|
436
431
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
437
|
-
const [isAnimating, setIsAnimating] =
|
|
432
|
+
const [isAnimating, setIsAnimating] = useState4(false);
|
|
438
433
|
const titleRef = useRef3(null);
|
|
439
|
-
|
|
434
|
+
useEffect3(() => {
|
|
440
435
|
const observer = new IntersectionObserver(
|
|
441
436
|
([entry]) => {
|
|
442
437
|
if (entry.isIntersecting) {
|
|
@@ -454,36 +449,36 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
454
449
|
}
|
|
455
450
|
return () => observer.disconnect();
|
|
456
451
|
}, []);
|
|
457
|
-
return /* @__PURE__ */ React7.createElement("div", { className: "w-full py-16" }, /* @__PURE__ */ React7.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React7.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React7.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React7.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React7.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ React7.createElement(
|
|
452
|
+
return /* @__PURE__ */ React7.createElement("div", { className: "w-full py-16 bg-black" }, /* @__PURE__ */ React7.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React7.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React7.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React7.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React7.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ React7.createElement(
|
|
458
453
|
"h2",
|
|
459
454
|
{
|
|
460
455
|
ref: titleRef,
|
|
461
|
-
className: `
|
|
456
|
+
className: `text-3xl tracking-tight text-white leading-[1.1] ${isAnimating ? "" : ""}`,
|
|
462
457
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
463
458
|
},
|
|
464
459
|
headline
|
|
465
460
|
))), /* @__PURE__ */ React7.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
466
|
-
const
|
|
467
|
-
const
|
|
468
|
-
const
|
|
461
|
+
const isPrimary = i === 0;
|
|
462
|
+
const isHighlight = i === 1;
|
|
463
|
+
const isSecondary = i === 2;
|
|
469
464
|
const getBgStyle = () => {
|
|
470
|
-
if (
|
|
471
|
-
if (
|
|
472
|
-
if (
|
|
473
|
-
return "bg-neutral-
|
|
465
|
+
if (isPrimary) return "bg-neutral-900 ";
|
|
466
|
+
if (isHighlight) return "bg-black";
|
|
467
|
+
if (isSecondary) return "bg-neutral-800";
|
|
468
|
+
return "bg-neutral-900 ";
|
|
474
469
|
};
|
|
475
470
|
const getShadowStyle = () => {
|
|
476
|
-
if (
|
|
477
|
-
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.
|
|
478
|
-
inset 0 -3px 0 0 rgba(0, 0, 0, 0.
|
|
479
|
-
0 4px 0 0 #
|
|
480
|
-
0 12px 24px rgba(0, 0, 0, 0.
|
|
471
|
+
if (isHighlight) return `
|
|
472
|
+
inset 0 1.5px 0 0 rgba(255, 255, 255, 0.05),
|
|
473
|
+
inset 0 -3px 0 0 rgba(0, 0, 0, 0.5),
|
|
474
|
+
0 4px 0 0 #000000,
|
|
475
|
+
0 12px 24px rgba(0, 0, 0, 0.5)
|
|
481
476
|
`;
|
|
482
477
|
return "none";
|
|
483
478
|
};
|
|
484
|
-
const textColor =
|
|
485
|
-
const subTextColor =
|
|
486
|
-
const labelColor =
|
|
479
|
+
const textColor = "text-white";
|
|
480
|
+
const subTextColor = "text-neutral-400";
|
|
481
|
+
const labelColor = "text-neutral-500";
|
|
487
482
|
return /* @__PURE__ */ React7.createElement(
|
|
488
483
|
"div",
|
|
489
484
|
{
|
|
@@ -498,22 +493,22 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
498
493
|
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")` }
|
|
499
494
|
}
|
|
500
495
|
),
|
|
501
|
-
|
|
502
|
-
/* @__PURE__ */ React7.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React7.createElement("div", { className: `absolute -bottom-8 -right-8 transform group-hover:scale-110 transition-transform duration-700 ease-out ${
|
|
503
|
-
/* @__PURE__ */ React7.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React7.createElement("span", { className: `text-[9px]
|
|
496
|
+
isHighlight && /* @__PURE__ */ React7.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" }),
|
|
497
|
+
/* @__PURE__ */ React7.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React7.createElement("div", { className: `absolute -bottom-8 -right-8 transform group-hover:scale-110 transition-transform duration-700 ease-out ${isHighlight ? "text-white/5" : "text-white/5"}` }, /* @__PURE__ */ React7.createElement(HugeiconsIcon3, { icon: f.icon, size: 180 }))),
|
|
498
|
+
/* @__PURE__ */ React7.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React7.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ React7.createElement("div", { className: `p-2 rounded-full transition-colors bg-white/10` }, /* @__PURE__ */ React7.createElement(HugeiconsIcon3, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ React7.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React7.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ React7.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
504
499
|
);
|
|
505
500
|
})))));
|
|
506
501
|
};
|
|
507
502
|
|
|
508
503
|
// src/components/FeatureScroll.tsx
|
|
509
|
-
import React8, { useRef as useRef4, useState as
|
|
504
|
+
import React8, { useRef as useRef4, useState as useState5, useEffect as useEffect4 } from "react";
|
|
510
505
|
import Image3 from "next/image";
|
|
511
506
|
import { HugeiconsIcon as HugeiconsIcon4 } from "@hugeicons/react";
|
|
512
507
|
import { ArrowLeft01Icon, ArrowRight01Icon, Loading03Icon as Loading03Icon2 } from "@hugeicons/core-free-icons";
|
|
513
508
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
514
|
-
const [isBgLoading, setIsBgLoading] =
|
|
515
|
-
const [isFgLoading, setIsFgLoading] =
|
|
516
|
-
return /* @__PURE__ */ React8.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__ */ React8.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-
|
|
509
|
+
const [isBgLoading, setIsBgLoading] = useState5(true);
|
|
510
|
+
const [isFgLoading, setIsFgLoading] = useState5(!!feature.image);
|
|
511
|
+
return /* @__PURE__ */ React8.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__ */ React8.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-900 rounded-2xl overflow-hidden mb-6 flex items-center justify-center " }, /* @__PURE__ */ React8.createElement(
|
|
517
512
|
Image3,
|
|
518
513
|
{
|
|
519
514
|
src: bgImage,
|
|
@@ -534,7 +529,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
534
529
|
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")`
|
|
535
530
|
}
|
|
536
531
|
}
|
|
537
|
-
), isFgLoading && feature.image && /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-
|
|
532
|
+
), isFgLoading && feature.image && /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-900/50 backdrop-blur-sm transition-opacity duration-300" }, /* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: Loading03Icon2, size: 32, className: "animate-spin text-neutral-500" })), feature.image && /* @__PURE__ */ React8.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__ */ React8.createElement(
|
|
538
533
|
Image3,
|
|
539
534
|
{
|
|
540
535
|
src: feature.image,
|
|
@@ -543,16 +538,16 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
543
538
|
sizes: "(max-width: 768px) 90vw, 600px",
|
|
544
539
|
onLoad: () => setIsFgLoading(false),
|
|
545
540
|
className: `
|
|
546
|
-
object-cover object-top-left rounded-tl-2xl shadow-[-12px_-12px_30px_rgba(0,0,0,0.
|
|
541
|
+
object-cover object-top-left rounded-tl-2xl shadow-[-12px_-12px_30px_rgba(0,0,0,0.5)] transition-all duration-700 ease-out
|
|
547
542
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
548
543
|
`
|
|
549
544
|
}
|
|
550
|
-
))), /* @__PURE__ */ React8.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ React8.createElement("h3", { className: "
|
|
545
|
+
))), /* @__PURE__ */ React8.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ React8.createElement("h3", { className: "text-xl tracking-tight text-white mb-2" }, feature.title), /* @__PURE__ */ React8.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-400 max-w-[90%]" }, feature.desc)));
|
|
551
546
|
};
|
|
552
547
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
553
548
|
const scrollRef = useRef4(null);
|
|
554
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
555
|
-
const [canScrollRight, setCanScrollRight] =
|
|
549
|
+
const [canScrollLeft, setCanScrollLeft] = useState5(false);
|
|
550
|
+
const [canScrollRight, setCanScrollRight] = useState5(true);
|
|
556
551
|
const checkScroll = () => {
|
|
557
552
|
if (scrollRef.current) {
|
|
558
553
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -560,7 +555,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
560
555
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
561
556
|
}
|
|
562
557
|
};
|
|
563
|
-
|
|
558
|
+
useEffect4(() => {
|
|
564
559
|
checkScroll();
|
|
565
560
|
window.addEventListener("resize", checkScroll);
|
|
566
561
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -576,12 +571,12 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
576
571
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
577
572
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
578
573
|
];
|
|
579
|
-
return /* @__PURE__ */ React8.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden" }, /* @__PURE__ */ React8.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React8.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ React8.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ React8.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React8.createElement("h2", { className: "
|
|
574
|
+
return /* @__PURE__ */ React8.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden bg-black" }, /* @__PURE__ */ React8.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React8.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ React8.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ React8.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React8.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.05]" }, headline)), /* @__PURE__ */ React8.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ React8.createElement(
|
|
580
575
|
"button",
|
|
581
576
|
{
|
|
582
577
|
onClick: () => scroll("left"),
|
|
583
578
|
disabled: !canScrollLeft,
|
|
584
|
-
className: "p-4 border border-neutral-
|
|
579
|
+
className: "p-4 border border-neutral-800 rounded-full text-neutral-500 hover:text-white hover:border-white disabled:opacity-30 disabled:hover:border-neutral-800 disabled:hover:text-neutral-500 disabled:cursor-not-allowed transition-all outline-none",
|
|
585
580
|
"aria-label": "Previous feature"
|
|
586
581
|
},
|
|
587
582
|
/* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: ArrowLeft01Icon, size: 20 })
|
|
@@ -590,7 +585,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
590
585
|
{
|
|
591
586
|
onClick: () => scroll("right"),
|
|
592
587
|
disabled: !canScrollRight,
|
|
593
|
-
className: "p-4 border border-neutral-
|
|
588
|
+
className: "p-4 border border-neutral-800 rounded-full text-neutral-500 hover:text-white hover:border-white disabled:opacity-30 disabled:hover:border-neutral-800 disabled:hover:text-neutral-500 disabled:cursor-not-allowed transition-all outline-none",
|
|
594
589
|
"aria-label": "Next feature"
|
|
595
590
|
},
|
|
596
591
|
/* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: ArrowRight01Icon, size: 20 })
|
|
@@ -607,7 +602,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
607
602
|
{
|
|
608
603
|
onClick: () => scroll("left"),
|
|
609
604
|
disabled: !canScrollLeft,
|
|
610
|
-
className: "p-4 border border-neutral-
|
|
605
|
+
className: "p-4 border border-neutral-800 rounded-full text-neutral-500 hover:text-white hover:border-white disabled:opacity-30 transition-all outline-none"
|
|
611
606
|
},
|
|
612
607
|
/* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: ArrowLeft01Icon, size: 20 })
|
|
613
608
|
), /* @__PURE__ */ React8.createElement(
|
|
@@ -615,7 +610,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
615
610
|
{
|
|
616
611
|
onClick: () => scroll("right"),
|
|
617
612
|
disabled: !canScrollRight,
|
|
618
|
-
className: "p-4 border border-neutral-
|
|
613
|
+
className: "p-4 border border-neutral-800 rounded-full text-neutral-500 hover:text-white hover:border-white disabled:opacity-30 transition-all outline-none"
|
|
619
614
|
},
|
|
620
615
|
/* @__PURE__ */ React8.createElement(HugeiconsIcon4, { icon: ArrowRight01Icon, size: 20 })
|
|
621
616
|
))));
|
|
@@ -630,20 +625,20 @@ var PlatformFeatures = ({
|
|
|
630
625
|
description,
|
|
631
626
|
features
|
|
632
627
|
}) => {
|
|
633
|
-
return /* @__PURE__ */ React9.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10" }, /* @__PURE__ */ React9.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React9.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ React9.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React9.createElement("h2", { className: "text-3xl tracking-tight text-
|
|
628
|
+
return /* @__PURE__ */ React9.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10 bg-black" }, /* @__PURE__ */ React9.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React9.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ React9.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React9.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.05] mb-6" }, headline), /* @__PURE__ */ React9.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-400 max-w-2xl" }, description)), /* @__PURE__ */ React9.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__ */ React9.createElement(
|
|
634
629
|
"div",
|
|
635
630
|
{
|
|
636
631
|
key: idx,
|
|
637
632
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
638
633
|
style: { animationDelay: feature.delay || "0ms" }
|
|
639
634
|
},
|
|
640
|
-
/* @__PURE__ */ React9.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ React9.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-
|
|
641
|
-
/* @__PURE__ */ React9.createElement("div", null, /* @__PURE__ */ React9.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-
|
|
635
|
+
/* @__PURE__ */ React9.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ React9.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-800 flex items-center justify-center text-white transition-colors duration-300" }, /* @__PURE__ */ React9.createElement(HugeiconsIcon5, { icon: feature.icon, size: 24 })), /* @__PURE__ */ React9.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React9.createElement("span", { className: "text-[11px] tracking-widest text-neutral-500 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ React9.createElement("h3", { className: "text-xl tracking-tight text-white" }, feature.title))),
|
|
636
|
+
/* @__PURE__ */ React9.createElement("div", null, /* @__PURE__ */ React9.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-400 pr-4" }, feature.desc))
|
|
642
637
|
)))));
|
|
643
638
|
};
|
|
644
639
|
|
|
645
640
|
// src/components/ManagedDocument.tsx
|
|
646
|
-
import React10, { useState as
|
|
641
|
+
import React10, { useState as useState6, useEffect as useEffect5, useRef as useRef5 } from "react";
|
|
647
642
|
var ManagedDocument = ({
|
|
648
643
|
tagline,
|
|
649
644
|
title,
|
|
@@ -651,9 +646,9 @@ var ManagedDocument = ({
|
|
|
651
646
|
contactText,
|
|
652
647
|
contactEmail
|
|
653
648
|
}) => {
|
|
654
|
-
const [isAnimating, setIsAnimating] =
|
|
649
|
+
const [isAnimating, setIsAnimating] = useState6(false);
|
|
655
650
|
const titleRef = useRef5(null);
|
|
656
|
-
|
|
651
|
+
useEffect5(() => {
|
|
657
652
|
const observer = new IntersectionObserver(
|
|
658
653
|
([entry]) => {
|
|
659
654
|
if (entry.isIntersecting) {
|
|
@@ -673,19 +668,19 @@ var ManagedDocument = ({
|
|
|
673
668
|
}, []);
|
|
674
669
|
return (
|
|
675
670
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
676
|
-
/* @__PURE__ */ React10.createElement("div", { className: "grow pt-28 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React10.createElement("div", { className: "relative bg-
|
|
671
|
+
/* @__PURE__ */ React10.createElement("div", { className: "grow pt-28 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React10.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React10.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React10.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React10.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React10.createElement(
|
|
677
672
|
"h1",
|
|
678
673
|
{
|
|
679
674
|
ref: titleRef,
|
|
680
|
-
className: `
|
|
675
|
+
className: `text-3xl mt-4 text-white tracking-tight text-left ${isAnimating ? "" : ""}`,
|
|
681
676
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
682
677
|
},
|
|
683
678
|
title
|
|
684
|
-
)), sections.map((section, index) => /* @__PURE__ */ React10.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ React10.createElement("p", { className: "
|
|
679
|
+
)), sections.map((section, index) => /* @__PURE__ */ React10.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ React10.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ React10.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-400 space-y-4 text-left font-light" }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ React10.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ React10.createElement("div", { className: `border-neutral-800 bg-neutral-950 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ React10.createElement("p", { className: "text-white text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ React10.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React10.createElement("p", { className: "text-[11px] text-neutral-500 text-left" }, contactText, contactEmail && /* @__PURE__ */ React10.createElement(
|
|
685
680
|
"a",
|
|
686
681
|
{
|
|
687
682
|
href: `mailto:${contactEmail}`,
|
|
688
|
-
className: "text-
|
|
683
|
+
className: "text-white decoration-neutral-600 decoration-1 underline-offset-4 ml-1 transition-colors hover:decoration-white"
|
|
689
684
|
},
|
|
690
685
|
contactEmail
|
|
691
686
|
))))))
|
|
@@ -693,11 +688,11 @@ var ManagedDocument = ({
|
|
|
693
688
|
};
|
|
694
689
|
|
|
695
690
|
// src/components/ManagedContactBlock.tsx
|
|
696
|
-
import React11, { useState as
|
|
691
|
+
import React11, { useState as useState7, useEffect as useEffect6 } from "react";
|
|
697
692
|
import { HugeiconsIcon as HugeiconsIcon6 } from "@hugeicons/react";
|
|
698
693
|
var SecureEmail = ({ user, domain, className }) => {
|
|
699
|
-
const [isMounted, setIsMounted] =
|
|
700
|
-
|
|
694
|
+
const [isMounted, setIsMounted] = useState7(false);
|
|
695
|
+
useEffect6(() => {
|
|
701
696
|
setIsMounted(true);
|
|
702
697
|
}, []);
|
|
703
698
|
if (!isMounted) {
|
|
@@ -713,7 +708,7 @@ var ManagedContactBlock = ({
|
|
|
713
708
|
emails,
|
|
714
709
|
socials
|
|
715
710
|
}) => {
|
|
716
|
-
return /* @__PURE__ */ React11.createElement("div", { className: "grow pt-28 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React11.createElement("div", { className: "relative bg-
|
|
711
|
+
return /* @__PURE__ */ React11.createElement("div", { className: "grow pt-28 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React11.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React11.createElement(
|
|
717
712
|
"div",
|
|
718
713
|
{
|
|
719
714
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -722,28 +717,28 @@ var ManagedContactBlock = ({
|
|
|
722
717
|
backgroundRepeat: "repeat"
|
|
723
718
|
}
|
|
724
719
|
}
|
|
725
|
-
), /* @__PURE__ */ React11.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React11.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ React11.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React11.createElement("h1", { className: "
|
|
720
|
+
), /* @__PURE__ */ React11.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React11.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ React11.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React11.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), /* @__PURE__ */ React11.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ React11.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ React11.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React11.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Contact Details"), /* @__PURE__ */ React11.createElement("div", { className: "space-y-3 text-[13px] text-neutral-400 leading-[1.8]" }, company.name && /* @__PURE__ */ React11.createElement("p", { className: "text-white" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ React11.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ React11.createElement("p", { className: "pt-2" }, /* @__PURE__ */ React11.createElement(
|
|
726
721
|
"a",
|
|
727
722
|
{
|
|
728
723
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
729
|
-
className: "transition-colors hover:text-
|
|
724
|
+
className: "transition-colors hover:text-white"
|
|
730
725
|
},
|
|
731
726
|
company.phone
|
|
732
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */ React11.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React11.createElement("p", { className: "text-[11px] tracking-[0.2em] text-
|
|
727
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ React11.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React11.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Email Directory"), /* @__PURE__ */ React11.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ React11.createElement("div", { key: idx }, /* @__PURE__ */ React11.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ React11.createElement(
|
|
733
728
|
SecureEmail,
|
|
734
729
|
{
|
|
735
730
|
user: email.user,
|
|
736
731
|
domain: email.domain,
|
|
737
|
-
className: "text-neutral-
|
|
732
|
+
className: "text-neutral-400 transition-colors hover:text-white"
|
|
738
733
|
}
|
|
739
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */ React11.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React11.createElement("p", { className: "text-[11px] tracking-[0.2em] text-
|
|
734
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ React11.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React11.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Find Us Online"), /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ React11.createElement(
|
|
740
735
|
"a",
|
|
741
736
|
{
|
|
742
737
|
key: idx,
|
|
743
738
|
href: social.href,
|
|
744
739
|
target: "_blank",
|
|
745
740
|
rel: "noopener noreferrer",
|
|
746
|
-
className: "flex items-center gap-3 transition-colors group text-neutral-
|
|
741
|
+
className: "flex items-center gap-3 transition-colors group text-neutral-400 hover:text-white",
|
|
747
742
|
"aria-label": social.label
|
|
748
743
|
},
|
|
749
744
|
/* @__PURE__ */ React11.createElement(HugeiconsIcon6, { icon: social.icon, size: 18 }),
|
|
@@ -752,21 +747,21 @@ var ManagedContactBlock = ({
|
|
|
752
747
|
};
|
|
753
748
|
|
|
754
749
|
// src/components/ManagedPricingBlock.tsx
|
|
755
|
-
import React12, { useState as
|
|
750
|
+
import React12, { useState as useState8, useEffect as useEffect7, useRef as useRef6 } from "react";
|
|
756
751
|
import Link5 from "next/link";
|
|
757
752
|
import Image4 from "next/image";
|
|
758
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ React12.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__ */ React12.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "
|
|
759
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ React12.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__ */ React12.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#
|
|
753
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ React12.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__ */ React12.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "white" }), /* @__PURE__ */ React12.createElement("path", { d: "M8 12L11 15L16 9", stroke: "black", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
754
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ React12.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__ */ React12.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#262626" }), /* @__PURE__ */ React12.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#737373", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
760
755
|
var ManagedPricingBlock = ({
|
|
761
756
|
tagline,
|
|
762
757
|
title,
|
|
763
758
|
plans = [],
|
|
764
759
|
tabs
|
|
765
760
|
}) => {
|
|
766
|
-
const [isAnimating, setIsAnimating] =
|
|
767
|
-
const [activeTabIndex, setActiveTabIndex] =
|
|
761
|
+
const [isAnimating, setIsAnimating] = useState8(false);
|
|
762
|
+
const [activeTabIndex, setActiveTabIndex] = useState8(0);
|
|
768
763
|
const titleRef = useRef6(null);
|
|
769
|
-
|
|
764
|
+
useEffect7(() => {
|
|
770
765
|
const observer = new IntersectionObserver(
|
|
771
766
|
([entry]) => {
|
|
772
767
|
if (entry.isIntersecting) {
|
|
@@ -786,22 +781,22 @@ var ManagedPricingBlock = ({
|
|
|
786
781
|
}, []);
|
|
787
782
|
const hasTabs = tabs && tabs.length > 0;
|
|
788
783
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
789
|
-
return /* @__PURE__ */ React12.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React12.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ React12.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ React12.createElement("span", { className: "text-[9px] tracking-[0.4em] text-
|
|
784
|
+
return /* @__PURE__ */ React12.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React12.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ React12.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ React12.createElement("span", { className: "text-[9px] tracking-[0.4em] text-neutral-500 block" }, tagline), /* @__PURE__ */ React12.createElement(
|
|
790
785
|
"h1",
|
|
791
786
|
{
|
|
792
787
|
ref: titleRef,
|
|
793
|
-
className: `text-2xl sm:text-3xl mt-3 text-
|
|
788
|
+
className: `text-2xl sm:text-3xl mt-3 text-white tracking-tight ${isAnimating ? "" : ""}`,
|
|
794
789
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
795
790
|
},
|
|
796
791
|
title
|
|
797
|
-
)), hasTabs && /* @__PURE__ */ React12.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ React12.createElement("div", { className: "flex items-center bg-
|
|
792
|
+
)), hasTabs && /* @__PURE__ */ React12.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ React12.createElement("div", { className: "flex items-center bg-neutral-900 rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, tabs.map((tab, idx) => {
|
|
798
793
|
const isActive = activeTabIndex === idx;
|
|
799
794
|
return /* @__PURE__ */ React12.createElement(
|
|
800
795
|
"button",
|
|
801
796
|
{
|
|
802
797
|
key: idx,
|
|
803
798
|
onClick: () => setActiveTabIndex(idx),
|
|
804
|
-
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-
|
|
799
|
+
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-800 text-white" : "text-neutral-500 hover:text-white hover:bg-neutral-800/50"}`
|
|
805
800
|
},
|
|
806
801
|
tab.label
|
|
807
802
|
);
|
|
@@ -809,9 +804,9 @@ var ManagedPricingBlock = ({
|
|
|
809
804
|
"div",
|
|
810
805
|
{
|
|
811
806
|
key: `${activeTabIndex}-${planIdx}`,
|
|
812
|
-
className: `bg-
|
|
807
|
+
className: `bg-neutral-900 rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "border-neutral-700" : ""}`
|
|
813
808
|
},
|
|
814
|
-
/* @__PURE__ */ React12.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React12.createElement("span", { className: "text-
|
|
809
|
+
/* @__PURE__ */ React12.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React12.createElement("span", { className: "text-white text-base block mb-1" }, plan.name), /* @__PURE__ */ React12.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ React12.createElement("h3", { className: "text-3xl font-light text-white" }, plan.price), plan.period && /* @__PURE__ */ React12.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ React12.createElement("p", { className: "text-xs text-neutral-400 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ React12.createElement("div", { className: "flex items-center gap-2 mt-4 opacity-90" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ React12.createElement(
|
|
815
810
|
"div",
|
|
816
811
|
{
|
|
817
812
|
key: logoIdx,
|
|
@@ -824,7 +819,7 @@ var ManagedPricingBlock = ({
|
|
|
824
819
|
alt: logo.alt,
|
|
825
820
|
width: 16,
|
|
826
821
|
height: 16,
|
|
827
|
-
className: "object-contain"
|
|
822
|
+
className: "object-contain filter invert"
|
|
828
823
|
}
|
|
829
824
|
)
|
|
830
825
|
)))),
|
|
@@ -832,14 +827,14 @@ var ManagedPricingBlock = ({
|
|
|
832
827
|
Link5,
|
|
833
828
|
{
|
|
834
829
|
href: plan.ctaHref,
|
|
835
|
-
className: "w-full py-2.5 px-5 rounded-full border border-neutral-
|
|
830
|
+
className: "w-full py-2.5 px-5 rounded-full font-semibold border border-neutral-700 text-center text-white text-xs hover:bg-neutral-800 hover:border-neutral-600 transition-colors mb-6 outline-none block"
|
|
836
831
|
},
|
|
837
832
|
plan.ctaText
|
|
838
833
|
),
|
|
839
834
|
/* @__PURE__ */ React12.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
840
835
|
const isAvailable = feature.value !== false;
|
|
841
836
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
842
|
-
return /* @__PURE__ */ React12.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5
|
|
837
|
+
return /* @__PURE__ */ React12.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ React12.createElement(CheckIcon, null) : /* @__PURE__ */ React12.createElement(CrossIcon, null), /* @__PURE__ */ React12.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-300" : "text-neutral-600"}` }, feature.name, valueText && /* @__PURE__ */ React12.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
843
838
|
}))
|
|
844
839
|
)))));
|
|
845
840
|
};
|
|
@@ -855,7 +850,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React13.
|
|
|
855
850
|
href,
|
|
856
851
|
target: "_blank",
|
|
857
852
|
rel: "noopener noreferrer",
|
|
858
|
-
className: "text-neutral-
|
|
853
|
+
className: "text-neutral-500 hover:text-white transition-colors",
|
|
859
854
|
"aria-label": `${name} on ${label}`
|
|
860
855
|
},
|
|
861
856
|
/* @__PURE__ */ React13.createElement(HugeiconsIcon7, { icon, size: 16 })
|
|
@@ -867,7 +862,7 @@ var ManagedBoardBlock = ({
|
|
|
867
862
|
contactText,
|
|
868
863
|
contactEmail
|
|
869
864
|
}) => {
|
|
870
|
-
return /* @__PURE__ */ React13.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React13.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ React13.createElement(
|
|
865
|
+
return /* @__PURE__ */ React13.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React13.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ React13.createElement(
|
|
871
866
|
"div",
|
|
872
867
|
{
|
|
873
868
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -876,7 +871,7 @@ var ManagedBoardBlock = ({
|
|
|
876
871
|
backgroundRepeat: "repeat"
|
|
877
872
|
}
|
|
878
873
|
}
|
|
879
|
-
), /* @__PURE__ */ React13.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React13.createElement("div", { className: "relative px-5 md:px-12 py-8 md: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: "
|
|
874
|
+
), /* @__PURE__ */ React13.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React13.createElement("div", { className: "relative px-5 md:px-12 py-8 md: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-white tracking-tight text-left" }, title)), /* @__PURE__ */ React13.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ React13.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__ */ React13.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-neutral-900 flex flex-col transition-all group" }, /* @__PURE__ */ React13.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ React13.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-neutral-800 overflow-hidden rounded-xl " }, /* @__PURE__ */ React13.createElement(
|
|
880
875
|
Image5,
|
|
881
876
|
{
|
|
882
877
|
src: member.imageSrc,
|
|
@@ -885,7 +880,7 @@ var ManagedBoardBlock = ({
|
|
|
885
880
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
886
881
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
887
882
|
}
|
|
888
|
-
)), /* @__PURE__ */ React13.createElement("div", { className: "pt-1" }, /* @__PURE__ */ React13.createElement("h3", { className: "
|
|
883
|
+
)), /* @__PURE__ */ React13.createElement("div", { className: "pt-1" }, /* @__PURE__ */ React13.createElement("h3", { className: "text-[14px] md:text-[15px] text-white tracking-tight" }, member.name), /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ React13.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 text-left grow mb-8" }, member.bio), /* @__PURE__ */ React13.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ React13.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React13.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ React13.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ React13.createElement(
|
|
889
884
|
MemberSocialLink,
|
|
890
885
|
{
|
|
891
886
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -901,24 +896,34 @@ var ManagedBoardBlock = ({
|
|
|
901
896
|
label: "LinkedIn",
|
|
902
897
|
name: member.name
|
|
903
898
|
}
|
|
904
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */ React13.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] text-neutral-
|
|
899
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ React13.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] text-neutral-500 text-left" }, contactText, contactEmail && /* @__PURE__ */ React13.createElement("a", { href: `mailto:${contactEmail}`, className: "text-white decoration-white decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
905
900
|
};
|
|
906
901
|
|
|
907
902
|
// src/components/ManagedNotFoundBlock.tsx
|
|
908
903
|
import React14 from "react";
|
|
904
|
+
import Link6 from "next/link";
|
|
909
905
|
var ManagedNotFoundBlock = ({
|
|
910
906
|
title = "404 - Page Not Found",
|
|
911
|
-
description = "The page you are looking for does not exist or has been moved."
|
|
907
|
+
description = "The page you are looking for does not exist or has been moved.",
|
|
908
|
+
backLinkText = "Go back to Homepage",
|
|
909
|
+
backLinkHref = "/"
|
|
912
910
|
}) => {
|
|
913
|
-
return /* @__PURE__ */ React14.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-
|
|
911
|
+
return /* @__PURE__ */ React14.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-black" }, /* @__PURE__ */ React14.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ React14.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ React14.createElement(
|
|
914
912
|
"svg",
|
|
915
913
|
{
|
|
916
914
|
xmlns: "http://www.w3.org/2000/svg",
|
|
917
915
|
viewBox: "0 0 24 24",
|
|
918
|
-
className: "w-12 h-12 fill-neutral-
|
|
916
|
+
className: "w-12 h-12 fill-neutral-700"
|
|
919
917
|
},
|
|
920
918
|
/* @__PURE__ */ React14.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" })
|
|
921
|
-
)), /* @__PURE__ */ React14.createElement("h1", { className: "
|
|
919
|
+
)), /* @__PURE__ */ React14.createElement("h1", { className: "text-xl md:text-3xl text-white tracking-tight mb-4" }, title), /* @__PURE__ */ React14.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 mb-12" }, description), /* @__PURE__ */ React14.createElement(
|
|
920
|
+
Link6,
|
|
921
|
+
{
|
|
922
|
+
href: backLinkHref,
|
|
923
|
+
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"
|
|
924
|
+
},
|
|
925
|
+
backLinkText
|
|
926
|
+
)));
|
|
922
927
|
};
|
|
923
928
|
|
|
924
929
|
// src/components/PageSpinner.tsx
|
|
@@ -937,7 +942,7 @@ var PageSpinner = ({
|
|
|
937
942
|
{
|
|
938
943
|
icon: Loading03Icon3,
|
|
939
944
|
size,
|
|
940
|
-
className: `animate-spin
|
|
945
|
+
className: `animate-spin mb-4 ${iconClassName}`
|
|
941
946
|
}
|
|
942
947
|
))
|
|
943
948
|
);
|
|
@@ -993,7 +998,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
993
998
|
ctaHref = "/contact-us",
|
|
994
999
|
children
|
|
995
1000
|
}) => {
|
|
996
|
-
return /* @__PURE__ */ React17.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0" }, /* @__PURE__ */ React17.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden" }, /* @__PURE__ */ React17.createElement(
|
|
1001
|
+
return /* @__PURE__ */ React17.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0 bg-black" }, /* @__PURE__ */ React17.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden bg-neutral-900" }, /* @__PURE__ */ React17.createElement(
|
|
997
1002
|
Image6,
|
|
998
1003
|
{
|
|
999
1004
|
src: imageSrc,
|
|
@@ -1008,7 +1013,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1008
1013
|
{
|
|
1009
1014
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
1010
1015
|
style: {
|
|
1011
|
-
background: "linear-gradient(to right, rgba(
|
|
1016
|
+
background: "linear-gradient(to right, rgba(0,0,0,0) 30%, #000000 100%)"
|
|
1012
1017
|
}
|
|
1013
1018
|
}
|
|
1014
1019
|
), /* @__PURE__ */ React17.createElement(
|
|
@@ -1016,7 +1021,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1016
1021
|
{
|
|
1017
1022
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
1018
1023
|
style: {
|
|
1019
|
-
background: "linear-gradient(to bottom, rgba(
|
|
1024
|
+
background: "linear-gradient(to bottom, rgba(0,0,0,0) 0%, #000000 100%)"
|
|
1020
1025
|
}
|
|
1021
1026
|
}
|
|
1022
1027
|
)), /* @__PURE__ */ React17.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__ */ React17.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__ */ React17.createElement(
|
|
@@ -1028,11 +1033,11 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1028
1033
|
backgroundRepeat: "repeat"
|
|
1029
1034
|
}
|
|
1030
1035
|
}
|
|
1031
|
-
), /* @__PURE__ */ React17.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React17.createElement("div", { className: "mb-10 border-b border-neutral-
|
|
1036
|
+
), /* @__PURE__ */ React17.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React17.createElement("div", { className: "mb-10 border-b border-neutral-800 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ React17.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500" }, tagline), /* @__PURE__ */ React17.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ React17.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500" }, subtitle)), /* @__PURE__ */ React17.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ React17.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ React17.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ React17.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React17.createElement("div", { className: "grow h-px bg-neutral-800" }), /* @__PURE__ */ React17.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-600" }, dividerText), /* @__PURE__ */ React17.createElement("div", { className: "grow h-px bg-neutral-800" })), ctaText && ctaHref && /* @__PURE__ */ React17.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React17.createElement(
|
|
1032
1037
|
ThreeDButton,
|
|
1033
1038
|
{
|
|
1034
1039
|
href: ctaHref,
|
|
1035
|
-
className: "py-
|
|
1040
|
+
className: "py-2.5 tracking-widest text-[11px]"
|
|
1036
1041
|
},
|
|
1037
1042
|
ctaText
|
|
1038
1043
|
)))))));
|
|
@@ -1050,7 +1055,7 @@ var TextInput = ({
|
|
|
1050
1055
|
readOnly,
|
|
1051
1056
|
type = "text",
|
|
1052
1057
|
onClick
|
|
1053
|
-
}) => /* @__PURE__ */ React18.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ React18.createElement("label", { className: "text-[11px] text-neutral-
|
|
1058
|
+
}) => /* @__PURE__ */ React18.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ React18.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ React18.createElement(
|
|
1054
1059
|
"input",
|
|
1055
1060
|
{
|
|
1056
1061
|
type,
|
|
@@ -1061,7 +1066,7 @@ var TextInput = ({
|
|
|
1061
1066
|
readOnly,
|
|
1062
1067
|
autoComplete: "off",
|
|
1063
1068
|
spellCheck: "false",
|
|
1064
|
-
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
1069
|
+
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-800 text-white transition-all outline-none focus:border-white disabled:opacity-50 ${readOnly ? "cursor-pointer" : ""}`
|
|
1065
1070
|
}
|
|
1066
1071
|
));
|
|
1067
1072
|
var NumberInput = ({
|
|
@@ -1071,7 +1076,7 @@ var NumberInput = ({
|
|
|
1071
1076
|
placeholder,
|
|
1072
1077
|
maxLength,
|
|
1073
1078
|
disabled
|
|
1074
|
-
}) => /* @__PURE__ */ React18.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ React18.createElement("label", { className: "text-[11px] text-neutral-
|
|
1079
|
+
}) => /* @__PURE__ */ React18.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ React18.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ React18.createElement(
|
|
1075
1080
|
"input",
|
|
1076
1081
|
{
|
|
1077
1082
|
type: "text",
|
|
@@ -1084,19 +1089,19 @@ var NumberInput = ({
|
|
|
1084
1089
|
disabled,
|
|
1085
1090
|
autoComplete: "off",
|
|
1086
1091
|
spellCheck: "false",
|
|
1087
|
-
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-
|
|
1092
|
+
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-800 text-white transition-all outline-none focus:border-white disabled:opacity-50"
|
|
1088
1093
|
}
|
|
1089
1094
|
));
|
|
1090
1095
|
|
|
1091
1096
|
// src/components/PortfolioHero.tsx
|
|
1092
|
-
import React19, { useEffect as
|
|
1093
|
-
import
|
|
1097
|
+
import React19, { useEffect as useEffect8, useRef as useRef7 } from "react";
|
|
1098
|
+
import Link7 from "next/link";
|
|
1094
1099
|
import Image7 from "next/image";
|
|
1095
1100
|
import { HugeiconsIcon as HugeiconsIcon9 } from "@hugeicons/react";
|
|
1096
1101
|
import { ArrowRight01Icon as ArrowRight01Icon2 } from "@hugeicons/core-free-icons";
|
|
1097
1102
|
var useScrollAnimation = () => {
|
|
1098
1103
|
const elementRef = useRef7(null);
|
|
1099
|
-
|
|
1104
|
+
useEffect8(() => {
|
|
1100
1105
|
const el = elementRef.current;
|
|
1101
1106
|
if (!el) return;
|
|
1102
1107
|
const observer = new IntersectionObserver(
|
|
@@ -1132,13 +1137,13 @@ var PortfolioHero = ({
|
|
|
1132
1137
|
secondaryCtaHref
|
|
1133
1138
|
}) => {
|
|
1134
1139
|
const heroContentRef = useScrollAnimation();
|
|
1135
|
-
return /* @__PURE__ */ React19.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__ */ React19.createElement(
|
|
1140
|
+
return /* @__PURE__ */ React19.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 bg-black" }, /* @__PURE__ */ React19.createElement(
|
|
1136
1141
|
"div",
|
|
1137
1142
|
{
|
|
1138
1143
|
ref: heroContentRef,
|
|
1139
1144
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
1140
1145
|
},
|
|
1141
|
-
/* @__PURE__ */ React19.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ React19.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden
|
|
1146
|
+
/* @__PURE__ */ React19.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ React19.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden shrink-0 shadow-sm" }, /* @__PURE__ */ React19.createElement(
|
|
1142
1147
|
Image7,
|
|
1143
1148
|
{
|
|
1144
1149
|
src: imageSrc,
|
|
@@ -1149,29 +1154,29 @@ var PortfolioHero = ({
|
|
|
1149
1154
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
1150
1155
|
quality: 100
|
|
1151
1156
|
}
|
|
1152
|
-
)), /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ React19.createElement("h1", { className: "
|
|
1157
|
+
)), /* @__PURE__ */ React19.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ React19.createElement("h1", { className: "text-3xl sm:text-5xl lg:text-6xl tracking-tight text-white leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ React19.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500" }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ React19.createElement(
|
|
1153
1158
|
"a",
|
|
1154
1159
|
{
|
|
1155
1160
|
href: socialLinkHref,
|
|
1156
1161
|
target: "_blank",
|
|
1157
1162
|
rel: "noopener noreferrer",
|
|
1158
|
-
className: "text-[11px] md:text-[14px] text-
|
|
1163
|
+
className: "text-[11px] md:text-[14px] text-neutral-300 hover:text-white transition-colors mt-1 underline underline-offset-4 decoration-neutral-700 hover:decoration-white"
|
|
1159
1164
|
},
|
|
1160
1165
|
socialLinkText
|
|
1161
1166
|
))),
|
|
1162
|
-
/* @__PURE__ */ React19.createElement("p", { className: "text-[13px]
|
|
1167
|
+
/* @__PURE__ */ React19.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-400" }, bio),
|
|
1163
1168
|
/* @__PURE__ */ React19.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ React19.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ React19.createElement(
|
|
1164
1169
|
ThreeDButton,
|
|
1165
1170
|
{
|
|
1166
1171
|
href: primaryCtaHref,
|
|
1167
|
-
className: "py-
|
|
1172
|
+
className: "py-2.5 tracking-widest text-[11px]"
|
|
1168
1173
|
},
|
|
1169
1174
|
primaryCtaText
|
|
1170
1175
|
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React19.createElement(
|
|
1171
|
-
|
|
1176
|
+
Link7,
|
|
1172
1177
|
{
|
|
1173
1178
|
href: secondaryCtaHref,
|
|
1174
|
-
className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-[11px] tracking-[0.2em]
|
|
1179
|
+
className: "w-full sm:w-auto inline-flex items-center justify-center gap-3 text-[11px] tracking-[0.2em] rounded-full px-8 py-2.5 border border-neutral-700 transition-colors text-white hover:bg-neutral-700 outline-none"
|
|
1175
1180
|
},
|
|
1176
1181
|
secondaryCtaText,
|
|
1177
1182
|
/* @__PURE__ */ React19.createElement(HugeiconsIcon9, { icon: ArrowRight01Icon2, size: 16 })
|
|
@@ -1180,7 +1185,7 @@ var PortfolioHero = ({
|
|
|
1180
1185
|
};
|
|
1181
1186
|
|
|
1182
1187
|
// src/components/GifFeatureCard.tsx
|
|
1183
|
-
import React20, { useState as
|
|
1188
|
+
import React20, { useState as useState9 } from "react";
|
|
1184
1189
|
import Image8 from "next/image";
|
|
1185
1190
|
import { HugeiconsIcon as HugeiconsIcon10 } from "@hugeicons/react";
|
|
1186
1191
|
import { Loading03Icon as Loading03Icon4 } from "@hugeicons/core-free-icons";
|
|
@@ -1191,8 +1196,8 @@ var GifFeatureCard = ({
|
|
|
1191
1196
|
alt = "Feature animation",
|
|
1192
1197
|
className = "aspect-video"
|
|
1193
1198
|
}) => {
|
|
1194
|
-
const [isLoading, setIsLoading] =
|
|
1195
|
-
return /* @__PURE__ */ React20.createElement("div", { className: `relative w-full bg-black
|
|
1199
|
+
const [isLoading, setIsLoading] = useState9(true);
|
|
1200
|
+
return /* @__PURE__ */ React20.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ React20.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ React20.createElement(
|
|
1196
1201
|
HugeiconsIcon10,
|
|
1197
1202
|
{
|
|
1198
1203
|
icon: Loading03Icon4,
|
|
@@ -1220,11 +1225,11 @@ var GifFeatureCard = ({
|
|
|
1220
1225
|
{
|
|
1221
1226
|
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"
|
|
1222
1227
|
}
|
|
1223
|
-
), /* @__PURE__ */ React20.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__ */ React20.createElement("h3", { className: "
|
|
1228
|
+
), /* @__PURE__ */ React20.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__ */ React20.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__ */ React20.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
1224
1229
|
};
|
|
1225
1230
|
|
|
1226
1231
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
1227
|
-
import React21, { useState as
|
|
1232
|
+
import React21, { useState as useState10, useEffect as useEffect9, useRef as useRef8 } from "react";
|
|
1228
1233
|
import Image9 from "next/image";
|
|
1229
1234
|
var MedicalFeatureStatsBlock = ({
|
|
1230
1235
|
bottomHeadline,
|
|
@@ -1233,9 +1238,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1233
1238
|
trustText,
|
|
1234
1239
|
stats
|
|
1235
1240
|
}) => {
|
|
1236
|
-
const [isAnimating, setIsAnimating] =
|
|
1241
|
+
const [isAnimating, setIsAnimating] = useState10(false);
|
|
1237
1242
|
const titleRef = useRef8(null);
|
|
1238
|
-
|
|
1243
|
+
useEffect9(() => {
|
|
1239
1244
|
const observer = new IntersectionObserver(
|
|
1240
1245
|
([entry]) => {
|
|
1241
1246
|
if (entry.isIntersecting) {
|
|
@@ -1253,15 +1258,15 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1253
1258
|
}
|
|
1254
1259
|
return () => observer.disconnect();
|
|
1255
1260
|
}, []);
|
|
1256
|
-
return /* @__PURE__ */ React21.createElement("section", { className: "py-24 w-full flex justify-center relative z-10" }, /* @__PURE__ */ React21.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ React21.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ React21.createElement(
|
|
1261
|
+
return /* @__PURE__ */ React21.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 bg-black" }, /* @__PURE__ */ React21.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React21.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ React21.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ React21.createElement(
|
|
1257
1262
|
"h2",
|
|
1258
1263
|
{
|
|
1259
1264
|
ref: titleRef,
|
|
1260
|
-
className: `text-3xl text-
|
|
1265
|
+
className: `text-3xl text-white tracking-tight leading-[1.1] mb-5 ${isAnimating ? "" : ""}`,
|
|
1261
1266
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
1262
1267
|
},
|
|
1263
1268
|
bottomHeadline
|
|
1264
|
-
), /* @__PURE__ */ React21.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-
|
|
1269
|
+
), /* @__PURE__ */ React21.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-400" }, bottomDescription)), /* @__PURE__ */ React21.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ React21.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ React21.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-black overflow-hidden bg-neutral-900 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ React21.createElement(
|
|
1265
1270
|
Image9,
|
|
1266
1271
|
{
|
|
1267
1272
|
src,
|
|
@@ -1270,17 +1275,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1270
1275
|
sizes: "48px",
|
|
1271
1276
|
className: "object-cover"
|
|
1272
1277
|
}
|
|
1273
|
-
)))), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] text-neutral-
|
|
1278
|
+
)))), /* @__PURE__ */ React21.createElement("p", { className: "text-[11px] text-neutral-400 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ React21.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ React21.createElement("div", { key: idx, className: "bg-neutral-900 rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ React21.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ React21.createElement("span", { className: "text-[14px] text-neutral-400 tracking-wide" }, stat.label)), /* @__PURE__ */ React21.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-white mt-auto leading-none" }, stat.value))))));
|
|
1274
1279
|
};
|
|
1275
1280
|
|
|
1276
1281
|
// src/components/ConsultantShowcase.tsx
|
|
1277
|
-
import React22, { useState as
|
|
1282
|
+
import React22, { useState as useState11 } from "react";
|
|
1278
1283
|
import Image10 from "next/image";
|
|
1279
1284
|
import { HugeiconsIcon as HugeiconsIcon11 } from "@hugeicons/react";
|
|
1280
1285
|
import { Loading03Icon as Loading03Icon5 } from "@hugeicons/core-free-icons";
|
|
1281
1286
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
1282
|
-
const [isLoading, setIsLoading] =
|
|
1283
|
-
return /* @__PURE__ */ React22.createElement("div", { className: `absolute inset-0 bg-neutral-
|
|
1287
|
+
const [isLoading, setIsLoading] = useState11(true);
|
|
1288
|
+
return /* @__PURE__ */ React22.createElement("div", { className: `absolute inset-0 bg-neutral-900 ${className}` }, isLoading && /* @__PURE__ */ React22.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-neutral-900/50 backdrop-blur-md transition-opacity duration-300" }, /* @__PURE__ */ React22.createElement(HugeiconsIcon11, { icon: Loading03Icon5, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React22.createElement(
|
|
1284
1289
|
Image10,
|
|
1285
1290
|
{
|
|
1286
1291
|
src,
|
|
@@ -1299,9 +1304,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
1299
1304
|
var ConsultantShowcase = ({
|
|
1300
1305
|
profiles
|
|
1301
1306
|
}) => {
|
|
1302
|
-
const [currentIndex, setCurrentIndex] =
|
|
1303
|
-
const [touchStart, setTouchStart] =
|
|
1304
|
-
const [touchEnd, setTouchEnd] =
|
|
1307
|
+
const [currentIndex, setCurrentIndex] = useState11(0);
|
|
1308
|
+
const [touchStart, setTouchStart] = useState11(null);
|
|
1309
|
+
const [touchEnd, setTouchEnd] = useState11(null);
|
|
1305
1310
|
const nextSlide = () => {
|
|
1306
1311
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
1307
1312
|
};
|
|
@@ -1326,10 +1331,10 @@ var ConsultantShowcase = ({
|
|
|
1326
1331
|
}
|
|
1327
1332
|
};
|
|
1328
1333
|
if (!profiles || profiles.length === 0) return null;
|
|
1329
|
-
return /* @__PURE__ */ React22.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative" }, /* @__PURE__ */ React22.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React22.createElement(
|
|
1334
|
+
return /* @__PURE__ */ React22.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative bg-black" }, /* @__PURE__ */ React22.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React22.createElement(
|
|
1330
1335
|
"div",
|
|
1331
1336
|
{
|
|
1332
|
-
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900
|
|
1337
|
+
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
1333
1338
|
onTouchStart,
|
|
1334
1339
|
onTouchMove,
|
|
1335
1340
|
onTouchEnd
|
|
@@ -1350,9 +1355,9 @@ var ConsultantShowcase = ({
|
|
|
1350
1355
|
priority: idx === 0
|
|
1351
1356
|
}
|
|
1352
1357
|
),
|
|
1353
|
-
/* @__PURE__ */ React22.createElement("div", { className: "absolute inset-0 bg-black/
|
|
1354
|
-
/* @__PURE__ */ React22.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/
|
|
1355
|
-
/* @__PURE__ */ React22.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__ */ React22.createElement("h2", { className: "text-[29px]
|
|
1358
|
+
/* @__PURE__ */ React22.createElement("div", { className: "absolute inset-0 bg-black/40 z-10 pointer-events-none" }),
|
|
1359
|
+
/* @__PURE__ */ React22.createElement("div", { className: "absolute top-0 left-0 w-full h-[60%] bg-linear-to-b from-black/80 via-black/40 to-transparent z-20 pointer-events-none" }),
|
|
1360
|
+
/* @__PURE__ */ React22.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__ */ React22.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React22.createElement("p", { className: "text-[15px] text-neutral-300 font-light tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ React22.createElement("p", { className: "text-[15px] text-neutral-400 font-light tracking-wide mt-1" }, profile.description)))
|
|
1356
1361
|
);
|
|
1357
1362
|
}),
|
|
1358
1363
|
/* @__PURE__ */ React22.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" }),
|
|
@@ -1370,7 +1375,7 @@ var ConsultantShowcase = ({
|
|
|
1370
1375
|
};
|
|
1371
1376
|
|
|
1372
1377
|
// src/components/ContentGridBlock.tsx
|
|
1373
|
-
import React23, { useState as
|
|
1378
|
+
import React23, { useState as useState12 } from "react";
|
|
1374
1379
|
import Image11 from "next/image";
|
|
1375
1380
|
import { HugeiconsIcon as HugeiconsIcon12 } from "@hugeicons/react";
|
|
1376
1381
|
import { Loading03Icon as Loading03Icon6 } from "@hugeicons/core-free-icons";
|
|
@@ -1381,12 +1386,12 @@ var ContentGridBlock = ({
|
|
|
1381
1386
|
middleBottomCard,
|
|
1382
1387
|
rightCards
|
|
1383
1388
|
}) => {
|
|
1384
|
-
return /* @__PURE__ */ React23.createElement("section", { className: "
|
|
1389
|
+
return /* @__PURE__ */ React23.createElement("section", { className: "w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React23.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ React23.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-neutral-900 rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React23.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ React23.createElement("span", { className: "mb-auto text-[11px] text-neutral-400 tracking-widest" }, leftCard.tag), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ React23.createElement("p", { className: "text-[13px] text-neutral-400" }, leftCard.subtitle)), /* @__PURE__ */ React23.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React23.createElement(Image11, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React23.createElement("div", { className: "border border-neutral-800 rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ React23.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ React23.createElement("span", { className: "text-[11px] text-neutral-500 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ React23.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-black overflow-hidden relative z-10" }, /* @__PURE__ */ React23.createElement(Image11, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ React23.createElement("span", { className: "text-sm text-neutral-400" }, middleTopCard.topRightCount))), /* @__PURE__ */ React23.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ React23.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-900/50 border border-neutral-800 text-[13px] text-neutral-400" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ React23.createElement("span", { className: "text-white" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ React23.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React23.createElement("p", { className: "text-[11px] text-neutral-500 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ React23.createElement("p", { className: "text-[14px] text-white leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ React23.createElement("div", { className: "border border-neutral-800 rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React23.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h4", { className: "text-[15px] text-white leading-tight" }, middleBottomCard.title), /* @__PURE__ */ React23.createElement("p", { className: "text-[13px] text-neutral-500" }, middleBottomCard.subtitle)), /* @__PURE__ */ React23.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React23.createElement(Image11, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ React23.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React23.createElement("p", { className: "text-[16px] text-white leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ React23.createElement("span", { className: "text-[11px] text-neutral-500 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ React23.createElement("div", { key: idx, className: "relative w-full h-80 bg-neutral-900 text-white rounded-3xl overflow-hidden group" }, /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ React23.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ React23.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ React23.createElement("div", { className: "pt-3" }, /* @__PURE__ */ React23.createElement("h4", { className: "text-[15px] tracking-wide" }, card.title), /* @__PURE__ */ React23.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
|
|
1385
1390
|
};
|
|
1386
1391
|
|
|
1387
1392
|
// src/components/ManagedProjectsBlock.tsx
|
|
1388
1393
|
import React24 from "react";
|
|
1389
|
-
import
|
|
1394
|
+
import Link8 from "next/link";
|
|
1390
1395
|
var GridSection = ({
|
|
1391
1396
|
children,
|
|
1392
1397
|
isLast = false,
|
|
@@ -1397,7 +1402,7 @@ var ManagedProjectsBlock = ({
|
|
|
1397
1402
|
title,
|
|
1398
1403
|
projects
|
|
1399
1404
|
}) => {
|
|
1400
|
-
return /* @__PURE__ */ React24.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative" }, /* @__PURE__ */ React24.createElement("div", { className: "relative bg-
|
|
1405
|
+
return /* @__PURE__ */ React24.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React24.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-5xl mx-auto overflow-hidden shadow-2xl" }, /* @__PURE__ */ React24.createElement(
|
|
1401
1406
|
"div",
|
|
1402
1407
|
{
|
|
1403
1408
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1406,10 +1411,10 @@ var ManagedProjectsBlock = ({
|
|
|
1406
1411
|
backgroundRepeat: "repeat"
|
|
1407
1412
|
}
|
|
1408
1413
|
}
|
|
1409
|
-
), /* @__PURE__ */ React24.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React24.createElement(GridSection, null, tagline && /* @__PURE__ */ React24.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block
|
|
1414
|
+
), /* @__PURE__ */ React24.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React24.createElement(GridSection, null, tagline && /* @__PURE__ */ React24.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block" }, tagline), /* @__PURE__ */ React24.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
1410
1415
|
const isLast = index === projects.length - 1;
|
|
1411
|
-
const projectContent = /* @__PURE__ */ React24.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ React24.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__ */ React24.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ React24.createElement("h2", { className: "
|
|
1412
|
-
return /* @__PURE__ */ React24.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__ */ React24.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ React24.createElement(
|
|
1416
|
+
const projectContent = /* @__PURE__ */ React24.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ React24.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__ */ React24.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ React24.createElement("h2", { className: "text-[16px] text-white transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ React24.createElement("span", { className: "text-[11px] text-neutral-500 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 group-hover:text-white transition-all duration-300" }, project.isExternal ? "\u2197" : "\u2192")), /* @__PURE__ */ React24.createElement("span", { className: `text-[9px] px-2.5 py-1 rounded-full tracking-[0.15em] transition-colors ${project.status.toLowerCase() === "production" ? "bg-white text-black" : "bg-neutral-800 text-neutral-400 group-hover:bg-neutral-700 group-hover:text-white"}` }, project.status)), /* @__PURE__ */ React24.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0" }, project.date)), /* @__PURE__ */ React24.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 max-w-4xl text-left transition-colors group-hover:text-neutral-300" }, project.description));
|
|
1417
|
+
return /* @__PURE__ */ React24.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__ */ React24.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ React24.createElement(Link8, { href: project.link, className: "block outline-none" }, projectContent));
|
|
1413
1418
|
}))));
|
|
1414
1419
|
};
|
|
1415
1420
|
export {
|