@microi.net/cli 5.8.5 → 5.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/LICENSE +21 -21
- package/README.md +71 -71
- package/assets/build-meta.json +7 -7
- package/assets/feature-matrix.json +138 -138
- package/assets/logo.svg +4 -4
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/mcp-codex-stdio-adapter.js +0 -0
- package/scripts/mcp-server.js +1 -1
- package/scripts/microi-cli.js +66 -65
- package/scripts/microi-codex-broker.js +450 -450
- package/scripts/microi-codex-router.js +618 -618
- package/scripts/microi-skills.meta.json +384 -384
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +21 -21
- package/skills/README.md +287 -287
- package/skills/ai-engine/SKILL.md +269 -265
- package/skills/ai-engine/agents/openai.yaml +4 -4
- package/skills/ai-engine/references/ai-employees.md +48 -48
- package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
- package/skills/ai-platform-governance/SKILL.md +177 -177
- package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
- package/skills/app-store/SKILL.md +525 -525
- package/skills/app-store/agents/openai.yaml +4 -4
- package/skills/business-blueprint/SKILL.md +193 -193
- package/skills/datasource-engine/SKILL.md +93 -93
- package/skills/datasource-engine/agents/openai.yaml +4 -4
- package/skills/dos-orm/SKILL.md +97 -95
- package/skills/dos-orm/references/api-reference.md +229 -229
- package/skills/email-engine/SKILL.md +81 -81
- package/skills/email-engine/references/v8-email.md +34 -34
- package/skills/job-engine/SKILL.md +176 -176
- package/skills/job-engine/agents/openai.yaml +4 -4
- package/skills/message-notification/SKILL.md +156 -156
- package/skills/message-notification/agents/openai.yaml +5 -5
- package/skills/message-notification/references/contracts.md +102 -102
- package/skills/microi/SKILL.md +14 -14
- package/skills/microi-ai-app-auth.js +652 -652
- package/skills/microi-ai-application/SKILL.md +115 -115
- package/skills/microi-ai-application/agents/openai.yaml +4 -4
- package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
- package/skills/microi-client-frontend/SKILL.md +246 -244
- package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -144
- package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +196 -196
- package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +167 -167
- package/skills/microi-codex/SKILL.md +102 -100
- package/skills/microi-codex-installer/SKILL.md +231 -231
- package/skills/microi-codex-installer/agents/openai.yaml +7 -7
- package/skills/microi-datasource-mapping/SKILL.md +122 -122
- package/skills/microi-db-schema/SKILL.md +175 -175
- package/skills/microi-db-schema/agents/openai.yaml +4 -4
- package/skills/microi-db-schema/references/core-tables.md +695 -695
- package/skills/microi-db-schema/references/form-component-options.md +256 -256
- package/skills/microi-db-schema/references/schema-overview.md +202 -202
- package/skills/microi-db-schema/references/schema.md +646 -646
- package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
- package/skills/microi-deployment/SKILL.md +222 -220
- package/skills/microi-deployment/references/deployment-matrix.md +109 -109
- package/skills/microi-docs-coverage/SKILL.md +133 -133
- package/skills/microi-docs-coverage/references/capability-map.md +91 -91
- package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
- package/skills/microi-form-engine/SKILL.md +333 -333
- package/skills/microi-form-engine/references/component-catalog.md +218 -218
- package/skills/microi-form-engine/references/data-source-events.md +124 -124
- package/skills/microi-form-layout/SKILL.md +205 -205
- package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -235
- package/skills/microi-frontend-sdk/SKILL.md +194 -194
- package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +176 -176
- package/skills/microi-left-right-layout/SKILL.md +141 -141
- package/skills/microi-microservice/SKILL.md +328 -326
- package/skills/microi-microservice/references/runtime-delivery.md +278 -278
- package/skills/microi-mobile-app-quality/SKILL.md +185 -185
- package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +213 -213
- package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +128 -128
- package/skills/microi-solution-quotation/SKILL.md +78 -78
- package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
- package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
- package/skills/microi-sso/SKILL.md +96 -90
- package/skills/microi-sso/references/acceptance.md +49 -49
- package/skills/microi-sso/references/configuration-and-security.md +53 -53
- package/skills/microi-sso/references/inbound.md +53 -53
- package/skills/microi-sso/references/outbound.md +39 -39
- package/skills/microi-system-delivery/SKILL.md +137 -137
- package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +193 -193
- package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +217 -217
- package/skills/microi-ui/SKILL.md +192 -192
- package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
- package/skills/microi-uniapp-frontend/SKILL.md +193 -193
- package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -225
- package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -154
- package/skills/microi.v8.js +1921 -1921
- package/skills/module-engine/SKILL.md +255 -255
- package/skills/module-engine/references/module-config.md +204 -204
- package/skills/ocr-engine/SKILL.md +113 -113
- package/skills/ocr-engine/agents/openai.yaml +4 -4
- package/skills/page-engine/SKILL.md +206 -206
- package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
- package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -234
- package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -60
- package/skills/performance-testing/SKILL.md +221 -221
- package/skills/playwright-e2e/SKILL.md +196 -196
- package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -173
- package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -183
- package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
- package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
- package/skills/print-engine/SKILL.md +259 -259
- package/skills/production-readonly-audit/SKILL.md +41 -41
- package/skills/report-engine/SKILL.md +71 -71
- package/skills/report-engine/agents/openai.yaml +4 -4
- package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
- package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
- package/skills/scripts/sync-embedded-skills.mjs +46 -46
- package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
- package/skills/search-engine/SKILL.md +75 -75
- package/skills/search-engine/agents/openai.yaml +4 -4
- package/skills/spider-engine/SKILL.md +190 -190
- package/skills/system-observability/SKILL.md +249 -246
- package/skills/system-observability/references/memory-incident-triage.md +77 -77
- package/skills/translate-engine/SKILL.md +140 -140
- package/skills/translate-engine/agents/openai.yaml +4 -4
- package/skills/ui-design/SKILL.md +223 -223
- package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
- package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
- package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
- package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
- package/skills/ui-design/references/design-pattern-library.md +184 -184
- package/skills/ui-design/references/mci-design-contract.md +163 -163
- package/skills/ui-design/references/motion-and-media.md +78 -78
- package/skills/ui-design/references/product-flow-recipes.md +94 -94
- package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -218
- package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
- package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -235
- package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -152
- package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -238
- package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -194
- package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
- package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +142 -142
- package/skills/uniapp-mall-assets/SKILL.md +176 -176
- package/skills/unity-integration/SKILL.md +171 -171
- package/skills/unity-integration/agents/openai.yaml +4 -4
- package/skills/unity-integration/references/ai-app-delivery.md +119 -119
- package/skills/unity-integration/references/sdk-api.md +82 -82
- package/skills/unity-integration/references/toolbox-migration.md +66 -66
- package/skills/unity-integration/references/webgl-hosting.md +57 -57
- package/skills/v8-api-config/SKILL.md +388 -388
- package/skills/v8-cache-pattern/SKILL.md +312 -312
- package/skills/v8-crud-api/SKILL.md +178 -178
- package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -226
- package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -49
- package/skills/v8-debugging/SKILL.md +284 -284
- package/skills/v8-explorer-tree/SKILL.md +228 -228
- package/skills/v8-export-import/SKILL.md +219 -219
- package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -211
- package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
- package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -42
- package/skills/v8-file-upload/SKILL.md +284 -284
- package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +263 -263
- package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +161 -161
- package/skills/v8-formengine-http/SKILL.md +238 -238
- package/skills/v8-frontend-events/SKILL.md +180 -180
- package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
- package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
- package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
- package/skills/v8-http-integration/SKILL.md +182 -182
- package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
- package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -44
- package/skills/v8-image-processing/SKILL.md +190 -190
- package/skills/v8-image-processing/agents/openai.yaml +4 -4
- package/skills/v8-image-processing/references/api-reference.md +623 -623
- package/skills/v8-menu-buttons/SKILL.md +186 -186
- package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +222 -222
- package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +228 -228
- package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -104
- package/skills/v8-mongodb/SKILL.md +200 -200
- package/skills/v8-mq-mqtt/SKILL.md +176 -176
- package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
- package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
- package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
- package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
- package/skills/v8-security/SKILL.md +210 -210
- package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
- package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
- package/skills/v8-sql-query/SKILL.md +302 -302
- package/skills/v8-table-event/SKILL.md +176 -176
- package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +216 -216
- package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -46
- package/skills/v8-tcp-integration/SKILL.md +147 -147
- package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
- package/skills/v8-template-engine/SKILL.md +167 -167
- package/skills/v8-utilities/SKILL.md +104 -104
- package/skills/v8-utilities/references/client-api-index.md +143 -143
- package/skills/v8-utilities/references/platform-http-routes.md +83 -83
- package/skills/v8-utilities/references/server-api-index.md +188 -188
- package/skills/v8-workflow/SKILL.md +252 -252
- package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -180
- package/skills/v8-workflow/references/workflow-configuration.md +49 -49
- package/skills/vision-engine/SKILL.md +160 -160
- package/skills/vision-engine/agents/openai.yaml +4 -4
- package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
- package/skills/workspace-conventions/SKILL.md +273 -273
- package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +209 -209
- package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +217 -217
- package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -27
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
# Microi 产品流程配方
|
|
2
|
-
|
|
3
|
-
本文件用于登录、注册、订阅、支付、预约、权限、搜索、设置和敏感信息采集等真实产品流程。所有流程先保证任务闭环,再做视觉装饰。
|
|
4
|
-
|
|
5
|
-
## 目录
|
|
6
|
-
|
|
7
|
-
1. 登录与注册
|
|
8
|
-
2. 首次引导
|
|
9
|
-
3. 权限申请
|
|
10
|
-
4. 订阅与付费
|
|
11
|
-
5. 结算与支付
|
|
12
|
-
6. 搜索、筛选与列表
|
|
13
|
-
7. 创建与编辑
|
|
14
|
-
8. 设置与个人中心
|
|
15
|
-
9. 敏感资料采集
|
|
16
|
-
10. 通用验收
|
|
17
|
-
|
|
18
|
-
## 登录与注册
|
|
19
|
-
|
|
20
|
-
- 默认只突出一种主登录方式,其他方式收进次级入口,避免并排两个完整登录系统。
|
|
21
|
-
- 登录页保留返回首页、帮助和协议入口;输入错误时不清空账号,密码错误不暴露账号是否存在。
|
|
22
|
-
- 验证码必须同时有图片、刷新、过期状态和请求中状态;后端未开启验证码时不渲染占位框。
|
|
23
|
-
- “记住密码”明确作用范围;公共设备提供退出全部设备或不记住提示。
|
|
24
|
-
- 登录成功直接进入目标页,禁止先闪过中间成功页。
|
|
25
|
-
- 注册按账号 -> 验证 -> 必要资料 -> 完成分段;非必要资料延后到首次使用。
|
|
26
|
-
|
|
27
|
-
## 首次引导
|
|
28
|
-
|
|
29
|
-
- 开始前说明预计步骤、需要的资料、用途和能否稍后完成。
|
|
30
|
-
- 每一步只问同一类信息;显示当前步骤和总步骤,但不要伪造进度百分比。
|
|
31
|
-
- 支持保存草稿和恢复;关闭前说明哪些内容已保存。
|
|
32
|
-
- 完成页给出下一项具体任务,不只显示庆祝插画。
|
|
33
|
-
|
|
34
|
-
## 权限申请
|
|
35
|
-
|
|
36
|
-
- 在系统权限弹窗前展示预说明:为什么需要、将获得什么、拒绝后还能做什么。
|
|
37
|
-
- 一次只申请当前动作需要的权限;相机、定位、通知、通讯录不能在首屏批量索取。
|
|
38
|
-
- 拒绝后提供设置入口和不授权替代路径,不循环弹窗。
|
|
39
|
-
- 权限状态变化后立即刷新页面状态,不能要求用户重启应用。
|
|
40
|
-
|
|
41
|
-
## 订阅与付费
|
|
42
|
-
|
|
43
|
-
- 价值在价格之前;3-6 条图标化权益即可,避免长列表。
|
|
44
|
-
- 价格写清周期、续费、试用结束、税费和取消条件;这些信息放在 CTA 附近。
|
|
45
|
-
- 推荐方案用轻量边框/底色和说明强化,不用夸张倒计时或羞辱式拒绝按钮。
|
|
46
|
-
- 只有一个方案时不制造无意义选择;多个方案按典型用户目标命名。
|
|
47
|
-
- 购买后显示生效能力、订单入口、管理订阅和下一步。
|
|
48
|
-
|
|
49
|
-
## 结算与支付
|
|
50
|
-
|
|
51
|
-
- 结构顺序:商品/服务摘要 -> 地址/时间 -> 优惠 -> 支付方式 -> 金额明细 -> 提交。
|
|
52
|
-
- 总金额和主按钮固定可见,但不能遮挡最后一项;金额变化时说明原因。
|
|
53
|
-
- 提交后锁定重复支付并显示处理中;未知结果进入“正在确认”,不能直接当失败。
|
|
54
|
-
- 支付失败保留订单和输入,提供更换方式、重试和联系客服。
|
|
55
|
-
- 成功页展示订单号、核心信息、查看订单和继续使用。
|
|
56
|
-
|
|
57
|
-
## 搜索、筛选与列表
|
|
58
|
-
|
|
59
|
-
- 搜索框说明可搜字段;输入后提供清除、历史或建议,但不自动提交破坏输入。
|
|
60
|
-
- 高频筛选放在页面表层,低频筛选进入抽屉;已选条件用可移除标签展示。
|
|
61
|
-
- 排序和筛选结果数及时反馈;切换条件时保持列表容器高度并用骨架避免跳动。
|
|
62
|
-
- 每个卡片/行都要有对象身份、状态、关键元数据、时间和明确点击结果。
|
|
63
|
-
- 空结果区分“没有数据”和“筛选无匹配”,后者提供清除条件。
|
|
64
|
-
|
|
65
|
-
## 创建与编辑
|
|
66
|
-
|
|
67
|
-
- 字段按任务分组;必填项最少化,帮助文字靠近字段。
|
|
68
|
-
- 实时校验只用于格式和明确约束;服务端校验在提交后映射到对应字段和顶部摘要。
|
|
69
|
-
- 提交按钮具备默认、loading、成功、失败、disabled;失败不丢输入。
|
|
70
|
-
- 离开脏表单前提示;自动保存要显示最后保存时间和失败状态。
|
|
71
|
-
- 删除、归档、停用语义分开;不可逆操作二次确认并说明影响对象。
|
|
72
|
-
|
|
73
|
-
## 设置与个人中心
|
|
74
|
-
|
|
75
|
-
- 身份信息、账户安全、通知、隐私、外观、数据与帮助分组。
|
|
76
|
-
- 当前值比入口名更重要时在右侧展示,例如手机号尾号、语言、主题。
|
|
77
|
-
- 危险操作单独放在底部区域,不和普通设置混排。
|
|
78
|
-
- 修改手机号、密码、密钥和付款方式时重新验证身份。
|
|
79
|
-
- 注销前展示数据影响、冷静期、恢复方式和进度,不能只有一个红色按钮。
|
|
80
|
-
|
|
81
|
-
## 敏感资料采集
|
|
82
|
-
|
|
83
|
-
- 开始前说明采集内容、用途、存储方式、预计时间和所需环境。
|
|
84
|
-
- 先选择证件/资料类型,再打开相机或上传;提供手工录入备选。
|
|
85
|
-
- 相机界面使用深色背景、清晰取景框、实时成功边界和大触控按钮。
|
|
86
|
-
- 上传中显示进度、取消、失败重试;识别后让用户核对关键字段。
|
|
87
|
-
- 页面内嵌隐私和安全信号,但不使用无法验证的“绝对安全”宣传。
|
|
88
|
-
|
|
89
|
-
## 通用验收
|
|
90
|
-
|
|
91
|
-
- 键盘顺序、焦点环、错误关联、屏幕阅读标签和 44px 触摸目标可用。
|
|
92
|
-
- 刷新、后退、重复提交、弱网、超时、服务端 4xx/5xx 都有确定结果。
|
|
93
|
-
- 个人数据只在需要位置显示;日志、Toast 和错误信息不得泄露 token、SQL 或内部表名。
|
|
94
|
-
- 390px 移动端不横向滚动,键盘弹起不遮挡当前字段和主按钮。
|
|
1
|
+
# Microi 产品流程配方
|
|
2
|
+
|
|
3
|
+
本文件用于登录、注册、订阅、支付、预约、权限、搜索、设置和敏感信息采集等真实产品流程。所有流程先保证任务闭环,再做视觉装饰。
|
|
4
|
+
|
|
5
|
+
## 目录
|
|
6
|
+
|
|
7
|
+
1. 登录与注册
|
|
8
|
+
2. 首次引导
|
|
9
|
+
3. 权限申请
|
|
10
|
+
4. 订阅与付费
|
|
11
|
+
5. 结算与支付
|
|
12
|
+
6. 搜索、筛选与列表
|
|
13
|
+
7. 创建与编辑
|
|
14
|
+
8. 设置与个人中心
|
|
15
|
+
9. 敏感资料采集
|
|
16
|
+
10. 通用验收
|
|
17
|
+
|
|
18
|
+
## 登录与注册
|
|
19
|
+
|
|
20
|
+
- 默认只突出一种主登录方式,其他方式收进次级入口,避免并排两个完整登录系统。
|
|
21
|
+
- 登录页保留返回首页、帮助和协议入口;输入错误时不清空账号,密码错误不暴露账号是否存在。
|
|
22
|
+
- 验证码必须同时有图片、刷新、过期状态和请求中状态;后端未开启验证码时不渲染占位框。
|
|
23
|
+
- “记住密码”明确作用范围;公共设备提供退出全部设备或不记住提示。
|
|
24
|
+
- 登录成功直接进入目标页,禁止先闪过中间成功页。
|
|
25
|
+
- 注册按账号 -> 验证 -> 必要资料 -> 完成分段;非必要资料延后到首次使用。
|
|
26
|
+
|
|
27
|
+
## 首次引导
|
|
28
|
+
|
|
29
|
+
- 开始前说明预计步骤、需要的资料、用途和能否稍后完成。
|
|
30
|
+
- 每一步只问同一类信息;显示当前步骤和总步骤,但不要伪造进度百分比。
|
|
31
|
+
- 支持保存草稿和恢复;关闭前说明哪些内容已保存。
|
|
32
|
+
- 完成页给出下一项具体任务,不只显示庆祝插画。
|
|
33
|
+
|
|
34
|
+
## 权限申请
|
|
35
|
+
|
|
36
|
+
- 在系统权限弹窗前展示预说明:为什么需要、将获得什么、拒绝后还能做什么。
|
|
37
|
+
- 一次只申请当前动作需要的权限;相机、定位、通知、通讯录不能在首屏批量索取。
|
|
38
|
+
- 拒绝后提供设置入口和不授权替代路径,不循环弹窗。
|
|
39
|
+
- 权限状态变化后立即刷新页面状态,不能要求用户重启应用。
|
|
40
|
+
|
|
41
|
+
## 订阅与付费
|
|
42
|
+
|
|
43
|
+
- 价值在价格之前;3-6 条图标化权益即可,避免长列表。
|
|
44
|
+
- 价格写清周期、续费、试用结束、税费和取消条件;这些信息放在 CTA 附近。
|
|
45
|
+
- 推荐方案用轻量边框/底色和说明强化,不用夸张倒计时或羞辱式拒绝按钮。
|
|
46
|
+
- 只有一个方案时不制造无意义选择;多个方案按典型用户目标命名。
|
|
47
|
+
- 购买后显示生效能力、订单入口、管理订阅和下一步。
|
|
48
|
+
|
|
49
|
+
## 结算与支付
|
|
50
|
+
|
|
51
|
+
- 结构顺序:商品/服务摘要 -> 地址/时间 -> 优惠 -> 支付方式 -> 金额明细 -> 提交。
|
|
52
|
+
- 总金额和主按钮固定可见,但不能遮挡最后一项;金额变化时说明原因。
|
|
53
|
+
- 提交后锁定重复支付并显示处理中;未知结果进入“正在确认”,不能直接当失败。
|
|
54
|
+
- 支付失败保留订单和输入,提供更换方式、重试和联系客服。
|
|
55
|
+
- 成功页展示订单号、核心信息、查看订单和继续使用。
|
|
56
|
+
|
|
57
|
+
## 搜索、筛选与列表
|
|
58
|
+
|
|
59
|
+
- 搜索框说明可搜字段;输入后提供清除、历史或建议,但不自动提交破坏输入。
|
|
60
|
+
- 高频筛选放在页面表层,低频筛选进入抽屉;已选条件用可移除标签展示。
|
|
61
|
+
- 排序和筛选结果数及时反馈;切换条件时保持列表容器高度并用骨架避免跳动。
|
|
62
|
+
- 每个卡片/行都要有对象身份、状态、关键元数据、时间和明确点击结果。
|
|
63
|
+
- 空结果区分“没有数据”和“筛选无匹配”,后者提供清除条件。
|
|
64
|
+
|
|
65
|
+
## 创建与编辑
|
|
66
|
+
|
|
67
|
+
- 字段按任务分组;必填项最少化,帮助文字靠近字段。
|
|
68
|
+
- 实时校验只用于格式和明确约束;服务端校验在提交后映射到对应字段和顶部摘要。
|
|
69
|
+
- 提交按钮具备默认、loading、成功、失败、disabled;失败不丢输入。
|
|
70
|
+
- 离开脏表单前提示;自动保存要显示最后保存时间和失败状态。
|
|
71
|
+
- 删除、归档、停用语义分开;不可逆操作二次确认并说明影响对象。
|
|
72
|
+
|
|
73
|
+
## 设置与个人中心
|
|
74
|
+
|
|
75
|
+
- 身份信息、账户安全、通知、隐私、外观、数据与帮助分组。
|
|
76
|
+
- 当前值比入口名更重要时在右侧展示,例如手机号尾号、语言、主题。
|
|
77
|
+
- 危险操作单独放在底部区域,不和普通设置混排。
|
|
78
|
+
- 修改手机号、密码、密钥和付款方式时重新验证身份。
|
|
79
|
+
- 注销前展示数据影响、冷静期、恢复方式和进度,不能只有一个红色按钮。
|
|
80
|
+
|
|
81
|
+
## 敏感资料采集
|
|
82
|
+
|
|
83
|
+
- 开始前说明采集内容、用途、存储方式、预计时间和所需环境。
|
|
84
|
+
- 先选择证件/资料类型,再打开相机或上传;提供手工录入备选。
|
|
85
|
+
- 相机界面使用深色背景、清晰取景框、实时成功边界和大触控按钮。
|
|
86
|
+
- 上传中显示进度、取消、失败重试;识别后让用户核对关键字段。
|
|
87
|
+
- 页面内嵌隐私和安全信号,但不使用无法验证的“绝对安全”宣传。
|
|
88
|
+
|
|
89
|
+
## 通用验收
|
|
90
|
+
|
|
91
|
+
- 键盘顺序、焦点环、错误关联、屏幕阅读标签和 44px 触摸目标可用。
|
|
92
|
+
- 刷新、后退、重复提交、弱网、超时、服务端 4xx/5xx 都有确定结果。
|
|
93
|
+
- 个人数据只在需要位置显示;日志、Toast 和错误信息不得泄露 token、SQL 或内部表名。
|
|
94
|
+
- 390px 移动端不横向滚动,键盘弹起不遮挡当前字段和主按钮。
|
|
@@ -1,218 +1,218 @@
|
|
|
1
|
-
# ui-design 详细参考 1
|
|
2
|
-
|
|
3
|
-
> 按需读取;本文件由 SKILL.md 的原章节无损拆分。
|
|
4
|
-
|
|
5
|
-
<!-- microi-progressive:chunk id=ui-design-007 sha256=bd9e24e1cdc0017a1bffccbe48505ad8d0a274d65f28f4e6a80e591dec813407 -->
|
|
6
|
-
## 颜色体系(CSS Variables — 支持主题切换)
|
|
7
|
-
|
|
8
|
-
所有颜色必须通过 CSS 变量引用,禁止硬编码色值。变量定义放在全局样式入口(PC 端 `src/styles/mci-design.scss`,移动端 `<style>` 内或独立 CSS 文件)。
|
|
9
|
-
|
|
10
|
-
### 暗黑主题(可选切换 — `data-theme="dark"`)
|
|
11
|
-
|
|
12
|
-
```css
|
|
13
|
-
:root[data-theme="dark"] {
|
|
14
|
-
/* 主色 — 科技紫蓝 */
|
|
15
|
-
--mci-color-primary: #722BFF;
|
|
16
|
-
--mci-color-primary-light: #9B5FFF;
|
|
17
|
-
--mci-color-primary-dark: #5A1FCC;
|
|
18
|
-
--mci-color-primary-glow: rgba(114, 43, 255, 0.35);
|
|
19
|
-
|
|
20
|
-
/* 辅助色 */
|
|
21
|
-
--mci-color-accent-red: #FF2E63;
|
|
22
|
-
--mci-color-accent-blue: #29B8FF;
|
|
23
|
-
--mci-color-accent-gold: #FFD100;
|
|
24
|
-
--mci-color-accent-cyan: #00F5D4;
|
|
25
|
-
--mci-color-accent-pink: #FF6EC7;
|
|
26
|
-
|
|
27
|
-
/* 语义色(成功/警告/错误/信息) */
|
|
28
|
-
--mci-color-success: #00F5D4;
|
|
29
|
-
--mci-color-warning: #FFD100;
|
|
30
|
-
--mci-color-danger: #FF2E63;
|
|
31
|
-
--mci-color-info: #29B8FF;
|
|
32
|
-
|
|
33
|
-
/* 背景 */
|
|
34
|
-
--mci-bg-base: #0A0A0F;
|
|
35
|
-
--mci-bg-elevated: #121218;
|
|
36
|
-
--mci-bg-surface: #1A1A24;
|
|
37
|
-
--mci-bg-card: rgba(255, 255, 255, 0.04);
|
|
38
|
-
--mci-bg-card-hover: rgba(255, 255, 255, 0.08);
|
|
39
|
-
--mci-bg-glass: rgba(255, 255, 255, 0.06);
|
|
40
|
-
--mci-bg-glass-border: rgba(255, 255, 255, 0.1);
|
|
41
|
-
--mci-bg-mask: rgba(0, 0, 0, 0.6);
|
|
42
|
-
|
|
43
|
-
/* 文字 */
|
|
44
|
-
--mci-text-primary: #FFFFFF;
|
|
45
|
-
--mci-text-secondary: #A0A0B8;
|
|
46
|
-
--mci-text-tertiary: #6B6B80;
|
|
47
|
-
--mci-text-disabled: #4A4A5A;
|
|
48
|
-
--mci-text-on-primary: #FFFFFF;
|
|
49
|
-
|
|
50
|
-
/* 边框 */
|
|
51
|
-
--mci-border-color: rgba(255, 255, 255, 0.08);
|
|
52
|
-
--mci-border-color-hover: rgba(255, 255, 255, 0.15);
|
|
53
|
-
--mci-border-glow: rgba(114, 43, 255, 0.3);
|
|
54
|
-
|
|
55
|
-
/* 渐变 */
|
|
56
|
-
--mci-gradient-primary: linear-gradient(135deg, #722BFF 0%, #29B8FF 100%);
|
|
57
|
-
--mci-gradient-hot: linear-gradient(135deg, #FF2E63 0%, #FF6EC7 100%);
|
|
58
|
-
--mci-gradient-gold: linear-gradient(135deg, #FFD100 0%, #FF8C00 100%);
|
|
59
|
-
--mci-gradient-cyber: linear-gradient(135deg, #00F5D4 0%, #722BFF 50%, #FF2E63 100%);
|
|
60
|
-
--mci-gradient-bg: radial-gradient(ellipse at 20% 50%, rgba(114, 43, 255, 0.08) 0%, transparent 60%);
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 亮色主题(默认)
|
|
65
|
-
|
|
66
|
-
```css
|
|
67
|
-
:root[data-theme="light"], :root {
|
|
68
|
-
--mci-color-primary: #6C2BD9;
|
|
69
|
-
--mci-color-primary-light: #8B5CF6;
|
|
70
|
-
--mci-color-primary-dark: #5521B5;
|
|
71
|
-
--mci-color-primary-glow: rgba(108, 43, 217, 0.15);
|
|
72
|
-
|
|
73
|
-
--mci-color-accent-red: #E8294A;
|
|
74
|
-
--mci-color-accent-blue: #2196F3;
|
|
75
|
-
--mci-color-accent-gold: #F59E0B;
|
|
76
|
-
--mci-color-accent-cyan: #06B6D4;
|
|
77
|
-
--mci-color-accent-pink: #EC4899;
|
|
78
|
-
|
|
79
|
-
--mci-color-success: #06B6D4;
|
|
80
|
-
--mci-color-warning: #F59E0B;
|
|
81
|
-
--mci-color-danger: #E8294A;
|
|
82
|
-
--mci-color-info: #2196F3;
|
|
83
|
-
|
|
84
|
-
--mci-bg-base: #F5F5FA;
|
|
85
|
-
--mci-bg-elevated: #FFFFFF;
|
|
86
|
-
--mci-bg-surface: #F0F0F8;
|
|
87
|
-
--mci-bg-card: rgba(255, 255, 255, 0.9);
|
|
88
|
-
--mci-bg-card-hover: rgba(255, 255, 255, 1);
|
|
89
|
-
--mci-bg-glass: rgba(255, 255, 255, 0.7);
|
|
90
|
-
--mci-bg-glass-border: rgba(0, 0, 0, 0.08);
|
|
91
|
-
--mci-bg-mask: rgba(0, 0, 0, 0.4);
|
|
92
|
-
|
|
93
|
-
--mci-text-primary: #1A1A2E;
|
|
94
|
-
--mci-text-secondary: #64648C;
|
|
95
|
-
--mci-text-tertiary: #9898B0;
|
|
96
|
-
--mci-text-disabled: #C0C0D0;
|
|
97
|
-
--mci-text-on-primary: #FFFFFF;
|
|
98
|
-
|
|
99
|
-
--mci-border-color: rgba(0, 0, 0, 0.06);
|
|
100
|
-
--mci-border-color-hover: rgba(0, 0, 0, 0.12);
|
|
101
|
-
--mci-border-glow: rgba(108, 43, 217, 0.2);
|
|
102
|
-
|
|
103
|
-
--mci-gradient-primary: linear-gradient(135deg, #6C2BD9 0%, #2196F3 100%);
|
|
104
|
-
--mci-gradient-hot: linear-gradient(135deg, #E8294A 0%, #EC4899 100%);
|
|
105
|
-
--mci-gradient-gold: linear-gradient(135deg, #F59E0B 0%, #EA580C 100%);
|
|
106
|
-
--mci-gradient-cyber: linear-gradient(135deg, #06B6D4 0%, #6C2BD9 50%, #E8294A 100%);
|
|
107
|
-
--mci-gradient-bg: radial-gradient(ellipse at 20% 50%, rgba(108, 43, 217, 0.04) 0%, transparent 60%);
|
|
108
|
-
}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### 颜色使用规则
|
|
112
|
-
|
|
113
|
-
- **主题模型分两层**:`data-theme="light|dark"` 控制明暗底色,`data-mci-palette="black|white|red|orange|yellow|green|cyan|blue|purple"` 控制品牌主色。
|
|
114
|
-
- **所有移动端与 PC 网站项目必须支持主流主色切换**:黑、白、红、橙、黄、绿、青、蓝、紫至少 9 个 palette。后台管理系统可由 Element Plus 主题承载,但也必须映射到 `--mci-*` token。
|
|
115
|
-
- **palette 不得只换按钮底色**:必须同步覆盖 `--mci-color-primary`、`--mci-color-primary-strong`、`--mci-text-on-primary`、`--mci-border-glow`、`--mci-gradient-primary`、`--mci-shadow-button`、`--mci-shadow-button-hover`。
|
|
116
|
-
- **白色/黄色主题必须单独处理文字颜色**:主按钮文字使用 `--mci-text-on-primary`,白色主题用深色字,黄色主题用深棕/深灰字,禁止固定白字。
|
|
117
|
-
- **主色**用于核心交互元素(按钮、链接、选中态)
|
|
118
|
-
- **Accent Red / Danger** 用于危险操作、错误、热门标记
|
|
119
|
-
- **Accent Blue / Info** 用于信息提示、次要按钮
|
|
120
|
-
- **Accent Gold / Warning** 用于重要强调、VIP 标签、价格、警告
|
|
121
|
-
- **Accent Cyan / Success** 用于成功状态、在线标识
|
|
122
|
-
- 默认主题为亮色 + 红色 palette;暗黑主题和主色 palette 都作为用户可选项。
|
|
123
|
-
- 用户主题偏好持久化到 `mci-theme`、`mci-palette`、`mci-shape`,初次访问可跟随系统 `prefers-color-scheme`。
|
|
124
|
-
|
|
125
|
-
### 主色 Palette 必备定义
|
|
126
|
-
|
|
127
|
-
```css
|
|
128
|
-
:root[data-mci-palette="black"] { --mci-color-primary:#111827; --mci-text-on-primary:#fff; }
|
|
129
|
-
:root[data-mci-palette="white"] { --mci-color-primary:#F8FAFC; --mci-text-on-primary:#111827; }
|
|
130
|
-
:root[data-mci-palette="red"] { --mci-color-primary:#B51220; --mci-text-on-primary:#fff; }
|
|
131
|
-
:root[data-mci-palette="orange"] { --mci-color-primary:#EA580C; --mci-text-on-primary:#fff; }
|
|
132
|
-
:root[data-mci-palette="yellow"] { --mci-color-primary:#D9A23A; --mci-text-on-primary:#3A2500; }
|
|
133
|
-
:root[data-mci-palette="green"] { --mci-color-primary:#16A34A; --mci-text-on-primary:#fff; }
|
|
134
|
-
:root[data-mci-palette="cyan"] { --mci-color-primary:#0891B2; --mci-text-on-primary:#fff; }
|
|
135
|
-
:root[data-mci-palette="blue"] { --mci-color-primary:#2563EB; --mci-text-on-primary:#fff; }
|
|
136
|
-
:root[data-mci-palette="purple"] { --mci-color-primary:#7C3AED; --mci-text-on-primary:#fff; }
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
实际项目优先直接使用 `Microi.UI/src/theme/tokens.css`,不要复制这段最小示例;新增 palette 时必须补充悬浮阴影、边框高光和渐变。
|
|
140
|
-
|
|
141
|
-
### 移动端可读性底线
|
|
142
|
-
|
|
143
|
-
- 移动端首页、商城、分享海报、资产页必须优先保证阅读清楚。浅色背景上的正文、占位文字、标签、金额、按钮文字不得使用低透明度浅灰或低对比金色。
|
|
144
|
-
- 移动端底部导航、首页快捷入口、个人中心快捷入口的图标对比度与文字同等重要。彩色圆底图标必须显式设定内部图标色,并在每个主题截图确认可见。
|
|
145
|
-
- 关键正文与背景对比度建议不低于 4.5:1;大标题、海报大字、促销卡标题不低于 3:1。金色渐变按钮默认使用深红/深棕文字,不使用白字。
|
|
146
|
-
- 在渐变、图片、红金背景上放文字时,文字必须是实色且有足够字重;不要依赖 `opacity: .6` 这类弱化文字承载业务信息。
|
|
147
|
-
- 完成移动端风格改造后,必须配合 Playwright、浏览器 DevTools、微信开发者工具自动化或项目已有 E2E 工具进行截图和关键文字对比度检查,复核首页第一屏、列表页、登录页、分享海报、空态/未登录态和关键按钮。
|
|
148
|
-
- 用户要求“全自动化测试”“自动化验收”“跑完整测试”等时,如果本次涉及 UI/前端改动,自动化链路必须包含截图验证或视觉断言;只运行构建、lint、静态检查不能宣称已完成全自动化 UI 验收。若当前环境无法启动浏览器/小程序开发者工具,必须明确说明未完成截图验证。
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
<!-- /microi-progressive:chunk -->
|
|
153
|
-
<!-- microi-progressive:chunk id=ui-design-008 sha256=01af2cebf85683f180693fd76cf6c5f1db4380274a9924acf5542b7b5f868ebc -->
|
|
154
|
-
## 阴影体系(层次与质感)
|
|
155
|
-
|
|
156
|
-
阴影是塑造层次感、可点击性和高级质感的关键。采用多层阴影叠加,但不要做脏、糊、重的阴影。
|
|
157
|
-
|
|
158
|
-
```css
|
|
159
|
-
:root {
|
|
160
|
-
/* 基础层级阴影 */
|
|
161
|
-
--mci-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.25);
|
|
162
|
-
--mci-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.3),
|
|
163
|
-
0 0 12px var(--mci-color-primary-glow);
|
|
164
|
-
--mci-shadow-lg: 0 8px 30px rgba(0, 0, 0, 0.35),
|
|
165
|
-
0 0 20px var(--mci-color-primary-glow);
|
|
166
|
-
--mci-shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.5),
|
|
167
|
-
0 0 40px var(--mci-color-primary-glow);
|
|
168
|
-
|
|
169
|
-
/* 专用阴影 */
|
|
170
|
-
--mci-shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3),
|
|
171
|
-
0 0 15px rgba(114, 43, 255, 0.08);
|
|
172
|
-
--mci-shadow-card-hover: 0 8px 30px rgba(0, 0, 0, 0.4),
|
|
173
|
-
0 0 25px rgba(114, 43, 255, 0.15),
|
|
174
|
-
0 0 60px rgba(114, 43, 255, 0.05);
|
|
175
|
-
--mci-shadow-button: 0 4px 15px var(--mci-color-primary-glow);
|
|
176
|
-
--mci-shadow-button-hover: 0 8px 25px var(--mci-color-primary-glow);
|
|
177
|
-
--mci-shadow-dialog: 0 25px 80px rgba(0, 0, 0, 0.6),
|
|
178
|
-
0 0 50px rgba(114, 43, 255, 0.1);
|
|
179
|
-
--mci-shadow-dropdown: 0 10px 40px rgba(0, 0, 0, 0.45),
|
|
180
|
-
0 0 20px rgba(114, 43, 255, 0.08);
|
|
181
|
-
|
|
182
|
-
/* 强调发光 */
|
|
183
|
-
--mci-glow-primary: 0 0 15px var(--mci-color-primary-glow),
|
|
184
|
-
0 0 45px rgba(114, 43, 255, 0.1);
|
|
185
|
-
--mci-glow-red: 0 0 15px rgba(255, 46, 99, 0.3),
|
|
186
|
-
0 0 45px rgba(255, 46, 99, 0.1);
|
|
187
|
-
--mci-glow-cyan: 0 0 15px rgba(0, 245, 212, 0.3),
|
|
188
|
-
0 0 45px rgba(0, 245, 212, 0.1);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/* 移动端阴影减半 — 移动端 GPU 较弱,且小屏幕不需要过强阴影 */
|
|
192
|
-
@media (max-width: 768px) {
|
|
193
|
-
:root {
|
|
194
|
-
--mci-shadow-card: 0 2px 12px rgba(0, 0, 0, 0.3),
|
|
195
|
-
0 0 8px rgba(114, 43, 255, 0.06);
|
|
196
|
-
--mci-shadow-card-hover: 0 4px 18px rgba(0, 0, 0, 0.4),
|
|
197
|
-
0 0 12px rgba(114, 43, 255, 0.1);
|
|
198
|
-
--mci-shadow-button: 0 2px 10px var(--mci-color-primary-glow);
|
|
199
|
-
--mci-shadow-dialog: 0 12px 40px rgba(0, 0, 0, 0.6);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### 阴影使用规则
|
|
205
|
-
|
|
206
|
-
| 场景 | 使用阴影 |
|
|
207
|
-
|------|---------|
|
|
208
|
-
| 卡片默认态 | `--mci-shadow-card` |
|
|
209
|
-
| 卡片悬浮态(PC) | `--mci-shadow-card-hover` |
|
|
210
|
-
| 按钮默认态 | `--mci-shadow-button` |
|
|
211
|
-
| 按钮按下态 | `--mci-shadow-button-hover`(移动端无 hover,只用按下/默认) |
|
|
212
|
-
| 弹窗/抽屉 | `--mci-shadow-dialog` |
|
|
213
|
-
| 下拉菜单 | `--mci-shadow-dropdown` |
|
|
214
|
-
| 强调元素 | `--mci-glow-*` |
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
<!-- /microi-progressive:chunk -->
|
|
1
|
+
# ui-design 详细参考 1
|
|
2
|
+
|
|
3
|
+
> 按需读取;本文件由 SKILL.md 的原章节无损拆分。
|
|
4
|
+
|
|
5
|
+
<!-- microi-progressive:chunk id=ui-design-007 sha256=bd9e24e1cdc0017a1bffccbe48505ad8d0a274d65f28f4e6a80e591dec813407 -->
|
|
6
|
+
## 颜色体系(CSS Variables — 支持主题切换)
|
|
7
|
+
|
|
8
|
+
所有颜色必须通过 CSS 变量引用,禁止硬编码色值。变量定义放在全局样式入口(PC 端 `src/styles/mci-design.scss`,移动端 `<style>` 内或独立 CSS 文件)。
|
|
9
|
+
|
|
10
|
+
### 暗黑主题(可选切换 — `data-theme="dark"`)
|
|
11
|
+
|
|
12
|
+
```css
|
|
13
|
+
:root[data-theme="dark"] {
|
|
14
|
+
/* 主色 — 科技紫蓝 */
|
|
15
|
+
--mci-color-primary: #722BFF;
|
|
16
|
+
--mci-color-primary-light: #9B5FFF;
|
|
17
|
+
--mci-color-primary-dark: #5A1FCC;
|
|
18
|
+
--mci-color-primary-glow: rgba(114, 43, 255, 0.35);
|
|
19
|
+
|
|
20
|
+
/* 辅助色 */
|
|
21
|
+
--mci-color-accent-red: #FF2E63;
|
|
22
|
+
--mci-color-accent-blue: #29B8FF;
|
|
23
|
+
--mci-color-accent-gold: #FFD100;
|
|
24
|
+
--mci-color-accent-cyan: #00F5D4;
|
|
25
|
+
--mci-color-accent-pink: #FF6EC7;
|
|
26
|
+
|
|
27
|
+
/* 语义色(成功/警告/错误/信息) */
|
|
28
|
+
--mci-color-success: #00F5D4;
|
|
29
|
+
--mci-color-warning: #FFD100;
|
|
30
|
+
--mci-color-danger: #FF2E63;
|
|
31
|
+
--mci-color-info: #29B8FF;
|
|
32
|
+
|
|
33
|
+
/* 背景 */
|
|
34
|
+
--mci-bg-base: #0A0A0F;
|
|
35
|
+
--mci-bg-elevated: #121218;
|
|
36
|
+
--mci-bg-surface: #1A1A24;
|
|
37
|
+
--mci-bg-card: rgba(255, 255, 255, 0.04);
|
|
38
|
+
--mci-bg-card-hover: rgba(255, 255, 255, 0.08);
|
|
39
|
+
--mci-bg-glass: rgba(255, 255, 255, 0.06);
|
|
40
|
+
--mci-bg-glass-border: rgba(255, 255, 255, 0.1);
|
|
41
|
+
--mci-bg-mask: rgba(0, 0, 0, 0.6);
|
|
42
|
+
|
|
43
|
+
/* 文字 */
|
|
44
|
+
--mci-text-primary: #FFFFFF;
|
|
45
|
+
--mci-text-secondary: #A0A0B8;
|
|
46
|
+
--mci-text-tertiary: #6B6B80;
|
|
47
|
+
--mci-text-disabled: #4A4A5A;
|
|
48
|
+
--mci-text-on-primary: #FFFFFF;
|
|
49
|
+
|
|
50
|
+
/* 边框 */
|
|
51
|
+
--mci-border-color: rgba(255, 255, 255, 0.08);
|
|
52
|
+
--mci-border-color-hover: rgba(255, 255, 255, 0.15);
|
|
53
|
+
--mci-border-glow: rgba(114, 43, 255, 0.3);
|
|
54
|
+
|
|
55
|
+
/* 渐变 */
|
|
56
|
+
--mci-gradient-primary: linear-gradient(135deg, #722BFF 0%, #29B8FF 100%);
|
|
57
|
+
--mci-gradient-hot: linear-gradient(135deg, #FF2E63 0%, #FF6EC7 100%);
|
|
58
|
+
--mci-gradient-gold: linear-gradient(135deg, #FFD100 0%, #FF8C00 100%);
|
|
59
|
+
--mci-gradient-cyber: linear-gradient(135deg, #00F5D4 0%, #722BFF 50%, #FF2E63 100%);
|
|
60
|
+
--mci-gradient-bg: radial-gradient(ellipse at 20% 50%, rgba(114, 43, 255, 0.08) 0%, transparent 60%);
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 亮色主题(默认)
|
|
65
|
+
|
|
66
|
+
```css
|
|
67
|
+
:root[data-theme="light"], :root {
|
|
68
|
+
--mci-color-primary: #6C2BD9;
|
|
69
|
+
--mci-color-primary-light: #8B5CF6;
|
|
70
|
+
--mci-color-primary-dark: #5521B5;
|
|
71
|
+
--mci-color-primary-glow: rgba(108, 43, 217, 0.15);
|
|
72
|
+
|
|
73
|
+
--mci-color-accent-red: #E8294A;
|
|
74
|
+
--mci-color-accent-blue: #2196F3;
|
|
75
|
+
--mci-color-accent-gold: #F59E0B;
|
|
76
|
+
--mci-color-accent-cyan: #06B6D4;
|
|
77
|
+
--mci-color-accent-pink: #EC4899;
|
|
78
|
+
|
|
79
|
+
--mci-color-success: #06B6D4;
|
|
80
|
+
--mci-color-warning: #F59E0B;
|
|
81
|
+
--mci-color-danger: #E8294A;
|
|
82
|
+
--mci-color-info: #2196F3;
|
|
83
|
+
|
|
84
|
+
--mci-bg-base: #F5F5FA;
|
|
85
|
+
--mci-bg-elevated: #FFFFFF;
|
|
86
|
+
--mci-bg-surface: #F0F0F8;
|
|
87
|
+
--mci-bg-card: rgba(255, 255, 255, 0.9);
|
|
88
|
+
--mci-bg-card-hover: rgba(255, 255, 255, 1);
|
|
89
|
+
--mci-bg-glass: rgba(255, 255, 255, 0.7);
|
|
90
|
+
--mci-bg-glass-border: rgba(0, 0, 0, 0.08);
|
|
91
|
+
--mci-bg-mask: rgba(0, 0, 0, 0.4);
|
|
92
|
+
|
|
93
|
+
--mci-text-primary: #1A1A2E;
|
|
94
|
+
--mci-text-secondary: #64648C;
|
|
95
|
+
--mci-text-tertiary: #9898B0;
|
|
96
|
+
--mci-text-disabled: #C0C0D0;
|
|
97
|
+
--mci-text-on-primary: #FFFFFF;
|
|
98
|
+
|
|
99
|
+
--mci-border-color: rgba(0, 0, 0, 0.06);
|
|
100
|
+
--mci-border-color-hover: rgba(0, 0, 0, 0.12);
|
|
101
|
+
--mci-border-glow: rgba(108, 43, 217, 0.2);
|
|
102
|
+
|
|
103
|
+
--mci-gradient-primary: linear-gradient(135deg, #6C2BD9 0%, #2196F3 100%);
|
|
104
|
+
--mci-gradient-hot: linear-gradient(135deg, #E8294A 0%, #EC4899 100%);
|
|
105
|
+
--mci-gradient-gold: linear-gradient(135deg, #F59E0B 0%, #EA580C 100%);
|
|
106
|
+
--mci-gradient-cyber: linear-gradient(135deg, #06B6D4 0%, #6C2BD9 50%, #E8294A 100%);
|
|
107
|
+
--mci-gradient-bg: radial-gradient(ellipse at 20% 50%, rgba(108, 43, 217, 0.04) 0%, transparent 60%);
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 颜色使用规则
|
|
112
|
+
|
|
113
|
+
- **主题模型分两层**:`data-theme="light|dark"` 控制明暗底色,`data-mci-palette="black|white|red|orange|yellow|green|cyan|blue|purple"` 控制品牌主色。
|
|
114
|
+
- **所有移动端与 PC 网站项目必须支持主流主色切换**:黑、白、红、橙、黄、绿、青、蓝、紫至少 9 个 palette。后台管理系统可由 Element Plus 主题承载,但也必须映射到 `--mci-*` token。
|
|
115
|
+
- **palette 不得只换按钮底色**:必须同步覆盖 `--mci-color-primary`、`--mci-color-primary-strong`、`--mci-text-on-primary`、`--mci-border-glow`、`--mci-gradient-primary`、`--mci-shadow-button`、`--mci-shadow-button-hover`。
|
|
116
|
+
- **白色/黄色主题必须单独处理文字颜色**:主按钮文字使用 `--mci-text-on-primary`,白色主题用深色字,黄色主题用深棕/深灰字,禁止固定白字。
|
|
117
|
+
- **主色**用于核心交互元素(按钮、链接、选中态)
|
|
118
|
+
- **Accent Red / Danger** 用于危险操作、错误、热门标记
|
|
119
|
+
- **Accent Blue / Info** 用于信息提示、次要按钮
|
|
120
|
+
- **Accent Gold / Warning** 用于重要强调、VIP 标签、价格、警告
|
|
121
|
+
- **Accent Cyan / Success** 用于成功状态、在线标识
|
|
122
|
+
- 默认主题为亮色 + 红色 palette;暗黑主题和主色 palette 都作为用户可选项。
|
|
123
|
+
- 用户主题偏好持久化到 `mci-theme`、`mci-palette`、`mci-shape`,初次访问可跟随系统 `prefers-color-scheme`。
|
|
124
|
+
|
|
125
|
+
### 主色 Palette 必备定义
|
|
126
|
+
|
|
127
|
+
```css
|
|
128
|
+
:root[data-mci-palette="black"] { --mci-color-primary:#111827; --mci-text-on-primary:#fff; }
|
|
129
|
+
:root[data-mci-palette="white"] { --mci-color-primary:#F8FAFC; --mci-text-on-primary:#111827; }
|
|
130
|
+
:root[data-mci-palette="red"] { --mci-color-primary:#B51220; --mci-text-on-primary:#fff; }
|
|
131
|
+
:root[data-mci-palette="orange"] { --mci-color-primary:#EA580C; --mci-text-on-primary:#fff; }
|
|
132
|
+
:root[data-mci-palette="yellow"] { --mci-color-primary:#D9A23A; --mci-text-on-primary:#3A2500; }
|
|
133
|
+
:root[data-mci-palette="green"] { --mci-color-primary:#16A34A; --mci-text-on-primary:#fff; }
|
|
134
|
+
:root[data-mci-palette="cyan"] { --mci-color-primary:#0891B2; --mci-text-on-primary:#fff; }
|
|
135
|
+
:root[data-mci-palette="blue"] { --mci-color-primary:#2563EB; --mci-text-on-primary:#fff; }
|
|
136
|
+
:root[data-mci-palette="purple"] { --mci-color-primary:#7C3AED; --mci-text-on-primary:#fff; }
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
实际项目优先直接使用 `Microi.UI/src/theme/tokens.css`,不要复制这段最小示例;新增 palette 时必须补充悬浮阴影、边框高光和渐变。
|
|
140
|
+
|
|
141
|
+
### 移动端可读性底线
|
|
142
|
+
|
|
143
|
+
- 移动端首页、商城、分享海报、资产页必须优先保证阅读清楚。浅色背景上的正文、占位文字、标签、金额、按钮文字不得使用低透明度浅灰或低对比金色。
|
|
144
|
+
- 移动端底部导航、首页快捷入口、个人中心快捷入口的图标对比度与文字同等重要。彩色圆底图标必须显式设定内部图标色,并在每个主题截图确认可见。
|
|
145
|
+
- 关键正文与背景对比度建议不低于 4.5:1;大标题、海报大字、促销卡标题不低于 3:1。金色渐变按钮默认使用深红/深棕文字,不使用白字。
|
|
146
|
+
- 在渐变、图片、红金背景上放文字时,文字必须是实色且有足够字重;不要依赖 `opacity: .6` 这类弱化文字承载业务信息。
|
|
147
|
+
- 完成移动端风格改造后,必须配合 Playwright、浏览器 DevTools、微信开发者工具自动化或项目已有 E2E 工具进行截图和关键文字对比度检查,复核首页第一屏、列表页、登录页、分享海报、空态/未登录态和关键按钮。
|
|
148
|
+
- 用户要求“全自动化测试”“自动化验收”“跑完整测试”等时,如果本次涉及 UI/前端改动,自动化链路必须包含截图验证或视觉断言;只运行构建、lint、静态检查不能宣称已完成全自动化 UI 验收。若当前环境无法启动浏览器/小程序开发者工具,必须明确说明未完成截图验证。
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
<!-- /microi-progressive:chunk -->
|
|
153
|
+
<!-- microi-progressive:chunk id=ui-design-008 sha256=01af2cebf85683f180693fd76cf6c5f1db4380274a9924acf5542b7b5f868ebc -->
|
|
154
|
+
## 阴影体系(层次与质感)
|
|
155
|
+
|
|
156
|
+
阴影是塑造层次感、可点击性和高级质感的关键。采用多层阴影叠加,但不要做脏、糊、重的阴影。
|
|
157
|
+
|
|
158
|
+
```css
|
|
159
|
+
:root {
|
|
160
|
+
/* 基础层级阴影 */
|
|
161
|
+
--mci-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.25);
|
|
162
|
+
--mci-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.3),
|
|
163
|
+
0 0 12px var(--mci-color-primary-glow);
|
|
164
|
+
--mci-shadow-lg: 0 8px 30px rgba(0, 0, 0, 0.35),
|
|
165
|
+
0 0 20px var(--mci-color-primary-glow);
|
|
166
|
+
--mci-shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.5),
|
|
167
|
+
0 0 40px var(--mci-color-primary-glow);
|
|
168
|
+
|
|
169
|
+
/* 专用阴影 */
|
|
170
|
+
--mci-shadow-card: 0 4px 20px rgba(0, 0, 0, 0.3),
|
|
171
|
+
0 0 15px rgba(114, 43, 255, 0.08);
|
|
172
|
+
--mci-shadow-card-hover: 0 8px 30px rgba(0, 0, 0, 0.4),
|
|
173
|
+
0 0 25px rgba(114, 43, 255, 0.15),
|
|
174
|
+
0 0 60px rgba(114, 43, 255, 0.05);
|
|
175
|
+
--mci-shadow-button: 0 4px 15px var(--mci-color-primary-glow);
|
|
176
|
+
--mci-shadow-button-hover: 0 8px 25px var(--mci-color-primary-glow);
|
|
177
|
+
--mci-shadow-dialog: 0 25px 80px rgba(0, 0, 0, 0.6),
|
|
178
|
+
0 0 50px rgba(114, 43, 255, 0.1);
|
|
179
|
+
--mci-shadow-dropdown: 0 10px 40px rgba(0, 0, 0, 0.45),
|
|
180
|
+
0 0 20px rgba(114, 43, 255, 0.08);
|
|
181
|
+
|
|
182
|
+
/* 强调发光 */
|
|
183
|
+
--mci-glow-primary: 0 0 15px var(--mci-color-primary-glow),
|
|
184
|
+
0 0 45px rgba(114, 43, 255, 0.1);
|
|
185
|
+
--mci-glow-red: 0 0 15px rgba(255, 46, 99, 0.3),
|
|
186
|
+
0 0 45px rgba(255, 46, 99, 0.1);
|
|
187
|
+
--mci-glow-cyan: 0 0 15px rgba(0, 245, 212, 0.3),
|
|
188
|
+
0 0 45px rgba(0, 245, 212, 0.1);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* 移动端阴影减半 — 移动端 GPU 较弱,且小屏幕不需要过强阴影 */
|
|
192
|
+
@media (max-width: 768px) {
|
|
193
|
+
:root {
|
|
194
|
+
--mci-shadow-card: 0 2px 12px rgba(0, 0, 0, 0.3),
|
|
195
|
+
0 0 8px rgba(114, 43, 255, 0.06);
|
|
196
|
+
--mci-shadow-card-hover: 0 4px 18px rgba(0, 0, 0, 0.4),
|
|
197
|
+
0 0 12px rgba(114, 43, 255, 0.1);
|
|
198
|
+
--mci-shadow-button: 0 2px 10px var(--mci-color-primary-glow);
|
|
199
|
+
--mci-shadow-dialog: 0 12px 40px rgba(0, 0, 0, 0.6);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### 阴影使用规则
|
|
205
|
+
|
|
206
|
+
| 场景 | 使用阴影 |
|
|
207
|
+
|------|---------|
|
|
208
|
+
| 卡片默认态 | `--mci-shadow-card` |
|
|
209
|
+
| 卡片悬浮态(PC) | `--mci-shadow-card-hover` |
|
|
210
|
+
| 按钮默认态 | `--mci-shadow-button` |
|
|
211
|
+
| 按钮按下态 | `--mci-shadow-button-hover`(移动端无 hover,只用按下/默认) |
|
|
212
|
+
| 弹窗/抽屉 | `--mci-shadow-dialog` |
|
|
213
|
+
| 下拉菜单 | `--mci-shadow-dropdown` |
|
|
214
|
+
| 强调元素 | `--mci-glow-*` |
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
<!-- /microi-progressive:chunk -->
|