Merge version_2_1782052126442 into main #1
@@ -1,5 +1,5 @@
|
||||
import FooterBrand from '@/components/sections/footer/FooterBrand';
|
||||
import NavbarCentered from '@/components/ui/NavbarCentered';
|
||||
import NavbarFloatingLogo from '@/components/ui/NavbarFloatingLogo';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
import SiteBackgroundSlot from "@/components/ui/SiteBackgroundSlot";
|
||||
import { Outlet } from 'react-router-dom';
|
||||
@@ -41,8 +41,9 @@ export default function Layout() {
|
||||
<StyleProvider buttonVariant="bubble" siteBackground="gridDots" heroBackground="gradientBars">
|
||||
<SiteBackgroundSlot />
|
||||
<SectionErrorBoundary name="navbar">
|
||||
<NavbarCentered
|
||||
logo="Confident. Local. Measurable."
|
||||
<NavbarFloatingLogo
|
||||
logo="Pulse Point Media NI"
|
||||
logoImageSrc="https://storage.googleapis.com/webild/users/user_3FIz6snJPeDvZERJUlVII7bqhSh/uploaded-1782052013217-ejofqs29.jpg"
|
||||
ctaButton={{
|
||||
text: "Get Audit",
|
||||
href: "/contact",
|
||||
@@ -54,7 +55,7 @@ export default function Layout() {
|
||||
</main>
|
||||
<SectionErrorBoundary name="footer">
|
||||
<FooterBrand
|
||||
brand="Confident. Local. Measurable."
|
||||
brand="Pulse Point Media NI"
|
||||
columns={[
|
||||
{
|
||||
items: [
|
||||
|
||||
@@ -1,137 +1,27 @@
|
||||
import AboutTestimonialParallax from '@/components/sections/about/AboutTestimonialParallax';
|
||||
import BlogSimpleCards from '@/components/sections/blog/BlogSimpleCards';
|
||||
import HeroSplit from '@/components/sections/hero/HeroSplit';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import { MapPin, ShieldCheck, TrendingUp } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
|
||||
// files directly. Non-block content (wrappers, non-inlinable sections) is
|
||||
// preserved inline; extracted section blocks become <XSection/> refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import TrustSection from './HomePage/sections/Trust';
|
||||
import TestimonialSection from './HomePage/sections/Testimonial';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import BlogSection from './HomePage/sections/Blog';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplit
|
||||
tag="Pulse Point Media NI"
|
||||
title="Belfast’s Local Digital Marketing Agency — Found Online. Stay Found."
|
||||
description="We help local businesses dominate local search and capture more customers in Northern Ireland. Professional, measurable results."
|
||||
primaryButton={{
|
||||
text: "Get Your Free Audit",
|
||||
href: "/contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Services",
|
||||
href: "/services",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/management-verifying-task-progress_482257-80309.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="trust" data-section="trust">
|
||||
<SectionErrorBoundary name="trust">
|
||||
<MetricsIconCards
|
||||
tag="Why Us"
|
||||
title="Belfast-based. Local Results."
|
||||
description="We understand the Northern Ireland market. No long-term contracts, just growth."
|
||||
metrics={[
|
||||
{
|
||||
icon: MapPin,
|
||||
title: "Local Expertise",
|
||||
value: "Belfast",
|
||||
},
|
||||
{
|
||||
icon: TrendingUp,
|
||||
title: "Monthly Growth",
|
||||
value: "100%",
|
||||
},
|
||||
{
|
||||
icon: ShieldCheck,
|
||||
title: "No Contracts",
|
||||
value: "Flexible",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TrustSection />
|
||||
|
||||
<div id="testimonial" data-section="testimonial">
|
||||
<SectionErrorBoundary name="testimonial">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Client Success"
|
||||
title="Don't Just Take Our Word For It"
|
||||
description="Businesses across Belfast trust Pulse Point Media."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah Jenkins",
|
||||
role: "Owner, Belfast Boutique",
|
||||
quote: "Incredible increase in local footfall since we started with their GBP optimisation.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elderly-woman-drinking-coffee-cafe-while-working-her-laptop-writing-her-notebook_23-2149230375.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark O'Connor",
|
||||
role: "Manager, Local Cafe",
|
||||
quote: "Professional, consistent, and they really understand the Belfast market.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/corporate-coworkers-discussing-marketing-strategy_482257-77600.jpg",
|
||||
},
|
||||
{
|
||||
name: "Liam Doherty",
|
||||
role: "Consultant",
|
||||
quote: "Highly responsive team. We’ve seen 40% growth in organic leads.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/corporate-employee-working-overhours-marketing-project_482257-77551.jpg",
|
||||
},
|
||||
{
|
||||
name: "Fiona McCloskey",
|
||||
role: "Retailer",
|
||||
quote: "Simple, no-nonsense pricing that actually delivers real return on investment.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smart-businesswoman-holding-tablet_23-2148452627.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonialParallax
|
||||
tag="Our Philosophy"
|
||||
quote="We believe digital marketing shouldn't be a black box. It should be transparent, measurable, and above all, profitable for our local clients."
|
||||
author="The Pulse Point Team"
|
||||
role="Digital Growth Experts"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/executive-managers-looking-marketing-statistics-computer_482257-77621.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="blog" data-section="blog">
|
||||
<SectionErrorBoundary name="blog">
|
||||
<BlogSimpleCards
|
||||
tag="Insights"
|
||||
title="Marketing Tips for Belfast Businesses"
|
||||
description="Learn how to get more out of your digital presence."
|
||||
items={[
|
||||
{
|
||||
category: "GBP",
|
||||
title: "How to rank #1 in Belfast maps",
|
||||
excerpt: "Key factors for Google Business Profile success in NI.",
|
||||
authorName: "Team Pulse",
|
||||
authorImageSrc: "",
|
||||
date: "Oct 24, 2023",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/computer-screen-business-office-shows-stock-exchange-values-changing_482257-84627.jpg",
|
||||
},
|
||||
{
|
||||
category: "SEO",
|
||||
title: "Website speed and local SEO",
|
||||
excerpt: "Why your loading times are killing your local search rankings.",
|
||||
authorName: "Team Pulse",
|
||||
authorImageSrc: "",
|
||||
date: "Oct 15, 2023",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/contemporary-room-workplace-office-supplies-concept_53876-31812.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<BlogSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// 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 AboutTestimonialParallax from '@/components/sections/about/AboutTestimonialParallax';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonialParallax
|
||||
tag="Our Philosophy"
|
||||
quote="We believe digital marketing shouldn't be a black box. It should be transparent, measurable, and above all, profitable for our local clients."
|
||||
author="The Pulse Point Team"
|
||||
role="Digital Growth Experts"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/executive-managers-looking-marketing-statistics-computer_482257-77621.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Blog.tsx
Normal file
40
src/pages/HomePage/sections/Blog.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "blog" section.
|
||||
|
||||
import React from 'react';
|
||||
import BlogSimpleCards from '@/components/sections/blog/BlogSimpleCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function BlogSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="blog" data-section="blog">
|
||||
<SectionErrorBoundary name="blog">
|
||||
<BlogSimpleCards
|
||||
tag="Insights"
|
||||
title="Marketing Tips for Belfast Businesses"
|
||||
description="Learn how to get more out of your digital presence."
|
||||
items={[
|
||||
{
|
||||
category: "GBP",
|
||||
title: "How to rank #1 in Belfast maps",
|
||||
excerpt: "Key factors for Google Business Profile success in NI.",
|
||||
authorName: "Team Pulse",
|
||||
authorImageSrc: "",
|
||||
date: "Oct 24, 2023",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/computer-screen-business-office-shows-stock-exchange-values-changing_482257-84627.jpg",
|
||||
},
|
||||
{
|
||||
category: "SEO",
|
||||
title: "Website speed and local SEO",
|
||||
excerpt: "Why your loading times are killing your local search rankings.",
|
||||
authorName: "Team Pulse",
|
||||
authorImageSrc: "",
|
||||
date: "Oct 15, 2023",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/contemporary-room-workplace-office-supplies-concept_53876-31812.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Hero.tsx
Normal file
29
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// 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 HeroSplit from '@/components/sections/hero/HeroSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplit
|
||||
tag="Pulse Point Media NI"
|
||||
title="Belfast’s Local Digital Marketing Agency — Found Online. Stay Found."
|
||||
description="We help local businesses dominate local search and capture more customers in Northern Ireland. Professional, measurable results."
|
||||
primaryButton={{
|
||||
text: "Get Your Free Audit",
|
||||
href: "/contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Services",
|
||||
href: "/services",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/management-verifying-task-progress_482257-80309.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
46
src/pages/HomePage/sections/Testimonial.tsx
Normal file
46
src/pages/HomePage/sections/Testimonial.tsx
Normal file
@@ -0,0 +1,46 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "testimonial" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonial" data-section="testimonial">
|
||||
<SectionErrorBoundary name="testimonial">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Client Success"
|
||||
title="Don't Just Take Our Word For It"
|
||||
description="Businesses across Belfast trust Pulse Point Media."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah Jenkins",
|
||||
role: "Owner, Belfast Boutique",
|
||||
quote: "Incredible increase in local footfall since we started with their GBP optimisation.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elderly-woman-drinking-coffee-cafe-while-working-her-laptop-writing-her-notebook_23-2149230375.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark O'Connor",
|
||||
role: "Manager, Local Cafe",
|
||||
quote: "Professional, consistent, and they really understand the Belfast market.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/corporate-coworkers-discussing-marketing-strategy_482257-77600.jpg",
|
||||
},
|
||||
{
|
||||
name: "Liam Doherty",
|
||||
role: "Consultant",
|
||||
quote: "Highly responsive team. We’ve seen 40% growth in organic leads.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/corporate-employee-working-overhours-marketing-project_482257-77551.jpg",
|
||||
},
|
||||
{
|
||||
name: "Fiona McCloskey",
|
||||
role: "Retailer",
|
||||
quote: "Simple, no-nonsense pricing that actually delivers real return on investment.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smart-businesswoman-holding-tablet_23-2148452627.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Trust.tsx
Normal file
38
src/pages/HomePage/sections/Trust.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "trust" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import { MapPin, ShieldCheck, TrendingUp } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TrustSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="trust" data-section="trust">
|
||||
<SectionErrorBoundary name="trust">
|
||||
<MetricsIconCards
|
||||
tag="Why Us"
|
||||
title="Belfast-based. Local Results."
|
||||
description="We understand the Northern Ireland market. No long-term contracts, just growth."
|
||||
metrics={[
|
||||
{
|
||||
icon: MapPin,
|
||||
title: "Local Expertise",
|
||||
value: "Belfast",
|
||||
},
|
||||
{
|
||||
icon: TrendingUp,
|
||||
title: "Monthly Growth",
|
||||
value: "100%",
|
||||
},
|
||||
{
|
||||
icon: ShieldCheck,
|
||||
title: "No Contracts",
|
||||
value: "Flexible",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user