From 9deebfa1339a864336e204adf9f5993fc2847f9c Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Tue, 9 Jun 2026 23:22:01 -0400 Subject: [PATCH] refactor(ui): CardHeading primitive for icon+title card/dialog headings (DRY pattern sweep) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The icon+title v-card-title heading (d-flex align-center + gap + + ) was hand-rolled identically in 13 cards/dialogs (15 heading instances). Consolidate to (components/common) with an iconColor prop (error headings) and a default slot for trailing content (spacer+actions, inline status chip). Adopted everywhere the pattern appears — all-or-nothing per the hardened DRY process. Over-DRY guard: plain text-only one-liners are NOT this pattern and stay; DownloadDetailModal leads with a status CHIP (not an icon), a different concept, left alone. §8b: the only remaining d-flex align-center v-card-title is that intentional variant. Catalog updated. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../components/artist/ArtistDangerZone.vue | 6 ++--- .../components/cleanup/MinDimensionCard.vue | 6 ++--- .../cleanup/SingleColorAuditCard.vue | 6 ++--- .../cleanup/TransparencyAuditCard.vue | 6 ++--- .../src/components/common/CardHeading.vue | 25 +++++++++++++++++++ .../components/common/ErrorDetailModal.vue | 10 +++++--- .../src/components/settings/BackupCard.vue | 6 ++--- .../settings/BrowserExtensionCard.vue | 7 +++--- .../components/settings/ImportTaskList.vue | 6 ++--- .../settings/PostMaintenanceCard.vue | 6 ++--- .../settings/SystemActivitySummary.vue | 7 +++--- .../components/settings/SystemActivityTab.vue | 19 ++++++-------- .../settings/TagMaintenanceCard.vue | 6 ++--- .../subscriptions/PreviewDialog.vue | 9 ++++--- 14 files changed, 66 insertions(+), 59 deletions(-) create mode 100644 frontend/src/components/common/CardHeading.vue diff --git a/frontend/src/components/artist/ArtistDangerZone.vue b/frontend/src/components/artist/ArtistDangerZone.vue index 0de1ced..275c4a4 100644 --- a/frontend/src/components/artist/ArtistDangerZone.vue +++ b/frontend/src/components/artist/ArtistDangerZone.vue @@ -1,9 +1,6 @@