From 193e922b921e157ae7595af24db89fbf47d9b630 Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Tue, 16 Jun 2026 07:10:54 +0000 Subject: [PATCH] Bob AI: Added trust badges, floating WhatsApp, CTAs, and timings. --- src/components/Layout.tsx | 19 +- src/pages/HomePage.tsx | 351 ++---------------- src/pages/HomePage/sections/About.tsx | 27 ++ src/pages/HomePage/sections/Contact.tsx | 27 ++ src/pages/HomePage/sections/CtaAbout.tsx | 24 ++ src/pages/HomePage/sections/CtaFinal.tsx | 24 ++ src/pages/HomePage/sections/CtaPricing.tsx | 24 ++ src/pages/HomePage/sections/CtaServices.tsx | 24 ++ .../HomePage/sections/CtaTestimonials.tsx | 24 ++ src/pages/HomePage/sections/Faq.tsx | 39 ++ src/pages/HomePage/sections/Features.tsx | 42 +++ src/pages/HomePage/sections/Hero.tsx | 36 ++ src/pages/HomePage/sections/Pricing.tsx | 74 ++++ src/pages/HomePage/sections/Services.tsx | 64 ++++ src/pages/HomePage/sections/Team.tsx | 37 ++ src/pages/HomePage/sections/Testimonials.tsx | 52 +++ src/pages/HomePage/sections/Timings.tsx | 26 ++ src/pages/HomePage/sections/TrustBanner.tsx | 27 ++ 18 files changed, 629 insertions(+), 312 deletions(-) create mode 100644 src/pages/HomePage/sections/About.tsx create mode 100644 src/pages/HomePage/sections/Contact.tsx create mode 100644 src/pages/HomePage/sections/CtaAbout.tsx create mode 100644 src/pages/HomePage/sections/CtaFinal.tsx create mode 100644 src/pages/HomePage/sections/CtaPricing.tsx create mode 100644 src/pages/HomePage/sections/CtaServices.tsx create mode 100644 src/pages/HomePage/sections/CtaTestimonials.tsx create mode 100644 src/pages/HomePage/sections/Faq.tsx create mode 100644 src/pages/HomePage/sections/Features.tsx create mode 100644 src/pages/HomePage/sections/Hero.tsx create mode 100644 src/pages/HomePage/sections/Pricing.tsx create mode 100644 src/pages/HomePage/sections/Services.tsx create mode 100644 src/pages/HomePage/sections/Team.tsx create mode 100644 src/pages/HomePage/sections/Testimonials.tsx create mode 100644 src/pages/HomePage/sections/Timings.tsx create mode 100644 src/pages/HomePage/sections/TrustBanner.tsx diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index c4acc36..9ea7c69 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -4,6 +4,7 @@ import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; import SiteBackgroundSlot from "@/components/ui/SiteBackgroundSlot"; import { Outlet } from 'react-router-dom'; import { StyleProvider } from "@/components/ui/StyleProvider"; +import { MessageCircle } from 'lucide-react'; export default function Layout() { const navItems = [ @@ -40,6 +41,15 @@ export default function Layout() { return ( +
+
+ 📞 +91 XXXXX XXXXX + 💬 WhatsApp: +91 XXXXX XXXXX +
+
+ 🕒 Mon-Sat: 9AM - 8PM | Sun: Emergency Only +
+
-
+
+ + + +
+ Book Now + WhatsApp +
/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 FeaturesSection from './HomePage/sections/Features'; +import AboutSection from './HomePage/sections/About'; +import ServicesSection from './HomePage/sections/Services'; +import PricingSection from './HomePage/sections/Pricing'; +import TeamSection from './HomePage/sections/Team'; +import TestimonialsSection from './HomePage/sections/Testimonials'; +import FaqSection from './HomePage/sections/Faq'; +import ContactSection from './HomePage/sections/Contact'; + + +import CtaServicesSection from './HomePage/sections/CtaServices'; +import CtaAboutSection from './HomePage/sections/CtaAbout'; +import CtaTestimonialsSection from './HomePage/sections/CtaTestimonials'; +import CtaPricingSection from './HomePage/sections/CtaPricing'; +import TrustBannerSection from './HomePage/sections/TrustBanner'; +import TimingsSection from './HomePage/sections/Timings'; +import CtaFinalSection from './HomePage/sections/CtaFinal';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..2258f9e --- /dev/null +++ b/src/pages/HomePage/sections/About.tsx @@ -0,0 +1,27 @@ +// 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 AboutTextSplit from '@/components/sections/about/AboutTextSplit'; +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..51fb098 --- /dev/null +++ b/src/pages/HomePage/sections/Contact.tsx @@ -0,0 +1,27 @@ +// 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/CtaAbout.tsx b/src/pages/HomePage/sections/CtaAbout.tsx new file mode 100644 index 0000000..2cedff5 --- /dev/null +++ b/src/pages/HomePage/sections/CtaAbout.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import ContactCta from '@/components/sections/contact/ContactCta'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function CtaAboutSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} \ No newline at end of file diff --git a/src/pages/HomePage/sections/CtaFinal.tsx b/src/pages/HomePage/sections/CtaFinal.tsx new file mode 100644 index 0000000..62c7391 --- /dev/null +++ b/src/pages/HomePage/sections/CtaFinal.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import ContactCta from '@/components/sections/contact/ContactCta'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function CtaFinalSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} \ No newline at end of file diff --git a/src/pages/HomePage/sections/CtaPricing.tsx b/src/pages/HomePage/sections/CtaPricing.tsx new file mode 100644 index 0000000..8ba1425 --- /dev/null +++ b/src/pages/HomePage/sections/CtaPricing.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import ContactCta from '@/components/sections/contact/ContactCta'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function CtaPricingSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} \ No newline at end of file diff --git a/src/pages/HomePage/sections/CtaServices.tsx b/src/pages/HomePage/sections/CtaServices.tsx new file mode 100644 index 0000000..3fd142f --- /dev/null +++ b/src/pages/HomePage/sections/CtaServices.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import ContactCta from '@/components/sections/contact/ContactCta'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function CtaServicesSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} \ No newline at end of file diff --git a/src/pages/HomePage/sections/CtaTestimonials.tsx b/src/pages/HomePage/sections/CtaTestimonials.tsx new file mode 100644 index 0000000..7027e52 --- /dev/null +++ b/src/pages/HomePage/sections/CtaTestimonials.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import ContactCta from '@/components/sections/contact/ContactCta'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function CtaTestimonialsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} \ No newline at end of file diff --git a/src/pages/HomePage/sections/Faq.tsx b/src/pages/HomePage/sections/Faq.tsx new file mode 100644 index 0000000..2b09772 --- /dev/null +++ b/src/pages/HomePage/sections/Faq.tsx @@ -0,0 +1,39 @@ +// 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 FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia'; +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..703e79e --- /dev/null +++ b/src/pages/HomePage/sections/Features.tsx @@ -0,0 +1,42 @@ +// 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 FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +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..66beff7 --- /dev/null +++ b/src/pages/HomePage/sections/Hero.tsx @@ -0,0 +1,36 @@ +// 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/Pricing.tsx b/src/pages/HomePage/sections/Pricing.tsx new file mode 100644 index 0000000..ddb795f --- /dev/null +++ b/src/pages/HomePage/sections/Pricing.tsx @@ -0,0 +1,74 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "pricing" section. + +import React from 'react'; +import PricingCenteredCards from '@/components/sections/pricing/PricingCenteredCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function PricingSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Services.tsx b/src/pages/HomePage/sections/Services.tsx new file mode 100644 index 0000000..23d91b8 --- /dev/null +++ b/src/pages/HomePage/sections/Services.tsx @@ -0,0 +1,64 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "services" section. + +import React from 'react'; +import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ServicesSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Team.tsx b/src/pages/HomePage/sections/Team.tsx new file mode 100644 index 0000000..827f033 --- /dev/null +++ b/src/pages/HomePage/sections/Team.tsx @@ -0,0 +1,37 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "team" section. + +import React from 'react'; +import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function TeamSection(): 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..68b1920 --- /dev/null +++ b/src/pages/HomePage/sections/Testimonials.tsx @@ -0,0 +1,52 @@ +// 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 TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function TestimonialsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Timings.tsx b/src/pages/HomePage/sections/Timings.tsx new file mode 100644 index 0000000..bc422bb --- /dev/null +++ b/src/pages/HomePage/sections/Timings.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; +import { Clock } from "lucide-react"; + +export default function TimingsSection(): React.JSX.Element { + return ( +
+ +
+ +

Clinic Timings

+
+
+ Monday – Saturday + 9:00 AM – 8:00 PM +
+
+ Sunday + Emergency Appointments Only +
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/pages/HomePage/sections/TrustBanner.tsx b/src/pages/HomePage/sections/TrustBanner.tsx new file mode 100644 index 0000000..f356bb6 --- /dev/null +++ b/src/pages/HomePage/sections/TrustBanner.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; +import { CheckCircle2 } from "lucide-react"; + +export default function TrustBannerSection(): React.JSX.Element { + return ( +
+ +
+
+ {[ + "Experienced Specialists", + "Modern Equipment", + "Pain-Free Treatments", + "Affordable Pricing" + ].map((item, i) => ( +
+ + {item} +
+ ))} +
+
+
+
+ ); +} \ No newline at end of file -- 2.49.1