空状态

图标 + 标题 + 描述 + 可选动作按钮。类型预设:--error / --404 / --search / --maintenance / --network,自动改图标底色与基调。

暂无收藏

你还没有收藏任何作品,去逛逛找点喜欢的吧。

加载失败

数据获取异常,请稍后重试

404

你访问的页面不存在或已被移除

<div class="demo-row" style="align-items:flex-start;gap:16px">  <div class="empty empty--illustrated" style="flex:1;min-width:200px">    <div class="empty-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-6l-2 3h-4l-2-3H2"/><path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/></svg></div>    <p class="empty-title">暂无收藏</p>    <p class="empty-desc">你还没有收藏任何作品,去逛逛找点喜欢的吧。</p>    <div class="empty-action"><button class="btn btn-primary btn-sm">去发现</button></div>  </div>  <div class="empty empty--search" style="flex:1;min-width:200px">    <div class="empty-icon"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg></div>    <p class="empty-title">未找到匹配结果</p>    <p class="empty-desc">尝试调整搜索关键词或清除筛选条件</p>    <div class="empty-action"><button class="btn btn-sm">清除筛选</button></div>  </div></div><div class="demo-row" style="align-items:flex-start;gap:16px;margin-top:16px">  <div class="empty empty--error" style="flex:1;min-width:200px">    <div class="empty-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg></div>    <p class="empty-title">加载失败</p>    <p class="empty-desc">数据获取异常,请稍后重试</p>    <div class="empty-action"><button class="btn btn-sm btn-primary">重试</button></div>  </div>  <div class="empty empty--404 empty--illustrated" style="flex:1;min-width:200px">    <h3 class="empty-title">404</h3>    <p class="empty-desc">你访问的页面不存在或已被移除</p>    <div class="empty-action"><button class="btn btn-sm">返回首页</button></div>  </div></div>

安装

bun add @icen.ai/ui

一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):

import '@icen.ai/ui/kit/empty';

也可以用脚手架直接打印引入行:

bunx --bun @icen.ai/ui add empty

Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/empty.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。

用法

<div class="empty [.empty--sm|.empty--lg]     [.empty--error|.empty--404|.empty--search|.empty--maintenance|.empty--network]     [.empty--illustrated]">  <div class="empty-icon">…svg…</div>  <p class="empty-title">暂无数据</p>  <p class="empty-desc">描述文字</p>  <div class="empty-action"><button class="btn btn-primary btn-sm">动作</button></div></div>