A listing grid that doesn't reflow at 320px produces horizontal scroll, clipped card content, and text that runs off the edge of the phone. At 768px, oversized cards wrap into awkward half-widths. Each broken breakpoint silently excludes a slice of the audience — mobile users on cheap Android devices, tablet users in landscape, users at zoom 150% on a 1280px laptop. Responsive grid behavior is table-stakes for any directory serving traffic beyond a narrow desktop-only demographic.
Low because content remains accessible but broken breakpoints compound with card content issues to degrade mobile and tablet experience.
Use a Tailwind or CSS Grid layout with explicit breakpoint column counts: 1 at mobile, 2-3 at tablet, 3-4 at desktop. Add min-w-0 on grid children to prevent overflow from long listing names. Edit components/ListingGrid.tsx:
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4">
{listings.map(l => <ListingCard key={l.id} listing={l} className="min-w-0" />)}
</div>
Test at 320, 768, and 1280px before shipping.
ID: directory-search-discovery.pagination-url.responsive-grid
Severity: low
What to look for: Enumerate all relevant files and Use browser dev tools to test the results grid at three viewport widths: 320px (mobile), 768px (tablet), and 1280px (desktop). Check whether the grid reflows correctly — columns adjust, no horizontal scroll, no text overflow, images scale appropriately.
Pass criteria: At 320px, results show in 1-2 columns without horizontal scroll. At 768px, 2-3 columns. At 1280px, 3-4 columns. All content is readable and no overflow.
Fail criteria: Text overflows, horizontal scroll appears, images don't scale, or layout breaks at any breakpoint.
Skip (N/A) when: Results grid is not implemented. Signal: no listing grid found.
Detail on fail: "At 320px mobile, cards overflow horizontally. Should reflow to single column." or "At 768px tablet, cards are too wide and wrap awkwardly."
Remediation: Use Tailwind or CSS Grid with responsive column counts:
// components/ListingGrid.tsx
export function ListingGrid({ listings }) {
return (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4">
{listings.map(listing => (
<ListingCard key={listing.id} listing={listing} />
))}
</div>
)
}
Test at 320, 768, and 1280px to ensure responsive behavior. Add explicit min-w-0 to prevent grid items from overflowing.