Regression / regression (push) Canceled after 0s
## 品牌标识(本次会话) 起因:品牌此前没有任何图形标识 —— 唯一 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 未做部分)
200 lines
6.6 KiB
JSON
200 lines
6.6 KiB
JSON
{
|
||
"schemaVersion": 1,
|
||
"sourceKind": "authored-spec",
|
||
"provenance": "authored-in-repo",
|
||
"specFile": "spec/移动端规格.md",
|
||
"specSection": "25 · 折叠面板 Collapse",
|
||
"confidence": "high",
|
||
"slug": "mobile-collapse",
|
||
"name": "折叠面板 Collapse",
|
||
"semanticTypeCandidates": [
|
||
"collapse",
|
||
"accordion",
|
||
"disclosure"
|
||
],
|
||
"variantDimensions": [
|
||
{
|
||
"name": "accordion",
|
||
"values": [
|
||
"false",
|
||
"true"
|
||
]
|
||
},
|
||
{
|
||
"name": "bordered",
|
||
"values": [
|
||
"true",
|
||
"false"
|
||
]
|
||
}
|
||
],
|
||
"representativeVariants": [
|
||
{
|
||
"accordion": "false",
|
||
"bordered": "true",
|
||
"label": "多面板带边框(默认:各自开合互不影响)"
|
||
},
|
||
{
|
||
"accordion": "true",
|
||
"bordered": "true",
|
||
"label": "手风琴(同时只展开一个,移动端推荐形态)"
|
||
},
|
||
{
|
||
"accordion": "false",
|
||
"bordered": "false",
|
||
"label": "无边框面板(靠留白分隔,适合嵌在卡片内)"
|
||
}
|
||
],
|
||
"anatomy": {
|
||
"collapse": "根元素,一组面板的容器",
|
||
"item": "单个面板,含标题行与内容区",
|
||
"header": "标题行,整行可点,高度不小于 44px",
|
||
"arrow": "标题行右侧箭头,展开时旋转 90 度",
|
||
"panel": "内容区,展开时可见(收起时高度为 0 或 hidden)",
|
||
"content": "内容区内的正文节点"
|
||
},
|
||
"structurePatterns": {
|
||
"accordion": "false(多面板可同时展开)/ true(手风琴,同时只展开一个)",
|
||
"bordered": "true(面板之间有分隔线与外框)/ false(无边框,靠留白分隔)"
|
||
},
|
||
"usageHints": [
|
||
"把长内容按主题收起来,让用户先看到标题、按需展开某一段",
|
||
"移动端屏幕窄,展开后内容会顶走上下文,因此一次只展开一个(手风琴)是默认推荐形态",
|
||
"展开态必须明确到不靠颜色也能看出(箭头方向 + aria-expanded)",
|
||
"标题行整行都是热区,高度不小于 44px",
|
||
"手风琴模式下展开新面板会收起当前展开项;accordion=false 时互不影响"
|
||
],
|
||
"doNotInvent": [
|
||
"展开动画的高度换算公式(内容高度由浏览器决定)",
|
||
"嵌套折叠面板的层级样式"
|
||
],
|
||
"unknowns": [
|
||
"默认是否展开第一项",
|
||
"标题行右侧是否允许放额外操作"
|
||
],
|
||
"interaction": [
|
||
"标题行整行都是热区,高度不小于 44px",
|
||
"视觉箭头转 90 度(180ms 过渡),展开时 aria-expanded 同步为 true",
|
||
"手风琴模式下展开新面板会收起当前展开项;accordion=false 时互不影响",
|
||
"内容区不做高度动画,直接切换 hidden(省电,读屏也不会读到中间态);减少动态偏好下箭头同样瞬时切换"
|
||
],
|
||
"accessibility": [
|
||
"标题行用原生 button 并带 aria-expanded / aria-controls",
|
||
"内容区与标题用 id / aria-controls 建立关联,收起时用 hidden 属性隐藏(而不是只靠 CSS 高度)",
|
||
"禁用项置 aria-disabled=\"true\" 且不可聚焦"
|
||
],
|
||
"api": {
|
||
"source": "implementation",
|
||
"note": "props / events / slots 为 6 端实现的公共接口(说明文字取自规格对应小节)。字段名与各端源码逐名核对:node tools/verify-mobile-docs.mjs",
|
||
"requiredNote": "「必传」按严格定义:实现里**没有默认值**时才为 Y(本门禁逐条核对 props 与各端源码的默认值,防止契约与实现脱节)。",
|
||
"props": [
|
||
{
|
||
"name": "items",
|
||
"type": "Array",
|
||
"default": "[]",
|
||
"desc": "数据驱动的面板数组,每项含 key / title / content / disabled(规格 §25.2)",
|
||
"required": false
|
||
},
|
||
{
|
||
"name": "accordion",
|
||
"type": "boolean",
|
||
"default": "false",
|
||
"desc": "变体 accordion:手风琴模式,展开新面板时收起当前展开项(规格 §25.3)",
|
||
"required": false
|
||
},
|
||
{
|
||
"name": "bordered",
|
||
"type": "boolean",
|
||
"default": "true",
|
||
"desc": "变体 bordered:面板之间有分隔线与外框(规格 §25.3)",
|
||
"required": false
|
||
},
|
||
{
|
||
"name": "value",
|
||
"type": "Array",
|
||
"default": "[]",
|
||
"desc": "受控展开项:面板 key 的数组,点击后由 change 事件回传(规格 §25.5)",
|
||
"required": false
|
||
}
|
||
],
|
||
"events": [
|
||
{
|
||
"name": "change",
|
||
"params": "(key, expanded)",
|
||
"desc": "面板标题行被点击后触发,回传该面板 key 与展开态布尔值(规格 §25.5)"
|
||
}
|
||
],
|
||
"slots": [
|
||
{
|
||
"name": "default",
|
||
"desc": "追加在数据驱动面板之后的自定义面板(规格 §25.2 item)"
|
||
}
|
||
]
|
||
},
|
||
"variantClasses": {
|
||
"accordion": {
|
||
"false": [],
|
||
"true": [
|
||
".kole-m-collapse--accordion"
|
||
]
|
||
},
|
||
"bordered": {
|
||
"true": [
|
||
".kole-m-collapse--bordered"
|
||
],
|
||
"false": []
|
||
}
|
||
},
|
||
"demos": [
|
||
{
|
||
"id": "basic",
|
||
"group": "01 组件类型",
|
||
"title": "基础用法",
|
||
"desc": "点标题行展开:整行热区不小于 52px,箭头转 90 度,aria-expanded 同步变化。",
|
||
"variant": "accordion=false"
|
||
},
|
||
{
|
||
"id": "multi",
|
||
"group": "01 组件类型",
|
||
"title": "多面板同时展开",
|
||
"desc": "accordion=false 时各面板各自开合,互不影响。",
|
||
"variant": "accordion=false"
|
||
},
|
||
{
|
||
"id": "accordion",
|
||
"group": "01 组件类型",
|
||
"title": "手风琴",
|
||
"desc": "accordion=true 时展开新面板会自动收起当前展开项,适合主题多、屏幕窄的场合。",
|
||
"variant": "accordion=true"
|
||
},
|
||
{
|
||
"id": "bordered",
|
||
"group": "02 组件状态",
|
||
"title": "边框两态",
|
||
"desc": "bordered=true 有外框与面板间分隔线;false 时靠留白分隔。",
|
||
"variant": "bordered=true|false"
|
||
},
|
||
{
|
||
"id": "disabled",
|
||
"group": "02 组件状态",
|
||
"title": "禁用面板",
|
||
"desc": "状态 disabled:标题行置灰、不响应点击,aria-disabled 已置位且不可聚焦。",
|
||
"variant": "状态 disabled"
|
||
}
|
||
],
|
||
"related": [
|
||
{
|
||
"slug": "mobile-list",
|
||
"why": "行点击后跳转或选中用列表;就地展开内容用折叠面板"
|
||
},
|
||
{
|
||
"slug": "mobile-popup",
|
||
"why": "内容需要遮罩聚焦时用弹出层;内容属于当前上下文的补充说明时用折叠面板"
|
||
},
|
||
{
|
||
"slug": "mobile-dialog",
|
||
"why": "需要用户先决策再继续时用对话框;只是看说明用折叠面板"
|
||
}
|
||
]
|
||
}
|