Files
aurora-admin/.design_library/kole-ui-mobile/components/mobile-dialog.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

256 lines
7.1 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",
"confidence": "high",
"specSection": "13 · 对话框 Dialog",
"slug": "mobile-dialog",
"name": "对话框 Dialog",
"semanticTypeCandidates": [
"dialog",
"modal",
"confirm"
],
"variantDimensions": [
{
"name": "variant",
"values": [
"confirm",
"alert"
]
},
{
"name": "tone",
"values": [
"default",
"danger"
]
},
{
"name": "round",
"values": [
"false",
"true"
]
}
],
"representativeVariants": [
{
"variant": "confirm",
"tone": "default",
"round": "true",
"label": "确认框"
},
{
"variant": "confirm",
"tone": "danger",
"round": "true",
"label": "危险确认"
},
{
"variant": "alert",
"tone": "default",
"round": "true",
"label": "提示框(单按钮)"
}
],
"anatomy": {
"mask": "遮罩,点击可关(可配置)",
"dialog": "对话框本体,居中",
"header": "标题区",
"body": "内容区",
"footer": "操作按钮组(取消 / 确认)"
},
"structurePatterns": {
"variant": "confirm(两个按钮)/ alert(单按钮铺满)",
"tone": "default / danger",
"round": "false / true"
},
"usageHints": [
"需要用户确认或输入的中断式浮层:标题 + 内容 + 操作按钮组",
"遮罩点击关闭;closeOnMask=false 时不关闭",
"Esc 关闭(键盘可达时)",
"按钮热区不小于 44px;操作按钮等宽排列",
"对话框 role=\"dialog\" + aria-modal=\"true\" + aria-labelledby 指向标题",
"遮罩 aria-hidden=\"true\""
],
"doNotInvent": [
"焦点陷阱(focus trap)的完整实现",
"多对话框嵌套时的层级规则"
],
"unknowns": [
"对话框的最大宽度与最大高度",
"长内容是否在 body 内滚动"
],
"interaction": [
"遮罩点击关闭;closeOnMask=false 时不关闭",
"Esc 关闭(键盘可达时)",
"按钮热区不小于 44px;操作按钮等宽排列"
],
"accessibility": [
"对话框 role=\"dialog\" + aria-modal=\"true\" + aria-labelledby 指向标题",
"打开后焦点落在对话框内(本实现只标记 tabindex=\"-1\" + role,焦点陷阱见 §13.7)",
"遮罩 aria-hidden=\"true\""
],
"api": {
"source": "implementation",
"note": "props / events / slots 为 6 端实现的公共接口(说明文字取自规格对应小节)。字段名与各端源码逐名核对:node tools/verify-mobile-docs.mjs",
"requiredNote": "「必传」按严格定义:实现里**没有默认值**时才为 Y(本门禁逐条核对 props 与各端源码的默认值,防止契约与实现脱节)。",
"props": [
{
"name": "variant",
"type": "'confirm' | 'alert'",
"default": "'confirm'",
"desc": "变体 variant:确认框(两按钮)/ 提示框(单按钮铺满)(规格 §13.3)",
"required": false
},
{
"name": "tone",
"type": "'default' | 'danger'",
"default": "'default'",
"desc": "变体 tone:danger 时确认按钮用错误色(规格 §13.3)",
"required": false
},
{
"name": "round",
"type": "boolean",
"default": "false",
"desc": "变体 round:是否切圆角(规格 §13.3)",
"required": false
},
{
"name": "open",
"type": "boolean",
"default": "false",
"desc": "状态 open:展开且遮罩可见(规格 §13.4)",
"required": false
},
{
"name": "closeOnMask",
"type": "boolean",
"default": "true",
"desc": "遮罩点击是否关闭;表单类内容通常设为 false(规格 §13.5)",
"required": false
},
{
"name": "title",
"type": "string",
"default": "''",
"desc": "标题文字,同时作为 aria-labelledby 指向的内容(规格 §13.2 header)",
"required": false
},
{
"name": "confirmText",
"type": "string",
"default": "'确定'",
"desc": "确认按钮文案(规格 §13.2 footer)",
"required": false
},
{
"name": "cancelText",
"type": "string",
"default": "'取消'",
"desc": "取消按钮文案(规格 §13.2 footer)",
"required": false
},
{
"name": "confirmDisabled",
"type": "boolean",
"default": "false",
"desc": "状态 loading:确认按钮进入加载态并禁用(规格 §13.4)",
"required": false
}
],
"events": [
{
"name": "confirm",
"params": "—",
"desc": "点击确认按钮时触发(确认按钮禁用时不触发)"
},
{
"name": "cancel",
"params": "—",
"desc": "点击取消按钮或遮罩(closeOnMask=true 时)时触发"
}
],
"slots": [
{
"name": "default",
"desc": "内容区(规格 §13.2 body)"
}
]
},
"variantClasses": {
"variant": {
"confirm": [],
"alert": []
},
"tone": {
"default": [
".kole-m-dialog__btn--primary"
],
"danger": [
".kole-m-dialog__btn--danger"
]
},
"round": {
"false": [],
"true": [
".kole-m-dialog--round"
]
}
},
"demos": [
{
"id": "confirm",
"group": "01 组件类型",
"title": "确认框",
"desc": "两个按钮等宽排列,取消在左、确认在右(与移动端平台惯例一致)。",
"variant": "variant=confirm"
},
{
"id": "danger",
"group": "01 组件类型",
"title": "危险确认",
"desc": "删除类操作把确认按钮转为错误色,让代价在视觉上先被看到。",
"variant": "tone=danger"
},
{
"id": "alert",
"group": "01 组件类型",
"title": "提示框",
"desc": "variant=alert 只有一个按钮并铺满整行,用于「知道了」这类单向告知。",
"variant": "variant=alert"
},
{
"id": "loading",
"group": "02 组件状态",
"title": "提交中",
"desc": "确认按钮进入禁用态并标记 aria-busy,避免重复提交。",
"variant": "状态 loading"
},
{
"id": "keep-open",
"group": "02 组件状态",
"title": "遮罩不关闭",
"desc": "closeOnMask=false:已填内容不因一次误触就丢失。",
"variant": "closeOnMask=false"
}
],
"related": [
{
"slug": "actionsheet",
"why": "从底部弹出的多选项列表用动作面板,对话框用于需要做决定的中断式确认"
},
{
"slug": "mobile-popup",
"why": "需要自定义内容与方向时用弹出层,对话框只是它的一种固定形态"
},
{
"slug": "mobile-toast",
"why": "只是告知结果、不需要用户决定时用轻提示,不要用对话框打断"
}
]
}