Files
aurora-admin/.design_library/kole-ui-mobile/components/mobile-stepper.json
T
aurora-admin f1fbfc2ddb
Regression / regression (push) Canceled after 0s
feat(品牌标识): 几何 K 图标(favicon/顶栏标记/theme-color) + 并行会话成果入库
## 品牌标识(本次会话)

起因:品牌此前没有任何图形标识 —— 唯一 favicon 是内联 data-URI 里的字母「A」,
那是 v2.0.0「Aurora Admin → Kole UI」改名漏掉的一处(PC 顶栏也是「A」,
移动端站已是「K」;移动端文档站则完全没有 favicon)。

- 几何:24 网格三个互不接触的笔画(竖 + 两斜),圆头描边;
  描边 2.25 → 16px 标签页尺寸下正好 1.5px = 规范原文「描边1.5px」
- 取色分两套(刻意):favicon 硬编码品牌蓝/白(渲染在浏览器标签栏,不继承 kole-dark);
  顶栏标记走 currentColor(实测暗色下自动转 rgb(20,22,28))
- 新增 theme-color 双条(light #FFFFFF / dark #1C1F26,取 --kole-color-card-bg)
- 修 site/app.js hero 标语 KOLE ADMIN → KOLE UI(改名变形残留)
- 移动端 7 个模板补 favicon(此前计数 0)

验收:门禁 9 条全 OK(site-routing/site-routes/mobile-docs/mobile-site/isolation/
theme/nav/i18n/icons);PC 回归 1464/1464 · 移动端 807/807,各连跑 8 次一致;
两端 favicon 405 字节逐字节一致;PC 站控制台错误 1→0。

## 并行会话成果(本次一并入库)

- 图标系统:2576 图标(TDesign/Element Plus,MIT)+ 11 端注入 + 5 个构建门禁工具
  + IconPreview 预览页 + ICON-SPEC.md 冻结规格
- 移动端平台:47 组件 × 6 端 + 文档站 53 页 + 隔离门禁
- PC 组件:103 个大后台组件 / 组件11 批次
- uni-app:PC 端试点 + 移动端端实现 + 真实编译验证

## 工程

- .gitignore 补 .scratch/ 与 .zcode-preexisting-*.txt(会话中间产物,实测 9.1MB,不入库)
- CHANGELOG 补品牌标识条目
- ROADMAP 登 S8-P4(品牌标识任务包 + og:image/apple-touch-icon 未做部分)
2026-09-21 10:05:48 +08:00

244 lines
7.9 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schemaVersion": 1,
"sourceKind": "authored-spec",
"provenance": "authored-in-repo",
"specFile": "spec/移动端规格.md",
"specSection": "30 · 步进器 Stepper",
"confidence": "high",
"slug": "mobile-stepper",
"name": "步进器 Stepper",
"semanticTypeCandidates": [
"stepper",
"spinbutton",
"quantity-input"
],
"variantDimensions": [
{
"name": "size",
"values": [
"default",
"small"
]
},
{
"name": "round",
"values": [
"false",
"true"
]
}
],
"representativeVariants": [
{
"size": "default",
"round": "false",
"label": "默认(控件高 44px,方角嵌在表单里)"
},
{
"size": "default",
"round": "true",
"label": "全圆角(购物车等轻量场合)"
},
{
"size": "small",
"round": "false",
"label": "紧凑(视觉 36px,热区外扩回 44px)"
}
],
"anatomy": {
"stepper": "根元素,一行里放进「减号 + 值 + 加号」",
"minus": "减号按钮,到达 min 时置灰",
"value": "值区;editable=true 时是可聚焦的数字输入框,否则是纯文本",
"plus": "加号按钮,到达 max 时置灰",
"unit": "可选单位文案,跟在值后面(如「件」),由默认插槽给出",
"label": "无障碍分组名称(role=\"group\" + aria-label)"
},
"structurePatterns": {
"size": "default(控件高 44px)/ small(控件高 36px,视觉更紧凑)",
"round": "false(方角)/ true(全圆角,用于购物车等轻量场合)"
},
"usageHints": [
"在一段有界区间里连续加减小整数(购买数量、份数、编号)",
"加号与减号必须各自独立占一个 44px 见方的热区",
"到边界时不是把按钮藏起来,而是置灰 —— 触屏上「按钮消失」会让用户以为界面坏了",
"单击步进一个 step,不响应长按连击(长按是桌面习惯,触屏上容易多跳)",
"值变化后立即触发 change 事件,不做防抖"
],
"doNotInvent": [
"长按连击、惯性加速的时值曲线",
"小数与浮点精度(本组件只处理整数;金额请用输入框 + 数字键盘)",
"超出边界的提示文案(由宿主决定是否提示)"
],
"unknowns": [
"值为 0 时是否自动隐藏整个步进器(购物车场景)",
"是否需要键盘上的上下方向键加减",
"单位文案是否随语言变化"
],
"interaction": [
"加号与减号各自是 44px 见方的热区;size=small 视觉 36px 时用 --kole-m-hit-slack 把热区外扩回 44px",
"单击步进一个 step,不响应长按连击(长按是桌面习惯,触屏上容易多跳)",
"到达 min / max 时对应按钮置 disabled 且置灰,点击不产生值与事件",
"值变化后立即触发 change 事件,不做防抖",
"editable=true 时值区接受键盘直接输入;非法输入(非数字、越界)在失焦时回落到边界值"
],
"accessibility": [
"根元素 role=\"group\" + aria-label 说明这组控件在调什么",
"减号 / 加号是原生 button,各自的 aria-label 是「减少」/「增加」(不用符号代替名称)",
"值区在只读态置 role=\"spinbutton\" 并写 aria-valuenow / aria-valuemin / aria-valuemax",
"置灰的按钮用原生 disabled,读屏会播报不可用且键盘会跳过"
],
"api": {
"source": "implementation",
"note": "props / events / slots 为 6 端实现的公共接口(说明文字取自规格对应小节)。字段名与各端源码逐名核对:node tools/verify-mobile-docs.mjs",
"requiredNote": "「必传」按严格定义:实现里**没有默认值**时才为 Y(本门禁逐条核对 props 与各端源码的默认值,防止契约与实现脱节)。",
"props": [
{
"name": "value",
"type": "number",
"default": "1",
"desc": "当前值,受控;变化通过 change 回传(规格 §30.5)",
"required": false
},
{
"name": "min",
"type": "number",
"default": "1",
"desc": "下界,到达时减号置灰(规格 §30.4)",
"required": false
},
{
"name": "max",
"type": "number",
"default": "99",
"desc": "上界,到达时加号置灰(规格 §30.4)",
"required": false
},
{
"name": "step",
"type": "number",
"default": "1",
"desc": "单次步进量(规格 §30.5)",
"required": false
},
{
"name": "size",
"type": "'default' | 'small'",
"default": "'default'",
"desc": "变体 size:default 高 44px,small 视觉 36px(热区外扩回 44px)(规格 §30.3)",
"required": false
},
{
"name": "round",
"type": "boolean",
"default": "false",
"desc": "变体 round:全圆角(规格 §30.3)",
"required": false
},
{
"name": "editable",
"type": "boolean",
"default": "false",
"desc": "值区是否可键盘直接输入(规格 §30.5)",
"required": false
},
{
"name": "disabled",
"type": "boolean",
"default": "false",
"desc": "状态 disabled:整组置灰且不可聚焦(规格 §30.4)",
"required": false
},
{
"name": "label",
"type": "string",
"default": "''",
"desc": "无障碍分组名称,落到 role=\"group\" 的 aria-label(规格 §30.6)",
"required": false
}
],
"events": [
{
"name": "change",
"params": "(value)",
"desc": "点加号 / 减号后触发,回传夹到 min~max 的目标值(规格 §30.5)"
},
{
"name": "input",
"params": "(value)",
"desc": "editable=true 时值区输入触发,回传原始文本(规格 §30.5)"
}
],
"slots": [
{
"name": "default",
"desc": "值后面的单位文案(如「件」),渲染在加减号之间(规格 §30.2 unit)"
}
]
},
"variantClasses": {
"size": {
"default": [],
"small": [
".kole-m-stepper--small"
]
},
"round": {
"false": [],
"true": [
".kole-m-stepper--round"
]
}
},
"demos": [
{
"id": "basic",
"group": "01 组件类型",
"title": "基础用法",
"desc": "减号 / 值 / 加号三段;加减各自是 44px 见方热区。",
"variant": "size=default"
},
{
"id": "bounds",
"group": "02 组件状态",
"title": "边界",
"desc": "到 min / max 时按钮留在原位置灰而不隐藏:按钮消失会让用户以为界面坏了。",
"variant": "状态 min|max"
},
{
"id": "size",
"group": "01 组件类型",
"title": "圆角两态",
"desc": "round=true 全圆角用于购物车;round=false 方角嵌在表单里。",
"variant": "round=false|true"
},
{
"id": "size-small",
"group": "01 组件类型",
"title": "紧凑尺寸",
"desc": "size=small 视觉 36px,热区用 --kole-m-hit-slack 外扩回 44px。",
"variant": "size=small"
},
{
"id": "disabled",
"group": "02 组件状态",
"title": "禁用",
"desc": "整组置灰、两个按钮都不可聚焦;读屏会播报不可用。",
"variant": "disabled=true"
}
],
"related": [
{
"slug": "mobile-input",
"why": "输入范围不固定、也不是整数时用输入框;有界的整数加减用步进器"
},
{
"slug": "mobile-numberkeyboard",
"why": "数量大到要手打时,输入框配套数字键盘;少量加减直接让步进器承担"
},
{
"slug": "cell",
"why": "步进器常作为单元格的右侧内容;行结构与点击进下级由单元格负责"
}
]
}