iter(g284): 新增 progressRing 环形进度组件

This commit is contained in:
HIsheR
2026-10-26 23:12:33 +08:00
parent f20f673e76
commit c4384be959
12 changed files with 239 additions and 11 deletions
+28 -1
View File
@@ -1,6 +1,6 @@
# @ui-arch 组件库 Agent 文档(无图形版)
> 自动生成于 2026-10-26T15:08:10.710Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 自动生成于 2026-10-26T15:11:40.469Z,数据源:各包 ua.manifest.json,勿手改。人类版文档站:apps/docs/index.html。
> 组件 = 普通函数,传 props 返回 DOM;状态用 signal 双向绑定:读 signal() 写 signal(v)。
## 快速上手
@@ -2427,6 +2427,32 @@ heatmap({ values: activity, weeks: 12, formatValue: (n, d) => d + ' 提交 ' + n
现场演示:apps/docs/demo.html#sec-heat
### progressRing — 环形进度 ProgressRing
参数:
- value:number | Signal<number> —— 当前进度 0-100;超出范围自动夹取,信号变化时自动重绘
- size:number —— 外径(px);缺省 96
- thickness:number —— 环宽(px);缺省 8
- showText:boolean —— 是否显示中心文字;缺省 true(关掉时请自行保证 aria 可读)
- label:string —— 中心文字;缺省「N%」
示例:
```
progressRing({ value: pct, size: 96 })
```
手把手:
1. value 给数字就是静态环,给信号就是活环:不用自己算弧长,组件按 0-100 换算 dasharray
2. 0 点固定在 12 点方向顺时针走,和进度条的心理模型一致,不需要额外传旋转参数
3. 要放进表格或卡片角落就用 size: 56 + showText: false 的小环,文字由附近的主体数字承担
4. 换色在父级设 color:进度弧读 currentColor,底环固定描边色(--ua-color-border),不引入第二个色源
5. 这是个「环形进度条」,不是仪表盘:只表达 0-100 单一进度,多段占比请用饼图类组件
现场演示:apps/docs/demo.html#sec-ring
API 速览:
- button(props):按钮,variant 三档视觉强度,disabled / loading 支持布尔或信号动态同步(loading 转圈并禁点),onClick 点击回调
@@ -2516,6 +2542,7 @@ API 速览:
- relativeTime(props):把时间戳渲染成「3 分钟前」并自动刷新,超阈值改显示绝对日期,title 恒给精确值
- sparkline(props):迷你趋势线,把数值序列压成折线(可填充 + 末点标记),无坐标轴无交互
- heatmap(props):日历热力图,按周列 × 星期行铺格子、四档浓度表示当天数量,悬停看明细
- progressRing(props):环形进度,SVG 双圆靠 dasharray 画弧 + 中心百分比,value 可传信号自动重绘
一行用法: