import React, { useState, useRef, useEffect } from 'react'; import { Send, Share2, Settings2, ChevronLeft } from 'lucide-react'; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { ScrollArea } from "@/components/ui/scroll-area"; import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import {generateAICharacters} from "@/config/aiCharacters"; import { groups } from "@/config/groups"; import type { AICharacter } from "@/config/aiCharacters"; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm' import remarkMath from 'remark-math' import rehypeKatex from 'rehype-katex' import { SharePoster } from '@/components/SharePoster'; import { MembersManagement } from '@/components/MembersManagement'; import Sidebar from './Sidebar'; import { AdBanner, AdBannerMobile } from './AdSection'; // 使用本地头像数据,避免外部依赖 const getAvatarData = (name: string) => { const colors = ['#1abc9c', '#3498db', '#9b59b6', '#f1c40f', '#e67e22']; const index = (name.charCodeAt(0) + (name.charCodeAt(1) || 0 )) % colors.length; return { backgroundColor: colors[index], text: name[0], }; }; // 单个完整头像 const SingleAvatar = ({ user }: { user: User | AICharacter }) => { // 如果有头像就使用头像,否则使用默认的文字头像 if ('avatar' in user && user.avatar) { return (
{user.name}
); } const avatarData = getAvatarData(user.name); return (
{avatarData.text}
); }; // 左右分半头像 const HalfAvatar = ({ user, isFirst }: { user: User, isFirst: boolean }) => { if ('avatar' in user && user.avatar) { return (
{user.name}
); } const avatarData = getAvatarData(user.name); return (
{avatarData.text}
); }; // 四分之一头像 const QuarterAvatar = ({ user, index }: { user: User, index: number }) => { if ('avatar' in user && user.avatar) { return (
{user.name}
); } const avatarData = getAvatarData(user.name); return (
{avatarData.text}
); }; // 修改 KaTeXStyle 组件 const KaTeXStyle = () => (