From cab03ceb9ada3bdc080194436472e7596f4940da Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 06:31:16 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20Game=20Detail=20Heade?= =?UTF-8?q?r=20Accessibility=20&=20UX=20Polish?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added "Clear Rating" button to personal rating slider to allow unsetting ratings - Improved favorite button accessibility with ARIA labels, pressed states, and focus indicators - Converted folder path to semantic button for keyboard accessibility - Associated platform selector label with select element using htmlFor - Marked decorative branding and emojis as aria-hidden - Added missing translations for clearRating in English and French - Cleaned up unused state in GameScreenshotsCarousel to fix build failure Co-authored-by: Gamepulse <8333979+Gamepulse@users.noreply.github.com> --- .Jules/palette.md | 3 ++ src/components/Library/GameDetailHeader.tsx | 51 +++++++++++++------ .../Library/GameScreenshotsCarousel.tsx | 2 - src/i18n/translations.ts | 2 + 4 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 .Jules/palette.md diff --git a/.Jules/palette.md b/.Jules/palette.md new file mode 100644 index 0000000..2503d87 --- /dev/null +++ b/.Jules/palette.md @@ -0,0 +1,3 @@ +## 2025-05-14 - [Game Detail Header Accessibility & UX Polish] +**Learning:** In a specialized desktop manager like Pascal, many interaction points (like folder paths or branding overlays) are implemented as static elements with click handlers. These must be converted to semantic interactive elements (like ` )} @@ -161,10 +163,14 @@ export function GameDetailHeader({ game, onGameUpdated, onPlatformChange, onFilt {/* Platform Selector */} {onPlatformChange && (
-
diff --git a/src/components/Library/GameScreenshotsCarousel.tsx b/src/components/Library/GameScreenshotsCarousel.tsx index 6a4e37c..bfae3b8 100644 --- a/src/components/Library/GameScreenshotsCarousel.tsx +++ b/src/components/Library/GameScreenshotsCarousel.tsx @@ -20,7 +20,6 @@ export function GameScreenshotsCarousel({ gameId }: GameScreenshotsCarouselProps const [igdbScreenshots, setIgdbScreenshots] = useState([]); const [currentIndex, setCurrentIndex] = useState(0); const [loading, setLoading] = useState(true); - const [hasIgdbId, setHasIgdbId] = useState(false); useEffect(() => { const loadScreenshots = async () => { @@ -29,7 +28,6 @@ export function GameScreenshotsCarousel({ gameId }: GameScreenshotsCarouselProps // Load game data to check IGDB ID try { const game = await invoke<{ igdb_id: number | null }>("get_game_by_id", { id: gameId }); - setHasIgdbId(!!game?.igdb_id); // Load IGDB screenshots if available if (game?.igdb_id) { diff --git a/src/i18n/translations.ts b/src/i18n/translations.ts index 1664377..20cd75c 100644 --- a/src/i18n/translations.ts +++ b/src/i18n/translations.ts @@ -342,6 +342,7 @@ export const translations = { manual: 'Manual', more: 'more', clearAll: 'Clear All', + clearRating: 'Clear Rating', tryAdjustingFilters: 'Try adjusting your filters', // Screenshot Background @@ -728,6 +729,7 @@ export const translations = { manual: 'Manuel', more: 'de plus', clearAll: 'Tout effacer', + clearRating: 'Effacer la note', tryAdjustingFilters: 'Essayez d\'ajuster vos filtres', // Screenshot Background