diff --git a/front/packages/models/src/resources/movie.ts b/front/packages/models/src/resources/movie.ts
index 024adca1..f6247d4f 100644
--- a/front/packages/models/src/resources/movie.ts
+++ b/front/packages/models/src/resources/movie.ts
@@ -24,6 +24,7 @@ import { withImages, ResourceP, imageFn } from "../traits";
import { Genre } from "./genre";
import { StudioP } from "./studio";
import { Status } from "./show";
+import { CollectionP } from "./collection";
export const MovieP = withImages(
ResourceP.extend({
@@ -75,7 +76,10 @@ export const MovieP = withImages(
* The studio that made this movie.
*/
studio: StudioP.optional().nullable(),
-
+ /**
+ * The collection this movie is part of.
+ */
+ collections: z.array(CollectionP).optional(),
/**
* The links to see a movie or an episode.
*/
diff --git a/front/packages/models/src/resources/show.ts b/front/packages/models/src/resources/show.ts
index 66394ed8..0c77a35d 100644
--- a/front/packages/models/src/resources/show.ts
+++ b/front/packages/models/src/resources/show.ts
@@ -25,6 +25,7 @@ import { Genre } from "./genre";
import { SeasonP } from "./season";
import { StudioP } from "./studio";
import { BaseEpisodeP } from "./episode.base";
+import { CollectionP } from "./collection";
/**
* The enum containing show's status.
@@ -86,6 +87,10 @@ export const ShowP = withImages(
* The studio that made this show.
*/
studio: StudioP.optional().nullable(),
+ /**
+ * The collection this movie is part of.
+ */
+ collections: z.array(CollectionP).optional(),
/**
* The list of seasons of this show.
*/
diff --git a/front/packages/ui/src/details/collection.tsx b/front/packages/ui/src/details/collection.tsx
new file mode 100644
index 00000000..e05bdc5b
--- /dev/null
+++ b/front/packages/ui/src/details/collection.tsx
@@ -0,0 +1,71 @@
+/*
+ * Kyoo - A portable and vast media library solution.
+ * Copyright (c) Kyoo.
+ *
+ * See AUTHORS.md and LICENSE file in the project root for full license information.
+ *
+ * Kyoo is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * Kyoo is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Kyoo. If not, see .
+ */
+
+import { KyooImage } from "@kyoo/models";
+import { H2, ImageBackground, Link, P, focusReset, ts } from "@kyoo/primitives";
+import { useTranslation } from "react-i18next";
+import { Theme, useYoshiki } from "yoshiki/native";
+
+export const PartOf = ({
+ name,
+ overview,
+ thumbnail,
+ href,
+}: {
+ name: string;
+ overview: string | null;
+ thumbnail: KyooImage | null;
+ href: string;
+}) => {
+ const { css, theme } = useYoshiki("part-of-collection");
+ const { t } = useTranslation();
+
+ return (
+ theme.background,
+ fover: {
+ self: { ...focusReset, borderColor: (theme: Theme) => theme.accent },
+ title: { textDecorationLine: "underline" },
+ },
+ })}
+ >
+
+