import { useMemo, useState } from 'react'; import type { CustomWorldWorkSummary } from '../../../packages/shared/src/contracts/customWorldAgent'; import { CustomWorldCreationStartCard } from './CustomWorldCreationStartCard'; import { CustomWorldWorkCard } from './CustomWorldWorkCard'; import { type CustomWorldWorkFilter, CustomWorldWorkTabs, } from './CustomWorldWorkTabs'; type CustomWorldCreationHubProps = { items: CustomWorldWorkSummary[]; loading: boolean; error: string | null; onBack: () => void; onRetry: () => void; onCreateNew: () => void; onResumeDraft: (sessionId: string) => void; onEnterPublished: (profileId: string) => void; }; function EmptyState({ title }: { title: string }) { return (
{title}
); } export function CustomWorldCreationHub({ items, loading, error, onBack, onRetry, onCreateNew, onResumeDraft, onEnterPublished, }: CustomWorldCreationHubProps) { const [activeFilter, setActiveFilter] = useState('all'); const draftCount = items.filter((item) => item.status === 'draft').length; const publishedCount = items.filter( (item) => item.status === 'published', ).length; const filteredItems = useMemo( () => items.filter((item) => activeFilter === 'all' ? true : item.status === activeFilter, ), [activeFilter, items], ); return (
创作中心
草稿 {draftCount} 已发布 {publishedCount}
{error ? (
{error}
) : null} {loading ? (
{Array.from({ length: 3 }).map((_, index) => (
))}
) : filteredItems.length > 0 ? (
{filteredItems.map((item) => ( { if (item.status === 'draft' && item.sessionId) { onResumeDraft(item.sessionId); return; } if (item.status === 'published' && item.profileId) { onEnterPublished(item.profileId); } }} /> ))}
) : items.length === 0 ? ( ) : ( )}
); } export type { CustomWorldWorkFilter };