refactor(ui): extract auth and avatar components

This commit is contained in:
2026-06-18 17:14:02 +08:00
parent 96d0a54105
commit 7354afe93d
12 changed files with 91 additions and 69 deletions
+1
View File
@@ -22,3 +22,4 @@ export * from "./message-content";
export * from "./pwa-install-dialog";
export * from "./pwa-install-overlay";
export * from "./text-bubble";
export * from "./user-message-avatar";
+2 -28
View File
@@ -1,16 +1,7 @@
"use client";
/**
* MessageAvatar 消息头像
*
* 原始 Dart: lib/ui/chat/widgets/message_avatar.dart85 行)
*
* 显示规则:
* - AI 消息:Elio 头像(`/images/chat/pic-chat-elio.png`
* - 用户消息(有 avatarUrl):用户头像
* - 用户消息(无 avatarUrl):游客头像(`/images/chat/pic-chat-guest.png`
*/
import Image from "next/image";
import { UserMessageAvatar } from "./user-message-avatar";
import styles from "./message-avatar.module.css";
export interface MessageAvatarProps {
@@ -33,22 +24,5 @@ export function MessageAvatar({ isFromAI, userAvatarUrl }: MessageAvatarProps) {
);
}
if (userAvatarUrl && userAvatarUrl.length > 0) {
return (
<div className={styles.avatar} aria-label="User avatar">
<Image src={userAvatarUrl} alt="" width={43} height={43} />
</div>
);
}
return (
<div className={styles.avatar} aria-label="Guest avatar">
<Image
src="/images/chat/pic-chat-guest.png"
alt="Guest"
width={43}
height={43}
/>
</div>
);
return <UserMessageAvatar avatarUrl={userAvatarUrl} />;
}
@@ -0,0 +1,30 @@
"use client";
import Image from "next/image";
import styles from "./message-avatar.module.css";
export interface UserMessageAvatarProps {
avatarUrl?: string | null;
}
export function UserMessageAvatar({ avatarUrl }: UserMessageAvatarProps) {
if (avatarUrl && avatarUrl.length > 0) {
return (
<div className={styles.avatar} aria-label="User avatar">
<Image src={avatarUrl} alt="" width={43} height={43} />
</div>
);
}
return (
<div className={styles.avatar} aria-label="Guest avatar">
<Image
src="/images/chat/pic-chat-guest.png"
alt="Guest"
width={43}
height={43}
/>
</div>
);
}