refactor(ui): extract auth and avatar components
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -1,16 +1,7 @@
|
||||
"use client";
|
||||
/**
|
||||
* MessageAvatar 消息头像
|
||||
*
|
||||
* 原始 Dart: lib/ui/chat/widgets/message_avatar.dart(85 行)
|
||||
*
|
||||
* 显示规则:
|
||||
* - 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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user