diff --git a/packages/app/src/components/content/FilmGrid.vue b/packages/app/src/components/content/FilmGrid.vue
index 8b4d5592..0e5f5374 100644
--- a/packages/app/src/components/content/FilmGrid.vue
+++ b/packages/app/src/components/content/FilmGrid.vue
@@ -49,6 +49,7 @@
v-for="film in filteredFilms"
:key="film.id"
class="group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105"
+ :aria-label="`${film.title} (${film.year})`"
@click="$emit('selectFilm', film)"
>
diff --git a/packages/app/src/components/content/ImageGrid.vue b/packages/app/src/components/content/ImageGrid.vue
index 3afdbf87..a851b752 100644
--- a/packages/app/src/components/content/ImageGrid.vue
+++ b/packages/app/src/components/content/ImageGrid.vue
@@ -24,6 +24,7 @@
:key="img.id"
class="group w-full break-inside-avoid text-left rounded-xl overflow-hidden transition-all duration-200 hover:brightness-110 relative"
:class="isDark ? 'bg-white/5' : 'bg-black/3'"
+ :aria-label="img.alt || img.title || 'Image'"
@click="$emit('selectImage', img)"
>
diff --git a/packages/app/src/components/content/PlaceGrid.vue b/packages/app/src/components/content/PlaceGrid.vue
index 75f31dfb..71a50505 100644
--- a/packages/app/src/components/content/PlaceGrid.vue
+++ b/packages/app/src/components/content/PlaceGrid.vue
@@ -43,6 +43,7 @@
v-for="place in filteredPlaces"
:key="place.id"
class="group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105"
+ :aria-label="place.name"
@click="$emit('selectPlace', place)"
>
diff --git a/packages/app/src/components/content/PodcastGrid.vue b/packages/app/src/components/content/PodcastGrid.vue
index 4ab11c05..683985b7 100644
--- a/packages/app/src/components/content/PodcastGrid.vue
+++ b/packages/app/src/components/content/PodcastGrid.vue
@@ -49,6 +49,7 @@
v-for="podcast in filteredPodcasts"
:key="podcast.id"
class="group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105"
+ :aria-label="podcast.title"
@click="$emit('selectPodcast', podcast)"
>
diff --git a/packages/app/src/components/content/SongGrid.vue b/packages/app/src/components/content/SongGrid.vue
index ddbf2ebc..6bc09262 100644
--- a/packages/app/src/components/content/SongGrid.vue
+++ b/packages/app/src/components/content/SongGrid.vue
@@ -49,6 +49,7 @@
v-for="song in filteredSongs"
:key="song.id"
class="group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105"
+ :aria-label="`${song.title} by ${song.artist}`"
@click="$emit('selectSong', song)"
>
diff --git a/packages/app/src/components/content/TVSeriesGrid.vue b/packages/app/src/components/content/TVSeriesGrid.vue
index 365bdefc..bede118d 100644
--- a/packages/app/src/components/content/TVSeriesGrid.vue
+++ b/packages/app/src/components/content/TVSeriesGrid.vue
@@ -49,6 +49,7 @@
v-for="s in filteredSeries"
:key="s.id"
class="group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105"
+ :aria-label="s.title"
@click="$emit('selectSeries', s)"
>