alert("show more of 'Recently added'")}/>
+ onPressShowMore={() => navigate("/recently-added")}/>
{librariesState.libraries.map((library) => (
alert(`show more of library '${library.name}'`)}
+ onPressShowMore={() => navigate("/library/" + library.id)}
/>
))}
diff --git a/gameyfin/src/main/frontend/views/LibraryView.tsx b/gameyfin/src/main/frontend/views/LibraryView.tsx
new file mode 100644
index 0000000..4069167
--- /dev/null
+++ b/gameyfin/src/main/frontend/views/LibraryView.tsx
@@ -0,0 +1,29 @@
+import {useSnapshot} from "valtio/react";
+import {initializeLibraryState, libraryState} from "Frontend/state/LibraryState";
+import {gameState} from "Frontend/state/GameState";
+import React, {useEffect} from "react";
+import {useNavigate, useParams} from "react-router";
+import CoverGrid from "Frontend/components/general/covers/CoverGrid";
+import GameDto from "Frontend/generated/de/grimsi/gameyfin/games/dto/GameDto";
+
+export default function LibraryView() {
+ const {libraryId} = useParams();
+ const navigate = useNavigate();
+ const libraries = useSnapshot(libraryState);
+ const games = (libraryId ? useSnapshot(gameState).gamesByLibraryId[parseInt(libraryId!!)] || [] : []) as GameDto[];
+
+ useEffect(() => {
+ initializeLibraryState().then((state) => {
+ if (!libraryId || !state.state[parseInt(libraryId)]) {
+ navigate("/", {replace: true});
+ }
+ });
+ }, [libraryId]);
+
+ return (
+
+
{libraries.state[parseInt(libraryId!!)]?.name}
+
+
+ );
+}
\ No newline at end of file
diff --git a/gameyfin/src/main/frontend/views/RecentlyAddedView.tsx b/gameyfin/src/main/frontend/views/RecentlyAddedView.tsx
new file mode 100644
index 0000000..45603bf
--- /dev/null
+++ b/gameyfin/src/main/frontend/views/RecentlyAddedView.tsx
@@ -0,0 +1,16 @@
+import {useSnapshot} from "valtio/react";
+import {gameState} from "Frontend/state/GameState";
+import GameDto from "Frontend/generated/de/grimsi/gameyfin/games/dto/GameDto";
+import React from "react";
+import CoverGrid from "Frontend/components/general/covers/CoverGrid";
+
+export default function RecentlyAddedView() {
+ const games = useSnapshot(gameState).recentlyAdded as GameDto[];
+
+ return (
+
+ );
+}
\ No newline at end of file