isUnknown
5c2c015850
footer : disable pointer events when hidden #57
Deploy / Deploy to Production (push) Successful in 28s
2026-04-14 09:58:23 +02:00
isUnknown
fc1fa42e67
footer : hide on white paper page
Deploy / Deploy to Production (push) Successful in 23s
2026-04-04 10:27:10 +02:00
isUnknown
35b3869e97
white paper : hide footer
Deploy / Deploy to Production (push) Successful in 20s
2026-04-04 10:22:40 +02:00
isUnknown
7241e75023
mobile > footer : disable pointer events
Deploy / Deploy to Production (push) Successful in 23s
2026-04-04 10:19:32 +02:00
isUnknown
cc61a83139
gallery animation : reveal only once all images are loaded. related to #55
...
Deploy / Deploy to Production (push) Successful in 21s
Preload unique image URLs via new Image(). Container stays at opacity:0
until all are ready, then reveals at once. Cached images show instantly
(no fade transition). Fixes broken progressive reveal in scrolling gallery.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 12:28:31 +02:00
isUnknown
4b946d4cf0
expertise : fix active text centering - related to #52
Deploy / Deploy to Production (push) Successful in 28s
2026-04-03 10:54:40 +02:00
isUnknown
6e0b0bd551
improve carousel mobile. related to #53
Deploy / Deploy to Production (push) Successful in 32s
2026-04-02 16:23:16 +02:00
isUnknown
65f6bf459b
hide footer on white paper. closes #52
Deploy / Deploy to Production (push) Successful in 42s
2026-04-02 15:38:47 +02:00
isUnknown
4ccbad9663
about : extract team carousel into TeamCarousel component (swiper)
...
Replace inline carousel logic with a dedicated TeamCarousel.svelte component.
Uses SwiperJS for mobile peek (1.4 slides), tablet (2) and desktop (4) layouts,
with touch swipe, pagination dots and prev/next buttons.
related to #53
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 14:52:15 +02:00
isUnknown
0afbcf4088
footer : fix show/hide logic, transition and scroll throttle. related to #51
...
Deploy / Deploy to Production (push) Successful in 23s
- Fix scroll listener (cleanup, local querySelector, scrollHeight calc)
- Fix media query syntax in variables.css (missing space in `and (`)
- Use transform: translateY instead of bottom for GPU-accelerated transition
- Throttle scroll handler with requestAnimationFrame
- Move Footer to App.svelte (global), remove per-view imports
refs #51
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 19:18:02 +02:00
isUnknown
8387843da0
article : extract ShareButtons and ArticleRelated components
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 15:32:23 +02:00
isUnknown
8481dc5f90
add white-paper block type for articles
...
- Kirby block blueprint with page reference + editable bg/text colors
- PHP snippet renders the card with accessible markup (article, h3, button)
- WhitePaperDialog.svelte: native dialog with download form (a11y: labels, fieldset, autocomplete, focus management)
- Article.svelte: click detection on .wp-block__btn + dialog mount
refs #49
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 19:51:21 +02:00
isUnknown
d218bc47d7
fix footer position. closes #8
Deploy / Deploy to Production (push) Successful in 5m25s
2026-03-30 19:13:42 +02:00
isUnknown
8375a098c9
add privacy page. closes #16
Deploy / Deploy to Production (push) Successful in 22s
2026-03-30 18:48:58 +02:00
isUnknown
44af8a9b4e
add privacy page as standalone SPA view outside slide navigation
...
- New Kirby template/blueprint/JSON for privacy page (confidentialite slug)
- Standalone page state in slides store + router handling for non-nav pages
- Privacy.svelte view with background image, text blocks, footer
- Centralize vertical lines in App.svelte as fixed elements with per-slide visibility
- Footer privacy link language-aware (FR/EN)
- Portfolio mockup fix: read from default language for consistent EN display
- menu.php: add privacy page to Kirby panel navigation
refs #44
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 18:43:35 +02:00
isUnknown
b12b839f1b
header > nav item responsive font size. closes #38
Deploy / Deploy to Production (push) Successful in 21s
2026-03-30 18:18:51 +02:00
isUnknown
532eb5cfa6
header : ajouter le backdrop sur la page livres blancs. closes #40
...
Deploy / Deploy to Production (push) Successful in 21s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 17:34:51 +02:00
isUnknown
a043a8c281
vertical lines : centraliser en fixed dans App.svelte
...
- Retirer les lignes des views (Home, Expertise, About, Portfolio)
- Centraliser dans App.svelte en position:fixed, visibilité par slide
via transition de hauteur 0→100vh selon slides.active.template
- Positions calculées depuis la golden-grid (1/6, 1/3, 1/2, 2/3, 5/6)
- Nettoyer layout.css (garder seulement les classes pour Menu.svelte)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 14:13:41 +02:00
isUnknown
cb51e050e4
portfolio : galerie horizontale 3 rangées + mockup conditionnel
...
Deploy / Deploy to Production (push) Successful in 25s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 18:53:27 +01:00
isUnknown
133651c35d
portfolio : animation horizontale — toggle panel + composant
...
Deploy / Deploy to Production (push) Successful in 19s
Ajout du mode horizontal dans GalleryAnimation (5 rangées, scrollLeft/scrollRight)
avec toggle vertical/horizontal dans le panel projet.
refs #21
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 14:37:05 +01:00
isUnknown
2cefdd8867
little style adjustments
Deploy / Deploy to Production (push) Successful in 21s
2026-03-21 13:41:18 +01:00
isUnknown
6f26c94308
article style
Deploy / Deploy to Production (push) Successful in 19s
2026-03-21 13:38:42 +01:00
isUnknown
1f8abcd305
closes #7
Deploy / Deploy to Production (push) Successful in 19s
2026-03-21 13:24:25 +01:00
isUnknown
4538392003
finish portfolio animation without box shadow - related #20
Deploy / Deploy to Production (push) Successful in 18s
2026-03-21 12:54:33 +01:00
isUnknown
436772502b
portfolio gallery animation : decrease opacity - related to #20
2026-03-21 12:42:32 +01:00
isUnknown
deb5f59d5e
portfolio > gallery animation : invert col animations directions
...
Deploy / Deploy to Production (push) Successful in 18s
related to #20
2026-03-21 12:36:05 +01:00
isUnknown
8829817e48
feat(portfolio): image d'arrière-plan pour la galerie animée
...
Deploy / Deploy to Production (push) Successful in 18s
related to #20
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 12:34:46 +01:00
isUnknown
517c701ab9
feat(footer): suppression newsletter, h3 → p.footer-label, corrections CSS mobile
...
- Retire la section newsletter commentée et tout son CSS associé
- Remplace les h3 par des p.footer-label (sémantique plus correcte)
- Réduit le gap des colonnes footer
- Fix divider mobile (7% width, 2px height)
- Ajoute offset margin-left pour .collection .page-scrollable-footer mobile
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 11:08:14 +01:00
isUnknown
67d8159787
Feat: sécurisation formulaire white paper + stockage leads
...
- Honeypot, timing check, rate limiting IP, validation serveur
- Déduplication par email : enrichissement des champs vides si contact existant
- Blueprint white-paper : onglet "Contacts intéressés" (champ structure contactDatabase)
- Blueprint site.yml : ajout onglet "Données d'usage" pour vue globale des leads
- Route externalisée dans site/config/routes/download-white-paper.php
- isDownloadable côté client (prénom, nom, email valide, consentement)
- Cursor : pas de hover sur boutons disabled
- Buttons : hover désactivé si disabled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 07:11:00 +01:00
isUnknown
d4f05d6157
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>
2026-03-18 17:37:22 +01:00
isUnknown
474baf321b
Fix/Feat: footer, newsletter, logo footerLogo, i18n, router formatting
...
- Footer : newsletter commentée, margin-top blog, text-align footer-col
- Blueprint site : logo → footerLogo (champ dédié au pied de page)
- Controller : logo → footerLogo
- i18n : newsletter_heading mis à jour (newsletters)
- site.svelte.js : retrait console.log debug
- router/index.js : reformatage quotes (linter)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 16:17:16 +01:00
isUnknown
c6fa61c77b
Feat: footer reveal — page-scrollable-footer intégré aux vues
...
Deploy / Deploy to Production (push) Successful in 25s
- Footer renommé page-scrollable-footer, positionné en dernier enfant
de .page-container dans About, Blog et Article
- Marges négatives pour aligner le footer pleine largeur (about / blog)
- Retrait du footer global fixe de App.svelte
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 12:14:59 +01:00
isUnknown
d9494f92dd
about blueprint : add h3 in writer
Deploy / Deploy to Production (push) Successful in 21s
2026-03-17 10:26:17 +01:00
isUnknown
b3b0580ab1
Feat: footer reveal + refactor page About
...
Deploy / Deploy to Production (push) Successful in 24s
- Footer global fixé en bas (App.svelte), masqué par le contenu des slides
- margin-bottom sur .page-scrollable pour l'effet footer reveal (about, blog, article)
- About : champ intro remplacé par heading (text) + subtitle (writer), blueprint + API + vue mis à jour
- LanguageSwitcher : div → button avec hitbox élargie
- i18n : clé our_team (fr: NOTRE ÉQUIPE / en: OUR TEAM)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 10:00:53 +01:00
isUnknown
4eb495c021
Refactor: header sémantique + backdrop limité à expertise/about/blog
...
- Header : <nav> enveloppée dans <header> (landmark sémantique)
- Backdrop navbar restreint aux slides about et blog (scroll > 100px)
- Portfolio : $effect navbar backdrop supprimé + import navigation retiré
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 09:06:14 +01:00
isUnknown
77080c4928
Misc: ajustements i18n, menu et controller
...
Deploy / Deploy to Production (push) Successful in 20s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 18:38:03 +01:00
isUnknown
a0798e71d0
Feat: navbar frosted glass au scroll
...
- navigation.svelte.js : ajout isScrolled + setScrolled()
- Header : scroll listener (capture) sur .page-scrollable > 100px,
reset au changement de slide, classe navbar--scrolled conditionnelle,
transition 0.4s sur background-color et backdrop-filter
- Expertise : $effect notifie quand currentItem > 0
- Portfolio : $effect notifie quand currentIndex > 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 15:05:25 +01:00
isUnknown
517143fe60
Feat: intégration multilingue FR/EN (i18n)
...
Deploy / Deploy to Production (push) Successful in 18s
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
isUnknown
0233a6a4a4
Feat: footer sémantique dans Blog, About et Article
...
Deploy / Deploy to Production (push) Successful in 19s
Refonte complète du Footer (sémantique propre, données dynamiques depuis
le store site, bouton subscribe avec l'animation .button partagée).
Intégré dans About, Blog et Article. Scroll-to-top au départ de About et Blog.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 10:57:52 +01:00
isUnknown
b9631b8c53
Fix: remplacer custom media queries par valeurs en dur, retirer postcss-custom-media
...
Deploy / Deploy to Production (push) Successful in 5m23s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 18:55:37 +01:00
isUnknown
66767f0136
Feat: breakpoints CSS en @custom-media via postcss-custom-media
...
- postcss.config.js: plugin postcss-custom-media
- variables.css: @custom-media --mobile / --tablet / --tablet-only
- Remplacement de tous les max-width: 700px et 912px hardcodés
par @media (--mobile), (--tablet), (--tablet-only)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 08:34:37 +01:00
isUnknown
11a2c623cb
Feat: images responsives vignettes Play + composant ResponsivePicture
...
- Config: presets thumbnail + thumbnail-webp (170/255/355/510/710w)
- play.json.php: expose thumbnailSrcset + thumbnailWebp
- Nouveau composant ResponsivePicture.svelte (src, srcset, webp, sizes, alt, cls)
- Play.svelte: utilise ResponsivePicture dans le carousel
sizes="clamp(170px, 18.41vw, 355px)"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 08:08:34 +01:00
isUnknown
3cafcf3167
Feat: lignes courbes SVG sur Play + refonte blueprint game
...
- Play.svelte : ajout overlay SVG (background-play), suppression des vertical-line
- game.yml : restructuration du blueprint
- Header.svelte : modifications mineures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:18:38 +01:00
isUnknown
d8a0fde34c
Upgrade Svelte 5.0.0 → 5.53.7 + fix Cursor class syntax
...
Deploy / Deploy to Production (push) Successful in 18s
- Mise à jour de Svelte vers 5.53.7 pour supporter la syntaxe tableau/objet sur l'attribut class
- Cursor.svelte : class={[...]} avec états onTarget et onClick
- blueprints : catchphrase → catchPhrase
- buttons.css : suppression cursor: pointer
- Portfolio.svelte : scale hover nav item
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 13:20:28 +01:00
isUnknown
802a3ed5bf
Feat: couleur d'arrière-plan dynamique sur GalleryAnimation (galleryBackgroundColor)
...
Deploy / Deploy to Production (push) Successful in 19s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 18:22:50 +01:00
isUnknown
47be2b4662
Refactor: styles GalleryAnimation migrés dans le composant
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 18:11:31 +01:00
isUnknown
88a5c78d7a
Opti: images galerie portfolio en srcset webp
...
Kirby: preset 'gallery' + 'gallery-webp' (200→800px, qualité 80)
API: images_gallery retourne {src, srcset, webp} au lieu d'une simple URL
GalleryAnimation: <picture> + srcset, sizes 15vw desktop / 33vw mobile
decoding="async" ajouté
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 16:41:50 +01:00
isUnknown
0b563b4697
Feat: page Portfolio avec galerie animée, navigation par scroll/touch/clavier
...
Deploy / Deploy to Production (push) Successful in 18s
- Composable useScrollNav partagé entre Expertise et Portfolio (wheel/touch/clavier)
- GalleryAnimation : 3 colonnes CSS défilantes infinies avec décalage et delay
- Portfolio : golden grid, mockup centré, infos projet, sidebar vignettes navigables
- API portfolio.json.php alignée sur blueprint project.yml (catchphrase, images_gallery, mockup, keywords, external_links)
- Variable --ease-standard partagée dans variables.css
- Alias @composables ajouté dans vite.config.js
- Refactor Expertise pour utiliser le composable (comportement identique)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 17:13:50 +01:00
isUnknown
a737fea100
Feat: navbar mobile padding et hauteur minimale
...
Deploy / Deploy to Production (push) Successful in 13s
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:40:37 +01:00
isUnknown
d44c886e8c
Feat: responsive header mobile + variables breakpoints
...
- variables.css : --breakpoint-mobile (700px) et --breakpoint-tablet (912px)
- Header : .navbar-item { display: none } en dessous de 700px
- Header/Menu : annotation des media queries avec les variables de référence
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 14:38:06 +01:00