refactor: 重构整体页面布局与样式,统一UI设计风格

- 重构PlayerAppShell,移除冗余头部导航与国际化依赖,统一页面背景与内边距
- 新增通用页面容器组件PlayerPanel,统一页面头部布局与样式
- 重构底部导航栏,调整图标、文案与样式,新增激活状态指示器
- 重构所有页面组件:大厅页、注单页、结果页、开奖面板等,统一使用新的UI组件与设计风格
- 优化状态标签、卡片、按钮等组件的视觉样式,统一配色与圆角规范
- 移除冗余依赖与注释代码,整理代码结构
This commit is contained in:
2026-05-14 11:18:08 +08:00
parent f777888940
commit ac612cb32c
11 changed files with 1054 additions and 735 deletions

View File

@@ -1,13 +1,9 @@
"use client";
import Link from "next/link";
import type { ReactNode } from "react";
import { useTranslation } from "react-i18next";
import { LanguageSwitcher } from "@/components/language-switcher";
import { NetworkStatusBanner } from "@/components/network-status-banner";
import { PlayerBottomNav } from "@/components/layout/player-bottom-nav";
import { PlayerSessionBar } from "@/features/player/player-session-bar";
type PlayerAppShellProps = {
children: ReactNode;
@@ -21,25 +17,10 @@ type PlayerAppShellProps = {
* 这里的 NetworkStatusBanner 仅用于 WebSocket 状态显示
*/
export function PlayerAppShell({ children }: PlayerAppShellProps): ReactNode {
const { t } = useTranslation("layout");
return (
<div className="flex min-h-dvh flex-col bg-background text-foreground">
{/* WebSocket 连接状态横幅(降级模式提示) */}
<div className="min-h-dvh bg-[#f3f7fd] text-foreground">
<NetworkStatusBanner />
<header className="sticky top-0 z-40 shrink-0 border-b border-border bg-background/95 backdrop-blur-sm supports-[backdrop-filter]:bg-background/80">
<div className="mx-auto flex h-12 max-w-lg items-center gap-2 px-4">
<Link
href="/hall"
className="shrink-0 text-sm font-semibold tracking-tight text-foreground no-underline hover:opacity-90"
>
{t("brand.title")}
</Link>
<PlayerSessionBar className="min-w-0 flex-1 border-l border-border pl-2" />
<LanguageSwitcher variant="minimal" showFlag={false} />
</div>
</header>
<main className="mx-auto flex w-full max-w-lg flex-1 flex-col gap-4 px-4 pb-[calc(3.5rem+env(safe-area-inset-bottom,0px)+0.75rem)] pt-4">
<main className="mx-auto flex w-full max-w-lg flex-col px-3 pb-[calc(4.25rem+env(safe-area-inset-bottom,0px)+0.75rem)] pt-3 sm:px-4">
{children}
</main>
<PlayerBottomNav />