homepage: bento 3-up + 300x600 inline; word-safe excerpt; bigger sponsor logos

- FeaturedBentoFromDb: row below the hero is now a 3-up rail on the left
  with the Blackmagic 300x600 on the right, aligned with the hero's right
  edge. SidebarAdStack skips that 300x600 so the article-feed sidebar
  starts with the 300x250 stack instead.
- cleanExcerpt: render-time word-snap for excerpts that were hard-cut at a
  byte count (Matrox 50-years showed "Since 1976, the co" mid-word). Used
  on the bento hero subhead and the article-feed cards.
- SponsorLogoStrip: now also pulls every tracked_companies.featured=true
  brand (Rode, TBC Consoles, Plura, Autocue, Autoscript, Filmcraft,
  Lectrosonics, Prompter People, SanDisk, Sennheiser), and logos go from
  h-10/h-12 max-w-140 → h-14/h-16 max-w-180 with thicker padding.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ryan Salazar
2026-05-29 10:56:38 +00:00
parent 0541103c89
commit 3b74f610a2
5 changed files with 110 additions and 48 deletions

View File

@@ -4,6 +4,7 @@ import AppImage from "@/components/ui/AppImage";
import SidebarAdStack from "@/components/SidebarAdStack";
import AdImage from "@/components/AdImage";
import { rotateAll, type Ad } from "@/lib/ads";
import { cleanExcerpt } from "@/lib/articles/excerpt";
import { PersonIcon, ChevronLeftIcon, ChevronRightIcon, SearchIcon, CloseIcon } from "@/components/ui/Icons";
import StarRating from "@/components/StarRating";
import Link from "next/link";
@@ -632,7 +633,7 @@ export default function ArticleFeed() {
</Link>
</h3>
<p className="font-body text-[#777] text-sm leading-relaxed line-clamp-2 mb-2 md:mb-2.5 hidden sm:block">
{article?.excerpt}
{cleanExcerpt(article?.excerpt)}
</p>
<div className="mb-2">
<StarRating seed={article?.slug || article?.title || ""} publishedAt={article?.date} size="sm" />
@@ -807,10 +808,11 @@ export default function ArticleFeed() {
)}
</div>
{/* Sidebar — Blackmagic 300x600 fixed at top + every 300x250 banner stacked */}
{/* Sidebar — 300x250 banners stacked. The 300x600 is rendered up in
FeaturedBento alongside the 3-up rail, so it's skipped here. */}
<aside aria-label="Advertisements">
<div className="lg:sticky lg:top-24">
<SidebarAdStack />
<SidebarAdStack skipTop600 />
</div>
</aside>
</div>