节日特效

This commit is contained in:
mtvpls
2026-01-23 11:24:18 +08:00
parent ea0ebcd8ce
commit ed23e1da6f
3 changed files with 199 additions and 29 deletions

View File

@@ -190,6 +190,8 @@ export default async function RootLayout({
ENABLE_MOVIE_REQUEST: enableMovieRequest,
WEB_LIVE_ENABLED: webLiveEnabled,
CUSTOM_AD_FILTER_VERSION: customAdFilterVersion,
FESTIVE_EFFECT_ENABLED:
process.env.FESTIVE_EFFECT_ENABLED === 'true',
};
return (

View File

@@ -23,6 +23,7 @@ import VideoCard from '@/components/VideoCard';
import HttpWarningDialog from '@/components/HttpWarningDialog';
import BannerCarousel from '@/components/BannerCarousel';
import AIChatPanel from '@/components/AIChatPanel';
import FireworksCanvas from '@/components/FireworksCanvas';
// 首页模块配置接口
interface HomeModule {
@@ -542,6 +543,7 @@ function HomeClient() {
return (
<PageLayout>
<FireworksCanvas />
{/* TMDB 热门轮播图 */}
<div className='w-full mb-4'>
<BannerCarousel />
@@ -551,40 +553,40 @@ function HomeClient() {
<div className='max-w-[95%] mx-auto'>
{/* 首页内容 */}
<>
{/* 源站寻片和AI问片入口 */}
<div className='flex items-center justify-end gap-2 mb-4'>
{/* 源站寻片入口 */}
{sourceSearchEnabled && (
<Link href='/source-search'>
<button
className='p-2 rounded-lg text-blue-500 hover:text-blue-600 transition-colors'
title='源站寻片'
>
<ListVideo size={20} />
</button>
</Link>
)}
{/* AI问片入口 */}
{aiEnabled && (
{/* 源站寻片和AI问片入口 */}
<div className='flex items-center justify-end gap-2 mb-4'>
{/* 源站寻片入口 */}
{sourceSearchEnabled && (
<Link href='/source-search'>
<button
onClick={() => setShowAIChat(true)}
className='p-2 rounded-lg text-purple-500 hover:text-purple-600 transition-colors'
title='AI问片'
className='p-2 rounded-lg text-blue-500 hover:text-blue-600 transition-colors'
title='源站寻片'
>
<Bot size={20} />
<ListVideo size={20} />
</button>
)}
</div>
</Link>
)}
{/* 继续观看 */}
<ContinueWatching />
{/* AI问片入口 */}
{aiEnabled && (
<button
onClick={() => setShowAIChat(true)}
className='p-2 rounded-lg text-purple-500 hover:text-purple-600 transition-colors'
title='AI问片'
>
<Bot size={20} />
</button>
)}
</div>
{/* 根据配置动态渲染首页模块 */}
{homeModules
.filter(module => module.enabled)
.sort((a, b) => a.order - b.order)
.map(module => renderModule(module.id))}
{/* 继续观看 */}
<ContinueWatching />
{/* 根据配置动态渲染首页模块 */}
{homeModules
.filter(module => module.enabled)
.sort((a, b) => a.order - b.order)
.map(module => renderModule(module.id))}
</>
</div>
</div>