diff --git a/AGENTS.md b/AGENTS.md index 9fcf477..4f95ae8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1445,6 +1445,14 @@ session with **no other memory of this project**. So: also add `min-w-0` to truncating flex/grid children. `/stats` also gained a **Top Shops** leaderboard (`topShops` in `useGrowthStats`; `PERSIST_BUSTER` → v6) alongside Top Mappers (spots). +- **Stretched-link card gotcha (2026-10-12):** `SpotCard` renders its whole-card + navigation as an absolutely-positioned `` + behind the content. It **must** be `z-10` (not `z-0`), and the card must not carry + `backdrop-blur` — a `z-0` link under the content, with `backdrop-blur` making the + card its own paint layer, meant **no click ever reached the link and the card + looked dead**. Hover moved to the wrapper (`group` on the wrapper + `group-hover:` + on the card/image), and the card's action row is `z-20` so its buttons stay above + the link. Keep this shape when editing card components. - **Dropdown menu scroll gotcha (2026-10-08):** the shared `DropdownMenuContent` (`components/ui/dropdown-menu.tsx`) shipped `overflow-hidden` with **no max-height**, so any menu taller than the viewport was clipped and could not diff --git a/src/components/SpotCard.tsx b/src/components/SpotCard.tsx index 9404332..c40c2d3 100644 --- a/src/components/SpotCard.tsx +++ b/src/components/SpotCard.tsx @@ -61,16 +61,16 @@ export function SpotCard({ spot, status, community }: SpotCardProps) { const isGone = status?.status === 'gone'; return ( -
+
{/* Stretched link — the whole card navigates, without nesting interactive elements (buttons, Zap, dropdowns) or dialogs inside an . */} - + {/* Image */}
@@ -214,7 +214,7 @@ export function SpotCard({ spot, status, community }: SpotCardProps) { )}
-
e.preventDefault()}> +
e.preventDefault()}> {user && !isShop && (