ajouter sitemap et corriger SEO(title et description)

This commit is contained in:
Alexis SANOGO
2026-08-27 17:23:28 +02:00
parent d29d2ea052
commit fc9bcbf8da
13 changed files with 99 additions and 31 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

@@ -181,8 +181,8 @@ export default function Footer() {
01 84 80 20 34
</a>
<a href="mailto:contact@thetiptop.fr" className="inline-block mt-3 font-medium break-all hover:text-teal-300">
contact@thetiptop.fr
<a href="mailto:thetiptop.gp4@gmail.com" className="inline-block mt-3 font-medium break-all hover:text-teal-300">
thetiptop.gp4@gmail.com
</a>
<p className="text-teal-100 text-sm mt-2">

View File

@@ -0,0 +1,29 @@
import { useEffect } from 'react'
// Permet à une page de définir son propre <title>/<meta description> le
// temps qu'elle est affichée. La SPA n'a qu'un seul index.html : sans ce
// hook, toutes les routes partagent le même title/meta. Les valeurs
// précédentes sont restaurées au démontage, donc quitter la page revient à
// l'état d'avant (celui d'index.html, ou celui d'une page parente si elles
// s'enchaînent).
export default function usePageMeta({ title, description } = {}) {
useEffect(() => {
const previousTitle = document.title
if (title) {
document.title = title
}
const metaEl = document.querySelector('meta[name="description"]')
const previousDescription = metaEl?.getAttribute('content') ?? null
if (description && metaEl) {
metaEl.setAttribute('content', description)
}
return () => {
document.title = previousTitle
if (metaEl && previousDescription !== null) {
metaEl.setAttribute('content', previousDescription)
}
}
}, [title, description])
}

View File

@@ -31,7 +31,7 @@ export default function Accessibilite() {
<p className="text-gray-700 leading-relaxed text-sm sm:text-base">
Si vous rencontrez un obstacle à l'accessibilité sur le site, vous pouvez nous en faire
part afin que nous puissions y remédier :<br />
<strong>Email :</strong> contact@thetiptop.fr
<strong>Email :</strong> thetiptop.gp4@gmail.com
</p>
</section>

View File

@@ -1,10 +1,11 @@
import { Link } from 'react-router-dom'
import usePageMeta from '../hooks/usePageMeta'
import bannerImg from '../assets/img/banner-the-tip-top.webp'
const faqs = [
{
question: 'Comment obtenir un code ?',
answer: "Achetez un produit Thé Tip Top d'une valeur supérieure à 49 € dans notre boutique de Nice : un code unique à 10 caractères figure sur votre ticket de caisse ou votre facture.",
answer: "Achetez pour plus de 49 € dans notre boutique Thé Tip Top de Nice, entre le 2 et le 31 octobre 2026 : un code unique à 10 caractères figure sur votre ticket de caisse ou votre facture.",
},
{
question: 'Quels sont les lots à gagner ?',
@@ -25,7 +26,7 @@ const faqs = [
},
{
question: 'Jusqu\'à quand puis-je jouer ?',
answer: 'La participation est possible pendant toute la durée du jeu-concours, soit 30 jours à compter de son ouverture. Consultez la page Règles du jeu pour le détail des dates.',
answer: 'La saisie des codes est ouverte du 2 au 31 octobre 2026 inclus. Les lots sont ensuite à retirer jusqu\'au 30 novembre 2026.',
},
{
question: 'Que faire si mon code n\'est pas reconnu ?',
@@ -33,7 +34,7 @@ const faqs = [
},
{
question: 'Où retirer mon lot ?',
answer: 'Dans notre boutique de Nice, sur présentation de votre compte utilisateur validé et de la confirmation de gain affichée dans votre espace « Mes gains ».',
answer: 'Dans notre boutique de Nice, sur présentation de votre compte utilisateur validé et de la confirmation de gain affichée dans votre espace « Mes gains », jusqu\'au 30 novembre 2026.',
},
]
@@ -51,13 +52,18 @@ const faqJsonLd = {
}
export default function Accueil() {
usePageMeta({
title: 'Jeu-concours 100 % Gagnant | Thé Tip Top — Thés bio et faits main',
description: "Du 2 au 31 octobre, tout ticket de plus de 49 € de notre boutique de Nice porte un code 100 % gagnant. Saisissez le vôtre et repartez avec votre lot.",
})
return (
<div className="bg-gray-50 min-h-screen">
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(faqJsonLd) }} />
{/* Bannière */}
<section className="w-full h-48 sm:h-64 md:h-80 lg:h-96 overflow-hidden">
<section className="w-full">
<img
src={bannerImg}
alt="Jeu-concours 100 % Gagnant Thé Tip Top, du 2 au 31 octobre 2026 : tentez de gagner un an de thé d'une valeur de 360 € pour l'ouverture de notre 10e boutique à Nice."
@@ -98,12 +104,11 @@ export default function Accueil() {
<h2 className="text-2xl sm:text-3xl font-bold text-[#006B6B] mb-6 sm:mb-8 text-center">
Comment participer ?
</h2>
<ol className="grid grid-cols-2 md:grid-cols-4 gap-4 list-none">
<ol className="grid grid-cols-1 sm:grid-cols-3 gap-4 list-none">
{[
{ num: '1', text: 'Achat de 49 € minimum' },
{ num: '2', text: 'Recevez votre code unique' },
{ num: '3', text: 'Saisissez le code sur le site' },
{ num: '4', text: 'Découvrez votre lot' },
{ num: '1', text: "Achat de 49 € dans notre boutique de Nice, code sur le ticket" },
{ num: '2', text: 'Créez votre compte et saisissez le code' },
{ num: '3', text: 'Découvrez et retirez votre lot en boutique' },
].map((step) => (
<li key={step.num} className="bg-white rounded-2xl shadow p-4 sm:p-6 text-center">
<div className="text-2xl sm:text-3xl font-bold text-[#006B6B] mb-2 sm:mb-3">{step.num}</div>

View File

@@ -30,7 +30,7 @@ export default function Cgu() {
Les présentes Conditions Générales d'Utilisation (CGU) ont pour objet de définir
les modalités et conditions dans lesquelles la société Thé Tip Top met à
disposition des utilisateurs le site internet du jeu-concours « 100% Gagnant »,
accessible à l'adresse https://www.thetiptop-concours.fr.
accessible à l'adresse https://www.dsp5-archi-o24a-4-5-g4.fr.
</p>
<p>
Toute utilisation du Site implique l'acceptation pleine et entière des présentes
@@ -112,12 +112,19 @@ export default function Cgu() {
caisse ou sa facture. Le Site valide le code et attribue immédiatement le lot
correspondant selon la répartition préétablie :
</p>
<ul className="list-disc list-inside space-y-1 mt-2">
<li>60 % des tickets : infuseur à thé</li>
<li>20 % des tickets : boîte de 100 g de thé détox ou d'infusion</li>
<li>10 % des tickets : boîte de 100 g de thé signature</li>
<li>6 % des tickets : coffret découverte d'une valeur de 39 €</li>
<li>4 % des tickets : coffret découverte d'une valeur de 69 €</li>
<ul className="space-y-2 mt-2">
{[
{ pct: '60 %', text: 'infuseur à thé' },
{ pct: '20 %', text: "boîte de 100 g de thé détox ou d'infusion" },
{ pct: '10 %', text: 'boîte de 100 g de thé signature' },
{ pct: '6 %', text: "coffret découverte d'une valeur de 39 €" },
{ pct: '4 %', text: "coffret découverte d'une valeur de 69 €" },
].map((lot) => (
<li key={lot.pct} className="flex gap-2">
<span className="font-semibold text-[#006B6B] flex-shrink-0">{lot.pct}</span>
<span className="min-w-0 flex-1">des tickets : {lot.text}</span>
</li>
))}
</ul>
<p className="mt-2">
Un même utilisateur peut soumettre plusieurs codes distincts. La participation
@@ -220,7 +227,7 @@ export default function Cgu() {
<h3 className="font-semibold text-gray-800 mb-1">6.2 – Suppression du compte</h3>
<p>
L'utilisateur peut demander la suppression de son compte à tout moment en
contactant directement l'équipe via contact@thetiptop.fr. La suppression entraîne
contactant directement l'équipe via thetiptop.gp4@gmail.com. La suppression entraîne
la perte définitive des participations et gains non encore réclamés. Les données
personnelles sont supprimées conformément aux dispositions de la Politique de
Confidentialité, sous réserve des obligations légales de conservation.

View File

@@ -89,7 +89,7 @@ export default function Confidentialite() {
</h2>
<p className="text-gray-700 text-sm sm:text-base">
Pour toute question concernant vos données personnelles :<br />
<strong>Email :</strong> contact@thetiptop.fr
<strong>Email :</strong> thetiptop.gp4@gmail.com
</p>
</section>

View File

@@ -37,10 +37,10 @@ export default function Contact() {
Email
</h2>
<a
href="mailto:contact@thetiptop.fr"
href="mailto:thetiptop.gp4@gmail.com"
className="text-sm sm:text-base hover:text-[#006B6B]"
>
contact@thetiptop.fr
thetiptop.gp4@gmail.com
</a>
</div>

View File

@@ -36,12 +36,12 @@ export default function MentionsLegales() {
<p><strong>Directeur de la publication :</strong> M. Eric Bourdon, en sa qualité de Gérant</p>
<p><strong>SIRET :</strong> 362 521 879 00054</p>
<p><strong>TVA intracommunautaire :</strong> FR83362521879</p>
<p><strong>Email :</strong> contact@thetiptop.fr</p>
<p><strong>Email :</strong> thetiptop.gp4@gmail.com</p>
<p><strong>Téléphone :</strong> 01 84 80 20 34</p>
<p className="pt-2">
Le règlement du jeu-concours a été déposé auprès de Maître Arnaud Rick,
Commissaire de Justice. Il est consultable gratuitement sur simple demande
à l'adresse contact@thetiptop.fr.
à l'adresse thetiptop.gp4@gmail.com.
</p>
</div>
),

View File

@@ -59,15 +59,28 @@ export default function ReglesJeu() {
<h2 className="text-2xl sm:text-3xl font-bold text-[#006B6B] mb-4 sm:mb-6 text-center">
Que pouvez-vous gagner ?
</h2>
<p className="text-gray-600 text-base sm:text-lg text-center leading-relaxed mb-6 sm:mb-8">
Tous les billets sont gagnants ! Les récompenses peuvent aller
d'un infuseur à thé à un coffret découverte d'une valeur de 69€,
en passant par des thés détox et des thés signatures.
<p className="text-gray-600 text-base sm:text-lg text-center leading-relaxed mb-4 sm:mb-6">
Tous les billets sont gagnants ! Selon votre ticket, vous remportez :
</p>
<ul className="text-gray-700 text-sm sm:text-base leading-relaxed space-y-2 max-w-md mx-auto mb-6 sm:mb-8">
{[
{ pct: '60 %', text: 'un infuseur à thé' },
{ pct: '20 %', text: "une boîte de 100 g de thé détox ou d'infusion" },
{ pct: '10 %', text: 'une boîte de 100 g de thé signature' },
{ pct: '6 %', text: "un coffret découverte d'une valeur de 39 €" },
{ pct: '4 %', text: "un coffret découverte d'une valeur de 69 €" },
].map((lot) => (
<li key={lot.pct} className="flex gap-2">
<span className="font-semibold text-[#006B6B] flex-shrink-0">{lot.pct}</span>
<span className="min-w-0 flex-1">des tickets : {lot.text}</span>
</li>
))}
</ul>
<div className="bg-gray-100 rounded-xl p-4 sm:p-6 text-center">
<h3 className="text-xl sm:text-2xl font-bold text-[#006B6B] mb-2">Grand gagnant</h3>
<p className="text-gray-700 text-sm sm:text-base">
Le participant tiré au sort remportera une année de thé d'une valeur de 360€ !
Un tirage au sort, effectué sous le contrôle de Maître Arnaud Rick, Commissaire de
Justice, désignera le gagnant d'une année de thé d'une valeur de 360€ !
</p>
</div>