From 8e3cddab25d24e25c0c9ef6395e9582b2ecada75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Math=C3=A9o=20GUILBERT?= Date: Tue, 2 Jun 2026 18:33:22 +0200 Subject: [PATCH] refactoring of the _client freelance page --- app/[locale]/freelance/_client.tsx | 173 +++++++++++++++-------------- 1 file changed, 91 insertions(+), 82 deletions(-) diff --git a/app/[locale]/freelance/_client.tsx b/app/[locale]/freelance/_client.tsx index 39a4d9f..c71cbe8 100644 --- a/app/[locale]/freelance/_client.tsx +++ b/app/[locale]/freelance/_client.tsx @@ -110,17 +110,16 @@ export default function FreelanceClient({ projects, locale }: props) { >
-
+
{/* Left — text */} -
+
- - + {t('hero.label')}
@@ -129,7 +128,7 @@ export default function FreelanceClient({ projects, locale }: props) { className="hero-reveal" style={{ opacity: 0, transform: 'translateY(28px)', transition: 'opacity 700ms cubic-bezier(0.22,1,0.36,1), transform 700ms cubic-bezier(0.22,1,0.36,1)' }} > -

+

{t('hero.title')}

@@ -138,48 +137,48 @@ export default function FreelanceClient({ projects, locale }: props) { className="hero-reveal" style={{ opacity: 0, transform: 'translateY(28px)', transition: 'opacity 700ms cubic-bezier(0.22,1,0.36,1), transform 700ms cubic-bezier(0.22,1,0.36,1)' }} > -

+

{t('hero.subtitle')}

{t('hero.cta1')}
- {/* Right — service preview cards */} + {/* Right — service list, editorial style */}
{heroCards.map((card, i) => (
- {card.num} - {card.label} + {card.num} + {card.label}
))}
@@ -193,67 +192,78 @@ export default function FreelanceClient({ projects, locale }: props) { {/* ── Needs ── */}
-
- - +
+ {t('needs.sectionLabel')} +
-
+ {/* Grid "mortier" — les lignes de séparation sont le fond du container */} +
{needs.map((item, i) => (
- + {String(i + 1).padStart(2, '0')} -
-

- {item.title} -

-

- {item.text} -

-
+

+ {item.title} +

+

+ {item.text} +

))}
- {/* ── Services — catalog grid ── */} + {/* ── Services — catalogue ── */}
-
- - +
+ {t('services.sectionLabel')} +
-
+
{services.map((service, i) => (
- - {String(i + 1).padStart(2, '0')} - -

- {service.title} -

-

- {service.desc} -

-
+ {/* En-tête catalogue */} +
+ + {String(i + 1).padStart(2, '0')} + + + {t('services.sectionLabel')} + +
+ + {/* Corps */} +
+

+ {service.title} +

+

+ {service.desc} +

+
+ + {/* Pied catalogue */} +
- + {t('services.idealLabel')} -

+

{service.ideal}

@@ -261,7 +271,7 @@ export default function FreelanceClient({ projects, locale }: props) { {service.examples.map((ex, j) => ( {ex} @@ -273,29 +283,29 @@ export default function FreelanceClient({ projects, locale }: props) {
- {/* ── Method — card grid ── */} + {/* ── Method — liste structurée ── */}
-
- - +
+ {t('method.sectionLabel')} +
-
+
{methodSteps.map((step, i) => (
- + {String(i + 1).padStart(2, '0')} -

+

{step.title}

-

+

{step.text}

@@ -303,14 +313,14 @@ export default function FreelanceClient({ projects, locale }: props) {
- {/* ── Works — project cards ── */} + {/* ── Works ── */}
-
- - +
+ {t('works.sectionLabel')} +
@@ -327,30 +337,29 @@ export default function FreelanceClient({ projects, locale }: props) { {/* ── Why ── */}
-
- - +
+ {t('why.sectionLabel')} +
-
- {/* Left — intro text */} +
-

+

{t('why.intro')}

- {/* Right — 2×2 arguments */} -
+ {/* Grille "mortier" identique à Needs */} +
{whyArgs.map((arg, i) => (
-

{arg.title}

-

{arg.text}

+

{arg.title}

+

{arg.text}

))}
@@ -360,26 +369,26 @@ export default function FreelanceClient({ projects, locale }: props) { {/* ── CTA final ── */}
-
-

+
+

{t('cta.title')}

-

+

{t('cta.text')}

-
+
{t('cta.button')} - -
- {t('cta.note1')} - {t('cta.note2')} +
+ {t('cta.note1')} + {t('cta.note2')}