@retinalabsllc/zairusjs 8.1.55 → 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 +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +329 -308
- package/dist/index.mjs +300 -279
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -308,9 +308,152 @@ var Footer = ({
|
|
|
308
308
|
};
|
|
309
309
|
|
|
310
310
|
// src/components/HeroSection.tsx
|
|
311
|
-
import
|
|
311
|
+
import React8, { useState as useState4, useEffect as useEffect2, useRef as useRef2 } from "react";
|
|
312
312
|
import Link4 from "next/link";
|
|
313
313
|
import Image2 from "next/image";
|
|
314
|
+
|
|
315
|
+
// src/components/WaitlistDialog.tsx
|
|
316
|
+
import React7, { useState as useState3 } from "react";
|
|
317
|
+
import { toast } from "react-hot-toast";
|
|
318
|
+
|
|
319
|
+
// src/components/ReusableInputs.tsx
|
|
320
|
+
import React6 from "react";
|
|
321
|
+
var TextInput = ({
|
|
322
|
+
label,
|
|
323
|
+
value,
|
|
324
|
+
onChange,
|
|
325
|
+
placeholder,
|
|
326
|
+
maxLength,
|
|
327
|
+
disabled,
|
|
328
|
+
readOnly,
|
|
329
|
+
type = "text",
|
|
330
|
+
onClick
|
|
331
|
+
}) => /* @__PURE__ */ React6.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ React6.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ React6.createElement(
|
|
332
|
+
"input",
|
|
333
|
+
{
|
|
334
|
+
type,
|
|
335
|
+
value,
|
|
336
|
+
onChange: (e) => onChange(e.target.value.substring(0, maxLength || 100)),
|
|
337
|
+
placeholder,
|
|
338
|
+
disabled,
|
|
339
|
+
readOnly,
|
|
340
|
+
autoComplete: "off",
|
|
341
|
+
spellCheck: "false",
|
|
342
|
+
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" : ""}`
|
|
343
|
+
}
|
|
344
|
+
));
|
|
345
|
+
var NumberInput = ({
|
|
346
|
+
label,
|
|
347
|
+
value,
|
|
348
|
+
onChange,
|
|
349
|
+
placeholder,
|
|
350
|
+
maxLength,
|
|
351
|
+
disabled
|
|
352
|
+
}) => /* @__PURE__ */ React6.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ React6.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ React6.createElement(
|
|
353
|
+
"input",
|
|
354
|
+
{
|
|
355
|
+
type: "text",
|
|
356
|
+
value,
|
|
357
|
+
onChange: (e) => {
|
|
358
|
+
const numOnly = e.target.value.replace(/[^0-9]/g, "");
|
|
359
|
+
onChange(numOnly.substring(0, maxLength || 20));
|
|
360
|
+
},
|
|
361
|
+
placeholder,
|
|
362
|
+
disabled,
|
|
363
|
+
autoComplete: "off",
|
|
364
|
+
spellCheck: "false",
|
|
365
|
+
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"
|
|
366
|
+
}
|
|
367
|
+
));
|
|
368
|
+
|
|
369
|
+
// src/components/WaitlistDialog.tsx
|
|
370
|
+
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
371
|
+
const [email, setEmail] = useState3("");
|
|
372
|
+
const [isLoading, setIsLoading] = useState3(false);
|
|
373
|
+
if (!isOpen) return null;
|
|
374
|
+
const handleSubmit = async (e) => {
|
|
375
|
+
e.preventDefault();
|
|
376
|
+
if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
377
|
+
toast.error("Please enter a valid email address.");
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
setIsLoading(true);
|
|
381
|
+
try {
|
|
382
|
+
const response = await fetch("/api/waitlist", {
|
|
383
|
+
method: "POST",
|
|
384
|
+
headers: {
|
|
385
|
+
"Content-Type": "application/json"
|
|
386
|
+
},
|
|
387
|
+
body: JSON.stringify({ email })
|
|
388
|
+
});
|
|
389
|
+
const data = await response.json();
|
|
390
|
+
if (response.ok && data.success) {
|
|
391
|
+
toast.success(data.message || "You've been added to the waitlist!");
|
|
392
|
+
setEmail("");
|
|
393
|
+
onClose();
|
|
394
|
+
} else {
|
|
395
|
+
toast.error(data.error || "Something went wrong. Please try again.");
|
|
396
|
+
}
|
|
397
|
+
} catch (error) {
|
|
398
|
+
toast.error("Network error. Please check your connection.");
|
|
399
|
+
} finally {
|
|
400
|
+
setIsLoading(false);
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
return /* @__PURE__ */ React7.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/60 " }, /* @__PURE__ */ React7.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ React7.createElement(
|
|
404
|
+
"div",
|
|
405
|
+
{
|
|
406
|
+
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"
|
|
407
|
+
},
|
|
408
|
+
/* @__PURE__ */ React7.createElement(
|
|
409
|
+
"button",
|
|
410
|
+
{
|
|
411
|
+
onClick: onClose,
|
|
412
|
+
disabled: isLoading,
|
|
413
|
+
className: "absolute top-4 right-4 p-2 text-neutral-500 hover:text-white transition-colors disabled:opacity-50 outline-none",
|
|
414
|
+
"aria-label": "Close dialog"
|
|
415
|
+
},
|
|
416
|
+
/* @__PURE__ */ React7.createElement(
|
|
417
|
+
"svg",
|
|
418
|
+
{
|
|
419
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
420
|
+
width: "20",
|
|
421
|
+
height: "20",
|
|
422
|
+
viewBox: "0 0 24 24",
|
|
423
|
+
fill: "none",
|
|
424
|
+
stroke: "currentColor",
|
|
425
|
+
strokeWidth: "2",
|
|
426
|
+
strokeLinecap: "round",
|
|
427
|
+
strokeLinejoin: "round"
|
|
428
|
+
},
|
|
429
|
+
/* @__PURE__ */ React7.createElement("path", { d: "M18 6 6 18" }),
|
|
430
|
+
/* @__PURE__ */ React7.createElement("path", { d: "m6 6 12 12" })
|
|
431
|
+
)
|
|
432
|
+
),
|
|
433
|
+
/* @__PURE__ */ React7.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ React7.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ React7.createElement("h2", { className: "text-2xl font-light text-white tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ React7.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__ */ React7.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ React7.createElement(
|
|
434
|
+
TextInput,
|
|
435
|
+
{
|
|
436
|
+
label: "EMAIL ADDRESS",
|
|
437
|
+
type: "email",
|
|
438
|
+
value: email,
|
|
439
|
+
onChange: setEmail,
|
|
440
|
+
placeholder: "name@example.com",
|
|
441
|
+
disabled: isLoading
|
|
442
|
+
}
|
|
443
|
+
), /* @__PURE__ */ React7.createElement(
|
|
444
|
+
ThreeDActionButton,
|
|
445
|
+
{
|
|
446
|
+
type: "submit",
|
|
447
|
+
isLoading,
|
|
448
|
+
disabled: !email,
|
|
449
|
+
className: "w-full mt-2"
|
|
450
|
+
},
|
|
451
|
+
"Join Waitlist"
|
|
452
|
+
)))
|
|
453
|
+
));
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
// src/components/HeroSection.tsx
|
|
314
457
|
var HeroSection = ({
|
|
315
458
|
badgeText,
|
|
316
459
|
titlePrefix,
|
|
@@ -327,9 +470,11 @@ var HeroSection = ({
|
|
|
327
470
|
showImage = false,
|
|
328
471
|
imageSrc = "/assets/ai.avif",
|
|
329
472
|
bgVideoSrc,
|
|
330
|
-
bgImageSrc
|
|
473
|
+
bgImageSrc,
|
|
474
|
+
isWaitlist = false
|
|
331
475
|
}) => {
|
|
332
|
-
const [isAnimating, setIsAnimating] =
|
|
476
|
+
const [isAnimating, setIsAnimating] = useState4(false);
|
|
477
|
+
const [isWaitlistOpen, setIsWaitlistOpen] = useState4(false);
|
|
333
478
|
const titleRef = useRef2(null);
|
|
334
479
|
useEffect2(() => {
|
|
335
480
|
const observer = new IntersectionObserver(
|
|
@@ -349,7 +494,7 @@ var HeroSection = ({
|
|
|
349
494
|
}
|
|
350
495
|
return () => observer.disconnect();
|
|
351
496
|
}, []);
|
|
352
|
-
return /* @__PURE__ */
|
|
497
|
+
return /* @__PURE__ */ React8.createElement("section", { className: "relative min-h-[85vh] pt-40 sm:pt-48 pb-20 flex flex-col items-center justify-center overflow-hidden w-full bg-black" }, /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 w-full h-full z-0 overflow-hidden" }, bgVideoSrc ? /* @__PURE__ */ React8.createElement(
|
|
353
498
|
"video",
|
|
354
499
|
{
|
|
355
500
|
src: bgVideoSrc,
|
|
@@ -360,7 +505,7 @@ var HeroSection = ({
|
|
|
360
505
|
playsInline: true,
|
|
361
506
|
className: "absolute inset-0 w-full h-full object-cover z-0"
|
|
362
507
|
}
|
|
363
|
-
) : bgImageSrc ? /* @__PURE__ */
|
|
508
|
+
) : bgImageSrc ? /* @__PURE__ */ React8.createElement(
|
|
364
509
|
Image2,
|
|
365
510
|
{
|
|
366
511
|
src: bgImageSrc,
|
|
@@ -369,7 +514,7 @@ var HeroSection = ({
|
|
|
369
514
|
priority: true,
|
|
370
515
|
className: "object-cover z-0"
|
|
371
516
|
}
|
|
372
|
-
) : null, /* @__PURE__ */
|
|
517
|
+
) : null, /* @__PURE__ */ React8.createElement(
|
|
373
518
|
"div",
|
|
374
519
|
{
|
|
375
520
|
className: "absolute inset-0 z-10 opacity-30 mix-blend-overlay pointer-events-none",
|
|
@@ -379,7 +524,7 @@ var HeroSection = ({
|
|
|
379
524
|
backgroundPosition: "center"
|
|
380
525
|
}
|
|
381
526
|
}
|
|
382
|
-
), /* @__PURE__ */
|
|
527
|
+
), /* @__PURE__ */ React8.createElement("div", { className: "absolute inset-0 bg-black/20 z-10" }), /* @__PURE__ */ React8.createElement(
|
|
383
528
|
"div",
|
|
384
529
|
{
|
|
385
530
|
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-10",
|
|
@@ -388,7 +533,7 @@ var HeroSection = ({
|
|
|
388
533
|
backgroundSize: "32px 32px"
|
|
389
534
|
}
|
|
390
535
|
}
|
|
391
|
-
), /* @__PURE__ */
|
|
536
|
+
), /* @__PURE__ */ React8.createElement(
|
|
392
537
|
"div",
|
|
393
538
|
{
|
|
394
539
|
className: "absolute inset-0 w-full h-full pointer-events-none z-10 opacity-[0.10] mix-blend-overlay",
|
|
@@ -396,24 +541,33 @@ var HeroSection = ({
|
|
|
396
541
|
backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")`
|
|
397
542
|
}
|
|
398
543
|
}
|
|
399
|
-
), /* @__PURE__ */
|
|
544
|
+
), /* @__PURE__ */ React8.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__ */ React8.createElement("div", { className: "relative max-w-5xl mx-auto px-4 sm:px-6 w-full flex flex-col items-center text-center z-20" }, /* @__PURE__ */ React8.createElement(
|
|
400
545
|
"h1",
|
|
401
546
|
{
|
|
402
547
|
ref: titleRef,
|
|
403
548
|
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)]`,
|
|
404
549
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
405
550
|
},
|
|
406
|
-
titlePrefix,
|
|
407
|
-
" ",
|
|
408
|
-
|
|
409
|
-
|
|
551
|
+
/* @__PURE__ */ React8.createElement("span", { className: "block" }, titlePrefix),
|
|
552
|
+
/* @__PURE__ */ React8.createElement("span", { className: "block mt-2 font-medium gradient-text" }, highlightText)
|
|
553
|
+
), subtitle && /* @__PURE__ */ React8.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__ */ React8.createElement("div", { className: "flex flex-col sm:flex-row gap-4 justify-center items-center w-full px-2 sm:px-0 mx-auto mb-16" }, ctaText && (ctaHref || isWaitlist) && /* @__PURE__ */ React8.createElement("div", { className: "w-full sm:w-60 flex justify-center *:w-full" }, /* @__PURE__ */ React8.createElement(
|
|
554
|
+
ThreeDButton,
|
|
555
|
+
{
|
|
556
|
+
href: isWaitlist ? "#" : ctaHref || "#",
|
|
557
|
+
onClick: isWaitlist ? (e) => {
|
|
558
|
+
e.preventDefault();
|
|
559
|
+
setIsWaitlistOpen(true);
|
|
560
|
+
} : void 0
|
|
561
|
+
},
|
|
562
|
+
ctaText
|
|
563
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React8.createElement(
|
|
410
564
|
Link4,
|
|
411
565
|
{
|
|
412
566
|
href: secondaryCtaHref,
|
|
413
567
|
className: "w-full sm:w-60 inline-flex font-medium items-center justify-center text-[11px] tracking-widest rounded-full px-8 py-3 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"
|
|
414
568
|
},
|
|
415
569
|
secondaryCtaText
|
|
416
|
-
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */
|
|
570
|
+
)), showApps && appLogos && appLogos.length > 0 && /* @__PURE__ */ React8.createElement("div", { className: "w-full flex flex-col items-center mt-4" }, appsText && /* @__PURE__ */ React8.createElement("p", { className: "text-[9px] tracking-[0.2em] text-neutral-300 mb-5 " }, appsText), /* @__PURE__ */ React8.createElement("div", { className: "flex flex-wrap justify-center items-center gap-6 opacity-90" }, appLogos.map((logo, idx) => /* @__PURE__ */ React8.createElement("div", { key: idx, className: "relative h-6 w-6 sm:h-8 sm:w-8 flex items-center justify-center cursor-default filter invert" }, /* @__PURE__ */ React8.createElement(
|
|
417
571
|
Image2,
|
|
418
572
|
{
|
|
419
573
|
src: logo.src,
|
|
@@ -422,14 +576,20 @@ var HeroSection = ({
|
|
|
422
576
|
height: 50,
|
|
423
577
|
className: "object-contain h-full w-auto"
|
|
424
578
|
}
|
|
425
|
-
))))))
|
|
579
|
+
)))))), /* @__PURE__ */ React8.createElement(
|
|
580
|
+
WaitlistDialog,
|
|
581
|
+
{
|
|
582
|
+
isOpen: isWaitlistOpen,
|
|
583
|
+
onClose: () => setIsWaitlistOpen(false)
|
|
584
|
+
}
|
|
585
|
+
));
|
|
426
586
|
};
|
|
427
587
|
|
|
428
588
|
// src/components/AppBento2.tsx
|
|
429
|
-
import
|
|
589
|
+
import React9, { useState as useState5, useEffect as useEffect3, useRef as useRef3 } from "react";
|
|
430
590
|
import { HugeiconsIcon as HugeiconsIcon3 } from "@hugeicons/react";
|
|
431
591
|
var AppBento2 = ({ tagline, headline, features }) => {
|
|
432
|
-
const [isAnimating, setIsAnimating] =
|
|
592
|
+
const [isAnimating, setIsAnimating] = useState5(false);
|
|
433
593
|
const titleRef = useRef3(null);
|
|
434
594
|
useEffect3(() => {
|
|
435
595
|
const observer = new IntersectionObserver(
|
|
@@ -449,7 +609,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
449
609
|
}
|
|
450
610
|
return () => observer.disconnect();
|
|
451
611
|
}, []);
|
|
452
|
-
return /* @__PURE__ */
|
|
612
|
+
return /* @__PURE__ */ React9.createElement("div", { className: "w-full py-16 bg-black" }, /* @__PURE__ */ React9.createElement("div", { className: "w-full flex justify-center px-4" }, /* @__PURE__ */ React9.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React9.createElement("div", { className: "relative overflow-hidden mb-12 text-left" }, /* @__PURE__ */ React9.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React9.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4 " }, tagline), /* @__PURE__ */ React9.createElement(
|
|
453
613
|
"h2",
|
|
454
614
|
{
|
|
455
615
|
ref: titleRef,
|
|
@@ -457,7 +617,7 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
457
617
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
458
618
|
},
|
|
459
619
|
headline
|
|
460
|
-
))), /* @__PURE__ */
|
|
620
|
+
))), /* @__PURE__ */ React9.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-6 gap-6" }, features.map((f, i) => {
|
|
461
621
|
const isPrimary = i === 0;
|
|
462
622
|
const isHighlight = i === 1;
|
|
463
623
|
const isSecondary = i === 2;
|
|
@@ -479,36 +639,36 @@ var AppBento2 = ({ tagline, headline, features }) => {
|
|
|
479
639
|
const textColor = "text-white";
|
|
480
640
|
const subTextColor = "text-neutral-400";
|
|
481
641
|
const labelColor = "text-neutral-500";
|
|
482
|
-
return /* @__PURE__ */
|
|
642
|
+
return /* @__PURE__ */ React9.createElement(
|
|
483
643
|
"div",
|
|
484
644
|
{
|
|
485
645
|
key: i,
|
|
486
646
|
className: `relative rounded-2xl overflow-hidden p-8 flex flex-col min-h-75 transition-all duration-500 group text-left ${getBgStyle()} ${f.size}`,
|
|
487
647
|
style: { boxShadow: getShadowStyle() }
|
|
488
648
|
},
|
|
489
|
-
/* @__PURE__ */
|
|
649
|
+
/* @__PURE__ */ React9.createElement(
|
|
490
650
|
"div",
|
|
491
651
|
{
|
|
492
652
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
493
653
|
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")` }
|
|
494
654
|
}
|
|
495
655
|
),
|
|
496
|
-
isHighlight && /* @__PURE__ */
|
|
497
|
-
/* @__PURE__ */
|
|
498
|
-
/* @__PURE__ */
|
|
656
|
+
isHighlight && /* @__PURE__ */ React9.createElement("span", { className: "absolute inset-0 rounded-2xl bg-linear-to-b from-white/10 via-white/5 to-transparent pointer-events-none z-10" }),
|
|
657
|
+
/* @__PURE__ */ React9.createElement("div", { className: "absolute inset-0 overflow-hidden pointer-events-none z-0" }, /* @__PURE__ */ React9.createElement("div", { className: `absolute -bottom-8 -right-8 transform group-hover:scale-110 transition-transform duration-700 ease-out ${isHighlight ? "text-white/5" : "text-white/5"}` }, /* @__PURE__ */ React9.createElement(HugeiconsIcon3, { icon: f.icon, size: 180 }))),
|
|
658
|
+
/* @__PURE__ */ React9.createElement("div", { className: "relative z-10 w-full h-full flex flex-col pointer-events-auto" }, /* @__PURE__ */ React9.createElement("div", { className: "flex items-center justify-between mb-8" }, /* @__PURE__ */ React9.createElement("span", { className: `text-[9px] tracking-widest ${labelColor}` }, f.label), /* @__PURE__ */ React9.createElement("div", { className: `p-2 rounded-full transition-colors bg-white/10` }, /* @__PURE__ */ React9.createElement(HugeiconsIcon3, { icon: f.icon, size: 20, className: textColor }))), /* @__PURE__ */ React9.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React9.createElement("h3", { className: `text-xl mb-2 tracking-tight ${textColor}` }, f.title), /* @__PURE__ */ React9.createElement("p", { className: `text-[13px] leading-relaxed max-w-sm ${subTextColor}` }, f.desc)))
|
|
499
659
|
);
|
|
500
660
|
})))));
|
|
501
661
|
};
|
|
502
662
|
|
|
503
663
|
// src/components/FeatureScroll.tsx
|
|
504
|
-
import
|
|
664
|
+
import React10, { useRef as useRef4, useState as useState6, useEffect as useEffect4 } from "react";
|
|
505
665
|
import Image3 from "next/image";
|
|
506
666
|
import { HugeiconsIcon as HugeiconsIcon4 } from "@hugeicons/react";
|
|
507
667
|
import { ArrowLeft01Icon, ArrowRight01Icon, Loading03Icon as Loading03Icon2 } from "@hugeicons/core-free-icons";
|
|
508
668
|
var FeatureCard = ({ feature, bgImage }) => {
|
|
509
|
-
const [isBgLoading, setIsBgLoading] =
|
|
510
|
-
const [isFgLoading, setIsFgLoading] =
|
|
511
|
-
return /* @__PURE__ */
|
|
669
|
+
const [isBgLoading, setIsBgLoading] = useState6(true);
|
|
670
|
+
const [isFgLoading, setIsFgLoading] = useState6(!!feature.image);
|
|
671
|
+
return /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col shrink-0 w-[90vw] sm:w-150 snap-center md:snap-start group cursor-grab active:cursor-grabbing" }, /* @__PURE__ */ React10.createElement("div", { className: "relative w-full aspect-16/10 bg-neutral-900 rounded-2xl overflow-hidden mb-6 flex items-center justify-center " }, /* @__PURE__ */ React10.createElement(
|
|
512
672
|
Image3,
|
|
513
673
|
{
|
|
514
674
|
src: bgImage,
|
|
@@ -521,7 +681,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
521
681
|
${isBgLoading ? "blur-xl scale-110" : "blur-0 scale-100"}
|
|
522
682
|
`
|
|
523
683
|
}
|
|
524
|
-
), /* @__PURE__ */
|
|
684
|
+
), /* @__PURE__ */ React10.createElement(
|
|
525
685
|
"div",
|
|
526
686
|
{
|
|
527
687
|
className: "absolute inset-0 w-full h-full pointer-events-none z-0 opacity-[0.25] mix-blend-overlay",
|
|
@@ -529,7 +689,7 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
529
689
|
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")`
|
|
530
690
|
}
|
|
531
691
|
}
|
|
532
|
-
), isFgLoading && feature.image && /* @__PURE__ */
|
|
692
|
+
), isFgLoading && feature.image && /* @__PURE__ */ React10.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__ */ React10.createElement(HugeiconsIcon4, { icon: Loading03Icon2, size: 32, className: "animate-spin text-neutral-500" })), feature.image && /* @__PURE__ */ React10.createElement("div", { className: "absolute -bottom-6 -right-6 w-[85%] h-[85%] z-10 transition-transform duration-700 ease-out group-hover:-translate-x-2 group-hover:-translate-y-2" }, /* @__PURE__ */ React10.createElement(
|
|
533
693
|
Image3,
|
|
534
694
|
{
|
|
535
695
|
src: feature.image,
|
|
@@ -542,12 +702,12 @@ var FeatureCard = ({ feature, bgImage }) => {
|
|
|
542
702
|
${isFgLoading ? "opacity-0 blur-xl" : "opacity-100 blur-0"}
|
|
543
703
|
`
|
|
544
704
|
}
|
|
545
|
-
))), /* @__PURE__ */
|
|
705
|
+
))), /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col text-left pr-4" }, /* @__PURE__ */ React10.createElement("h3", { className: "text-xl tracking-tight text-white mb-2" }, feature.title), /* @__PURE__ */ React10.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-400 max-w-[90%]" }, feature.desc)));
|
|
546
706
|
};
|
|
547
707
|
var FeatureScroll = ({ tagline, headline, features }) => {
|
|
548
708
|
const scrollRef = useRef4(null);
|
|
549
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
550
|
-
const [canScrollRight, setCanScrollRight] =
|
|
709
|
+
const [canScrollLeft, setCanScrollLeft] = useState6(false);
|
|
710
|
+
const [canScrollRight, setCanScrollRight] = useState6(true);
|
|
551
711
|
const checkScroll = () => {
|
|
552
712
|
if (scrollRef.current) {
|
|
553
713
|
const { scrollLeft, scrollWidth, clientWidth } = scrollRef.current;
|
|
@@ -571,7 +731,7 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
571
731
|
"https://retinalabs.company/assets/images/bg_6.avif",
|
|
572
732
|
"https://retinalabs.company/assets/images/bg_1.avif"
|
|
573
733
|
];
|
|
574
|
-
return /* @__PURE__ */
|
|
734
|
+
return /* @__PURE__ */ React10.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 overflow-hidden bg-black" }, /* @__PURE__ */ React10.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React10.createElement("div", { className: "flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12" }, /* @__PURE__ */ React10.createElement("div", { className: "relative z-10 text-left" }, /* @__PURE__ */ React10.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React10.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.05]" }, headline)), /* @__PURE__ */ React10.createElement("div", { className: "hidden md:flex items-center gap-3" }, /* @__PURE__ */ React10.createElement(
|
|
575
735
|
"button",
|
|
576
736
|
{
|
|
577
737
|
onClick: () => scroll("left"),
|
|
@@ -579,8 +739,8 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
579
739
|
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",
|
|
580
740
|
"aria-label": "Previous feature"
|
|
581
741
|
},
|
|
582
|
-
/* @__PURE__ */
|
|
583
|
-
), /* @__PURE__ */
|
|
742
|
+
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowLeft01Icon, size: 20 })
|
|
743
|
+
), /* @__PURE__ */ React10.createElement(
|
|
584
744
|
"button",
|
|
585
745
|
{
|
|
586
746
|
onClick: () => scroll("right"),
|
|
@@ -588,36 +748,36 @@ var FeatureScroll = ({ tagline, headline, features }) => {
|
|
|
588
748
|
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",
|
|
589
749
|
"aria-label": "Next feature"
|
|
590
750
|
},
|
|
591
|
-
/* @__PURE__ */
|
|
592
|
-
))), /* @__PURE__ */
|
|
751
|
+
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowRight01Icon, size: 20 })
|
|
752
|
+
))), /* @__PURE__ */ React10.createElement(
|
|
593
753
|
"div",
|
|
594
754
|
{
|
|
595
755
|
ref: scrollRef,
|
|
596
756
|
onScroll: checkScroll,
|
|
597
757
|
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"
|
|
598
758
|
},
|
|
599
|
-
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */
|
|
600
|
-
), /* @__PURE__ */
|
|
759
|
+
features.slice(0, 3).map((feature, idx) => /* @__PURE__ */ React10.createElement(FeatureCard, { key: idx, feature, bgImage: bgImages[idx] }))
|
|
760
|
+
), /* @__PURE__ */ React10.createElement("div", { className: "flex md:hidden items-center justify-center gap-4 mt-2" }, /* @__PURE__ */ React10.createElement(
|
|
601
761
|
"button",
|
|
602
762
|
{
|
|
603
763
|
onClick: () => scroll("left"),
|
|
604
764
|
disabled: !canScrollLeft,
|
|
605
765
|
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"
|
|
606
766
|
},
|
|
607
|
-
/* @__PURE__ */
|
|
608
|
-
), /* @__PURE__ */
|
|
767
|
+
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowLeft01Icon, size: 20 })
|
|
768
|
+
), /* @__PURE__ */ React10.createElement(
|
|
609
769
|
"button",
|
|
610
770
|
{
|
|
611
771
|
onClick: () => scroll("right"),
|
|
612
772
|
disabled: !canScrollRight,
|
|
613
773
|
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"
|
|
614
774
|
},
|
|
615
|
-
/* @__PURE__ */
|
|
775
|
+
/* @__PURE__ */ React10.createElement(HugeiconsIcon4, { icon: ArrowRight01Icon, size: 20 })
|
|
616
776
|
))));
|
|
617
777
|
};
|
|
618
778
|
|
|
619
779
|
// src/components/PlatformFeatures.tsx
|
|
620
|
-
import
|
|
780
|
+
import React11 from "react";
|
|
621
781
|
import { HugeiconsIcon as HugeiconsIcon5 } from "@hugeicons/react";
|
|
622
782
|
var PlatformFeatures = ({
|
|
623
783
|
tagline,
|
|
@@ -625,20 +785,20 @@ var PlatformFeatures = ({
|
|
|
625
785
|
description,
|
|
626
786
|
features
|
|
627
787
|
}) => {
|
|
628
|
-
return /* @__PURE__ */
|
|
788
|
+
return /* @__PURE__ */ React11.createElement("section", { className: "w-full flex justify-center mb-15 relative z-10 bg-black" }, /* @__PURE__ */ React11.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col items-start mb-16 relative z-10" }, /* @__PURE__ */ React11.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 block mb-4" }, tagline), /* @__PURE__ */ React11.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.05] mb-6" }, headline), /* @__PURE__ */ React11.createElement("p", { className: "text-[15px] leading-[1.8] text-neutral-400 max-w-2xl" }, description)), /* @__PURE__ */ React11.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-12" }, features.map((feature, idx) => /* @__PURE__ */ React11.createElement(
|
|
629
789
|
"div",
|
|
630
790
|
{
|
|
631
791
|
key: idx,
|
|
632
792
|
className: "flex flex-col group animate-in fade-in slide-in-from-bottom-4 duration-700 fill-mode-both",
|
|
633
793
|
style: { animationDelay: feature.delay || "0ms" }
|
|
634
794
|
},
|
|
635
|
-
/* @__PURE__ */
|
|
636
|
-
/* @__PURE__ */
|
|
795
|
+
/* @__PURE__ */ React11.createElement("div", { className: "flex flex-row items-center gap-4 mb-4" }, /* @__PURE__ */ React11.createElement("div", { className: "w-14 h-14 shrink-0 rounded-xl border border-neutral-800 flex items-center justify-center text-white transition-colors duration-300" }, /* @__PURE__ */ React11.createElement(HugeiconsIcon5, { icon: feature.icon, size: 24 })), /* @__PURE__ */ React11.createElement("div", { className: "flex flex-col justify-center" }, /* @__PURE__ */ React11.createElement("span", { className: "text-[11px] tracking-widest text-neutral-500 mb-0.5" }, feature.label || "CAPABILITY"), /* @__PURE__ */ React11.createElement("h3", { className: "text-xl tracking-tight text-white" }, feature.title))),
|
|
796
|
+
/* @__PURE__ */ React11.createElement("div", null, /* @__PURE__ */ React11.createElement("p", { className: "text-[13px] leading-relaxed text-neutral-400 pr-4" }, feature.desc))
|
|
637
797
|
)))));
|
|
638
798
|
};
|
|
639
799
|
|
|
640
800
|
// src/components/ManagedDocument.tsx
|
|
641
|
-
import
|
|
801
|
+
import React12, { useState as useState7, useEffect as useEffect5, useRef as useRef5 } from "react";
|
|
642
802
|
var ManagedDocument = ({
|
|
643
803
|
tagline,
|
|
644
804
|
title,
|
|
@@ -646,7 +806,7 @@ var ManagedDocument = ({
|
|
|
646
806
|
contactText,
|
|
647
807
|
contactEmail
|
|
648
808
|
}) => {
|
|
649
|
-
const [isAnimating, setIsAnimating] =
|
|
809
|
+
const [isAnimating, setIsAnimating] = useState7(false);
|
|
650
810
|
const titleRef = useRef5(null);
|
|
651
811
|
useEffect5(() => {
|
|
652
812
|
const observer = new IntersectionObserver(
|
|
@@ -668,7 +828,7 @@ var ManagedDocument = ({
|
|
|
668
828
|
}, []);
|
|
669
829
|
return (
|
|
670
830
|
// Outer layout wrapper (takes up available space, adds padding)
|
|
671
|
-
/* @__PURE__ */
|
|
831
|
+
/* @__PURE__ */ React12.createElement("div", { className: "grow pt-28 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React12.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React12.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React12.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React12.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React12.createElement(
|
|
672
832
|
"h1",
|
|
673
833
|
{
|
|
674
834
|
ref: titleRef,
|
|
@@ -676,7 +836,7 @@ var ManagedDocument = ({
|
|
|
676
836
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
677
837
|
},
|
|
678
838
|
title
|
|
679
|
-
)), sections.map((section, index) => /* @__PURE__ */
|
|
839
|
+
)), sections.map((section, index) => /* @__PURE__ */ React12.createElement("div", { key: index, className: "relative px-5 md:px-12 py-8 md:py-10" }, section.heading && /* @__PURE__ */ React12.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 text-left " }, section.heading), section.paragraphs && section.paragraphs.length > 0 && /* @__PURE__ */ React12.createElement("div", { className: "text-[14px] leading-[1.8] text-neutral-400 space-y-4 text-left font-light" }, section.paragraphs.map((text, pIndex) => /* @__PURE__ */ React12.createElement("p", { key: pIndex }, text))), section.quote && /* @__PURE__ */ React12.createElement("div", { className: `border-neutral-800 bg-neutral-950 border rounded-xl p-6 ${section.paragraphs && section.paragraphs.length > 0 ? "mt-6" : ""}` }, /* @__PURE__ */ React12.createElement("p", { className: "text-white text-[14px] md:text-[14px] leading-relaxed" }, '"', section.quote, '"')))), (contactText || contactEmail) && /* @__PURE__ */ React12.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React12.createElement("p", { className: "text-[11px] text-neutral-500 text-left" }, contactText, contactEmail && /* @__PURE__ */ React12.createElement(
|
|
680
840
|
"a",
|
|
681
841
|
{
|
|
682
842
|
href: `mailto:${contactEmail}`,
|
|
@@ -688,18 +848,18 @@ var ManagedDocument = ({
|
|
|
688
848
|
};
|
|
689
849
|
|
|
690
850
|
// src/components/ManagedContactBlock.tsx
|
|
691
|
-
import
|
|
851
|
+
import React13, { useState as useState8, useEffect as useEffect6 } from "react";
|
|
692
852
|
import { HugeiconsIcon as HugeiconsIcon6 } from "@hugeicons/react";
|
|
693
853
|
var SecureEmail = ({ user, domain, className }) => {
|
|
694
|
-
const [isMounted, setIsMounted] =
|
|
854
|
+
const [isMounted, setIsMounted] = useState8(false);
|
|
695
855
|
useEffect6(() => {
|
|
696
856
|
setIsMounted(true);
|
|
697
857
|
}, []);
|
|
698
858
|
if (!isMounted) {
|
|
699
|
-
return /* @__PURE__ */
|
|
859
|
+
return /* @__PURE__ */ React13.createElement("span", { className, style: { opacity: 0 } }, "Loading");
|
|
700
860
|
}
|
|
701
861
|
const email = `${user}@${domain}`;
|
|
702
|
-
return /* @__PURE__ */
|
|
862
|
+
return /* @__PURE__ */ React13.createElement("a", { href: `mailto:${email}`, className }, email);
|
|
703
863
|
};
|
|
704
864
|
var ManagedContactBlock = ({
|
|
705
865
|
tagline,
|
|
@@ -708,7 +868,7 @@ var ManagedContactBlock = ({
|
|
|
708
868
|
emails,
|
|
709
869
|
socials
|
|
710
870
|
}) => {
|
|
711
|
-
return /* @__PURE__ */
|
|
871
|
+
return /* @__PURE__ */ React13.createElement("div", { className: "grow pt-28 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React13.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-7xl mx-auto overflow-hidden" }, /* @__PURE__ */ React13.createElement(
|
|
712
872
|
"div",
|
|
713
873
|
{
|
|
714
874
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -717,21 +877,21 @@ var ManagedContactBlock = ({
|
|
|
717
877
|
backgroundRepeat: "repeat"
|
|
718
878
|
}
|
|
719
879
|
}
|
|
720
|
-
), /* @__PURE__ */
|
|
880
|
+
), /* @__PURE__ */ React13.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React13.createElement("div", { className: "relative px-8 md:px-12 py-10" }, tagline && /* @__PURE__ */ React13.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React13.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), /* @__PURE__ */ React13.createElement("div", { className: "relative px-8 md:px-12 py-8 pb-14" }, /* @__PURE__ */ React13.createElement("div", { className: "flex flex-wrap gap-12 lg:gap-16 w-full" }, company && /* @__PURE__ */ React13.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Contact Details"), /* @__PURE__ */ React13.createElement("div", { className: "space-y-3 text-[13px] text-neutral-400 leading-[1.8]" }, company.name && /* @__PURE__ */ React13.createElement("p", { className: "text-white" }, company.name), company.lines && company.lines.map((line, idx) => /* @__PURE__ */ React13.createElement("p", { key: idx }, line)), company.phone && /* @__PURE__ */ React13.createElement("p", { className: "pt-2" }, /* @__PURE__ */ React13.createElement(
|
|
721
881
|
"a",
|
|
722
882
|
{
|
|
723
883
|
href: `tel:${company.phone.replace(/\s+/g, "")}`,
|
|
724
884
|
className: "transition-colors hover:text-white"
|
|
725
885
|
},
|
|
726
886
|
company.phone
|
|
727
|
-
)))), emails && emails.length > 0 && /* @__PURE__ */
|
|
887
|
+
)))), emails && emails.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Email Directory"), /* @__PURE__ */ React13.createElement("div", { className: "space-y-6 text-[13px]" }, emails.map((email, idx) => /* @__PURE__ */ React13.createElement("div", { key: idx }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] mb-1.5 text-neutral-500 " }, email.label), /* @__PURE__ */ React13.createElement(
|
|
728
888
|
SecureEmail,
|
|
729
889
|
{
|
|
730
890
|
user: email.user,
|
|
731
891
|
domain: email.domain,
|
|
732
892
|
className: "text-neutral-400 transition-colors hover:text-white"
|
|
733
893
|
}
|
|
734
|
-
))))), socials && socials.length > 0 && /* @__PURE__ */
|
|
894
|
+
))))), socials && socials.length > 0 && /* @__PURE__ */ React13.createElement("div", { className: "flex-1 min-w-65 space-y-6" }, /* @__PURE__ */ React13.createElement("p", { className: "text-[11px] tracking-[0.2em] text-white mb-4 " }, "Find Us Online"), /* @__PURE__ */ React13.createElement("div", { className: "flex flex-col space-y-5 pt-1" }, socials.map((social, idx) => /* @__PURE__ */ React13.createElement(
|
|
735
895
|
"a",
|
|
736
896
|
{
|
|
737
897
|
key: idx,
|
|
@@ -741,25 +901,25 @@ var ManagedContactBlock = ({
|
|
|
741
901
|
className: "flex items-center gap-3 transition-colors group text-neutral-400 hover:text-white",
|
|
742
902
|
"aria-label": social.label
|
|
743
903
|
},
|
|
744
|
-
/* @__PURE__ */
|
|
745
|
-
/* @__PURE__ */
|
|
904
|
+
/* @__PURE__ */ React13.createElement(HugeiconsIcon6, { icon: social.icon, size: 18 }),
|
|
905
|
+
/* @__PURE__ */ React13.createElement("span", { className: "text-[13px]" }, social.label)
|
|
746
906
|
)))))))));
|
|
747
907
|
};
|
|
748
908
|
|
|
749
909
|
// src/components/ManagedPricingBlock.tsx
|
|
750
|
-
import
|
|
910
|
+
import React14, { useState as useState9, useEffect as useEffect7, useRef as useRef6 } from "react";
|
|
751
911
|
import Link5 from "next/link";
|
|
752
912
|
import Image4 from "next/image";
|
|
753
|
-
var CheckIcon = ({ className = "" }) => /* @__PURE__ */
|
|
754
|
-
var CrossIcon = ({ className = "" }) => /* @__PURE__ */
|
|
913
|
+
var CheckIcon = ({ className = "" }) => /* @__PURE__ */ React14.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React14.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "white" }), /* @__PURE__ */ React14.createElement("path", { d: "M8 12L11 15L16 9", stroke: "black", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
914
|
+
var CrossIcon = ({ className = "" }) => /* @__PURE__ */ React14.createElement("svg", { viewBox: "0 0 24 24", fill: "none", className: `w-4 h-4 shrink-0 ${className}`, xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React14.createElement("circle", { cx: "12", cy: "12", r: "10", fill: "#262626" }), /* @__PURE__ */ React14.createElement("path", { d: "M15 9L9 15M9 9l6 6", stroke: "#737373", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }));
|
|
755
915
|
var ManagedPricingBlock = ({
|
|
756
916
|
tagline,
|
|
757
917
|
title,
|
|
758
918
|
plans = [],
|
|
759
919
|
tabs
|
|
760
920
|
}) => {
|
|
761
|
-
const [isAnimating, setIsAnimating] =
|
|
762
|
-
const [activeTabIndex, setActiveTabIndex] =
|
|
921
|
+
const [isAnimating, setIsAnimating] = useState9(false);
|
|
922
|
+
const [activeTabIndex, setActiveTabIndex] = useState9(0);
|
|
763
923
|
const titleRef = useRef6(null);
|
|
764
924
|
useEffect7(() => {
|
|
765
925
|
const observer = new IntersectionObserver(
|
|
@@ -781,7 +941,7 @@ var ManagedPricingBlock = ({
|
|
|
781
941
|
}, []);
|
|
782
942
|
const hasTabs = tabs && tabs.length > 0;
|
|
783
943
|
const currentPlans = hasTabs ? tabs[activeTabIndex].plans : plans;
|
|
784
|
-
return /* @__PURE__ */
|
|
944
|
+
return /* @__PURE__ */ React14.createElement("div", { className: "grow pt-10 pb-20 px-4 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React14.createElement("div", { className: "w-full max-w-5xl mx-auto flex flex-col items-center" }, /* @__PURE__ */ React14.createElement("div", { className: "w-full flex flex-col items-center text-center mb-10 sm:mb-12" }, tagline && /* @__PURE__ */ React14.createElement("span", { className: "text-[9px] tracking-[0.4em] text-neutral-500 block" }, tagline), /* @__PURE__ */ React14.createElement(
|
|
785
945
|
"h1",
|
|
786
946
|
{
|
|
787
947
|
ref: titleRef,
|
|
@@ -789,9 +949,9 @@ var ManagedPricingBlock = ({
|
|
|
789
949
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
790
950
|
},
|
|
791
951
|
title
|
|
792
|
-
)), hasTabs && /* @__PURE__ */
|
|
952
|
+
)), hasTabs && /* @__PURE__ */ React14.createElement("div", { className: "flex items-center justify-center mb-8 sm:mb-10 w-full animate-in fade-in duration-300 px-2" }, /* @__PURE__ */ React14.createElement("div", { className: "flex items-center bg-neutral-900 rounded-full p-1 sm:p-1.5 max-w-full overflow-x-auto custom-scrollbar" }, tabs.map((tab, idx) => {
|
|
793
953
|
const isActive = activeTabIndex === idx;
|
|
794
|
-
return /* @__PURE__ */
|
|
954
|
+
return /* @__PURE__ */ React14.createElement(
|
|
795
955
|
"button",
|
|
796
956
|
{
|
|
797
957
|
key: idx,
|
|
@@ -800,19 +960,19 @@ var ManagedPricingBlock = ({
|
|
|
800
960
|
},
|
|
801
961
|
tab.label
|
|
802
962
|
);
|
|
803
|
-
}))), /* @__PURE__ */
|
|
963
|
+
}))), /* @__PURE__ */ React14.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__ */ React14.createElement(
|
|
804
964
|
"div",
|
|
805
965
|
{
|
|
806
966
|
key: `${activeTabIndex}-${planIdx}`,
|
|
807
967
|
className: `bg-neutral-900 rounded-3xl p-6 flex flex-col relative overflow-hidden transition-all duration-300 ${plan.isPremium ? "border-neutral-700" : ""}`
|
|
808
968
|
},
|
|
809
|
-
/* @__PURE__ */
|
|
969
|
+
/* @__PURE__ */ React14.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React14.createElement("span", { className: "text-white text-base block mb-1" }, plan.name), /* @__PURE__ */ React14.createElement("div", { className: "flex items-baseline gap-1" }, /* @__PURE__ */ React14.createElement("h3", { className: "text-3xl font-light text-white" }, plan.price), plan.period && /* @__PURE__ */ React14.createElement("span", { className: "text-xs text-neutral-500" }, plan.period)), /* @__PURE__ */ React14.createElement("p", { className: "text-xs text-neutral-400 mt-2 min-h-8" }, plan.description), plan.showApps && plan.appLogos && plan.appLogos.length > 0 && /* @__PURE__ */ React14.createElement("div", { className: "flex items-center gap-2 mt-4 opacity-90" }, plan.appLogos.map((logo, logoIdx) => /* @__PURE__ */ React14.createElement(
|
|
810
970
|
"div",
|
|
811
971
|
{
|
|
812
972
|
key: logoIdx,
|
|
813
973
|
className: "relative w-5 h-5 overflow-hidden flex items-center justify-center shrink-0"
|
|
814
974
|
},
|
|
815
|
-
/* @__PURE__ */
|
|
975
|
+
/* @__PURE__ */ React14.createElement(
|
|
816
976
|
Image4,
|
|
817
977
|
{
|
|
818
978
|
src: logo.src,
|
|
@@ -823,7 +983,7 @@ var ManagedPricingBlock = ({
|
|
|
823
983
|
}
|
|
824
984
|
)
|
|
825
985
|
)))),
|
|
826
|
-
plan.isPremium ? /* @__PURE__ */
|
|
986
|
+
plan.isPremium ? /* @__PURE__ */ React14.createElement(ThreeDButton, { href: plan.ctaHref, className: "mb-6 w-full" }, plan.ctaText) : /* @__PURE__ */ React14.createElement(
|
|
827
987
|
Link5,
|
|
828
988
|
{
|
|
829
989
|
href: plan.ctaHref,
|
|
@@ -831,20 +991,20 @@ var ManagedPricingBlock = ({
|
|
|
831
991
|
},
|
|
832
992
|
plan.ctaText
|
|
833
993
|
),
|
|
834
|
-
/* @__PURE__ */
|
|
994
|
+
/* @__PURE__ */ React14.createElement("div", { className: "flex flex-col gap-3" }, plan.features.map((feature, featureIdx) => {
|
|
835
995
|
const isAvailable = feature.value !== false;
|
|
836
996
|
const valueText = typeof feature.value === "string" ? feature.value : "";
|
|
837
|
-
return /* @__PURE__ */
|
|
997
|
+
return /* @__PURE__ */ React14.createElement("div", { key: featureIdx, className: "flex items-center gap-2.5" }, isAvailable ? /* @__PURE__ */ React14.createElement(CheckIcon, null) : /* @__PURE__ */ React14.createElement(CrossIcon, null), /* @__PURE__ */ React14.createElement("span", { className: `text-xs truncate ${isAvailable ? "text-neutral-300" : "text-neutral-600"}` }, feature.name, valueText && /* @__PURE__ */ React14.createElement("span", { className: "text-neutral-500 ml-1" }, "(", valueText, ")")));
|
|
838
998
|
}))
|
|
839
999
|
)))));
|
|
840
1000
|
};
|
|
841
1001
|
|
|
842
1002
|
// src/components/ManagedBoardBlock.tsx
|
|
843
|
-
import
|
|
1003
|
+
import React15 from "react";
|
|
844
1004
|
import Image5 from "next/image";
|
|
845
1005
|
import { HugeiconsIcon as HugeiconsIcon7 } from "@hugeicons/react";
|
|
846
1006
|
import { TwitterIcon, LinkedinIcon } from "@hugeicons/core-free-icons";
|
|
847
|
-
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */
|
|
1007
|
+
var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React15.createElement(
|
|
848
1008
|
"a",
|
|
849
1009
|
{
|
|
850
1010
|
href,
|
|
@@ -853,7 +1013,7 @@ var MemberSocialLink = ({ href, icon, label, name }) => /* @__PURE__ */ React13.
|
|
|
853
1013
|
className: "text-neutral-500 hover:text-white transition-colors",
|
|
854
1014
|
"aria-label": `${name} on ${label}`
|
|
855
1015
|
},
|
|
856
|
-
/* @__PURE__ */
|
|
1016
|
+
/* @__PURE__ */ React15.createElement(HugeiconsIcon7, { icon, size: 16 })
|
|
857
1017
|
);
|
|
858
1018
|
var ManagedBoardBlock = ({
|
|
859
1019
|
tagline,
|
|
@@ -862,7 +1022,7 @@ var ManagedBoardBlock = ({
|
|
|
862
1022
|
contactText,
|
|
863
1023
|
contactEmail
|
|
864
1024
|
}) => {
|
|
865
|
-
return /* @__PURE__ */
|
|
1025
|
+
return /* @__PURE__ */ React15.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React15.createElement("div", { className: "relative w-full mx-auto overflow-hidden max-w-7xl" }, /* @__PURE__ */ React15.createElement(
|
|
866
1026
|
"div",
|
|
867
1027
|
{
|
|
868
1028
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -871,7 +1031,7 @@ var ManagedBoardBlock = ({
|
|
|
871
1031
|
backgroundRepeat: "repeat"
|
|
872
1032
|
}
|
|
873
1033
|
}
|
|
874
|
-
), /* @__PURE__ */
|
|
1034
|
+
), /* @__PURE__ */ React15.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10" }, tagline && /* @__PURE__ */ React15.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block " }, tagline), /* @__PURE__ */ React15.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-4 md:py-8" }, /* @__PURE__ */ React15.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5 md:gap-8" }, members.map((member, idx) => /* @__PURE__ */ React15.createElement("div", { key: idx, className: "relative p-6 md:p-8 rounded-2xl bg-neutral-900 flex flex-col transition-all group" }, /* @__PURE__ */ React15.createElement("div", { className: "flex items-start space-x-4 md:space-x-5 mb-5 md:mb-6" }, /* @__PURE__ */ React15.createElement("div", { className: "relative w-14 h-14 md:w-16 md:h-16 shrink-0 bg-neutral-800 overflow-hidden rounded-xl " }, /* @__PURE__ */ React15.createElement(
|
|
875
1035
|
Image5,
|
|
876
1036
|
{
|
|
877
1037
|
src: member.imageSrc,
|
|
@@ -880,7 +1040,7 @@ var ManagedBoardBlock = ({
|
|
|
880
1040
|
sizes: "(max-width: 768px) 56px, 64px",
|
|
881
1041
|
className: "object-cover grayscale opacity-100 transition-opacity"
|
|
882
1042
|
}
|
|
883
|
-
)), /* @__PURE__ */
|
|
1043
|
+
)), /* @__PURE__ */ React15.createElement("div", { className: "pt-1" }, /* @__PURE__ */ React15.createElement("h3", { className: "text-[14px] md:text-[15px] text-white tracking-tight" }, member.name), /* @__PURE__ */ React15.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500 mt-1.5 " }, member.title))), /* @__PURE__ */ React15.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 text-left grow mb-8" }, member.bio), /* @__PURE__ */ React15.createElement("div", { className: "space-y-6 mt-auto" }, /* @__PURE__ */ React15.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React15.createElement(ThreeDButton, { href: member.website }, "Visit Website")), /* @__PURE__ */ React15.createElement("div", { className: "flex space-x-4 pt-5" }, member.twitterHandle && member.twitterHandle.length > 0 && /* @__PURE__ */ React15.createElement(
|
|
884
1044
|
MemberSocialLink,
|
|
885
1045
|
{
|
|
886
1046
|
href: `https://x.com/${member.twitterHandle}`,
|
|
@@ -888,7 +1048,7 @@ var ManagedBoardBlock = ({
|
|
|
888
1048
|
label: "X",
|
|
889
1049
|
name: member.name
|
|
890
1050
|
}
|
|
891
|
-
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */
|
|
1051
|
+
), member.linkedinHandle && member.linkedinHandle.length > 0 && /* @__PURE__ */ React15.createElement(
|
|
892
1052
|
MemberSocialLink,
|
|
893
1053
|
{
|
|
894
1054
|
href: member.linkedinHandle,
|
|
@@ -896,11 +1056,11 @@ var ManagedBoardBlock = ({
|
|
|
896
1056
|
label: "LinkedIn",
|
|
897
1057
|
name: member.name
|
|
898
1058
|
}
|
|
899
|
-
))))))), (contactText || contactEmail) && /* @__PURE__ */
|
|
1059
|
+
))))))), (contactText || contactEmail) && /* @__PURE__ */ React15.createElement("div", { className: "relative px-5 md:px-12 py-8 md:py-10 pb-12 md:pb-14" }, /* @__PURE__ */ React15.createElement("p", { className: "text-[11px] text-neutral-500 text-left" }, contactText, contactEmail && /* @__PURE__ */ React15.createElement("a", { href: `mailto:${contactEmail}`, className: "text-white decoration-white decoration-2 underline-offset-4 ml-1 transition-colors" }, contactEmail))))));
|
|
900
1060
|
};
|
|
901
1061
|
|
|
902
1062
|
// src/components/ManagedNotFoundBlock.tsx
|
|
903
|
-
import
|
|
1063
|
+
import React16 from "react";
|
|
904
1064
|
import Link6 from "next/link";
|
|
905
1065
|
var ManagedNotFoundBlock = ({
|
|
906
1066
|
title = "404 - Page Not Found",
|
|
@@ -908,15 +1068,15 @@ var ManagedNotFoundBlock = ({
|
|
|
908
1068
|
backLinkText = "Go back to Homepage",
|
|
909
1069
|
backLinkHref = "/"
|
|
910
1070
|
}) => {
|
|
911
|
-
return /* @__PURE__ */
|
|
1071
|
+
return /* @__PURE__ */ React16.createElement("main", { className: "min-h-screen flex items-center justify-center relative z-20 bg-black" }, /* @__PURE__ */ React16.createElement("div", { className: "p-6 w-full max-w-md mx-auto text-center" }, /* @__PURE__ */ React16.createElement("div", { className: "mb-8 flex justify-center" }, /* @__PURE__ */ React16.createElement(
|
|
912
1072
|
"svg",
|
|
913
1073
|
{
|
|
914
1074
|
xmlns: "http://www.w3.org/2000/svg",
|
|
915
1075
|
viewBox: "0 0 24 24",
|
|
916
1076
|
className: "w-12 h-12 fill-neutral-700"
|
|
917
1077
|
},
|
|
918
|
-
/* @__PURE__ */
|
|
919
|
-
)), /* @__PURE__ */
|
|
1078
|
+
/* @__PURE__ */ React16.createElement("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" })
|
|
1079
|
+
)), /* @__PURE__ */ React16.createElement("h1", { className: "text-xl md:text-3xl text-white tracking-tight mb-4" }, title), /* @__PURE__ */ React16.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 mb-12" }, description), /* @__PURE__ */ React16.createElement(
|
|
920
1080
|
Link6,
|
|
921
1081
|
{
|
|
922
1082
|
href: backLinkHref,
|
|
@@ -927,7 +1087,7 @@ var ManagedNotFoundBlock = ({
|
|
|
927
1087
|
};
|
|
928
1088
|
|
|
929
1089
|
// src/components/PageSpinner.tsx
|
|
930
|
-
import
|
|
1090
|
+
import React17 from "react";
|
|
931
1091
|
import { HugeiconsIcon as HugeiconsIcon8 } from "@hugeicons/react";
|
|
932
1092
|
import { Loading03Icon as Loading03Icon3 } from "@hugeicons/core-free-icons";
|
|
933
1093
|
var PageSpinner = ({
|
|
@@ -937,7 +1097,7 @@ var PageSpinner = ({
|
|
|
937
1097
|
}) => {
|
|
938
1098
|
return (
|
|
939
1099
|
// z-[100] ensures it sits above absolute headers and modals
|
|
940
|
-
/* @__PURE__ */
|
|
1100
|
+
/* @__PURE__ */ React17.createElement("div", { className: `fixed inset-0 z-100 flex flex-col items-center justify-center w-full h-full pointer-events-none ${className}` }, /* @__PURE__ */ React17.createElement(
|
|
941
1101
|
HugeiconsIcon8,
|
|
942
1102
|
{
|
|
943
1103
|
icon: Loading03Icon3,
|
|
@@ -949,10 +1109,10 @@ var PageSpinner = ({
|
|
|
949
1109
|
};
|
|
950
1110
|
|
|
951
1111
|
// src/components/ManagedToaster.tsx
|
|
952
|
-
import
|
|
1112
|
+
import React18 from "react";
|
|
953
1113
|
import { Toaster } from "react-hot-toast";
|
|
954
1114
|
var ManagedToaster = () => {
|
|
955
|
-
return /* @__PURE__ */
|
|
1115
|
+
return /* @__PURE__ */ React18.createElement(
|
|
956
1116
|
Toaster,
|
|
957
1117
|
{
|
|
958
1118
|
position: "top-right",
|
|
@@ -984,7 +1144,7 @@ var ManagedToaster = () => {
|
|
|
984
1144
|
};
|
|
985
1145
|
|
|
986
1146
|
// src/components/ManagedNewsletterSplitBlock.tsx
|
|
987
|
-
import
|
|
1147
|
+
import React19 from "react";
|
|
988
1148
|
import Image6 from "next/image";
|
|
989
1149
|
var ManagedNewsletterSplitBlock = ({
|
|
990
1150
|
tagline,
|
|
@@ -998,7 +1158,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
998
1158
|
ctaHref = "/contact-us",
|
|
999
1159
|
children
|
|
1000
1160
|
}) => {
|
|
1001
|
-
return /* @__PURE__ */
|
|
1161
|
+
return /* @__PURE__ */ React19.createElement("div", { className: "grow flex flex-col md:flex-row relative w-full pt-32 md:pt-0 bg-black" }, /* @__PURE__ */ React19.createElement("div", { className: "hidden md:block md:w-1/2 relative min-h-screen overflow-hidden bg-neutral-900" }, /* @__PURE__ */ React19.createElement(
|
|
1002
1162
|
Image6,
|
|
1003
1163
|
{
|
|
1004
1164
|
src: imageSrc,
|
|
@@ -1008,7 +1168,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1008
1168
|
className: "object-cover object-top grayscale opacity-60",
|
|
1009
1169
|
quality: 100
|
|
1010
1170
|
}
|
|
1011
|
-
), /* @__PURE__ */
|
|
1171
|
+
), /* @__PURE__ */ React19.createElement(
|
|
1012
1172
|
"div",
|
|
1013
1173
|
{
|
|
1014
1174
|
className: "absolute inset-0 z-10 pointer-events-none",
|
|
@@ -1016,7 +1176,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1016
1176
|
background: "linear-gradient(to right, rgba(0,0,0,0) 30%, #000000 100%)"
|
|
1017
1177
|
}
|
|
1018
1178
|
}
|
|
1019
|
-
), /* @__PURE__ */
|
|
1179
|
+
), /* @__PURE__ */ React19.createElement(
|
|
1020
1180
|
"div",
|
|
1021
1181
|
{
|
|
1022
1182
|
className: "absolute inset-x-0 bottom-0 h-40 z-10 pointer-events-none",
|
|
@@ -1024,7 +1184,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1024
1184
|
background: "linear-gradient(to bottom, rgba(0,0,0,0) 0%, #000000 100%)"
|
|
1025
1185
|
}
|
|
1026
1186
|
}
|
|
1027
|
-
)), /* @__PURE__ */
|
|
1187
|
+
)), /* @__PURE__ */ React19.createElement("div", { className: "w-full md:w-1/2 flex mt-22 flex-col items-center justify-center p-4 md:p-12 relative z-20" }, /* @__PURE__ */ React19.createElement("div", { className: "relative w-full max-w-lg p-8 md:p-12 text-center md:text-left transition-all duration-700 ease-out" }, /* @__PURE__ */ React19.createElement(
|
|
1028
1188
|
"div",
|
|
1029
1189
|
{
|
|
1030
1190
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1033,7 +1193,7 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1033
1193
|
backgroundRepeat: "repeat"
|
|
1034
1194
|
}
|
|
1035
1195
|
}
|
|
1036
|
-
), /* @__PURE__ */
|
|
1196
|
+
), /* @__PURE__ */ React19.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React19.createElement("div", { className: "mb-10 border-b border-neutral-800 pb-8 text-center md:text-left" }, tagline && /* @__PURE__ */ React19.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500" }, tagline), /* @__PURE__ */ React19.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight mb-4" }, title), subtitle && /* @__PURE__ */ React19.createElement("p", { className: "text-[11px] tracking-[0.2em] text-neutral-500" }, subtitle)), /* @__PURE__ */ React19.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 mb-10 text-center md:text-left" }, description), children && /* @__PURE__ */ React19.createElement("div", { className: "mb-8 text-left" }, children), /* @__PURE__ */ React19.createElement("div", { className: "text-center md:text-left mt-10 space-y-6" }, dividerText && /* @__PURE__ */ React19.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React19.createElement("div", { className: "grow h-px bg-neutral-800" }), /* @__PURE__ */ React19.createElement("span", { className: "shrink mx-4 text-[11px] tracking-[0.2em] text-neutral-600" }, dividerText), /* @__PURE__ */ React19.createElement("div", { className: "grow h-px bg-neutral-800" })), ctaText && ctaHref && /* @__PURE__ */ React19.createElement("div", { className: "w-full *:w-full" }, /* @__PURE__ */ React19.createElement(
|
|
1037
1197
|
ThreeDButton,
|
|
1038
1198
|
{
|
|
1039
1199
|
href: ctaHref,
|
|
@@ -1043,58 +1203,8 @@ var ManagedNewsletterSplitBlock = ({
|
|
|
1043
1203
|
)))))));
|
|
1044
1204
|
};
|
|
1045
1205
|
|
|
1046
|
-
// src/components/ReusableInputs.tsx
|
|
1047
|
-
import React18 from "react";
|
|
1048
|
-
var TextInput = ({
|
|
1049
|
-
label,
|
|
1050
|
-
value,
|
|
1051
|
-
onChange,
|
|
1052
|
-
placeholder,
|
|
1053
|
-
maxLength,
|
|
1054
|
-
disabled,
|
|
1055
|
-
readOnly,
|
|
1056
|
-
type = "text",
|
|
1057
|
-
onClick
|
|
1058
|
-
}) => /* @__PURE__ */ React18.createElement("div", { className: "space-y-2 flex-1 w-full", onClick }, label && /* @__PURE__ */ React18.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ React18.createElement(
|
|
1059
|
-
"input",
|
|
1060
|
-
{
|
|
1061
|
-
type,
|
|
1062
|
-
value,
|
|
1063
|
-
onChange: (e) => onChange(e.target.value.substring(0, maxLength || 100)),
|
|
1064
|
-
placeholder,
|
|
1065
|
-
disabled,
|
|
1066
|
-
readOnly,
|
|
1067
|
-
autoComplete: "off",
|
|
1068
|
-
spellCheck: "false",
|
|
1069
|
-
className: `w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-800 text-white transition-all outline-none focus:border-white disabled:opacity-50 ${readOnly ? "cursor-pointer" : ""}`
|
|
1070
|
-
}
|
|
1071
|
-
));
|
|
1072
|
-
var NumberInput = ({
|
|
1073
|
-
label,
|
|
1074
|
-
value,
|
|
1075
|
-
onChange,
|
|
1076
|
-
placeholder,
|
|
1077
|
-
maxLength,
|
|
1078
|
-
disabled
|
|
1079
|
-
}) => /* @__PURE__ */ React18.createElement("div", { className: "space-y-2 flex-1 w-full" }, label && /* @__PURE__ */ React18.createElement("label", { className: "text-[11px] text-neutral-500 tracking-[0.2em] block " }, label), /* @__PURE__ */ React18.createElement(
|
|
1080
|
-
"input",
|
|
1081
|
-
{
|
|
1082
|
-
type: "text",
|
|
1083
|
-
value,
|
|
1084
|
-
onChange: (e) => {
|
|
1085
|
-
const numOnly = e.target.value.replace(/[^0-9]/g, "");
|
|
1086
|
-
onChange(numOnly.substring(0, maxLength || 20));
|
|
1087
|
-
},
|
|
1088
|
-
placeholder,
|
|
1089
|
-
disabled,
|
|
1090
|
-
autoComplete: "off",
|
|
1091
|
-
spellCheck: "false",
|
|
1092
|
-
className: "w-full px-2 py-3 text-sm bg-transparent border-b border-neutral-800 text-white transition-all outline-none focus:border-white disabled:opacity-50"
|
|
1093
|
-
}
|
|
1094
|
-
));
|
|
1095
|
-
|
|
1096
1206
|
// src/components/PortfolioHero.tsx
|
|
1097
|
-
import
|
|
1207
|
+
import React20, { useEffect as useEffect8, useRef as useRef7 } from "react";
|
|
1098
1208
|
import Link7 from "next/link";
|
|
1099
1209
|
import Image7 from "next/image";
|
|
1100
1210
|
import { HugeiconsIcon as HugeiconsIcon9 } from "@hugeicons/react";
|
|
@@ -1137,13 +1247,13 @@ var PortfolioHero = ({
|
|
|
1137
1247
|
secondaryCtaHref
|
|
1138
1248
|
}) => {
|
|
1139
1249
|
const heroContentRef = useScrollAnimation();
|
|
1140
|
-
return /* @__PURE__ */
|
|
1250
|
+
return /* @__PURE__ */ React20.createElement("section", { className: "pt-44 md:pt-52 pb-16 px-6 md:px-12 flex flex-col relative overflow-hidden z-10 w-full bg-black" }, /* @__PURE__ */ React20.createElement(
|
|
1141
1251
|
"div",
|
|
1142
1252
|
{
|
|
1143
1253
|
ref: heroContentRef,
|
|
1144
1254
|
className: "w-full opacity-0 translate-y-5 transition-all duration-1000 ease-out relative z-10"
|
|
1145
1255
|
},
|
|
1146
|
-
/* @__PURE__ */
|
|
1256
|
+
/* @__PURE__ */ React20.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-5 sm:gap-8 mb-10" }, /* @__PURE__ */ React20.createElement("div", { className: "relative w-20 h-20 sm:w-32 sm:h-32 rounded-full overflow-hidden shrink-0 shadow-sm" }, /* @__PURE__ */ React20.createElement(
|
|
1147
1257
|
Image7,
|
|
1148
1258
|
{
|
|
1149
1259
|
src: imageSrc,
|
|
@@ -1154,7 +1264,7 @@ var PortfolioHero = ({
|
|
|
1154
1264
|
sizes: "(max-width: 640px) 80px, 128px",
|
|
1155
1265
|
quality: 100
|
|
1156
1266
|
}
|
|
1157
|
-
)), /* @__PURE__ */
|
|
1267
|
+
)), /* @__PURE__ */ React20.createElement("div", { className: "flex flex-col text-left" }, /* @__PURE__ */ React20.createElement("h1", { className: "text-3xl sm:text-5xl lg:text-6xl tracking-tight text-white leading-none mb-3" }, name), socialLabel && /* @__PURE__ */ React20.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500" }, socialLabel), socialLinkText && socialLinkHref && /* @__PURE__ */ React20.createElement(
|
|
1158
1268
|
"a",
|
|
1159
1269
|
{
|
|
1160
1270
|
href: socialLinkHref,
|
|
@@ -1164,28 +1274,28 @@ var PortfolioHero = ({
|
|
|
1164
1274
|
},
|
|
1165
1275
|
socialLinkText
|
|
1166
1276
|
))),
|
|
1167
|
-
/* @__PURE__ */
|
|
1168
|
-
/* @__PURE__ */
|
|
1277
|
+
/* @__PURE__ */ React20.createElement("p", { className: "text-[13px] leading-[1.8] max-w-4xl mb-12 text-neutral-400" }, bio),
|
|
1278
|
+
/* @__PURE__ */ React20.createElement("div", { className: "flex flex-col sm:flex-row gap-4 w-full sm:w-auto" }, primaryCtaText && primaryCtaHref && /* @__PURE__ */ React20.createElement("div", { className: "w-full sm:w-auto *:w-full" }, /* @__PURE__ */ React20.createElement(
|
|
1169
1279
|
ThreeDButton,
|
|
1170
1280
|
{
|
|
1171
1281
|
href: primaryCtaHref,
|
|
1172
1282
|
className: "py-2.5 tracking-widest text-[11px]"
|
|
1173
1283
|
},
|
|
1174
1284
|
primaryCtaText
|
|
1175
|
-
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */
|
|
1285
|
+
)), secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ React20.createElement(
|
|
1176
1286
|
Link7,
|
|
1177
1287
|
{
|
|
1178
1288
|
href: secondaryCtaHref,
|
|
1179
1289
|
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"
|
|
1180
1290
|
},
|
|
1181
1291
|
secondaryCtaText,
|
|
1182
|
-
/* @__PURE__ */
|
|
1292
|
+
/* @__PURE__ */ React20.createElement(HugeiconsIcon9, { icon: ArrowRight01Icon2, size: 16 })
|
|
1183
1293
|
))
|
|
1184
1294
|
));
|
|
1185
1295
|
};
|
|
1186
1296
|
|
|
1187
1297
|
// src/components/GifFeatureCard.tsx
|
|
1188
|
-
import
|
|
1298
|
+
import React21, { useState as useState10 } from "react";
|
|
1189
1299
|
import Image8 from "next/image";
|
|
1190
1300
|
import { HugeiconsIcon as HugeiconsIcon10 } from "@hugeicons/react";
|
|
1191
1301
|
import { Loading03Icon as Loading03Icon4 } from "@hugeicons/core-free-icons";
|
|
@@ -1196,20 +1306,20 @@ var GifFeatureCard = ({
|
|
|
1196
1306
|
alt = "Feature animation",
|
|
1197
1307
|
className = "aspect-video"
|
|
1198
1308
|
}) => {
|
|
1199
|
-
const [isLoading, setIsLoading] =
|
|
1200
|
-
return /* @__PURE__ */
|
|
1309
|
+
const [isLoading, setIsLoading] = useState10(true);
|
|
1310
|
+
return /* @__PURE__ */ React21.createElement("div", { className: `relative w-full bg-black overflow-hidden shadow-2xl ${className}` }, isLoading && /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-0 flex items-center justify-center z-20 bg-black" }, /* @__PURE__ */ React21.createElement(
|
|
1201
1311
|
HugeiconsIcon10,
|
|
1202
1312
|
{
|
|
1203
1313
|
icon: Loading03Icon4,
|
|
1204
1314
|
size: 32,
|
|
1205
1315
|
className: "animate-spin text-white"
|
|
1206
1316
|
}
|
|
1207
|
-
)), /* @__PURE__ */
|
|
1317
|
+
)), /* @__PURE__ */ React21.createElement(
|
|
1208
1318
|
"div",
|
|
1209
1319
|
{
|
|
1210
1320
|
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"}`
|
|
1211
1321
|
},
|
|
1212
|
-
/* @__PURE__ */
|
|
1322
|
+
/* @__PURE__ */ React21.createElement(
|
|
1213
1323
|
Image8,
|
|
1214
1324
|
{
|
|
1215
1325
|
src: gifSrc,
|
|
@@ -1220,16 +1330,16 @@ var GifFeatureCard = ({
|
|
|
1220
1330
|
className: "object-cover object-center pointer-events-none"
|
|
1221
1331
|
}
|
|
1222
1332
|
)
|
|
1223
|
-
), /* @__PURE__ */
|
|
1333
|
+
), /* @__PURE__ */ React21.createElement(
|
|
1224
1334
|
"div",
|
|
1225
1335
|
{
|
|
1226
1336
|
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"
|
|
1227
1337
|
}
|
|
1228
|
-
), /* @__PURE__ */
|
|
1338
|
+
), /* @__PURE__ */ React21.createElement("div", { className: "absolute inset-x-0 bottom-0 p-6 sm:p-8 z-30 flex flex-col justify-end text-left pointer-events-none" }, title && /* @__PURE__ */ React21.createElement("h3", { className: "text-xl sm:text-2xl md:text-3xl text-white tracking-tight mb-2 sm:mb-3 drop-shadow-md" }, title), subtitle && /* @__PURE__ */ React21.createElement("p", { className: "text-[13px] sm:text-[15px] leading-relaxed text-neutral-300 max-w-2xl drop-shadow-sm" }, subtitle)));
|
|
1229
1339
|
};
|
|
1230
1340
|
|
|
1231
1341
|
// src/components/MedicalFeatureStatsBlock.tsx
|
|
1232
|
-
import
|
|
1342
|
+
import React22, { useState as useState11, useEffect as useEffect9, useRef as useRef8 } from "react";
|
|
1233
1343
|
import Image9 from "next/image";
|
|
1234
1344
|
var MedicalFeatureStatsBlock = ({
|
|
1235
1345
|
bottomHeadline,
|
|
@@ -1238,7 +1348,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1238
1348
|
trustText,
|
|
1239
1349
|
stats
|
|
1240
1350
|
}) => {
|
|
1241
|
-
const [isAnimating, setIsAnimating] =
|
|
1351
|
+
const [isAnimating, setIsAnimating] = useState11(false);
|
|
1242
1352
|
const titleRef = useRef8(null);
|
|
1243
1353
|
useEffect9(() => {
|
|
1244
1354
|
const observer = new IntersectionObserver(
|
|
@@ -1258,7 +1368,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1258
1368
|
}
|
|
1259
1369
|
return () => observer.disconnect();
|
|
1260
1370
|
}, []);
|
|
1261
|
-
return /* @__PURE__ */
|
|
1371
|
+
return /* @__PURE__ */ React22.createElement("section", { className: "py-24 w-full flex justify-center relative z-10 bg-black" }, /* @__PURE__ */ React22.createElement("div", { className: "max-w-6xl w-full flex flex-col px-4 md:px-8" }, /* @__PURE__ */ React22.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-10 mb-12" }, /* @__PURE__ */ React22.createElement("div", { className: "max-w-xl" }, /* @__PURE__ */ React22.createElement(
|
|
1262
1372
|
"h2",
|
|
1263
1373
|
{
|
|
1264
1374
|
ref: titleRef,
|
|
@@ -1266,7 +1376,7 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1266
1376
|
style: isAnimating ? { animationIterationCount: 1 } : {}
|
|
1267
1377
|
},
|
|
1268
1378
|
bottomHeadline
|
|
1269
|
-
), /* @__PURE__ */
|
|
1379
|
+
), /* @__PURE__ */ React22.createElement("p", { className: "text-[14px] leading-relaxed text-neutral-400" }, bottomDescription)), /* @__PURE__ */ React22.createElement("div", { className: "flex items-center gap-4 shrink-0" }, /* @__PURE__ */ React22.createElement("div", { className: "flex -space-x-3" }, avatars.map((src, i) => /* @__PURE__ */ React22.createElement("div", { key: i, className: "relative w-12 h-12 rounded-full border-[3px] border-black overflow-hidden bg-neutral-900 z-1 hover:z-10 transition-all" }, /* @__PURE__ */ React22.createElement(
|
|
1270
1380
|
Image9,
|
|
1271
1381
|
{
|
|
1272
1382
|
src,
|
|
@@ -1275,17 +1385,17 @@ var MedicalFeatureStatsBlock = ({
|
|
|
1275
1385
|
sizes: "48px",
|
|
1276
1386
|
className: "object-cover"
|
|
1277
1387
|
}
|
|
1278
|
-
)))), /* @__PURE__ */
|
|
1388
|
+
)))), /* @__PURE__ */ React22.createElement("p", { className: "text-[11px] text-neutral-400 leading-[1.4] max-w-55" }, trustText))), /* @__PURE__ */ React22.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, stats.map((stat, idx) => /* @__PURE__ */ React22.createElement("div", { key: idx, className: "bg-neutral-900 rounded-4xl p-8 md:p-10 flex flex-col h-70" }, /* @__PURE__ */ React22.createElement("div", { className: "flex items-center p-0.5 mb-6" }, /* @__PURE__ */ React22.createElement("span", { className: "text-[14px] text-neutral-400 tracking-wide" }, stat.label)), /* @__PURE__ */ React22.createElement("div", { className: "text-6xl gradient-text md:text-[80px] font-light tracking-tighter text-white mt-auto leading-none" }, stat.value))))));
|
|
1279
1389
|
};
|
|
1280
1390
|
|
|
1281
1391
|
// src/components/ConsultantShowcase.tsx
|
|
1282
|
-
import
|
|
1392
|
+
import React23, { useState as useState12 } from "react";
|
|
1283
1393
|
import Image10 from "next/image";
|
|
1284
1394
|
import { HugeiconsIcon as HugeiconsIcon11 } from "@hugeicons/react";
|
|
1285
1395
|
import { Loading03Icon as Loading03Icon5 } from "@hugeicons/core-free-icons";
|
|
1286
1396
|
var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
1287
|
-
const [isLoading, setIsLoading] =
|
|
1288
|
-
return /* @__PURE__ */
|
|
1397
|
+
const [isLoading, setIsLoading] = useState12(true);
|
|
1398
|
+
return /* @__PURE__ */ React23.createElement("div", { className: `absolute inset-0 bg-neutral-900 ${className}` }, isLoading && /* @__PURE__ */ React23.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__ */ React23.createElement(HugeiconsIcon11, { icon: Loading03Icon5, size: 24, className: "animate-spin text-white/50" })), /* @__PURE__ */ React23.createElement(
|
|
1289
1399
|
Image10,
|
|
1290
1400
|
{
|
|
1291
1401
|
src,
|
|
@@ -1304,9 +1414,9 @@ var ImageWithLoader = ({ src, alt, className, sizes, priority = false }) => {
|
|
|
1304
1414
|
var ConsultantShowcase = ({
|
|
1305
1415
|
profiles
|
|
1306
1416
|
}) => {
|
|
1307
|
-
const [currentIndex, setCurrentIndex] =
|
|
1308
|
-
const [touchStart, setTouchStart] =
|
|
1309
|
-
const [touchEnd, setTouchEnd] =
|
|
1417
|
+
const [currentIndex, setCurrentIndex] = useState12(0);
|
|
1418
|
+
const [touchStart, setTouchStart] = useState12(null);
|
|
1419
|
+
const [touchEnd, setTouchEnd] = useState12(null);
|
|
1310
1420
|
const nextSlide = () => {
|
|
1311
1421
|
setCurrentIndex((prev) => prev === profiles.length - 1 ? 0 : prev + 1);
|
|
1312
1422
|
};
|
|
@@ -1331,7 +1441,7 @@ var ConsultantShowcase = ({
|
|
|
1331
1441
|
}
|
|
1332
1442
|
};
|
|
1333
1443
|
if (!profiles || profiles.length === 0) return null;
|
|
1334
|
-
return /* @__PURE__ */
|
|
1444
|
+
return /* @__PURE__ */ React23.createElement("section", { className: "py-24 w-full flex justify-center px-4 md:px-8 z-10 relative bg-black" }, /* @__PURE__ */ React23.createElement("div", { className: "max-w-6xl w-full" }, /* @__PURE__ */ React23.createElement(
|
|
1335
1445
|
"div",
|
|
1336
1446
|
{
|
|
1337
1447
|
className: "relative w-full h-100 md:h-112.5 rounded-4xl overflow-hidden bg-neutral-900 group select-none",
|
|
@@ -1341,13 +1451,13 @@ var ConsultantShowcase = ({
|
|
|
1341
1451
|
},
|
|
1342
1452
|
profiles.map((profile, idx) => {
|
|
1343
1453
|
const isActive = idx === currentIndex;
|
|
1344
|
-
return /* @__PURE__ */
|
|
1454
|
+
return /* @__PURE__ */ React23.createElement(
|
|
1345
1455
|
"div",
|
|
1346
1456
|
{
|
|
1347
1457
|
key: profile.id,
|
|
1348
1458
|
className: `absolute inset-0 transition-opacity duration-700 ease-in-out ${isActive ? "opacity-100 z-10" : "opacity-0 z-0 pointer-events-none"}`
|
|
1349
1459
|
},
|
|
1350
|
-
/* @__PURE__ */
|
|
1460
|
+
/* @__PURE__ */ React23.createElement(
|
|
1351
1461
|
ImageWithLoader,
|
|
1352
1462
|
{
|
|
1353
1463
|
src: profile.imageSrc,
|
|
@@ -1355,14 +1465,14 @@ var ConsultantShowcase = ({
|
|
|
1355
1465
|
priority: idx === 0
|
|
1356
1466
|
}
|
|
1357
1467
|
),
|
|
1358
|
-
/* @__PURE__ */
|
|
1359
|
-
/* @__PURE__ */
|
|
1360
|
-
/* @__PURE__ */
|
|
1468
|
+
/* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 bg-black/40 z-10 pointer-events-none" }),
|
|
1469
|
+
/* @__PURE__ */ React23.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" }),
|
|
1470
|
+
/* @__PURE__ */ React23.createElement("div", { className: `absolute top-8 left-8 md:top-12 md:left-12 z-30 text-white max-w-lg transition-transform duration-700 ease-out ${isActive ? "translate-y-0" : "-translate-y-4"}` }, /* @__PURE__ */ React23.createElement("h2", { className: "text-[29px] tracking-tight mb-2 leading-none" }, profile.name), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-0.5" }, /* @__PURE__ */ React23.createElement("p", { className: "text-[15px] text-neutral-300 font-light tracking-wide" }, profile.role), profile.description && /* @__PURE__ */ React23.createElement("p", { className: "text-[15px] text-neutral-400 font-light tracking-wide mt-1" }, profile.description)))
|
|
1361
1471
|
);
|
|
1362
1472
|
}),
|
|
1363
|
-
/* @__PURE__ */
|
|
1364
|
-
/* @__PURE__ */
|
|
1365
|
-
/* @__PURE__ */
|
|
1473
|
+
/* @__PURE__ */ React23.createElement("div", { className: "absolute top-0 left-0 w-[20%] h-full z-40 cursor-w-resize hidden md:block", onClick: prevSlide, "aria-label": "Previous image" }),
|
|
1474
|
+
/* @__PURE__ */ React23.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" }),
|
|
1475
|
+
/* @__PURE__ */ React23.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__ */ React23.createElement(
|
|
1366
1476
|
"button",
|
|
1367
1477
|
{
|
|
1368
1478
|
key: idx,
|
|
@@ -1375,7 +1485,7 @@ var ConsultantShowcase = ({
|
|
|
1375
1485
|
};
|
|
1376
1486
|
|
|
1377
1487
|
// src/components/ContentGridBlock.tsx
|
|
1378
|
-
import
|
|
1488
|
+
import React24, { useState as useState13 } from "react";
|
|
1379
1489
|
import Image11 from "next/image";
|
|
1380
1490
|
import { HugeiconsIcon as HugeiconsIcon12 } from "@hugeicons/react";
|
|
1381
1491
|
import { Loading03Icon as Loading03Icon6 } from "@hugeicons/core-free-icons";
|
|
@@ -1386,23 +1496,23 @@ var ContentGridBlock = ({
|
|
|
1386
1496
|
middleBottomCard,
|
|
1387
1497
|
rightCards
|
|
1388
1498
|
}) => {
|
|
1389
|
-
return /* @__PURE__ */
|
|
1499
|
+
return /* @__PURE__ */ React24.createElement("section", { className: "w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React24.createElement("div", { className: "max-w-300 w-full px-4 md:px-8 flex flex-col gap-12" }, /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col lg:flex-row justify-between items-start lg:items-end gap-6 w-full" }, /* @__PURE__ */ React24.createElement("h2", { className: "text-3xl tracking-tight text-white leading-[1.15] max-w-lg" }, header.titlePrefix, " ", /* @__PURE__ */ React24.createElement("span", { className: "gradient-text" }, header.highlightText))), /* @__PURE__ */ React24.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col justify-end" }, /* @__PURE__ */ React24.createElement("div", { className: "bg-neutral-900 rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React24.createElement("p", { className: "text-[17px] text-white leading-snug mb-4" }, leftCard.mainText), leftCard.tag && /* @__PURE__ */ React24.createElement("span", { className: "mb-auto text-[11px] text-neutral-400 tracking-widest" }, leftCard.tag), /* @__PURE__ */ React24.createElement("div", { className: "flex items-center justify-between mt-8" }, /* @__PURE__ */ React24.createElement("div", null, /* @__PURE__ */ React24.createElement("h4", { className: "text-[15px] text-white" }, leftCard.title), /* @__PURE__ */ React24.createElement("p", { className: "text-[13px] text-neutral-400" }, leftCard.subtitle)), /* @__PURE__ */ React24.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React24.createElement(Image11, { src: leftCard.thumbnailSrc, alt: leftCard.title, fill: true, className: "object-cover" }))))), /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React24.createElement("div", { className: "border border-neutral-800 rounded-3xl p-8 flex flex-col relative h-75" }, /* @__PURE__ */ React24.createElement("div", { className: "absolute top-6 right-6 flex flex-col items-end gap-1" }, /* @__PURE__ */ React24.createElement("span", { className: "text-[11px] text-neutral-500 tracking-wide" }, middleTopCard.topRightLabel), /* @__PURE__ */ React24.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React24.createElement("div", { className: "flex -space-x-2" }, middleTopCard.topRightAvatars.map((src, i) => /* @__PURE__ */ React24.createElement("div", { key: i, className: "w-7 h-7 rounded-full border-2 border-black overflow-hidden relative z-10" }, /* @__PURE__ */ React24.createElement(Image11, { src, alt: "Avatar", fill: true, className: "object-cover", sizes: "28px" })))), /* @__PURE__ */ React24.createElement("span", { className: "text-sm text-neutral-400" }, middleTopCard.topRightCount))), /* @__PURE__ */ React24.createElement("div", { className: "grow flex flex-col justify-center items-center py-6" }, /* @__PURE__ */ React24.createElement("div", { className: "px-5 py-2 rounded-full bg-neutral-900/50 border border-neutral-800 text-[13px] text-neutral-400" }, middleTopCard.badgePrefix, " ", /* @__PURE__ */ React24.createElement("span", { className: "text-white" }, middleTopCard.badgeHighlight), middleTopCard.badgeSuffix)), /* @__PURE__ */ React24.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React24.createElement("p", { className: "text-[11px] text-neutral-500 tracking-wide mb-1" }, middleTopCard.title), /* @__PURE__ */ React24.createElement("p", { className: "text-[14px] text-white leading-snug pr-4" }, middleTopCard.description))), /* @__PURE__ */ React24.createElement("div", { className: "border border-neutral-800 rounded-3xl p-8 flex flex-col h-80" }, /* @__PURE__ */ React24.createElement("div", { className: "flex justify-between items-start mb-6" }, /* @__PURE__ */ React24.createElement("div", null, /* @__PURE__ */ React24.createElement("h4", { className: "text-[15px] text-white leading-tight" }, middleBottomCard.title), /* @__PURE__ */ React24.createElement("p", { className: "text-[13px] text-neutral-500" }, middleBottomCard.subtitle)), /* @__PURE__ */ React24.createElement("div", { className: "w-10 h-10 rounded-full overflow-hidden relative" }, /* @__PURE__ */ React24.createElement(Image11, { src: middleBottomCard.thumbnailSrc, alt: middleBottomCard.title, fill: true, className: "object-cover" }))), /* @__PURE__ */ React24.createElement("div", { className: "mt-auto" }, /* @__PURE__ */ React24.createElement("p", { className: "text-[16px] text-white leading-snug mb-4" }, middleBottomCard.mainText), middleBottomCard.tag && /* @__PURE__ */ React24.createElement("span", { className: "text-[11px] text-neutral-500 tracking-widest" }, middleBottomCard.tag)))), /* @__PURE__ */ React24.createElement("div", { className: "flex flex-col gap-6" }, rightCards.slice(0, 2).map((card, idx) => /* @__PURE__ */ React24.createElement("div", { key: idx, className: "relative w-full h-80 bg-neutral-900 text-white rounded-3xl overflow-hidden group" }, /* @__PURE__ */ React24.createElement("div", { className: "absolute inset-0 z-20 pointer-events-none" }), /* @__PURE__ */ React24.createElement("div", { className: "absolute inset-0 z-30 p-6 flex flex-col justify-end text-white" }, /* @__PURE__ */ React24.createElement("p", { className: "text-[14px] leading-snug mb-3 pr-2 text-white/90" }, card.mainText), card.tag && /* @__PURE__ */ React24.createElement("span", { className: "mb-4 text-[11px] text-white/50 tracking-widest" }, card.tag), /* @__PURE__ */ React24.createElement("div", { className: "pt-3" }, /* @__PURE__ */ React24.createElement("h4", { className: "text-[15px] tracking-wide" }, card.title), /* @__PURE__ */ React24.createElement("p", { className: "text-[13px] text-white/60" }, card.subtitle)))))))));
|
|
1390
1500
|
};
|
|
1391
1501
|
|
|
1392
1502
|
// src/components/ManagedProjectsBlock.tsx
|
|
1393
|
-
import
|
|
1503
|
+
import React25 from "react";
|
|
1394
1504
|
import Link8 from "next/link";
|
|
1395
1505
|
var GridSection = ({
|
|
1396
1506
|
children,
|
|
1397
1507
|
isLast = false,
|
|
1398
1508
|
className = "py-8 md:py-10"
|
|
1399
|
-
}) => /* @__PURE__ */
|
|
1509
|
+
}) => /* @__PURE__ */ React25.createElement("div", { className: `relative px-5 md:px-12 ${className} ${!isLast ? "" : ""}` }, children);
|
|
1400
1510
|
var ManagedProjectsBlock = ({
|
|
1401
1511
|
tagline,
|
|
1402
1512
|
title,
|
|
1403
1513
|
projects
|
|
1404
1514
|
}) => {
|
|
1405
|
-
return /* @__PURE__ */
|
|
1515
|
+
return /* @__PURE__ */ React25.createElement("div", { className: "grow pt-28 pb-20 px-3 md:px-8 w-full flex justify-center z-10 relative bg-black" }, /* @__PURE__ */ React25.createElement("div", { className: "relative bg-neutral-900 rounded-2xl w-full max-w-5xl mx-auto overflow-hidden shadow-2xl" }, /* @__PURE__ */ React25.createElement(
|
|
1406
1516
|
"div",
|
|
1407
1517
|
{
|
|
1408
1518
|
className: "absolute inset-0 pointer-events-none opacity-[0.03] z-0",
|
|
@@ -1411,101 +1521,12 @@ var ManagedProjectsBlock = ({
|
|
|
1411
1521
|
backgroundRepeat: "repeat"
|
|
1412
1522
|
}
|
|
1413
1523
|
}
|
|
1414
|
-
), /* @__PURE__ */
|
|
1524
|
+
), /* @__PURE__ */ React25.createElement("div", { className: "relative z-10" }, /* @__PURE__ */ React25.createElement(GridSection, null, tagline && /* @__PURE__ */ React25.createElement("span", { className: "text-[11px] tracking-[0.4em] text-neutral-500 text-left block" }, tagline), /* @__PURE__ */ React25.createElement("h1", { className: "text-3xl mt-4 text-white tracking-tight text-left" }, title)), projects.map((project, index) => {
|
|
1415
1525
|
const isLast = index === projects.length - 1;
|
|
1416
|
-
const projectContent = /* @__PURE__ */
|
|
1417
|
-
return /* @__PURE__ */
|
|
1526
|
+
const projectContent = /* @__PURE__ */ React25.createElement("div", { className: "group block w-full" }, /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-3 md:gap-4 mb-4 md:mb-5" }, /* @__PURE__ */ React25.createElement("div", { className: "flex items-center gap-3 md:gap-4" }, /* @__PURE__ */ React25.createElement("h2", { className: "text-[16px] text-white transition-all flex items-center gap-2" }, project.title, /* @__PURE__ */ React25.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__ */ React25.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__ */ React25.createElement("span", { className: "text-[11px] tracking-[0.2em] text-neutral-500 shrink-0" }, project.date)), /* @__PURE__ */ React25.createElement("p", { className: "text-[13px] leading-[1.8] text-neutral-400 max-w-4xl text-left transition-colors group-hover:text-neutral-300" }, project.description));
|
|
1527
|
+
return /* @__PURE__ */ React25.createElement(GridSection, { key: project.id || index, isLast, className: isLast ? "py-8 md:py-10 pb-12 md:pb-14" : "py-8 md:py-10" }, project.isExternal ? /* @__PURE__ */ React25.createElement("a", { href: project.link, target: "_blank", rel: "noopener noreferrer", className: "block outline-none" }, projectContent) : /* @__PURE__ */ React25.createElement(Link8, { href: project.link, className: "block outline-none" }, projectContent));
|
|
1418
1528
|
}))));
|
|
1419
1529
|
};
|
|
1420
|
-
|
|
1421
|
-
// src/components/WaitlistDialog.tsx
|
|
1422
|
-
import React25, { useState as useState13 } from "react";
|
|
1423
|
-
import { toast } from "react-hot-toast";
|
|
1424
|
-
var WaitlistDialog = ({ isOpen, onClose }) => {
|
|
1425
|
-
const [email, setEmail] = useState13("");
|
|
1426
|
-
const [isLoading, setIsLoading] = useState13(false);
|
|
1427
|
-
if (!isOpen) return null;
|
|
1428
|
-
const handleSubmit = async (e) => {
|
|
1429
|
-
e.preventDefault();
|
|
1430
|
-
if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
1431
|
-
toast.error("Please enter a valid email address.");
|
|
1432
|
-
return;
|
|
1433
|
-
}
|
|
1434
|
-
setIsLoading(true);
|
|
1435
|
-
try {
|
|
1436
|
-
const response = await fetch("/api/waitlist", {
|
|
1437
|
-
method: "POST",
|
|
1438
|
-
headers: {
|
|
1439
|
-
"Content-Type": "application/json"
|
|
1440
|
-
},
|
|
1441
|
-
body: JSON.stringify({ email })
|
|
1442
|
-
});
|
|
1443
|
-
const data = await response.json();
|
|
1444
|
-
if (response.ok && data.success) {
|
|
1445
|
-
toast.success(data.message || "You've been added to the waitlist!");
|
|
1446
|
-
setEmail("");
|
|
1447
|
-
onClose();
|
|
1448
|
-
} else {
|
|
1449
|
-
toast.error(data.error || "Something went wrong. Please try again.");
|
|
1450
|
-
}
|
|
1451
|
-
} catch (error) {
|
|
1452
|
-
toast.error("Network error. Please check your connection.");
|
|
1453
|
-
} finally {
|
|
1454
|
-
setIsLoading(false);
|
|
1455
|
-
}
|
|
1456
|
-
};
|
|
1457
|
-
return /* @__PURE__ */ React25.createElement("div", { className: "fixed inset-0 z-100 flex items-center justify-center p-4 bg-black/60 " }, /* @__PURE__ */ React25.createElement("div", { className: "absolute inset-0", onClick: !isLoading ? onClose : void 0 }), /* @__PURE__ */ React25.createElement(
|
|
1458
|
-
"div",
|
|
1459
|
-
{
|
|
1460
|
-
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"
|
|
1461
|
-
},
|
|
1462
|
-
/* @__PURE__ */ React25.createElement(
|
|
1463
|
-
"button",
|
|
1464
|
-
{
|
|
1465
|
-
onClick: onClose,
|
|
1466
|
-
disabled: isLoading,
|
|
1467
|
-
className: "absolute top-4 right-4 p-2 text-neutral-500 hover:text-white transition-colors disabled:opacity-50 outline-none",
|
|
1468
|
-
"aria-label": "Close dialog"
|
|
1469
|
-
},
|
|
1470
|
-
/* @__PURE__ */ React25.createElement(
|
|
1471
|
-
"svg",
|
|
1472
|
-
{
|
|
1473
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1474
|
-
width: "20",
|
|
1475
|
-
height: "20",
|
|
1476
|
-
viewBox: "0 0 24 24",
|
|
1477
|
-
fill: "none",
|
|
1478
|
-
stroke: "currentColor",
|
|
1479
|
-
strokeWidth: "2",
|
|
1480
|
-
strokeLinecap: "round",
|
|
1481
|
-
strokeLinejoin: "round"
|
|
1482
|
-
},
|
|
1483
|
-
/* @__PURE__ */ React25.createElement("path", { d: "M18 6 6 18" }),
|
|
1484
|
-
/* @__PURE__ */ React25.createElement("path", { d: "m6 6 12 12" })
|
|
1485
|
-
)
|
|
1486
|
-
),
|
|
1487
|
-
/* @__PURE__ */ React25.createElement("div", { className: "p-6 sm:p-8" }, /* @__PURE__ */ React25.createElement("div", { className: "mb-8 mt-2" }, /* @__PURE__ */ React25.createElement("h2", { className: "text-2xl font-light text-white tracking-tight mb-2" }, "Join the Waitlist"), /* @__PURE__ */ React25.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__ */ React25.createElement("form", { onSubmit: handleSubmit, className: "flex flex-col gap-8" }, /* @__PURE__ */ React25.createElement(
|
|
1488
|
-
TextInput,
|
|
1489
|
-
{
|
|
1490
|
-
label: "EMAIL ADDRESS",
|
|
1491
|
-
type: "email",
|
|
1492
|
-
value: email,
|
|
1493
|
-
onChange: setEmail,
|
|
1494
|
-
placeholder: "name@example.com",
|
|
1495
|
-
disabled: isLoading
|
|
1496
|
-
}
|
|
1497
|
-
), /* @__PURE__ */ React25.createElement(
|
|
1498
|
-
ThreeDActionButton,
|
|
1499
|
-
{
|
|
1500
|
-
type: "submit",
|
|
1501
|
-
isLoading,
|
|
1502
|
-
disabled: !email,
|
|
1503
|
-
className: "w-full mt-2"
|
|
1504
|
-
},
|
|
1505
|
-
"Join Waitlist"
|
|
1506
|
-
)))
|
|
1507
|
-
));
|
|
1508
|
-
};
|
|
1509
1530
|
export {
|
|
1510
1531
|
AppBento2,
|
|
1511
1532
|
ConsultantShowcase,
|