import { useSearchParams } from "react-router"; import { PageHeader } from "~/components/console/page-header.tsx"; import { type ExploreState, fromSearchParams, patch, toSearchParams, type View, } from "~/components/discover/discover-state.ts"; import { ExploreView } from "~/components/discover/explore-view.tsx"; import { RecommendView } from "~/components/discover/recommend-view.tsx"; import { Tabs, TabsList, TabsTrigger } from "~/components/ui/tabs.tsx"; // 发现(对照 MP 推荐 + 探索,docs/porting/moviepilot-discover.md): // 「推荐」按分区横排 TMDB / 豆瓣 / Bangumi 的热门与榜单,每区「查看全部」带参数切到「探索」; // 「探索」选来源后按类型、风格、地区、语言、年份、评分、排序筛选或搜关键词。状态都在 URL 里。 // 卡片标本地状态;点开进作品,豆瓣 / bgm 条目先匹配 TMDB 作品。 export const meta = () => [{ title: "发现 · UHD 媒体自动化控制台" }]; export default function DiscoverPage() { const [sp, setSp] = useSearchParams(); const view: View = sp.get("view") === "explore" || sp.has("src") ? "explore" : "recommend"; const explore = fromSearchParams(sp); const category = sp.get("cat") ?? ""; const go = (next: ExploreState) => setSp(toSearchParams(next), { replace: false }); return ( <> setSp(v === "explore" ? toSearchParams(explore) : new URLSearchParams(category ? { cat: category } : {})) } > 推荐 探索 {view === "recommend" ? ( setSp(new URLSearchParams(c ? { cat: c } : {}), { replace: true })} /> ) : ( go(patch(explore, p))} /> )} ); }