From 03eca6e9ae1c8f2d07a7cc7d310f5f2c63c5b9db Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sat, 27 Jun 2026 14:59:46 +0200 Subject: [PATCH] feat: adaptive promo images with blurred fill Replace cover-crop background with PromoImage component: sharp contain image over a blurred cover copy. Whole image visible on any aspect ratio, no flat letterbox bars. Applied to accueil, adherent profile, backend promotions, member space preview + upload dropzone. Also retheme adherent logo frame (cream gradient + warm border) instead of flat white. Co-Authored-By: Claude Opus 4.8 --- src/app/adherents/[id]/page.tsx | 9 +++-- src/app/backend/espace/MemberSpaceForm.tsx | 13 ++++---- src/app/backend/promotions/page.tsx | 11 +++--- src/app/page.tsx | 7 ++-- src/components/PromoImage.tsx | 39 ++++++++++++++++++++++ 5 files changed, 60 insertions(+), 19 deletions(-) create mode 100644 src/components/PromoImage.tsx diff --git a/src/app/adherents/[id]/page.tsx b/src/app/adherents/[id]/page.tsx index 7854917..6eac458 100644 --- a/src/app/adherents/[id]/page.tsx +++ b/src/app/adherents/[id]/page.tsx @@ -5,6 +5,7 @@ import { Sparkle } from "@/components/Sparkle"; import { SiteHeader } from "@/components/SiteHeader"; import { SiteFooter } from "@/components/SiteFooter"; import { VitrineImage } from "@/components/VitrineImage"; +import { PromoImage } from "@/components/PromoImage"; import { getMemberLivePromotions, getPublicMember } from "@/lib/queries"; export const dynamic = "force-dynamic"; @@ -112,8 +113,9 @@ export default async function FicheAdherentPage({ width: 118, height: 118, borderRadius: 22, - background: "#fff", - border: "4px solid #fff", + background: "linear-gradient(160deg, #fffdf8 0%, #f6f2e8 100%)", + border: "1px solid #e6dcc6", + outline: "4px solid #fff", marginTop: -54, flexShrink: 0, display: "flex", @@ -265,7 +267,8 @@ export default async function FicheAdherentPage({ ) : ( promos.map((p, idx) => (
-
+
+ {p.imageUrl && } {!p.imageUrl && (photo de l'offre)} {p.badge && ( {p.badge} diff --git a/src/app/backend/espace/MemberSpaceForm.tsx b/src/app/backend/espace/MemberSpaceForm.tsx index 9b0790f..b7a7430 100644 --- a/src/app/backend/espace/MemberSpaceForm.tsx +++ b/src/app/backend/espace/MemberSpaceForm.tsx @@ -3,6 +3,7 @@ import { useRef, useState } from "react"; import { useRouter } from "next/navigation"; import { publishPromo } from "../actions"; +import { PromoImage } from "@/components/PromoImage"; const STRIPE_WARM = "repeating-linear-gradient(45deg,#efe9da,#efe9da 12px,#e6ddc9 12px,#e6ddc9 24px)"; @@ -81,11 +82,10 @@ export function MemberSpaceForm({