refactor: 提取 UserAvatar、Input、Card 三个可复用 UI 组件
- UserAvatar: 统一头像渲染(5 种尺寸),新增 resolveAvatar 工具函数,替换 SwipeDeck 和 RoomManageModal 中的重复逻辑 - Input: 统一表单输入样式(4 种尺寸 + default/purple 变体),替换 AuthModal、ProfilePage、BlindboxPage 共 12 处 - Card: 统一卡片容器样式 + 可选淡入动画和延迟,替换 ProfilePage 中 7 处重复的 motion.div
This commit is contained in:
@@ -25,3 +25,14 @@ export function getAvatarBg(emoji: string): string {
|
||||
const found = AVATARS.find((a) => a.emoji === emoji);
|
||||
return found?.bg ?? "bg-zinc-100";
|
||||
}
|
||||
|
||||
export function resolveAvatar(
|
||||
userId: string,
|
||||
profile?: { avatar: string } | null,
|
||||
): { emoji: string; bg: string } {
|
||||
if (profile) {
|
||||
return { emoji: profile.avatar, bg: getAvatarBg(profile.avatar) };
|
||||
}
|
||||
const fallback = getAvatar(userId);
|
||||
return { emoji: fallback.emoji, bg: fallback.bg };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user