iter(g335): 输入类组件补可访问名
This commit is contained in:
@@ -3401,6 +3401,15 @@
|
||||
"motivation": "对比度门禁有「正文 × 强调淡底」,却没有「正文 / 语义色 × 语义三色淡底」——而提示条、失败步骤、删除悬停底的文字恰恰压在这些淡底上。补上配对后立刻抓到一处真实不达标:亮色警告色 #9a6b1f 压在自家 10% 淡底上只有 4.12(AA 要 4.5),也就是最需要被读清的警告条文字反而不合格。",
|
||||
"acceptance": "① contrast-audit 的 PAIRS 增加 6 组:正文与语义色各自 × 危险 / 成功 / 警告淡底(阈值 4.5),淡底先压到页面底再求值;② 亮色警告色加深到 #8a5d15(页面底 5.74、警告淡底 5.01),tokens.css 与 tokens.json 双源同步(verify 的名字与值校验要过);③ audit:contrast 全部 24 组配对在亮 / 暗 × 常规 / 高对比四套主题下达标,audit:surface 阶梯仍全部达标(淡底变深只会变明显);④ AGENTS 的门禁说明同步到 24 组;⑤ npm run check 全绿。",
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "g335",
|
||||
"domain": "tune",
|
||||
"status": "open",
|
||||
"title": "输入类组件补可访问名:读屏不再只念「编辑框 / 滑块」",
|
||||
"motivation": "库内 13 个组件都有 ariaLabel 入参(switchButton / pagination / jsonViewer / codeBlock …),偏偏最常用的四个输入件没有:textField 与 textarea 的控件上没有可访问名(只有清空 / 显隐按钮有),读屏进去只念「编辑框」;slider 的原生 range 无名,区间模式两个滑块更是完全同名,读屏分不出上下限;inputNumber 的「数字输入」写死,业务上没法改成「数量 / 单价」。",
|
||||
"acceptance": "① TextFieldProps / TextareaProps / InputNumberProps / SliderProps 增可选 ariaLabel,落成控件 aria-label(缺省沿用「文本输入」「多行文本」「数字输入」「数值」);② slider 区间模式自动拼「下限 / 上限」,两个 range 各有名字;③ inputNumber 的写死字符串改成可覆盖,与其余组件同一口径;④ 四份清单文档补 ariaLabel 参数行(verify 的双向字段校验要过);⑤ npm run check 全绿。",
|
||||
"notes": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+21
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "ui-arch-registry-index/0.1",
|
||||
"generatedAt": "2026-10-26T18:05:09.130Z",
|
||||
"generatedAt": "2026-10-26T18:08:56.364Z",
|
||||
"repoRoot": ".",
|
||||
"packages": [
|
||||
{
|
||||
@@ -444,6 +444,11 @@
|
||||
"n": "password",
|
||||
"t": "boolean",
|
||||
"d": "密码框:原生打点渲染,内置「显示/隐藏」切换按钮(aria-label 同步);缺省普通文本"
|
||||
},
|
||||
{
|
||||
"n": "ariaLabel",
|
||||
"t": "string",
|
||||
"d": "无可见 label 时的可访问名(如「收件人」);缺省「文本输入」"
|
||||
}
|
||||
],
|
||||
"example": "const name = signal(''); const el = textField({ value: name, placeholder: '输入名字…', onInput: (v) => console.log(v) })",
|
||||
@@ -512,6 +517,11 @@
|
||||
"n": "size",
|
||||
"t": "'sm' | 'md' | 'lg'",
|
||||
"d": "高度档位:sm 紧凑 / md 默认 / lg 大触控目标,走 --ua-control-h-* 三档;缺省 md"
|
||||
},
|
||||
{
|
||||
"n": "ariaLabel",
|
||||
"t": "string",
|
||||
"d": "无可见 label 时的可访问名(如「数量」);缺省「数字输入」"
|
||||
}
|
||||
],
|
||||
"example": "const qty = signal(1); const el = inputNumber({ value: qty, min: 1, max: 99, onChange: (v) => console.log(v) })",
|
||||
@@ -574,6 +584,11 @@
|
||||
"n": "autosize",
|
||||
"t": "boolean | { minRows?, maxRows? }",
|
||||
"d": "自适应内容高度:true 跟随内容涨落,对象态钳最小/最大行数,超出 maxRows 内部滚动;缺省固定行数"
|
||||
},
|
||||
{
|
||||
"n": "ariaLabel",
|
||||
"t": "string",
|
||||
"d": "无可见 label 时的可访问名(如「备注」);缺省「多行文本」"
|
||||
}
|
||||
],
|
||||
"example": "const bio = signal(''); textarea({ value: bio, rows: 4, placeholder: '一句话介绍…' })",
|
||||
@@ -651,6 +666,11 @@
|
||||
"t": "(value: number) => void",
|
||||
"k": 1,
|
||||
"d": "拖动回调"
|
||||
},
|
||||
{
|
||||
"n": "ariaLabel",
|
||||
"t": "string",
|
||||
"d": "无可见 label 时的可访问名(如「音量」);缺省「数值」,区间模式自动带「下限 / 上限」"
|
||||
}
|
||||
],
|
||||
"example": "const vol = signal(40); slider({ value: vol, min: 0, max: 100, step: 5, onChange: (v) => console.log(v) })",
|
||||
|
||||
Reference in New Issue
Block a user