Repository navigation
Make app cards one clear, accessible click target everywhere - #60
Merged
hipstersmoothie merged 6 commits intoNov 7, 2026
Merged
hipstersmoothie merged 6 commits into
hipstersmoothie merged 6 commits into
Conversation
The home page had three hand-rolled card variants. Replace them with one shared AppCard (large/medium/small). The link is now the stationary hit area and only the inner surface lifts on hover, which stops the cursor flickering at the card's bottom edge. Keyboard focus draws a 2px primary ring that follows the card's rounded corners. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Medium and small cards now show up to two labels (ecosystem category, then editorial tags) with a "+N" overflow chip, plus a star rating or "No reviews yet". Labels stay on one line: only the first may truncate and later ones are width-capped, so short tags never collapse. The card link is described by tagline, labels and rating for screen readers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The large card is now a real card: image on top, then the same details as other cards (identity, tagline, labels, rating, chevron). On desktop the hero sits beside three stacked spotlights and its image grows to fill any spare height; on tablet the spotlights and the "Fresh apps" grid sit in a row of three under the hero. Cards adapt to their own width with a container query: narrow cards tighten padding, stack the icon above the name, shorten the rating and show one label plus "+N". The home page now asks for three spotlights. The admin hero screen gets a fourth slot, and a partial admin list is topped up from recent apps instead of being discarded. AspectRatioImage no longer applies its image style to the wrapper as well, which doubled the hover zoom. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add AppListRow with two variants sharing one look: a compact numbered row for the home "Trending" list and a detailed row for Browse. Each row is one stationary link (no Explore button, no nested filter-badge links), hovers with a tint and shadow, and draws the rounded focus ring. Spacing between rows belongs to the links, so there are no dead zones. Browse rows show every label (wrapping), the card rating format and a chevron. Both lists are now real lists; the trending list is an ordered list so screen readers announce position. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace EcosystemListingCard and the three copied lexicon listing cards with AppCard, and delete the now-unused EcosystemListingCard and FeaturedListingFallbackCard. FeaturedListingGrid follows the home hero rhythm: the large card spans two columns and three rows on desktop (full width on tablet) with three small cards beside it, so blocks are now seven apps instead of nine. The ecosystem page's first section shows seven apps so it fills evenly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pagination lists kept the browser's default list indent and margins, which pushed the control 4-19px past the edge of 360-375px viewports and made the Browse page scroll sideways. Reset them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
renderghost
marked this pull request as ready for review
November 7, 2026 13:34
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.
Why
App cards were drawn five different ways across the site, and they had several usability and accessibility problems:
The goal is cards that are more usable, more accessible and more delightful, without breaking any layout.
What changed
One card family
AppCard(large/medium/small) replaces the three hand-rolled home cards,EcosystemListingCard,FeaturedListingFallbackCardand the three copies of the lexicon listing card.AppListRowhas two variants with the same look:RankedAppRowfor the home "Trending" list andDetailedAppRowfor Browse.Interaction and accessibility
:focus-visible).<ol>, so screen readers announce "1 of 6", and Browse results are a<ul>.Content
Layout
@container (max-width: 16rem)). They tighten padding, put the icon above the name, shorten the rating text and show 1 label plus "+N". This handles the tablet row of 3 at 640–1023px.FeaturedListingGrid(ecosystem and lexicon pages) uses the same pattern as the home hero, so a block is now 7 apps instead of 9. The ecosystem page's first section shows 7 apps so it fills evenly.Data / admin
Fixes along the way
AspectRatioImageapplied itsstyleto both the wrapper and the<img>. Nothing else passed a style, but it doubled the new hover zoom.Paginationkept the browser's default list indent, which made Browse scroll sideways on 360–375px phones. This was already broken before this PR; it's in its own commit.Behaviour changes worth a look
Testing
pnpm test,lint,format:check,typecheckandbuildall pass. A new unit test covers the label helper.Screenshots
https://mu.social/profile/did:plc:s2rczyxit2v5vzedxqs326ri/post/3mzpytubkfc2s
🤖 Generated with Claude Code