Files
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

2 lines
14 KiB
JSON

{"slug":"select","mode":"scenarios","examples":[{"id":"select-ex-1","title":"单选","titleSrc":"demo","desc":"","html":"<div class=\"group\">\n <div class=\"row\">\n <div class=\"kole-select\" data-mode=\"single\" data-name=\"city\" data-select>\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">请选择城市</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\" hidden>\n <div class=\"kole-select-option is-selected\" role=\"option\" aria-selected=\"true\" data-value=\"bj\">\n 北京\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"sh\">\n 上海\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"gz\">\n 广州\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"sz\">\n 深圳\n <span class=\"check\">✓</span>\n </div>\n </div>\n </div>\n </div>\n</div>","preview":{"show":[[0,2]],"hide":[[1],[0,0],[0,1],[0,3],[0,4],[0,5],[0,6],[0,2,0]],"mode":"scenarios"},"previewSafe":true,"previewUnsafeReasons":[],"source":"api-derived","code":{"html":"<div class=\"kole-select\">\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">请选择城市</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\" hidden>\n <div class=\"kole-select-option is-selected\" role=\"option\" aria-selected=\"true\" data-value=\"bj\">\n 北京\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"sh\">\n 上海\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"gz\">\n 广州\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"sz\">\n 深圳\n <span class=\"check\">✓</span>\n </div>\n </div>\n</div>","jsx":"import { KoleSelect } from 'kole-ui/react';\n\n<KoleSelect options={options} modelValue={value} />","vue3":"<template>\n <KoleSelect :options=\"options\" v-model=\"value\" />\n</template>\n\n<script setup>\nimport { KoleSelect } from 'kole-ui/vue3';\n</script>","vue2":"<template>\n <KoleSelect :options=\"options\" v-model=\"value\" />\n</template>\n\n<script>\nimport { KoleSelect } from 'kole-ui/vue2';\nexport default { components: { KoleSelect } };\n</script>"},"notes":["演示页未含可映射的调用标记,本片段依据组件 API 表推导"]},{"id":"select-ex-2","title":"多选","titleSrc":"demo","desc":"","html":"<div class=\"group\">\n <div class=\"row\">\n <div class=\"kole-select\" data-mode=\"multiple\" data-name=\"role\" data-select>\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">请选择角色</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\" hidden>\n <div class=\"kole-select-option is-selected\" role=\"option\" aria-selected=\"true\" data-value=\"admin\">\n 管理员\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"editor\">\n 编辑\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"viewer\">\n 访客\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option is-disabled\" role=\"option\" aria-disabled=\"true\" data-disabled=\"1\" data-value=\"guest\">\n 受限访客\n <span class=\"check\">✓</span>\n </div>\n </div>\n </div>\n </div>\n</div>","preview":{"show":[[0,3]],"hide":[[1],[0,0],[0,1],[0,2],[0,4],[0,5],[0,6],[0,3,0]],"mode":"scenarios"},"previewSafe":true,"previewUnsafeReasons":[],"source":"api-derived","code":{"html":"<div class=\"kole-select\">\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">请选择角色</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\" hidden>\n <div class=\"kole-select-option is-selected\" role=\"option\" aria-selected=\"true\" data-value=\"admin\">\n 管理员\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"editor\">\n 编辑\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"viewer\">\n 访客\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option is-disabled\" role=\"option\" aria-disabled=\"true\" data-disabled=\"1\" data-value=\"guest\">\n 受限访客\n <span class=\"check\">✓</span>\n </div>\n </div>\n</div>","jsx":"import { KoleSelect } from 'kole-ui/react';\n\n<KoleSelect options={options} modelValue={value} />","vue3":"<template>\n <KoleSelect :options=\"options\" v-model=\"value\" />\n</template>\n\n<script setup>\nimport { KoleSelect } from 'kole-ui/vue3';\n</script>","vue2":"<template>\n <KoleSelect :options=\"options\" v-model=\"value\" />\n</template>\n\n<script>\nimport { KoleSelect } from 'kole-ui/vue2';\nexport default { components: { KoleSelect } };\n</script>"},"notes":["演示页未含可映射的调用标记,本片段依据组件 API 表推导"]},{"id":"select-ex-3","title":"可搜索","titleSrc":"demo","desc":"","html":"<div class=\"group\">\n <div class=\"row\">\n <div class=\"kole-select\" data-mode=\"single\" data-name=\"user\" data-searchable=\"1\" data-select>\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">搜索并选择用户</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\" hidden>\n <div class=\"kole-select-search\">\n <input placeholder=\"输入关键字\" />\n </div>\n <div class=\"kole-select-option is-selected\" role=\"option\" aria-selected=\"true\" data-value=\"u1\">\n 张伟\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"u2\">\n 李娜\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"u3\">\n 王芳\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"u4\">\n 刘强\n <span class=\"check\">✓</span>\n </div>\n </div>\n </div>\n </div>\n</div>","preview":{"show":[[0,4]],"hide":[[1],[0,0],[0,1],[0,2],[0,3],[0,5],[0,6],[0,4,0]],"mode":"scenarios"},"previewSafe":true,"previewUnsafeReasons":[],"source":"api-derived","code":{"html":"<div class=\"kole-select\" data-searchable=\"1\">\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">搜索并选择用户</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\" hidden>\n <div class=\"kole-select-search\">\n <input placeholder=\"输入关键字\" />\n </div>\n <div class=\"kole-select-option is-selected\" role=\"option\" aria-selected=\"true\" data-value=\"u1\">\n 张伟\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"u2\">\n 李娜\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"u3\">\n 王芳\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"u4\">\n 刘强\n <span class=\"check\">✓</span>\n </div>\n </div>\n</div>","jsx":"import { KoleSelect } from 'kole-ui/react';\n\n<KoleSelect searchable placeholder=\"输入关键字\" />","vue3":"<template>\n <KoleSelect searchable placeholder=\"输入关键字\" />\n</template>\n\n<script setup>\nimport { KoleSelect } from 'kole-ui/vue3';\n</script>","vue2":"<template>\n <KoleSelect searchable placeholder=\"输入关键字\" />\n</template>\n\n<script>\nimport { KoleSelect } from 'kole-ui/vue2';\nexport default { components: { KoleSelect } };\n</script>"},"notes":["演示页未含可映射的调用标记,本片段依据组件 API 表推导"]},{"id":"select-ex-4","title":"分组","titleSrc":"demo","desc":"","html":"<div class=\"group\">\n <div class=\"row\">\n <div class=\"kole-select\" data-grouped=\"1\" data-mode=\"single\" data-name=\"dept\" data-select>\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">请选择部门</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\" hidden>\n <div class=\"kole-select-group-label\">技术中心</div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"fe\">\n 前端组\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"be\">\n 后端组\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-group-label\">产品中心</div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"pm\">\n 产品组\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"ux\">\n 设计组\n <span class=\"check\">✓</span>\n </div>\n </div>\n </div>\n </div>\n</div>","preview":{"show":[[0,5]],"hide":[[1],[0,0],[0,1],[0,2],[0,3],[0,4],[0,6],[0,5,0]],"mode":"scenarios"},"previewSafe":true,"previewUnsafeReasons":[],"source":"api-derived","code":{"html":"<div class=\"kole-select\">\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">请选择部门</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\" hidden>\n <div class=\"kole-select-group-label\">技术中心</div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"fe\">\n 前端组\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"be\">\n 后端组\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-group-label\">产品中心</div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"pm\">\n 产品组\n <span class=\"check\">✓</span>\n </div>\n <div class=\"kole-select-option\" role=\"option\" data-value=\"ux\">\n 设计组\n <span class=\"check\">✓</span>\n </div>\n </div>\n</div>","jsx":"import { KoleSelect } from 'kole-ui/react';\n\n<KoleSelect options={options} modelValue={value} />","vue3":"<template>\n <KoleSelect :options=\"options\" v-model=\"value\" />\n</template>\n\n<script setup>\nimport { KoleSelect } from 'kole-ui/vue3';\n</script>","vue2":"<template>\n <KoleSelect :options=\"options\" v-model=\"value\" />\n</template>\n\n<script>\nimport { KoleSelect } from 'kole-ui/vue2';\nexport default { components: { KoleSelect } };\n</script>"},"notes":["演示页未含可映射的调用标记,本片段依据组件 API 表推导"]},{"id":"select-ex-5","title":"空态(无匹配选项)","titleSrc":"demo","desc":"","html":"<div class=\"group\">\n <div class=\"row\">\n <div class=\"kole-select is-open\" data-mode=\"single\" data-name=\"empty\" data-select>\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">搜索无结果</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\">\n <div class=\"kole-select-empty\">无匹配选项</div>\n </div>\n </div>\n </div>\n</div>","preview":{"show":[[0,6]],"hide":[[1],[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6,0]],"mode":"scenarios"},"previewSafe":true,"previewUnsafeReasons":[],"source":"api-derived","code":{"html":"<div class=\"kole-select is-open\">\n <div class=\"kole-select-trigger\" role=\"button\" tabindex=\"0\" aria-expanded=\"true\" aria-haspopup=\"listbox\">\n <span class=\"placeholder\">搜索无结果</span>\n <span class=\"caret\">▾</span>\n </div>\n <div class=\"kole-select-panel\">\n <div class=\"kole-select-empty\">无匹配选项</div>\n </div>\n</div>","jsx":"import { KoleSelect } from 'kole-ui/react';\n\n<KoleSelect options={options} modelValue={value} />","vue3":"<template>\n <KoleSelect :options=\"options\" v-model=\"value\" />\n</template>\n\n<script setup>\nimport { KoleSelect } from 'kole-ui/vue3';\n</script>","vue2":"<template>\n <KoleSelect :options=\"options\" v-model=\"value\" />\n</template>\n\n<script>\nimport { KoleSelect } from 'kole-ui/vue2';\nexport default { components: { KoleSelect } };\n</script>"},"notes":["演示页标记只含页面结构,未含可映射的组件属性","演示页未含可映射的调用标记,本片段依据组件 API 表推导"]}]}