synchronisation du contenu avec la DB et amélioration du CMS

- Migration du blog et des interviews des données mockées vers PostgreSQL (Prisma).
- Refonte des pages publiques en Server Components pour de meilleures performances/SEO.
- Intégration d'un éditeur de texte riche (React Quill) avec titres H1-H6 et séparateurs.
- Correction des erreurs de validation Prisma liées aux paramètres asynchrones (Next.js 15+).
- Correction des problèmes d'affichage des modales de suspension via React Portals.
- Installation de @tailwindcss/typography et correction du débordement de texte (break-words).
- Implémentation des actions de modération (suspension/révocation) pour les utilisateurs et boutiques.
This commit is contained in:
2026-04-12 18:59:20 +02:00
parent b73939d381
commit 887030ee47
84 changed files with 5577 additions and 15128 deletions

View File

@@ -9,7 +9,7 @@ const MousePointerClick = ({className}: {className?:string}) => (
</svg>
);
const DashboardOverview = ({ business }: { business: Business }) => (
const DashboardOverview = ({ business, stats }: { business: Business, stats: { totalViews: number, contactClicks: number } | null }) => (
<div className="space-y-6">
<h2 className="text-2xl font-bold font-serif text-gray-900">Tableau de bord</h2>
<div className="grid grid-cols-1 gap-5 sm:grid-cols-3">
@@ -23,7 +23,7 @@ const DashboardOverview = ({ business }: { business: Business }) => (
<dl>
<dt className="text-sm font-medium text-gray-500 truncate">Vues de la fiche</dt>
<dd>
<div className="text-lg font-medium text-gray-900">{business.viewCount}</div>
<div className="text-lg font-medium text-gray-900">{stats ? stats.totalViews : business.viewCount}</div>
</dd>
</dl>
</div>
@@ -40,7 +40,7 @@ const DashboardOverview = ({ business }: { business: Business }) => (
<dl>
<dt className="text-sm font-medium text-gray-500 truncate">Clics Contact</dt>
<dd>
<div className="text-lg font-medium text-gray-900">42</div>
<div className="text-lg font-medium text-gray-900">{stats ? stats.contactClicks : '...'}</div>
</dd>
</dl>
</div>