From ce9f8aab2a3d36dc452b63cee7a522af993b46a0 Mon Sep 17 00:00:00 2001 From: grimsi <9295182+grimsi@users.noreply.github.com> Date: Tue, 13 May 2025 01:54:27 +0200 Subject: [PATCH] Add image carousel to GameView --- gameyfin/package-lock.json | 20 ++++++ gameyfin/package.json | 1 + .../general/covers/ImageCarousel.tsx | 65 +++++++++++++++++++ gameyfin/src/main/frontend/main.css | 4 +- gameyfin/src/main/frontend/views/GameView.tsx | 24 +++++-- 5 files changed, 106 insertions(+), 8 deletions(-) create mode 100644 gameyfin/src/main/frontend/components/general/covers/ImageCarousel.tsx diff --git a/gameyfin/package-lock.json b/gameyfin/package-lock.json index f8e9dda..d2140cc 100644 --- a/gameyfin/package-lock.json +++ b/gameyfin/package-lock.json @@ -49,6 +49,7 @@ "react-confetti-boom": "^1.0.0", "react-dom": "18.3.1", "react-router": "7.5.2", + "swiper": "^11.2.6", "yup": "^1.6.1" }, "devDependencies": { @@ -16296,6 +16297,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swiper": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.6.tgz", + "integrity": "sha512-8aXpYKtjy3DjcbzZfz+/OX/GhcU5h+looA6PbAzHMZT6ESSycSp9nAjPCenczgJyslV+rUGse64LMGpWE3PX9Q==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "license": "MIT", + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", diff --git a/gameyfin/package.json b/gameyfin/package.json index fdea4bc..da38758 100644 --- a/gameyfin/package.json +++ b/gameyfin/package.json @@ -44,6 +44,7 @@ "react-confetti-boom": "^1.0.0", "react-dom": "18.3.1", "react-router": "7.5.2", + "swiper": "^11.2.6", "yup": "^1.6.1" }, "devDependencies": { diff --git a/gameyfin/src/main/frontend/components/general/covers/ImageCarousel.tsx b/gameyfin/src/main/frontend/components/general/covers/ImageCarousel.tsx new file mode 100644 index 0000000..13e436c --- /dev/null +++ b/gameyfin/src/main/frontend/components/general/covers/ImageCarousel.tsx @@ -0,0 +1,65 @@ +import {Autoplay, Virtual} from 'swiper/modules'; +import {Swiper, SwiperSlide} from "swiper/react"; +import {Image} from "@heroui/react"; + +import "swiper/css"; +import "swiper/css/navigation"; +import "swiper/css/pagination"; +import "swiper/css/autoplay"; + +interface ImageCarouselProps { + imageIds: number[]; +} + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +} + +export default function ImageCarousel({imageIds}: ImageCarouselProps) { + + return ( +
Summary
-{game.summary}
+Summary
+{game.summary}
+Screenshots
+ {game.imageIds !== undefined && game.imageIds.length > 0 && +