State UI Kit

全状态通用组件库展示平台

状态快速导航 (Overview)
Loading 🔄 Spinner 🦴 Skeleton 📦 Empty ⚠️ Error 🧭 404 Lost 💥 500 Server 📡 Offline 🛠️ Maintenance
01 · Loading
资源同步中... 76%
预计剩余 3 秒

Loading (进度条加载)

状态定义
具有可预期时长或已知文件体量的异步传输状态。
触发场景
大文件上传/下载、应用首次全量资源预载、批处理任务执行时。
恢复与交互
LoadingProgressBar.tsx React / Vue
import { ProgressBar } from '@ui/state-kit';

<ProgressBar
  value={progress}
  striped
  animated
  showInfo={true}
  onCancel={() => abortController.abort()}
/>
02 · Spinner
数据提交中,请稍候...

Spinner (旋转等待)

状态定义
轻量级、不可预测具体百分比的瞬态阻塞指示。
触发场景
表单提交、按钮点击即时反馈、局部数据片段异步查询。
恢复与交互
ButtonSpinner.tsx Component
<Button loading={isSubmitting} disabled={isSubmitting}>
  {isSubmitting ? (
    <Spinner size="sm" label="处理中..." />
  ) : (
    '确认提交'
  )}
</Button>
03 · Skeleton

Skeleton (骨架占位屏)

状态定义
首屏渲染时预测真实排版结构的灰度动效占位。
触发场景
页面初始加载、信息流滚动翻页、卡片列表获取远程详情时。
恢复与交互
自动响应数据流入,无需主动干预
CardSkeleton.vue Template
<template>
  <SkeletonGroup :loading="isLoading" animated>
    <template #skeleton>
      <SkeletonAvatar size="md" />
      <SkeletonText :rows="3" />
    </template>
    <RealCardContent :data="data" />
  </SkeletonGroup>
</template>
04 · Empty
📭
暂无相关数据
当前列表尚未添加任何条目,点击下方按钮开启新征程吧

Empty (内容空状态)

状态定义
请求成功但结果集合为空,需引导用户产生首个行为。
触发场景
搜索无匹配结果、新注册用户无历史记录、消息收件箱清空。
恢复与引导操作
EmptyState.tsx React
<Empty
  image="inbox"
  title="暂无数据"
  description="尝试调整筛选条件或创建一条新纪录"
>
  <Button type="primary" onClick={handleCreate}>立即新建</Button>
</Empty>
05 · Error
⛔ 操作执行失败
由于您的权限组已发生变更,本次批量更新未生效。
ERROR_CODE: 403_INSUFFICIENT_SCOPE

Error (业务错误提示)

状态定义
带有高对比红边与明确错误语义的非致命阻断提示。
触发场景
表单校验未通过、接口参数越界、无操作权限、业务逻辑冲突。
恢复操作
AlertError.tsx Feedback
<Alert
  type="error"
  showIcon
  message="操作执行失败"
  description={error.message}
  action={<Button size="small" onClick={retry}>重试</Button>}
/>
06 · 404 Not Found
404
迷失在数字荒原
您访问的页面可能已被移除、重命名或临时不可用。

404 (页面未找到)

状态定义
路由失配或目标静态/动态资源已被彻底销毁。
触发场景
输入了错误的 URL、点击了过期失效的外链、资源被物理删除。
恢复操作
返回控制台首页
NotFoundRoute.tsx Router View
<Result
  status="404"
  title="404"
  subTitle="抱歉,您访问的页面不存在。"
  extra={<Link to="/"><Button type="primary">返回主页</Button></Link>}
/>
07 · 500 Server Error
🖥️ FAIL
500 Internal Error
后端服务出现异常波动,工程师正在全力抢修

500 (服务器内部故障)

状态定义
服务端处理请求时遭遇未捕获异常或网关超时 (502/504)。
触发场景
数据库连接池耗尽、微服务崩溃、高并发熔断降级。
恢复操作
ErrorBoundary.tsx Crash Guard
class ServerErrorBoundary extends React.Component {
  render() {
    if (this.state.hasError) {
      return <ErrorScreen code={500} onRetry={this.handleReload} />;
    }
    return this.props.children;
  }
}
08 · Offline
📡
网络连接已断开
请检查您的 Wi-Fi 或蜂窝网络设置,应用将在连接恢复后自动同步。

Offline (离线与断网)

状态定义
浏览器宿主环境侦测到网络接口离线 (`navigator.onLine === false`)。
触发场景
移动端进入电梯/隧道、飞行模式开启、DNS 解析失败。
恢复操作
useNetwork.ts Hook / Composition
const { isOnline } = useNetworkStatus();

if (!isOnline) {
  return (
    <OfflineBanner
      bannerType="floating"
      onReconnect={syncOfflineCache}
    />
  );
}
09 · Maintenance
⚙️
系统例行维护升级中
核心数据库正在进行无损迁移,预计恢复倒计时:
02 Hours
45 Mins
30 Secs

Maintenance (系统维护中)

状态定义
计划内架构割接、底层数据迁移或重大版本发布时的全站公告状态。
触发场景
深夜数据库维护、发布停机更新、机房网络切割。
恢复操作
MaintenancePage.vue Template
<MaintenanceGuard
  :estimated-end="plannedEndTime"
  allow-whitelist-ip
  @notify="handleUserSubscribe"
>
  <AppRouterView />
</MaintenanceGuard>