diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx
index f5875cb..5213b7e 100644
--- a/src/pages/HomePage.tsx
+++ b/src/pages/HomePage.tsx
@@ -1,118 +1,37 @@
+// 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.
+
import { StyleProvider } from "@/components/ui/StyleProvider";
import SiteBackgroundSlot from "@/components/ui/SiteBackgroundSlot";
import PageTransitionSwirl from "@/components/ui/PageTransitionSwirl";
-import HeroBillboardBrandFloatingCards from "@/components/sections/hero/HeroBillboardBrandFloatingCards";
-import AboutCursorTrail from "@/components/sections/about/AboutCursorTrail";
-import FeaturesFilterGrid from "@/components/sections/features/FeaturesFilterGrid";
-import FeaturesGridSplitLarge from "@/components/sections/features/FeaturesGridSplitLarge";
-import ContactBar from "@/components/sections/contact/ContactBar";
-import { Phone, MessageCircle, Mail } from "lucide-react";
+import React from 'react';
+import HeroSection from './HomePage/sections/Hero';
+import AboutSection from './HomePage/sections/About';
+import MenuSection from './HomePage/sections/Menu';
+import FeaturesSection from './HomePage/sections/Features';
+import ContactSection from './HomePage/sections/Contact';
-export default function HomePage() {
+
+import ReviewsSection from './HomePage/sections/Reviews';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..5aaef03
--- /dev/null
+++ b/src/pages/HomePage/sections/About.tsx
@@ -0,0 +1,29 @@
+// 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 AboutCursorTrail from "@/components/sections/about/AboutCursorTrail";
+
+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..68ec9db
--- /dev/null
+++ b/src/pages/HomePage/sections/Contact.tsx
@@ -0,0 +1,23 @@
+// 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 ContactBar from "@/components/sections/contact/ContactBar";
+import { Phone, MessageCircle, Mail } from "lucide-react";
+
+export default function ContactSection(): 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..8057e43
--- /dev/null
+++ b/src/pages/HomePage/sections/Features.tsx
@@ -0,0 +1,36 @@
+// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
+// file as the canonical source for the "features" section.
+
+import React from 'react';
+import FeaturesGridSplitLarge from "@/components/sections/features/FeaturesGridSplitLarge";
+
+export default function FeaturesSection(): React.JSX.Element {
+ return (
+
+
+
+ );
+}
diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx
new file mode 100644
index 0000000..e94e034
--- /dev/null
+++ b/src/pages/HomePage/sections/Hero.tsx
@@ -0,0 +1,24 @@
+// 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 HeroBillboardBrandFloatingCards from "@/components/sections/hero/HeroBillboardBrandFloatingCards";
+
+export default function HeroSection(): React.JSX.Element {
+ return (
+
+
+
+ );
+}
diff --git a/src/pages/HomePage/sections/Menu.tsx b/src/pages/HomePage/sections/Menu.tsx
new file mode 100644
index 0000000..6bebe23
--- /dev/null
+++ b/src/pages/HomePage/sections/Menu.tsx
@@ -0,0 +1,33 @@
+// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
+// file as the canonical source for the "menu" section.
+
+import React from 'react';
+import FeaturesFilterGrid from "@/components/sections/features/FeaturesFilterGrid";
+
+export default function MenuSection(): React.JSX.Element {
+ return (
+
+ );
+}
diff --git a/src/pages/HomePage/sections/Reviews.tsx b/src/pages/HomePage/sections/Reviews.tsx
new file mode 100644
index 0000000..592752c
--- /dev/null
+++ b/src/pages/HomePage/sections/Reviews.tsx
@@ -0,0 +1,79 @@
+import TextAnimation from "@/components/ui/TextAnimation";
+import ScrollReveal from "@/components/ui/ScrollReveal";
+import Card from "@/components/ui/Card";
+import RatingStars from "@/components/ui/RatingStars";
+import ImageOrVideo from "@/components/ui/ImageOrVideo";
+import Tag from "@/components/ui/Tag";
+
+export default function ReviewsSection() {
+ const testimonials = [
+ {
+ name: "Sarah Jenkins",
+ role: "Local Resident",
+ quote: "The best oat milk latte in town, hands down. The atmosphere is so cozy, it's become my go-to spot for morning reading.",
+ rating: 5,
+ imageSrc: "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?auto=format&fit=crop&q=80&w=150&h=150"
+ },
+ {
+ name: "David Chen",
+ role: "Freelancer",
+ quote: "Incredible espresso and the staff always remembers my order. The freshly baked croissants are dangerously good.",
+ rating: 5,
+ imageSrc: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?auto=format&fit=crop&q=80&w=150&h=150"
+ },
+ {
+ name: "Emily Rodriguez",
+ role: "Coffee Enthusiast",
+ quote: "You can really taste the care they put into sourcing their beans. The pour-over selection is fantastic.",
+ rating: 5,
+ imageSrc: "https://images.unsplash.com/photo-1544005313-94ddf0286df2?auto=format&fit=crop&q=80&w=150&h=150"
+ }
+ ];
+
+ return (
+
+
+
+
+
+
+
+
+
+ Don't just take our word for it. Here's what the community thinks about our coffee and pastries.
+
+
+
+
+
+ {testimonials.map((testimonial, index) => (
+
+
+
+ "{testimonial.quote}"
+
+
+
+
+
+
{testimonial.name}
+
{testimonial.role}
+
+
+
+
+ ))}
+
+
+
+ );
+}
\ No newline at end of file