From 93177308856c1d655a95e1d0c141a8ce65a3459c Mon Sep 17 00:00:00 2001 From: dtoro Date: Wed, 8 Apr 2026 22:22:07 +0200 Subject: [PATCH] style: improve thumbnail indicator + selection contrast MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bump primary from #3b6ed8 to #3b82f6 (Tailwind blue-500). Higher saturation reads better against both the dark surface and varied photo content. Contrast against bg-bg goes from ~5.7:1 to ~6.6:1. - Selection ring: add ring-offset-2 ring-offset-bg so the bright blue has a dark gap separating it from the photo edge — pops on light and dark photos alike. Hover ring gets the same treatment. - Selection check badge: white ring + shadow + thicker stroke so the badge is legible against any photo (was disappearing on bright scenes). - Rating stars: wrap in a translucent dark pill with backdrop-blur so yellow stars don't vanish on yellow / sandy photos. - Heap / duplicate / discarded badges: matching white ring + thicker icon stroke so they all read consistently and don't blend in. - Timeline date headers: text-text instead of text-text-muted so the group labels actually pop above the grid. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../components/timeline/PhotoThumbnail.tsx | 40 +++++++++++-------- frontend/src/components/timeline/Timeline.tsx | 2 +- frontend/src/index.css | 2 +- frontend/tailwind.config.js | 2 +- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/frontend/src/components/timeline/PhotoThumbnail.tsx b/frontend/src/components/timeline/PhotoThumbnail.tsx index 2f0f00c..aaa85d5 100644 --- a/frontend/src/components/timeline/PhotoThumbnail.tsx +++ b/frontend/src/components/timeline/PhotoThumbnail.tsx @@ -118,8 +118,11 @@ export function PhotoThumbnail({
)} - {/* Selection Indicator */} + {/* Selection Indicator — white ring around the primary fill so the + * badge stays visible against any photo (light or dark). */} {isSelected && ( -
- +
+
)} - - {/* Rating Stars */} + + {/* Rating Stars — sit in a translucent dark pill so yellow stars + * don't disappear against a yellow / sandy photo. */} {photo.rating > 0 && ( -
+
{Array.from({ length: photo.rating }).map((_, i) => ( ))}
)} - - {/* Flag Indicators */} + + {/* Flag Indicators — every badge gets a white ring so it survives + * any photo content. */}
{isInActiveHeap && (
- +
)} {photo.is_duplicate && (
- +
)} {photo.is_discarded && (
- +
)}
diff --git a/frontend/src/components/timeline/Timeline.tsx b/frontend/src/components/timeline/Timeline.tsx index 2dd6d36..5e7c5b1 100644 --- a/frontend/src/components/timeline/Timeline.tsx +++ b/frontend/src/components/timeline/Timeline.tsx @@ -482,7 +482,7 @@ export function Timeline() { }} className="flex items-end pb-1" > -

+

{item.label}

diff --git a/frontend/src/index.css b/frontend/src/index.css index 4f65075..5ec91c1 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -12,7 +12,7 @@ --color-text: #e8e6e0; --color-text-muted: #878580; --color-text-faint: #4a4845; - --color-primary: #3b6ed8; + --color-primary: #3b82f6; --color-pick: #4f9e5c; --color-reject: #c25a5a; --color-star: #d4a340; diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 6b88762..19571cc 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -17,7 +17,7 @@ export default { text: '#e8e6e0', 'text-muted': '#878580', 'text-faint': '#4a4845', - primary: '#3b6ed8', // deep royal blue + primary: '#3b82f6', // saturated blue (Tailwind blue-500) — high contrast on dark bg AND on photo content pick: '#4f9e5c', // green for picked reject: '#c25a5a', // red for rejected star: '#d4a340', // amber for stars