Merge version_2_1783082324685 into main #1

Merged
bender merged 1 commits from version_2_1783082324685 into main 2026-07-03 12:41:53 +00:00
9 changed files with 309 additions and 233 deletions

View File

@@ -1,245 +1,37 @@
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesComparison from '@/components/sections/features/FeaturesComparison';
import HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import PricingCenteredCards from '@/components/sections/pricing/PricingCenteredCards';
import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
// 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.
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 PricingSection from './HomePage/sections/Pricing';
import TestimonialsSection from './HomePage/sections/Testimonials';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroTiltedCards
tag="Najbolje selidbe u Nišu"
title="Meda Trans Niš Sigurne selidbe i prevoz robe bez stresa"
description="Profesionalni tim sa preko 30 pozitivnih recenzija. Radimo selidbe stanova, kuća i poslovnih prostora u Nišu i celoj Srbiji."
primaryButton={{
text: "📞 POZOVITE ODMAH",
href: "tel:+381600000000",
}}
secondaryButton={{
text: "Saznajte više",
href: "#about",
}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-delivery-woman-holding-pack_23-2149103437.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-delivery-man-holding-box_23-2149103440.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-delivery-man-holding-box_23-2149103413.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/top-view-truck-boxes_23-2149853130.jpg",
},
{
imageSrc: "http://img.b2bpic.net/free-photo/traffic-highway_1359-2.jpg",
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTextSplit
title="Više od prevoza vaš pouzdan partner"
descriptions={[
"Meda Trans nudi kompletnu uslugu selidbe, od pakovanja i zaštite nameštaja do transporta i montaže na novoj lokaciji. Naš tim je obučen za najdelikatnije zadatke.",
"Sa godinama iskustva na putevima Srbije, garantujemo tačnost, sigurnost i odnos prema vašim stvarima kao da su naše sopstvene. Vaš mir je naš prioritet.",
]}
textAnimation="fade"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesComparison
tag="Šta nas izdvaja"
title="Zašto odabrati Meda Trans?"
description="Uporedite naše prednosti u odnosu na standardne usluge selidbe."
negativeItems={[
"Dugo čekanje na ekipu",
"Neprofesionalno pakovanje",
"Nepredviđeni troškovi",
"Strah za nameštaj",
]}
positiveItems={[
"Tačnost u minutu",
"Profesionalna zaštita i pakovanje",
"Fiksna i jasna cena",
"Osigurane stvari u transportu",
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
tag="Naša statistika"
title="Rezultati govore za nas"
description="Stotine zadovoljnih klijenata širom Srbije veruju našem timu."
metrics={[
{
value: "30+",
title: "Pozitivnih recenzija",
description: "Klijenti nas preporučuju na Google mapama.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-delivery-man-holding-box_23-2149035883.jpg",
},
{
value: "500+",
title: "Uspešnih selidbi",
description: "Višegodišnje iskustvo u prevozu robe i nameštaja.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-holding-package_23-2149908141.jpg",
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingCenteredCards
tag="Transparentne cene"
title="Paketi prilagođeni vama"
description="Odaberite opciju koja najbolje odgovara vašim potrebama."
plans={[
{
tag: "Basic",
price: "od 3.000 RSD",
description: "Gradski prevoz robe",
features: [
"Manje selidbe",
"Jedan vozač",
"Utovar i istovar",
],
primaryButton: {
text: "Pozovite",
href: "tel:+381600000000",
},
},
{
tag: "Pro",
price: "Dogovor",
description: "Selidbe stanova i kuća",
features: [
"Kompletna zaštita",
"Demontaža nameštaja",
"Transport po celoj Srbiji",
],
primaryButton: {
text: "Pozovite",
href: "tel:+381600000000",
},
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeOverlayCards
tag="Klijenti o nama"
title="Sigurnost na prvom mestu"
description="Pročitajte šta kažu oni koji su nam poverili svoje selidbe."
testimonials={[
{
name: "Marko I.",
role: "Klijent",
company: "Niš",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/smiling-middle-aged-attractive-woman-showing-thumb-up-outdoors_1262-12526.jpg",
},
{
name: "Jelena P.",
role: "Klijent",
company: "Niš",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/crazy-businessman-happy-expression_1194-3514.jpg",
},
{
name: "Stefan S.",
role: "Klijent",
company: "Beograd",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/colleagues-work-eating-pizza_23-2148894069.jpg",
},
{
name: "Ana M.",
role: "Klijent",
company: "Niš",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/caucasian-mom-dad-pushing-cardboard-boxes-with-kids-inside_74855-8839.jpg",
},
{
name: "Dragan T.",
role: "Klijent",
company: "Niš",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/husband-wife-feeling-proud-about-having-household-keys-buying-first-home-together-moving-celebrating-life-event-as-homeowners-enjoying-fun-relocation-new-beginnings_482257-43700.jpg",
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Pitanja"
title="Često postavljana pitanja"
description="Sve što treba da znate pre selidbe."
items={[
{
question: "Kada je najbolje zakazati selidbu?",
answer: "Preporučujemo zakazivanje bar 5-7 dana unapred kako bismo vam osigurali termin.",
},
{
question: "Da li vršite montažu i demontažu?",
answer: "Da, naš tim je obučen za demontažu i montažu nameštaja svih vrsta.",
},
{
question: "Koja područja pokrivate?",
answer: "Radimo na teritoriji celog Niša, kao i selidbe širom Srbije.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/smiling-call-center-manager-providing-guidance-intern-addressing-questions_482257-125804.jpg"
textAnimation="fade-blur"
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Kontaktirajte nas"
text="Spremni za selidbu bez stresa? Pozovite nas odmah za besplatnu procenu."
primaryButton={{
text: "POZOVITE ODMAH",
href: "tel:+381600000000",
}}
secondaryButton={{
text: "Pošaljite Viber poruku",
href: "viber://chat?number=+381600000000",
}}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,23 @@
// 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 (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutTextSplit
title="Više od prevoza vaš pouzdan partner"
descriptions={[
"Meda Trans nudi kompletnu uslugu selidbe, od pakovanja i zaštite nameštaja do transporta i montaže na novoj lokaciji. Naš tim je obučen za najdelikatnije zadatke.",
"Sa godinama iskustva na putevima Srbije, garantujemo tačnost, sigurnost i odnos prema vašim stvarima kao da su naše sopstvene. Vaš mir je naš prioritet.",
]}
textAnimation="fade"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,28 @@
// 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="Kontaktirajte nas"
text="Spremni za selidbu bez stresa? Pozovite nas odmah za besplatnu procenu."
primaryButton={{
text: "POZOVITE ODMAH",
href: "tel:+381600000000",
}}
secondaryButton={{
text: "Pošaljite Viber poruku",
href: "viber://chat?number=+381600000000",
}}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,36 @@
// 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 (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSplitMedia
tag="Pitanja"
title="Često postavljana pitanja"
description="Sve što treba da znate pre selidbe."
items={[
{
question: "Kada je najbolje zakazati selidbu?",
answer: "Preporučujemo zakazivanje bar 5-7 dana unapred kako bismo vam osigurali termin.",
},
{
question: "Da li vršite montažu i demontažu?",
answer: "Da, naš tim je obučen za demontažu i montažu nameštaja svih vrsta.",
},
{
question: "Koja područja pokrivate?",
answer: "Radimo na teritoriji celog Niša, kao i selidbe širom Srbije.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/smiling-call-center-manager-providing-guidance-intern-addressing-questions_482257-125804.jpg"
textAnimation="fade-blur"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,33 @@
// 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="Šta nas izdvaja"
title="Zašto odabrati Meda Trans?"
description="Uporedite naše prednosti u odnosu na standardne usluge selidbe."
negativeItems={[
"Dugo čekanje na ekipu",
"Neprofesionalno pakovanje",
"Nepredviđeni troškovi",
"Strah za nameštaj",
]}
positiveItems={[
"Tačnost u minutu",
"Profesionalna zaštita i pakovanje",
"Fiksna i jasna cena",
"Osigurane stvari u transportu",
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,20 @@
// Created by add_section_from_catalog (HeroSplit).
import React from 'react';
import HeroSplit from '@/components/sections/hero/HeroSplit';
export default function HeroSection(): React.JSX.Element {
return (
<div data-webild-section="hero" data-section="hero" id="hero">
<HeroSplit
secondaryButton={{"text":"Saznajte više","href":"#about"}}
textAnimation="slide-up"
title="Meda Trans Niš Sigurne selidbe i prevoz robe bez stresa"
tag="Najbolje selidbe u Nišu"
primaryButton={{"text":"📞 POZOVITE ODMAH","href":"tel:+381600000000"}}
description="Profesionalni tim sa preko 30 pozitivnih recenzija. Radimo selidbe stanova, kuća i poslovnih prostora u Nišu i celoj Srbiji."
imageSrc="https://images.unsplash.com/photo-1600518464441-9154a4dea21b?q=80&w=2000&auto=format&fit=crop"
/>
</div>
);
}

View File

@@ -0,0 +1,35 @@
// 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="Naša statistika"
title="Rezultati govore za nas"
description="Stotine zadovoljnih klijenata širom Srbije veruju našem timu."
metrics={[
{
value: "30+",
title: "Pozitivnih recenzija",
description: "Klijenti nas preporučuju na Google mapama.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-delivery-man-holding-box_23-2149035883.jpg",
},
{
value: "500+",
title: "Uspešnih selidbi",
description: "Višegodišnje iskustvo u prevozu robe i nameštaja.",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-holding-package_23-2149908141.jpg",
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,51 @@
// 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 (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingCenteredCards
tag="Transparentne cene"
title="Paketi prilagođeni vama"
description="Odaberite opciju koja najbolje odgovara vašim potrebama."
plans={[
{
tag: "Basic",
price: "od 3.000 RSD",
description: "Gradski prevoz robe",
features: [
"Manje selidbe",
"Jedan vozač",
"Utovar i istovar",
],
primaryButton: {
text: "Pozovite",
href: "tel:+381600000000",
},
},
{
tag: "Pro",
price: "Dogovor",
description: "Selidbe stanova i kuća",
features: [
"Kompletna zaštita",
"Demontaža nameštaja",
"Transport po celoj Srbiji",
],
primaryButton: {
text: "Pozovite",
href: "tel:+381600000000",
},
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,58 @@
// 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 TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeOverlayCards
tag="Klijenti o nama"
title="Sigurnost na prvom mestu"
description="Pročitajte šta kažu oni koji su nam poverili svoje selidbe."
testimonials={[
{
name: "Marko I.",
role: "Klijent",
company: "Niš",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/smiling-middle-aged-attractive-woman-showing-thumb-up-outdoors_1262-12526.jpg",
},
{
name: "Jelena P.",
role: "Klijent",
company: "Niš",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/crazy-businessman-happy-expression_1194-3514.jpg",
},
{
name: "Stefan S.",
role: "Klijent",
company: "Beograd",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/colleagues-work-eating-pizza_23-2148894069.jpg",
},
{
name: "Ana M.",
role: "Klijent",
company: "Niš",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/caucasian-mom-dad-pushing-cardboard-boxes-with-kids-inside_74855-8839.jpg",
},
{
name: "Dragan T.",
role: "Klijent",
company: "Niš",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/husband-wife-feeling-proud-about-having-household-keys-buying-first-home-together-moving-celebrating-life-event-as-homeowners-enjoying-fun-relocation-new-beginnings_482257-43700.jpg",
},
]}
textAnimation="slide-up"
/>
</SectionErrorBoundary>
</div>
);
}