From d47bb47bf3531f8b6645fd32efe55857a3336110 Mon Sep 17 00:00:00 2001 From: Dinesh <13635627+HumbleBee14@users.noreply.github.com> Date: Sun, 12 Jul 2026 17:58:24 -0700 Subject: [PATCH] Unify all chips into a 3-class system; drop tags from blog rows Replace 11 ad-hoc chip/pill/tag treatments with one primitive: - .chip (normal pill) and .chip--sm (thin mono-uppercase) - modifiers: .chip--interactive (accent hover + .is-active), state colors .chip--live / .chip--beta / .chip--soon, .chip__count badge - .hashtag for borderless inline #tags Migrated: homepage recent cards, topic tabs, and tool cards; blog filter; blog/topic/tag rows; tag cloud; blog byline; playground grid status + tool detail; search dialog chips. Removed the two colliding .tool-tag definitions and dead per-status rules. Interactive chips now share one accent hover/active behaviour everywhere. Blog list rows show only the topic pill; #tags removed (kept on the article page and /tags where they aid navigation, not list scanning). Calculator segmented controls keep .filter-chip (a tool control, not a content tag) and stay out of the chip vocabulary. --- src/components/BlogFilter.astro | 10 ++- src/components/SearchInline.tsx | 9 +- src/components/SearchModal.tsx | 14 +++- src/pages/blog/[slug].astro | 9 +- src/pages/blog/index.astro | 5 +- src/pages/index.astro | 53 ++++-------- src/pages/playground/[tool].astro | 24 +----- src/pages/playground/index.astro | 44 +--------- src/pages/tags/[tag].astro | 2 +- src/pages/tags/index.astro | 27 +----- src/pages/topics/[id].astro | 3 - src/styles/global.css | 131 +++++++++++++++--------------- 12 files changed, 119 insertions(+), 212 deletions(-) diff --git a/src/components/BlogFilter.astro b/src/components/BlogFilter.astro index c68b1a8..5d4a3e7 100644 --- a/src/components/BlogFilter.astro +++ b/src/components/BlogFilter.astro @@ -14,14 +14,18 @@ const { activeTopic, allCount, topicCounts } = Astro.props; ---
{t.desc}
@@ -281,28 +281,6 @@ const catalogTools = allTools.sort((a, b) => { color: var(--accent); line-height: 1; } - .tool-card-tag { - font-family: var(--font-mono); - font-size: 10px; - text-transform: uppercase; - letter-spacing: 0.1em; - color: var(--ink-3); - padding: 3px 8px; - border: 1px solid var(--line-2); - border-radius: var(--radius-pill); - } - .tool-card-live .tool-card-tag { - color: var(--paper); - background: var(--accent); - border-color: var(--accent); - } - .tool-card-beta .tool-card-tag { - color: var(--accent); - border-color: var(--accent); - } - .tool-card-coming-soon .tool-card-tag { - color: var(--ink-4); - } .tool-card-name { font-family: var(--font-display); font-size: 26px; @@ -369,16 +347,12 @@ const catalogTools = allTools.sort((a, b) => { .tool-card-link { font-size: 10px; } - .tool-card-tag { + .tool-card .chip { font-size: 9px; padding: 2px 6px; } } - .tool-card-external .tool-card-tag { - color: var(--ink-3); - border-color: var(--line-2); - } .tool-card-external:hover .tool-card-icon { transform: translate(2px, -2px); transition: transform 0.18s; @@ -488,18 +462,6 @@ const catalogTools = allTools.sort((a, b) => { position: relative; z-index: 1; } - .tool-card-status { - font-family: var(--font-mono); - font-size: 10px; - text-transform: uppercase; - letter-spacing: 0.1em; - padding: 3px 9px; - border: 1px solid var(--line-2); - border-radius: var(--radius-pill); - color: var(--ink-3); - background: color-mix(in srgb, var(--paper-2) 90%, transparent); - } - @media (max-width: 720px) { .tools-catalog-scroll { max-height: none; diff --git a/src/pages/tags/[tag].astro b/src/pages/tags/[tag].astro index 5e023c6..2e5ce55 100644 --- a/src/pages/tags/[tag].astro +++ b/src/pages/tags/[tag].astro @@ -89,7 +89,7 @@ const breadcrumbJsonLd = {{a.data.summary}
{a.data.summary}