Merge version_2_1782165927710 into main #2
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #f5faff;
|
||||
--background: #f5f5f5;
|
||||
--card: #ffffff;
|
||||
--foreground: #001122;
|
||||
--primary-cta: #15479c;
|
||||
--primary-cta-text: #f5faff;
|
||||
--secondary-cta: #ffffff;
|
||||
--secondary-cta-text: #001122;
|
||||
--accent: #a8cce8;
|
||||
--background-accent: #7ba3cf;
|
||||
--primary-cta: #e30a17;
|
||||
--primary-cta-text: #ffffff;
|
||||
--secondary-cta: #0066cc;
|
||||
--secondary-cta-text: #ffffff;
|
||||
--accent: #ff6600;
|
||||
--background-accent: #0066cc;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 1rem;
|
||||
|
||||
@@ -1,251 +1,38 @@
|
||||
import AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
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 ProcessSection from './HomePage/sections/Process';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
import ServicesSection from './HomePage/sections/Services';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Expert en immigration turque"
|
||||
title="Votre projet de vie en Turquie, simplifié"
|
||||
description="Nous accompagnons les particuliers et entrepreneurs dans leurs démarches de résidence, investissement et citoyenneté turque avec transparence et rigueur."
|
||||
primaryButton={{
|
||||
text: "Planifier une consultation",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Découvrir nos services",
|
||||
href: "#features",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/panoramic-istanbul-city-twilight-turkey_335224-1278.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Pourquoi nous choisir ?"
|
||||
quote="L'expertise locale combinée à une rigueur internationale pour garantir le succès de votre dossier."
|
||||
author="Mehmet Yilmaz"
|
||||
role="Directeur Général"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/confident-businessman-modern-office_23-2151944880.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBentoGrid
|
||||
tag="Nos Services"
|
||||
title="Des solutions sur-mesure"
|
||||
description="Nous couvrons tous les aspects de votre installation en Turquie."
|
||||
features={[
|
||||
{
|
||||
title: "Permis de séjour",
|
||||
description: "Accompagnement complet pour vos demandes de résidence.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/home-icon-left-side-white-background_187299-40310.jpg",
|
||||
},
|
||||
{
|
||||
title: "Investissement immobilier",
|
||||
description: "Aide à l'acquisition et vérification juridique.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/badge-icon-left-side-with-white-background_187299-39773.jpg",
|
||||
},
|
||||
{
|
||||
title: "Apprentissage linguistique",
|
||||
description: "Cours de turc accélérés pour votre intégration.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-education-day-concept-with-copy-space_23-2148779729.jpg",
|
||||
},
|
||||
{
|
||||
title: "Création d'entreprise",
|
||||
description: "Formalités légales et domiciliation commerciale.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/crop-man-making-notes-near-laptop_23-2147787685.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="process" data-section="process">
|
||||
<SectionErrorBoundary name="process">
|
||||
<FeaturesImageBento
|
||||
tag="Le processus"
|
||||
title="Votre itinéraire vers la Turquie"
|
||||
description="Un parcours clair pour chaque étape de votre immigration."
|
||||
items={[
|
||||
{
|
||||
title: "Audit initial",
|
||||
description: "Analyse de votre éligibilité.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-world-intellectual-property-day_23-2151325867.jpg",
|
||||
},
|
||||
{
|
||||
title: "Dossier légal",
|
||||
description: "Préparation des documents officiels.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-messy-office-workspace-with-tablet_23-2150282045.jpg",
|
||||
},
|
||||
{
|
||||
title: "Soumission officielle",
|
||||
description: "Dépôt des demandes auprès des autorités.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/composed-papers-house-miniature_23-2147764244.jpg",
|
||||
},
|
||||
{
|
||||
title: "Intégration",
|
||||
description: "Aide à l'installation locale.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-people-with-iced-coffee_23-2149910900.jpg",
|
||||
},
|
||||
{
|
||||
title: "Citoyenneté",
|
||||
description: "Demande de nationalité par investissement.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-man-holding-passport-with-plane-tickets-smartphone_23-2149205308.jpg",
|
||||
},
|
||||
{
|
||||
title: "Regroupement familial",
|
||||
description: "Procédure pour toute votre famille.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-couple-holding-each-other-s-hand_23-2147891266.jpg",
|
||||
},
|
||||
{
|
||||
title: "Post-installation",
|
||||
description: "Support administratif continu.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-call-center-onboarding-specialist-training-worker_482257-125802.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProcessSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Nos indicateurs"
|
||||
title="Des résultats concrets"
|
||||
description="Notre expertise prouvée sur le terrain."
|
||||
metrics={[
|
||||
{
|
||||
value: "1200+",
|
||||
title: "Dossiers réussis",
|
||||
description: "Une expérience solide.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/signing-agreement_1098-19561.jpg",
|
||||
},
|
||||
{
|
||||
value: "98%",
|
||||
title: "Taux d'acceptation",
|
||||
description: "La rigueur paye.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/application-form-employment-document-concept_53876-125605.jpg",
|
||||
},
|
||||
{
|
||||
value: "15+",
|
||||
title: "Années d'expertise",
|
||||
description: "Connaissance approfondie.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/turkey-flag-ruffled-beautifully-waving-macro-close-up-shot_1379-211.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialOverlayCards
|
||||
tag="Témoignages"
|
||||
title="Ils nous ont fait confiance"
|
||||
testimonials={[
|
||||
{
|
||||
name: "Julie Martin",
|
||||
role: "Investisseuse",
|
||||
company: "FR-TR Consulting",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-man-waving-medium-shot_23-2148508993.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marc Dubois",
|
||||
role: "Entrepreneur",
|
||||
company: "Tech Startup",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-senior-businessman-pointing-with-finger_1262-3108.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah A.",
|
||||
role: "Étudiante",
|
||||
company: "Université Bosphore",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-man-work_23-2149097925.jpg",
|
||||
},
|
||||
{
|
||||
name: "Famille Bernard",
|
||||
role: "Expatriés",
|
||||
company: "Client Privé",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-couple-walking-with-christmas-shopping-bags_23-2147979320.jpg",
|
||||
},
|
||||
{
|
||||
name: "Jean Lefebvre",
|
||||
role: "Cadre",
|
||||
company: "Multinationale",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/confident-outline-business-side-face-male_1194-3839.jpg",
|
||||
},
|
||||
]}
|
||||
description="Nos clients partagent leur expérience avec notre agence."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="Questions fréquentes"
|
||||
title="Besoin d'informations ?"
|
||||
items={[
|
||||
{
|
||||
question: "Quel est le délai pour une résidence ?",
|
||||
answer: "Généralement entre 30 et 90 jours.",
|
||||
},
|
||||
{
|
||||
question: "Dois-je parler turc ?",
|
||||
answer: "Ce n'est pas obligatoire pour tous les permis, mais recommandé pour votre intégration quotidienne.",
|
||||
},
|
||||
{
|
||||
question: "Peut-on investir à distance ?",
|
||||
answer: "Oui, nous pouvons gérer la majorité des procédures via des procurations notariées.",
|
||||
},
|
||||
{
|
||||
question: "Est-ce sécurisé ?",
|
||||
answer: "Oui, nos processus sont strictement conformes aux lois turques en vigueur.",
|
||||
},
|
||||
{
|
||||
question: "Offrez-vous un suivi post-installation ?",
|
||||
answer: "Absolument, nous accompagnons nos clients durant toute leur phase d'installation initiale.",
|
||||
},
|
||||
]}
|
||||
description="Voici les réponses aux questions les plus courantes sur nos services."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Contact"
|
||||
text="Prêt à entamer vos démarches ?"
|
||||
primaryButton={{
|
||||
text: "Envoyer un message",
|
||||
href: "mailto:contact@immiturk.com",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Appeler maintenant",
|
||||
href: "tel:+9000000000",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
<ServicesSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
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 AboutTestimonial from '@/components/sections/about/AboutTestimonial';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTestimonial
|
||||
tag="Pourquoi nous choisir ?"
|
||||
quote="L'expertise locale combinée à une rigueur internationale pour garantir le succès de votre dossier."
|
||||
author="Mehmet Yilmaz"
|
||||
role="Directeur Général"
|
||||
imageSrc="http://img.b2bpic.net/free-photo/confident-businessman-modern-office_23-2151944880.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal 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="Contact"
|
||||
text="Prêt à entamer vos démarches ?"
|
||||
primaryButton={{
|
||||
text: "Envoyer un message",
|
||||
href: "mailto:contact@immiturk.com",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Appeler maintenant",
|
||||
href: "tel:+9000000000",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Faq.tsx
Normal file
42
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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 FaqTwoColumn from '@/components/sections/faq/FaqTwoColumn';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTwoColumn
|
||||
tag="Questions fréquentes"
|
||||
title="Besoin d'informations ?"
|
||||
items={[
|
||||
{
|
||||
question: "Quel est le délai pour une résidence ?",
|
||||
answer: "Généralement entre 30 et 90 jours.",
|
||||
},
|
||||
{
|
||||
question: "Dois-je parler turc ?",
|
||||
answer: "Ce n'est pas obligatoire pour tous les permis, mais recommandé pour votre intégration quotidienne.",
|
||||
},
|
||||
{
|
||||
question: "Peut-on investir à distance ?",
|
||||
answer: "Oui, nous pouvons gérer la majorité des procédures via des procurations notariées.",
|
||||
},
|
||||
{
|
||||
question: "Est-ce sécurisé ?",
|
||||
answer: "Oui, nos processus sont strictement conformes aux lois turques en vigueur.",
|
||||
},
|
||||
{
|
||||
question: "Offrez-vous un suivi post-installation ?",
|
||||
answer: "Absolument, nous accompagnons nos clients durant toute leur phase d'installation initiale.",
|
||||
},
|
||||
]}
|
||||
description="Voici les réponses aux questions les plus courantes sur nos services."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Features.tsx
Normal file
42
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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 FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesBentoGrid
|
||||
tag="Nos Services"
|
||||
title="Des solutions sur-mesure"
|
||||
description="Nous couvrons tous les aspects de votre installation en Turquie."
|
||||
features={[
|
||||
{
|
||||
title: "Permis de séjour",
|
||||
description: "Accompagnement complet pour vos demandes de résidence.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/home-icon-left-side-white-background_187299-40310.jpg",
|
||||
},
|
||||
{
|
||||
title: "Investissement immobilier",
|
||||
description: "Aide à l'acquisition et vérification juridique.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/badge-icon-left-side-with-white-background_187299-39773.jpg",
|
||||
},
|
||||
{
|
||||
title: "Apprentissage linguistique",
|
||||
description: "Cours de turc accélérés pour votre intégration.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-education-day-concept-with-copy-space_23-2148779729.jpg",
|
||||
},
|
||||
{
|
||||
title: "Création d'entreprise",
|
||||
description: "Formalités légales et domiciliation commerciale.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/crop-man-making-notes-near-laptop_23-2147787685.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 HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Expert en immigration turque"
|
||||
title="Votre projet de vie en Turquie, simplifié"
|
||||
description="Nous accompagnons les particuliers et entrepreneurs dans leurs démarches de résidence, investissement et citoyenneté turque avec transparence et rigueur."
|
||||
primaryButton={{
|
||||
text: "Planifier une consultation",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Découvrir nos services",
|
||||
href: "#features",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/panoramic-istanbul-city-twilight-turkey_335224-1278.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Metrics.tsx
Normal file
40
src/pages/HomePage/sections/Metrics.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 "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="Nos indicateurs"
|
||||
title="Des résultats concrets"
|
||||
description="Notre expertise prouvée sur le terrain."
|
||||
metrics={[
|
||||
{
|
||||
value: "1200+",
|
||||
title: "Dossiers réussis",
|
||||
description: "Une expérience solide.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/signing-agreement_1098-19561.jpg",
|
||||
},
|
||||
{
|
||||
value: "98%",
|
||||
title: "Taux d'acceptation",
|
||||
description: "La rigueur paye.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/application-form-employment-document-concept_53876-125605.jpg",
|
||||
},
|
||||
{
|
||||
value: "15+",
|
||||
title: "Années d'expertise",
|
||||
description: "Connaissance approfondie.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/turkey-flag-ruffled-beautifully-waving-macro-close-up-shot_1379-211.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Process.tsx
Normal file
57
src/pages/HomePage/sections/Process.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "process" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProcessSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="process" data-section="process">
|
||||
<SectionErrorBoundary name="process">
|
||||
<FeaturesImageBento
|
||||
tag="Le processus"
|
||||
title="Votre itinéraire vers la Turquie"
|
||||
description="Un parcours clair pour chaque étape de votre immigration."
|
||||
items={[
|
||||
{
|
||||
title: "Audit initial",
|
||||
description: "Analyse de votre éligibilité.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/still-life-world-intellectual-property-day_23-2151325867.jpg",
|
||||
},
|
||||
{
|
||||
title: "Dossier légal",
|
||||
description: "Préparation des documents officiels.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-messy-office-workspace-with-tablet_23-2150282045.jpg",
|
||||
},
|
||||
{
|
||||
title: "Soumission officielle",
|
||||
description: "Dépôt des demandes auprès des autorités.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/composed-papers-house-miniature_23-2147764244.jpg",
|
||||
},
|
||||
{
|
||||
title: "Intégration",
|
||||
description: "Aide à l'installation locale.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-people-with-iced-coffee_23-2149910900.jpg",
|
||||
},
|
||||
{
|
||||
title: "Citoyenneté",
|
||||
description: "Demande de nationalité par investissement.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-man-holding-passport-with-plane-tickets-smartphone_23-2149205308.jpg",
|
||||
},
|
||||
{
|
||||
title: "Regroupement familial",
|
||||
description: "Procédure pour toute votre famille.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-couple-holding-each-other-s-hand_23-2147891266.jpg",
|
||||
},
|
||||
{
|
||||
title: "Post-installation",
|
||||
description: "Support administratif continu.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-call-center-onboarding-specialist-training-worker_482257-125802.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
169
src/pages/HomePage/sections/Services.tsx
Normal file
169
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,169 @@
|
||||
import { motion } from "motion/react"
|
||||
import Button from "@/components/ui/Button"
|
||||
import Card from "@/components/ui/Card"
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal"
|
||||
import TextAnimation from "@/components/ui/TextAnimation"
|
||||
import { Check, Clock, Percent, FileText, Home, Shield, Plane, Languages, Building, GraduationCap, Users, Calendar } from "lucide-react"
|
||||
|
||||
export default function Services() {
|
||||
const visas = [
|
||||
{
|
||||
title: "Visa Tourisme",
|
||||
icon: <Plane className="w-6 h-6 text-primary-cta" />,
|
||||
duration: "< 30 jours",
|
||||
type: "e-Visa",
|
||||
success: "95%",
|
||||
desc: "Idéal pour les courts séjours. Processus 100% en ligne.",
|
||||
},
|
||||
{
|
||||
title: "Visa Travail",
|
||||
icon: <Building className="w-6 h-6 text-primary-cta" />,
|
||||
duration: "1-2 ans",
|
||||
type: "Consulat",
|
||||
success: "90%",
|
||||
desc: "Pour les professionnels avec contrat d'emploi turc.",
|
||||
},
|
||||
{
|
||||
title: "Visa Études",
|
||||
icon: <GraduationCap className="w-6 h-6 text-primary-cta" />,
|
||||
duration: "1-4 ans",
|
||||
type: "Consulat",
|
||||
success: "95%",
|
||||
desc: "Pour les étudiants admis dans une université turque.",
|
||||
},
|
||||
{
|
||||
title: "Visa Familial",
|
||||
icon: <Users className="w-6 h-6 text-primary-cta" />,
|
||||
duration: "1-2 ans",
|
||||
type: "Consulat",
|
||||
success: "85%",
|
||||
desc: "Pour le regroupement familial en Turquie.",
|
||||
}
|
||||
]
|
||||
|
||||
const services = [
|
||||
{ icon: <Home className="w-5 h-5" />, title: "Logement", desc: "Apparts Istanbul/Ankara/Izmir, partenaires, -10%" },
|
||||
{ icon: <Shield className="w-5 h-5" />, title: "Assurance voyage", desc: "Bupa, -8% exclusif, médical + rapatriement" },
|
||||
{ icon: <Plane className="w-5 h-5" />, title: "Billets avion", desc: "Négocié groupes, -15% moyen" },
|
||||
{ icon: <Languages className="w-5 h-5" />, title: "Traduction", desc: "FR→TR, TR→FR, 24h" },
|
||||
{ icon: <Building className="w-5 h-5" />, title: "Banque Turquie", desc: "Compte étudiant, aide ouverture" },
|
||||
{ icon: <GraduationCap className="w-5 h-5" />, title: "Bourses", desc: "5,000+ € universités turques" },
|
||||
{ icon: <Calendar className="w-5 h-5" />, title: "Pré-départ", desc: "Webinaire 1h avant départ" },
|
||||
{ icon: <Check className="w-5 h-5" />, title: "Post-arrivée", desc: "Logement + banque + travail + école" },
|
||||
{ icon: <Users className="w-5 h-5" />, title: "Communauté", desc: "Forum 'Afriques en Turquie'" }
|
||||
]
|
||||
|
||||
const steps = [
|
||||
{ title: "Créer compte", desc: "Inscription rapide", duration: "5 min" },
|
||||
{ title: "AI Visa Matcher", desc: "Recommandation auto", duration: "3 min" },
|
||||
{ title: "Upload documents", desc: "Vérification IA", duration: "15 min" },
|
||||
{ title: "Suivi online", desc: "Dashboard temps réel", duration: "Auto" },
|
||||
{ title: "Visa reçu", desc: "Approbation finale", duration: "1-4 mois" }
|
||||
]
|
||||
|
||||
return (
|
||||
<div data-webild-section="services" className="relative w-full py-24 bg-background">
|
||||
<div className="w-content-width mx-auto flex flex-col gap-24">
|
||||
|
||||
{/* Header */}
|
||||
<ScrollReveal variant="fade" className="text-center max-w-3xl mx-auto">
|
||||
<TextAnimation
|
||||
text="Solution 360° Afrique-Turquie — Tout en 1 place"
|
||||
variant="slide-up"
|
||||
tag="h1"
|
||||
className="text-4xl md:text-5xl font-bold text-foreground mb-6"
|
||||
gradientText={false}
|
||||
/>
|
||||
<p className="text-lg text-accent">
|
||||
De l'obtention de votre visa à votre installation en Turquie, nous gérons chaque étape de votre projet d'immigration.
|
||||
</p>
|
||||
</ScrollReveal>
|
||||
|
||||
{/* Visas */}
|
||||
<div className="flex flex-col gap-8">
|
||||
<h2 className="text-3xl font-bold text-foreground">Types de visas</h2>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
||||
{visas.map((visa, i) => (
|
||||
<ScrollReveal variant="fade" key={i} delay={i * 0.1}>
|
||||
<Card className="h-full flex flex-col p-6 gap-4">
|
||||
<div className="w-12 h-12 rounded-full bg-background-accent/10 flex items-center justify-center">
|
||||
{visa.icon}
|
||||
</div>
|
||||
<h3 className="text-xl font-bold text-foreground">{visa.title}</h3>
|
||||
<p className="text-sm text-accent flex-grow">{visa.desc}</p>
|
||||
<div className="flex flex-col gap-2 text-sm text-foreground mt-4">
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="flex items-center gap-2"><Clock className="w-4 h-4 text-accent"/> Durée</span>
|
||||
<span className="font-medium">{visa.duration}</span>
|
||||
</div>
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="flex items-center gap-2"><FileText className="w-4 h-4 text-accent"/> Type</span>
|
||||
<span className="font-medium">{visa.type}</span>
|
||||
</div>
|
||||
<div className="flex items-center justify-between">
|
||||
<span className="flex items-center gap-2"><Percent className="w-4 h-4 text-accent"/> Réussite</span>
|
||||
<span className="font-medium text-green-600">{visa.success}</span>
|
||||
</div>
|
||||
</div>
|
||||
<Button text="Détails" variant="secondary" className="w-full mt-4" />
|
||||
</Card>
|
||||
</ScrollReveal>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Services 360 */}
|
||||
<div className="flex flex-col gap-8">
|
||||
<h2 className="text-3xl font-bold text-foreground">Services complémentaires</h2>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{services.map((service, i) => (
|
||||
<ScrollReveal variant="fade" key={i} delay={i * 0.05}>
|
||||
<div className="flex items-start gap-4 p-4 rounded-lg hover:bg-card transition-colors">
|
||||
<div className="w-10 h-10 rounded-full bg-primary-cta/10 flex items-center justify-center text-primary-cta shrink-0">
|
||||
{service.icon}
|
||||
</div>
|
||||
<div>
|
||||
<h4 className="font-bold text-foreground mb-1">{service.title}</h4>
|
||||
<p className="text-sm text-accent">{service.desc}</p>
|
||||
</div>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Process Timeline */}
|
||||
<div className="flex flex-col gap-8">
|
||||
<h2 className="text-3xl font-bold text-foreground text-center">Processus en 5 étapes</h2>
|
||||
<div className="relative mt-8">
|
||||
<div className="absolute top-1/2 left-0 w-full h-1 bg-card -translate-y-1/2 hidden md:block" />
|
||||
<div className="grid grid-cols-1 md:grid-cols-5 gap-8">
|
||||
{steps.map((step, i) => (
|
||||
<ScrollReveal variant="fade" key={i} delay={i * 0.1} className="relative z-10">
|
||||
<div className="flex flex-col items-center text-center gap-4">
|
||||
<div className="w-12 h-12 rounded-full bg-primary-cta text-primary-cta-text flex items-center justify-center font-bold text-xl shadow-lg">
|
||||
{i + 1}
|
||||
</div>
|
||||
<div>
|
||||
<h4 className="font-bold text-foreground">{step.title}</h4>
|
||||
<p className="text-sm text-accent mt-1">{step.desc}</p>
|
||||
<span className="inline-block mt-2 text-xs font-medium px-2 py-1 bg-card rounded text-primary-cta">
|
||||
{step.duration}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* CTA */}
|
||||
<ScrollReveal variant="fade" className="flex justify-center mt-8">
|
||||
<Button text="Commence ton processus" variant="primary" className="text-lg px-8 py-4" />
|
||||
</ScrollReveal>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// 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 TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialOverlayCards
|
||||
tag="Témoignages"
|
||||
title="Ils nous ont fait confiance"
|
||||
testimonials={[
|
||||
{
|
||||
name: "Julie Martin",
|
||||
role: "Investisseuse",
|
||||
company: "FR-TR Consulting",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-man-waving-medium-shot_23-2148508993.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marc Dubois",
|
||||
role: "Entrepreneur",
|
||||
company: "Tech Startup",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-senior-businessman-pointing-with-finger_1262-3108.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah A.",
|
||||
role: "Étudiante",
|
||||
company: "Université Bosphore",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-man-work_23-2149097925.jpg",
|
||||
},
|
||||
{
|
||||
name: "Famille Bernard",
|
||||
role: "Expatriés",
|
||||
company: "Client Privé",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-couple-walking-with-christmas-shopping-bags_23-2147979320.jpg",
|
||||
},
|
||||
{
|
||||
name: "Jean Lefebvre",
|
||||
role: "Cadre",
|
||||
company: "Multinationale",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/confident-outline-business-side-face-male_1194-3839.jpg",
|
||||
},
|
||||
]}
|
||||
description="Nos clients partagent leur expérience avec notre agence."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user