add AI-generated landing page photography (Gemini 3 Pro)
20 images generated via gemini-3-pro-image-preview (Nano Banana Pro): - Documentary street photography style, British-diverse subjects - 12 square (1:1), 8 landscape (16:9) matching placeholder aspect ratios - Replaced all ImagePlaceholder components with LandingImage + next/image - Images in public/images/landing/, served statically Pages updated: /, /for/charities, /for/fundraisers, /for/volunteers, /for/organisations New component: LandingImage (next/image with fill + object-cover)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import Link from "next/link"
|
||||
import Image from "next/image"
|
||||
|
||||
/* ── Nav ── */
|
||||
export function Nav() {
|
||||
@@ -79,7 +80,24 @@ export function BottomCta({ headline, sub }: { headline?: string; sub?: string }
|
||||
)
|
||||
}
|
||||
|
||||
/* ── Image Placeholder ── */
|
||||
/* ── Landing Image ── */
|
||||
export function LandingImage({ src, alt, aspect = "video" }: { src: string; alt: string; aspect?: "video" | "square" | "wide" }) {
|
||||
const aspectClass = aspect === "square" ? "aspect-square" : aspect === "wide" ? "aspect-[2/1]" : "aspect-video"
|
||||
return (
|
||||
<div className={`${aspectClass} w-full relative overflow-hidden bg-gray-100`}>
|
||||
<Image
|
||||
src={src}
|
||||
alt={alt}
|
||||
fill
|
||||
className="object-cover"
|
||||
sizes="(max-width: 768px) 100vw, 50vw"
|
||||
quality={85}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
/* ── Image Placeholder (kept as fallback) ── */
|
||||
export function ImagePlaceholder({ aspect = "video", label }: { aspect?: "video" | "square" | "wide"; label?: string }) {
|
||||
const aspectClass = aspect === "square" ? "aspect-square" : aspect === "wide" ? "aspect-[2/1]" : "aspect-video"
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user