diff --git a/src/assets/css/index.css b/src/assets/css/index.css
index 4548b003..67c5a178 100644
--- a/src/assets/css/index.css
+++ b/src/assets/css/index.css
@@ -334,3 +334,18 @@ input[type=range].styled-slider.slider-progress::-ms-fill-lower {
--mask-fade-distance: 20px;
}
}
+
+/* DetailsModal staggered scaling anime */
+@keyframes scaleIn {
+ 0% {
+ transform: scale(0);
+ opacity: 0;
+ }
+ 50% {
+ transform: scale(1.1);
+ }
+ 100% {
+ transform: scale(1);
+ opacity: 1;
+ }
+}
diff --git a/src/components/overlays/DetailsModal.tsx b/src/components/overlays/DetailsModal.tsx
index 08b12c34..c0706bc3 100644
--- a/src/components/overlays/DetailsModal.tsx
+++ b/src/components/overlays/DetailsModal.tsx
@@ -1,6 +1,6 @@
import classNames from "classnames";
import { t } from "i18next";
-import { useCallback, useEffect, useMemo, useRef, useState } from "react";
+import { useEffect, useMemo, useRef, useState } from "react";
import { Helmet } from "react-helmet-async";
import { Trans } from "react-i18next";
import { Link } from "react-router-dom";
@@ -17,8 +17,8 @@ import {
} from "@/backend/metadata/types/tmdb";
import { Dropdown } from "@/components/form/Dropdown";
import { Icon, Icons } from "@/components/Icon";
+import { MediaBookmarkButton } from "@/components/media/MediaBookmark";
import { hasAired } from "@/components/player/utils/aired";
-import { useBookmarkStore } from "@/stores/bookmarks";
import { useLanguageStore } from "@/stores/language";
import { usePreferencesStore } from "@/stores/preferences";
import { useProgressStore } from "@/stores/progress";
@@ -148,10 +148,6 @@ function DetailsContent({
const [showVolumeBar, setShowVolumeBar] = useState(false);
const [volume, setVolume] = useState(0.5);
- const addBookmark = useBookmarkStore((s) => s.addBookmark);
- const removeBookmark = useBookmarkStore((s) => s.removeBookmark);
- const bookmarks = useBookmarkStore((s) => s.bookmarks);
- const isBookmarked = !!bookmarks[data.id?.toString() ?? ""];
const enableImageLogos = usePreferencesStore(
(state) => state.enableImageLogos,
);
@@ -178,23 +174,6 @@ function DetailsContent({
}
}, [showProgress]);
- const toggleBookmark = useCallback(() => {
- if (!data.id) return;
- if (isBookmarked) {
- removeBookmark(data.id.toString());
- } else {
- addBookmark({
- tmdbId: data.id.toString(),
- type: data.type ?? "movie",
- title: data.title,
- releaseYear: data.releaseDate
- ? new Date(data.releaseDate).getFullYear()
- : 0,
- poster: data.backdrop,
- });
- }
- }, [data, isBookmarked, addBookmark, removeBookmark]);
-
const toggleMute = () => {
if (videoRef.current) {
const newMuted = !videoRef.current.muted;
@@ -580,7 +559,11 @@ function DetailsContent({
}
}
}}
- theme="glass"
+ theme="purple"
+ className={classNames(
+ "gap-2 h-12 rounded-lg px-4 py-2 my-1 transition-transform hover:scale-105 duration-100",
+ "text-md text-white flex items-center justify-center",
+ )}
>