site: rename "finds" superpost collection to "bundles"

Disambiguates the one-letter `find` (item) vs `finds` (roundup) split that
kept causing confusion. Audience-facing now: `/bundles/<slug>/`, "Bundle"
labels in home/footer/search.

Internals: `getCollection('finds')` → `('bundles')`, `Entry.type 'finds'`
→ `'bundle'`, `OgFallback 'finds'` → `'bundles'`, `findListMosaic` →
`bundleMosaic`, `FindsPost` → `Bundle`, `findsReferencing` →
`bundlesReferencing`. Build script + generated mosaic dir follow
(`scripts/build-bundle-mosaics.mjs`, `src/generated/bundle-mosaics/`).

Skills `build-finds` → `build-bundle`, `cluster-finds` →
`cluster-bundles`. The `find` collection (individual items) is unchanged.

No URL redirects: low external-link surface area.
This commit is contained in:
2026-05-06 20:43:22 -04:00
parent c2e1df222d
commit 049c6c5377
36 changed files with 503 additions and 255 deletions
+115 -1
View File
@@ -137,7 +137,7 @@ const year = new Date().getFullYear();
<ul>
<li><a href="/grid/">Reviews</a></li>
<li><a href="/find/">Finds</a></li>
<li><a href="/finds/">Lists</a></li>
<li><a href="/bundles/">Bundles</a></li>
<li><a href="/blog/">Posts</a></li>
</ul>
</section>
@@ -417,6 +417,120 @@ const year = new Date().getFullYear();
font-style: italic;
}
hr { border: 0; border-top: 1px solid var(--rule); margin: 2rem 0; }
/* External CTA — primary "go to source" link on /reviews/ and /find/.
Sits in the body region below the write-up, not in the colophon. */
.external {
margin: 1.5rem 0 0;
font-family: ui-sans-serif, system-ui, -apple-system, sans-serif;
}
.external a {
display: inline-block;
padding: 0.5rem 1rem;
background: var(--accent);
color: var(--bg);
border-radius: 6px;
font-weight: 600;
font-size: 0.95rem;
}
.external a:hover { text-decoration: none; opacity: 0.9; }
.external .aff-badge {
display: inline-block;
margin-left: 0.6rem;
padding: 0.15rem 0.5rem;
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
color: var(--muted);
background: var(--rule);
border-radius: 999px;
vertical-align: middle;
}
.aff-disclosure {
margin: 0.6rem 0 0;
font-size: 0.78rem;
color: var(--muted);
font-style: italic;
}
/* Colophon — understated meta block at the foot of a post.
Used on /reviews/, /find/, /bundles/ pages. */
.colophon {
margin: 3rem 0 0;
padding-top: 1.5rem;
border-top: 1px solid var(--rule);
font-family: ui-sans-serif, system-ui, -apple-system, 'Helvetica Neue', sans-serif;
font-size: 0.8rem;
line-height: 1.5;
color: var(--muted);
}
.colophon dl {
margin: 0;
display: grid;
grid-template-columns: max-content 1fr;
gap: 0.55rem 1.25rem;
align-items: baseline;
}
.colophon dt {
margin: 0;
font-size: 0.72rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
line-height: 1.5;
color: var(--muted);
}
.colophon dd {
margin: 0;
color: var(--muted);
line-height: 1.5;
}
.colophon a {
color: var(--muted);
border-bottom: 1px solid var(--rule);
}
.colophon a:hover {
color: var(--accent);
border-bottom-color: currentColor;
text-decoration: none;
}
.colophon .colophon-tags {
display: flex;
flex-wrap: wrap;
gap: 0.35rem 0.75rem;
}
.colophon .colophon-tags a { border-bottom: 0; }
.colophon time { color: var(--muted); }
.colophon .aff-badge {
display: inline-block;
margin-left: 0.45rem;
padding: 0.1rem 0.4rem;
font-size: 0.62rem;
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
color: var(--muted);
background: var(--rule);
border-radius: 999px;
vertical-align: middle;
}
.colophon-aff {
margin: 1rem 0 0;
padding-top: 0.85rem;
border-top: 1px dashed var(--rule);
font-size: 0.72rem;
font-style: italic;
color: var(--muted);
}
@media (max-width: 520px) {
.colophon dl {
grid-template-columns: 1fr;
gap: 0.15rem 0;
}
.colophon dt { margin-top: 0.6rem; }
.colophon dt:first-child { margin-top: 0; }
}
</style>
{import.meta.env.DEV && <EditConfirm />}
</body>