feat: improve CRO CTA copy and contact hierarchy

This commit is contained in:
Clément SAILLANT
2026-03-01 21:56:46 +01:00
parent a607feda60
commit 690a082e61
2 changed files with 71 additions and 20 deletions
+44 -16
View File
@@ -1,3 +1,4 @@
import { Button } from '@/components/ui/button';
import type { CtaLink } from '@/lib/types';
import { TRACK_EVENTS, trackAttrs } from '@/lib/tracking';
@@ -26,36 +27,63 @@ const contactLinks: CtaLink[] = [
];
export function Contact() {
const primary = contactLinks[0];
const secondary = contactLinks[1];
const tertiary = contactLinks[2];
return (
<section id="contact" aria-labelledby="contact-title" className="section-anchor mt-5">
<div className="rounded-2xl border border-cyan-300/25 bg-gradient-to-b from-cyan-300/7 to-violet-100/6 p-5 md:p-6">
<h2 id="contact-title" className="m-0 text-3xl md:text-4xl">
Contact
Demarrer une mission
</h2>
<p className="mb-0 mt-3 max-w-3xl text-violet-100/82">
Pour mission de conception, design produit, collaboration de creation electronique ou production
audiovisuelle, contactez-moi via les plateformes ci-dessous.
</p>
<p className="mb-0 mt-2 text-sm text-violet-100/70">
Canal prioritaire: LinkedIn DM. Option business/freelance: Malt.
</p>
<ul className="mb-0 mt-4 flex flex-col gap-2 pl-0">
{contactLinks.map((link) => (
<li className="list-none" key={link.label}>
<a
href={link.href}
target={link.external ? '_blank' : undefined}
rel={link.external ? 'noopener noreferrer' : undefined}
{...trackAttrs(link.event, link.destination)}
className="inline-flex min-h-9 items-center font-semibold text-cyan-300 underline-offset-4 hover:text-cyan-200 hover:underline"
>
{link.label}
</a>
</li>
))}
</ul>
<div className="mt-4 flex flex-col gap-3 sm:flex-row sm:flex-wrap">
<Button asChild size="lg">
<a
href={primary.href}
target={primary.external ? '_blank' : undefined}
rel={primary.external ? 'noopener noreferrer' : undefined}
{...trackAttrs(primary.event, primary.destination)}
>
{primary.label} (prioritaire)
</a>
</Button>
<Button asChild variant="secondary" size="lg">
<a
href={secondary.href}
target={secondary.external ? '_blank' : undefined}
rel={secondary.external ? 'noopener noreferrer' : undefined}
{...trackAttrs(secondary.event, secondary.destination)}
>
{secondary.label} (brief mission)
</a>
</Button>
</div>
<p className="mb-0 mt-3">
<a
href={tertiary.href}
target={tertiary.external ? '_blank' : undefined}
rel={tertiary.external ? 'noopener noreferrer' : undefined}
{...trackAttrs(tertiary.event, tertiary.destination)}
className="inline-flex min-h-9 items-center font-semibold text-cyan-300 underline-offset-4 hover:text-cyan-200 hover:underline"
>
{tertiary.label}
</a>
</p>
<ul aria-label="Repères de confiance" className="mb-0 mt-4 pl-5 text-violet-100/76">
<li>Positionnement verifiable: concepteur, creation electronique et iteration IA</li>
<li>Presence professionnelle active sur LinkedIn et Malt</li>
<li>Premier echange possible sous 24-48h selon disponibilite</li>
<li>Travaux publies et contact direct pour collaboration</li>
</ul>
</div>
+27 -4
View File
@@ -5,13 +5,13 @@ import { TRACK_EVENTS, trackAttrs } from '@/lib/tracking';
const heroCtas: CtaLink[] = [
{
label: 'Voir mes projets',
label: "Voir les cas d'usage",
href: '#projets',
event: TRACK_EVENTS.ctaHeroProjects,
destination: '#projets'
},
{
label: 'Me contacter',
label: 'Lancer une mission',
href: '#contact',
event: TRACK_EVENTS.ctaHeroContact,
destination: '#contact'
@@ -84,6 +84,29 @@ export function Hero() {
</a>
</Button>
</div>
<div className="mt-3 flex flex-wrap items-center gap-2 text-sm text-violet-100/76">
<span className="lab-kicker">Contact rapide</span>
<a
href="https://fr.linkedin.com/in/electron-rare"
target="_blank"
rel="noopener noreferrer"
{...trackAttrs(TRACK_EVENTS.outboundLinkedinContact, 'linkedin.com')}
className="font-semibold text-cyan-300 underline-offset-4 hover:text-cyan-200 hover:underline"
>
LinkedIn DM
</a>
<span aria-hidden="true"></span>
<a
href="https://www.malt.com/profile/clementsaillant"
target="_blank"
rel="noopener noreferrer"
{...trackAttrs(TRACK_EVENTS.outboundMaltContact, 'malt.com')}
className="font-semibold text-fuchsia-300 underline-offset-4 hover:text-fuchsia-200 hover:underline"
>
Malt
</a>
</div>
</div>
<motion.aside
@@ -113,8 +136,8 @@ export function Hero() {
<strong>Astro + IA</strong>
</div>
<div className="lab-metric">
<span>Output</span>
<strong>Prototype live</strong>
<span>Reponse</span>
<strong>24-48h</strong>
</div>
</div>
<a