From a42048aff98d01881c1a7b6ff4681cc0074d2d57 Mon Sep 17 00:00:00 2001
From: myelinated-wackerow
<263208946+myelinated-wackerow@users.noreply.github.com>
Date: Tue, 12 May 2026 02:50:12 -0700
Subject: [PATCH 1/2] refactor(community): hub cards as row stack
Replace the EdgeScrollContainer carousel with a responsive auto-fill grid of row cards (circular avatar left, content right) so the section scales as more hubs are added. Tighten each hub description to a single short line and swap the repetitive per-row CTA copy for a cadence Tag derived from a new cadenceKey field on the hub data. Adds a grid-cols-fill-3-w-full utility for the 26rem minmax variant. Old page-events-hub-cta-* strings remain in the locale JSON files for the intl-pipeline to scrub later.
Co-Authored-By: Claude Opus 4.7
Co-Authored-By: wackerow <54227730+wackerow@users.noreply.github.com>
---
app/[locale]/community/events/page.tsx | 100 +++++++++++++------------
src/data/community-hubs.ts | 18 ++---
src/intl/en/page-community-events.json | 16 ++--
src/styles/utilities.css | 3 +
4 files changed, 72 insertions(+), 65 deletions(-)
diff --git a/app/[locale]/community/events/page.tsx b/app/[locale]/community/events/page.tsx
index 3670b8a516a..883c3b0867c 100644
--- a/app/[locale]/community/events/page.tsx
+++ b/app/[locale]/community/events/page.tsx
@@ -22,6 +22,7 @@ import {
import Link from "@/components/ui/Link"
import { Section } from "@/components/ui/section"
import TabNav, { StickyContainer } from "@/components/ui/TabNav"
+import { Tag } from "@/components/ui/tag"
import { cn } from "@/lib/utils/cn"
import { getAppPageContributorInfo } from "@/lib/utils/contributors"
@@ -186,75 +187,76 @@ const Page = async (props: { params: Promise }) => {
{t("page-events-section-hubs-subtitle")}