Adjust layout to make hero images fill available height

Modify HeroCard and GalleryHeroCard to use h-full and min-h-[300px] instead of aspect-square, and update FeaturedCarousel to accommodate a new three-column layout.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 517dfa7b-26ac-463d-a6e1-a58c6df97188
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 1022734e-1fc1-4de6-a94d-c9775c7a71f4
Replit-Helium-Checkpoint-Created: true
This commit is contained in:
sebastjanartic 2026-02-28 20:48:05 +00:00
parent 125943dab5
commit dab4fd8156
2 changed files with 13 additions and 11 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

View File

@ -42,8 +42,8 @@ function HeroCard({ article }: { article: Article }) {
const isVideo = article.category === "Video"; const isVideo = article.category === "Video";
return ( return (
<Link href={`/article/${article.slug}`}> <Link href={`/article/${article.slug}`}>
<div className="relative group cursor-pointer rounded-lg overflow-hidden" data-testid={`card-hero-${article.id}`}> <div className="relative group cursor-pointer rounded-lg overflow-hidden h-full" data-testid={`card-hero-${article.id}`}>
<div className="relative aspect-square"> <div className="relative h-full min-h-[300px]">
<img src={article.coverImage || "/images/article-1.png"} alt={article.title} className="w-full h-full object-cover absolute inset-0 transition-transform duration-700 group-hover:scale-105" style={{ objectPosition: "center 25%" }} loading="lazy" /> <img src={article.coverImage || "/images/article-1.png"} alt={article.title} className="w-full h-full object-cover absolute inset-0 transition-transform duration-700 group-hover:scale-105" style={{ objectPosition: "center 25%" }} loading="lazy" />
{isVideo && ( {isVideo && (
<div className="absolute inset-0 flex items-center justify-center z-10"> <div className="absolute inset-0 flex items-center justify-center z-10">
@ -77,8 +77,8 @@ function GalleryHeroCard({ images }: { images: GalleryImage[] }) {
return ( return (
<Link href="/gallery"> <Link href="/gallery">
<div className="relative group cursor-pointer rounded-lg overflow-hidden" data-testid="card-hero-gallery"> <div className="relative group cursor-pointer rounded-lg overflow-hidden h-full" data-testid="card-hero-gallery">
<div className="relative aspect-square"> <div className="relative h-full min-h-[300px]">
<img src={images[idx].large || images[idx].thumb} alt={images[idx].fileName} className="w-full h-full object-cover absolute inset-0 transition-opacity duration-1000" style={{ objectPosition: "center 25%" }} loading="lazy" /> <img src={images[idx].large || images[idx].thumb} alt={images[idx].fileName} className="w-full h-full object-cover absolute inset-0 transition-opacity duration-1000" style={{ objectPosition: "center 25%" }} loading="lazy" />
<div className="absolute inset-0 bg-gradient-to-t from-black/90 via-black/30 to-transparent" /> <div className="absolute inset-0 bg-gradient-to-t from-black/90 via-black/30 to-transparent" />
<div className="absolute bottom-0 left-0 right-0 p-5"> <div className="absolute bottom-0 left-0 right-0 p-5">
@ -236,14 +236,16 @@ function FeaturedCarousel({ articles, popular, galleryImages }: { articles: Arti
return ( return (
<section data-testid="featured-carousel" onMouseEnter={() => setPaused(true)} onMouseLeave={() => setPaused(false)}> <section data-testid="featured-carousel" onMouseEnter={() => setPaused(true)} onMouseLeave={() => setPaused(false)}>
<div className="grid grid-cols-1 lg:grid-cols-8 gap-4"> <div className="grid grid-cols-1 lg:grid-cols-8 gap-4">
<div className="lg:col-span-3"> <div className="lg:col-span-3 flex">
<div className="w-full">
{isGalleryPage && galleryImages ? ( {isGalleryPage && galleryImages ? (
<GalleryHeroCard images={galleryImages.slice(0, 30)} /> <GalleryHeroCard images={galleryImages.slice(0, 30)} />
) : hero ? ( ) : hero ? (
<HeroCard article={hero} /> <HeroCard article={hero} />
) : null} ) : null}
</div> </div>
<div className="lg:col-span-3 grid grid-cols-1 gap-3"> </div>
<div className="lg:col-span-3 grid grid-cols-1 gap-3 grid-rows-2">
{side.map((a) => ( {side.map((a) => (
<SideCard key={a.id} article={a} /> <SideCard key={a.id} article={a} />
))} ))}