继续收口详情页头部动作组合
沉淀 PlatformDetailTopbar 与 PlatformDetailShareActions 共享骨架 接入 RPG 世界详情与公开作品详情的返回复制分享动作组合 补充测试护栏与文档决策记录
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
import {
|
||||
ArrowLeft,
|
||||
ChevronLeft,
|
||||
ChevronRight,
|
||||
CircleHelp,
|
||||
Clock3,
|
||||
Copy,
|
||||
Gamepad2,
|
||||
GitFork,
|
||||
Heart,
|
||||
@@ -16,8 +14,9 @@ import { useEffect, useMemo, useState } from 'react';
|
||||
|
||||
import type { PublicUserSummary } from '../../../packages/shared/src/contracts/auth';
|
||||
import { buildPublicWorkDetailUrl } from '../../routing/appPageRoutes';
|
||||
import { CopyCodeButton } from '../common/CopyCodeButton';
|
||||
import { PlatformActionButton } from '../common/PlatformActionButton';
|
||||
import { PlatformDetailShareActions } from '../common/PlatformDetailShareActions';
|
||||
import { PlatformDetailTopbar } from '../common/PlatformDetailTopbar';
|
||||
import { PlatformIconButton } from '../common/PlatformIconButton';
|
||||
import { PlatformPillBadge } from '../common/PlatformPillBadge';
|
||||
import { PlatformStatusMessage } from '../common/PlatformStatusMessage';
|
||||
@@ -254,24 +253,27 @@ export function PlatformWorkDetailView({
|
||||
|
||||
return (
|
||||
<div className="platform-work-detail">
|
||||
<div className="platform-work-detail__topbar">
|
||||
<PlatformIconButton
|
||||
label="返回"
|
||||
className="platform-work-detail__icon-button"
|
||||
onClick={onBack}
|
||||
title="返回"
|
||||
icon={<ArrowLeft className="h-6 w-6" />}
|
||||
/>
|
||||
<div className="platform-work-detail__title">详情</div>
|
||||
<PlatformIconButton
|
||||
label="分享"
|
||||
className="platform-work-detail__icon-button"
|
||||
onClick={sharePublicWork}
|
||||
disabled={!publicWorkCode}
|
||||
title="分享"
|
||||
icon={<Share2 className="h-5 w-5" />}
|
||||
/>
|
||||
</div>
|
||||
<PlatformDetailTopbar
|
||||
onBack={onBack}
|
||||
backVariant="icon"
|
||||
title={
|
||||
<div className="platform-work-detail__title">
|
||||
详情
|
||||
</div>
|
||||
}
|
||||
className="platform-work-detail__topbar"
|
||||
backButtonClassName="platform-work-detail__icon-button"
|
||||
trailing={
|
||||
<PlatformIconButton
|
||||
label="分享"
|
||||
className="platform-work-detail__icon-button"
|
||||
onClick={sharePublicWork}
|
||||
disabled={!publicWorkCode}
|
||||
title="分享"
|
||||
icon={<Share2 className="h-5 w-5" />}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
|
||||
<div className="platform-work-detail__scroll">
|
||||
<section className="platform-work-detail__cover">
|
||||
@@ -439,22 +441,18 @@ export function PlatformWorkDetailView({
|
||||
))}
|
||||
</div>
|
||||
<p className="platform-work-detail__copy">{entry.summaryText}</p>
|
||||
{publicWorkCode ? (
|
||||
<CopyCodeButton
|
||||
state={copyState}
|
||||
code={publicWorkCode}
|
||||
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" />}
|
||||
copiedIcon={<Copy className="h-4 w-4" />}
|
||||
/>
|
||||
) : null}
|
||||
<PlatformDetailShareActions
|
||||
workCode={publicWorkCode}
|
||||
copyState={copyState}
|
||||
onCopyWorkCode={copyPublicWorkCode}
|
||||
shareState={shareState}
|
||||
onShare={sharePublicWork}
|
||||
shareAriaLabel={`分享作品 ${entry.worldName}`}
|
||||
leading={null}
|
||||
showShareAction={false}
|
||||
variant="solid"
|
||||
className="platform-work-detail__code"
|
||||
/>
|
||||
{shareState !== 'idle' ? (
|
||||
<PlatformStatusMessage
|
||||
tone={shareState === 'copied' ? 'success' : 'error'}
|
||||
|
||||
Reference in New Issue
Block a user