Rename /person to /people, simplify cast to actors-only, and polish UI

Rename the person detail route from `app/(pages)/person/[id]` to
`app/(pages)/people/[id]` and update all internal links accordingly.

Strip crew members from the cast carousel so only actors are shown;
remove the `crew` prop from `CastCarousel` and `TitleCast` entirely.

Move the trailer trigger from the metadata row into a centered overlay
on the backdrop image using a new `variant="backdrop"` prop on
`TrailerDialog`, replacing the previous inline button approach.

Swap several icons for better semantic matches: `IconBooks` for the
library section, `IconCheck` for the "Mark Watched" button,
`IconSparkles` on the Recommendations heading, and `IconDeviceTvOld`
on the Seasons heading.

Replace a nested `motion.p` with a plain `<p>` using CSS
`transition-opacity` in `StatsDisplay`. Remove the `animate-gentle-float`
keyframe and the `feed-scroll` utility from `globals.css`, replacing the
latter with the existing `no-scrollbar` class.
This commit is contained in:
2026-03-05 15:32:05 -05:00
parent cd5d773e98
commit 71b39d5aca
20 changed files with 115 additions and 190 deletions
+1 -1
View File
@@ -91,7 +91,7 @@ export function CommandPalette() {
(result: SearchResult) => {
setCommandPaletteOpen(false);
if (result.type === "person") {
router.push(`/person/tmdb-${result.tmdbId}`);
router.push(`/people/tmdb-${result.tmdbId}`);
} else {
router.push(`/titles/tmdb-${result.tmdbId}-${result.type}`);
}
+4 -6
View File
@@ -11,7 +11,7 @@ import {
IconPlus,
IconStarFilled,
} from "@tabler/icons-react";
import { motion } from "motion/react";
import Image from "next/image";
import Link from "next/link";
import { useState } from "react";
@@ -173,10 +173,8 @@ function CardInner({
: "ring-white/[0.06]";
return (
<motion.div
className={`relative overflow-hidden rounded-xl bg-card ring-1 transition-shadow hover:ring-primary/25 hover:shadow-lg hover:shadow-primary/5 ${ringClass}`}
whileHover={{ scale: 1.02 }}
transition={{ type: "spring", stiffness: 400, damping: 25 }}
<div
className={`relative overflow-hidden rounded-xl bg-card ring-1 transition-all duration-200 ease-out hover:scale-[1.02] hover:ring-primary/25 hover:shadow-lg hover:shadow-primary/5 ${ringClass}`}
>
<div className="aspect-[2/3] overflow-hidden bg-card">
{posterPath ? (
@@ -248,7 +246,7 @@ function CardInner({
total={episodeProgress.total}
/>
)}
</motion.div>
</div>
);
}