sky-ui-kit 0.1.10 → 0.1.12
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/README.md +13 -22
- package/components.json +1 -1
- package/docs/AI-CHANGELOG.md +14 -0
- package/docs/AI-GUIDE.md +9 -14
- package/docs/CSS-THEME.md +6 -0
- package/docs/HTML-INTEGRATION.md +99 -43
- package/docs/INTEGRATION.md +6 -0
- package/docs/ON-DEMAND.md +2 -0
- package/docs/RELEASE-HISTORY.md +12 -0
- package/docs/START-HERE.md +55 -0
- package/examples/html/migration/after.html +38 -0
- package/examples/html/migration/before.html +34 -0
- package/examples/html/migration/business.js +18 -0
- package/examples/html/migration/layout.css +9 -0
- package/examples/html/migration/legacy-controls.css +8 -0
- package/llms-full.txt +336 -66
- package/llms.txt +7 -3
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# sky-ui-kit 组件与样式库
|
|
2
2
|
|
|
3
|
-
## AI
|
|
3
|
+
## AI 接入入口:先询问用户
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
当用户要求引入 sky-ui-kit 时,必须先读取[引导式接入流程](docs/START-HERE.md),先询问用户接入 HTML/JavaScript 还是 Vue,再询问页面范围及接入目标,等待回答后配置。不得仅根据项目文件猜测路线;用户在当前对话已经明确的答案不重复询问。HTML 换肤保留原 DOM、业务事件和表单,不要求 Vue。按所选路线读取后续指南并合并项目 AGENTS.md;不能以安装成功或 CSS 已加载代替视觉及行为验收。
|
|
6
6
|
|
|
7
7
|
HTML 按需入口从 0.1.10 提供;0.1.9 使用完整 model-workspace.css。示例网站快速开始下方提供“HTML 按需样式接入”演示和完整可复制代码。
|
|
8
8
|
|
|
@@ -18,10 +18,10 @@ HTML 按需入口从 0.1.10 提供;0.1.9 使用完整 model-workspace.css。
|
|
|
18
18
|
|
|
19
19
|
当前实际使用清单见 [COMPONENT-USAGE.md](docs/COMPONENT-USAGE.md),逐模块替换、图标 Vite 配置、路由/地图薄适配、主题与验证方案见 [ADAPTATION.md](docs/ADAPTATION.md)。图标页面与 AI 文档共用 src/icon-setup-examples.ts。更新参考项目后在库目录运行 `node scripts/audit-project.mjs "D:\Work\01-项目code\一体化平台\webv1"` 与 `node scripts/scan-component-usage.mjs "D:\Work\01-项目code\一体化平台\webv1"`,再生成 AI 文档;这些脚本只读取原项目。
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## 库维护者本地运行
|
|
22
22
|
|
|
23
23
|
```powershell
|
|
24
|
-
cd
|
|
24
|
+
cd <组件库检出目录>
|
|
25
25
|
npm install
|
|
26
26
|
npm run dev
|
|
27
27
|
```
|
|
@@ -69,7 +69,7 @@ ProjectMenu 从原 Header 和 SideMenu 提取独立菜单样式,仅展示横
|
|
|
69
69
|
|
|
70
70
|
## 接入其他项目
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
以下为 Vue 组件路线;原生 HTML 使用 [HTML 接入指南](docs/HTML-INTEGRATION.md),不需要 Element Plus CSS 或 Vue。Vue 路线无需导入 useThemeStore,也无需安装 Pinia,按顺序引入 Element Plus CSS 与库 CSS,项目已有的同名变量优先;未定义的变量采用库默认值。详细优先级及暗色规则见 [CSS-THEME.md](docs/CSS-THEME.md)。
|
|
73
73
|
|
|
74
74
|
```ts
|
|
75
75
|
import 'element-plus/dist/index.css'
|
|
@@ -87,21 +87,14 @@ npm run build
|
|
|
87
87
|
npm pack --dry-run
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
`site-dist/` 是可部署的预览网站,`dist/` 是 npm 库产物。npm
|
|
91
|
-
|
|
92
|
-
## 核对完成后发布
|
|
93
|
-
|
|
94
|
-
当前 `private: true` 用于防止未审核主题发布。包名已确定为 `sky-ui-kit`,尚未核验 npm 名称可用性。发布前确认包名或 npm scope、版本、代码及字体授权、许可证,并将 `private` 删除或改为 false。若使用 scope,保持接入示例与最终包名一致。
|
|
95
|
-
|
|
96
|
-
```sh
|
|
97
|
-
npm login
|
|
98
|
-
npm run typecheck
|
|
99
|
-
npm pack --dry-run
|
|
100
|
-
npm publish --access public
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
`prepack` 会自动构建。不要把 npm token 写入此目录。本次仅准备预览及包结构,等待样式核对后再发布。
|
|
90
|
+
`site-dist/` 是可部署的预览网站,`dist/` 是 npm 库产物。npm 包包含 dist 库产物、包内 AI/API/迁移文档、HTML 示例及 README;不包含预览网站、主题 store 运行时或原业务代码。
|
|
104
91
|
|
|
92
|
+
## 当前发布状态与维护发布流程
|
|
93
|
+
|
|
94
|
+
当前发布版本为 0.1.12,package.json 未设置 private 限制。HTML 按需样式和数字增强入口从 0.1.10 提供;0.1.12 增加先询问 HTML/Vue 的引导式接入流程;0.1.11 包含相对链接修复、透明地图覆盖层及旧页面迁移文档和示例。已安装的 0.1.10 需升级后获得修订。
|
|
95
|
+
|
|
96
|
+
消费项目无需执行库构建或发布操作。维护者仅在明确获得发布授权后,更新版本、运行 npm run docs:ai、类型检查和构建,核对包内文件后再发布。prepack 会生成文档并构建,不应把它当成纯检查命令。早期未发布状态见 [开发历史归档](docs/RELEASE-HISTORY.md)。
|
|
97
|
+
|
|
105
98
|
## 样式隔离
|
|
106
99
|
|
|
107
100
|
默认 style.css 只给库组件作用域设置样式,作用域之外的原生 Element Plus 不受库 CSS 覆盖。主动整站换肤才额外导入 global.css。浮层、局部变量和默认 teleported 差异见 [CSS-THEME.md](docs/CSS-THEME.md)。开发验证页:[样式隔离验证](http://127.0.0.1:5180/isolation.html)。
|
|
@@ -113,6 +106,4 @@ npm publish --access public
|
|
|
113
106
|
包内提供 llms.txt、llms-full.txt、components.json 和 docs/AI-GUIDE.md、docs/COMPONENT-API.md。让 AI 工具读取 node_modules/sky-ui-kit/llms.txt 开始,再按链接读取详细 API。文档不会随 npm install 自动进入 AI 上下文。项目组件 API 根据源码生成,Ui 基础组件关联 Element Plus 官方 API 和类型声明。
|
|
114
107
|
|
|
115
108
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
通过 npm 安装 sky-ui-kit,main.ts 依次引入 element-plus/dist/index.css 和 sky-ui-kit/style.css,包内已包含默认主题和组件样式,不依赖开发者电脑、原业务项目或远程样式服务。CSS 变量允许运行时主题覆盖。图标资源可从 sky-ui-kit/icons 显式注册,或由应用提供 sprite;SvgIcon 不再自动携带图库。按组件入口见 docs/ON-DEMAND.md。
|
|
109
|
+
早期 0.1.7 安装说明已移至 [开发历史归档](docs/RELEASE-HISTORY.md)。
|
package/components.json
CHANGED
package/docs/AI-CHANGELOG.md
CHANGED
|
@@ -517,3 +517,17 @@ HTML 控件直接复用 scoped-theme.css 的 userssite 主题变量,与 Vue
|
|
|
517
517
|
## 0.1.10 发布内容
|
|
518
518
|
|
|
519
519
|
包含 HTML 按需主题/面板/按钮/输入样式、数字输入增强脚本、原生选择与上传样式、22 项表单验收目录及 AI 接入规则。发布前重新生成文档和构建,并检查包内出口。浏览器视觉验收及独立消费业务项目测试仍由用户继续完成。
|
|
520
|
+
|
|
521
|
+
## 2026-11-04:0.1.10 原生 HTML 迁移文档修订(未发布)
|
|
522
|
+
|
|
523
|
+
修正 AI 指南相对链接及 README 发布状态;新增透明地图覆盖层/主题面板/body 浮层示例,补齐旧页面 CSS 皮肤移除、布局保留和逐状态验收。迁移前后共用布局及业务脚本,不要求 Vue、不增加业务项目专用全局覆盖。详见 [HTML 迁移](HTML-INTEGRATION.md)和[迁移后示例](../examples/html/migration/after.html)。本轮仅文档、示例及生成器修订,未构建、发布或浏览器验证。
|
|
524
|
+
|
|
525
|
+
本轮验证:相对链接检查覆盖源码文档、生成 AI 文档及 npm files 清单;迁移前后 DOM 检查覆盖相同 ID、查询/重置、地图点击监听、弹窗事件接线和主题同步。弹窗方法使用测试替身,未验证实际焦点、地图拖拽、布局或视觉状态。没有改动库样式代码或业务消费项目,版本仍为 0.1.10,修订尚未发布。
|
|
526
|
+
|
|
527
|
+
## 0.1.11 发布内容
|
|
528
|
+
|
|
529
|
+
修正 AI 指南及合并文档相对链接,更新 README 当前发布状态并归档历史说明。原生 HTML 路线明确保留 DOM/事件/表单且无需 Vue;新增透明地图覆盖层、独立浮层主题、旧皮肤移除及前后迁移示例。发布检查包括生成文档、相对链接/包内路径、类型和库构建;未进行浏览器视觉或真实地图验收。
|
|
530
|
+
|
|
531
|
+
## 0.1.12 引导式接入
|
|
532
|
+
|
|
533
|
+
新增唯一 START-HERE.md 入口,要求先询问 HTML/JavaScript 或 Vue 并等待用户回答,再确认目标与范围;明确回答不重复问,不确定时只读检查后请用户确认。README、llms 生成源、AI/HTML/迁移/主题/按需指南及网站快速开始共用此规则。HTML 保留已有交互,Vue 为用户明确选择的路线。包不会自行弹出问答,需 AI 阅读文档后执行。
|
package/docs/AI-GUIDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# sky-ui-kit:AI 使用指南
|
|
2
2
|
|
|
3
|
-
## AI
|
|
3
|
+
## AI 接入入口:先询问用户
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
当用户要求引入 sky-ui-kit 时,必须先读取[引导式接入流程](START-HERE.md),先询问用户接入 HTML/JavaScript 还是 Vue,再询问页面范围及接入目标,等待回答后配置。不得仅根据项目文件猜测路线;用户在当前对话已经明确的答案不重复询问。HTML 换肤保留原 DOM、业务事件和表单,不要求 Vue。按所选路线读取后续指南并合并项目 AGENTS.md;不能以安装成功或 CSS 已加载代替视觉及行为验收。
|
|
6
6
|
|
|
7
7
|
HTML 按需入口从 0.1.10 提供;0.1.9 使用完整 model-workspace.css。示例网站快速开始下方提供“HTML 按需样式接入”演示和完整可复制代码。
|
|
8
8
|
|
|
@@ -319,18 +319,13 @@ function confirm() { UiMessage.success('当前站点:' + station.value) }
|
|
|
319
319
|
### 快速开始:团队 AI 读取提示
|
|
320
320
|
|
|
321
321
|
```text
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
- docs/COMPONENT-USAGE.md:原项目实际使用的组件与调用位置
|
|
330
|
-
- docs/ADAPTATION.md:逐模块替换、Vite 图标配置、主题及业务适配方案
|
|
331
|
-
|
|
332
|
-
请依据当前已安装包的版本与文档生成代码,不要虚构组件名称或 API。
|
|
333
|
-
公共 CSS 仅在 main.ts 引入一次;业务请求、路由、权限由应用接入。
|
|
322
|
+
请读取 node_modules/sky-ui-kit/llms.txt 和 docs/START-HERE.md。
|
|
323
|
+
请先问我这次接入 HTML/JavaScript 还是 Vue,等待我的回答,不要根据项目文件直接猜测。
|
|
324
|
+
然后按我的选择询问页面范围和目标:HTML 保留现有 DOM/事件/表单,仅统一支持的控件样式;
|
|
325
|
+
Vue 询问是使用真实组件还是仅给原生控件换肤。已经明确提供的信息不重复询问。
|
|
326
|
+
我选择“不确定”时再检查项目并请我确认。回答前只做文档读取和只读检查,不执行路线相关配置。
|
|
327
|
+
按所选路线查阅包内指南及真实 exports,保留已有项目规则并合并到 AGENTS.md。
|
|
328
|
+
完成后报告状态外观、原有业务行为的验证结果与剩余限制,不把安装成功视为接入完成。
|
|
334
329
|
```
|
|
335
330
|
|
|
336
331
|
### 图标安装:内置与自有资源
|
package/docs/CSS-THEME.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
# CSS 变量主题与样式隔离
|
|
2
|
+
|
|
3
|
+
接入前必须先按 [引导式接入流程](START-HERE.md)询问用户 HTML/Vue 和目标范围,等待答案后再采用本文对应路线;不得从项目结构自行猜测。
|
|
2
4
|
|
|
3
5
|
MapPageLayout 使用 --map-layout-layer-content/panel/legend/toolbar/focus/hover 统一区域层级。与原平台一致:content=1、panel=2、legend=3、toolbar=4、focus=5、hover=6,时间轴和右栏同样参与;hover 高于 focus;content 内部即使使用较大 z-index 也不跨越区域堆叠上下文。图例和底部外层允许内容溢出,避免浮层被父区域裁剪;内部滚动由业务组件负责。
|
|
4
6
|
|
|
@@ -310,3 +312,7 @@ HTML 控件直接复用 scoped-theme.css 的 userssite 主题变量,与 Vue
|
|
|
310
312
|
### HTML 原生多选列表外观调整
|
|
311
313
|
|
|
312
314
|
多选/size 列表设置可覆盖的 220px 宽度、选项留白和主题选中背景,补充悬停、选项禁用、整组禁用和高对比度规则;保留 size 与原生多选语义,不修改单选系统弹出菜单。第 10 项示例增加滚动及多选操作说明。未进行浏览器视觉验证。
|
|
315
|
+
|
|
316
|
+
## 2026-11-04:0.1.10 原生 HTML 迁移文档修订(未发布)
|
|
317
|
+
|
|
318
|
+
修正 AI 指南相对链接及 README 发布状态;新增透明地图覆盖层/主题面板/body 浮层示例,补齐旧页面 CSS 皮肤移除、布局保留和逐状态验收。迁移前后共用布局及业务脚本,不要求 Vue、不增加业务项目专用全局覆盖。详见 [HTML 迁移](HTML-INTEGRATION.md)和[迁移后示例](../examples/html/migration/after.html)。本轮仅文档、示例及生成器修订,未构建、发布或浏览器验证。
|
package/docs/HTML-INTEGRATION.md
CHANGED
|
@@ -1,69 +1,125 @@
|
|
|
1
|
-
# HTML
|
|
1
|
+
# 原生 HTML 样式接入与旧页面迁移
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 开始前先完成接入问答
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
用户说“引入 sky-ui-kit”时,先检查项目及当前安装包 exports,再询问需要外观还是完整交互。需求明确时不重复询问。
|
|
7
|
-
- 仅外观:本文的 HTML 接入,HTML、服务端模板和 Vue 原生元素均可使用。
|
|
8
|
-
- Vue 完整组件:读取 AI-GUIDE.md、components.json、COMPONENT-API.md 和 CSS-THEME.md。
|
|
9
|
-
- HTML 完整交互:需要局部挂载真实 Vue 组件,不能把加载 CSS 报告为组件接入完成。
|
|
5
|
+
先按 [引导式接入流程](START-HERE.md)询问用户 HTML/Vue 和目标范围,等待答案再配置。本文是用户选择原生控件换肤后的实施指南,不用于 AI 自行选择技术路线。
|
|
10
6
|
|
|
11
|
-
##
|
|
7
|
+
## 目标、版本与路线
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
本路线适用于已有 HTML/JavaScript 页面、服务端模板以及 Vue 页面中的原生元素:统一库支持的控件表面样式,保留原 DOM、id/name/data 属性、监听器、表单提交和业务行为。不要求迁移 Vue,也不因页面包含查询、校验、弹窗等交互而切换技术栈。
|
|
10
|
+
只有用户明确需要真实 UiSelect 等 Vue 组件及其组件 API 时,才考虑 [Vue 接入](AI-GUIDE.md)或局部挂载;这是可选路线。
|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
0.1.10 已包含 html/*.css、html/number.js 和下列 CSS/JS 能力;文档与迁移示例修订从 0.1.11 提供,已安装的 0.1.10 文档不会随仓库更新。
|
|
13
|
+
|
|
14
|
+
## 安装和资源部署
|
|
15
|
+
|
|
16
|
+
~~~sh
|
|
17
|
+
npm install sky-ui-kit@0.1.11
|
|
18
|
+
~~~
|
|
19
|
+
|
|
20
|
+
纯 HTML 运行时不依赖 Vue/Element Plus。npm 可能自动安装 peerDependencies;仅用于下载静态 CSS 的独立目录可选择 npm install --legacy-peer-deps sky-ui-kit@0.1.11,不应以此绕过已有 Vue 项目的依赖检查。
|
|
21
|
+
|
|
22
|
+
| 出口 | 作用 | 顺序 |
|
|
16
23
|
|---|---|---|
|
|
17
|
-
| sky-ui-kit/html/theme.css |
|
|
18
|
-
| sky-ui-kit/html/panel.css |
|
|
19
|
-
| sky-ui-kit/html/button.css |
|
|
20
|
-
| sky-ui-kit/html/input.css |
|
|
24
|
+
| sky-ui-kit/html/theme.css | 主题变量、字体、主题边界 | 必需,第一 |
|
|
25
|
+
| sky-ui-kit/html/panel.css | 面板结构及工作区布局 | 可选,主题后 |
|
|
26
|
+
| sky-ui-kit/html/button.css | button、input 按钮 | 可选,主题后 |
|
|
27
|
+
| sky-ui-kit/html/input.css | 输入、选择、复选/单选、文件按钮 | 可选,主题后 |
|
|
28
|
+
| sky-ui-kit/html/number.css + number.js | 数字输入增减增强 | 可选,输入样式后 |
|
|
29
|
+
|
|
30
|
+
带构建工具的项目在唯一公共入口 import 所需出口。纯静态网站从安装包 dist/html 复制所需文件到 static/vendor/sky-ui-kit/html,随网站部署,不把 node_modules URL 或开发者磁盘路径写进线上页面。不要加载 Element Plus CSS、style.css 或 global.css。完整 model-workspace.css 与前四项共享实现,选一种方式,不重复加载。
|
|
31
|
+
|
|
32
|
+
本轮完整示例位于 [迁移前](../examples/html/migration/before.html)和[迁移后](../examples/html/migration/after.html),同目录的 layout.css、business.js 两边共用。示例从包内 dist 读取 CSS,复制到网站时调整 href,不能只复制 HTML 而遗漏依赖。示例不请求远程地图服务,地图位置是布局占位,用于检查透明覆盖和点击穿透;真实地图仍由消费项目负责。
|
|
33
|
+
|
|
34
|
+
## 透明地图覆盖层与浮层
|
|
35
|
+
|
|
36
|
+
0.1.10 的 sky-html 会设置背景。不要不加判断地把它加在覆盖整幅地图的透明固定层上;也不要为此修改 --color-bg 为 transparent,后者会影响控件和浮层派生色。
|
|
37
|
+
|
|
38
|
+
推荐让地图和 #workspace 保留原结构与透明布局,仅在实际面板上使用 sky-html:
|
|
39
|
+
|
|
40
|
+
~~~html
|
|
41
|
+
<div id="map"><!-- 原有地图实例与业务 --></div>
|
|
42
|
+
<div id="workspace" class="map-overlay">
|
|
43
|
+
<section class="query-position sky-html sky-model-panel" data-theme="light">
|
|
44
|
+
<header class="sky-model-panel__header"><h2>查询</h2></header>
|
|
45
|
+
<form class="sky-model-panel__body"><label>名称 <input name="name"></label></form>
|
|
46
|
+
</section>
|
|
47
|
+
</div>
|
|
48
|
+
<!-- body 下的独立浮层自行设置主题边界,不依赖兄弟面板继承 -->
|
|
49
|
+
<dialog id="details" class="dialog-position">
|
|
50
|
+
<section class="sky-html sky-model-panel" data-theme="light">详情内容</section>
|
|
51
|
+
</dialog>
|
|
52
|
+
~~~
|
|
53
|
+
|
|
54
|
+
~~~css
|
|
55
|
+
/* 业务布局:保留原来的固定定位、层级、点击穿透,不是控件皮肤。 */
|
|
56
|
+
.map-overlay { position: fixed; inset: 0; background: transparent; pointer-events: none; }
|
|
57
|
+
.query-position { position: absolute; top: 24px; left: 24px; width: min(360px, calc(100% - 48px)); pointer-events: auto; }
|
|
58
|
+
~~~
|
|
59
|
+
|
|
60
|
+
若确实需要让整个透明覆盖层成为共同主题容器,可在原布局类中明确保留背景:
|
|
61
|
+
|
|
62
|
+
~~~html
|
|
63
|
+
<div id="workspace" class="map-overlay sky-html" data-theme="light">...</div>
|
|
64
|
+
~~~
|
|
65
|
+
~~~css
|
|
66
|
+
/* 与库同等或更高优先级,仅保留透明布局;不复制按钮/输入框皮肤。 */
|
|
67
|
+
.map-overlay.sky-html { background: transparent; }
|
|
68
|
+
~~~
|
|
69
|
+
|
|
70
|
+
两种方式任选其一,不修改库默认背景,不新增 #workspace 全局覆盖。浮层在主题容器内时自然继承;移动到 body 后须在其实际内容容器上新增 sky-html 和相同 data-theme,并将应用自定义公共主题变量设置在公共祖先(例如 html),或明确复制到两个边界。不要复制私有 --userssite-* 计算结果。明暗切换要同步所有主题边界;局部面板变量不会自动传给兄弟浮层。
|
|
71
|
+
|
|
72
|
+
保留原定位、z-index、pointer-events、overflow 和弹窗 showModal/关闭逻辑;CSS 接入不会新增焦点管理、遮罩、定位或业务行为。检查父容器 overflow 是否裁剪浮层。把 sky-html 用在 body 是普通整页换肤的可选方案,不能作为所有 HTML 页面的要求。
|
|
21
73
|
|
|
22
|
-
|
|
23
|
-
纯静态站将包内 dist/html 所需文件复制到 static/vendor/sky-ui-kit/html,并修改 link 路径;发布时随网站部署。包内 examples/html/index.html 为完整示例,可直接打开,要求安装包含这些 dist 文件的新发布版本。不得引用开发者磁盘路径或在生产依赖 node_modules URL。
|
|
24
|
-
有构建工具的项目在唯一公共入口依次 import 对应出口。原有业务 CSS 在前,库样式在后;原样式有更高优先级、内联声明或 !important 时需逐项核对,加载顺序不能保证覆盖。不要无差别删除旧样式。
|
|
74
|
+
## 旧页面迁移前后:删除皮肤,保留布局和行为
|
|
25
75
|
|
|
26
|
-
|
|
76
|
+
完整前后示例共享同一份 [布局](../examples/html/migration/layout.css)和[业务脚本](../examples/html/migration/business.js)。迁移前额外加载 [旧控件皮肤](../examples/html/migration/legacy-controls.css);迁移后移除该文件,新增库 CSS、主题容器、面板结构类及按钮语义。已有 DOM 节点与事件 ID 保留,未重新渲染业务控件。
|
|
27
77
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
78
|
+
| 原规则类型 | 迁移处理 |
|
|
79
|
+
|---|---|
|
|
80
|
+
| #searchForm button、.query-position input 的背景/颜色/边框/圆角/字号/高度/内阴影 | 移除这些皮肤声明,交由库负责 |
|
|
81
|
+
| :hover、:focus、:disabled、:checked、option:checked 等旧状态皮肤 | 同时移除,不能只改默认状态 |
|
|
82
|
+
| 内联 style 的控件皮肤、!important 覆盖 | 从元素或旧规则删除,保留布局声明 |
|
|
83
|
+
| position/inset/z-index/pointer-events、网格/列宽/gap、地图尺寸 | 继续保留在业务布局文件 |
|
|
84
|
+
| 混合布局与皮肤的规则 | 按声明拆开:留下定位/布局,删除控件皮肤,不删除整条业务规则 |
|
|
85
|
+
| 地图色带、阈值、图表配色、第三方地图内部 UI | 保留业务实现;必要时显式退出 |
|
|
32
86
|
|
|
33
|
-
|
|
87
|
+
示意:旧规则 #searchForm button { position:relative; background:#333; border:2px solid #777; } 只保留 position:relative;不能在库后面再写一套“更像 Vue”的 button 规则。
|
|
34
88
|
|
|
35
|
-
|
|
36
|
-
主题边界内可用 style 或后加载的类覆盖 --color-primary、--color-panel、--color-text、--color-border;明暗通过 data-theme 控制,不使用 theme-dark。
|
|
37
|
-
此路线不引入 Element Plus CSS、style.css 或 global.css。局部主题不会自动传给 body 浮层;原页面浮层应放在主题容器内,或独立设置相同主题边界。不会附加焦点管理、遮罩、定位或弹窗逻辑。
|
|
89
|
+
旧 CSS 在前、库 CSS 在后只是加载约定,并不保证覆盖高优先级选择器、内联样式或 !important。使用开发者工具检查控件的 Styles/Computed:查 border/background/color/font/height/outline/box-shadow 的获胜规则;切换 :hover/:focus,并实际设置 disabled/checked/aria-invalid。追溯到旧声明后移除该皮肤来源,不继续叠加选择器或 !important。不能删除的第三方控件使用 data-sky-native="off",并在验收中列为例外。
|
|
38
90
|
|
|
39
|
-
##
|
|
91
|
+
## 控件、状态和能力边界
|
|
40
92
|
|
|
41
|
-
|
|
93
|
+
sky-html 内原生控件自动换肤,不必逐个增加控件类。面板没有原生 HTML 对应物,使用 sky-model-panel、__header、__body、__footer 结构类;不把所有 div/section 变成面板。
|
|
42
94
|
|
|
43
|
-
|
|
95
|
+
保留 button 的 type,data-variant="primary" / "danger" 控制语义;旧 primary/accent 类兼容。readonly/disabled/required 保留浏览器语义。错误输入使用 aria-invalid="true",错误文字 data-sky-error,并通过 aria-describedby 关联;库不实现校验业务。不会在首次加载时把所有必填项标红。
|
|
44
96
|
|
|
45
|
-
|
|
97
|
+
select 单选系统菜单、日期/时间弹层、文件窗口的外观及键盘行为存在浏览器差异,不承诺与 Vue 完全相同。多选支持 size,默认列表宽 220px,可用 --sky-select-list-width 调整,Ctrl/Command/Shift 遵循系统行为。checkbox/radio 提供主题皮肤;file-selector-button 已主题化;range/color/image 仍由浏览器绘制,hidden 不应用控件皮肤。
|
|
46
98
|
|
|
47
|
-
|
|
99
|
+
数字增强是独立的可选原生 JS:加载 number.css,从 sky-ui-kit/html/number.js 导入 enhanceNumbers,DOM 就绪后调用。原 input 保持 id/name/事件,stepUp/stepDown 读取 min/max/step;发生变化后派发 input/change。返回函数用于清理,动态新增字段需再次初始化;step=any 禁用按钮,不提供长按重复。
|
|
48
100
|
|
|
49
|
-
|
|
101
|
+
字体与 Vue 共享主题字体栈,但包不带字体文件;跨系统存在字形差异。公共主题变量应在公共祖先定义,默认高度 32px、圆角 4px,可通过 control-height-m、radius-s、font-size-body 调整。控件状态与主题规范共用不等于每个原生控件和 Vue 的像素/交互一致。
|
|
50
102
|
|
|
51
|
-
##
|
|
103
|
+
## 局部退出
|
|
52
104
|
|
|
53
|
-
|
|
54
|
-
退出仅阻止控件皮肤,不撤销祖先继承的字体、颜色、变量;需要完全独立时放到主题容器之外。
|
|
105
|
+
data-sky-native="off" 使节点及其后代退出控件皮肤;内层 sky-html 不重新启用。Element Plus 和地图内部控件有排除规则,未知第三方区域需显式退出。退出不撤销继承的字体/颜色/主题变量;完全独立区域放在主题容器外。
|
|
55
106
|
|
|
56
|
-
|
|
107
|
+
## 消费项目 AGENTS.md
|
|
57
108
|
|
|
58
|
-
|
|
109
|
+
合并以下规则并保留原有内容;文档路径相对安装包根目录:
|
|
59
110
|
|
|
60
|
-
|
|
111
|
+
> 本项目经用户确认采用 sky-ui-kit 原生 HTML 样式路线,接入范围按本项目记录。后续新增接入先按 docs/START-HERE.md 确认未明确的路线及范围,不从项目结构自行猜测。先读当前安装包 llms.txt、docs/HTML-INTEGRATION.md、docs/HTML-FORM-CATALOG.md 并核对 exports。保留原 DOM、监听器、表单与地图行为;使用受支持的库控件皮肤,删除冲突的旧默认及状态皮肤声明,保留布局。透明地图覆盖层不得因主题变为实底;浮层主题边界明确设置。不得通过叠加仿写皮肤补丁实现一致性。只有明确需要真实 Vue 组件才选择可选 Vue 路线。按视觉状态和原有业务行为验收,记录系统控件差异和未支持项。升级后重新核对当前包。
|
|
61
112
|
|
|
62
|
-
|
|
113
|
+
## 验收:视觉和业务均通过才完成
|
|
63
114
|
|
|
64
|
-
|
|
115
|
+
1. 默认:字体、尺寸、圆角、内边距与库 HTML 示例一致;地图可见,面板位置和层级正确。
|
|
116
|
+
2. 悬停:按钮、输入、可用选项使用主题色;禁用元素无可操作悬停表现。
|
|
117
|
+
3. 聚焦:鼠标与 Tab 聚焦为单层输入边框,键盘焦点可辨识,错误仍保留危险色。
|
|
118
|
+
4. 禁用/只读:外观正确,字段不可编辑,fieldset 禁用也生效。
|
|
119
|
+
5. 选中:checkbox/radio/option 的选中与禁用选中状态正确;系统渲染差异列为限制。
|
|
120
|
+
6. 业务:原查询、重置、提交、表单验证、地图点击/拖动、文件 change 及弹窗开关仍工作;不重复注册监听器。
|
|
121
|
+
7. 浮层:与面板主题一致,明暗同步,未被裁剪或透明覆盖层遮挡。
|
|
65
122
|
|
|
66
|
-
|
|
67
|
-
select 单选弹出菜单仍由系统绘制,多选使用 size 行数和可滚动列表。file 输入仅美化文件按钮,不替换系统窗口、不发起上传。此前“上传保留原外观”的说明由此更新覆盖。
|
|
123
|
+
记录浏览器/系统、包版本、各状态结果、冲突来源及剩余例外;对照 [逐项目录](HTML-FORM-CATALOG.md)。安装成功、文件存在或 CSS 加载成功只证明资源接入,不能证明视觉和交互已完成。
|
|
68
124
|
|
|
69
|
-
|
|
125
|
+
本轮修订检查了相对链接、示例结构/脚本和类型,并在授权发布流程中构建、核对安装包。未进行浏览器视觉验证或修改业务消费项目;地图占位示例不等于真实地图引擎集成验证。安装 0.1.11 或更新版本可获得本轮文档修订。
|
package/docs/INTEGRATION.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
# 主题接入规则更新
|
|
2
|
+
|
|
3
|
+
接入前必须先按 [引导式接入流程](START-HERE.md)询问用户 HTML/Vue 和目标范围,等待答案后再采用本文对应路线;不得从项目结构自行猜测。
|
|
2
4
|
|
|
3
5
|
## 新布局接入(源码尚未发布)
|
|
4
6
|
|
|
@@ -214,3 +216,7 @@ ManagementResourceLayout默认按VFit保持结构,不在700px阈值自动切
|
|
|
214
216
|
### 原生控件自动换肤调整(未发布)
|
|
215
217
|
|
|
216
218
|
新增 sky-html 容器入口,按需样式直接匹配原生 button/input/select/textarea;支持 data-sky-native="off" 本身及后代退出、Element Plus/地图内部控件排除,保留旧工作区 opt-in。主题默认低优先级,特殊按钮使用 data-variant,支持只读、禁用、错误及焦点状态;面板继续使用明确结构类,不覆盖所有 div。示例网站展示完整原生 HTML 状态及退出区域,详见 HTML-INTEGRATION.md。
|
|
219
|
+
|
|
220
|
+
## 2026-11-04:0.1.10 原生 HTML 迁移文档修订(未发布)
|
|
221
|
+
|
|
222
|
+
修正 AI 指南相对链接及 README 发布状态;新增透明地图覆盖层/主题面板/body 浮层示例,补齐旧页面 CSS 皮肤移除、布局保留和逐状态验收。迁移前后共用布局及业务脚本,不要求 Vue、不增加业务项目专用全局覆盖。详见 [HTML 迁移](HTML-INTEGRATION.md)和[迁移后示例](../examples/html/migration/after.html)。本轮仅文档、示例及生成器修订,未构建、发布或浏览器验证。
|
package/docs/ON-DEMAND.md
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 开发历史归档
|
|
2
|
+
|
|
3
|
+
本文件记录过去的开发阶段,不是当前安装说明。
|
|
4
|
+
|
|
5
|
+
初始快照曾通过 private: true 阻止未审核发布,当时包名尚未核验;这些描述已失效,不适用于已发布的 sky-ui-kit@0.1.10,当前 package.json 不含该限制。
|
|
6
|
+
早期包结构曾携带主题 store 相关文件,现行接入不需要主题 store/Pinia。当前包以 package.json 的 files/exports 和包内文档为准。
|
|
7
|
+
|
|
8
|
+
当前接入见 [README](../README.md)、[HTML 迁移](HTML-INTEGRATION.md);组件迭代记录见 [AI 变更记录](AI-CHANGELOG.md)。
|
|
9
|
+
|
|
10
|
+
## 历史:0.1.7 正式安装与样式
|
|
11
|
+
|
|
12
|
+
通过 npm 安装 sky-ui-kit,main.ts 依次引入 element-plus/dist/index.css 和 sky-ui-kit/style.css,包内已包含默认主题和组件样式,不依赖开发者电脑、原业务项目或远程样式服务。CSS 变量允许运行时主题覆盖。图标资源可从 sky-ui-kit/icons 显式注册,或由应用提供 sprite;SvgIcon 不再自动携带图库。按组件入口见 [按需引入](ON-DEMAND.md)。
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 引导式接入:先问用户,再配置
|
|
2
|
+
|
|
3
|
+
这是 README、llms.txt 和各接入指南共用的唯一流程入口。规则从 0.1.12 提供。安装包不会自动向用户弹出问答,也不会自动进入所有 AI 上下文;AI 阅读此入口后应主动执行下面的问答。
|
|
4
|
+
|
|
5
|
+
## 第一步:确认用户使用 HTML 还是 Vue
|
|
6
|
+
|
|
7
|
+
当用户说“帮我引入 sky-ui-kit”或安装后要求接入时,先问:
|
|
8
|
+
|
|
9
|
+
> 这次要接入的是哪一种页面?
|
|
10
|
+
> 1. 原生 HTML / JavaScript 页面
|
|
11
|
+
> 2. Vue 3 页面
|
|
12
|
+
> 3. 我不确定,请帮我检查后说明
|
|
13
|
+
|
|
14
|
+
等待用户回答,再执行路线相关的文件修改、样式加载或框架依赖安装。不要根据 package.json、扩展名或当前目录擅自替用户选择。可以先阅读包内文档、核对已安装版本和只读检查项目。
|
|
15
|
+
用户在本次对话已明确回答 HTML/Vue 时,直接采用该答案,不重复询问;该答案来自用户,不是 AI 猜测。用户选择“不确定”时才检查项目,说明发现并请用户确认接入的具体页面类型;混合项目需确认目标页面。
|
|
16
|
+
|
|
17
|
+
## 第二步:按答案询问接入目标
|
|
18
|
+
|
|
19
|
+
HTML 用户:
|
|
20
|
+
|
|
21
|
+
> 你希望在哪些地方使用统一样式?
|
|
22
|
+
> 1. 先改一个现有页面或面板,保留原来的操作逻辑
|
|
23
|
+
> 2. 整个现有站点换肤,保留原来的操作逻辑
|
|
24
|
+
> 3. 创建一个新的原生 HTML 示例页面
|
|
25
|
+
> 请告诉我对应页面或目录;如果你已经提供,我会直接使用。
|
|
26
|
+
|
|
27
|
+
HTML 的查询、表单校验、分页、弹窗等现有交互继续使用原业务 JS,不把“需要交互”解释为“必须迁移 Vue”。只有用户主动要求真实 Vue 组件能力时,才说明可选局部挂载及成本,并等待其选择。
|
|
28
|
+
|
|
29
|
+
Vue 用户:
|
|
30
|
+
|
|
31
|
+
> 你希望怎样使用这个包?
|
|
32
|
+
> 1. 使用库实际导出的 Vue 组件开发或替换页面
|
|
33
|
+
> 2. 仅给现有原生 HTML 控件统一样式,保留现有逻辑
|
|
34
|
+
> 请告诉我对应页面或目录;如果你已经提供,我会直接使用。
|
|
35
|
+
|
|
36
|
+
答案已明确时不重复问;缺失答案不能通过等待超时自动补成默认选择。用户暂未回答时只做不依赖答案的读取工作。
|
|
37
|
+
|
|
38
|
+
## 第三步:实施所选路线
|
|
39
|
+
|
|
40
|
+
| 用户选择 | 阅读资料 | 实施要求 |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| HTML 或 Vue 中原生元素换肤 | [HTML 迁移](HTML-INTEGRATION.md)、[控件验收](HTML-FORM-CATALOG.md) | 保留 DOM/id/name/监听器/表单,按需 CSS,删除冲突旧皮肤、保留布局 |
|
|
43
|
+
| Vue 真实组件 | [AI 指南](AI-GUIDE.md)、[真实出口](../components.json)、[API](COMPONENT-API.md)、[主题](CSS-THEME.md) | 核对 Vue/peerDependencies,按实际导出使用组件 |
|
|
44
|
+
|
|
45
|
+
记录用户确认的页面、路线与范围,简要说明将引入的资源,再实施;不额外要求用户确认每个常规修改。遇到地图透明覆盖层、浮层、旧 CSS 冲突时按 HTML 指南处理,不改成不透明整页工作区,也不通过仿写控件皮肤覆盖。
|
|
46
|
+
需要本地源码路径才能完成的指引应作为文档缺口报告;消费者只依赖当前安装包。
|
|
47
|
+
|
|
48
|
+
## 第四步:记录项目规则并逐状态验收
|
|
49
|
+
|
|
50
|
+
将用户选择、接入范围、包内入口、主题位置及验收规则合并到消费项目 AGENTS.md,保留已有规则,不重复追加。不自动创建消费项目不存在的 Vue 依赖或迁移技术栈。
|
|
51
|
+
核对默认、悬停、聚焦、错误、只读、禁用、选中及浮层,检查查询/提交/重置/地图操作等原行为。区分已做的静态检查和用户/浏览器实际验证,列出系统 select/日期等浏览器差异;安装成功或 CSS 已加载不等于完成视觉接入。
|
|
52
|
+
|
|
53
|
+
## 新聊天测试
|
|
54
|
+
|
|
55
|
+
用户只说“帮我引入 sky-ui-kit”。期望 AI 先询问 HTML/Vue,等待回答;随后按所选路线询问范围并执行。不得直接注册 Vue、套上全页背景或把页面改成库组件。已明确的答案不再重复询问。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
|
|
4
|
+
<title>原生地图悬浮面板 · 迁移后</title>
|
|
5
|
+
<!-- 包内示例相对 dist 路径;部署时将资源复制到网站静态目录并更新 href。 -->
|
|
6
|
+
<link rel="stylesheet" href="../../../dist/html/theme.css">
|
|
7
|
+
<link rel="stylesheet" href="../../../dist/html/panel.css">
|
|
8
|
+
<link rel="stylesheet" href="../../../dist/html/button.css">
|
|
9
|
+
<link rel="stylesheet" href="../../../dist/html/input.css">
|
|
10
|
+
<link rel="stylesheet" href="./layout.css">
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="map"><p id="mapStatus">地图布局占位,点击此背景可核对穿透(不加载地图引擎)。</p></div>
|
|
14
|
+
<!-- 透明地图覆盖层不添加 sky-html。业务定位和穿透规则不变。 -->
|
|
15
|
+
<div id="workspace">
|
|
16
|
+
<section class="query-position sky-html sky-model-panel" data-demo-theme data-theme="light">
|
|
17
|
+
<header class="sky-model-panel__header"><h1>水库查询</h1><button id="theme" type="button">切换主题</button></header>
|
|
18
|
+
<form id="searchForm" class="form-layout sky-model-panel__body">
|
|
19
|
+
<label class="field-layout" for="name">名称<input id="name" name="name" required placeholder="请输入名称"></label>
|
|
20
|
+
<label class="field-layout" for="province">省份<select id="province" name="province" multiple size="3"><option selected>湖北</option><option>湖南</option><option>四川</option></select></label>
|
|
21
|
+
<label><input name="enabled" type="checkbox" checked>仅显示可用项</label>
|
|
22
|
+
<label>只读编码<input name="code" value="363" readonly></label>
|
|
23
|
+
<div class="actions-layout"><button type="submit" data-variant="primary">查询</button><button type="reset">重置</button><button type="button" disabled>禁用操作</button></div>
|
|
24
|
+
<output id="status" aria-live="polite">等待查询</output>
|
|
25
|
+
</form>
|
|
26
|
+
<footer class="sky-model-panel__footer"><button id="openDetails" type="button">打开 body 浮层</button></footer>
|
|
27
|
+
</section>
|
|
28
|
+
</div>
|
|
29
|
+
<dialog id="details" class="dialog-position">
|
|
30
|
+
<!-- 浮层与查询面板是兄弟节点,明确使用自己的主题边界并同步 data-theme。 -->
|
|
31
|
+
<section class="sky-html sky-model-panel" data-demo-theme data-theme="light">
|
|
32
|
+
<header class="sky-model-panel__header"><h2>独立浮层</h2></header>
|
|
33
|
+
<div class="sky-model-panel__body"><label>备注<input name="notes" placeholder="原生浮层输入"></label></div>
|
|
34
|
+
<footer class="sky-model-panel__footer"><button id="closeDetails" type="button">关闭</button></footer>
|
|
35
|
+
</section>
|
|
36
|
+
</dialog>
|
|
37
|
+
<script src="./business.js"></script>
|
|
38
|
+
</body></html>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
|
|
4
|
+
<title>原生地图悬浮面板 · 迁移前</title>
|
|
5
|
+
<link rel="stylesheet" href="./legacy-controls.css">
|
|
6
|
+
<link rel="stylesheet" href="./layout.css">
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<div id="map"><p id="mapStatus">地图布局占位,点击此背景可核对穿透(不加载地图引擎)。</p></div>
|
|
10
|
+
<!-- 透明地图覆盖层不添加 sky-html。业务定位和穿透规则不变。 -->
|
|
11
|
+
<div id="workspace">
|
|
12
|
+
<section class="query-position" data-demo-theme data-theme="light">
|
|
13
|
+
<header><h1>水库查询</h1><button id="theme" type="button">切换主题</button></header>
|
|
14
|
+
<form id="searchForm" class="form-layout">
|
|
15
|
+
<label class="field-layout" for="name">名称<input id="name" name="name" required placeholder="请输入名称"></label>
|
|
16
|
+
<label class="field-layout" for="province">省份<select id="province" name="province" multiple size="3"><option selected>湖北</option><option>湖南</option><option>四川</option></select></label>
|
|
17
|
+
<label><input name="enabled" type="checkbox" checked>仅显示可用项</label>
|
|
18
|
+
<label>只读编码<input name="code" value="363" readonly></label>
|
|
19
|
+
<div class="actions-layout"><button type="submit">查询</button><button type="reset">重置</button><button type="button" disabled>禁用操作</button></div>
|
|
20
|
+
<output id="status" aria-live="polite">等待查询</output>
|
|
21
|
+
</form>
|
|
22
|
+
<footer><button id="openDetails" type="button">打开 body 浮层</button></footer>
|
|
23
|
+
</section>
|
|
24
|
+
</div>
|
|
25
|
+
<dialog id="details" class="dialog-position">
|
|
26
|
+
<!-- 浮层与查询面板是兄弟节点,明确使用自己的主题边界并同步 data-theme。 -->
|
|
27
|
+
<section class="legacy-dialog" data-demo-theme data-theme="light">
|
|
28
|
+
<header><h2>独立浮层</h2></header>
|
|
29
|
+
<div><label>备注<input name="notes" placeholder="原生浮层输入"></label></div>
|
|
30
|
+
<footer><button id="closeDetails" type="button">关闭</button></footer>
|
|
31
|
+
</section>
|
|
32
|
+
</dialog>
|
|
33
|
+
<script src="./business.js"></script>
|
|
34
|
+
</body></html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* 两个页面共用原生业务监听器,不创建/替换业务 DOM,不依赖 Vue。 */
|
|
2
|
+
const form = document.getElementById('searchForm');
|
|
3
|
+
const status = document.getElementById('status');
|
|
4
|
+
form.addEventListener('submit', event => {
|
|
5
|
+
event.preventDefault();
|
|
6
|
+
const data = new FormData(form);
|
|
7
|
+
status.textContent = '查询:' + data.get('name') + ';已选省份:' + data.getAll('province').join('、');
|
|
8
|
+
});
|
|
9
|
+
form.addEventListener('reset', () => { status.textContent = '查询条件已重置'; });
|
|
10
|
+
document.getElementById('map').addEventListener('click', () => { document.getElementById('mapStatus').textContent = '地图背景仍可点击'; });
|
|
11
|
+
const dialog = document.getElementById('details');
|
|
12
|
+
document.getElementById('openDetails').addEventListener('click', () => { dialog.showModal(); });
|
|
13
|
+
document.getElementById('closeDetails').addEventListener('click', () => { dialog.close(); });
|
|
14
|
+
document.getElementById('theme').addEventListener('click', () => {
|
|
15
|
+
const panels = document.querySelectorAll('[data-demo-theme]');
|
|
16
|
+
const next = panels[0].dataset.theme === 'dark' ? 'light' : 'dark';
|
|
17
|
+
panels.forEach(panel => { panel.dataset.theme = next; });
|
|
18
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/* 迁移前后原样保留的业务布局,不负责控件皮肤。 */
|
|
2
|
+
body { margin:0; }
|
|
3
|
+
#map { position:fixed; inset:0; display:grid; place-items:center; background:repeating-linear-gradient(35deg,#b5d6c2 0 60px,#b9dbe8 60px 120px); }
|
|
4
|
+
#workspace { position:fixed; inset:0; background:transparent; pointer-events:none; }
|
|
5
|
+
.query-position { position:absolute; inset:24px auto auto 24px; width:min(360px,calc(100% - 48px)); pointer-events:auto; }
|
|
6
|
+
.form-layout { display:grid; gap:16px; }
|
|
7
|
+
.field-layout { display:grid; gap:6px; }
|
|
8
|
+
.actions-layout { display:flex; flex-wrap:wrap; gap:12px; }
|
|
9
|
+
.dialog-position { width:min(420px,calc(100% - 48px)); padding:0; border:0; }
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/* 旧皮肤:迁移后移除该文件,不用更强的选择器继续覆盖。 */
|
|
2
|
+
.query-position { background:#eee; border:2px solid #555; padding:14px; }
|
|
3
|
+
#searchForm input, #searchForm select { background:#ddd; color:#222; border:2px solid #555; border-radius:0; padding:4px; }
|
|
4
|
+
#searchForm input:focus { outline:3px solid orange; }
|
|
5
|
+
#searchForm button, #openDetails, #closeDetails { background:#333; color:white; border:2px solid #777; border-radius:0; height:28px; }
|
|
6
|
+
#searchForm button:hover { background:#555; }
|
|
7
|
+
#searchForm button:disabled { background:#999; color:#ccc; }
|
|
8
|
+
#searchForm input:checked { accent-color:orange; }
|
package/llms-full.txt
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# sky-ui-kit
|
|
2
2
|
|
|
3
|
-
> Vue 3 components compatible with Element Plus, project menus, timeline and map tools. Version 0.1.
|
|
3
|
+
> Vue 3 components compatible with Element Plus, project menus, timeline and map tools. Version 0.1.12. AI tools must explicitly load these files.
|
|
4
|
+
|
|
5
|
+
## Mandatory onboarding
|
|
6
|
+
|
|
7
|
+
Read [Start here](docs/START-HERE.md). Ask the user HTML/JavaScript or Vue FIRST and wait for their answer before route-specific edits or dependency configuration. Then ask scope and intended usage. Do not infer the route from project files. Reuse answers explicitly provided by the user; inspect only when they choose unsure, then ask them to confirm. HTML keeps existing DOM/events/forms and does not require Vue.
|
|
4
8
|
|
|
5
9
|
## Documentation
|
|
6
10
|
|
|
7
|
-
- [HTML and AI onboarding](docs/HTML-INTEGRATION.md):
|
|
11
|
+
- [HTML and AI onboarding](docs/HTML-INTEGRATION.md): native HTML migration retaining existing interactions, transparent map overlays and optional Vue route.
|
|
8
12
|
|
|
9
13
|
- [Consumers](docs/CONSUMERS.md): shared project convention and local integration.
|
|
10
14
|
- [AI guide](docs/AI-GUIDE.md): setup, examples, icon/event bindings and limits.
|
|
@@ -25,13 +29,13 @@
|
|
|
25
29
|
|
|
26
30
|
## Setup
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
After the required user Q&A in docs/START-HERE.md, native HTML: read docs/HTML-INTEGRATION.md, retain DOM/events/forms, load supported html/*.css once, preserve transparent map overlays and remove conflicting legacy control skins. Vue is optional only when real Vue components are requested. Vue component route: import element-plus/dist/index.css then sky-ui-kit/style.css once in main.ts, and check components.json before using exports. Verify visual states and existing behavior; installing or loading CSS alone is not completion.
|
|
29
33
|
|
|
30
34
|
# sky-ui-kit:AI 使用指南
|
|
31
35
|
|
|
32
|
-
## AI
|
|
36
|
+
## AI 接入入口:先询问用户
|
|
33
37
|
|
|
34
|
-
|
|
38
|
+
当用户要求引入 sky-ui-kit 时,必须先读取[引导式接入流程](docs/START-HERE.md),先询问用户接入 HTML/JavaScript 还是 Vue,再询问页面范围及接入目标,等待回答后配置。不得仅根据项目文件猜测路线;用户在当前对话已经明确的答案不重复询问。HTML 换肤保留原 DOM、业务事件和表单,不要求 Vue。按所选路线读取后续指南并合并项目 AGENTS.md;不能以安装成功或 CSS 已加载代替视觉及行为验收。
|
|
35
39
|
|
|
36
40
|
HTML 按需入口从 0.1.10 提供;0.1.9 使用完整 model-workspace.css。示例网站快速开始下方提供“HTML 按需样式接入”演示和完整可复制代码。
|
|
37
41
|
|
|
@@ -299,7 +303,7 @@ ManagementResourceLayout默认按VFit保持结构,不在700px阈值自动切
|
|
|
299
303
|
```
|
|
300
304
|
预览入口:MapPageLayout布局演示,点击“查看紧凑尺寸”比较右栏宽度、边距与面板内边距。其他组件参数与默认值可在生成API查询。当前未构建、打包、发布或浏览器验证,用户预览确认后自行发版。
|
|
301
305
|
|
|
302
|
-
HTML 表单逐项示例见 [验收目录](HTML-FORM-CATALOG.md),网站独立导航按编号核对;原生与 Vue 的边界见各项说明。
|
|
306
|
+
HTML 表单逐项示例见 [验收目录](docs/HTML-FORM-CATALOG.md),网站独立导航按编号核对;原生与 Vue 的边界见各项说明。
|
|
303
307
|
|
|
304
308
|
<!-- GENERATED EXAMPLES -->
|
|
305
309
|
|
|
@@ -348,18 +352,13 @@ function confirm() { UiMessage.success('当前站点:' + station.value) }
|
|
|
348
352
|
### 快速开始:团队 AI 读取提示
|
|
349
353
|
|
|
350
354
|
```text
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
- docs/COMPONENT-USAGE.md:原项目实际使用的组件与调用位置
|
|
359
|
-
- docs/ADAPTATION.md:逐模块替换、Vite 图标配置、主题及业务适配方案
|
|
360
|
-
|
|
361
|
-
请依据当前已安装包的版本与文档生成代码,不要虚构组件名称或 API。
|
|
362
|
-
公共 CSS 仅在 main.ts 引入一次;业务请求、路由、权限由应用接入。
|
|
355
|
+
请读取 node_modules/sky-ui-kit/llms.txt 和 docs/START-HERE.md。
|
|
356
|
+
请先问我这次接入 HTML/JavaScript 还是 Vue,等待我的回答,不要根据项目文件直接猜测。
|
|
357
|
+
然后按我的选择询问页面范围和目标:HTML 保留现有 DOM/事件/表单,仅统一支持的控件样式;
|
|
358
|
+
Vue 询问是使用真实组件还是仅给原生控件换肤。已经明确提供的信息不重复询问。
|
|
359
|
+
我选择“不确定”时再检查项目并请我确认。回答前只做文档读取和只读检查,不执行路线相关配置。
|
|
360
|
+
按所选路线查阅包内指南及真实 exports,保留已有项目规则并合并到 AGENTS.md。
|
|
361
|
+
完成后报告状态外观、原有业务行为的验证结果与剩余限制,不把安装成功视为接入完成。
|
|
363
362
|
```
|
|
364
363
|
|
|
365
364
|
### 图标安装:内置与自有资源
|
|
@@ -3268,7 +3267,7 @@ const message = ref('等待配置')
|
|
|
3268
3267
|
|
|
3269
3268
|
## 2026-10-13:一体机本地开发接入
|
|
3270
3269
|
|
|
3271
|
-
新增四个工作台组件和 MapTools.items。工作台 CSS 在 .sky-workbench 下隔离,使用库主题变量;应用消费本地 0.1.3-dev.0,未发布。详情见 [消费项目记录](CONSUMERS.md)。
|
|
3270
|
+
新增四个工作台组件和 MapTools.items。工作台 CSS 在 .sky-workbench 下隔离,使用库主题变量;应用消费本地 0.1.3-dev.0,未发布。详情见 [消费项目记录](docs/CONSUMERS.md)。
|
|
3272
3271
|
|
|
3273
3272
|
## 2026-10-13:顶部菜单修复(0.1.3-dev.1)
|
|
3274
3273
|
|
|
@@ -3575,7 +3574,7 @@ ManagementResourceLayout默认按VFit保持结构,不在700px阈值自动切
|
|
|
3575
3574
|
|
|
3576
3575
|
## 2026-11-04:HTML 按需样式接入(未发布)
|
|
3577
3576
|
|
|
3578
|
-
新增 theme/panel/button/input 四个 CSS 出口,完整 model-workspace.css 与拆分入口共享源码;网站新增隔离 HTML 示例。外观模式保留原 DOM/事件,不能当作 Vue 组件接入。结构、安装、状态、主题、浮层及 AGENTS.md 规则见 [HTML 接入](HTML-INTEGRATION.md)。仅生成文档和静态检查,未构建、发布或浏览器验证;历史“CSS 未拆分”对 Vue style.css 仍成立。
|
|
3577
|
+
新增 theme/panel/button/input 四个 CSS 出口,完整 model-workspace.css 与拆分入口共享源码;网站新增隔离 HTML 示例。外观模式保留原 DOM/事件,不能当作 Vue 组件接入。结构、安装、状态、主题、浮层及 AGENTS.md 规则见 [HTML 接入](docs/HTML-INTEGRATION.md)。仅生成文档和静态检查,未构建、发布或浏览器验证;历史“CSS 未拆分”对 Vue style.css 仍成立。
|
|
3579
3578
|
|
|
3580
3579
|
### 原生控件自动换肤调整(未发布)
|
|
3581
3580
|
|
|
@@ -3609,6 +3608,20 @@ HTML 控件直接复用 scoped-theme.css 的 userssite 主题变量,与 Vue
|
|
|
3609
3608
|
|
|
3610
3609
|
包含 HTML 按需主题/面板/按钮/输入样式、数字输入增强脚本、原生选择与上传样式、22 项表单验收目录及 AI 接入规则。发布前重新生成文档和构建,并检查包内出口。浏览器视觉验收及独立消费业务项目测试仍由用户继续完成。
|
|
3611
3610
|
|
|
3611
|
+
## 2026-11-04:0.1.10 原生 HTML 迁移文档修订(未发布)
|
|
3612
|
+
|
|
3613
|
+
修正 AI 指南相对链接及 README 发布状态;新增透明地图覆盖层/主题面板/body 浮层示例,补齐旧页面 CSS 皮肤移除、布局保留和逐状态验收。迁移前后共用布局及业务脚本,不要求 Vue、不增加业务项目专用全局覆盖。详见 [HTML 迁移](docs/HTML-INTEGRATION.md)和[迁移后示例](examples/html/migration/after.html)。本轮仅文档、示例及生成器修订,未构建、发布或浏览器验证。
|
|
3614
|
+
|
|
3615
|
+
本轮验证:相对链接检查覆盖源码文档、生成 AI 文档及 npm files 清单;迁移前后 DOM 检查覆盖相同 ID、查询/重置、地图点击监听、弹窗事件接线和主题同步。弹窗方法使用测试替身,未验证实际焦点、地图拖拽、布局或视觉状态。没有改动库样式代码或业务消费项目,版本仍为 0.1.10,修订尚未发布。
|
|
3616
|
+
|
|
3617
|
+
## 0.1.11 发布内容
|
|
3618
|
+
|
|
3619
|
+
修正 AI 指南及合并文档相对链接,更新 README 当前发布状态并归档历史说明。原生 HTML 路线明确保留 DOM/事件/表单且无需 Vue;新增透明地图覆盖层、独立浮层主题、旧皮肤移除及前后迁移示例。发布检查包括生成文档、相对链接/包内路径、类型和库构建;未进行浏览器视觉或真实地图验收。
|
|
3620
|
+
|
|
3621
|
+
## 0.1.12 引导式接入
|
|
3622
|
+
|
|
3623
|
+
新增唯一 START-HERE.md 入口,要求先询问 HTML/JavaScript 或 Vue 并等待用户回答,再确认目标与范围;明确回答不重复问,不确定时只读检查后请用户确认。README、llms 生成源、AI/HTML/迁移/主题/按需指南及网站快速开始共用此规则。HTML 保留已有交互,Vue 为用户明确选择的路线。包不会自行弹出问答,需 AI 阅读文档后执行。
|
|
3624
|
+
|
|
3612
3625
|
# Component API reference
|
|
3613
3626
|
|
|
3614
3627
|
Generated from Vue/TypeScript source; defaultExpression is source text, not evaluated JSON. Types refer to declarations below. Unlisted props must not be invented. For Element Plus components use upstream documentation and shipped typings.
|
|
@@ -5881,6 +5894,8 @@ UiContainer 展示系统顶部/侧栏/内容和地图浮动区域示例。原 Ma
|
|
|
5881
5894
|
| src/components/widgets/Legend.vue | 0 | 未发现直接引用,需检查间接 / 动态使用 | vue<br>vue-router |
|
|
5882
5895
|
|
|
5883
5896
|
# CSS 变量主题与样式隔离
|
|
5897
|
+
|
|
5898
|
+
接入前必须先按 [引导式接入流程](docs/START-HERE.md)询问用户 HTML/Vue 和目标范围,等待答案后再采用本文对应路线;不得从项目结构自行猜测。
|
|
5884
5899
|
|
|
5885
5900
|
MapPageLayout 使用 --map-layout-layer-content/panel/legend/toolbar/focus/hover 统一区域层级。与原平台一致:content=1、panel=2、legend=3、toolbar=4、focus=5、hover=6,时间轴和右栏同样参与;hover 高于 focus;content 内部即使使用较大 z-index 也不跨越区域堆叠上下文。图例和底部外层允许内容溢出,避免浮层被父区域裁剪;内部滚动由业务组件负责。
|
|
5886
5901
|
|
|
@@ -5951,7 +5966,7 @@ SvgIcon 样式仅作用于 scoped 的 .sky-svg-icon,不覆盖原生 ElIcon 或
|
|
|
5951
5966
|
|
|
5952
5967
|
## 2026-10-13:一体机本地开发接入
|
|
5953
5968
|
|
|
5954
|
-
新增四个工作台组件和 MapTools.items。工作台 CSS 在 .sky-workbench 下隔离,使用库主题变量;应用消费本地 0.1.3-dev.0,未发布。详情见 [消费项目记录](CONSUMERS.md)。
|
|
5969
|
+
新增四个工作台组件和 MapTools.items。工作台 CSS 在 .sky-workbench 下隔离,使用库主题变量;应用消费本地 0.1.3-dev.0,未发布。详情见 [消费项目记录](docs/CONSUMERS.md)。
|
|
5955
5970
|
|
|
5956
5971
|
## 2026-10-13:顶部菜单修复(0.1.3-dev.1)
|
|
5957
5972
|
|
|
@@ -6167,7 +6182,7 @@ ManagementResourceLayout默认按VFit保持结构,不在700px阈值自动切
|
|
|
6167
6182
|
|
|
6168
6183
|
## 2026-11-04:HTML 按需样式接入(未发布)
|
|
6169
6184
|
|
|
6170
|
-
新增 theme/panel/button/input 四个 CSS 出口,完整 model-workspace.css 与拆分入口共享源码;网站新增隔离 HTML 示例。外观模式保留原 DOM/事件,不能当作 Vue 组件接入。结构、安装、状态、主题、浮层及 AGENTS.md 规则见 [HTML 接入](HTML-INTEGRATION.md)。仅生成文档和静态检查,未构建、发布或浏览器验证;历史“CSS 未拆分”对 Vue style.css 仍成立。
|
|
6185
|
+
新增 theme/panel/button/input 四个 CSS 出口,完整 model-workspace.css 与拆分入口共享源码;网站新增隔离 HTML 示例。外观模式保留原 DOM/事件,不能当作 Vue 组件接入。结构、安装、状态、主题、浮层及 AGENTS.md 规则见 [HTML 接入](docs/HTML-INTEGRATION.md)。仅生成文档和静态检查,未构建、发布或浏览器验证;历史“CSS 未拆分”对 Vue style.css 仍成立。
|
|
6171
6186
|
|
|
6172
6187
|
### 原生控件自动换肤调整(未发布)
|
|
6173
6188
|
|
|
@@ -6193,7 +6208,13 @@ HTML 控件直接复用 scoped-theme.css 的 userssite 主题变量,与 Vue
|
|
|
6193
6208
|
|
|
6194
6209
|
多选/size 列表设置可覆盖的 220px 宽度、选项留白和主题选中背景,补充悬停、选项禁用、整组禁用和高对比度规则;保留 size 与原生多选语义,不修改单选系统弹出菜单。第 10 项示例增加滚动及多选操作说明。未进行浏览器视觉验证。
|
|
6195
6210
|
|
|
6211
|
+
## 2026-11-04:0.1.10 原生 HTML 迁移文档修订(未发布)
|
|
6212
|
+
|
|
6213
|
+
修正 AI 指南相对链接及 README 发布状态;新增透明地图覆盖层/主题面板/body 浮层示例,补齐旧页面 CSS 皮肤移除、布局保留和逐状态验收。迁移前后共用布局及业务脚本,不要求 Vue、不增加业务项目专用全局覆盖。详见 [HTML 迁移](docs/HTML-INTEGRATION.md)和[迁移后示例](examples/html/migration/after.html)。本轮仅文档、示例及生成器修订,未构建、发布或浏览器验证。
|
|
6214
|
+
|
|
6196
6215
|
# 按需引入
|
|
6216
|
+
|
|
6217
|
+
接入前必须先按 [引导式接入流程](docs/START-HERE.md)询问用户 HTML/Vue 和目标范围,等待答案后再采用本文对应路线;不得从项目结构自行猜测。
|
|
6197
6218
|
|
|
6198
6219
|
下一次发布后支持独立组件路径:
|
|
6199
6220
|
|
|
@@ -6234,7 +6255,7 @@ import { MapSideMenu } from 'sky-ui-kit/components/MapSideMenu'
|
|
|
6234
6255
|
|
|
6235
6256
|
## 2026-11-04:HTML 按需样式接入(未发布)
|
|
6236
6257
|
|
|
6237
|
-
新增 theme/panel/button/input 四个 CSS 出口,完整 model-workspace.css 与拆分入口共享源码;网站新增隔离 HTML 示例。外观模式保留原 DOM/事件,不能当作 Vue 组件接入。结构、安装、状态、主题、浮层及 AGENTS.md 规则见 [HTML 接入](HTML-INTEGRATION.md)。仅生成文档和静态检查,未构建、发布或浏览器验证;历史“CSS 未拆分”对 Vue style.css 仍成立。
|
|
6258
|
+
新增 theme/panel/button/input 四个 CSS 出口,完整 model-workspace.css 与拆分入口共享源码;网站新增隔离 HTML 示例。外观模式保留原 DOM/事件,不能当作 Vue 组件接入。结构、安装、状态、主题、浮层及 AGENTS.md 规则见 [HTML 接入](docs/HTML-INTEGRATION.md)。仅生成文档和静态检查,未构建、发布或浏览器验证;历史“CSS 未拆分”对 Vue style.css 仍成立。
|
|
6238
6259
|
|
|
6239
6260
|
### 原生控件自动换肤调整(未发布)
|
|
6240
6261
|
|
|
@@ -6600,75 +6621,131 @@ metricslab降水播放轴使用TemplateLayout.timeline插槽;timelineLeft/time
|
|
|
6600
6621
|
|
|
6601
6622
|
2026-10-20:media-ui最新用户约定仅消费npm sky-ui-kit@0.1.6,开发和交付均移除源码alias;库能力后续需发布可安装版本后应用再升级。
|
|
6602
6623
|
|
|
6603
|
-
# HTML
|
|
6624
|
+
# 原生 HTML 样式接入与旧页面迁移
|
|
6625
|
+
|
|
6626
|
+
## 开始前先完成接入问答
|
|
6627
|
+
|
|
6628
|
+
先按 [引导式接入流程](docs/START-HERE.md)询问用户 HTML/Vue 和目标范围,等待答案再配置。本文是用户选择原生控件换肤后的实施指南,不用于 AI 自行选择技术路线。
|
|
6629
|
+
|
|
6630
|
+
## 目标、版本与路线
|
|
6604
6631
|
|
|
6605
|
-
|
|
6632
|
+
本路线适用于已有 HTML/JavaScript 页面、服务端模板以及 Vue 页面中的原生元素:统一库支持的控件表面样式,保留原 DOM、id/name/data 属性、监听器、表单提交和业务行为。不要求迁移 Vue,也不因页面包含查询、校验、弹窗等交互而切换技术栈。
|
|
6633
|
+
只有用户明确需要真实 UiSelect 等 Vue 组件及其组件 API 时,才考虑 [Vue 接入](docs/AI-GUIDE.md)或局部挂载;这是可选路线。
|
|
6606
6634
|
|
|
6607
|
-
|
|
6608
|
-
用户说“引入 sky-ui-kit”时,先检查项目及当前安装包 exports,再询问需要外观还是完整交互。需求明确时不重复询问。
|
|
6609
|
-
- 仅外观:本文的 HTML 接入,HTML、服务端模板和 Vue 原生元素均可使用。
|
|
6610
|
-
- Vue 完整组件:读取 AI-GUIDE.md、components.json、COMPONENT-API.md 和 CSS-THEME.md。
|
|
6611
|
-
- HTML 完整交互:需要局部挂载真实 Vue 组件,不能把加载 CSS 报告为组件接入完成。
|
|
6635
|
+
0.1.10 已包含 html/*.css、html/number.js 和下列 CSS/JS 能力;文档与迁移示例修订从 0.1.11 提供,已安装的 0.1.10 文档不会随仓库更新。
|
|
6612
6636
|
|
|
6613
|
-
##
|
|
6637
|
+
## 安装和资源部署
|
|
6614
6638
|
|
|
6615
|
-
|
|
6639
|
+
~~~sh
|
|
6640
|
+
npm install sky-ui-kit@0.1.11
|
|
6641
|
+
~~~
|
|
6616
6642
|
|
|
6617
|
-
|
|
6643
|
+
纯 HTML 运行时不依赖 Vue/Element Plus。npm 可能自动安装 peerDependencies;仅用于下载静态 CSS 的独立目录可选择 npm install --legacy-peer-deps sky-ui-kit@0.1.11,不应以此绕过已有 Vue 项目的依赖检查。
|
|
6644
|
+
|
|
6645
|
+
| 出口 | 作用 | 顺序 |
|
|
6618
6646
|
|---|---|---|
|
|
6619
|
-
| sky-ui-kit/html/theme.css |
|
|
6620
|
-
| sky-ui-kit/html/panel.css |
|
|
6621
|
-
| sky-ui-kit/html/button.css |
|
|
6622
|
-
| sky-ui-kit/html/input.css |
|
|
6647
|
+
| sky-ui-kit/html/theme.css | 主题变量、字体、主题边界 | 必需,第一 |
|
|
6648
|
+
| sky-ui-kit/html/panel.css | 面板结构及工作区布局 | 可选,主题后 |
|
|
6649
|
+
| sky-ui-kit/html/button.css | button、input 按钮 | 可选,主题后 |
|
|
6650
|
+
| sky-ui-kit/html/input.css | 输入、选择、复选/单选、文件按钮 | 可选,主题后 |
|
|
6651
|
+
| sky-ui-kit/html/number.css + number.js | 数字输入增减增强 | 可选,输入样式后 |
|
|
6623
6652
|
|
|
6624
|
-
|
|
6625
|
-
纯静态站将包内 dist/html 所需文件复制到 static/vendor/sky-ui-kit/html,并修改 link 路径;发布时随网站部署。包内 examples/html/index.html 为完整示例,可直接打开,要求安装包含这些 dist 文件的新发布版本。不得引用开发者磁盘路径或在生产依赖 node_modules URL。
|
|
6626
|
-
有构建工具的项目在唯一公共入口依次 import 对应出口。原有业务 CSS 在前,库样式在后;原样式有更高优先级、内联声明或 !important 时需逐项核对,加载顺序不能保证覆盖。不要无差别删除旧样式。
|
|
6653
|
+
带构建工具的项目在唯一公共入口 import 所需出口。纯静态网站从安装包 dist/html 复制所需文件到 static/vendor/sky-ui-kit/html,随网站部署,不把 node_modules URL 或开发者磁盘路径写进线上页面。不要加载 Element Plus CSS、style.css 或 global.css。完整 model-workspace.css 与前四项共享实现,选一种方式,不重复加载。
|
|
6627
6654
|
|
|
6628
|
-
|
|
6655
|
+
本轮完整示例位于 [迁移前](examples/html/migration/before.html)和[迁移后](examples/html/migration/after.html),同目录的 layout.css、business.js 两边共用。示例从包内 dist 读取 CSS,复制到网站时调整 href,不能只复制 HTML 而遗漏依赖。示例不请求远程地图服务,地图位置是布局占位,用于检查透明覆盖和点击穿透;真实地图仍由消费项目负责。
|
|
6629
6656
|
|
|
6630
|
-
|
|
6631
|
-
面板使用 sky-model-panel,其头、正文、底部分别为 sky-model-panel__header / __body / __footer;页面内容区 sky-model-workspace__content。结构与完整示例一致。
|
|
6632
|
-
保留原 id、name、data 属性、事件绑定和表单语义,只新增作用域及结构类。button 必须保留正确的 type,data-variant="primary" / "danger" 表示主按钮 / 危险操作;旧 primary/accent 类仍兼容,disabled 为原生禁用。输入支持 required、readonly、disabled、placeholder、hover/focus-visible 和 aria-invalid="true" / :user-invalid 错误边框,不在页面首次打开时将所有必填输入标红。错误文字由业务提供并用 aria-describedby 关联,不新增校验 JS。
|
|
6633
|
-
样式接口没有 Vue props、emits 或 slots。查询、重置、校验及提交行为由原页面/浏览器负责;示例脚本只展示事件,不提供接口请求。checkbox/radio 使用主题皮肤,range/file/color/image 不提供专用皮肤,hidden 不应用控件样式,select 下拉选项由浏览器绘制,不承诺与 Vue 选择器一致。
|
|
6657
|
+
## 透明地图覆盖层与浮层
|
|
6634
6658
|
|
|
6635
|
-
|
|
6659
|
+
0.1.10 的 sky-html 会设置背景。不要不加判断地把它加在覆盖整幅地图的透明固定层上;也不要为此修改 --color-bg 为 transparent,后者会影响控件和浮层派生色。
|
|
6636
6660
|
|
|
6637
|
-
|
|
6638
|
-
主题边界内可用 style 或后加载的类覆盖 --color-primary、--color-panel、--color-text、--color-border;明暗通过 data-theme 控制,不使用 theme-dark。
|
|
6639
|
-
此路线不引入 Element Plus CSS、style.css 或 global.css。局部主题不会自动传给 body 浮层;原页面浮层应放在主题容器内,或独立设置相同主题边界。不会附加焦点管理、遮罩、定位或弹窗逻辑。
|
|
6661
|
+
推荐让地图和 #workspace 保留原结构与透明布局,仅在实际面板上使用 sky-html:
|
|
6640
6662
|
|
|
6641
|
-
|
|
6663
|
+
~~~html
|
|
6664
|
+
<div id="map"><!-- 原有地图实例与业务 --></div>
|
|
6665
|
+
<div id="workspace" class="map-overlay">
|
|
6666
|
+
<section class="query-position sky-html sky-model-panel" data-theme="light">
|
|
6667
|
+
<header class="sky-model-panel__header"><h2>查询</h2></header>
|
|
6668
|
+
<form class="sky-model-panel__body"><label>名称 <input name="name"></label></form>
|
|
6669
|
+
</section>
|
|
6670
|
+
</div>
|
|
6671
|
+
<!-- body 下的独立浮层自行设置主题边界,不依赖兄弟面板继承 -->
|
|
6672
|
+
<dialog id="details" class="dialog-position">
|
|
6673
|
+
<section class="sky-html sky-model-panel" data-theme="light">详情内容</section>
|
|
6674
|
+
</dialog>
|
|
6675
|
+
~~~
|
|
6642
6676
|
|
|
6643
|
-
|
|
6677
|
+
~~~css
|
|
6678
|
+
/* 业务布局:保留原来的固定定位、层级、点击穿透,不是控件皮肤。 */
|
|
6679
|
+
.map-overlay { position: fixed; inset: 0; background: transparent; pointer-events: none; }
|
|
6680
|
+
.query-position { position: absolute; top: 24px; left: 24px; width: min(360px, calc(100% - 48px)); pointer-events: auto; }
|
|
6681
|
+
~~~
|
|
6644
6682
|
|
|
6645
|
-
|
|
6683
|
+
若确实需要让整个透明覆盖层成为共同主题容器,可在原布局类中明确保留背景:
|
|
6646
6684
|
|
|
6647
|
-
|
|
6685
|
+
~~~html
|
|
6686
|
+
<div id="workspace" class="map-overlay sky-html" data-theme="light">...</div>
|
|
6687
|
+
~~~
|
|
6688
|
+
~~~css
|
|
6689
|
+
/* 与库同等或更高优先级,仅保留透明布局;不复制按钮/输入框皮肤。 */
|
|
6690
|
+
.map-overlay.sky-html { background: transparent; }
|
|
6691
|
+
~~~
|
|
6648
6692
|
|
|
6649
|
-
|
|
6693
|
+
两种方式任选其一,不修改库默认背景,不新增 #workspace 全局覆盖。浮层在主题容器内时自然继承;移动到 body 后须在其实际内容容器上新增 sky-html 和相同 data-theme,并将应用自定义公共主题变量设置在公共祖先(例如 html),或明确复制到两个边界。不要复制私有 --userssite-* 计算结果。明暗切换要同步所有主题边界;局部面板变量不会自动传给兄弟浮层。
|
|
6650
6694
|
|
|
6651
|
-
|
|
6695
|
+
保留原定位、z-index、pointer-events、overflow 和弹窗 showModal/关闭逻辑;CSS 接入不会新增焦点管理、遮罩、定位或业务行为。检查父容器 overflow 是否裁剪浮层。把 sky-html 用在 body 是普通整页换肤的可选方案,不能作为所有 HTML 页面的要求。
|
|
6652
6696
|
|
|
6653
|
-
##
|
|
6697
|
+
## 旧页面迁移前后:删除皮肤,保留布局和行为
|
|
6654
6698
|
|
|
6655
|
-
|
|
6656
|
-
退出仅阻止控件皮肤,不撤销祖先继承的字体、颜色、变量;需要完全独立时放到主题容器之外。
|
|
6699
|
+
完整前后示例共享同一份 [布局](examples/html/migration/layout.css)和[业务脚本](examples/html/migration/business.js)。迁移前额外加载 [旧控件皮肤](examples/html/migration/legacy-controls.css);迁移后移除该文件,新增库 CSS、主题容器、面板结构类及按钮语义。已有 DOM 节点与事件 ID 保留,未重新渲染业务控件。
|
|
6657
6700
|
|
|
6658
|
-
|
|
6701
|
+
| 原规则类型 | 迁移处理 |
|
|
6702
|
+
|---|---|
|
|
6703
|
+
| #searchForm button、.query-position input 的背景/颜色/边框/圆角/字号/高度/内阴影 | 移除这些皮肤声明,交由库负责 |
|
|
6704
|
+
| :hover、:focus、:disabled、:checked、option:checked 等旧状态皮肤 | 同时移除,不能只改默认状态 |
|
|
6705
|
+
| 内联 style 的控件皮肤、!important 覆盖 | 从元素或旧规则删除,保留布局声明 |
|
|
6706
|
+
| position/inset/z-index/pointer-events、网格/列宽/gap、地图尺寸 | 继续保留在业务布局文件 |
|
|
6707
|
+
| 混合布局与皮肤的规则 | 按声明拆开:留下定位/布局,删除控件皮肤,不删除整条业务规则 |
|
|
6708
|
+
| 地图色带、阈值、图表配色、第三方地图内部 UI | 保留业务实现;必要时显式退出 |
|
|
6659
6709
|
|
|
6660
|
-
|
|
6710
|
+
示意:旧规则 #searchForm button { position:relative; background:#333; border:2px solid #777; } 只保留 position:relative;不能在库后面再写一套“更像 Vue”的 button 规则。
|
|
6661
6711
|
|
|
6662
|
-
|
|
6712
|
+
旧 CSS 在前、库 CSS 在后只是加载约定,并不保证覆盖高优先级选择器、内联样式或 !important。使用开发者工具检查控件的 Styles/Computed:查 border/background/color/font/height/outline/box-shadow 的获胜规则;切换 :hover/:focus,并实际设置 disabled/checked/aria-invalid。追溯到旧声明后移除该皮肤来源,不继续叠加选择器或 !important。不能删除的第三方控件使用 data-sky-native="off",并在验收中列为例外。
|
|
6663
6713
|
|
|
6664
|
-
|
|
6714
|
+
## 控件、状态和能力边界
|
|
6665
6715
|
|
|
6666
|
-
|
|
6716
|
+
sky-html 内原生控件自动换肤,不必逐个增加控件类。面板没有原生 HTML 对应物,使用 sky-model-panel、__header、__body、__footer 结构类;不把所有 div/section 变成面板。
|
|
6667
6717
|
|
|
6668
|
-
|
|
6669
|
-
select 单选弹出菜单仍由系统绘制,多选使用 size 行数和可滚动列表。file 输入仅美化文件按钮,不替换系统窗口、不发起上传。此前“上传保留原外观”的说明由此更新覆盖。
|
|
6718
|
+
保留 button 的 type,data-variant="primary" / "danger" 控制语义;旧 primary/accent 类兼容。readonly/disabled/required 保留浏览器语义。错误输入使用 aria-invalid="true",错误文字 data-sky-error,并通过 aria-describedby 关联;库不实现校验业务。不会在首次加载时把所有必填项标红。
|
|
6670
6719
|
|
|
6671
|
-
|
|
6720
|
+
select 单选系统菜单、日期/时间弹层、文件窗口的外观及键盘行为存在浏览器差异,不承诺与 Vue 完全相同。多选支持 size,默认列表宽 220px,可用 --sky-select-list-width 调整,Ctrl/Command/Shift 遵循系统行为。checkbox/radio 提供主题皮肤;file-selector-button 已主题化;range/color/image 仍由浏览器绘制,hidden 不应用控件皮肤。
|
|
6721
|
+
|
|
6722
|
+
数字增强是独立的可选原生 JS:加载 number.css,从 sky-ui-kit/html/number.js 导入 enhanceNumbers,DOM 就绪后调用。原 input 保持 id/name/事件,stepUp/stepDown 读取 min/max/step;发生变化后派发 input/change。返回函数用于清理,动态新增字段需再次初始化;step=any 禁用按钮,不提供长按重复。
|
|
6723
|
+
|
|
6724
|
+
字体与 Vue 共享主题字体栈,但包不带字体文件;跨系统存在字形差异。公共主题变量应在公共祖先定义,默认高度 32px、圆角 4px,可通过 control-height-m、radius-s、font-size-body 调整。控件状态与主题规范共用不等于每个原生控件和 Vue 的像素/交互一致。
|
|
6725
|
+
|
|
6726
|
+
## 局部退出
|
|
6727
|
+
|
|
6728
|
+
data-sky-native="off" 使节点及其后代退出控件皮肤;内层 sky-html 不重新启用。Element Plus 和地图内部控件有排除规则,未知第三方区域需显式退出。退出不撤销继承的字体/颜色/主题变量;完全独立区域放在主题容器外。
|
|
6729
|
+
|
|
6730
|
+
## 消费项目 AGENTS.md
|
|
6731
|
+
|
|
6732
|
+
合并以下规则并保留原有内容;文档路径相对安装包根目录:
|
|
6733
|
+
|
|
6734
|
+
> 本项目经用户确认采用 sky-ui-kit 原生 HTML 样式路线,接入范围按本项目记录。后续新增接入先按 docs/START-HERE.md 确认未明确的路线及范围,不从项目结构自行猜测。先读当前安装包 llms.txt、docs/HTML-INTEGRATION.md、docs/HTML-FORM-CATALOG.md 并核对 exports。保留原 DOM、监听器、表单与地图行为;使用受支持的库控件皮肤,删除冲突的旧默认及状态皮肤声明,保留布局。透明地图覆盖层不得因主题变为实底;浮层主题边界明确设置。不得通过叠加仿写皮肤补丁实现一致性。只有明确需要真实 Vue 组件才选择可选 Vue 路线。按视觉状态和原有业务行为验收,记录系统控件差异和未支持项。升级后重新核对当前包。
|
|
6735
|
+
|
|
6736
|
+
## 验收:视觉和业务均通过才完成
|
|
6737
|
+
|
|
6738
|
+
1. 默认:字体、尺寸、圆角、内边距与库 HTML 示例一致;地图可见,面板位置和层级正确。
|
|
6739
|
+
2. 悬停:按钮、输入、可用选项使用主题色;禁用元素无可操作悬停表现。
|
|
6740
|
+
3. 聚焦:鼠标与 Tab 聚焦为单层输入边框,键盘焦点可辨识,错误仍保留危险色。
|
|
6741
|
+
4. 禁用/只读:外观正确,字段不可编辑,fieldset 禁用也生效。
|
|
6742
|
+
5. 选中:checkbox/radio/option 的选中与禁用选中状态正确;系统渲染差异列为限制。
|
|
6743
|
+
6. 业务:原查询、重置、提交、表单验证、地图点击/拖动、文件 change 及弹窗开关仍工作;不重复注册监听器。
|
|
6744
|
+
7. 浮层:与面板主题一致,明暗同步,未被裁剪或透明覆盖层遮挡。
|
|
6745
|
+
|
|
6746
|
+
记录浏览器/系统、包版本、各状态结果、冲突来源及剩余例外;对照 [逐项目录](docs/HTML-FORM-CATALOG.md)。安装成功、文件存在或 CSS 加载成功只证明资源接入,不能证明视觉和交互已完成。
|
|
6747
|
+
|
|
6748
|
+
本轮修订检查了相对链接、示例结构/脚本和类型,并在授权发布流程中构建、核对安装包。未进行浏览器视觉验证或修改业务消费项目;地图占位示例不等于真实地图引擎集成验证。安装 0.1.11 或更新版本可获得本轮文档修订。
|
|
6672
6749
|
|
|
6673
6750
|
## 完整 HTML 示例
|
|
6674
6751
|
|
|
@@ -6942,3 +7019,196 @@ document.getElementById('theme').addEventListener('click', () => { const root =
|
|
|
6942
7019
|
```html
|
|
6943
7020
|
<button type="button">已换肤</button><div data-sky-native="off"><button type="button">退出换肤</button><input placeholder="退出换肤" aria-label="退出换肤"></div>
|
|
6944
7021
|
```
|
|
7022
|
+
|
|
7023
|
+
## HTML 迁移示例:before.html
|
|
7024
|
+
|
|
7025
|
+
~~~html
|
|
7026
|
+
<!doctype html>
|
|
7027
|
+
<html lang="zh-CN">
|
|
7028
|
+
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7029
|
+
<title>原生地图悬浮面板 · 迁移前</title>
|
|
7030
|
+
<link rel="stylesheet" href="./legacy-controls.css">
|
|
7031
|
+
<link rel="stylesheet" href="./layout.css">
|
|
7032
|
+
</head>
|
|
7033
|
+
<body>
|
|
7034
|
+
<div id="map"><p id="mapStatus">地图布局占位,点击此背景可核对穿透(不加载地图引擎)。</p></div>
|
|
7035
|
+
<!-- 透明地图覆盖层不添加 sky-html。业务定位和穿透规则不变。 -->
|
|
7036
|
+
<div id="workspace">
|
|
7037
|
+
<section class="query-position" data-demo-theme data-theme="light">
|
|
7038
|
+
<header><h1>水库查询</h1><button id="theme" type="button">切换主题</button></header>
|
|
7039
|
+
<form id="searchForm" class="form-layout">
|
|
7040
|
+
<label class="field-layout" for="name">名称<input id="name" name="name" required placeholder="请输入名称"></label>
|
|
7041
|
+
<label class="field-layout" for="province">省份<select id="province" name="province" multiple size="3"><option selected>湖北</option><option>湖南</option><option>四川</option></select></label>
|
|
7042
|
+
<label><input name="enabled" type="checkbox" checked>仅显示可用项</label>
|
|
7043
|
+
<label>只读编码<input name="code" value="363" readonly></label>
|
|
7044
|
+
<div class="actions-layout"><button type="submit">查询</button><button type="reset">重置</button><button type="button" disabled>禁用操作</button></div>
|
|
7045
|
+
<output id="status" aria-live="polite">等待查询</output>
|
|
7046
|
+
</form>
|
|
7047
|
+
<footer><button id="openDetails" type="button">打开 body 浮层</button></footer>
|
|
7048
|
+
</section>
|
|
7049
|
+
</div>
|
|
7050
|
+
<dialog id="details" class="dialog-position">
|
|
7051
|
+
<!-- 浮层与查询面板是兄弟节点,明确使用自己的主题边界并同步 data-theme。 -->
|
|
7052
|
+
<section class="legacy-dialog" data-demo-theme data-theme="light">
|
|
7053
|
+
<header><h2>独立浮层</h2></header>
|
|
7054
|
+
<div><label>备注<input name="notes" placeholder="原生浮层输入"></label></div>
|
|
7055
|
+
<footer><button id="closeDetails" type="button">关闭</button></footer>
|
|
7056
|
+
</section>
|
|
7057
|
+
</dialog>
|
|
7058
|
+
<script src="./business.js"></script>
|
|
7059
|
+
</body></html>
|
|
7060
|
+
|
|
7061
|
+
~~~
|
|
7062
|
+
|
|
7063
|
+
## HTML 迁移示例:after.html
|
|
7064
|
+
|
|
7065
|
+
~~~html
|
|
7066
|
+
<!doctype html>
|
|
7067
|
+
<html lang="zh-CN">
|
|
7068
|
+
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7069
|
+
<title>原生地图悬浮面板 · 迁移后</title>
|
|
7070
|
+
<!-- 包内示例相对 dist 路径;部署时将资源复制到网站静态目录并更新 href。 -->
|
|
7071
|
+
<link rel="stylesheet" href="../../../dist/html/theme.css">
|
|
7072
|
+
<link rel="stylesheet" href="../../../dist/html/panel.css">
|
|
7073
|
+
<link rel="stylesheet" href="../../../dist/html/button.css">
|
|
7074
|
+
<link rel="stylesheet" href="../../../dist/html/input.css">
|
|
7075
|
+
<link rel="stylesheet" href="./layout.css">
|
|
7076
|
+
</head>
|
|
7077
|
+
<body>
|
|
7078
|
+
<div id="map"><p id="mapStatus">地图布局占位,点击此背景可核对穿透(不加载地图引擎)。</p></div>
|
|
7079
|
+
<!-- 透明地图覆盖层不添加 sky-html。业务定位和穿透规则不变。 -->
|
|
7080
|
+
<div id="workspace">
|
|
7081
|
+
<section class="query-position sky-html sky-model-panel" data-demo-theme data-theme="light">
|
|
7082
|
+
<header class="sky-model-panel__header"><h1>水库查询</h1><button id="theme" type="button">切换主题</button></header>
|
|
7083
|
+
<form id="searchForm" class="form-layout sky-model-panel__body">
|
|
7084
|
+
<label class="field-layout" for="name">名称<input id="name" name="name" required placeholder="请输入名称"></label>
|
|
7085
|
+
<label class="field-layout" for="province">省份<select id="province" name="province" multiple size="3"><option selected>湖北</option><option>湖南</option><option>四川</option></select></label>
|
|
7086
|
+
<label><input name="enabled" type="checkbox" checked>仅显示可用项</label>
|
|
7087
|
+
<label>只读编码<input name="code" value="363" readonly></label>
|
|
7088
|
+
<div class="actions-layout"><button type="submit" data-variant="primary">查询</button><button type="reset">重置</button><button type="button" disabled>禁用操作</button></div>
|
|
7089
|
+
<output id="status" aria-live="polite">等待查询</output>
|
|
7090
|
+
</form>
|
|
7091
|
+
<footer class="sky-model-panel__footer"><button id="openDetails" type="button">打开 body 浮层</button></footer>
|
|
7092
|
+
</section>
|
|
7093
|
+
</div>
|
|
7094
|
+
<dialog id="details" class="dialog-position">
|
|
7095
|
+
<!-- 浮层与查询面板是兄弟节点,明确使用自己的主题边界并同步 data-theme。 -->
|
|
7096
|
+
<section class="sky-html sky-model-panel" data-demo-theme data-theme="light">
|
|
7097
|
+
<header class="sky-model-panel__header"><h2>独立浮层</h2></header>
|
|
7098
|
+
<div class="sky-model-panel__body"><label>备注<input name="notes" placeholder="原生浮层输入"></label></div>
|
|
7099
|
+
<footer class="sky-model-panel__footer"><button id="closeDetails" type="button">关闭</button></footer>
|
|
7100
|
+
</section>
|
|
7101
|
+
</dialog>
|
|
7102
|
+
<script src="./business.js"></script>
|
|
7103
|
+
</body></html>
|
|
7104
|
+
|
|
7105
|
+
~~~
|
|
7106
|
+
|
|
7107
|
+
## HTML 迁移示例:layout.css
|
|
7108
|
+
|
|
7109
|
+
~~~css
|
|
7110
|
+
/* 迁移前后原样保留的业务布局,不负责控件皮肤。 */
|
|
7111
|
+
body { margin:0; }
|
|
7112
|
+
#map { position:fixed; inset:0; display:grid; place-items:center; background:repeating-linear-gradient(35deg,#b5d6c2 0 60px,#b9dbe8 60px 120px); }
|
|
7113
|
+
#workspace { position:fixed; inset:0; background:transparent; pointer-events:none; }
|
|
7114
|
+
.query-position { position:absolute; inset:24px auto auto 24px; width:min(360px,calc(100% - 48px)); pointer-events:auto; }
|
|
7115
|
+
.form-layout { display:grid; gap:16px; }
|
|
7116
|
+
.field-layout { display:grid; gap:6px; }
|
|
7117
|
+
.actions-layout { display:flex; flex-wrap:wrap; gap:12px; }
|
|
7118
|
+
.dialog-position { width:min(420px,calc(100% - 48px)); padding:0; border:0; }
|
|
7119
|
+
|
|
7120
|
+
~~~
|
|
7121
|
+
|
|
7122
|
+
## HTML 迁移示例:legacy-controls.css
|
|
7123
|
+
|
|
7124
|
+
~~~css
|
|
7125
|
+
/* 旧皮肤:迁移后移除该文件,不用更强的选择器继续覆盖。 */
|
|
7126
|
+
.query-position { background:#eee; border:2px solid #555; padding:14px; }
|
|
7127
|
+
#searchForm input, #searchForm select { background:#ddd; color:#222; border:2px solid #555; border-radius:0; padding:4px; }
|
|
7128
|
+
#searchForm input:focus { outline:3px solid orange; }
|
|
7129
|
+
#searchForm button, #openDetails, #closeDetails { background:#333; color:white; border:2px solid #777; border-radius:0; height:28px; }
|
|
7130
|
+
#searchForm button:hover { background:#555; }
|
|
7131
|
+
#searchForm button:disabled { background:#999; color:#ccc; }
|
|
7132
|
+
#searchForm input:checked { accent-color:orange; }
|
|
7133
|
+
|
|
7134
|
+
~~~
|
|
7135
|
+
|
|
7136
|
+
## HTML 迁移示例:business.js
|
|
7137
|
+
|
|
7138
|
+
~~~js
|
|
7139
|
+
/* 两个页面共用原生业务监听器,不创建/替换业务 DOM,不依赖 Vue。 */
|
|
7140
|
+
const form = document.getElementById('searchForm');
|
|
7141
|
+
const status = document.getElementById('status');
|
|
7142
|
+
form.addEventListener('submit', event => {
|
|
7143
|
+
event.preventDefault();
|
|
7144
|
+
const data = new FormData(form);
|
|
7145
|
+
status.textContent = '查询:' + data.get('name') + ';已选省份:' + data.getAll('province').join('、');
|
|
7146
|
+
});
|
|
7147
|
+
form.addEventListener('reset', () => { status.textContent = '查询条件已重置'; });
|
|
7148
|
+
document.getElementById('map').addEventListener('click', () => { document.getElementById('mapStatus').textContent = '地图背景仍可点击'; });
|
|
7149
|
+
const dialog = document.getElementById('details');
|
|
7150
|
+
document.getElementById('openDetails').addEventListener('click', () => { dialog.showModal(); });
|
|
7151
|
+
document.getElementById('closeDetails').addEventListener('click', () => { dialog.close(); });
|
|
7152
|
+
document.getElementById('theme').addEventListener('click', () => {
|
|
7153
|
+
const panels = document.querySelectorAll('[data-demo-theme]');
|
|
7154
|
+
const next = panels[0].dataset.theme === 'dark' ? 'light' : 'dark';
|
|
7155
|
+
panels.forEach(panel => { panel.dataset.theme = next; });
|
|
7156
|
+
});
|
|
7157
|
+
|
|
7158
|
+
~~~
|
|
7159
|
+
|
|
7160
|
+
# 引导式接入:先问用户,再配置
|
|
7161
|
+
|
|
7162
|
+
这是 README、llms.txt 和各接入指南共用的唯一流程入口。规则从 0.1.12 提供。安装包不会自动向用户弹出问答,也不会自动进入所有 AI 上下文;AI 阅读此入口后应主动执行下面的问答。
|
|
7163
|
+
|
|
7164
|
+
## 第一步:确认用户使用 HTML 还是 Vue
|
|
7165
|
+
|
|
7166
|
+
当用户说“帮我引入 sky-ui-kit”或安装后要求接入时,先问:
|
|
7167
|
+
|
|
7168
|
+
> 这次要接入的是哪一种页面?
|
|
7169
|
+
> 1. 原生 HTML / JavaScript 页面
|
|
7170
|
+
> 2. Vue 3 页面
|
|
7171
|
+
> 3. 我不确定,请帮我检查后说明
|
|
7172
|
+
|
|
7173
|
+
等待用户回答,再执行路线相关的文件修改、样式加载或框架依赖安装。不要根据 package.json、扩展名或当前目录擅自替用户选择。可以先阅读包内文档、核对已安装版本和只读检查项目。
|
|
7174
|
+
用户在本次对话已明确回答 HTML/Vue 时,直接采用该答案,不重复询问;该答案来自用户,不是 AI 猜测。用户选择“不确定”时才检查项目,说明发现并请用户确认接入的具体页面类型;混合项目需确认目标页面。
|
|
7175
|
+
|
|
7176
|
+
## 第二步:按答案询问接入目标
|
|
7177
|
+
|
|
7178
|
+
HTML 用户:
|
|
7179
|
+
|
|
7180
|
+
> 你希望在哪些地方使用统一样式?
|
|
7181
|
+
> 1. 先改一个现有页面或面板,保留原来的操作逻辑
|
|
7182
|
+
> 2. 整个现有站点换肤,保留原来的操作逻辑
|
|
7183
|
+
> 3. 创建一个新的原生 HTML 示例页面
|
|
7184
|
+
> 请告诉我对应页面或目录;如果你已经提供,我会直接使用。
|
|
7185
|
+
|
|
7186
|
+
HTML 的查询、表单校验、分页、弹窗等现有交互继续使用原业务 JS,不把“需要交互”解释为“必须迁移 Vue”。只有用户主动要求真实 Vue 组件能力时,才说明可选局部挂载及成本,并等待其选择。
|
|
7187
|
+
|
|
7188
|
+
Vue 用户:
|
|
7189
|
+
|
|
7190
|
+
> 你希望怎样使用这个包?
|
|
7191
|
+
> 1. 使用库实际导出的 Vue 组件开发或替换页面
|
|
7192
|
+
> 2. 仅给现有原生 HTML 控件统一样式,保留现有逻辑
|
|
7193
|
+
> 请告诉我对应页面或目录;如果你已经提供,我会直接使用。
|
|
7194
|
+
|
|
7195
|
+
答案已明确时不重复问;缺失答案不能通过等待超时自动补成默认选择。用户暂未回答时只做不依赖答案的读取工作。
|
|
7196
|
+
|
|
7197
|
+
## 第三步:实施所选路线
|
|
7198
|
+
|
|
7199
|
+
| 用户选择 | 阅读资料 | 实施要求 |
|
|
7200
|
+
|---|---|---|
|
|
7201
|
+
| HTML 或 Vue 中原生元素换肤 | [HTML 迁移](docs/HTML-INTEGRATION.md)、[控件验收](docs/HTML-FORM-CATALOG.md) | 保留 DOM/id/name/监听器/表单,按需 CSS,删除冲突旧皮肤、保留布局 |
|
|
7202
|
+
| Vue 真实组件 | [AI 指南](docs/AI-GUIDE.md)、[真实出口](components.json)、[API](docs/COMPONENT-API.md)、[主题](docs/CSS-THEME.md) | 核对 Vue/peerDependencies,按实际导出使用组件 |
|
|
7203
|
+
|
|
7204
|
+
记录用户确认的页面、路线与范围,简要说明将引入的资源,再实施;不额外要求用户确认每个常规修改。遇到地图透明覆盖层、浮层、旧 CSS 冲突时按 HTML 指南处理,不改成不透明整页工作区,也不通过仿写控件皮肤覆盖。
|
|
7205
|
+
需要本地源码路径才能完成的指引应作为文档缺口报告;消费者只依赖当前安装包。
|
|
7206
|
+
|
|
7207
|
+
## 第四步:记录项目规则并逐状态验收
|
|
7208
|
+
|
|
7209
|
+
将用户选择、接入范围、包内入口、主题位置及验收规则合并到消费项目 AGENTS.md,保留已有规则,不重复追加。不自动创建消费项目不存在的 Vue 依赖或迁移技术栈。
|
|
7210
|
+
核对默认、悬停、聚焦、错误、只读、禁用、选中及浮层,检查查询/提交/重置/地图操作等原行为。区分已做的静态检查和用户/浏览器实际验证,列出系统 select/日期等浏览器差异;安装成功或 CSS 已加载不等于完成视觉接入。
|
|
7211
|
+
|
|
7212
|
+
## 新聊天测试
|
|
7213
|
+
|
|
7214
|
+
用户只说“帮我引入 sky-ui-kit”。期望 AI 先询问 HTML/Vue,等待回答;随后按所选路线询问范围并执行。不得直接注册 Vue、套上全页背景或把页面改成库组件。已明确的答案不再重复询问。
|
package/llms.txt
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# sky-ui-kit
|
|
2
2
|
|
|
3
|
-
> Vue 3 components compatible with Element Plus, project menus, timeline and map tools. Version 0.1.
|
|
3
|
+
> Vue 3 components compatible with Element Plus, project menus, timeline and map tools. Version 0.1.12. AI tools must explicitly load these files.
|
|
4
|
+
|
|
5
|
+
## Mandatory onboarding
|
|
6
|
+
|
|
7
|
+
Read [Start here](docs/START-HERE.md). Ask the user HTML/JavaScript or Vue FIRST and wait for their answer before route-specific edits or dependency configuration. Then ask scope and intended usage. Do not infer the route from project files. Reuse answers explicitly provided by the user; inspect only when they choose unsure, then ask them to confirm. HTML keeps existing DOM/events/forms and does not require Vue.
|
|
4
8
|
|
|
5
9
|
## Documentation
|
|
6
10
|
|
|
7
|
-
- [HTML and AI onboarding](docs/HTML-INTEGRATION.md):
|
|
11
|
+
- [HTML and AI onboarding](docs/HTML-INTEGRATION.md): native HTML migration retaining existing interactions, transparent map overlays and optional Vue route.
|
|
8
12
|
|
|
9
13
|
- [Consumers](docs/CONSUMERS.md): shared project convention and local integration.
|
|
10
14
|
- [AI guide](docs/AI-GUIDE.md): setup, examples, icon/event bindings and limits.
|
|
@@ -25,6 +29,6 @@
|
|
|
25
29
|
|
|
26
30
|
## Setup
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
After the required user Q&A in docs/START-HERE.md, native HTML: read docs/HTML-INTEGRATION.md, retain DOM/events/forms, load supported html/*.css once, preserve transparent map overlays and remove conflicting legacy control skins. Vue is optional only when real Vue components are requested. Vue component route: import element-plus/dist/index.css then sky-ui-kit/style.css once in main.ts, and check components.json before using exports. Verify visual states and existing behavior; installing or loading CSS alone is not completion.
|
|
29
33
|
|
|
30
34
|
- [HTML form checklist](docs/HTML-FORM-CATALOG.md): individual native control examples and verification limits.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sky-ui-kit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "Vue UI components compatible with Element Plus and the project theme",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
"docs/MODEL-WORKSPACE.md",
|
|
29
29
|
"docs/HTML-INTEGRATION.md",
|
|
30
30
|
"examples/html",
|
|
31
|
-
"docs/HTML-FORM-CATALOG.md"
|
|
31
|
+
"docs/HTML-FORM-CATALOG.md",
|
|
32
|
+
"docs/RELEASE-HISTORY.md",
|
|
33
|
+
"docs/START-HERE.md"
|
|
32
34
|
],
|
|
33
35
|
"exports": {
|
|
34
36
|
".": {
|
|
@@ -72,7 +74,8 @@
|
|
|
72
74
|
"prepack": "npm run docs:ai && npm run build:package",
|
|
73
75
|
"build:package": "vite build --config vite.package.config.ts && node scripts/build-package.mjs && vue-tsc -p tsconfig.package.json",
|
|
74
76
|
"docs:ai": "node scripts/generate-ai-docs.mjs",
|
|
75
|
-
"components:sync": "node scripts/sync-element-plus.mjs"
|
|
77
|
+
"components:sync": "node scripts/sync-element-plus.mjs",
|
|
78
|
+
"docs:check-links": "node scripts/check-doc-links.mjs"
|
|
76
79
|
},
|
|
77
80
|
"peerDependencies": {
|
|
78
81
|
"@element-plus/icons-vue": "^2.3.2",
|