feat(ux): 空状态组件,替换各页面空白提示

新增 EmptyState 组件,ProjectPage 暂无任务时显示带操作按钮的
友好提示,AssetPreview 暂无素材时显示引导文案。
This commit is contained in:
2026-05-24 21:23:02 +08:00
parent f063ec564e
commit aaf846a60d
3 changed files with 53 additions and 9 deletions
+8 -4
View File
@@ -1,10 +1,11 @@
import { useEffect, useState } from 'react'
import { Link, useParams } from 'react-router-dom'
import { Link, useNavigate, useParams } from 'react-router-dom'
import { useProjectStore } from '../stores/project'
import { getTasks } from '../api/project'
import type { Task } from '../api/types'
import StyleSelector from '../components/StyleSelector'
import Skeleton from '../components/Skeleton'
import EmptyState from '../components/EmptyState'
const STATUS_LABELS: Record<string, { label: string; color: string }> = {
pending: { label: '等待中', color: 'var(--text-muted)' },
@@ -15,6 +16,7 @@ const STATUS_LABELS: Record<string, { label: string; color: string }> = {
export default function ProjectPage() {
const { projectId = 'proj-default' } = useParams()
const navigate = useNavigate()
const {
name,
style,
@@ -95,9 +97,11 @@ export default function ProjectPage() {
</div>
{tasks.length === 0 ? (
<p style={{ color: 'var(--text-muted)', textAlign: 'center', padding: 32 }}>
暂无任务
</p>
<EmptyState
title="暂无任务"
description="点击「新建生成」开始创建你的第一个游戏素材"
action={{ label: '新建生成', onClick: () => navigate(`/projects/${projectId}/generate`) }}
/>
) : (
<table style={{ width: '100%', borderCollapse: 'collapse' }}>
<thead>