Files
2977094657 94ec5c9a1c feat(ui): 新增浅深色主题切换并统一界面配色
- 新增主题 store 与本地持久化能力,支持侧边栏切换浅色/深色模式
- 将聊天页、会话列表、标题栏、弹窗等配色改为 CSS 变量统一管理
- 适配定位卡片、引用气泡、系统提示等聊天消息组件在不同主题下的可读性
- 同步整理首页、解密页、联系人页、朋友圈页等页面背景与交互样式
2026-03-22 15:34:05 +08:00

49 lines
1.4 KiB
Vue

<template>
<div ref="messageContainerRef" class="message-list flex-1 overflow-y-auto p-4 min-h-0" @scroll="onMessageScroll">
<div v-if="selectedContact && hasMoreMessages" class="flex justify-center mb-4">
<div
class="message-list-load-more text-xs px-3 py-1 rounded-md border select-none"
:class="isLoadingMessages ? 'opacity-60' : 'hover:bg-gray-50 cursor-pointer'"
@click="!isLoadingMessages && loadMoreMessages()"
>
{{ isLoadingMessages ? '加载中...' : '继续上滑加载更多' }}
</div>
</div>
<div v-if="isLoadingMessages && messages.length === 0" class="message-list-status text-center text-sm py-6">
加载中...
</div>
<div v-else-if="messagesError" class="text-center text-sm text-red-500 py-6 whitespace-pre-wrap">
{{ messagesError }}
</div>
<div v-else-if="messages.length === 0" class="message-list-status text-center text-sm py-6">
暂无聊天记录
</div>
<MessageItem
v-for="message in renderMessages"
:key="message.id"
:message="message"
:state="state"
/>
</div>
</template>
<script>
import { defineComponent } from 'vue'
import MessageItem from '~/components/chat/MessageItem.vue'
export default defineComponent({
name: 'MessageList',
components: { MessageItem },
props: {
state: { type: Object, required: true }
},
setup(props) {
return {
...props.state
}
}
})
</script>