import { FileText, Hash, Heart, Image as LucideImage, Radio, Share2, UserPlus, UsersRound, Video } from 'lucide-react' import React from 'react' import { isDark } from '../../../../utils/theme' import { DefaultLayout } from '../../../components/DefaultLayout' import type { PosterProps } from '../../../types/ctx' import { EnhancedImage } from '../../components/shared' import type { BilibiliUserListData } from './types' type BilibiliPushType = NonNullable[number] const pushTypeConfig: Record }> = { video: { label: '投稿视频', color: 'bg-accent/6 text-accent/80 border-accent-soft', icon: Video }, draw: { label: '图文动态', color: 'bg-[#23ade5]/5 text-[#1a8fb8] border-[#23ade5]/12', icon: LucideImage }, word: { label: '纯文动态', color: 'bg-warning/5 text-warning/80 border-warning/12', icon: FileText }, live: { label: '直播动态', color: 'bg-success/5 text-success/80 border-success/12', icon: Radio }, forward: { label: '转发动态', color: 'bg-[#f97316]/5 text-[#cc6b1f] border-[#f97316]/12', icon: Share2 }, article: { label: '投稿专栏', color: 'bg-[#7c3aed]/5 text-[#6b4fa8] border-[#7c3aed]/12', icon: FileText } } /** * B站用户项组件 - 工业风卡片设计 (V5: 语义化主题色重构) */ const BilibiliUserItem: React.FC = (props) => { const activePushTypes = new Set(props.pushTypes ?? (Object.keys(pushTypeConfig) as BilibiliPushType[])) return (
  • {/* 渐进式模糊背景 - Progressive Blur Background */}
    {/* SVG 噪点 (作为卡片内层叠加) */}
    {/* 内容区域 */}
    {/* 左侧:头像与状态 */}
    {/* 头像容器 - 纯净玻璃态 */}
    {/* 状态徽章 - 扁平化/微立体 */}
    {props.switch ? 'ON' : 'OFF'}
    {/* 右侧:信息主体 */}
    {/* 名字 */}

    {props.username}

    {props.host_mid}
    {(Object.entries(pushTypeConfig) as [BilibiliPushType, (typeof pushTypeConfig)[BilibiliPushType]][]).map(([type, config]) => { const isActive = activePushTypes.has(type) return (
    {config.label}
    ) })}
    {[ { icon: UsersRound, value: props.fans, label: '粉丝' }, { icon: Heart, value: props.total_favorited, label: '获赞' }, { icon: UserPlus, value: props.following_count, label: '关注' } ].map((item, index) => { const StatIcon = item.icon return (
    {item.value} {item.label}
    ) })}
  • ) } /** * B站用户列表组件 */ const BilibiliUserList: React.FC> = (props) => { const dark = isDark(props.ctx) // 极简配色:主色(B站蓝) + 邻色(浅蓝/紫) const primaryColor = dark ? '#23ade5' : '#00a1d6' const secondaryColor = dark ? '#4f46e5' : '#60a5fa' // Indigo/Blue return ( {/* 1. 弥散光背景层 - 极简单色系 */}
    {/* 2. 全局噪点纹理 */}
    {/* 3. 几何装饰 */}
    {/* 主要内容区域 */}
    {/* 极简头部 */}
    {/* 群头像 */}
    Subscriber List

    {props.data.groupInfo.groupName}

    GROUP_ID {props.data.groupInfo.groupId}

    {/* 字体黑白灰渐变 */}
    {String(props.data.renderOpt.length).padStart(2, '0')}
    Total Users
    {/* 用户列表网格 - 调整为两列大卡片 */}
      {props.data.renderOpt.map((user, index) => ( ))}
    ) } export default BilibiliUserList