From c9e251c78cb606d22ae74f3ec24cae7090756747 Mon Sep 17 00:00:00 2001 From: Min Idzelis Date: Wed, 1 Apr 2026 11:49:09 -0400 Subject: [PATCH] feat(web): highlight active person thumbnail in detail panel and edit faces panel (#27401) - Dim non-hovered person thumbnails to 40% opacity when any face is active - Add ring highlight on the active person's thumbnail - Add focus-visible outline styling for keyboard navigation - Apply same treatment to both detail panel people section and edit faces side panel Change-Id: I4ac10fe4568b95f3e0e8d9104133180f6a6a6964 Co-authored-by: Alex --- web/src/lib/components/asset-viewer/detail-panel.svelte | 5 ++++- .../lib/components/assets/thumbnail/image-thumbnail.svelte | 4 ++++ web/src/lib/components/faces-page/person-side-panel.svelte | 6 ++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/web/src/lib/components/asset-viewer/detail-panel.svelte b/web/src/lib/components/asset-viewer/detail-panel.svelte index ba3ae559dc..f79a0ecbdc 100644 --- a/web/src/lib/components/asset-viewer/detail-panel.svelte +++ b/web/src/lib/components/asset-viewer/detail-panel.svelte @@ -227,8 +227,9 @@

{person.name}

diff --git a/web/src/lib/components/assets/thumbnail/image-thumbnail.svelte b/web/src/lib/components/assets/thumbnail/image-thumbnail.svelte index a54ad911fd..3ee633a603 100644 --- a/web/src/lib/components/assets/thumbnail/image-thumbnail.svelte +++ b/web/src/lib/components/assets/thumbnail/image-thumbnail.svelte @@ -16,6 +16,7 @@ circle?: boolean; hidden?: boolean; border?: boolean; + highlighted?: boolean; hiddenIconClass?: string; class?: ClassValue; brokenAssetClass?: ClassValue; @@ -34,6 +35,7 @@ circle = false, hidden = false, border = false, + highlighted = false, hiddenIconClass = 'text-white', onComplete = undefined, class: imageClass = '', @@ -60,6 +62,8 @@ shadow && 'shadow-lg', (circle || !heightStyle) && 'aspect-square', border && 'border-3 border-immich-dark-primary/80 hover:border-immich-primary', + 'transition-shadow duration-150', + highlighted && 'ring-4 ring-immich-primary dark:ring-immich-dark-primary', ]); let style = $derived( diff --git a/web/src/lib/components/faces-page/person-side-panel.svelte b/web/src/lib/components/faces-page/person-side-panel.svelte index d1556af0f5..ddeddb1ed2 100644 --- a/web/src/lib/components/faces-page/person-side-panel.svelte +++ b/web/src/lib/components/faces-page/person-side-panel.svelte @@ -225,6 +225,7 @@ {:else} {#each peopleWithFaces as face, index (face.id)} {@const personName = face.person ? face.person?.name : $t('face_unassigned')} + {@const isHighlighted = $boundingBoxesArray.some((b) => b.id === face.id)}