Merge version_3_1782033997177 into main

Merge version_3_1782033997177 into main
This commit was merged in pull request #2.
This commit is contained in:
2026-06-21 09:27:37 +00:00
9 changed files with 353 additions and 264 deletions

View File

@@ -5,15 +5,15 @@
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #f5faff;
--background: #ffffff;
--card: #ffffff;
--foreground: #001122;
--primary-cta: #15479c;
--primary-cta-text: #f5faff;
--primary-cta: #ffcc00;
--primary-cta-text: #000000;
--secondary-cta: #ffffff;
--secondary-cta-text: #001122;
--accent: #a8cce8;
--background-accent: #7ba3cf;
--accent: #ffcc00;
--background-accent: #ffcc00;
/* @layout/border-radius/rounded */
--radius: 1.5rem;

View File

@@ -1,270 +1,33 @@
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
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 CategoriesSection from './HomePage/sections/Categories';
import FeaturedSection from './HomePage/sections/Featured';
import MetricsSection from './HomePage/sections/Metrics';
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">
<HeroCenteredLogos
avatarsSrc={[
"http://img.b2bpic.net/free-photo/handsome-black-male-dressed-suit-from-wool_613910-15865.jpg",
"http://img.b2bpic.net/free-photo/happy-builder-hardhat_1398-1726.jpg",
"http://img.b2bpic.net/free-photo/businesswoman-glasses-portrait_1262-1461.jpg",
"http://img.b2bpic.net/free-photo/portrait-smiling-mature-businessman-looking-away_23-2147955371.jpg",
]}
avatarText="موثوق من أكثر من 500+ عميل دولي"
title="JAMOUSNL — سوق الآليات الثقيلة الموثوق"
description="منصة متخصصة لبيع واستيراد الآليات الثقيلة الجديدة والمستعملة من أوروبا والعالم. جودة عالية، أسعار تنافسية، موثوقية كاملة."
primaryButton={{
text: "تصفح الآليات الآن",
href: "#products",
}}
secondaryButton={{
text: "طلب استشارة",
href: "#contact",
}}
names={[
"معدات موثوقة",
"شحن عالمي",
"دعم فني",
"تأمين جودة",
]}
imageSrc="https://images.unsplash.com/photo-1587293852726-694b60279e34?q=80&w=2070&auto=format&fit=crop"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="categories" data-section="categories">
<SectionErrorBoundary name="categories">
<FeaturesRevealCardsBento
tag="التصنيفات"
title="تصفح حسب نوع المعدة"
description="نقدم مجموعة واسعة من الآليات الثقيلة لمختلف قطاعات البناء."
items={[
{
title: "Wheel Loaders",
description: "لوادر ذات كفاءة عالية",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/carpenter-working-sawmill-wood-manufacture_1303-22904.jpg",
},
{
title: "Bulldozers",
description: "بلدوزرات للعمل الشاق",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/tractor-operator-sand-pit_1398-1884.jpg",
},
{
title: "Forklifts",
description: "رافعات شوكية دقيقة",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-professional-forklift-driver-factory-s-warehouse_342744-203.jpg",
},
{
title: "Cranes",
description: "أوناش لرفع الأوزان",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/crane-placed-construction_23-2147694749.jpg",
},
{
title: "Rollers",
description: "مدحلات للأسفلت والتربة",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/aerial-view-excavator-truck-sandy-beach_1308-189643.jpg",
},
{
title: "Dump Trucks",
description: "شاحنات قلابة قوية",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/heavy-machinery-used-construction-industry-engineering_23-2151307797.jpg",
},
{
title: "Spare Parts",
description: "قطع غيار أصلية",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/man-spraying-powder-paint-from-gun-full-shot_23-2149878769.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<CategoriesSection />
<div id="featured" data-section="featured">
<SectionErrorBoundary name="featured">
<FeaturesTaggedCards
tag="الأحدث"
title="معدات مميزة متاحة للبيع"
description="اطلع على أحدث الآليات المضافة من أوروبا"
items={[
{
tag: "متاح",
title: "Caterpillar 950H",
description: "سنة الصنع 2020، حالة ممتازة، متاح في ألمانيا",
primaryButton: {
text: "عرض التفاصيل",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/outdoor-picture-handsome-cheerful-young-bearded-farmer-wearing-sunglasses_343059-3610.jpg",
},
{
tag: "طلب",
title: "Komatsu D65",
description: "بلدوزر عمل شاق، ساعات قليلة، موثق تقنياً",
primaryButton: {
text: "عرض التفاصيل",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/excavator-digging-ground-day-light_23-2149194773.jpg",
},
{
tag: "متاح",
title: "Liebherr LTM 1050",
description: "ونش تلسكوبي، جاهز للتحميل والتصدير",
primaryButton: {
text: "عرض التفاصيل",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/vertical-view-sea-grass-near-pier-sunset-sandy-shore-with-dunes_169016-73104.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturedSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="الإنجازات"
title="ثقة تدوم عبر الحدود"
description="نحن نربط السوق الأوروبي بالمستوردين في الشرق الأوسط."
metrics={[
{
value: "1500+",
title: "آلية مباعة",
features: [
"فحص فني شامل",
"تاريخ خدمة كامل",
],
},
{
value: "20+",
title: "دولة شحن",
features: [
"لوجستيات متكاملة",
"تخليص جمركي سريع",
],
},
{
value: "100%",
title: "عملاء راضون",
features: [
"دعم ما بعد البيع",
"ضمان الجودة",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="آراء العملاء"
title="ماذا يقول شركاؤنا"
description="نعتز بثقة عملائنا في مختلف أنحاء الشرق الأوسط."
testimonials={[
{
name: "أحمد سالم",
role: "مدير مشتريات",
quote: "تجربة استيراد ممتازة وشفافية كاملة في فحص المعدات.",
imageSrc: "http://img.b2bpic.net/free-photo/businessman-dress-code-looks-motivated_114579-15924.jpg",
},
{
name: "خالد المهدي",
role: "مقاول بناء",
quote: "المعدات وصلت مطابقة للمواصفات وفي الوقت المحدد تماماً.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-with-safety-vest-crossed-arms_23-2148269352.jpg",
},
{
name: "ليلى العمري",
role: "مديرة شركة",
quote: "دعم فني استثنائي وتسهيلات كبيرة في إجراءات الشحن.",
imageSrc: "http://img.b2bpic.net/free-photo/happy-smiling-businesswoman-looking-camera-with-arms-crossed-portrait_1163-4337.jpg",
},
{
name: "ياسر العتيبي",
role: "تاجر معدات",
quote: "JAMOUSNL شريك استراتيجي في توريد المعدات من أوروبا.",
imageSrc: "http://img.b2bpic.net/free-photo/confident-outline-business-side-face-male_1194-3839.jpg",
},
{
name: "سامي منصور",
role: "مدير fleet",
quote: "سرعة في الاستجابة واحترافية في التعامل والتوثيق.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-worker-standing-beside-heavy-machinery-warehouse-facility-wearing-safety-glasses_482257-135639.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="الأسئلة الشائعة"
title="كيف يمكننا مساعدتك؟"
description="إجابات على أكثر الأسئلة شيوعاً حول الشراء والاستيراد."
categories={[
{
name: "الاستيراد",
items: [
{
question: "كيف يتم الشحن؟",
answer: "نحن نتولى الشحن الدولي بالكامل.",
},
{
question: "هل تتوفر ضمانات؟",
answer: "نعم، جميع المعدات خاضعة للفحص.",
},
],
},
{
name: "الدفوعات",
items: [
{
question: "ما هي طرق الدفع؟",
answer: "نقبل التحويل البنكي والاعتمادات المستندية.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="اتصل بنا"
text="هل تحتاج إلى طلب خاص أو استشارة فنية؟ فريقنا جاهز لمساعدتك في الحصول على أفضل الآليات."
primaryButton={{
text: "تحدث مع خبير",
href: "#",
}}
secondaryButton={{
text: "إرسال بريد",
href: "mailto:info@jamousnl.com",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,64 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "categories" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function CategoriesSection(): React.JSX.Element {
return (
<div id="categories" data-section="categories">
<SectionErrorBoundary name="categories">
<FeaturesRevealCardsBento
tag="التصنيفات"
title="تصفح حسب نوع المعدة"
description="نقدم مجموعة واسعة من الآليات الثقيلة لمختلف قطاعات البناء."
items={[
{
title: "Wheel Loaders",
description: "لوادر ذات كفاءة عالية",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/carpenter-working-sawmill-wood-manufacture_1303-22904.jpg",
},
{
title: "Bulldozers",
description: "بلدوزرات للعمل الشاق",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/tractor-operator-sand-pit_1398-1884.jpg",
},
{
title: "Forklifts",
description: "رافعات شوكية دقيقة",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-professional-forklift-driver-factory-s-warehouse_342744-203.jpg",
},
{
title: "Cranes",
description: "أوناش لرفع الأوزان",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/crane-placed-construction_23-2147694749.jpg",
},
{
title: "Rollers",
description: "مدحلات للأسفلت والتربة",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/aerial-view-excavator-truck-sandy-beach_1308-189643.jpg",
},
{
title: "Dump Trucks",
description: "شاحنات قلابة قوية",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/heavy-machinery-used-construction-industry-engineering_23-2151307797.jpg",
},
{
title: "Spare Parts",
description: "قطع غيار أصلية",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/man-spraying-powder-paint-from-gun-full-shot_23-2149878769.jpg",
},
]}
/>
</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="اتصل بنا"
text="هل تحتاج إلى طلب خاص أو استشارة فنية؟ فريقنا جاهز لمساعدتك في الحصول على أفضل الآليات."
primaryButton={{
text: "تحدث مع خبير",
href: "#",
}}
secondaryButton={{
text: "إرسال بريد",
href: "mailto:info@jamousnl.com",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,44 @@
// 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 FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="الأسئلة الشائعة"
title="كيف يمكننا مساعدتك؟"
description="إجابات على أكثر الأسئلة شيوعاً حول الشراء والاستيراد."
categories={[
{
name: "الاستيراد",
items: [
{
question: "كيف يتم الشحن؟",
answer: "نحن نتولى الشحن الدولي بالكامل.",
},
{
question: "هل تتوفر ضمانات؟",
answer: "نعم، جميع المعدات خاضعة للفحص.",
},
],
},
{
name: "الدفوعات",
items: [
{
question: "ما هي طرق الدفع؟",
answer: "نقبل التحويل البنكي والاعتمادات المستندية.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "featured" section.
import React from 'react';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturedSection(): React.JSX.Element {
return (
<div id="featured" data-section="featured">
<SectionErrorBoundary name="featured">
<FeaturesTaggedCards
tag="الأحدث"
title="معدات مميزة متاحة للبيع"
description="اطلع على أحدث الآليات المضافة من أوروبا"
items={[
{
tag: "متاح",
title: "Caterpillar 950H",
description: "سنة الصنع 2020، حالة ممتازة، متاح في ألمانيا",
primaryButton: {
text: "عرض التفاصيل",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/outdoor-picture-handsome-cheerful-young-bearded-farmer-wearing-sunglasses_343059-3610.jpg",
},
{
tag: "طلب",
title: "Komatsu D65",
description: "بلدوزر عمل شاق، ساعات قليلة، موثق تقنياً",
primaryButton: {
text: "عرض التفاصيل",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/excavator-digging-ground-day-light_23-2149194773.jpg",
},
{
tag: "متاح",
title: "Liebherr LTM 1050",
description: "ونش تلسكوبي، جاهز للتحميل والتصدير",
primaryButton: {
text: "عرض التفاصيل",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/vertical-view-sea-grass-near-pier-sunset-sandy-shore-with-dunes_169016-73104.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,41 @@
// 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 HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroCenteredLogos
avatarsSrc={[
"http://img.b2bpic.net/free-photo/handsome-black-male-dressed-suit-from-wool_613910-15865.jpg",
"http://img.b2bpic.net/free-photo/happy-builder-hardhat_1398-1726.jpg",
"http://img.b2bpic.net/free-photo/businesswoman-glasses-portrait_1262-1461.jpg",
"http://img.b2bpic.net/free-photo/portrait-smiling-mature-businessman-looking-away_23-2147955371.jpg",
]}
avatarText="موثوق من أكثر من 500+ عميل دولي"
title="JAMOUSNL — سوق الآليات الثقيلة الموثوق"
description="منصة متخصصة لبيع واستيراد الآليات الثقيلة الجديدة والمستعملة من أوروبا والعالم. جودة عالية، أسعار تنافسية، موثوقية كاملة."
primaryButton={{
text: "تصفح الآليات الآن",
href: "#products",
}}
secondaryButton={{
text: "طلب استشارة",
href: "#contact",
}}
names={[
"معدات موثوقة",
"شحن عالمي",
"دعم فني",
"تأمين جودة",
]}
imageSrc="https://images.unsplash.com/photo-1587293852726-694b60279e34?q=80&w=2070&auto=format&fit=crop"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,46 @@
// 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 MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="الإنجازات"
title="ثقة تدوم عبر الحدود"
description="نحن نربط السوق الأوروبي بالمستوردين في الشرق الأوسط."
metrics={[
{
value: "1500+",
title: "آلية مباعة",
features: [
"فحص فني شامل",
"تاريخ خدمة كامل",
],
},
{
value: "20+",
title: "دولة شحن",
features: [
"لوجستيات متكاملة",
"تخليص جمركي سريع",
],
},
{
value: "100%",
title: "عملاء راضون",
features: [
"دعم ما بعد البيع",
"ضمان الجودة",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -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 TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="آراء العملاء"
title="ماذا يقول شركاؤنا"
description="نعتز بثقة عملائنا في مختلف أنحاء الشرق الأوسط."
testimonials={[
{
name: "أحمد سالم",
role: "مدير مشتريات",
quote: "تجربة استيراد ممتازة وشفافية كاملة في فحص المعدات.",
imageSrc: "http://img.b2bpic.net/free-photo/businessman-dress-code-looks-motivated_114579-15924.jpg",
},
{
name: "خالد المهدي",
role: "مقاول بناء",
quote: "المعدات وصلت مطابقة للمواصفات وفي الوقت المحدد تماماً.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-with-safety-vest-crossed-arms_23-2148269352.jpg",
},
{
name: "ليلى العمري",
role: "مديرة شركة",
quote: "دعم فني استثنائي وتسهيلات كبيرة في إجراءات الشحن.",
imageSrc: "http://img.b2bpic.net/free-photo/happy-smiling-businesswoman-looking-camera-with-arms-crossed-portrait_1163-4337.jpg",
},
{
name: "ياسر العتيبي",
role: "تاجر معدات",
quote: "JAMOUSNL شريك استراتيجي في توريد المعدات من أوروبا.",
imageSrc: "http://img.b2bpic.net/free-photo/confident-outline-business-side-face-male_1194-3839.jpg",
},
{
name: "سامي منصور",
role: "مدير fleet",
quote: "سرعة في الاستجابة واحترافية في التعامل والتوثيق.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-worker-standing-beside-heavy-machinery-warehouse-facility-wearing-safety-glasses_482257-135639.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}