[Ai] feat: 花魁短剧 Next.js 站点初始提交
- 原生 Next.js App Router + 严格 TypeScript 实现花魁短剧 PC/H5 页面,按 src/features/{catalog,content,playback} 组织,保留完整 SEO(metadata、JSON-LD、canonical、robots、llms、sitemap、IndexNow)。
- 主域名通过 SITE_URL=https://huakuidj.com 强制覆盖后端 foreverUrlAddr(config/*.env、src/server/config.ts、src/server/seo/shared.ts、src/server/services/shared.ts),支持邮箱改为 support@huakuidj.com。
- 移除登录与账户体系:删除 /account 全部页面、登录/注册/充值弹窗、收藏点赞、评论、金币解锁及对应 BFF 接口;旧账户地址 GET/HEAD 统一 301 到首页(src/lib/routes.ts REMOVED_ACCOUNT_PATHS),保留游客会话、反馈、图片上传、观看上报与搜索联想。
- 播放页:评论位改为同类推荐 + 热播榜单,锁定集改为 App 观看遮罩与底部弹层,新增简介标签、分集图例与独立视觉皮肤(src/features/playback、src/styles/pages/playback.css)。
- 卡片:短剧/视频卡状态与时长移至信息行胶囊标签,封面角标移至左上角(src/components/catalog/Cards.tsx、src/styles/foundations/base.css)。
- 同步更新单元测试、浏览器冒烟脚本、路由清单与 README。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import type { Data } from "@/server/services/model";
|
||||
import { navIsActive } from "@/lib/view-helpers";
|
||||
export function MobileTabbar({ data }: { data: Data }) {
|
||||
const path = data.requestPath;
|
||||
if (!path) return null;
|
||||
const active = (url: string) => navIsActive(url, path),
|
||||
home = active("/"),
|
||||
short = active("/dramas/"),
|
||||
series = active("/series/");
|
||||
if (!(home || short || series)) return null;
|
||||
return (
|
||||
<nav className="hk-mobile-tabbar" aria-label="移动端主导航">
|
||||
{[
|
||||
["/", "首页", "home", home, "home"],
|
||||
["/dramas/", "短剧", "film", short, "short"],
|
||||
["/series/", "剧集", "tv", series, "series"],
|
||||
].map(([href, label, icon, isActive, key]) => (
|
||||
<a
|
||||
key={String(key)}
|
||||
className={"hk-mobile-tabbar__item" + (isActive ? " hk-is-active" : "")}
|
||||
href={String(href)}
|
||||
aria-current={isActive ? "page" : undefined}
|
||||
data-navigation-key={"mobile_" + key}
|
||||
data-navigation-name={String(label)}
|
||||
>
|
||||
<img
|
||||
fetchPriority="low"
|
||||
src={
|
||||
"/static/images/mobile-tabbar/" +
|
||||
icon +
|
||||
"-" +
|
||||
(isActive ? "active" : "muted") +
|
||||
".svg"
|
||||
}
|
||||
width="22"
|
||||
height="22"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
/>
|
||||
<span>{label}</span>
|
||||
</a>
|
||||
))}
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user