@retinalabsllc/zairusjs 8.1.50 → 8.1.59
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 +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +337 -225
- package/dist/index.mjs +306 -195
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -55,7 +55,8 @@ __export(index_exports, {
|
|
|
55
55
|
PortfolioHero: () => PortfolioHero,
|
|
56
56
|
TextInput: () => TextInput,
|
|
57
57
|
ThreeDActionButton: () => ThreeDActionButton,
|
|
58
|
-
ThreeDButton: () => ThreeDButton
|
|
58
|
+
ThreeDButton: () => ThreeDButton,
|
|
59
|
+
WaitlistDialog: () => WaitlistDialog
|
|
59
60
|
});
|
|
60
61
|
module.exports = __toCommonJS(index_exports);
|
|
61
62
|
|
|
@@ -167,7 +168,7 @@ var ThreeDButton = ({
|
|
|
167
168
|
{
|
|
168
169
|
href,
|
|
169
170
|
onClick,
|
|
170
|
-
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-
|
|
171
|
+
className: `relative inline-flex items-center justify-center py-2.5 px-8 rounded-full text-neutral-900 text-xs font-medium transition-all duration-150 select-none group overflow-hidden ${className}`,
|
|
171
172
|
style: {
|
|
172
173
|
backgroundImage: silverBg,
|
|
173
174
|
backgroundSize: "cover",
|
|
@@ -224,7 +225,7 @@ var ThreeDActionButton = ({
|
|
|
224
225
|
"aria-label": ariaLabel,
|
|
225
226
|
className: `
|
|
226
227
|
relative inline-flex items-center justify-center py-2.5 px-8 rounded-full
|
|
227
|
-
text-neutral-900 text-xs font-
|
|
228
|
+
text-neutral-900 text-xs font-medium tracking-widest
|
|
228
229
|
transition-all duration-150 select-none group outline-none overflow-hidden
|
|
229
230
|
${isInteractionDisabled ? "opacity-70 cursor-not-allowed" : "active:translate-y-0.5"}
|
|
230
231
|
${className}
|
|
@@ -367,9 +368,152 @@ var Footer = ({
|
|
|
367
368
|
};
|
|
368
369
|
|
|
369
370
|
// src/components/HeroSection.tsx
|
|
370
|
-
var
|
|
371
|
+
var import_react10 = __toESM(require("react"));
|
|
371
372
|
var import_link4 = __toESM(require("next/link"));
|
|
372
373
|
var import_image2 = __toESM(require("next/image"));
|
|
374
|
+
|
|
375
|
+
// src/components/WaitlistDialog.tsx
|
|
376
|
+
var import_react9 = __toESM(require("react"));
|
|
377
|
+
var import_react_hot_toast = require("react-hot-toast");
|
|
378
|
+
|
|
379
|
+
// src/components/ReusableInputs.tsx
|
|
380
|
+
var import_react8 = __toESM(require("react"));
|
|
381
|
+
var TextInput = ({
|
|
382
|
+
label,
|
|
383
|
+
value,
|
|
384
|
+
onChange,
|
|
385
|
+
placeholder,
|
|
386
|
+
maxLength,
|
|
387
|
+
disabled,
|
|
388
|
+
readOnly,
|
|
389
|
+
type = "text",
|
|
390
|
+
onClick
|
|
391
|
+
}) => /* @__PURE__ */ import_react8.default.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ import_react8.default.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ import_react8.default.createElement(
|
|
392
|
+
"input",
|
|
393
|
+
{
|
|
394
|
+
type,
|
|
395
|
+
value,
|
|
396
|
+
onChange: (e) => onChange(e.target.value.substring(0, maxLength || 100)),
|
|
397
|
+
placeholder,
|
|
398
|
+
disabled,
|
|
399
|
+
readOnly,
|
|
400
|
+
autoComplete: "off",
|
|
401
|
+
spellCheck: "false",
|
|
402
|
+
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" : ""}`
|
|
403
|
+
}
|
|
404
|
+
));
|
|
405
|
+
var NumberInput = ({
|
|
406
|
+
label,
|
|
407
|
+
value,
|
|
408
|
+
onChange,
|
|
409
|
+
placeholder,
|
|
410
|
+
maxLength,
|
|
411
|
+
disabled
|
|
412
|
+
}) => /* @__PURE__ */ import_react8.default.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ import_react8.default.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ import_react8.default.createElement(
|
|
413
|
+
"input",
|
|
414
|
+
{
|
|
415
|
+
type: "text",
|
|
416
|
+
value,
|
|
417
|
+
onChange: (e) => {
|
|
418
|
+
const numOnly = e.target.value.replace(/[^0-9]/g, "");
|
|
419
|
+
onChange(numOnly.substring(0, maxLength || 20));
|
|
420
|
+
},
|
|
421
|
+
placeholder,
|
|
422
|
+
disabled,
|
|
423
|
+
autoComplete: "off",
|
|
424
|
+
spellCheck: "false",
|
|
425
|
+
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"
|
|
426
|
+
}
|
|
427
|
+
));
|
|
428
|
+
|
|
429
|
+
// src/components/WaitlistDialog.tsx
|
|
430
|
+
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
431
|
+
const [email, setEmail] = (0, import_react9.useState)("");
|
|
432
|
+
const [isLoading, setIsLoading] = (0, import_react9.useState)(false);
|
|
433
|
+
if (!isOpen) return null;
|
|
434
|
+
const handleSubmit = async (e) => {
|
|
435
|
+
e.preventDefault();
|
|
436
|
+
if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
437
|
+
import_react_hot_toast.toast.error("Please enter a valid email address.");
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
setIsLoading(true);
|
|
441
|
+
try {
|
|
442
|
+
const response = await fetch("/api/waitlist", {
|
|
443
|
+
method: "POST",
|
|
444
|
+
headers: {
|
|
445
|
+
"Content-Type": "application/json"
|
|
446
|
+
},
|
|
447
|
+
body: JSON.stringify({ email })
|
|
448
|
+
});
|
|
449
|
+
const data = await response.json();
|
|
450
|
+
if (response.ok && data.success) {
|
|
451
|
+
import_react_hot_toast.toast.success(data.message || "You've been added to the waitlist!");
|
|
452
|
+
setEmail("");
|
|
453
|
+
onClose();
|
|
454
|
+
} else {
|
|
455
|
+
import_react_hot_toast.toast.error(data.error || "Something went wrong. Please try again.");
|
|
456
|
+
}
|
|
457
|
+
} catch (error) {
|
|
458
|
+
import_react_hot_toast.toast.error("Network error. Please check your connection.");
|
|
459
|
+
} finally {
|
|
460
|
+
setIsLoading(false);
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
return /* @__PURE__ */ import_react9.default.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/60 " }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ import_react9.default.createElement(
|
|
464
|
+
"div",
|
|
465
|
+
{
|
|
466
|
+
className: "w-full max-w-md bg-[#0a0a0a] rounded-2xl shadow-2xl overflow-hidden relative z-10 animate-in fade-in zoom-in-95 duration-200"
|
|
467
|
+
},
|
|
468
|
+
/* @__PURE__ */ import_react9.default.createElement(
|
|
469
|
+
"button",
|
|
470
|
+
{
|
|
471
|
+
onClick: onClose,
|
|
472
|
+
disabled: isLoading,
|
|
473
|
+
className: "absolute top-4 right-4 p-2 text-neutral-500 hover:text-white transition-colors disabled:opacity-50 outline-none",
|
|
474
|
+
"aria-label": "Close dialog"
|
|
475
|
+
},
|
|
476
|
+
/* @__PURE__ */ import_react9.default.createElement(
|
|
477
|
+
"svg",
|
|
478
|
+
{
|
|
479
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
480
|
+
width: "20",
|
|
481
|
+
height: "20",
|
|
482
|
+
viewBox: "0 0 24 24",
|
|
483
|
+
fill: "none",
|
|
484
|
+
stroke: "currentColor",
|
|
485
|
+
strokeWidth: "2",
|
|
486
|
+
strokeLinecap: "round",
|
|
487
|
+
strokeLinejoin: "round"
|
|
488
|
+
},
|
|
489
|
+
/* @__PURE__ */ import_react9.default.createElement("path", { d: "M18 6 6 18" }),
|
|
490
|
+
/* @__PURE__ */ import_react9.default.createElement("path", { d: "m6 6 12 12" })
|
|
491
|
+
)
|
|
492
|
+
),
|
|
493
|
+
/* @__PURE__ */ import_react9.default.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ import_react9.default.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ import_react9.default.createElement("h2", { className: "text-2xl font-light text-white tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ import_react9.default.createElement("p", { className: "text-[13px] text-neutral-400 font-light leading-relaxed" }, "Be the first to experience the future of natural language computing. Secure your early access spot today.")), /* @__PURE__ */ import_react9.default.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ import_react9.default.createElement(
|
|
494
|
+
TextInput,
|
|
495
|
+
{
|
|
496
|
+
label: "EMAIL ADDRESS",
|
|
497
|
+
type: "email",
|
|
498
|
+
value: email,
|
|
499
|
+
onChange: setEmail,
|
|
500
|
+
placeholder: "name@example.com",
|
|
501
|
+
disabled: isLoading
|
|
502
|
+
}
|
|
503
|
+
), /* @__PURE__ */ import_react9.default.createElement(
|
|
504
|
+
ThreeDActionButton,
|
|
505
|
+
{
|
|
506
|
+
type: "submit",
|
|
507
|
+
isLoading,
|
|
508
|
+
disabled: !email,
|
|
509
|
+
className: "w-full mt-2"
|
|
510
|
+
},
|
|
511
|
+
"Join Waitlist"
|
|
512
|
+
)))
|
|
513
|
+
));
|
|
514
|
+
};
|
|
515
|
+
|
|
516
|
+
// src/components/HeroSection.tsx
|
|
373
517
|
var HeroSection = ({
|
|
374
518
|
badgeText,
|
|
375
519
|
titlePrefix,
|
|
@@ -386,11 +530,13 @@ var HeroSection = ({
|
|
|
386
530
|
showImage = false,
|
|
387
531
|
imageSrc = "/assets/ai.avif",
|
|
388
532
|
bgVideoSrc,
|
|
389
|
-
bgImageSrc
|
|
533
|
+
bgImageSrc,
|
|
534
|
+
isWaitlist = false
|
|
390
535
|
}) => {
|
|
391
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
392
|
-
const
|
|
393
|
-
(0,
|
|
536
|
+
const [isAnimating, setIsAnimating] = (0, import_react10.useState)(false);
|
|
537
|
+
const [isWaitlistOpen, setIsWaitlistOpen] = (0, import_react10.useState)(false);
|
|
538
|
+
const titleRef = (0, import_react10.useRef)(null);
|
|
539
|
+
(0, import_react10.useEffect)(() => {
|
|
394
540
|
const observer = new IntersectionObserver(
|
|
395
541
|
([entry]) => {
|
|
396
542
|
if (entry.isIntersecting) {
|
|
@@ -408,7 +554,7 @@ var HeroSection = ({
|
|
|
408
554
|
}
|
|
409
555
|
return () => observer.disconnect();
|
|
410
556
|
}, []);
|
|
411
|
-
return /* @__PURE__ */
|
|
557
|
+
return /* @__PURE__ */ import_react10.default.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__ */ import_react10.default.createElement("div", { className: "absolute inset-0 w-full h-full z-0 overflow-hidden" }, bgVideoSrc ? /* @__PURE__ */ import_react10.default.createElement(
|
|
412
558
|
"video",
|
|
413
559
|
{
|
|
414
560
|
src: bgVideoSrc,
|
|
@@ -419,7 +565,7 @@ var HeroSection = ({
|
|
|
419
565
|
playsInline: true,
|
|
420
566
|
className: "absolute inset-0 w-full h-full object-cover z-0"
|
|
421
567
|
}
|
|
422
|
-
) : bgImageSrc ? /* @__PURE__ */
|
|
568
|
+
) : bgImageSrc ? /* @__PURE__ */ import_react10.default.createElement(
|
|
423
569
|
import_image2.default,
|
|
424
570
|
{
|
|
425
571
|
src: bgImageSrc,
|
|
@@ -428,7 +574,7 @@ var HeroSection = ({
|
|
|
428
574
|
priority: true,
|
|
429
575
|
className: "object-cover z-0"
|
|
430
576
|
}
|
|
431
|
-
) : null, /* @__PURE__ */
|
|
577
|
+
) : null, /* @__PURE__ */ import_react10.default.createElement(
|
|
432
578
|
"div",
|
|
433
579
|
{
|
|
434
580
|
className: "absolute inset-0 z-10 opacity-30 mix-blend-overlay pointer-events-none",
|
|
@@ -438,7 +584,7 @@ var HeroSection = ({
|
|
|
438
584
|
backgroundPosition: "center"
|
|
439
585
|
}
|
|
440
586
|
}
|
|
441
|
-
), /* @__PURE__ */
|
|
587
|
+
), /* @__PURE__ */ import_react10.default.createElement("div", { className: "absolute inset-0 bg-black/20 z-10" }), /* @__PURE__ */ import_react10.default.createElement(
|
|
442
588
|
"div",
|
|
443
589
|
{
|
|
444
590
|
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-10",
|
|
@@ -447,7 +593,7 @@ var HeroSection = ({
|
|
|
447
593
|
backgroundSize: "32px 32px"
|
|
448
594
|
}
|
|
449
595
|
}
|
|
450
|
-
), /* @__PURE__ */
|
|
596
|
+
), /* @__PURE__ */ import_react10.default.createElement(
|
|
451
597
|
"div",
|
|
452
598
|
{
|
|
453
599
|
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-[0.10] mix-blend-overlay",
|
|
@@ -455,24 +601,33 @@ var HeroSection = ({
|
|
|
455
601
|
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")`
|
|
456
602
|
}
|
|
457
603
|
}
|
|
458
|
-
), /* @__PURE__ */
|
|
604
|
+
), /* @__PURE__ */ import_react10.default.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__ */ import_react10.default.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__ */ import_react10.default.createElement(
|
|
459
605
|
"h1",
|
|
460
606
|
{
|
|
461
607
|
ref: titleRef,
|
|
462
608
|
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)]`,
|
|
463
609
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
464
610
|
},
|
|
465
|
-
titlePrefix,
|
|
466
|
-
" ",
|
|
467
|
-
|
|
468
|
-
|
|
611
|
+
/* @__PURE__ */ import_react10.default.createElement("span", { className: "block" }, titlePrefix),
|
|
612
|
+
/* @__PURE__ */ import_react10.default.createElement("span", { className: "block mt-2 font-medium gradient-text" }, highlightText)
|
|
613
|
+
), subtitle && /* @__PURE__ */ import_react10.default.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__ */ import_react10.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 justify-center items-center w-full px-2 sm:px-0 mx-auto mb-16" }, ctaText && (ctaHref || isWaitlist) && /* @__PURE__ */ import_react10.default.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ import_react10.default.createElement(
|
|
614
|
+
ThreeDButton,
|
|
615
|
+
{
|
|
616
|
+
href: isWaitlist ? "#" : ctaHref || "#",
|
|
617
|
+
onClick: isWaitlist ? (e) => {
|
|
618
|
+
e.preventDefault();
|
|
619
|
+
setIsWaitlistOpen(true);
|
|
620
|
+
} : void 0
|
|
621
|
+
},
|
|
622
|
+
ctaText
|
|
623
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react10.default.createElement(
|
|
469
624
|
import_link4.default,
|
|
470
625
|
{
|
|
471
626
|
href: secondaryCtaHref,
|
|
472
|
-
className: "w-full sm:w-60 inline-flex font-
|
|
627
|
+
className: "w-full sm:w-60 inline-flex font-medium items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3 bg-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"
|
|
473
628
|
},
|
|
474
629
|
secondaryCtaText
|
|
475
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */
|
|
630
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ import_react10.default.createElement("div", { className: "w-full flex flex-col items-center mt-4" }, appsText && /* @__PURE__ */ import_react10.default.createElement("p", { className: "text-[9px] tracking-[0.2em] text-neutral-300 mb-5 " }, appsText), /* @__PURE__ */ import_react10.default.createElement("div", { className: "flex flex-wrap justify-center items-center gap-6 opacity-90" }, appLogos.map((logo, idx) => /* @__PURE__ */ import_react10.default.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__ */ import_react10.default.createElement(
|
|
476
631
|
import_image2.default,
|
|
477
632
|
{
|
|
478
633
|
src: logo.src,
|
|
@@ -481,16 +636,22 @@ var HeroSection = ({
|
|
|
481
636
|
height: 50,
|
|
482
637
|
className: "object-contain h-full w-auto"
|
|
483
638
|
}
|
|
484
|
-
))))))
|
|
639
|
+
)))))), /* @__PURE__ */ import_react10.default.createElement(
|
|
640
|
+
WaitlistDialog,
|
|
641
|
+
{
|
|
642
|
+
isOpen: isWaitlistOpen,
|
|
643
|
+
onClose: () => setIsWaitlistOpen(false)
|
|
644
|
+
}
|
|
645
|
+
));
|
|
485
646
|
};
|
|
486
647
|
|
|
487
648
|
// src/components/AppBento2.tsx
|
|
488
|
-
var
|
|
489
|
-
var
|
|
649
|
+
var import_react11 = __toESM(require("react"));
|
|
650
|
+
var import_react12 = require("@hugeicons/react");
|
|
490
651
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
491
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
492
|
-
const titleRef = (0,
|
|
493
|
-
(0,
|
|
652
|
+
const [isAnimating, setIsAnimating] = (0, import_react11.useState)(false);
|
|
653
|
+
const titleRef = (0, import_react11.useRef)(null);
|
|
654
|
+
(0, import_react11.useEffect)(() => {
|
|
494
655
|
const observer = new IntersectionObserver(
|
|
495
656
|
([entry]) => {
|
|
496
657
|
if (entry.isIntersecting) {
|
|
@@ -508,7 +669,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
508
669
|
}
|
|
509
670
|
return () => observer.disconnect();
|
|
510
671
|
}, []);
|
|
511
|
-
return /* @__PURE__ */
|
|
672
|
+
return /* @__PURE__ */ import_react11.default.createElement("div", { className: "w-full py-16 bg-black" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react11.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ import_react11.default.createElement(
|
|
512
673
|
"h2",
|
|
513
674
|
{
|
|
514
675
|
ref: titleRef,
|
|
@@ -516,7 +677,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
516
677
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
517
678
|
},
|
|
518
679
|
headline
|
|
519
|
-
))), /* @__PURE__ */
|
|
680
|
+
))), /* @__PURE__ */ import_react11.default.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
520
681
|
const isPrimary = i === 0;
|
|
521
682
|
const isHighlight = i === 1;
|
|
522
683
|
const isSecondary = i === 2;
|
|
@@ -538,36 +699,36 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
538
699
|
const textColor = "text-white";
|
|
539
700
|
const subTextColor = "text-neutral-400";
|
|
540
701
|
const labelColor = "text-neutral-500";
|
|
541
|
-
return /* @__PURE__ */
|
|
702
|
+
return /* @__PURE__ */ import_react11.default.createElement(
|
|
542
703
|
"div",
|
|
543
704
|
{
|
|
544
705
|
key: i,
|
|
545
706
|
className: `relative rounded-2xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`,
|
|
546
707
|
style: { boxShadow: getShadowStyle() }
|
|
547
708
|
},
|
|
548
|
-
/* @__PURE__ */
|
|
709
|
+
/* @__PURE__ */ import_react11.default.createElement(
|
|
549
710
|
"div",
|
|
550
711
|
{
|
|
551
712
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
552
713
|
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")` }
|
|
553
714
|
}
|
|
554
715
|
),
|
|
555
|
-
isHighlight && /* @__PURE__ */
|
|
556
|
-
/* @__PURE__ */
|
|
557
|
-
/* @__PURE__ */
|
|
716
|
+
isHighlight && /* @__PURE__ */ import_react11.default.createElement("span", { className: "absolute inset-0 rounded-2xl bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none z-10" }),
|
|
717
|
+
/* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ import_react11.default.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__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: f.icon, size: 180 }))),
|
|
718
|
+
/* @__PURE__ */ import_react11.default.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ import_react11.default.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ import_react11.default.createElement("div", { className: `p-2 rounded-full transition-colors bg-white/10` }, /* @__PURE__ */ import_react11.default.createElement(import_react12.HugeiconsIcon, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ import_react11.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react11.default.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ import_react11.default.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
558
719
|
);
|
|
559
720
|
})))));
|
|
560
721
|
};
|
|
561
722
|
|
|
562
723
|
// src/components/FeatureScroll.tsx
|
|
563
|
-
var
|
|
724
|
+
var import_react13 = __toESM(require("react"));
|
|
564
725
|
var import_image3 = __toESM(require("next/image"));
|
|
565
|
-
var
|
|
726
|
+
var import_react14 = require("@hugeicons/react");
|
|
566
727
|
var import_core_free_icons2 = require("@hugeicons/core-free-icons");
|
|
567
728
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
568
|
-
const [isBgLoading, setIsBgLoading] = (0,
|
|
569
|
-
const [isFgLoading, setIsFgLoading] = (0,
|
|
570
|
-
return /* @__PURE__ */
|
|
729
|
+
const [isBgLoading, setIsBgLoading] = (0, import_react13.useState)(true);
|
|
730
|
+
const [isFgLoading, setIsFgLoading] = (0, import_react13.useState)(!!feature.image);
|
|
731
|
+
return /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-900 rounded-2xl overflow-hidden mb-6 flex items-center justify-center " }, /* @__PURE__ */ import_react13.default.createElement(
|
|
571
732
|
import_image3.default,
|
|
572
733
|
{
|
|
573
734
|
src: bgImage,
|
|
@@ -580,7 +741,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
580
741
|
${isBgLoading ? "blur-xl scale-110" : "blur-0 scale-100"}
|
|
581
742
|
`
|
|
582
743
|
}
|
|
583
|
-
), /* @__PURE__ */
|
|
744
|
+
), /* @__PURE__ */ import_react13.default.createElement(
|
|
584
745
|
"div",
|
|
585
746
|
{
|
|
586
747
|
className: "absolute inset-0 w-full h-full pointer-events-none z-0 opacity-[0.25] mix-blend-overlay",
|
|
@@ -588,7 +749,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
588
749
|
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")`
|
|
589
750
|
}
|
|
590
751
|
}
|
|
591
|
-
), isFgLoading && feature.image && /* @__PURE__ */
|
|
752
|
+
), isFgLoading && feature.image && /* @__PURE__ */ import_react13.default.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__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons2.Loading03Icon, size: 32, className: "animate-spin text-neutral-500" })), feature.image && /* @__PURE__ */ import_react13.default.createElement("div", { className: "absolute -bottom-6 -right-6 w-[85%] h-[85%] z-10 transition-transform duration-700 ease-out group-hover:-translate-x-2 group-hover:-translate-y-2" }, /* @__PURE__ */ import_react13.default.createElement(
|
|
592
753
|
import_image3.default,
|
|
593
754
|
{
|
|
594
755
|
src: feature.image,
|
|
@@ -601,12 +762,12 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
601
762
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
602
763
|
`
|
|
603
764
|
}
|
|
604
|
-
))), /* @__PURE__ */
|
|
765
|
+
))), /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ import_react13.default.createElement("h3", { className: "text-xl tracking-tight text-white mb-2" }, feature.title), /* @__PURE__ */ import_react13.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-400 max-w-[90%]" }, feature.desc)));
|
|
605
766
|
};
|
|
606
767
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
607
|
-
const scrollRef = (0,
|
|
608
|
-
const [canScrollLeft, setCanScrollLeft] = (0,
|
|
609
|
-
const [canScrollRight, setCanScrollRight] = (0,
|
|
768
|
+
const scrollRef = (0, import_react13.useRef)(null);
|
|
769
|
+
const [canScrollLeft, setCanScrollLeft] = (0, import_react13.useState)(false);
|
|
770
|
+
const [canScrollRight, setCanScrollRight] = (0, import_react13.useState)(true);
|
|
610
771
|
const checkScroll = () => {
|
|
611
772
|
if (scrollRef.current) {
|
|
612
773
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -614,7 +775,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
614
775
|
setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 2);
|
|
615
776
|
}
|
|
616
777
|
};
|
|
617
|
-
(0,
|
|
778
|
+
(0, import_react13.useEffect)(() => {
|
|
618
779
|
checkScroll();
|
|
619
780
|
window.addEventListener("resize", checkScroll);
|
|
620
781
|
return () => window.removeEventListener("resize", checkScroll);
|
|
@@ -630,7 +791,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
630
791
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
631
792
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
632
793
|
];
|
|
633
|
-
return /* @__PURE__ */
|
|
794
|
+
return /* @__PURE__ */ import_react13.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden bg-black" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react13.default.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.05]" }, headline)), /* @__PURE__ */ import_react13.default.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ import_react13.default.createElement(
|
|
634
795
|
"button",
|
|
635
796
|
{
|
|
636
797
|
onClick: () => scroll("left"),
|
|
@@ -638,8 +799,8 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
638
799
|
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",
|
|
639
800
|
"aria-label": "Previous feature"
|
|
640
801
|
},
|
|
641
|
-
/* @__PURE__ */
|
|
642
|
-
), /* @__PURE__ */
|
|
802
|
+
/* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons2.ArrowLeft01Icon, size: 20 })
|
|
803
|
+
), /* @__PURE__ */ import_react13.default.createElement(
|
|
643
804
|
"button",
|
|
644
805
|
{
|
|
645
806
|
onClick: () => scroll("right"),
|
|
@@ -647,57 +808,57 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
647
808
|
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",
|
|
648
809
|
"aria-label": "Next feature"
|
|
649
810
|
},
|
|
650
|
-
/* @__PURE__ */
|
|
651
|
-
))), /* @__PURE__ */
|
|
811
|
+
/* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons2.ArrowRight01Icon, size: 20 })
|
|
812
|
+
))), /* @__PURE__ */ import_react13.default.createElement(
|
|
652
813
|
"div",
|
|
653
814
|
{
|
|
654
815
|
ref: scrollRef,
|
|
655
816
|
onScroll: checkScroll,
|
|
656
817
|
className: "flex gap-6 overflow-x-auto snap-x snap-mandatory [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] scrollbar-none pb-8 -mx-4 px-4 md:mx-0 md:px-0"
|
|
657
818
|
},
|
|
658
|
-
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */
|
|
659
|
-
), /* @__PURE__ */
|
|
819
|
+
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ import_react13.default.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
|
|
820
|
+
), /* @__PURE__ */ import_react13.default.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ import_react13.default.createElement(
|
|
660
821
|
"button",
|
|
661
822
|
{
|
|
662
823
|
onClick: () => scroll("left"),
|
|
663
824
|
disabled: !canScrollLeft,
|
|
664
825
|
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"
|
|
665
826
|
},
|
|
666
|
-
/* @__PURE__ */
|
|
667
|
-
), /* @__PURE__ */
|
|
827
|
+
/* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons2.ArrowLeft01Icon, size: 20 })
|
|
828
|
+
), /* @__PURE__ */ import_react13.default.createElement(
|
|
668
829
|
"button",
|
|
669
830
|
{
|
|
670
831
|
onClick: () => scroll("right"),
|
|
671
832
|
disabled: !canScrollRight,
|
|
672
833
|
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"
|
|
673
834
|
},
|
|
674
|
-
/* @__PURE__ */
|
|
835
|
+
/* @__PURE__ */ import_react13.default.createElement(import_react14.HugeiconsIcon, { icon: import_core_free_icons2.ArrowRight01Icon, size: 20 })
|
|
675
836
|
))));
|
|
676
837
|
};
|
|
677
838
|
|
|
678
839
|
// src/components/PlatformFeatures.tsx
|
|
679
|
-
var
|
|
680
|
-
var
|
|
840
|
+
var import_react15 = __toESM(require("react"));
|
|
841
|
+
var import_react16 = require("@hugeicons/react");
|
|
681
842
|
var PlatformFeatures = ({
|
|
682
843
|
tagline,
|
|
683
844
|
headline,
|
|
684
845
|
description,
|
|
685
846
|
features
|
|
686
847
|
}) => {
|
|
687
|
-
return /* @__PURE__ */
|
|
848
|
+
return /* @__PURE__ */ import_react15.default.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10 bg-black" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ import_react15.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ import_react15.default.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.05] mb-6" }, headline), /* @__PURE__ */ import_react15.default.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-400 max-w-2xl" }, description)), /* @__PURE__ */ import_react15.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-12" }, features.map((feature, idx) => /* @__PURE__ */ import_react15.default.createElement(
|
|
688
849
|
"div",
|
|
689
850
|
{
|
|
690
851
|
key: idx,
|
|
691
852
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
692
853
|
style: { animationDelay: feature.delay || "0ms" }
|
|
693
854
|
},
|
|
694
|
-
/* @__PURE__ */
|
|
695
|
-
/* @__PURE__ */
|
|
855
|
+
/* @__PURE__ */ import_react15.default.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ import_react15.default.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__ */ import_react15.default.createElement(import_react16.HugeiconsIcon, { icon: feature.icon, size: 24 })), /* @__PURE__ */ import_react15.default.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ import_react15.default.createElement("span", { className: "text-[11px] tracking-widest text-neutral-500 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ import_react15.default.createElement("h3", { className: "text-xl tracking-tight text-white" }, feature.title))),
|
|
856
|
+
/* @__PURE__ */ import_react15.default.createElement("div", null, /* @__PURE__ */ import_react15.default.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-400 pr-4" }, feature.desc))
|
|
696
857
|
)))));
|
|
697
858
|
};
|
|
698
859
|
|
|
699
860
|
// src/components/ManagedDocument.tsx
|
|
700
|
-
var
|
|
861
|
+
var import_react17 = __toESM(require("react"));
|
|
701
862
|
var ManagedDocument = ({
|
|
702
863
|
tagline,
|
|
703
864
|
title,
|
|
@@ -705,9 +866,9 @@ var ManagedDocument = ({
|
|
|
705
866
|
contactText,
|
|
706
867
|
contactEmail
|
|
707
868
|
}) => {
|
|
708
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
709
|
-
const titleRef = (0,
|
|
710
|
-
(0,
|
|
869
|
+
const [isAnimating, setIsAnimating] = (0, import_react17.useState)(false);
|
|
870
|
+
const titleRef = (0, import_react17.useRef)(null);
|
|
871
|
+
(0, import_react17.useEffect)(() => {
|
|
711
872
|
const observer = new IntersectionObserver(
|
|
712
873
|
([entry]) => {
|
|
713
874
|
if (entry.isIntersecting) {
|
|
@@ -727,7 +888,7 @@ var ManagedDocument = ({
|
|
|
727
888
|
}, []);
|
|
728
889
|
return (
|
|
729
890
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
730
|
-
/* @__PURE__ */
|
|
891
|
+
/* @__PURE__ */ import_react17.default.createElement("div", { className: "grow pt-28 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react17.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react17.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react17.default.createElement(
|
|
731
892
|
"h1",
|
|
732
893
|
{
|
|
733
894
|
ref: titleRef,
|
|
@@ -735,7 +896,7 @@ var ManagedDocument = ({
|
|
|
735
896
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
736
897
|
},
|
|
737
898
|
title
|
|
738
|
-
)), sections.map((section, index) => /* @__PURE__ */
|
|
899
|
+
)), sections.map((section, index) => /* @__PURE__ */ import_react17.default.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ import_react17.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ import_react17.default.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-400 space-y-4 text-left font-light" }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ import_react17.default.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ import_react17.default.createElement("div", { className: `border-neutral-800 bg-neutral-950 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ import_react17.default.createElement("p", { className: "text-white text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ import_react17.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react17.default.createElement("p", { className: "text-[11px] text-neutral-500 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react17.default.createElement(
|
|
739
900
|
"a",
|
|
740
901
|
{
|
|
741
902
|
href: `mailto:${contactEmail}`,
|
|
@@ -747,18 +908,18 @@ var ManagedDocument = ({
|
|
|
747
908
|
};
|
|
748
909
|
|
|
749
910
|
// src/components/ManagedContactBlock.tsx
|
|
750
|
-
var
|
|
751
|
-
var
|
|
911
|
+
var import_react18 = __toESM(require("react"));
|
|
912
|
+
var import_react19 = require("@hugeicons/react");
|
|
752
913
|
var SecureEmail = ({ user, domain, className }) => {
|
|
753
|
-
const [isMounted, setIsMounted] = (0,
|
|
754
|
-
(0,
|
|
914
|
+
const [isMounted, setIsMounted] = (0, import_react18.useState)(false);
|
|
915
|
+
(0, import_react18.useEffect)(() => {
|
|
755
916
|
setIsMounted(true);
|
|
756
917
|
}, []);
|
|
757
918
|
if (!isMounted) {
|
|
758
|
-
return /* @__PURE__ */
|
|
919
|
+
return /* @__PURE__ */ import_react18.default.createElement("span", { className, style: { opacity: 0 } }, "Loading");
|
|
759
920
|
}
|
|
760
921
|
const email = `${user}@${domain}`;
|
|
761
|
-
return /* @__PURE__ */
|
|
922
|
+
return /* @__PURE__ */ import_react18.default.createElement("a", { href: `mailto:${email}`, className }, email);
|
|
762
923
|
};
|
|
763
924
|
var ManagedContactBlock = ({
|
|
764
925
|
tagline,
|
|
@@ -767,7 +928,7 @@ var ManagedContactBlock = ({
|
|
|
767
928
|
emails,
|
|
768
929
|
socials
|
|
769
930
|
}) => {
|
|
770
|
-
return /* @__PURE__ */
|
|
931
|
+
return /* @__PURE__ */ import_react18.default.createElement("div", { className: "grow pt-28 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ import_react18.default.createElement(
|
|
771
932
|
"div",
|
|
772
933
|
{
|
|
773
934
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -776,21 +937,21 @@ var ManagedContactBlock = ({
|
|
|
776
937
|
backgroundRepeat: "repeat"
|
|
777
938
|
}
|
|
778
939
|
}
|
|
779
|
-
), /* @__PURE__ */
|
|
940
|
+
), /* @__PURE__ */ import_react18.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ import_react18.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react18.default.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), /* @__PURE__ */ import_react18.default.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ import_react18.default.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ import_react18.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react18.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Contact Details"), /* @__PURE__ */ import_react18.default.createElement("div", { className: "space-y-3 text-[13px] text-neutral-400 leading-[1.8]" }, company.name && /* @__PURE__ */ import_react18.default.createElement("p", { className: "text-white" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ import_react18.default.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ import_react18.default.createElement("p", { className: "pt-2" }, /* @__PURE__ */ import_react18.default.createElement(
|
|
780
941
|
"a",
|
|
781
942
|
{
|
|
782
943
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
783
944
|
className: "transition-colors hover:text-white"
|
|
784
945
|
},
|
|
785
946
|
company.phone
|
|
786
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */
|
|
947
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ import_react18.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react18.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Email Directory"), /* @__PURE__ */ import_react18.default.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ import_react18.default.createElement("div", { key: idx }, /* @__PURE__ */ import_react18.default.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ import_react18.default.createElement(
|
|
787
948
|
SecureEmail,
|
|
788
949
|
{
|
|
789
950
|
user: email.user,
|
|
790
951
|
domain: email.domain,
|
|
791
952
|
className: "text-neutral-400 transition-colors hover:text-white"
|
|
792
953
|
}
|
|
793
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */
|
|
954
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ import_react18.default.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ import_react18.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Find Us Online"), /* @__PURE__ */ import_react18.default.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ import_react18.default.createElement(
|
|
794
955
|
"a",
|
|
795
956
|
{
|
|
796
957
|
key: idx,
|
|
@@ -800,27 +961,27 @@ var ManagedContactBlock = ({
|
|
|
800
961
|
className: "flex items-center gap-3 transition-colors group text-neutral-400 hover:text-white",
|
|
801
962
|
"aria-label": social.label
|
|
802
963
|
},
|
|
803
|
-
/* @__PURE__ */
|
|
804
|
-
/* @__PURE__ */
|
|
964
|
+
/* @__PURE__ */ import_react18.default.createElement(import_react19.HugeiconsIcon, { icon: social.icon, size: 18 }),
|
|
965
|
+
/* @__PURE__ */ import_react18.default.createElement("span", { className: "text-[13px]" }, social.label)
|
|
805
966
|
)))))))));
|
|
806
967
|
};
|
|
807
968
|
|
|
808
969
|
// src/components/ManagedPricingBlock.tsx
|
|
809
|
-
var
|
|
970
|
+
var import_react20 = __toESM(require("react"));
|
|
810
971
|
var import_link5 = __toESM(require("next/link"));
|
|
811
972
|
var import_image4 = __toESM(require("next/image"));
|
|
812
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */
|
|
813
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */
|
|
973
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ import_react20.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "white" }), /* @__PURE__ */ import_react20.default.createElement("path", { d: "M8 12L11 15L16 9", stroke: "black", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
974
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ import_react20.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#262626" }), /* @__PURE__ */ import_react20.default.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#737373", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
814
975
|
var ManagedPricingBlock = ({
|
|
815
976
|
tagline,
|
|
816
977
|
title,
|
|
817
978
|
plans = [],
|
|
818
979
|
tabs
|
|
819
980
|
}) => {
|
|
820
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
821
|
-
const [activeTabIndex, setActiveTabIndex] = (0,
|
|
822
|
-
const titleRef = (0,
|
|
823
|
-
(0,
|
|
981
|
+
const [isAnimating, setIsAnimating] = (0, import_react20.useState)(false);
|
|
982
|
+
const [activeTabIndex, setActiveTabIndex] = (0, import_react20.useState)(0);
|
|
983
|
+
const titleRef = (0, import_react20.useRef)(null);
|
|
984
|
+
(0, import_react20.useEffect)(() => {
|
|
824
985
|
const observer = new IntersectionObserver(
|
|
825
986
|
([entry]) => {
|
|
826
987
|
if (entry.isIntersecting) {
|
|
@@ -840,7 +1001,7 @@ var ManagedPricingBlock = ({
|
|
|
840
1001
|
}, []);
|
|
841
1002
|
const hasTabs = tabs && tabs.length > 0;
|
|
842
1003
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
843
|
-
return /* @__PURE__ */
|
|
1004
|
+
return /* @__PURE__ */ import_react20.default.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ import_react20.default.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-[9px] tracking-[0.4em] text-neutral-500 block" }, tagline), /* @__PURE__ */ import_react20.default.createElement(
|
|
844
1005
|
"h1",
|
|
845
1006
|
{
|
|
846
1007
|
ref: titleRef,
|
|
@@ -848,9 +1009,9 @@ var ManagedPricingBlock = ({
|
|
|
848
1009
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
849
1010
|
},
|
|
850
1011
|
title
|
|
851
|
-
)), hasTabs && /* @__PURE__ */
|
|
1012
|
+
)), hasTabs && /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ import_react20.default.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) => {
|
|
852
1013
|
const isActive = activeTabIndex === idx;
|
|
853
|
-
return /* @__PURE__ */
|
|
1014
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
854
1015
|
"button",
|
|
855
1016
|
{
|
|
856
1017
|
key: idx,
|
|
@@ -859,19 +1020,19 @@ var ManagedPricingBlock = ({
|
|
|
859
1020
|
},
|
|
860
1021
|
tab.label
|
|
861
1022
|
);
|
|
862
|
-
}))), /* @__PURE__ */
|
|
1023
|
+
}))), /* @__PURE__ */ import_react20.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 w-full max-w-3xl animate-in slide-in-from-bottom-2 fade-in duration-500" }, currentPlans.map((plan, planIdx) => /* @__PURE__ */ import_react20.default.createElement(
|
|
863
1024
|
"div",
|
|
864
1025
|
{
|
|
865
1026
|
key: `${activeTabIndex}-${planIdx}`,
|
|
866
1027
|
className: `bg-neutral-900 rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "border-neutral-700" : ""}`
|
|
867
1028
|
},
|
|
868
|
-
/* @__PURE__ */
|
|
1029
|
+
/* @__PURE__ */ import_react20.default.createElement("div", { className: "mb-6" }, /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-white text-base block mb-1" }, plan.name), /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ import_react20.default.createElement("h3", { className: "text-3xl font-light text-white" }, plan.price), plan.period && /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ import_react20.default.createElement("p", { className: "text-xs text-neutral-400 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ import_react20.default.createElement("div", { className: "flex items-center gap-2 mt-4 opacity-90" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ import_react20.default.createElement(
|
|
869
1030
|
"div",
|
|
870
1031
|
{
|
|
871
1032
|
key: logoIdx,
|
|
872
1033
|
className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
|
|
873
1034
|
},
|
|
874
|
-
/* @__PURE__ */
|
|
1035
|
+
/* @__PURE__ */ import_react20.default.createElement(
|
|
875
1036
|
import_image4.default,
|
|
876
1037
|
{
|
|
877
1038
|
src: logo.src,
|
|
@@ -882,28 +1043,28 @@ var ManagedPricingBlock = ({
|
|
|
882
1043
|
}
|
|
883
1044
|
)
|
|
884
1045
|
)))),
|
|
885
|
-
plan.isPremium ? /* @__PURE__ */
|
|
1046
|
+
plan.isPremium ? /* @__PURE__ */ import_react20.default.createElement(ThreeDButton, { href: plan.ctaHref, className: "mb-6 w-full" }, plan.ctaText) : /* @__PURE__ */ import_react20.default.createElement(
|
|
886
1047
|
import_link5.default,
|
|
887
1048
|
{
|
|
888
1049
|
href: plan.ctaHref,
|
|
889
|
-
className: "w-full py-2.5 px-5 rounded-full font-
|
|
1050
|
+
className: "w-full py-2.5 px-5 rounded-full font-medium 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"
|
|
890
1051
|
},
|
|
891
1052
|
plan.ctaText
|
|
892
1053
|
),
|
|
893
|
-
/* @__PURE__ */
|
|
1054
|
+
/* @__PURE__ */ import_react20.default.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
894
1055
|
const isAvailable = feature.value !== false;
|
|
895
1056
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
896
|
-
return /* @__PURE__ */
|
|
1057
|
+
return /* @__PURE__ */ import_react20.default.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ import_react20.default.createElement(CheckIcon, null) : /* @__PURE__ */ import_react20.default.createElement(CrossIcon, null), /* @__PURE__ */ import_react20.default.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-300" : "text-neutral-600"}` }, feature.name, valueText && /* @__PURE__ */ import_react20.default.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
897
1058
|
}))
|
|
898
1059
|
)))));
|
|
899
1060
|
};
|
|
900
1061
|
|
|
901
1062
|
// src/components/ManagedBoardBlock.tsx
|
|
902
|
-
var
|
|
1063
|
+
var import_react21 = __toESM(require("react"));
|
|
903
1064
|
var import_image5 = __toESM(require("next/image"));
|
|
904
|
-
var
|
|
1065
|
+
var import_react22 = require("@hugeicons/react");
|
|
905
1066
|
var import_core_free_icons3 = require("@hugeicons/core-free-icons");
|
|
906
|
-
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */
|
|
1067
|
+
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_react21.default.createElement(
|
|
907
1068
|
"a",
|
|
908
1069
|
{
|
|
909
1070
|
href,
|
|
@@ -912,7 +1073,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ import_r
|
|
|
912
1073
|
className: "text-neutral-500 hover:text-white transition-colors",
|
|
913
1074
|
"aria-label": `${name} on ${label}`
|
|
914
1075
|
},
|
|
915
|
-
/* @__PURE__ */
|
|
1076
|
+
/* @__PURE__ */ import_react21.default.createElement(import_react22.HugeiconsIcon, { icon, size: 16 })
|
|
916
1077
|
);
|
|
917
1078
|
var ManagedBoardBlock = ({
|
|
918
1079
|
tagline,
|
|
@@ -921,7 +1082,7 @@ var ManagedBoardBlock = ({
|
|
|
921
1082
|
contactText,
|
|
922
1083
|
contactEmail
|
|
923
1084
|
}) => {
|
|
924
|
-
return /* @__PURE__ */
|
|
1085
|
+
return /* @__PURE__ */ import_react21.default.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ import_react21.default.createElement(
|
|
925
1086
|
"div",
|
|
926
1087
|
{
|
|
927
1088
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -930,7 +1091,7 @@ var ManagedBoardBlock = ({
|
|
|
930
1091
|
backgroundRepeat: "repeat"
|
|
931
1092
|
}
|
|
932
1093
|
}
|
|
933
|
-
), /* @__PURE__ */
|
|
1094
|
+
), /* @__PURE__ */ import_react21.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ import_react21.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ import_react21.default.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), /* @__PURE__ */ import_react21.default.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5 md:gap-8" }, members.map((member, idx) => /* @__PURE__ */ import_react21.default.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-neutral-900 flex flex-col transition-all group" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-neutral-800 overflow-hidden rounded-xl " }, /* @__PURE__ */ import_react21.default.createElement(
|
|
934
1095
|
import_image5.default,
|
|
935
1096
|
{
|
|
936
1097
|
src: member.imageSrc,
|
|
@@ -939,7 +1100,7 @@ var ManagedBoardBlock = ({
|
|
|
939
1100
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
940
1101
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
941
1102
|
}
|
|
942
|
-
)), /* @__PURE__ */
|
|
1103
|
+
)), /* @__PURE__ */ import_react21.default.createElement("div", { className: "pt-1" }, /* @__PURE__ */ import_react21.default.createElement("h3", { className: "text-[14px] md:text-[15px] text-white tracking-tight" }, member.name), /* @__PURE__ */ import_react21.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ import_react21.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 text-left grow mb-8" }, member.bio), /* @__PURE__ */ import_react21.default.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ import_react21.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react21.default.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ import_react21.default.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ import_react21.default.createElement(
|
|
943
1104
|
MemberSocialLink,
|
|
944
1105
|
{
|
|
945
1106
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -947,7 +1108,7 @@ var ManagedBoardBlock = ({
|
|
|
947
1108
|
label: "X",
|
|
948
1109
|
name: member.name
|
|
949
1110
|
}
|
|
950
|
-
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */
|
|
1111
|
+
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */ import_react21.default.createElement(
|
|
951
1112
|
MemberSocialLink,
|
|
952
1113
|
{
|
|
953
1114
|
href: member.linkedinHandle,
|
|
@@ -955,11 +1116,11 @@ var ManagedBoardBlock = ({
|
|
|
955
1116
|
label: "LinkedIn",
|
|
956
1117
|
name: member.name
|
|
957
1118
|
}
|
|
958
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */
|
|
1119
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ import_react21.default.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ import_react21.default.createElement("p", { className: "text-[11px] text-neutral-500 text-left" }, contactText, contactEmail && /* @__PURE__ */ import_react21.default.createElement("a", { href: `mailto:${contactEmail}`, className: "text-white decoration-white decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
959
1120
|
};
|
|
960
1121
|
|
|
961
1122
|
// src/components/ManagedNotFoundBlock.tsx
|
|
962
|
-
var
|
|
1123
|
+
var import_react23 = __toESM(require("react"));
|
|
963
1124
|
var import_link6 = __toESM(require("next/link"));
|
|
964
1125
|
var ManagedNotFoundBlock = ({
|
|
965
1126
|
title = "404 - Page Not Found",
|
|
@@ -967,15 +1128,15 @@ var ManagedNotFoundBlock = ({
|
|
|
967
1128
|
backLinkText = "Go back to Homepage",
|
|
968
1129
|
backLinkHref = "/"
|
|
969
1130
|
}) => {
|
|
970
|
-
return /* @__PURE__ */
|
|
1131
|
+
return /* @__PURE__ */ import_react23.default.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-black" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ import_react23.default.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
971
1132
|
"svg",
|
|
972
1133
|
{
|
|
973
1134
|
xmlns: "http://www.w3.org/2000/svg",
|
|
974
1135
|
viewBox: "0 0 24 24",
|
|
975
1136
|
className: "w-12 h-12 fill-neutral-700"
|
|
976
1137
|
},
|
|
977
|
-
/* @__PURE__ */
|
|
978
|
-
)), /* @__PURE__ */
|
|
1138
|
+
/* @__PURE__ */ import_react23.default.createElement("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" })
|
|
1139
|
+
)), /* @__PURE__ */ import_react23.default.createElement("h1", { className: "text-xl md:text-3xl text-white tracking-tight mb-4" }, title), /* @__PURE__ */ import_react23.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 mb-12" }, description), /* @__PURE__ */ import_react23.default.createElement(
|
|
979
1140
|
import_link6.default,
|
|
980
1141
|
{
|
|
981
1142
|
href: backLinkHref,
|
|
@@ -986,8 +1147,8 @@ var ManagedNotFoundBlock = ({
|
|
|
986
1147
|
};
|
|
987
1148
|
|
|
988
1149
|
// src/components/PageSpinner.tsx
|
|
989
|
-
var
|
|
990
|
-
var
|
|
1150
|
+
var import_react24 = __toESM(require("react"));
|
|
1151
|
+
var import_react25 = require("@hugeicons/react");
|
|
991
1152
|
var import_core_free_icons4 = require("@hugeicons/core-free-icons");
|
|
992
1153
|
var PageSpinner = ({
|
|
993
1154
|
className = "",
|
|
@@ -996,8 +1157,8 @@ var PageSpinner = ({
|
|
|
996
1157
|
}) => {
|
|
997
1158
|
return (
|
|
998
1159
|
// z-[100] ensures it sits above absolute headers and modals
|
|
999
|
-
/* @__PURE__ */
|
|
1000
|
-
|
|
1160
|
+
/* @__PURE__ */ import_react24.default.createElement("div", { className: `fixed inset-0 z-100 flex flex-col items-center justify-center w-full h-full pointer-events-none ${className}` }, /* @__PURE__ */ import_react24.default.createElement(
|
|
1161
|
+
import_react25.HugeiconsIcon,
|
|
1001
1162
|
{
|
|
1002
1163
|
icon: import_core_free_icons4.Loading03Icon,
|
|
1003
1164
|
size,
|
|
@@ -1008,11 +1169,11 @@ var PageSpinner = ({
|
|
|
1008
1169
|
};
|
|
1009
1170
|
|
|
1010
1171
|
// src/components/ManagedToaster.tsx
|
|
1011
|
-
var
|
|
1012
|
-
var
|
|
1172
|
+
var import_react26 = __toESM(require("react"));
|
|
1173
|
+
var import_react_hot_toast2 = require("react-hot-toast");
|
|
1013
1174
|
var ManagedToaster = () => {
|
|
1014
|
-
return /* @__PURE__ */
|
|
1015
|
-
|
|
1175
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
1176
|
+
import_react_hot_toast2.Toaster,
|
|
1016
1177
|
{
|
|
1017
1178
|
position: "top-right",
|
|
1018
1179
|
toastOptions: {
|
|
@@ -1043,7 +1204,7 @@ var ManagedToaster = () => {
|
|
|
1043
1204
|
};
|
|
1044
1205
|
|
|
1045
1206
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
1046
|
-
var
|
|
1207
|
+
var import_react27 = __toESM(require("react"));
|
|
1047
1208
|
var import_image6 = __toESM(require("next/image"));
|
|
1048
1209
|
var ManagedNewsletterSplitBlock = ({
|
|
1049
1210
|
tagline,
|
|
@@ -1057,7 +1218,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1057
1218
|
ctaHref = "/contact-us",
|
|
1058
1219
|
children
|
|
1059
1220
|
}) => {
|
|
1060
|
-
return /* @__PURE__ */
|
|
1221
|
+
return /* @__PURE__ */ import_react27.default.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0 bg-black" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden bg-neutral-900" }, /* @__PURE__ */ import_react27.default.createElement(
|
|
1061
1222
|
import_image6.default,
|
|
1062
1223
|
{
|
|
1063
1224
|
src: imageSrc,
|
|
@@ -1067,7 +1228,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1067
1228
|
className: "object-cover object-top grayscale opacity-60",
|
|
1068
1229
|
quality: 100
|
|
1069
1230
|
}
|
|
1070
|
-
), /* @__PURE__ */
|
|
1231
|
+
), /* @__PURE__ */ import_react27.default.createElement(
|
|
1071
1232
|
"div",
|
|
1072
1233
|
{
|
|
1073
1234
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
@@ -1075,7 +1236,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1075
1236
|
background: "linear-gradient(to right, rgba(0,0,0,0) 30%, #000000 100%)"
|
|
1076
1237
|
}
|
|
1077
1238
|
}
|
|
1078
|
-
), /* @__PURE__ */
|
|
1239
|
+
), /* @__PURE__ */ import_react27.default.createElement(
|
|
1079
1240
|
"div",
|
|
1080
1241
|
{
|
|
1081
1242
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
@@ -1083,7 +1244,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1083
1244
|
background: "linear-gradient(to bottom, rgba(0,0,0,0) 0%, #000000 100%)"
|
|
1084
1245
|
}
|
|
1085
1246
|
}
|
|
1086
|
-
)), /* @__PURE__ */
|
|
1247
|
+
)), /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-full md:w-1/2 flex mt-22 flex-col items-center justify-center p-4 md:p-12 relative z-20" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative w-full max-w-lg p-8 md:p-12 text-center md:text-left transition-all duration-700 ease-out" }, /* @__PURE__ */ import_react27.default.createElement(
|
|
1087
1248
|
"div",
|
|
1088
1249
|
{
|
|
1089
1250
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1092,7 +1253,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1092
1253
|
backgroundRepeat: "repeat"
|
|
1093
1254
|
}
|
|
1094
1255
|
}
|
|
1095
|
-
), /* @__PURE__ */
|
|
1256
|
+
), /* @__PURE__ */ import_react27.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "mb-10 border-b border-neutral-800 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ import_react27.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500" }, tagline), /* @__PURE__ */ import_react27.default.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500" }, subtitle)), /* @__PURE__ */ import_react27.default.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ import_react27.default.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ import_react27.default.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ import_react27.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ import_react27.default.createElement("div", { className: "grow h-px bg-neutral-800" }), /* @__PURE__ */ import_react27.default.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-600" }, dividerText), /* @__PURE__ */ import_react27.default.createElement("div", { className: "grow h-px bg-neutral-800" })), ctaText && ctaHref && /* @__PURE__ */ import_react27.default.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ import_react27.default.createElement(
|
|
1096
1257
|
ThreeDButton,
|
|
1097
1258
|
{
|
|
1098
1259
|
href: ctaHref,
|
|
@@ -1102,65 +1263,15 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1102
1263
|
)))))));
|
|
1103
1264
|
};
|
|
1104
1265
|
|
|
1105
|
-
// src/components/ReusableInputs.tsx
|
|
1106
|
-
var import_react26 = __toESM(require("react"));
|
|
1107
|
-
var TextInput = ({
|
|
1108
|
-
label,
|
|
1109
|
-
value,
|
|
1110
|
-
onChange,
|
|
1111
|
-
placeholder,
|
|
1112
|
-
maxLength,
|
|
1113
|
-
disabled,
|
|
1114
|
-
readOnly,
|
|
1115
|
-
type = "text",
|
|
1116
|
-
onClick
|
|
1117
|
-
}) => /* @__PURE__ */ import_react26.default.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ import_react26.default.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ import_react26.default.createElement(
|
|
1118
|
-
"input",
|
|
1119
|
-
{
|
|
1120
|
-
type,
|
|
1121
|
-
value,
|
|
1122
|
-
onChange: (e) => onChange(e.target.value.substring(0, maxLength || 100)),
|
|
1123
|
-
placeholder,
|
|
1124
|
-
disabled,
|
|
1125
|
-
readOnly,
|
|
1126
|
-
autoComplete: "off",
|
|
1127
|
-
spellCheck: "false",
|
|
1128
|
-
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" : ""}`
|
|
1129
|
-
}
|
|
1130
|
-
));
|
|
1131
|
-
var NumberInput = ({
|
|
1132
|
-
label,
|
|
1133
|
-
value,
|
|
1134
|
-
onChange,
|
|
1135
|
-
placeholder,
|
|
1136
|
-
maxLength,
|
|
1137
|
-
disabled
|
|
1138
|
-
}) => /* @__PURE__ */ import_react26.default.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ import_react26.default.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ import_react26.default.createElement(
|
|
1139
|
-
"input",
|
|
1140
|
-
{
|
|
1141
|
-
type: "text",
|
|
1142
|
-
value,
|
|
1143
|
-
onChange: (e) => {
|
|
1144
|
-
const numOnly = e.target.value.replace(/[^0-9]/g, "");
|
|
1145
|
-
onChange(numOnly.substring(0, maxLength || 20));
|
|
1146
|
-
},
|
|
1147
|
-
placeholder,
|
|
1148
|
-
disabled,
|
|
1149
|
-
autoComplete: "off",
|
|
1150
|
-
spellCheck: "false",
|
|
1151
|
-
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"
|
|
1152
|
-
}
|
|
1153
|
-
));
|
|
1154
|
-
|
|
1155
1266
|
// src/components/PortfolioHero.tsx
|
|
1156
|
-
var
|
|
1267
|
+
var import_react28 = __toESM(require("react"));
|
|
1157
1268
|
var import_link7 = __toESM(require("next/link"));
|
|
1158
1269
|
var import_image7 = __toESM(require("next/image"));
|
|
1159
|
-
var
|
|
1270
|
+
var import_react29 = require("@hugeicons/react");
|
|
1160
1271
|
var import_core_free_icons5 = require("@hugeicons/core-free-icons");
|
|
1161
1272
|
var useScrollAnimation = () => {
|
|
1162
|
-
const elementRef = (0,
|
|
1163
|
-
(0,
|
|
1273
|
+
const elementRef = (0, import_react28.useRef)(null);
|
|
1274
|
+
(0, import_react28.useEffect)(() => {
|
|
1164
1275
|
const el = elementRef.current;
|
|
1165
1276
|
if (!el) return;
|
|
1166
1277
|
const observer = new IntersectionObserver(
|
|
@@ -1196,13 +1307,13 @@ var PortfolioHero = ({
|
|
|
1196
1307
|
secondaryCtaHref
|
|
1197
1308
|
}) => {
|
|
1198
1309
|
const heroContentRef = useScrollAnimation();
|
|
1199
|
-
return /* @__PURE__ */
|
|
1310
|
+
return /* @__PURE__ */ import_react28.default.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__ */ import_react28.default.createElement(
|
|
1200
1311
|
"div",
|
|
1201
1312
|
{
|
|
1202
1313
|
ref: heroContentRef,
|
|
1203
1314
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
1204
1315
|
},
|
|
1205
|
-
/* @__PURE__ */
|
|
1316
|
+
/* @__PURE__ */ import_react28.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ import_react28.default.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden shrink-0 shadow-sm" }, /* @__PURE__ */ import_react28.default.createElement(
|
|
1206
1317
|
import_image7.default,
|
|
1207
1318
|
{
|
|
1208
1319
|
src: imageSrc,
|
|
@@ -1213,7 +1324,7 @@ var PortfolioHero = ({
|
|
|
1213
1324
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
1214
1325
|
quality: 100
|
|
1215
1326
|
}
|
|
1216
|
-
)), /* @__PURE__ */
|
|
1327
|
+
)), /* @__PURE__ */ import_react28.default.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ import_react28.default.createElement("h1", { className: "text-3xl sm:text-5xl lg:text-6xl tracking-tight text-white leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ import_react28.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500" }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ import_react28.default.createElement(
|
|
1217
1328
|
"a",
|
|
1218
1329
|
{
|
|
1219
1330
|
href: socialLinkHref,
|
|
@@ -1223,30 +1334,30 @@ var PortfolioHero = ({
|
|
|
1223
1334
|
},
|
|
1224
1335
|
socialLinkText
|
|
1225
1336
|
))),
|
|
1226
|
-
/* @__PURE__ */
|
|
1227
|
-
/* @__PURE__ */
|
|
1337
|
+
/* @__PURE__ */ import_react28.default.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-400" }, bio),
|
|
1338
|
+
/* @__PURE__ */ import_react28.default.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ import_react28.default.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ import_react28.default.createElement(
|
|
1228
1339
|
ThreeDButton,
|
|
1229
1340
|
{
|
|
1230
1341
|
href: primaryCtaHref,
|
|
1231
1342
|
className: "py-2.5 tracking-widest text-[11px]"
|
|
1232
1343
|
},
|
|
1233
1344
|
primaryCtaText
|
|
1234
|
-
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
1345
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ import_react28.default.createElement(
|
|
1235
1346
|
import_link7.default,
|
|
1236
1347
|
{
|
|
1237
1348
|
href: secondaryCtaHref,
|
|
1238
1349
|
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"
|
|
1239
1350
|
},
|
|
1240
1351
|
secondaryCtaText,
|
|
1241
|
-
/* @__PURE__ */
|
|
1352
|
+
/* @__PURE__ */ import_react28.default.createElement(import_react29.HugeiconsIcon, { icon: import_core_free_icons5.ArrowRight01Icon, size: 16 })
|
|
1242
1353
|
))
|
|
1243
1354
|
));
|
|
1244
1355
|
};
|
|
1245
1356
|
|
|
1246
1357
|
// src/components/GifFeatureCard.tsx
|
|
1247
|
-
var
|
|
1358
|
+
var import_react30 = __toESM(require("react"));
|
|
1248
1359
|
var import_image8 = __toESM(require("next/image"));
|
|
1249
|
-
var
|
|
1360
|
+
var import_react31 = require("@hugeicons/react");
|
|
1250
1361
|
var import_core_free_icons6 = require("@hugeicons/core-free-icons");
|
|
1251
1362
|
var GifFeatureCard = ({
|
|
1252
1363
|
gifSrc,
|
|
@@ -1255,20 +1366,20 @@ var GifFeatureCard = ({
|
|
|
1255
1366
|
alt = "Feature animation",
|
|
1256
1367
|
className = "aspect-video"
|
|
1257
1368
|
}) => {
|
|
1258
|
-
const [isLoading, setIsLoading] = (0,
|
|
1259
|
-
return /* @__PURE__ */
|
|
1260
|
-
|
|
1369
|
+
const [isLoading, setIsLoading] = (0, import_react30.useState)(true);
|
|
1370
|
+
return /* @__PURE__ */ import_react30.default.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ import_react30.default.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ import_react30.default.createElement(
|
|
1371
|
+
import_react31.HugeiconsIcon,
|
|
1261
1372
|
{
|
|
1262
1373
|
icon: import_core_free_icons6.Loading03Icon,
|
|
1263
1374
|
size: 32,
|
|
1264
1375
|
className: "animate-spin text-white"
|
|
1265
1376
|
}
|
|
1266
|
-
)), /* @__PURE__ */
|
|
1377
|
+
)), /* @__PURE__ */ import_react30.default.createElement(
|
|
1267
1378
|
"div",
|
|
1268
1379
|
{
|
|
1269
1380
|
className: `absolute inset-0 z-0 transition-all duration-1000 ease-out ${isLoading ? "scale-105 blur-2xl opacity-0" : "scale-100 blur-0 opacity-100"}`
|
|
1270
1381
|
},
|
|
1271
|
-
/* @__PURE__ */
|
|
1382
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
1272
1383
|
import_image8.default,
|
|
1273
1384
|
{
|
|
1274
1385
|
src: gifSrc,
|
|
@@ -1279,16 +1390,16 @@ var GifFeatureCard = ({
|
|
|
1279
1390
|
className: "object-cover object-center pointer-events-none"
|
|
1280
1391
|
}
|
|
1281
1392
|
)
|
|
1282
|
-
), /* @__PURE__ */
|
|
1393
|
+
), /* @__PURE__ */ import_react30.default.createElement(
|
|
1283
1394
|
"div",
|
|
1284
1395
|
{
|
|
1285
1396
|
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"
|
|
1286
1397
|
}
|
|
1287
|
-
), /* @__PURE__ */
|
|
1398
|
+
), /* @__PURE__ */ import_react30.default.createElement("div", { className: "absolute inset-x-0 bottom-0 p-6 sm:p-8 z-30 flex flex-col justify-end text-left pointer-events-none" }, title && /* @__PURE__ */ import_react30.default.createElement("h3", { className: "text-xl sm:text-2xl md:text-3xl text-white tracking-tight mb-2 sm:mb-3 drop-shadow-md" }, title), subtitle && /* @__PURE__ */ import_react30.default.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
1288
1399
|
};
|
|
1289
1400
|
|
|
1290
1401
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
1291
|
-
var
|
|
1402
|
+
var import_react32 = __toESM(require("react"));
|
|
1292
1403
|
var import_image9 = __toESM(require("next/image"));
|
|
1293
1404
|
var MedicalFeatureStatsBlock = ({
|
|
1294
1405
|
bottomHeadline,
|
|
@@ -1297,9 +1408,9 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1297
1408
|
trustText,
|
|
1298
1409
|
stats
|
|
1299
1410
|
}) => {
|
|
1300
|
-
const [isAnimating, setIsAnimating] = (0,
|
|
1301
|
-
const titleRef = (0,
|
|
1302
|
-
(0,
|
|
1411
|
+
const [isAnimating, setIsAnimating] = (0, import_react32.useState)(false);
|
|
1412
|
+
const titleRef = (0, import_react32.useRef)(null);
|
|
1413
|
+
(0, import_react32.useEffect)(() => {
|
|
1303
1414
|
const observer = new IntersectionObserver(
|
|
1304
1415
|
([entry]) => {
|
|
1305
1416
|
if (entry.isIntersecting) {
|
|
@@ -1317,7 +1428,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1317
1428
|
}
|
|
1318
1429
|
return () => observer.disconnect();
|
|
1319
1430
|
}, []);
|
|
1320
|
-
return /* @__PURE__ */
|
|
1431
|
+
return /* @__PURE__ */ import_react32.default.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 bg-black" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ import_react32.default.createElement(
|
|
1321
1432
|
"h2",
|
|
1322
1433
|
{
|
|
1323
1434
|
ref: titleRef,
|
|
@@ -1325,7 +1436,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1325
1436
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
1326
1437
|
},
|
|
1327
1438
|
bottomHeadline
|
|
1328
|
-
), /* @__PURE__ */
|
|
1439
|
+
), /* @__PURE__ */ import_react32.default.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-400" }, bottomDescription)), /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ import_react32.default.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__ */ import_react32.default.createElement(
|
|
1329
1440
|
import_image9.default,
|
|
1330
1441
|
{
|
|
1331
1442
|
src,
|
|
@@ -1334,17 +1445,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1334
1445
|
sizes: "48px",
|
|
1335
1446
|
className: "object-cover"
|
|
1336
1447
|
}
|
|
1337
|
-
)))), /* @__PURE__ */
|
|
1448
|
+
)))), /* @__PURE__ */ import_react32.default.createElement("p", { className: "text-[11px] text-neutral-400 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ import_react32.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ import_react32.default.createElement("div", { key: idx, className: "bg-neutral-900 rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ import_react32.default.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ import_react32.default.createElement("span", { className: "text-[14px] text-neutral-400 tracking-wide" }, stat.label)), /* @__PURE__ */ import_react32.default.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-white mt-auto leading-none" }, stat.value))))));
|
|
1338
1449
|
};
|
|
1339
1450
|
|
|
1340
1451
|
// src/components/ConsultantShowcase.tsx
|
|
1341
|
-
var
|
|
1452
|
+
var import_react33 = __toESM(require("react"));
|
|
1342
1453
|
var import_image10 = __toESM(require("next/image"));
|
|
1343
|
-
var
|
|
1454
|
+
var import_react34 = require("@hugeicons/react");
|
|
1344
1455
|
var import_core_free_icons7 = require("@hugeicons/core-free-icons");
|
|
1345
1456
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
1346
|
-
const [isLoading, setIsLoading] = (0,
|
|
1347
|
-
return /* @__PURE__ */
|
|
1457
|
+
const [isLoading, setIsLoading] = (0, import_react33.useState)(true);
|
|
1458
|
+
return /* @__PURE__ */ import_react33.default.createElement("div", { className: `absolute inset-0 bg-neutral-900 ${className}` }, isLoading && /* @__PURE__ */ import_react33.default.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__ */ import_react33.default.createElement(import_react34.HugeiconsIcon, { icon: import_core_free_icons7.Loading03Icon, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ import_react33.default.createElement(
|
|
1348
1459
|
import_image10.default,
|
|
1349
1460
|
{
|
|
1350
1461
|
src,
|
|
@@ -1363,9 +1474,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
1363
1474
|
var ConsultantShowcase = ({
|
|
1364
1475
|
profiles
|
|
1365
1476
|
}) => {
|
|
1366
|
-
const [currentIndex, setCurrentIndex] = (0,
|
|
1367
|
-
const [touchStart, setTouchStart] = (0,
|
|
1368
|
-
const [touchEnd, setTouchEnd] = (0,
|
|
1477
|
+
const [currentIndex, setCurrentIndex] = (0, import_react33.useState)(0);
|
|
1478
|
+
const [touchStart, setTouchStart] = (0, import_react33.useState)(null);
|
|
1479
|
+
const [touchEnd, setTouchEnd] = (0, import_react33.useState)(null);
|
|
1369
1480
|
const nextSlide = () => {
|
|
1370
1481
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
1371
1482
|
};
|
|
@@ -1390,7 +1501,7 @@ var ConsultantShowcase = ({
|
|
|
1390
1501
|
}
|
|
1391
1502
|
};
|
|
1392
1503
|
if (!profiles || profiles.length === 0) return null;
|
|
1393
|
-
return /* @__PURE__ */
|
|
1504
|
+
return /* @__PURE__ */ import_react33.default.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative bg-black" }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ import_react33.default.createElement(
|
|
1394
1505
|
"div",
|
|
1395
1506
|
{
|
|
1396
1507
|
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
@@ -1400,13 +1511,13 @@ var ConsultantShowcase = ({
|
|
|
1400
1511
|
},
|
|
1401
1512
|
profiles.map((profile, idx) => {
|
|
1402
1513
|
const isActive = idx === currentIndex;
|
|
1403
|
-
return /* @__PURE__ */
|
|
1514
|
+
return /* @__PURE__ */ import_react33.default.createElement(
|
|
1404
1515
|
"div",
|
|
1405
1516
|
{
|
|
1406
1517
|
key: profile.id,
|
|
1407
1518
|
className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
|
|
1408
1519
|
},
|
|
1409
|
-
/* @__PURE__ */
|
|
1520
|
+
/* @__PURE__ */ import_react33.default.createElement(
|
|
1410
1521
|
ImageWithLoader,
|
|
1411
1522
|
{
|
|
1412
1523
|
src: profile.imageSrc,
|
|
@@ -1414,14 +1525,14 @@ var ConsultantShowcase = ({
|
|
|
1414
1525
|
priority: idx === 0
|
|
1415
1526
|
}
|
|
1416
1527
|
),
|
|
1417
|
-
/* @__PURE__ */
|
|
1418
|
-
/* @__PURE__ */
|
|
1419
|
-
/* @__PURE__ */
|
|
1528
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute inset-0 bg-black/40 z-10 pointer-events-none" }),
|
|
1529
|
+
/* @__PURE__ */ import_react33.default.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" }),
|
|
1530
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ import_react33.default.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-[15px] text-neutral-300 font-light tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-[15px] text-neutral-400 font-light tracking-wide mt-1" }, profile.description)))
|
|
1420
1531
|
);
|
|
1421
1532
|
}),
|
|
1422
|
-
/* @__PURE__ */
|
|
1423
|
-
/* @__PURE__ */
|
|
1424
|
-
/* @__PURE__ */
|
|
1533
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide, "aria-label": "Previous image" }),
|
|
1534
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute top-0 right-0 w-[20%] h-full z-40 cursor-e-resize hidden md:block", onClick: nextSlide, "aria-label": "Next image" }),
|
|
1535
|
+
/* @__PURE__ */ import_react33.default.createElement("div", { className: "absolute bottom-6 md:bottom-8 left-0 w-full px-4 z-30 flex justify-center items-center gap-2" }, profiles.map((_, idx) => /* @__PURE__ */ import_react33.default.createElement(
|
|
1425
1536
|
"button",
|
|
1426
1537
|
{
|
|
1427
1538
|
key: idx,
|
|
@@ -1434,9 +1545,9 @@ var ConsultantShowcase = ({
|
|
|
1434
1545
|
};
|
|
1435
1546
|
|
|
1436
1547
|
// src/components/ContentGridBlock.tsx
|
|
1437
|
-
var
|
|
1548
|
+
var import_react35 = __toESM(require("react"));
|
|
1438
1549
|
var import_image11 = __toESM(require("next/image"));
|
|
1439
|
-
var
|
|
1550
|
+
var import_react36 = require("@hugeicons/react");
|
|
1440
1551
|
var import_core_free_icons8 = require("@hugeicons/core-free-icons");
|
|
1441
1552
|
var ContentGridBlock = ({
|
|
1442
1553
|
header,
|
|
@@ -1445,23 +1556,23 @@ var ContentGridBlock = ({
|
|
|
1445
1556
|
middleBottomCard,
|
|
1446
1557
|
rightCards
|
|
1447
1558
|
}) => {
|
|
1448
|
-
return /* @__PURE__ */
|
|
1559
|
+
return /* @__PURE__ */ import_react35.default.createElement("section", { className: "w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ import_react35.default.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ import_react35.default.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ import_react35.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "bg-neutral-900 rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ import_react35.default.createElement("span", { className: "mb-auto text-[11px] text-neutral-400 tracking-widest" }, leftCard.tag), /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ import_react35.default.createElement("div", null, /* @__PURE__ */ import_react35.default.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[13px] text-neutral-400" }, leftCard.subtitle)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react35.default.createElement(import_image11.default, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "border border-neutral-800 rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ import_react35.default.createElement("span", { className: "text-[11px] text-neutral-500 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ import_react35.default.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-black overflow-hidden relative z-10" }, /* @__PURE__ */ import_react35.default.createElement(import_image11.default, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ import_react35.default.createElement("span", { className: "text-sm text-neutral-400" }, middleTopCard.topRightCount))), /* @__PURE__ */ import_react35.default.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ import_react35.default.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__ */ import_react35.default.createElement("span", { className: "text-white" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[11px] text-neutral-500 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[14px] text-white leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ import_react35.default.createElement("div", { className: "border border-neutral-800 rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ import_react35.default.createElement("div", null, /* @__PURE__ */ import_react35.default.createElement("h4", { className: "text-[15px] text-white leading-tight" }, middleBottomCard.title), /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[13px] text-neutral-500" }, middleBottomCard.subtitle)), /* @__PURE__ */ import_react35.default.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ import_react35.default.createElement(import_image11.default, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ import_react35.default.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[16px] text-white leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ import_react35.default.createElement("span", { className: "text-[11px] text-neutral-500 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ import_react35.default.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ import_react35.default.createElement("div", { key: idx, className: "relative w-full h-80 bg-neutral-900 text-white rounded-3xl overflow-hidden group" }, /* @__PURE__ */ import_react35.default.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ import_react35.default.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ import_react35.default.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ import_react35.default.createElement("div", { className: "pt-3" }, /* @__PURE__ */ import_react35.default.createElement("h4", { className: "text-[15px] tracking-wide" }, card.title), /* @__PURE__ */ import_react35.default.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
|
|
1449
1560
|
};
|
|
1450
1561
|
|
|
1451
1562
|
// src/components/ManagedProjectsBlock.tsx
|
|
1452
|
-
var
|
|
1563
|
+
var import_react37 = __toESM(require("react"));
|
|
1453
1564
|
var import_link8 = __toESM(require("next/link"));
|
|
1454
1565
|
var GridSection = ({
|
|
1455
1566
|
children,
|
|
1456
1567
|
isLast = false,
|
|
1457
1568
|
className = "py-8 md:py-10"
|
|
1458
|
-
}) => /* @__PURE__ */
|
|
1569
|
+
}) => /* @__PURE__ */ import_react37.default.createElement("div", { className: `relative px-5 md:px-12 ${className} ${!isLast ? "" : ""}` }, children);
|
|
1459
1570
|
var ManagedProjectsBlock = ({
|
|
1460
1571
|
tagline,
|
|
1461
1572
|
title,
|
|
1462
1573
|
projects
|
|
1463
1574
|
}) => {
|
|
1464
|
-
return /* @__PURE__ */
|
|
1575
|
+
return /* @__PURE__ */ import_react37.default.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-5xl mx-auto overflow-hidden shadow-2xl" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
1465
1576
|
"div",
|
|
1466
1577
|
{
|
|
1467
1578
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1470,10 +1581,10 @@ var ManagedProjectsBlock = ({
|
|
|
1470
1581
|
backgroundRepeat: "repeat"
|
|
1471
1582
|
}
|
|
1472
1583
|
}
|
|
1473
|
-
), /* @__PURE__ */
|
|
1584
|
+
), /* @__PURE__ */ import_react37.default.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ import_react37.default.createElement(GridSection, null, tagline && /* @__PURE__ */ import_react37.default.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block" }, tagline), /* @__PURE__ */ import_react37.default.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
1474
1585
|
const isLast = index === projects.length - 1;
|
|
1475
|
-
const projectContent = /* @__PURE__ */
|
|
1476
|
-
return /* @__PURE__ */
|
|
1586
|
+
const projectContent = /* @__PURE__ */ import_react37.default.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ import_react37.default.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ import_react37.default.createElement("h2", { className: "text-[16px] text-white transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ import_react37.default.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__ */ import_react37.default.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__ */ import_react37.default.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0" }, project.date)), /* @__PURE__ */ import_react37.default.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));
|
|
1587
|
+
return /* @__PURE__ */ import_react37.default.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ import_react37.default.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ import_react37.default.createElement(import_link8.default, { href: project.link, className: "block outline-none" }, projectContent));
|
|
1477
1588
|
}))));
|
|
1478
1589
|
};
|
|
1479
1590
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1502,5 +1613,6 @@ var ManagedProjectsBlock = ({
|
|
|
1502
1613
|
PortfolioHero,
|
|
1503
1614
|
TextInput,
|
|
1504
1615
|
ThreeDActionButton,
|
|
1505
|
-
ThreeDButton
|
|
1616
|
+
ThreeDButton,
|
|
1617
|
+
WaitlistDialog
|
|
1506
1618
|
});
|