2 Commits

Author SHA1 Message Date
33ade5e404 Merge version_2_1781435861825 into main
Merge version_2_1781435861825 into main
2026-06-14 11:19:20 +00:00
kudinDmitriyUp
4eea2697e4 Bob AI: Added testimonial section with quotes from local Bergamo bus 2026-06-14 11:18:37 +00:00
9 changed files with 350 additions and 184 deletions

View File

@@ -1,195 +1,35 @@
import AboutText from '@/components/sections/about/AboutText';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesComparison from '@/components/sections/features/FeaturesComparison';
import HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
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 AboutSection from './HomePage/sections/About';
import FeaturesSection from './HomePage/sections/Features';
import MetricsSection from './HomePage/sections/Metrics';
import SocialSection from './HomePage/sections/Social';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
import TestimonialSection from './HomePage/sections/Testimonial';export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplitVerticalMarquee
tag="Soluzioni Professionali"
title="Recupero Crediti su Misura per la tua Azienda"
description="Service Lines S.R.L. offre assistenza esperta nel recupero crediti di modesta entità a Bergamo e provincia. Efficacia, serietà e risultati garantiti."
primaryButton={{
text: "Contattaci ora",
href: "#contact",
}}
secondaryButton={{
text: "Chiama: 035 226070",
href: "tel:035226070",
}}
leftItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/group-businesspeople-working-together-office_23-2147923325.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/smiling-financial-advisor-establishing-emergency-fund-clients-using-laptop_482257-115629.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/business-leader-professional-office-strategizing-development-success_482257-124038.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/mid-adult-businessman-going-through-paperwork-reading-project-statistics-while-working-office_637285-275.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/diverse-advisory-board-meeting-boardroom-review-financial-projections_482257-106764.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/desktop-pc-monitor-office-with-trading-indexes-showing-latest-prices_482257-83060.jpg",
},
]}
rightItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/happy-african-american-businesswoman-talking-female-colleagues-while-working-office_637285-9843.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/executive-joking-meeting_1098-1814.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/portrait-managers-discussing-business-affairs-two-confident-men-woman-workflow-looking-computer-with-financial-data-analyzing-profit-growth-business-growth-financial-analytics-concept_74855-24606.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/close-up-businessmen-shaking-hands_23-2148308618.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-colleagues-having-meeting_23-2149060245.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/businessmen-shaking-hands-close-up_23-2148308619.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Chi siamo: Serietà e Risultati a Bergamo"
primaryButton={{
text: "Scopri i nostri servizi",
href: "#features",
}}
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesComparison
tag="Il Nostro Metodo"
title="Perché scegliere Service Lines S.R.L."
description="Ottimizziamo il recupero dei tuoi crediti con un approccio mirato e professionale."
negativeItems={[
"Procedimenti legali lunghi e costosi",
"Mancanza di comunicazione col debitore",
"Attese indefinite per il recupero",
]}
positiveItems={[
"Soluzioni stragiudiziali rapide",
"Gestione dedicata del rapporto",
"Trasparenza totale sui risultati",
"Esperti in crediti di modesta entità",
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
tag="Risultati Certi"
title="I nostri numeri al tuo servizio"
description="La nostra esperienza ci permette di massimizzare il recupero del tuo capitale."
metrics={[
{
value: "95%",
title: "Tasso di Successo",
description: "Precisione nel recupero di crediti commerciali.",
imageSrc: "http://img.b2bpic.net/free-photo/dynamic-data-visualization-3d_23-2151904311.jpg",
},
{
value: "24h",
title: "Risposta Rapida",
description: "Presa in carico immediata della tua pratica.",
imageSrc: "http://img.b2bpic.net/free-photo/executive-holding-digital-tablet-with-diagrams_1098-488.jpg",
},
{
value: "1500+",
title: "Pratiche gestite",
description: "Esperienza consolidata nel settore locale.",
imageSrc: "http://img.b2bpic.net/free-photo/detailed-analysis-very-important-document_329181-15310.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="social" data-section="social">
<SectionErrorBoundary name="social">
<SocialProofMarquee
tag="Partner e Clienti"
title="Affidabilità confermata dal mercato"
description="Lavoriamo con aziende del territorio bergamasco da oltre un decennio."
names={[
"Bergamo Business",
"Confesercenti",
"Lombardia Imprese",
"Artigianato BG",
"Logistica Nord",
"Commercio Locale",
"Servizi Finanziari BG",
]}
/>
</SectionErrorBoundary>
</div>
<SocialSection />
<TestimonialSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Domande Frequenti"
title="Hai dubbi sulle nostre procedure?"
description="Trova risposte rapide alle domande più comuni sul recupero crediti."
items={[
{
question: "Cosa si intende per credito di modesta entità?",
answer: "Si tratta di piccoli crediti derivanti da forniture o prestazioni professionali, spesso sottovalutati ma cruciali per il flusso di cassa.",
},
{
question: "Come avviene il primo contatto?",
answer: "Puoi chiamarci o scriverci per una valutazione preliminare gratuita del tuo caso.",
},
{
question: "Quali sono i vostri tempi?",
answer: "Ci impegniamo a prendere in carico la pratica entro 24 ore dal conferimento del mandato.",
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Contattaci"
text="Pronto a recuperare i tuoi crediti in modo rapido e professionale? Siamo a Bergamo in Via Vittore Ghislandi, 24."
primaryButton={{
text: "Chiama: 035 226070",
href: "tel:035226070",
}}
secondaryButton={{
text: "Email: info@servicelines.it",
href: "mailto:info@servicelines.it",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View 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 AboutText from '@/components/sections/about/AboutText';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Chi siamo: Serietà e Risultati a Bergamo"
primaryButton={{
text: "Scopri i nostri servizi",
href: "#features",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -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 (
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Contattaci"
text="Pronto a recuperare i tuoi crediti in modo rapido e professionale? Siamo a Bergamo in Via Vittore Ghislandi, 24."
primaryButton={{
text: "Chiama: 035 226070",
href: "tel:035226070",
}}
secondaryButton={{
text: "Email: info@servicelines.it",
href: "mailto:info@servicelines.it",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,34 @@
// 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 FaqSimple from '@/components/sections/faq/FaqSimple';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Domande Frequenti"
title="Hai dubbi sulle nostre procedure?"
description="Trova risposte rapide alle domande più comuni sul recupero crediti."
items={[
{
question: "Cosa si intende per credito di modesta entità?",
answer: "Si tratta di piccoli crediti derivanti da forniture o prestazioni professionali, spesso sottovalutati ma cruciali per il flusso di cassa.",
},
{
question: "Come avviene il primo contatto?",
answer: "Puoi chiamarci o scriverci per una valutazione preliminare gratuita del tuo caso.",
},
{
question: "Quali sono i vostri tempi?",
answer: "Ci impegniamo a prendere in carico la pratica entro 24 ore dal conferimento del mandato.",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,31 @@
// 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 FeaturesComparison from '@/components/sections/features/FeaturesComparison';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesComparison
tag="Il Nostro Metodo"
title="Perché scegliere Service Lines S.R.L."
description="Ottimizziamo il recupero dei tuoi crediti con un approccio mirato e professionale."
negativeItems={[
"Procedimenti legali lunghi e costosi",
"Mancanza di comunicazione col debitore",
"Attese indefinite per il recupero",
]}
positiveItems={[
"Soluzioni stragiudiziali rapide",
"Gestione dedicata del rapporto",
"Trasparenza totale sui risultati",
"Esperti in crediti di modesta entità",
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,68 @@
// 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 HeroSplitVerticalMarquee from '@/components/sections/hero/HeroSplitVerticalMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplitVerticalMarquee
tag="Soluzioni Professionali"
title="Recupero Crediti su Misura per la tua Azienda"
description="Service Lines S.R.L. offre assistenza esperta nel recupero crediti di modesta entità a Bergamo e provincia. Efficacia, serietà e risultati garantiti."
primaryButton={{
text: "Contattaci ora",
href: "#contact",
}}
secondaryButton={{
text: "Chiama: 035 226070",
href: "tel:035226070",
}}
leftItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/group-businesspeople-working-together-office_23-2147923325.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/smiling-financial-advisor-establishing-emergency-fund-clients-using-laptop_482257-115629.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/business-leader-professional-office-strategizing-development-success_482257-124038.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/mid-adult-businessman-going-through-paperwork-reading-project-statistics-while-working-office_637285-275.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/diverse-advisory-board-meeting-boardroom-review-financial-projections_482257-106764.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/desktop-pc-monitor-office-with-trading-indexes-showing-latest-prices_482257-83060.jpg",
},
]}
rightItems={[
{
imageSrc: "http://img.b2bpic.net/free-photo/happy-african-american-businesswoman-talking-female-colleagues-while-working-office_637285-9843.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/executive-joking-meeting_1098-1814.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/portrait-managers-discussing-business-affairs-two-confident-men-woman-workflow-looking-computer-with-financial-data-analyzing-profit-growth-business-growth-financial-analytics-concept_74855-24606.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/close-up-businessmen-shaking-hands_23-2148308618.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-colleagues-having-meeting_23-2149060245.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/businessmen-shaking-hands-close-up_23-2148308619.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,40 @@
// 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 MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
tag="Risultati Certi"
title="I nostri numeri al tuo servizio"
description="La nostra esperienza ci permette di massimizzare il recupero del tuo capitale."
metrics={[
{
value: "95%",
title: "Tasso di Successo",
description: "Precisione nel recupero di crediti commerciali.",
imageSrc: "http://img.b2bpic.net/free-photo/dynamic-data-visualization-3d_23-2151904311.jpg",
},
{
value: "24h",
title: "Risposta Rapida",
description: "Presa in carico immediata della tua pratica.",
imageSrc: "http://img.b2bpic.net/free-photo/executive-holding-digital-tablet-with-diagrams_1098-488.jpg",
},
{
value: "1500+",
title: "Pratiche gestite",
description: "Esperienza consolidata nel settore locale.",
imageSrc: "http://img.b2bpic.net/free-photo/detailed-analysis-very-important-document_329181-15310.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "social" section.
import React from 'react';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function SocialSection(): React.JSX.Element {
return (
<div id="social" data-section="social">
<SectionErrorBoundary name="social">
<SocialProofMarquee
tag="Partner e Clienti"
title="Affidabilità confermata dal mercato"
description="Lavoriamo con aziende del territorio bergamasco da oltre un decennio."
names={[
"Bergamo Business",
"Confesercenti",
"Lombardia Imprese",
"Artigianato BG",
"Logistica Nord",
"Commercio Locale",
"Servizi Finanziari BG",
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,75 @@
import ScrollReveal from "@/components/ui/ScrollReveal";
import TextAnimation from "@/components/ui/TextAnimation";
import Card from "@/components/ui/Card";
import RatingStars from "@/components/ui/RatingStars";
import AvatarAuthor from "@/components/ui/AvatarAuthor";
export default function TestimonialSection() {
const testimonials = [
{
name: "Marco R.",
role: "Imprenditore Edile",
quote: "Service Lines ci ha aiutato a recuperare crediti che consideravamo ormai persi. Professionali, veloci e sempre disponibili a chiarire ogni dubbio.",
rating: 5,
imageSrc: "https://images.unsplash.com/photo-1560250097-0b93528c311a?auto=format&fit=crop&w=800&q=80"
},
{
name: "Laura B.",
role: "Titolare Agenzia di Servizi",
quote: "Un partner affidabile per la gestione degli insoluti. Hanno gestito le pratiche con grande delicatezza ma con estrema efficacia.",
rating: 5,
imageSrc: "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?auto=format&fit=crop&w=800&q=80"
},
{
name: "Giovanni T.",
role: "Amministratore di Condominio",
quote: "Ottimo servizio per il recupero delle quote condominiali non pagate. Risultati concreti in tempi molto più brevi rispetto alle vie legali tradizionali.",
rating: 4,
imageSrc: "https://images.unsplash.com/photo-1519085360753-af0119f7cbe7?auto=format&fit=crop&w=800&q=80"
}
];
return (
<div data-webild-section="testimonial" className="relative w-full py-24 bg-background">
<div className="w-content-width mx-auto px-6">
<div className="text-center mb-16 max-w-3xl mx-auto">
<ScrollReveal variant="fade">
<span className="inline-block py-1 px-3 rounded-full bg-accent/20 text-primary-cta text-sm font-medium mb-4">
Testimonianze
</span>
</ScrollReveal>
<TextAnimation
text="Cosa dicono le aziende di Bergamo"
variant="fade-blur"
tag="h2"
gradientText={false}
className="text-4xl md:text-5xl font-bold text-foreground mb-6"
/>
<ScrollReveal variant="fade" delay={0.1}>
<p className="text-lg text-muted-foreground">
La nostra esperienza sul territorio ci ha permesso di aiutare numerose realtà locali a recuperare i propri crediti con successo e professionalità.
</p>
</ScrollReveal>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
{testimonials.map((testimonial, index) => (
<ScrollReveal variant="fade" key={index} delay={0.2 + index * 0.1}>
<Card className="h-full p-8 flex flex-col">
<RatingStars rating={testimonial.rating} className="mb-6" />
<p className="text-foreground text-lg mb-8 flex-grow italic">
"{testimonial.quote}"
</p>
<AvatarAuthor
name={testimonial.name}
role={testimonial.role}
imageSrc={testimonial.imageSrc}
/>
</Card>
</ScrollReveal>
))}
</div>
</div>
</div>
);
}