Merge version_9_1782930082375 into main #13
@@ -1,108 +1,31 @@
|
||||
import HeroSplitVerticalMarqueeTall from '@/components/sections/hero/HeroSplitVerticalMarqueeTall';
|
||||
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
|
||||
import FeaturesBento from '@/components/sections/features/FeaturesBento';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in the sibling sections/ folder (one file per section).
|
||||
// Edit those section files directly. Non-block content (wrappers,
|
||||
// non-inlinable sections) is preserved inline; extracted section blocks
|
||||
// become component refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialSection from './HomePage/sections/Testimonial';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplitVerticalMarqueeTall
|
||||
tag=""
|
||||
title="There's no universal way to regulate a nervous system. There's yours."
|
||||
description="Most nervous system advice is built for a system that isn't yours. Take the 2-minute quiz to find out exactly which way your nervous system is stuck, and the protocol built for that, not someone else's."
|
||||
primaryButton={{ text: "Take the Free Nervous System Quiz", href: "" }}
|
||||
secondaryButton={{ text: "Book a consultation", href: "" }}
|
||||
leftItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/attractive-smiling-doctor-holding-hand-heart-dreamily-looking-camera-isolated-tender-touched-expression_574295-2653.jpg?_wi=4" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/braille-alpahbet-pills-container-top-view_23-2148718145.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/pleased-young-male-doctor-wearing-medical-coat-stethoscope-around-his-neck-looking-side-isolated-blue-background_141793-133933.jpg" }
|
||||
]}
|
||||
rightItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/hand-holding-pills-container_23-2148718176.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/flat-lay-pills-containers-stethoscope_23-2148718178.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-joyful-male-doctor_171337-1489.jpg" }
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutMediaOverlay
|
||||
tag="The Framework"
|
||||
title="You're not failing at regulation. You were given the wrong protocol."
|
||||
description="The nervous system space is full of generic advice — breathe this way, cold plunge, 'just relax' — handed to everyone the same way. It fails constantly, because a system stuck in shutdown needs the opposite of one stuck in high-alert. Tell a wired system to slow down, it helps. Tell a shut-down system the same thing, it sinks deeper. Same advice, opposite result. That's not a personal failure. That's a category error in the advice itself."
|
||||
textAnimation="slide-up"
|
||||
imageSrc="https://storage.googleapis.com/webild/users/user_3FsC0wB8czDFk8S4DfiXOATKTCs/uploaded-1782927149388-8rsakfoc.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBento
|
||||
tag="The Three Types"
|
||||
title="Every nervous system runs one of three ways."
|
||||
description="Stop chasing generic health trends and understand your biological baseline."
|
||||
features={[
|
||||
{ title: "Hyperactive", description: "Fight-or-Flight. Racing thoughts, anxious, 'tired but wired,' shallow sleep, jaw and neck tension.", bentoComponent: "info-card-marquee", infoCards: [{ icon: "Zap", label: "State", value: "High Alert" }] },
|
||||
{ title: "Hypoactive", description: "Freeze-Shutdown. Fatigue that sleep doesn't fix, brain fog, numbness, low motivation, checked out.", bentoComponent: "info-card-marquee", infoCards: [{ icon: "Snowflake", label: "State", value: "Shutdown" }] },
|
||||
{ title: "Regulated", description: "Flexible. Spikes under real stress, recovers, comes back to baseline.", bentoComponent: "info-card-marquee", infoCards: [{ icon: "CheckCircle", label: "State", value: "Baseline" }] }
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Clinical Rigor"
|
||||
title="Built by a clinician who sees this every day."
|
||||
description="Dr. Cam Daniels uses objective metrics to guide care, not intuition."
|
||||
metrics={[
|
||||
{ value: "80+", title: "Peer-Reviewed Studies", features: ["Advanced Neurological Research", "Validated Biomechanical Mapping", "System-Specific Protocols"] }
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonial" data-section="testimonial">
|
||||
<SectionErrorBoundary name="testimonial">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Social Proof"
|
||||
title="Real systems. Real results."
|
||||
description="What our clients are saying about the regulation framework."
|
||||
testimonials={[
|
||||
{ name: "Sarah J.", role: "Professional", quote: "Finally understood why my anxiety wouldn't subside. The protocol changed everything.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-senior-entrepreneur_1098-15359.jpg" },
|
||||
{ name: "Mark D.", role: "Entrepreneur", quote: "I was stuck in shutdown for years. Cam's clarity was the lever I needed.", imageSrc: "http://img.b2bpic.net/free-photo/smiling-female-doctor-medical-setting_23-2152005921.jpg" },
|
||||
{ name: "Emily R.", role: "Creative", quote: "Stop guessing. This framework actually works for my biology.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-beautiful-female-doctor-happily-looking-camera-smiling-white-background_574295-2641.jpg" },
|
||||
{ name: "David K.", role: "Developer", quote: "Data-backed, simple, and effective. The regulation protocol is genius.", imageSrc: "http://img.b2bpic.net/free-photo/physician-having-conversation-with-adult-medical-cabinet-taking-notes-about-health-care-diagnosis-general-practitioner-talking-mother-about-recovery-treatment-appointment_482257-41817.jpg" },
|
||||
{ name: "Lisa B.", role: "Teacher", quote: "Shifted my daily fatigue in weeks. I'm finally recovering.", imageSrc: "http://img.b2bpic.net/free-photo/closeup-patient-man-looking-into-camera-waiting-doctors-start-stomatology-surgery-sitting-dental-chair_482257-4877.jpg" }
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Pick your path"
|
||||
text="Start your regulation journey today."
|
||||
primaryButton={{ text: "Take the Quiz", href: "#" }}
|
||||
secondaryButton={{ text: "Join the Blueprint", href: "/blueprint" }}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,107 +1,26 @@
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import Button from "@/components/ui/Button";
|
||||
import HoverPattern from "@/components/ui/HoverPattern";
|
||||
import GridOrCarousel from "@/components/ui/GridOrCarousel";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import type { LucideIcon } from "lucide-react";
|
||||
import { resolveIcon } from "@/utils/resolve-icon";
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "features" section.
|
||||
|
||||
const features = [
|
||||
{
|
||||
description: "Fight-or-Flight. Racing thoughts, anxious, 'tired but wired,' shallow sleep, jaw and neck tension. Stop the cycle of burnout with targeted recovery.\n\nAKA sympathetic dominance",
|
||||
icon: "Zap",
|
||||
title: "Hyperactive"
|
||||
},
|
||||
{
|
||||
description: "Freeze-Shutdown. Fatigue that sleep doesn't fix, brain fog, numbness, low motivation, checked out. Stop the cycle of burnout with targeted recovery.\n\nAKA parasympathetic dominance",
|
||||
icon: "Snowflake",
|
||||
title: "Hypoactive"
|
||||
},
|
||||
{
|
||||
title: "Regulated",
|
||||
icon: "CheckCircle",
|
||||
description: "Flexible. Spikes under real stress, recovers, comes back to baseline. Stop the cycle of burnout with targeted recovery.\n\nAKA homeostasis"
|
||||
}
|
||||
];
|
||||
import React from 'react';
|
||||
import FeaturesBento from '@/components/sections/features/FeaturesBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
type FeatureItem = {
|
||||
icon: string | LucideIcon;
|
||||
title: string;
|
||||
description: string;
|
||||
};
|
||||
|
||||
interface FeaturesIconCardsProps {
|
||||
tag: string;
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton?: { text: string; href: string };
|
||||
secondaryButton?: { text: string; href: string };
|
||||
features: FeatureItem[];
|
||||
textAnimation: "slide-up" | "fade-blur" | "fade";
|
||||
}
|
||||
|
||||
const FeaturesInline = () => {
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<section aria-label="Features icon cards section" className="flex flex-col gap-8 md:gap-10 py-20">
|
||||
<div className="flex flex-col items-center gap-2 w-content-width mx-auto">
|
||||
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
|
||||
<p>{"The Three Types"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Every nervous system runs one of three ways."}
|
||||
variant={"slide-up"}
|
||||
gradientText={true}
|
||||
tag="h2"
|
||||
className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance"
|
||||
/>
|
||||
|
||||
<TextAnimation
|
||||
text={"Stop chasing generic health trends and understand your biological baseline."}
|
||||
variant={"slide-up"}
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance"
|
||||
/>
|
||||
|
||||
{(undefined || undefined) && (
|
||||
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3">
|
||||
{undefined && <Button text={undefined.text} href={undefined.href} variant="primary"/>}
|
||||
{undefined && <Button text={undefined.text} href={undefined.href} variant="secondary"animationDelay={0.1} />}
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBento
|
||||
tag="The Three Types"
|
||||
title="Every nervous system runs one of three ways."
|
||||
description="Stop chasing generic health trends and understand your biological baseline."
|
||||
features={[
|
||||
{ title: "Hyperactive", description: "Fight-or-Flight. Racing thoughts, anxious, 'tired but wired,' shallow sleep, jaw and neck tension.", bentoComponent: "info-card-marquee", infoCards: [{ icon: "Zap", label: "State", value: "High Alert" }] },
|
||||
{ title: "Hypoactive", description: "Freeze-Shutdown. Fatigue that sleep doesn't fix, brain fog, numbness, low motivation, checked out.", bentoComponent: "info-card-marquee", infoCards: [{ icon: "Snowflake", label: "State", value: "Shutdown" }] },
|
||||
{ title: "Regulated", description: "Flexible. Spikes under real stress, recovers, comes back to baseline.", bentoComponent: "info-card-marquee", infoCards: [{ icon: "CheckCircle", label: "State", value: "Baseline" }] }
|
||||
]}
|
||||
textAnimation="slide-up"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<ScrollReveal variant="fade-blur">
|
||||
<GridOrCarousel>
|
||||
{features.map((feature) => {
|
||||
const FeatureIcon = resolveIcon(feature.icon);
|
||||
return (
|
||||
<div key={feature.title} className="flex flex-col gap-3 xl:gap-3.5 2xl:gap-4 p-3 xl:p-3.5 2xl:p-4 h-full card rounded">
|
||||
<HoverPattern className="flex items-center justify-center rounded bg-foreground/5 shadow shadow-foreground/5 h-48">
|
||||
<div className="relative z-10 flex items-center justify-center size-12 md:size-14 2xl:size-16 primary-button rounded shadow">
|
||||
<FeatureIcon className="size-4 text-primary-cta-text" strokeWidth={1.5} />
|
||||
</div>
|
||||
</HoverPattern>
|
||||
<div className="flex flex-col gap-1 p-3 xl:p-3.5 2xl:p-4">
|
||||
<h3 className="text-2xl font-semibold leading-snug">{feature.title}</h3>
|
||||
<p className="text-base leading-snug">{feature.description}</p>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</GridOrCarousel>
|
||||
</ScrollReveal>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function FeaturesSection() {
|
||||
return (
|
||||
<div data-webild-section="features" id="features">
|
||||
<FeaturesInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,15 +7,15 @@ import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
|
||||
const primaryButton = {
|
||||
text: "Take the Free Nervous System Quiz",
|
||||
href: "#"
|
||||
href: ""
|
||||
};
|
||||
const secondaryButton = {
|
||||
text: "Learn More",
|
||||
href: "/about"
|
||||
text: "Book a consultation",
|
||||
href: ""
|
||||
};
|
||||
const leftItems = [
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/attractive-smiling-doctor-holding-hand-heart-dreamily-looking-camera-isolated-tender-touched-expression_574295-2653.jpg"
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/attractive-smiling-doctor-holding-hand-heart-dreamily-looking-camera-isolated-tender-touched-expression_574295-2653.jpg?_wi=4"
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/braille-alpahbet-pills-container-top-view_23-2148718145.jpg"
|
||||
@@ -57,19 +57,25 @@ const HeroInline = () => {
|
||||
<div className="flex flex-col md:flex-row items-center gap-12 md:gap-20 w-content-width mx-auto">
|
||||
<div className="w-full md:w-1/2">
|
||||
<div className="flex flex-col items-center md:items-start gap-3">
|
||||
|
||||
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
|
||||
<p>{""}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Stop guessing your nervous system state. Get a personalized, clinician-built protocol in 2 minutes."}
|
||||
text={"There's no universal way to regulate a nervous system. There's yours."}
|
||||
variant={"slide-up"}
|
||||
gradientText={false}
|
||||
gradientText={true}
|
||||
tag="h1"
|
||||
className="text-5xl md:text-6xl lg:text-7xl leading-[1.15] font-semibold text-center md:text-left text-balance text-foreground"
|
||||
className="text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center md:text-left text-balance"
|
||||
/>
|
||||
|
||||
<p className="md:max-w-8/10 text-lg md:text-xl leading-relaxed text-center md:text-left text-balance text-accent">
|
||||
There's no universal way to regulate a nervous system. <span className="text-primary-cta font-medium">There's yours.</span> Most nervous system advice is built for a system that isn't yours. If you've tried everything and are still stuck, <span className="text-primary-cta font-medium">you were given the wrong protocol.</span> Take the 2-minute quiz built by a practicing clinician — find out exactly which way your nervous system is stuck, and the protocol built for that, not someone else's.
|
||||
</p>
|
||||
<TextAnimation
|
||||
text={"Most nervous system advice is built for a system that isn't yours. Take the 2-minute quiz to find out exactly which way your nervous system is stuck, and the protocol built for that, not someone else's."}
|
||||
variant={"slide-up"}
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="md:max-w-8/10 text-lg md:text-xl leading-snug text-center md:text-left text-balance"
|
||||
/>
|
||||
|
||||
<div className="flex flex-wrap max-md:justify-center gap-3 mt-2 md:mt-3">
|
||||
<Button text={primaryButton.text} href={primaryButton.href} variant="primary"/>
|
||||
@@ -78,23 +84,8 @@ const HeroInline = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="w-full md:w-1/2 flex justify-center">
|
||||
<div className="w-full max-w-md aspect-[4/5] rounded-lg overflow-hidden card p-2">
|
||||
<ImageOrVideo
|
||||
imageSrc="https://storage.googleapis.com/webild/users/user_3FsC0wB8czDFk8S4DfiXOATKTCs/uploaded-1782928869659-ksina2wv.png"
|
||||
className="w-full h-full object-cover rounded"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="w-content-width mx-auto mt-24 pt-12 border-t border-white/10">
|
||||
<p className="text-center text-sm text-accent mb-8 uppercase tracking-widest">Trusted by & Featured In</p>
|
||||
<div className="flex flex-wrap justify-center items-center gap-8 md:gap-16 opacity-70 grayscale">
|
||||
<div className="text-xl font-bold font-serif text-foreground">The Specific</div>
|
||||
<div className="text-xl font-bold font-serif text-foreground">Upper Cervical Care</div>
|
||||
<div className="text-xl font-bold font-serif text-foreground">Functional Neurology</div>
|
||||
<div className="text-xl font-bold font-serif text-foreground">HRV Science</div>
|
||||
<div className="w-full md:w-1/2 flex justify-center overflow-hidden">
|
||||
<ImageOrVideo imageSrc="https://storage.googleapis.com/webild/users/user_3FsC0wB8czDFk8S4DfiXOATKTCs/uploaded-1782930080750-mw3a1a5q.jpg" className="w-full h-auto max-h-[75vh] object-cover rounded-lg" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user