refactor(chat): align chat header and input bar with Dart source

This commit is contained in:
2026-06-10 11:59:53 +08:00
parent 1e5b7420d3
commit 1db3e3ae31
17 changed files with 183 additions and 688 deletions
+19 -28
View File
@@ -6,14 +6,15 @@
*
* 两种模式:
* - 游客模式(isGuest=true):渲染 `GuestBanner` 提示注册(点击 → /auth
* - 登录模式(isGuest=false):渲染 `MenuButton`(点击 → 打开 ChatMenuBar
* - 登录模式(isGuest=false):渲染 `MenuButton`(点击 → push 到 /sidebar
*
* 注意:菜单按钮直接 push 到侧边栏路由,**不**打开下拉菜单
* Dart 端 `MenuButton(onTap: _goSidebar)` 行为)。
*/
import { useRouter } from "next/navigation";
import { useState } from "react";
import { ROUTES } from "@/router/routes";
import { ChatMenuBar } from "./chat-menu-bar";
import styles from "./chat-header.module.css";
export interface ChatHeaderProps {
@@ -22,7 +23,6 @@ export interface ChatHeaderProps {
export function ChatHeader({ isGuest }: ChatHeaderProps) {
const router = useRouter();
const [menuOpen, setMenuOpen] = useState(false);
if (isGuest) {
return (
@@ -43,29 +43,20 @@ export function ChatHeader({ isGuest }: ChatHeaderProps) {
}
return (
<>
<header className={styles.header}>
<div className={styles.headerRow}>
{/* 菜单按钮(点击 → 打开 ChatMenuBar 浮层) */}
<button
type="button"
className={styles.menuButton}
onClick={() => setMenuOpen(true)}
aria-label="Menu"
aria-expanded={menuOpen}
>
<span className={styles.menuIcon} aria-hidden="true">
</span>
</button>
</div>
</header>
<ChatMenuBar
open={menuOpen}
onClose={() => setMenuOpen(false)}
environmentName="dev"
/>
</>
<header className={styles.header}>
<div className={styles.headerRow}>
{/* 菜单按钮(点击 → push 到 /sidebar,与 Dart MenuButton 一致) */}
<button
type="button"
className={styles.menuButton}
onClick={() => router.push(ROUTES.sidebar)}
aria-label="Menu"
>
<span className={styles.menuIcon} aria-hidden="true">
</span>
</button>
</div>
</header>
);
}