WebberUI

KPI 迷你趨勢卡

數值滾動進場、內嵌 sparkline 折線與漲跌徽章的指標卡。

儀表板常用的 KPI 指標卡:進入視窗時大數字由 0 滾動累加、SVG sparkline 以描邊動畫畫出趨勢曲線並淡入線下漸層,右上角彈出綠升紅降的百分比徽章,卡片依序 stagger 進場。

載入預覽⋯

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

1.4
1.1
0.12
<KpiSparklineCards />

安裝

npx shadcn@latest add https://webberui.com/r/kpi-sparkline-cards.json

或在 components.json 設定 registries 後,改用 @webberui/kpi-sparkline-cards 安裝。

安裝依賴後,從 registry JSON(/r/kpi-sparkline-cards.jsonfiles[0].content)複製 kpi-sparkline-cards.tsx 原始碼到你的 components/ui/ 目錄:

npm install motion lucide-react clsx tailwind-merge

使用

import { KpiSparklineCards } from "@/components/ui/kpi-sparkline-cards";

<KpiSparklineCards
  items={[
    {
      label: "本月營收",
      value: 1284500,
      delta: 12.4,
      prefix: "NT$",
      series: [42, 48, 45, 52, 58, 63, 70, 76],
    },
    {
      label: "轉換率",
      value: 3.62,
      delta: -1.8,
      suffix: "%",
      decimals: 2,
      series: [52, 50, 47, 44, 41, 38],
    },
  ]}
/>

Props

Prop型別預設值說明
itemsKpiSparklineItem[]KPI 指標卡的資料清單
countDurationnumber1.4大數字滾動累加的時長(秒)
drawDurationnumber1.1sparkline 描邊動畫的時長(秒)
staggernumber0.12卡片依序進場的間隔(秒)
classNamestring透傳到外層網格容器

KpiSparklineItem 欄位:

欄位型別預設值說明
labelstring指標名稱,顯示於卡片左上角
valuenumber指標數值,進場時由 0 滾動累加至此值
deltanumber相較前期的漲跌百分比:正值綠色、負值紅色、0 為中性灰
seriesnumber[]迷你趨勢折線的資料數列(建議至少 6 個點)
prefixstring數值前綴,例如 "NT$"
suffixstring數值後綴,例如 "%"
decimalsnumber0數值顯示的小數位數

可及性

  • 使用者系統開啟「減少動態效果」時,數字直接顯示最終值、折線立即完整呈現,不播放滾動與描邊動畫
  • 每張卡片提供 sr-only 完整摘要(指標名稱、最終數值與漲跌方向),動畫中的數字與 sparkline 對輔助科技隱藏(aria-hidden),避免朗讀跳動中的過渡值
  • 漲跌不單靠顏色傳達:徽章同時以箭頭方向圖示與文字百分比表達趨勢
  • 大數字使用 tabular-nums,滾動累加過程中版面寬度穩定不抖動

On this page