From 5e4c431621de95ce4250fd896a87a147c346624a Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Fri, 19 Jun 2026 20:26:47 +0000 Subject: [PATCH] Bob AI: Added client logos carousel section --- src/pages/HomePage.tsx | 241 ++------------------- src/pages/HomePage/sections/Clients.tsx | 57 +++++ src/pages/HomePage/sections/Compliance.tsx | 38 ++++ src/pages/HomePage/sections/Contact.tsx | 27 +++ src/pages/HomePage/sections/Coverage.tsx | 57 +++++ src/pages/HomePage/sections/Hero.tsx | 48 ++++ src/pages/HomePage/sections/Services.tsx | 58 +++++ src/pages/HomePage/sections/Stats.tsx | 48 ++++ 8 files changed, 355 insertions(+), 219 deletions(-) create mode 100644 src/pages/HomePage/sections/Clients.tsx create mode 100644 src/pages/HomePage/sections/Compliance.tsx create mode 100644 src/pages/HomePage/sections/Contact.tsx create mode 100644 src/pages/HomePage/sections/Coverage.tsx create mode 100644 src/pages/HomePage/sections/Hero.tsx create mode 100644 src/pages/HomePage/sections/Services.tsx create mode 100644 src/pages/HomePage/sections/Stats.tsx diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index cd479d3..0116cdf 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -1,229 +1,32 @@ -import ContactCta from '@/components/sections/contact/ContactCta'; -import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn'; -import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento'; -import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel'; -import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel'; -import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards'; -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 ServicesSection from './HomePage/sections/Services'; +import CoverageSection from './HomePage/sections/Coverage'; +import StatsSection from './HomePage/sections/Stats'; +import ComplianceSection from './HomePage/sections/Compliance'; +import ContactSection from './HomePage/sections/Contact'; + + +import ClientsSection from './HomePage/sections/Clients';export default function HomePage(): React.JSX.Element { return ( - <> -
- - - -
+<> + -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ + -
- - - -
+ ); } diff --git a/src/pages/HomePage/sections/Clients.tsx b/src/pages/HomePage/sections/Clients.tsx new file mode 100644 index 0000000..8a6828e --- /dev/null +++ b/src/pages/HomePage/sections/Clients.tsx @@ -0,0 +1,57 @@ +import ScrollReveal from '@/components/ui/ScrollReveal'; +import TextAnimation from '@/components/ui/TextAnimation'; +import LoopCarousel from '@/components/ui/LoopCarousel'; +import Tag from '@/components/ui/Tag'; + +export default function ClientsSection() { + const clients = [ + "TechCorp Dublin", + "Leinster Retail Group", + "Dublin City Events", + "Irish Construction Co.", + "Global Logistics IE", + "Trinity Corporate Park", + "Silicon Docks Tech", + "Grafton Street Retailers" + ]; + + return ( +
+
+ + + + + +

+ Trusted by leading enterprises, retail chains, and event organizers across Dublin and Leinster to maintain secure, compliant, and uninterrupted operations. +

+
+
+ +
+
+
+ + +
+ {clients.map((client, index) => ( +
+ {client} +
+ ))} +
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/pages/HomePage/sections/Compliance.tsx b/src/pages/HomePage/sections/Compliance.tsx new file mode 100644 index 0000000..5db8af6 --- /dev/null +++ b/src/pages/HomePage/sections/Compliance.tsx @@ -0,0 +1,38 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "compliance" section. + +import React from 'react'; +import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ComplianceSection(): 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..a93659e --- /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/Coverage.tsx b/src/pages/HomePage/sections/Coverage.tsx new file mode 100644 index 0000000..81371e3 --- /dev/null +++ b/src/pages/HomePage/sections/Coverage.tsx @@ -0,0 +1,57 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "coverage" section. + +import React from 'react'; +import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function CoverageSection(): 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..19a51a5 --- /dev/null +++ b/src/pages/HomePage/sections/Hero.tsx @@ -0,0 +1,48 @@ +// 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 HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function HeroSection(): 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..805b44e --- /dev/null +++ b/src/pages/HomePage/sections/Services.tsx @@ -0,0 +1,58 @@ +// 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 FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ServicesSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Stats.tsx b/src/pages/HomePage/sections/Stats.tsx new file mode 100644 index 0000000..d18ae0b --- /dev/null +++ b/src/pages/HomePage/sections/Stats.tsx @@ -0,0 +1,48 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "stats" section. + +import React from 'react'; +import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function StatsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} -- 2.49.1