44 lines
1.8 KiB
React
44 lines
1.8 KiB
React
import React from 'react';
|
||
|
||
/**
|
||
* 全站作者名渲染(前台):
|
||
* - name 显示名(后端 author_name 已归一 = nickname||username,调用方负责兜底匿名/游客)
|
||
* - uid 用户 id;showUid 时显示 #id 后缀
|
||
* - title 自定义头衔文案(非空才渲染 chip)
|
||
* - titleColor 头衔 chip 背景色(hex,可空 → 默认中性色)
|
||
* - role 'admin' → 系统身份 chip「管理员」(固定系统配色)
|
||
* - moderatorLabel 版主 chip 文案(如「版主·闲聊」);接口未提供时留空则不渲染
|
||
* - showUid UID 后缀开关:帖子发布者/楼主/博客作者/个人主页恒显;
|
||
* 评论作者/回复楼层由 show_uid_in_comments 设置控制
|
||
*
|
||
* 渲染 = 名字 + 系统身份 chip(管理员/版主)+ 自定义头衔 chip + UID 后缀,
|
||
* 样式命名空间 .username-* / .title-chip(见 public/css/style.css)。
|
||
*/
|
||
export default function UserName({
|
||
name = '',
|
||
uid,
|
||
title = '',
|
||
titleColor = '',
|
||
role = '',
|
||
showUid = false,
|
||
moderatorLabel = '',
|
||
className = '',
|
||
}) {
|
||
return (
|
||
<span className={'username' + (className ? ' ' + className : '')}>
|
||
<span className="username-name">{name || '匿名'}</span>
|
||
{role === 'admin' ? <span className="username-chip username-chip-role">管理员</span> : null}
|
||
{moderatorLabel ? <span className="username-chip username-chip-moderator">{moderatorLabel}</span> : null}
|
||
{title ? (
|
||
<span
|
||
className={'username-chip title-chip' + (titleColor ? ' title-chip-colored' : '')}
|
||
style={titleColor ? { background: titleColor } : undefined}
|
||
>
|
||
{title}
|
||
</span>
|
||
) : null}
|
||
{showUid && uid != null ? <span className="username-uid">#{uid}</span> : null}
|
||
</span>
|
||
);
|
||
}
|