← back to Wallco Ai
fix(/designs): move card-hover OUT of card-link so the Sample <a> is no longer a nested anchor (60 nested anchors per page → 0); same HTML5-parser-split bug class as button-in-anchor, surfaces when user hovers a card with overlay visible
3291dd7c71b52476e277f994098600a92f1070c8 · 2026-05-14 09:35:43 -0700 · SteveStudio2
Files touched
Diff
commit 3291dd7c71b52476e277f994098600a92f1070c8
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Thu May 14 09:35:43 2026 -0700
fix(/designs): move card-hover OUT of card-link so the Sample <a> is no longer a nested anchor (60 nested anchors per page → 0); same HTML5-parser-split bug class as button-in-anchor, surfaces when user hovers a card with overlay visible
---
server.js | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/server.js b/server.js
index fe13b0e..4da69e6 100644
--- a/server.js
+++ b/server.js
@@ -3254,20 +3254,17 @@ app.get('/designs', (req, res) => {
// SEPARATE grid items, producing the alternating-blank-tile bug.
// Keep the anchor as an inner link wrapping just the visual; controls
// (fav, NEW, meta) sit alongside as siblings of the link.
+ // card-hover is a SIBLING of card-link (not nested inside) so the inner
+ // Sample <a> doesn't trigger the same Adoption Agency split that took
+ // out the button-in-anchor pattern (2026-05-14). card-hover positions
+ // absolute over the .design-card; clicks on its own anchors navigate
+ // directly without bubbling to card-link.
return `
<div class="design-card${roomKey ? ' has-room' : ''}${isNew ? ' is-new' : ''}" data-design-id="${d.id}" data-dig="${digNum}">
<button type="button" class="fav-btn" data-fav-id="${d.id}" aria-pressed="false" aria-label="Save ${d.title} to favorites" title="Favorite"><span class="fav-icon"></span></button>
${newBadge}
<a href="/design/${d.id}" class="card-link" aria-label="${cardAriaLabel(d)}">
- <div class="card-img" style="background-image:url('${d.image_url}')" role="img" aria-label="${d.title} pattern thumbnail">${roomOverlay}
- <div class="card-hover" aria-hidden="true">
- <span class="card-hover-dig" title="DW Original Number">${digNum}</span>
- <div class="card-hover-actions">
- <span class="chov-btn chov-view">View</span>
- <a class="chov-btn chov-sample" href="/samples?design=${d.id}" onclick="event.stopPropagation()">Sample</a>
- </div>
- </div>
- </div>
+ <div class="card-img" style="background-image:url('${d.image_url}')" role="img" aria-label="${d.title} pattern thumbnail">${roomOverlay}</div>
<div class="card-meta">
<span class="card-title">${d.title}</span>
<span class="card-sku" title="DW catalog SKU">${sku}</span>
@@ -3278,6 +3275,13 @@ app.get('/designs', (req, res) => {
</span>
</div>
</a>
+ <div class="card-hover" aria-hidden="true">
+ <span class="card-hover-dig" title="DW Original Number">${digNum}</span>
+ <div class="card-hover-actions">
+ <a class="chov-btn chov-view" href="/design/${d.id}">View</a>
+ <a class="chov-btn chov-sample" href="/samples?design=${d.id}">Sample</a>
+ </div>
+ </div>
</div>`;
}
// Admin review-mode card: sliders, K/R, chips, why-chip
← 4622641 chat: surface psql stderr + redact replicate token + throw o
·
back to Wallco Ai
·
feat(/designs): keyboard shortcut '/' focuses search (GH/X/S 7bbdf26 →