Spinner
Spinner 从 HeroUI v2 到 v3 的迁移指南。
完整的 API 参考、样式指南与高级示例请参阅 v3 Spinner 文档。本指南只关注从 HeroUI v2 的迁移。
结构变化
在 v2 中,Spinner 支持多种变体与标签:
import { Spinner } from "@lenso/ui";
export default function App() { return <Spinner variant="default" label="Loading..." color="primary" />;}在 v3 中,Spinner 已简化为单一圆形变体:
import { Spinner } from "@lenso/ui";
export default function App() { return <Spinner color="accent" />;}主要变化
1. 组件行为
v2: 支持多种变体(default、simple、gradient、wave、dots、spinner)以及标签
v3: 仅保留单一圆形旋转变体,不再支持标签
2. Prop 变更
| v2 prop | v3 位置 | 说明 |
|---|---|---|
label | — | 如有需要,请使用单独的元素手动添加标签 |
variant | — | 仅提供一种 spinner 变体 |
labelColor | — | 不再支持标签 |
classNames | — | 直接使用 className prop |
size | size | 取值变化:"sm" | "md" | "lg" → "sm" | "md" | "lg" | "xl" |
color | color | 取值有变化(详见下文) |
3. 颜色值变化
"default"→"current"(继承当前文本颜色)"primary"→"accent""secondary"→ 已移除(请改用"current"或"accent")"success"、"warning"、"danger"→ 仍可使用
迁移示例
带标签
{/* Simple label */}<Spinner label="Loading..." />
{/* With label color and custom styling */}<Spinner label="Loading..." labelColor="primary" classNames={{ label: "text-foreground mt-4" }}/>尺寸与颜色
{/* Sizes */}<div className="flex gap-4"> <Spinner size="sm" /> <Spinner size="md" /> <Spinner size="lg" /></div>
{/* Colors */}<div className="flex gap-4"> <Spinner color="default" /> <Spinner color="primary" /> <Spinner color="secondary" /> <Spinner color="success" /> <Spinner color="warning" /> <Spinner color="danger" /></div>变体(已移除)
<div className="flex gap-4"> <Spinner variant="default" /> <Spinner variant="simple" /> <Spinner variant="gradient" /> <Spinner variant="wave" /> <Spinner variant="dots" /> <Spinner variant="spinner" /></div>颜色映射
迁移颜色时,可参考以下映射:
| v2 颜色 | v3 颜色 | 说明 |
|---|---|---|
"default" | "current" | 继承当前文本颜色 |
"primary" | "accent" | 使用强调色 |
"secondary" | "current" 或 "accent" | 改用当前色或强调色 |
"success" | "success" | 不变 |
"warning" | "warning" | 不变 |
"danger" | "danger" | 不变 |
总结
- 不再支持标签:移除
labelprop——如有需要请手动添加标签 - 不再有变体:移除
variantprop——仅保留单一圆形 spinner - 不再有标签颜色:移除
labelColorprop——请自行为标签设置样式 - 颜色值变化:
"default"→"current"、"primary"→"accent"、"secondary"已移除 - 新增尺寸:新增
"xl"尺寸可选 - 移除 classNames:直接使用
classNameprop