收口作品详情标签与作品号

将作品详情主题标签迁移到 PlatformPillBadge

将作品详情作品号复制按钮迁移到 CopyCodeButton pill 外观

删除作品详情本地 chip 基础样式

更新 PlatformUiKit 文档和 Hermes 决策记录
This commit is contained in:
2026-06-10 14:07:51 +08:00
parent b9ddc07e0a
commit eff95886ad
5 changed files with 32 additions and 18 deletions
+2
View File
@@ -100,6 +100,7 @@
- 2026-06-10 追加:RPG 首页公开作品卡标签、趋势卡标签、公开作品搜索结果类型、充值商品角标、移动端创建入口、桌面发现 hero / 今日 / 最近作品 / 最近浏览 chip 迁移到 `PlatformPillBadge`,首页不再手写 `platform-pill platform-pill--neutral / warm / cool`
- 2026-06-10 追加:RPG 世界详情页的发布状态、主题、作者、发布时间 / 可见性和展示标签等静态元信息 chip 迁移到 `PlatformPillBadge`;作品号复制和分享入口仍保留 `CopyCodeButton` / `CopyFeedbackButton` 管复制状态。
- 2026-06-10 追加:`CopyFeedbackButton` 支持 `actionAppearance="pill"``CopyCodeButton` 透传同一入口,并复用 `platformPillBadgeModel.ts``getPlatformPillBadgeClassName` 视觉 chrome;可点击复制 / 分享胶囊 chip 不再在业务 JSX 中手写 `platform-pill`,RPG 世界详情作品号复制 / 分享入口和抓大鹅批量新增 / 重生成物品名称预览已迁移。
- 2026-06-10 追加:平台作品详情页主题标签使用 `PlatformPillBadge tone="neutralSolid" size="sm"`,作品号复制按钮使用 `CopyCodeButton actionAppearance="pill" actionPillTone="neutralSolid" actionPillSize="sm"`;详情页只保留标签映射、作品号复制状态和顶部外边距,不再手写 `platform-work-detail__chip / code` 基础 chrome。验证命令:`npm run test -- src/components/platform-entry/PlatformWorkDetailView.test.tsx src/components/common/PlatformPillBadge.test.tsx src/components/common/CopyCodeButton.test.tsx`
- 2026-06-10 追加:`PlatformPillBadge` 支持 `darkSoft` / `darkNeutral` / `darkSky` / `darkEmerald` / `darkAmber` / `darkRose` 暗色 tone,用于 RPG 暗色弹窗和角色详情里的纯展示 chip;角色身份 / 等级、技能列表出手方式、技能详情方式 / 风格 / 状态标签、地图节点方向标签、地图场景切换方向标签和营地编组状态数值已迁移。暗色动作按钮、runtime HUD、属性加成动态 pill 和按钮内部消耗 chip 暂不直接套静态 badge。
- 2026-06-10 追加:背景故事已解锁 / 需好感状态和好感等级 badge 也使用 `PlatformPillBadge``dark*` tone;好感进度时间轴刻度、runtime HUD 和带点击卡片视觉的标签仍保留专用布局。
- 2026-06-10 追加:RPG 角色资产工作室动作列表的生成中 / 已生成 / 待生成状态 chip 直接使用 `PlatformPillBadge``darkAmber` / `darkEmerald` / `darkNeutral` tone;父弹窗不再维护本地 `StatusBadge` 浅封装,动作生成按钮仍保留工作室专用暗色按钮布局。
@@ -228,6 +229,7 @@
- 2026-06-09 验证补充:通用输入 Composer 图标按钮迁移补跑 `npm run test -- src/components/creative-agent/CreativeAgentInputComposer.test.tsx src/components/creative-agent/CreativeAgentWorkspace.test.tsx src/components/common/PlatformIconButton.test.tsx`
- 2026-06-10 验证补充:作品详情顶部和封面轮播图标按钮收口补跑 `npm run test -- src/components/platform-entry/PlatformWorkDetailView.test.tsx src/components/common/PlatformIconButton.test.tsx`
- 2026-06-10 验证补充:作品详情底部启动 / 改造动作收口补跑 `npm run test -- src/components/platform-entry/PlatformWorkDetailView.test.tsx src/components/common/PlatformActionButton.test.tsx`
- 2026-06-10 验证补充:平台作品详情主题标签和作品号复制 chip 收口后,补跑 `npm run test -- src/components/platform-entry/PlatformWorkDetailView.test.tsx src/components/common/PlatformPillBadge.test.tsx src/components/common/CopyCodeButton.test.tsx`
- 2026-06-10 验证补充:大鱼吃小鱼结果页缺草稿空态收口补跑 `npm run test -- src/components/big-fish-result/BigFishResultView.test.tsx src/components/common/PlatformEmptyState.test.tsx`
- 2026-06-10 验证补充:大鱼吃小鱼结果页发布校验阻断项收口补跑 `npm run test -- src/components/big-fish-result/BigFishResultView.test.tsx src/components/common/PlatformStatusMessage.test.tsx`
- 2026-06-09 验证补充:通用输入 Composer 面板、文本域和读图错误状态收口补跑 `npm run test -- src/components/creative-agent/CreativeAgentInputComposer.test.tsx src/components/common/PlatformTextField.test.tsx src/components/common/PlatformStatusMessage.test.tsx src/components/common/PlatformSubpanel.test.tsx`
File diff suppressed because one or more lines are too long
@@ -140,6 +140,13 @@ test('PlatformWorkDetailView renders compact stats and date time', () => {
expect(screen.getByText('2026-04-25')).toBeTruthy();
expect(screen.getAllByText('次')).toHaveLength(2);
expect(screen.getByText('赞')).toBeTruthy();
const tagChip = screen
.getAllByText('拼图')
.find((element) =>
element.className.includes('platform-work-detail__chip'),
);
expect(tagChip?.className).toContain('rounded-full');
expect(tagChip?.className).toContain('bg-[var(--platform-neutral-bg)]');
expect(screen.getByRole('button', { name: '返回' }).className).toContain(
'platform-icon-button',
);
@@ -240,7 +247,14 @@ test('PlatformWorkDetailView copies public work code and share text', async () =
/>,
);
fireEvent.click(screen.getByRole('button', { name: 'PZ-001' }));
const publicWorkCodeButton = screen.getByRole('button', { name: 'PZ-001' });
expect(publicWorkCodeButton.className).toContain('rounded-full');
expect(publicWorkCodeButton.className).toContain(
'bg-[var(--platform-neutral-bg)]',
);
fireEvent.click(publicWorkCodeButton);
expect(clipboardService.copyTextToClipboard).toHaveBeenCalledWith('PZ-001');
expect(await screen.findByText('已复制')).toBeTruthy();
@@ -20,6 +20,7 @@ import { CopyCodeButton } from '../common/CopyCodeButton';
import { CopyFeedbackMessage } from '../common/CopyFeedbackMessage';
import { PlatformActionButton } from '../common/PlatformActionButton';
import { PlatformIconButton } from '../common/PlatformIconButton';
import { PlatformPillBadge } from '../common/PlatformPillBadge';
import { useCopyFeedback } from '../common/useCopyFeedback';
import { ResolvedAssetImage } from '../ResolvedAssetImage';
import {
@@ -426,9 +427,14 @@ export function PlatformWorkDetailView({
<section className="platform-work-detail__body">
<div className="platform-work-detail__chips">
{tags.map((tag) => (
<span key={tag} className="platform-work-detail__chip">
<PlatformPillBadge
key={tag}
tone="neutralSolid"
size="sm"
className="platform-work-detail__chip"
>
{tag}
</span>
</PlatformPillBadge>
))}
</div>
<p className="platform-work-detail__copy">{entry.summaryText}</p>
@@ -439,6 +445,9 @@ export function PlatformWorkDetailView({
codeLabel={null}
accessibleLabel={publicWorkCode}
title="复制作品号"
actionAppearance="pill"
actionPillTone="neutralSolid"
actionPillSize="sm"
className="platform-work-detail__code"
onClick={copyPublicWorkCode}
idleIcon={<Copy className="h-4 w-4" />}
-14
View File
@@ -8687,20 +8687,6 @@ button {
margin-bottom: 1rem;
}
.platform-work-detail__chip,
.platform-work-detail__code {
display: inline-flex;
align-items: center;
gap: 0.4rem;
border: 1px solid var(--platform-neutral-border);
border-radius: 0.7rem;
background: var(--platform-neutral-bg);
color: var(--platform-neutral-text);
padding: 0.42rem 0.75rem;
font-size: 0.75rem;
font-weight: 700;
}
.platform-work-detail__copy {
margin: 0;
color: var(--platform-text-base);