收口智能创作首页空态

将智能创作首页抽屉空态迁移到 PlatformEmptyState

将智能创作首页错误提示迁移到 PlatformStatusMessage

删除智能创作首页本地空态和错误提示 chrome

新增 CreativeAgentHome 公共组件断言

更新 PlatformUiKit 文档和 Hermes 决策记录
This commit is contained in:
2026-06-10 14:26:41 +08:00
parent 9b36903021
commit 694b2fa209
5 changed files with 66 additions and 21 deletions

View File

@@ -0,0 +1,47 @@
/* @vitest-environment jsdom */
import { render, screen } from '@testing-library/react';
import { expect, test, vi } from 'vitest';
import { CreativeAgentHome } from './CreativeAgentHome';
function renderHome({
error = null,
}: {
error?: string | null;
} = {}) {
render(
<CreativeAgentHome
recentItems={[]}
isBusy={false}
error={error}
onStartNewChat={vi.fn()}
onOpenHistoryItem={vi.fn()}
onOpenDrafts={vi.fn()}
onOpenAccount={vi.fn()}
onOpenSettings={vi.fn()}
onSubmitMessage={vi.fn()}
/>,
);
}
test('CreativeAgentHome uses shared empty state for empty drawer history', () => {
renderHome();
const emptyState = screen.getByText('暂无创作记录');
expect(emptyState.className).toContain('platform-empty-state');
expect(emptyState.className).toContain('bg-white/74');
});
test('CreativeAgentHome uses shared status message for home error', () => {
renderHome({ error: '创作助手暂时不可用' });
const statusMessage = screen.getByText('创作助手暂时不可用');
expect(statusMessage.className).toContain('platform-status-message');
expect(statusMessage.className).toContain('creative-agent-home__error');
expect(statusMessage.className).toContain(
'border-[var(--platform-button-danger-border)]',
);
});

View File

@@ -14,7 +14,9 @@ import {
import { useMemo, useState } from 'react';
import type { CreativeAgentInputPart } from '../../../packages/shared/src/contracts/creativeAgent';
import { PlatformEmptyState } from '../common/PlatformEmptyState';
import { PlatformIconButton } from '../common/PlatformIconButton';
import { PlatformStatusMessage } from '../common/PlatformStatusMessage';
import type { CreationWorkShelfItem } from '../custom-world-home/creationWorkShelf';
import { RpgEntryBrandLogo } from '../rpg-entry/RpgEntryBrandLogo';
import { CreativeAgentInputComposer } from './CreativeAgentInputComposer';
@@ -252,7 +254,9 @@ function CreativeAgentDrawer({
</section>
))
) : (
<div className="creative-agent-drawer__empty"></div>
<PlatformEmptyState surface="subpanel" size="inline">
</PlatformEmptyState>
)}
</div>
@@ -366,7 +370,14 @@ export function CreativeAgentHome({
</div>
{error ? (
<div className="creative-agent-home__error">{error}</div>
<PlatformStatusMessage
tone="error"
surface="platform"
size="md"
className="creative-agent-home__error font-semibold"
>
{error}
</PlatformStatusMessage>
) : null}
</main>

View File

@@ -8963,14 +8963,6 @@ button {
.creative-agent-home__error {
max-width: 38rem;
border: 1px solid var(--platform-button-danger-border);
border-radius: 1rem;
background: var(--platform-button-danger-fill);
color: var(--platform-button-danger-text);
padding: 0.85rem 1rem;
font-size: 0.875rem;
font-weight: 800;
line-height: 1.6;
}
.creative-agent-home__composer {
@@ -9139,17 +9131,6 @@ button {
color 180ms ease;
}
.creative-agent-drawer__empty {
border: 1px solid var(--platform-subpanel-border);
border-radius: 1rem;
background: var(--platform-subpanel-fill);
color: var(--platform-text-soft);
padding: 0.9rem 1rem;
text-align: center;
font-size: 0.9rem;
font-weight: 800;
}
.creative-agent-drawer__avatar {
display: inline-flex;
width: 3rem;