diff --git a/frontend/src/components/common/SampleNameGrid.vue b/frontend/src/components/common/SampleNameGrid.vue
new file mode 100644
index 0000000..4488e55
--- /dev/null
+++ b/frontend/src/components/common/SampleNameGrid.vue
@@ -0,0 +1,32 @@
+
+
+
+
+ {{ n }}
+
+
+
+
+
+
+
diff --git a/frontend/src/components/settings/PostMaintenanceCard.vue b/frontend/src/components/settings/PostMaintenanceCard.vue
index 8c41f11..7e2c348 100644
--- a/frontend/src/components/settings/PostMaintenanceCard.vue
+++ b/frontend/src/components/settings/PostMaintenanceCard.vue
@@ -36,11 +36,10 @@
Nothing to clean up.
-
-
- {{ n }}
-
-
+
.fc-post-maint { border-radius: 8px; }
-.fc-name-grid {
- display: flex; flex-wrap: wrap; gap: 4px 8px;
- max-height: 200px; overflow-y: auto;
- padding: 8px; border-radius: 4px;
- background: rgb(var(--v-theme-surface-light));
-}
-.fc-name {
- font-family: 'JetBrains Mono', monospace;
- font-size: 12px;
- color: rgb(var(--v-theme-on-surface-variant));
-}
diff --git a/frontend/src/components/settings/TagMaintenanceCard.vue b/frontend/src/components/settings/TagMaintenanceCard.vue
index 46e2f8f..dca22a6 100644
--- a/frontend/src/components/settings/TagMaintenanceCard.vue
+++ b/frontend/src/components/settings/TagMaintenanceCard.vue
@@ -31,11 +31,10 @@
Showing first 50 names.
-
-
- {{ n }}
-
-
+
-
-
- {{ n }}
-
-
+
{{ resetPreview.applications }} image
application(s).
-
-
- {{ n }}
-
-
+
{{ normPreview.collisions }} collision(s) merging
{{ normPreview.tags_to_merge }} tag(s) away.
-
+
{{ s.from.join(' + ') }} → {{ s.to }}
-
+
.fc-tag-maint { border-radius: 8px; }
-.fc-name-grid {
- display: flex; flex-wrap: wrap; gap: 4px 8px;
- max-height: 200px; overflow-y: auto;
- padding: 8px; border-radius: 4px;
- background: rgb(var(--v-theme-surface-light));
-}
-.fc-name {
- font-family: 'JetBrains Mono', monospace;
- font-size: 12px;
- color: rgb(var(--v-theme-on-surface-variant));
-}