diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 5a995fa..fad2827 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -1,135 +1,36 @@ -import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay'; -import ContactCta from '@/components/sections/contact/ContactCta'; -import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn'; -import FeaturesBento from '@/components/sections/features/FeaturesBento'; -import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid'; -import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards'; -import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee'; -import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards'; -import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; +// AUTO-GENERATED shell by per-section-migrate. +// Section bodies live in .//sections/.tsx. Edit the section +// files directly. Non-block content (wrappers, non-inlinable sections) is +// preserved inline; extracted section blocks become 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 SocialProofSection from './HomePage/sections/SocialProof'; +import TestimonialsSection from './HomePage/sections/Testimonials'; +import FaqSection from './HomePage/sections/Faq'; +import ContactSection from './HomePage/sections/Contact'; + +export default function HomePage(): React.JSX.Element { return ( - <> -
- - - -
+<> + -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ ); } diff --git a/src/pages/HomePage/sections/About.tsx b/src/pages/HomePage/sections/About.tsx new file mode 100644 index 0000000..49bc5f6 --- /dev/null +++ b/src/pages/HomePage/sections/About.tsx @@ -0,0 +1,21 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "about" section. + +import React from 'react'; +import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function AboutSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Contact.tsx b/src/pages/HomePage/sections/Contact.tsx new file mode 100644 index 0000000..af892da --- /dev/null +++ b/src/pages/HomePage/sections/Contact.tsx @@ -0,0 +1,21 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "contact" section. + +import React from 'react'; +import ContactCta from '@/components/sections/contact/ContactCta'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ContactSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Faq.tsx b/src/pages/HomePage/sections/Faq.tsx new file mode 100644 index 0000000..830a1b7 --- /dev/null +++ b/src/pages/HomePage/sections/Faq.tsx @@ -0,0 +1,26 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "faq" section. + +import React from 'react'; +import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function FaqSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Features.tsx b/src/pages/HomePage/sections/Features.tsx new file mode 100644 index 0000000..aa30f3b --- /dev/null +++ b/src/pages/HomePage/sections/Features.tsx @@ -0,0 +1,130 @@ +/* eslint-disable */ +// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body +import Button from "@/components/ui/Button"; +import TextAnimation from "@/components/ui/TextAnimation"; +import GridOrCarousel from "@/components/ui/GridOrCarousel"; +import ScrollReveal from "@/components/ui/ScrollReveal"; +import InfoCardMarquee from "@/components/ui/InfoCardMarquee"; +import TiltedStackCards from "@/components/ui/TiltedStackCards"; +import AnimatedBarChart from "@/components/ui/AnimatedBarChart"; +import OrbitingIcons from "@/components/ui/OrbitingIcons"; +import IconTextMarquee from "@/components/ui/IconTextMarquee"; +import ChatMarquee from "@/components/ui/ChatMarquee"; +import ChecklistTimeline from "@/components/ui/ChecklistTimeline"; +import MediaStack from "@/components/ui/MediaStack"; +import type { LucideIcon } from "lucide-react"; + +const features = [ + { + title: "Advanced Analytics", + description: "Track your wealth velocity and performance metrics with real-time feedback loops.", + bentoComponent: "animated-bar-chart" + }, + { + title: "Strategic Roadmap", + description: "A step-by-step framework to maximize your return on effort.", + bentoComponent: "tilted-stack-cards", + stackCards: [ + { + icon: "BookOpen", + title: "Learn", + subtitle: "Stage 1", + detail: "Master the foundational concepts" + }, + { + icon: "Hammer", + title: "Build", + subtitle: "Stage 2", + detail: "Implement income-generating systems" + }, + { + icon: "Layers", + title: "Stack & Scale", + subtitle: "Stage 3", + detail: "Refine and scale your existing flows" + } + ] + } +]; + +type IconInput = string | LucideIcon; + +type FeatureCard = { title: string; description: string } & ( + | { bentoComponent: "info-card-marquee"; infoCards: { icon: IconInput; label: string; value: string }[] } + | { bentoComponent: "tilted-stack-cards"; stackCards: [{ icon: IconInput; title: string; subtitle: string; detail: string }, { icon: IconInput; title: string; subtitle: string; detail: string }, { icon: IconInput; title: string; subtitle: string; detail: string }] } + | { bentoComponent: "animated-bar-chart" } + | { bentoComponent: "orbiting-icons"; centerIcon: IconInput; orbitIcons: IconInput[] } + | { bentoComponent: "icon-text-marquee"; centerIcon: IconInput; marqueeTexts: string[] } + | { bentoComponent: "chat-marquee"; aiIcon: IconInput; userIcon: IconInput; exchanges: { userMessage: string; aiResponse: string }[]; placeholder: string } + | { bentoComponent: "checklist-timeline"; heading: string; subheading: string; checklistItems: [{ label: string; detail: string }, { label: string; detail: string }, { label: string; detail: string }]; completedLabel: string } + | { bentoComponent: "media-stack"; mediaItems: [{ imageSrc?: string; videoSrc?: string }, { imageSrc?: string; videoSrc?: string }, { imageSrc?: string; videoSrc?: string }] } +); + +const getBentoComponent = (feature: FeatureCard) => { + switch (feature.bentoComponent) { + case "info-card-marquee": return ; + case "tilted-stack-cards": return ; + case "animated-bar-chart": return ; + case "orbiting-icons": return ; + case "icon-text-marquee": return ; + case "chat-marquee": return ; + case "checklist-timeline": return ; + case "media-stack": return ; + } +}; + +const FeaturesInline = () => ( +
+
+
+
+

{"Systemized Growth"}

+
+ + + + + + {(undefined || undefined) && ( +
+ {undefined &&
+ )} +
+ + + {features.map((feature) => ( +
+
{getBentoComponent(feature)}
+
+

{feature.title}

+

{feature.description}

+
+
+ ))} +
+
+
+
+); + +export default function FeaturesSection() { + return ( +
+ +
+ ); +} diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx new file mode 100644 index 0000000..2ee8568 --- /dev/null +++ b/src/pages/HomePage/sections/Hero.tsx @@ -0,0 +1,26 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "hero" section. + +import React from 'react'; +import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function HeroSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Metrics.tsx b/src/pages/HomePage/sections/Metrics.tsx new file mode 100644 index 0000000..0354015 --- /dev/null +++ b/src/pages/HomePage/sections/Metrics.tsx @@ -0,0 +1,25 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "metrics" section. + +import React from 'react'; +import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function MetricsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/SocialProof.tsx b/src/pages/HomePage/sections/SocialProof.tsx new file mode 100644 index 0000000..caf5bf2 --- /dev/null +++ b/src/pages/HomePage/sections/SocialProof.tsx @@ -0,0 +1,21 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "social-proof" section. + +import React from 'react'; +import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function SocialProofSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Testimonials.tsx b/src/pages/HomePage/sections/Testimonials.tsx new file mode 100644 index 0000000..a4e2882 --- /dev/null +++ b/src/pages/HomePage/sections/Testimonials.tsx @@ -0,0 +1,27 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "testimonials" section. + +import React from 'react'; +import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function TestimonialsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +}