Insights: tile layout + dual content-type / focus-area filtering - #27
Merged
Conversation
Replace the single-column divided lists in the Recent Talks & Podcasts, Recent Publications, and From the Blog sections with a responsive card grid (1 col mobile / 2 sm / 3 lg). Adds a shared RecentTile component (eyebrow + title + optional 3-line clamped description) so the three sections stay visually consistent. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the three boxed category cards (which linked out to /publications, /talks, /blog) with a text-only tab bar (All / Publications / Talks / Blog, with counts). Selecting a tab filters the page to show only that category's section; 'All' shows every section. Moves the filterable sections into a new client component (InsightsExplorer) for the interactivity. Each section keeps its 'All X →' link so the full listing pages stay reachable. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a second filter dimension on the Insights page: focus-area chips (All areas / Digital Human Rights / Economies & Governance / AI & Robotics / Neurotech) on the left of the toolbar, content-type tabs on the right. The two compose with AND logic. Counts on each control reflect the other facet's current selection; chips/tabs with zero matches are disabled, sections that become empty are hidden, and a fully-empty combo shows an empty state with a 'clear area filter' action. Focus-area tagging comes from each item's existing 'areas' field (publications + talks); blog posts have no area tags so they only appear under 'All areas'. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…sions Content-type filter now uses the same pill styling as the focus-area filter, via a shared Pill component. A vertical divider separates the two groups so it reads as two distinct filter dimensions. 'All' content-type pill relabeled 'All types' to disambiguate from 'All areas'. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Blog posts can now carry an 'areas' frontmatter field (focus-area slugs) that the Insights focus-area filter reads, the same way publications and talks already work: - build-content.mjs: pass through 'areas' when building blog.json - BlogPost type: add 'areas: string[]' - insights page: use post.areas for blog tiles Tag three posts as a demonstration (neurotech / ai-robotics / digital-human-rights) — these are sample tags the team can adjust. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Match the site's primary buttons (Collaborate / About) which are black, rather than blue. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Someone is attempting to deploy a commit to the gainforest Team on Vercel. A member of the Team first needs to authorize it. |
Collaborator
Author
lksbrssr
pushed a commit
that referenced
this pull request
Jun 30, 2026
The merged Insights explorer (#27) renders content as tiles, but clicking through to /publications, /talks, /blog, /tutorials reverted to a plain list. Extract the tile into a shared <ContentTile>/<ContentTileGrid> and reuse it across the Insights explorer and every listing page so the tile view persists end to end.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


What this does
Reworks the Insights page from stacked link-lists into a filterable, tile-based explorer with two independent filter dimensions.
1. Recent items as tiles
The "Recent Talks & Podcasts", "Recent Publications", and "From the Blog" sections now render as a responsive card grid (1 col mobile / 2 / 3 on desktop) instead of single-column divided lists. A shared
RecentTile(eyebrow + title + optional 3-line clamped description) keeps the three sections visually consistent.2. Category cards → content-type filter
The three boxed category cards (which linked out to
/publications,/talks,/blog) are replaced by a content-type filter:All types · Blog · Publications · Talks. Selecting one narrows the page to that category. Each section keeps itsAll publications →/All talks →/All posts →link, so the full listing pages stay reachable.3. New focus-area filter
A second filter dimension lets you filter by focus area:
All areas · Digital Human Rights · Economies & Governance · AI & Robotics · Neurotech. The two filters compose with AND logic and behave sensibly:Both filter rows use the same pill styling, separated by a vertical divider so they read as two distinct dimensions. The selected pill uses the site's black button treatment.
4. Blog posts can now be tagged by focus area
Focus-area tagging is driven by each item's
areasfield. Publications and talks already had it; blog posts didn't —buildBlog()dropped the field and theBlogPosttype lacked it. This PR wires it through:scripts/build-content.mjs— passareasintoblog.jsonBlogPosttype — addareas: string[]post.areasfor blog tilesTo tag a post, add focus-area slugs to its front matter:
Valid slugs:
digital-human-rights,economies-governance,ai-robotics,neurotech.Three existing posts are tagged here as a demonstration (Data Sovereignty → Digital Human Rights, BitRobot → AI & Robotics, Transformative Power of Neurotech → Neurotech).
Heads-up: focus-area tag coverage is currently sparse
The filter is only as good as the tags. Against the four focus areas today: publications are tagged
neurotechonly (others 0), talks are partially tagged, and blog posts are untagged except the three samples above. The filter degrades gracefully (empty options disable, empty sections hide), and will fill in automatically as more content is tagged. Backfillingareason existing publications/talks/posts is a good follow-up.Files
src/app/insights/page.tsx— prepare data, render hero + explorersrc/components/InsightsExplorer.tsx(new) — client component: filter toolbar + filtered tile sectionssrc/lib/content.ts— addareastoBlogPostscripts/build-content.mjs— emitareasfor blogcontent/blog/{data-sovereignty-privacy,bitrobot-embodied-ai,transformative-power-neurotech}/index.md— sample tagsNotes
/publications,/talks,/blogare untouched and still linked from each section.content/**/*.mdrequires a content rebuild (npm run dev's prestep /node scripts/build-content.mjs) for new tags to take effect.🤖 Generated with Claude Code