狀態與回饋系統

載入指示組

四款載入指示 React 元件:圓環、圓點、長條與品牌標誌描邊循環,可調尺寸、速度與標籤,減少動態偏好時改為靜態圖示加文字。

一個元件涵蓋四種常用的載入指示:等速旋轉的圓環、依序上浮的三點、高低起伏的長條,以及沿品牌曲線來回描邊的標誌。圖形預設繼承文字色,放進按鈕、表格列或整頁載入區都能直接跟上周圍的配色;標籤預設只給螢幕閱讀器,也可以改成顯示在圖形旁。使用者開啟「減少動態效果」時所有循環停止,改顯示靜態圖示並強制露出文字。

把這個效果裝進你的專案

在專案資料夾執行指令,CLI 會加入原始碼與依賴套件,再依下方使用範例引用元件。

npx webberui@latest add spinner-set

還沒有專案,或安裝遇到問題?看快速開始 →

Playground

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

0.8
編輯中的呼叫預設屬性
<SpinnerSet/>

完整範例包含預覽的排版與資料。先安裝元件,再把範例檔貼入你的專案。

安裝

npx webberui@latest add https://webberui.com/r/spinner-set.json

或在 components.json 設定 registries 後,改用 @webberui/spinner-set 安裝。

使用

import { SpinnerSet } from "@/components/ui/spinner-set";

<SpinnerSet />
<SpinnerSet variant="dots" size="lg" showLabel label="正在同步" />
<SpinnerSet variant="brand" size={32} speed={2} />

<button type="button" aria-busy={saving} disabled={saving}>
  {saving ? <SpinnerSet size="xs" label="儲存中" /> : null}
  儲存
</button>

Props

Prop型別預設值說明
variant"ring" | "dots" | "bars" | "brand""ring"指示樣式:圓環、三點、長條或品牌標誌描邊
size"xs" | "sm" | "md" | "lg" | number"md"邊長:xs 12px、sm 16px、md 20px、lg 28px,或直接給像素數字
labelstring"載入中"載入文字;預設只給螢幕閱讀器
showLabelbooleanfalse在圖形旁顯示 label 文字
speednumber依變體循環一次的秒數;ring 0.8、dots 1.2、bars 1.0、brand 1.6,給值後四款共用
colorstringcurrentColor圖形顏色;未提供時讀 --wb-spinner-set-color,再退回 currentColor
brandPathstringWebberUI 品牌曲線brand 變體描邊用的 SVG path(64×64 座標系)
classNamestring—透傳到最外層容器

另外匯出型別 SpinnerSetVariant 與 SpinnerSetSize。

細節

  • 圓環是一個 25% 透明的完整圓加一段 25% 長的弧,弧長以 pathLength=100 表達,換尺寸不必重算。
  • 三點每點延遲 speed/6、長條每條延遲 speed/8,所以調整 speed 時節奏比例不變。
  • brand 變體以 pathLength 0→1→0 來回描邊;描邊粗細依尺寸自動加粗,12px 時仍看得清楚。
  • 根元素會寫入 --wb-spinner-set-duration(等於 speed 秒數),方便你在外部 CSS 讓其他動畫跟同一個節奏。
  • 顏色變數 --wb-spinner-set-color 可在主題或父層設定;傳入 color prop 時以 prop 為準。

可及性

  • 根元素為 role="status"、aria-live="polite",label 文字位於其中,螢幕閱讀器會朗讀載入狀態
  • 圖形本身設 aria-hidden,不會被朗讀成多餘的圖片或形狀
  • 放進按鈕時,請在按鈕上設定 aria-busy 並停用,避免重複送出
  • 使用者系統開啟「減少動態效果」時,所有循環停止:ring 改為靜態 Loader 圖示、dots 與 bars 顯示靜態三點與四條、brand 顯示完整描好的標誌,並強制顯示 label 文字