From 01c0028b87aae934c0893afdcbbbace45626f24a Mon Sep 17 00:00:00 2001 From: kdletters Date: Thu, 11 Jun 2026 02:03:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E6=94=B6=E5=8F=A3=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E7=A9=BA=E6=80=81=E4=B8=8E=E8=BF=90=E8=A1=8C=E6=80=81?= =?UTF-8?q?=E5=8A=A8=E4=BD=9C=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 账号安全面板空态统一复用 PlatformEmptyState 登录入口不可用提示改为复用 PlatformEmptyState RPG运行态底部与覆盖层动作统一委托 PlatformActionButton 背包工坊按钮回到共享 success tone 更新 PlatformUiKit 收口文档与团队决策记录 --- .hermes/shared-memory/decision-log.md | 4 +- ...】PlatformUiKit弹窗组件收口计划-2026-06-08.md | 2 +- src/components/InventoryPanel.test.tsx | 2 +- src/components/InventoryPanel.tsx | 4 +- src/components/auth/AccountModal.test.tsx | 27 ++++++ src/components/auth/AccountModal.tsx | 74 ++++++--------- src/components/auth/LoginScreen.tsx | 13 ++- .../RpgAdventurePanel.npcChat.test.tsx | 92 +++++++++++++++++++ .../rpg-runtime-panels/RpgAdventurePanel.tsx | 54 +++++++---- .../RpgAdventurePanelOverlays.tsx | 30 +++--- 10 files changed, 208 insertions(+), 94 deletions(-) diff --git a/.hermes/shared-memory/decision-log.md b/.hermes/shared-memory/decision-log.md index 0673f046..82d37331 100644 --- a/.hermes/shared-memory/decision-log.md +++ b/.hermes/shared-memory/decision-log.md @@ -2077,8 +2077,8 @@ - 决策:平台入口的创作前置泥点阻断提示只在 `platform-entry` 局部抽成 `src/components/platform-entry/PlatformDraftGenerationPointNoticeDialog.tsx`,并使用 `DraftGenerationPointNotice` union(`insufficient-points` / `balance-load-failed`)承接业务真相;不要在 `common/` 再抽一个泛化 `BlockingNoticeDialog`,否则会把 `PlatformAcknowledgeStatusDialog` 的样式透传再包装一层而不缩小调用面。 - 决策:`PlatformAsyncStatePanel` 从 profile modal 扩展到作品架类白底 panel;`CustomWorldCreationHub.tsx` 的作品架主体现在也统一走 `loadingState / emptyState / children` 三段 slot,但 error + 重试继续留在业务层外侧,不把共享组件扩成“banner + retry + content”全能状态机。后续白底作品架或列表 panel 若只是互斥的 `loading / empty / content`,优先直接复用这套骨架。 - 决策:`CopyFeedbackButton.tsx` 的 `actionSurface` 分支继续收口到 `PlatformActionButton`,`pill` 分支继续保留 `PlatformPillBadge` 风格;复制反馈按钮不再直接调用 `getPlatformActionButtonClassName` 手拼平台按钮基础 chrome。后续同类“复制状态机 + 平台动作按钮”组合优先直接复用 `CopyFeedbackButton`,不要在业务页重新混写图标、文案、aria 和动作按钮 class。 -- 决策:白底 / 暗色面板里的轻量空态和普通 CTA 继续向共享组件收口。`PuzzleResultView.tsx` 的缺草稿提示、`RpgCreationAssetDebugPanel.tsx` 的空诊断提示、`VisualNovelEntityGrid` 的空实体列表都改为 `PlatformEmptyState`,`Match3DResultView.tsx` 的引用素材列表直接复用 `PlatformAssetPickerGrid` 自己的空态;`AdventureEntityModal.tsx` 的私聊按钮、`InventoryPanel.tsx` 的锻造 / 合成按钮,以及 `RpgCreationRoleAssetStudioModalImpl.tsx`、`RpgCreationEntityEditorShared.tsx` 里的局部 `ActionButton` 包装层都改为委托 `PlatformActionButton surface="editorDark"`。后续白底子面板里的只读空态优先使用 `PlatformEmptyState surface="subpanel" size="inline"`;暗色编辑 / 运行面板里的普通动作优先使用 `PlatformActionButton surface="editorDark"`,若业务仍需 `stopPropagation`、tone 映射或局部排版,可保留薄包装层,但不要再直接写原生 ` - +
{isNpcChatMode && canRefreshOptions && !shouldHideChoiceUi ? ( - + ) : !isNpcChatMode && canRefreshOptions && !shouldHideChoiceUi ? ( - + ) : null} {isNpcChatMode ? ( - + ) : null}
diff --git a/src/components/rpg-runtime-panels/RpgAdventurePanelOverlays.tsx b/src/components/rpg-runtime-panels/RpgAdventurePanelOverlays.tsx index f9f8558b..671bce36 100644 --- a/src/components/rpg-runtime-panels/RpgAdventurePanelOverlays.tsx +++ b/src/components/rpg-runtime-panels/RpgAdventurePanelOverlays.tsx @@ -45,6 +45,7 @@ import { getNineSliceStyle, UI_CHROME, } from '../../uiAssets'; +import { PlatformActionButton } from '../common/PlatformActionButton'; import { PlatformEmptyState } from '../common/PlatformEmptyState'; import { PlatformPillBadge } from '../common/PlatformPillBadge'; import type { PlatformPillBadgeTone } from '../common/platformPillBadgeModel'; @@ -1027,16 +1028,19 @@ export function RpgAdventurePanelOverlays({
{goalStack.activeGoal?.sourceKind === 'quest' || goalStack.immediateStepGoal?.sourceKind === 'quest' ? ( - + ) : null} - + {saveAndExitDisabled && (