Feat: Livres blancs — nouveau template collection + livre blanc individuel

- Blueprints white-papers / white-paper (intro, cover, PDF, date)
- Templates PHP + JSON API (liste avec singleSlug, détail avec fileUrl)
- Route POST (:any)/(:any)/download pour le téléchargement gated
- Panel : entrée white-papers ajoutée au menu après blog
- collection.css : styles partagés extraits de Blog (collection-*)
- Blog.svelte : classes renommées blog-* → collection-*
- WhitePapers.svelte : vue liste, URLs dynamiques via data.uri
- WhitePaper.svelte : vue détail deux colonnes + formulaire de téléchargement
- i18n : clés white paper (label, form, consentement, statuts)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-03-18 17:37:22 +01:00
parent 42ee58c18d
commit d4f05d6157
17 changed files with 870 additions and 183 deletions

View file

@ -47,6 +47,19 @@ const dict = {
privacy: { fr: "Confidentialité", en: "Privacy" },
// About
our_team: { fr: "NOTRE ÉQUIPE", en: "OUR TEAM" },
// White Papers
white_paper_label: { fr: "LIVRE BLANC", en: "WHITE PAPER" },
read_wp: { fr: "Télécharger", en: "Download" },
wp_form_intro: { fr: "Renseignez vos informations pour télécharger notre livre blanc.", en: "Fill in your information to download our white paper." },
wp_firstname: { fr: "Prénom*", en: "First name*" },
wp_lastname: { fr: "Nom*", en: "Last name*" },
wp_company: { fr: "Société*", en: "Company*" },
wp_role: { fr: "Fonction*", en: "Role*" },
wp_email: { fr: "E-mail*", en: "E-mail*" },
wp_consent: { fr: "En cochant cette case, j'accepte d'être recontacté par la société World Game. Mes données ne seront ni vendues, ni partagées.", en: "By checking this box, I agree to be contacted by World Game. My data will not be sold or shared." },
wp_download: { fr: "TÉLÉCHARGEMENT", en: "DOWNLOAD" },
wp_success: { fr: "Votre demande a été enregistrée. Le téléchargement devrait démarrer.", en: "Your request has been registered. The download should start." },
wp_error: { fr: "Une erreur est survenue, veuillez réessayer.", en: "An error occurred, please try again." },
// Menu
menu: { fr: "MENU", en: "MENU" },
connect: { fr: "CONNECT", en: "CONNECT" },