sky-ui-kit 0.1.8 → 0.1.10

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.
Files changed (36) hide show
  1. package/README.md +6 -0
  2. package/components.json +314 -19
  3. package/dist/components/AppSelect.vue.d.ts +7 -0
  4. package/dist/components/DefenseMapLayout.vue.d.ts +11 -2
  5. package/dist/components/ManagementResourceLayout.vue.d.ts +19 -0
  6. package/dist/components/MapBottomProcessPanel.vue.d.ts +11 -0
  7. package/dist/components/MapPageLayout.vue.d.ts +21 -18
  8. package/dist/components/MapTimeline.vue.d.ts +9 -0
  9. package/dist/components/MapWorkspacePanel.vue.d.ts +11 -1
  10. package/dist/components/ModelWorkspacePanel.vue.d.ts +11 -1
  11. package/dist/components/ProcessDataTable.vue.d.ts +9 -1
  12. package/dist/components/ProjectMenu.vue.d.ts +11 -0
  13. package/dist/components/WorkbenchPanel.vue.d.ts +9 -0
  14. package/dist/components/index.d.ts +303 -67
  15. package/dist/components.js +2199 -2127
  16. package/dist/html/button.css +12 -0
  17. package/dist/html/input.css +39 -0
  18. package/dist/html/number.css +8 -0
  19. package/dist/html/number.js +31 -0
  20. package/dist/html/panel.css +12 -0
  21. package/dist/html/theme.css +218 -0
  22. package/dist/model-workspace.css +254 -17
  23. package/dist/style.css +257 -20
  24. package/dist/utils/dimensions.d.ts +5 -0
  25. package/docs/AI-CHANGELOG.md +77 -2
  26. package/docs/AI-GUIDE.md +47 -3
  27. package/docs/COMPONENT-API.md +124 -10
  28. package/docs/CSS-THEME.md +62 -0
  29. package/docs/HTML-FORM-CATALOG.md +225 -0
  30. package/docs/HTML-INTEGRATION.md +69 -0
  31. package/docs/INTEGRATION.md +42 -0
  32. package/docs/ON-DEMAND.md +8 -0
  33. package/examples/html/index.html +41 -0
  34. package/llms-full.txt +664 -16
  35. package/llms.txt +5 -1
  36. package/package.json +102 -93
@@ -0,0 +1,5 @@
1
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
2
+ export type DesignLength = number | string;
3
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength];
4
+ export declare function designLength(value: DesignLength): string;
5
+ export declare function designSpacing(value: DesignSpacing): string;
@@ -437,8 +437,83 @@ SVG 图库从主入口移到可选 icons 入口,SvgIcon 不再自动注册;
437
437
  ## 2026-10-30 · HTML / Vue 双接入文档
438
438
 
439
439
  新增独立 model-workspace.css 发布出口,原生 HTML 用 CSS 和结构类,Vue 用主题组件与公共 CSS。补齐两套完整示例、主题切换、事件绑定和部署路径说明,未构建发布。
440
+
441
+ ## 2026-11-02 · 0.1.8 发布准备
442
+
443
+ - 发布当前组件源码、按需入口及模型工作区主题;HTML 使用 model-workspace.css,Vue 使用组件与 style.css。清除旧消费项目锁记录。发布状态以 npm 注册表为准。
444
+
445
+
446
+
447
+ ## 2026-11-03:可配置 VFit 尺寸(源码待发布)
448
+
449
+ 数字尺寸代表设计单位,由组件转换为 `calc(var(--cp-font-1, 1px) * n)`;CSS 字符串原样使用,不额外注册 VFit 或 transform。DesignSpacing 支持单值及2/3/4项数组,遵循CSS间距顺序。0是有效值。调用方传裸字符串 `"12"` 不是合法CSS长度,应使用 `:gap="12"`;`"12px"` 是固定CSS像素。
450
+
451
+ 所有新增参数有默认值;下表空字符串表示使用组件现有布局/样式默认值,不是0。根style可控制组件根尺寸,内部内边距通过对应props调整,无需deep覆盖。
452
+
453
+ | 组件 | 参数与默认值 |
454
+ | --- | --- |
455
+ | MapPageLayout | 新增gap=12;已有rightPanelWidth=328、leftPanelWidth=320、edge=12等参数兼容字符串并支持数字;top/bottom/toolbar/timeline偏移默认空字符串,沿用自动避让 |
456
+ | DefenseMapLayout | gap=4、padding=4、toolbarGap=12、toolbarPadding=12;topOffset默认64设计单位,兼容数字/字符串 |
457
+ | MapWorkspacePanel | headerPadding=16、bodyPadding=16、footerPadding=[12,16]、gap=16 |
458
+ | ModelWorkspacePanel | headerPadding=[12,16]、bodyPadding=16、footerPadding=[12,16]、gap=12 |
459
+ | WorkbenchPanel | width='auto'、height='auto'、padding=0、gap=0;gap只在调用方使用flex/grid时产生间距,不强改display |
460
+ | ManagementResourceLayout | gap=20、padding=[0,24,20](内容区域)、introPadding=24、filterGap=20、filterPadding=[20,24]、inputWidth=260、selectWidth=160、cascaderWidth=280、responsive=false |
461
+ | AppSelect | width='100%'、controlHeight=''(按size取主题小/中/大高度)、controlPadding=[0,10];多选内容可增高;浮层不再设100%最小宽度,使用底层fit-input-width等配置 |
462
+ | ProjectMenu | width=''、itemHeight=''、itemPadding=''、padding=''(分别保留横/纵菜单已有默认值)、gap=2 |
463
+ | MapTimeline | padding=[10,12]、gap=9、trackHeight=88、controlHeight=30;不改变播放/时次数据API |
464
+ | MapBottomProcessPanel | height=320、maxHeight='42dvh'、headerPadding=[10,16]、metaPadding=[8,16,0]、gap=12 |
465
+ | ProcessDataTable | cellPadding=[6,10]、paginationGap=12、paginationPadding=5 |
466
+
467
+ ManagementResourceLayout默认按VFit保持结构,不在700px阈值自动切换;旧调用方如需原断点布局显式传responsive=true。这是需要在升级说明中说明的行为变化。其内容区域padding与介绍区padding分开,避免改变原默认留白。
468
+
469
+ 地图布局时间轴测量改为offsetHeight,使用布局坐标而非transform后的视口像素,防止再次乘入缩放系数。UiButton/UiSelect/UiTable等基础组件继续使用底层size、width、height及主题token,无重复同义接口。旧TemplateLayout保留兼容接口,不冒充MapPageLayout别名。
470
+
471
+ 示例:
472
+ ```vue
473
+ <MapWorkspacePanel title="降水统计" :header-padding="[12, 16]" :body-padding="[8, 12]" :gap="8">
474
+ 业务内容
475
+ </MapWorkspacePanel>
476
+ <MapPageLayout :right-panel-width="320" :edge="12" :gap="8" />
477
+ ```
478
+ 预览入口:MapPageLayout布局演示,点击“查看紧凑尺寸”比较右栏宽度、边距与面板内边距。其他组件参数与默认值可在生成API查询。当前未构建、打包、发布或浏览器验证,用户预览确认后自行发版。
440
479
 
441
- ## 2026-11-02 · 0.1.8 发布准备
480
+ ## 2026-11-03 · 0.1.9 发布准备
442
481
 
443
- - 发布当前组件源码、按需入口及模型工作区主题;HTML 使用 model-workspace.css,Vue 使用组件与 style.css。清除旧消费项目锁记录。发布状态以 npm 注册表为准。
482
+ - 将当前布局、面板、尺寸适配与主题调整纳入新版,重新生成 AI 文档并检查组件包。发布结果以 npm 注册表为准。
444
483
 
484
+
485
+ ## 2026-11-04:HTML 按需样式接入(未发布)
486
+
487
+ 新增 theme/panel/button/input 四个 CSS 出口,完整 model-workspace.css 与拆分入口共享源码;网站新增隔离 HTML 示例。外观模式保留原 DOM/事件,不能当作 Vue 组件接入。结构、安装、状态、主题、浮层及 AGENTS.md 规则见 [HTML 接入](HTML-INTEGRATION.md)。仅生成文档和静态检查,未构建、发布或浏览器验证;历史“CSS 未拆分”对 Vue style.css 仍成立。
488
+
489
+ ### 原生控件自动换肤调整(未发布)
490
+
491
+ 新增 sky-html 容器入口,按需样式直接匹配原生 button/input/select/textarea;支持 data-sky-native="off" 本身及后代退出、Element Plus/地图内部控件排除,保留旧工作区 opt-in。主题默认低优先级,特殊按钮使用 data-variant,支持只读、禁用、错误及焦点状态;面板继续使用明确结构类,不覆盖所有 div。示例网站展示完整原生 HTML 状态及退出区域,详见 HTML-INTEGRATION.md。
492
+
493
+ ### HTML 控件未换肤修复
494
+
495
+ 此前 Element Plus 排除规则使用 class 包含 el-,误命中 sky-model-panel,导致整块面板内原生控件不应用样式。改为类名开头或空格后的 el- 前缀匹配,保留显式局部退出和第三方控件隔离。补充 DOM 选择器回归检查;未进行浏览器视觉验证。
496
+
497
+ ### HTML / Vue 控件视觉统一(未发布)
498
+
499
+ HTML 控件直接复用 scoped-theme.css 的 userssite 主题变量,与 Vue 共用字体、默认 32px 高度、4px 圆角、主色/危险色及派生状态色;危险按钮为实底,禁用状态不再整体透明。补充复选框、单选框及 data-sky-error 错误文案。HTML 示例同步网站根主题变量。只验证源码和 DOM 选择器,未进行浏览器像素对比;原生 select 弹出菜单、日期选择器仍由浏览器提供。
500
+
501
+ ## HTML 表单控件逐项验收模块
502
+
503
+ 网站新增独立“HTML 表单控件”导航,22 项按编号定位,每项包含真实原生标签、可操作状态、可复制代码及当前页核对标记。目录与生成文档共享 src/html-form-catalog.ts,详见 HTML-FORM-CATALOG.md。滑块/颜色/上传仍为原生外观;复杂 Vue 组件没有等价原生标签,不宣称实现对应交互。仅做类型和文档检查,等待用户逐项核对。
504
+
505
+ ### HTML 输入聚焦双框修复
506
+
507
+ 文本输入、select、textarea 聚焦时取消外扩 outline 和额外阴影,仅将已有边框改为主题主色;错误状态聚焦/悬停继续保持危险色。复选框、单选框的键盘焦点提示不变。未进行浏览器验证。
508
+
509
+ ### 原生数字、选择和上传控件完善(未发布)
510
+
511
+ 多选 select 恢复列表高度,保留系统弹出菜单;file-selector-button 使用共享主题及禁用/聚焦状态。新增可选 html/number.js 与 number.css,enhanceNumbers 保留原 input、min/max/step 与事件,返回清理函数;step=any 禁用增减,动态新增节点需再次初始化。验收第 8/10/20 项同步更新。未构建或浏览器验证。
512
+
513
+ ### HTML 原生多选列表外观调整
514
+
515
+ 多选/size 列表设置可覆盖的 220px 宽度、选项留白和主题选中背景,补充悬停、选项禁用、整组禁用和高对比度规则;保留 size 与原生多选语义,不修改单选系统弹出菜单。第 10 项示例增加滚动及多选操作说明。未进行浏览器视觉验证。
516
+
517
+ ## 0.1.10 发布内容
518
+
519
+ 包含 HTML 按需主题/面板/按钮/输入样式、数字输入增强脚本、原生选择与上传样式、22 项表单验收目录及 AI 接入规则。发布前重新生成文档和构建,并检查包内出口。浏览器视觉验收及独立消费业务项目测试仍由用户继续完成。
package/docs/AI-GUIDE.md CHANGED
@@ -1,4 +1,10 @@
1
1
  # sky-ui-kit:AI 使用指南
2
+
3
+ ## AI 接入入口:先选择使用方式
4
+
5
+ 当用户要求安装、引入 sky-ui-kit 时,请先读取当前安装包的 llms.txt 和 [HTML / Vue 接入判断](docs/HTML-INTEGRATION.md),检查项目及真实 exports。只需外观时使用正式 HTML 样式接口(新版容器 sky-html 内原生控件自动换肤,data-sky-native="off" 局部退出);需要交互时使用真实 Vue 组件,HTML 项目可局部挂载。需求不明确时先询问,接入后合并项目 AGENTS.md 规则,不能把 npm install 或仅加载 CSS 报告为完整组件接入。
6
+
7
+ HTML 按需入口从 0.1.10 提供;0.1.9 使用完整 model-workspace.css。示例网站快速开始下方提供“HTML 按需样式接入”演示和完整可复制代码。
2
8
 
3
9
  MapPageLayout 沿用参考项目 D:/Work/01-项目code/一体化平台/webv1/src/components/layout/TemplateLayout.vue 的 1/2/3/4/5/6 层级约定,并补齐底部时间轴和右侧面板。层级按区域统一管理:鼠标移入 left/top/toolbar/right/legend/timeline 时提升整个区域到 hover 层,优先于 focus-within;子展开面板随所属区域一起提升,移出后恢复。普通 content 限定在底层独立堆叠上下文,透明工具间隙穿透地图。图例和时间轴外层不再 overflow:auto 裁剪浮层;长内容滚动由内部业务组件负责。Teleport 到 body 的浮层仍由组件自身管理层级。预览“模拟模块遮挡”可核对重叠交互;完全被覆盖的部分不接收鼠标,应从模块可见区域移入。
4
10
 
@@ -231,6 +237,41 @@ MapLayerControl 参考平台 LayerControl/LayerTreeNode,提供底图选择、
231
237
 
232
238
  flat 模式按钮此前错误使用 child 类而内部图标、文字使用 parent 类,导致 active 样式不匹配。统一按钮及内容层级类,保留现有单选、多选及事件逻辑。
233
239
 
240
+ ## 2026-11-03:可配置 VFit 尺寸(源码待发布)
241
+
242
+ 数字尺寸代表设计单位,由组件转换为 `calc(var(--cp-font-1, 1px) * n)`;CSS 字符串原样使用,不额外注册 VFit 或 transform。DesignSpacing 支持单值及2/3/4项数组,遵循CSS间距顺序。0是有效值。调用方传裸字符串 `"12"` 不是合法CSS长度,应使用 `:gap="12"`;`"12px"` 是固定CSS像素。
243
+
244
+ 所有新增参数有默认值;下表空字符串表示使用组件现有布局/样式默认值,不是0。根style可控制组件根尺寸,内部内边距通过对应props调整,无需deep覆盖。
245
+
246
+ | 组件 | 参数与默认值 |
247
+ | --- | --- |
248
+ | MapPageLayout | 新增gap=12;已有rightPanelWidth=328、leftPanelWidth=320、edge=12等参数兼容字符串并支持数字;top/bottom/toolbar/timeline偏移默认空字符串,沿用自动避让 |
249
+ | DefenseMapLayout | gap=4、padding=4、toolbarGap=12、toolbarPadding=12;topOffset默认64设计单位,兼容数字/字符串 |
250
+ | MapWorkspacePanel | headerPadding=16、bodyPadding=16、footerPadding=[12,16]、gap=16 |
251
+ | ModelWorkspacePanel | headerPadding=[12,16]、bodyPadding=16、footerPadding=[12,16]、gap=12 |
252
+ | WorkbenchPanel | width='auto'、height='auto'、padding=0、gap=0;gap只在调用方使用flex/grid时产生间距,不强改display |
253
+ | ManagementResourceLayout | gap=20、padding=[0,24,20](内容区域)、introPadding=24、filterGap=20、filterPadding=[20,24]、inputWidth=260、selectWidth=160、cascaderWidth=280、responsive=false |
254
+ | AppSelect | width='100%'、controlHeight=''(按size取主题小/中/大高度)、controlPadding=[0,10];多选内容可增高;浮层不再设100%最小宽度,使用底层fit-input-width等配置 |
255
+ | ProjectMenu | width=''、itemHeight=''、itemPadding=''、padding=''(分别保留横/纵菜单已有默认值)、gap=2 |
256
+ | MapTimeline | padding=[10,12]、gap=9、trackHeight=88、controlHeight=30;不改变播放/时次数据API |
257
+ | MapBottomProcessPanel | height=320、maxHeight='42dvh'、headerPadding=[10,16]、metaPadding=[8,16,0]、gap=12 |
258
+ | ProcessDataTable | cellPadding=[6,10]、paginationGap=12、paginationPadding=5 |
259
+
260
+ ManagementResourceLayout默认按VFit保持结构,不在700px阈值自动切换;旧调用方如需原断点布局显式传responsive=true。这是需要在升级说明中说明的行为变化。其内容区域padding与介绍区padding分开,避免改变原默认留白。
261
+
262
+ 地图布局时间轴测量改为offsetHeight,使用布局坐标而非transform后的视口像素,防止再次乘入缩放系数。UiButton/UiSelect/UiTable等基础组件继续使用底层size、width、height及主题token,无重复同义接口。旧TemplateLayout保留兼容接口,不冒充MapPageLayout别名。
263
+
264
+ 示例:
265
+ ```vue
266
+ <MapWorkspacePanel title="降水统计" :header-padding="[12, 16]" :body-padding="[8, 12]" :gap="8">
267
+ 业务内容
268
+ </MapWorkspacePanel>
269
+ <MapPageLayout :right-panel-width="320" :edge="12" :gap="8" />
270
+ ```
271
+ 预览入口:MapPageLayout布局演示,点击“查看紧凑尺寸”比较右栏宽度、边距与面板内边距。其他组件参数与默认值可在生成API查询。当前未构建、打包、发布或浏览器验证,用户预览确认后自行发版。
272
+
273
+ HTML 表单逐项示例见 [验收目录](HTML-FORM-CATALOG.md),网站独立导航按编号核对;原生与 Vue 的边界见各项说明。
274
+
234
275
  <!-- GENERATED EXAMPLES -->
235
276
 
236
277
  ### 快速开始:安装最新正式版本
@@ -974,26 +1015,29 @@ const items = [{ key: 'overview', label: '运行概览' }, { key: 'data', label:
974
1015
  ```vue
975
1016
  <script setup lang="ts">
976
1017
  import { ref } from 'vue'
977
- import { MapPageLayout, DefenseMapLayout, UiButton, MapTools, WorkbenchPanel } from 'sky-ui-kit'
1018
+ import { MapPageLayout, DefenseMapLayout, UiButton, MapTools, WorkbenchPanel, MapWorkspacePanel } from 'sky-ui-kit'
978
1019
  const rightOpen = ref(true)
979
1020
  const showTimeline = ref(true)
980
1021
  const overlap = ref(false)
1022
+ const compactDimensions = ref(false)
981
1023
  </script>
982
1024
  <template>
983
1025
  <div class="layout-demo-controls">
1026
+ <UiButton @click="compactDimensions = !compactDimensions">{{ compactDimensions ? '切回默认尺寸' : '查看紧凑尺寸' }}</UiButton>
984
1027
  <UiButton @click="rightOpen = !rightOpen">{{ rightOpen ? '收起右栏' : '展开右栏' }}</UiButton>
985
1028
  <UiButton @click="showTimeline = !showTimeline">{{ showTimeline ? '隐藏时间轴' : '显示时间轴' }}</UiButton>
986
1029
  <UiButton @click="overlap = !overlap">{{ overlap ? '恢复正常避让' : '模拟模块遮挡' }}</UiButton>
987
1030
  </div>
988
1031
  <div class="layout-demo-map" >
989
- <MapPageLayout v-model:right-open="rightOpen" :timeline-right="overlap ? 'var(--map-layout-edge)' : ''">
1032
+ <MapPageLayout v-model:right-open="rightOpen" :gap="compactDimensions ? 6 : 12" :edge="compactDimensions ? 6 : 12" :right-panel-width="compactDimensions ? 280 : 328" :timeline-right="overlap ? 'var(--map-layout-edge)' : ''">
990
1033
  <template #top><span>地图标题 / 查询区域</span></template>
991
1034
  <template #toolbar><MapTools :items="[{ key: 'layers', label: '图层' }]" /><WorkbenchPanel v-if="overlap" class="layout-demo-expanded">右上展开面板<br>鼠标移入时整个工具区域置顶</WorkbenchPanel></template>
992
- <template #right><WorkbenchPanel style="height: 100%">右栏 · 放参数表单或业务列表<br>鼠标移入当前区域时置顶</WorkbenchPanel></template>
1035
+ <template #right><MapWorkspacePanel title="可配置面板" :header-padding="compactDimensions ? [8, 12] : 16" :body-padding="compactDimensions ? [8, 12] : 16" :gap="compactDimensions ? 8 : 16">数字为 VFit 设计尺寸;默认值无需重复传入。<template #footer>鼠标移入当前区域时置顶</template></MapWorkspacePanel></template>
993
1036
  <template #legend><WorkbenchPanel :class="{ 'layout-demo-overlap-legend': overlap }">图例 · 鼠标移入置顶</WorkbenchPanel></template>
994
1037
  <template v-if="showTimeline" #timeline><WorkbenchPanel class="layout-demo-timeline">时间轴 / 过程图区域 · 鼠标移入置顶</WorkbenchPanel></template>
995
1038
  </MapPageLayout>
996
1039
  </div>
1040
+ <p>尺寸参数:数字自动跟随 VFit,数组为上/右/下/左间距,CSS 字符串原样使用。例如 :body-padding="[8, 12]"、:gap="8"。</p>
997
1041
  <h3>会商布局 · 顶部操作区 + 四个地图位置</h3>
998
1042
  <p>以下仅展示区域,不创建地图。保持两列布局,尺寸沿用 VFit 缩放变量;四个地图位置均分剩余高度,不产生内部滚动条。</p>
999
1043
  <div class="layout-demo-map" >
@@ -27,6 +27,9 @@ Slots: No declared content slots.
27
27
 
28
28
  | Name | Type | Required | Default expression |
29
29
  |---|---|---|---|
30
+ | width | DesignLength | false | '100%' |
31
+ | controlHeight | DesignLength | false | '' |
32
+ | controlPadding | DesignSpacing | false | () => [0, 10] |
30
33
  | modelValue | AppSelectValue | false | undefined |
31
34
  | options | AppSelectOption[] | false | () => [] |
32
35
  | emptyLabel | string | false | '暂无可选项' |
@@ -41,6 +44,10 @@ Slots: No declared content slots.
41
44
  Slots: No declared content slots.
42
45
 
43
46
  ```ts
47
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
48
+ export type DesignLength = number | string
49
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
50
+
44
51
  export type AppSelectValue = string | number | boolean | Record<string, unknown> | AppSelectValue[] | null | undefined
45
52
  export type AppSelectOption = {
46
53
  label: string
@@ -55,6 +62,10 @@ export type AppSelectOption = {
55
62
 
56
63
  | Name | Type | Required | Default expression |
57
64
  |---|---|---|---|
65
+ | padding | DesignSpacing | false | () => [10, 12] |
66
+ | gap | DesignLength | false | 9 |
67
+ | trackHeight | DesignLength | false | 88 |
68
+ | controlHeight | DesignLength | false | 30 |
58
69
  | modelValue | number | false | 0 |
59
70
  | startTime | TimelineTimeInput | false | () => new Date() |
60
71
  | points | TimelinePoint[] | false | () => [] |
@@ -89,6 +100,10 @@ export type AppSelectOption = {
89
100
  Slots: date-select
90
101
 
91
102
  ```ts
103
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
104
+ export type DesignLength = number | string
105
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
106
+
92
107
  type IntervalUnit = 'minute' | 'hour' | 'day' | 'month' | 'year'
93
108
  type TimelineKind = 'observed' | 'forecast'
94
109
  type TimelineTimeInput = string | number | Date
@@ -178,6 +193,11 @@ export type TimeRangeQuickOption = {
178
193
 
179
194
  | Name | Type | Required | Default expression |
180
195
  |---|---|---|---|
196
+ | width | DesignLength | false | '' |
197
+ | itemHeight | DesignLength | false | '' |
198
+ | itemPadding | DesignSpacing | false | '' |
199
+ | padding | DesignSpacing | false | '' |
200
+ | gap | DesignLength | false | 2 |
181
201
  | direction | 'horizontal' &#124; 'vertical' | false | 'horizontal' |
182
202
  | active | string | false | '' |
183
203
  | items | ProjectMenuItem[] | false | () => [] |
@@ -191,6 +211,10 @@ export type TimeRangeQuickOption = {
191
211
  Slots: No declared content slots.
192
212
 
193
213
  ```ts
214
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
215
+ export type DesignLength = number | string
216
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
217
+
194
218
  export interface ProjectMenuItem { key: string; label: string; disabled?: boolean; icon?: Component; children?: ProjectMenuItem[] }
195
219
  export interface ProjectMenuGroup { label: string; items: ProjectMenuItem[] }
196
220
  ```
@@ -298,6 +322,9 @@ Slots: No declared content slots.
298
322
  | times | string[] | true | undefined / no declared default |
299
323
  | series | { name: string; data: (number &#124; null)[] }[] | true | undefined / no declared default |
300
324
  | loading | boolean | false | undefined / no declared default |
325
+ | cellPadding | DesignSpacing | false | () => [6, 10] |
326
+ | paginationGap | DesignLength | false | 12 |
327
+ | paginationPadding | DesignSpacing | false | 5 |
301
328
 
302
329
  ### Events
303
330
 
@@ -305,6 +332,13 @@ No declared events.
305
332
 
306
333
  Slots: No declared content slots.
307
334
 
335
+ ```ts
336
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
337
+ export type DesignLength = number | string
338
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
339
+
340
+ ```
341
+
308
342
  ## WorkbenchShell
309
343
 
310
344
  ### Props
@@ -332,6 +366,10 @@ Slots: header, sidebar-footer, workspace, default
332
366
  |---|---|---|---|
333
367
  | as | 'section' &#124; 'aside' &#124; 'div' | false | 'section' |
334
368
  | floating | boolean | false | true |
369
+ | width | DesignLength | false | 'auto' |
370
+ | height | DesignLength | false | 'auto' |
371
+ | padding | DesignSpacing | false | 0 |
372
+ | gap | DesignLength | false | 0 |
335
373
 
336
374
  ### Events
337
375
 
@@ -339,6 +377,13 @@ No declared events.
339
377
 
340
378
  Slots: default
341
379
 
380
+ ```ts
381
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
382
+ export type DesignLength = number | string
383
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
384
+
385
+ ```
386
+
342
387
  ## MetricCard
343
388
 
344
389
  ### Props
@@ -443,17 +488,18 @@ Slots: left, top, toolbar, right, legend, timeline, content, default
443
488
 
444
489
  | Name | Type | Required | Default expression |
445
490
  |---|---|---|---|
491
+ | gap | DesignLength | false | 12 |
446
492
  | rightOpen | boolean | false | false |
447
493
  | rightPanelEnabled | boolean | false | true |
448
- | rightPanelWidth | string | false | 'calc(var(--cp-font-1, 1px) * 328)' |
449
- | leftPanelWidth | string | false | 'calc(var(--cp-font-1, 1px) * 320)' |
450
- | edge | string | false | 'calc(var(--cp-font-1, 1px) * 12)' |
451
- | topOffset | string | false | '' |
452
- | bottomOffset | string | false | '' |
453
- | toolbarTop | string | false | '' |
454
- | timelineLeft | string | false | '' |
455
- | timelineRight | string | false | '' |
456
- | timelineBottom | string | false | '' |
494
+ | rightPanelWidth | DesignLength | false | 'calc(var(--cp-font-1, 1px) * 328)' |
495
+ | leftPanelWidth | DesignLength | false | 'calc(var(--cp-font-1, 1px) * 320)' |
496
+ | edge | DesignLength | false | 'calc(var(--cp-font-1, 1px) * 12)' |
497
+ | topOffset | DesignLength | false | '' |
498
+ | bottomOffset | DesignLength | false | '' |
499
+ | toolbarTop | DesignLength | false | '' |
500
+ | timelineLeft | DesignLength | false | '' |
501
+ | timelineRight | DesignLength | false | '' |
502
+ | timelineBottom | DesignLength | false | '' |
457
503
 
458
504
  ### Events
459
505
 
@@ -462,6 +508,13 @@ Slots: left, top, toolbar, right, legend, timeline, content, default
462
508
 
463
509
  Slots: left, top, toolbar, right, legend, timeline, content, default
464
510
 
511
+ ```ts
512
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
513
+ export type DesignLength = number | string
514
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
515
+
516
+ ```
517
+
465
518
  ## RainfallRankingTable
466
519
 
467
520
  ### Props
@@ -800,6 +853,15 @@ Slots: message, primary, default, footer
800
853
  | title | string | false | undefined / no declared default |
801
854
  | description | string | false | undefined / no declared default |
802
855
  | showIntro | boolean | false | true |
856
+ | gap | DesignLength | false | 20 |
857
+ | padding | DesignSpacing | false | () => [0, 24, 20] |
858
+ | introPadding | DesignSpacing | false | 24 |
859
+ | filterGap | DesignLength | false | 20 |
860
+ | filterPadding | DesignSpacing | false | () => [20, 24] |
861
+ | inputWidth | DesignLength | false | 260 |
862
+ | selectWidth | DesignLength | false | 160 |
863
+ | cascaderWidth | DesignLength | false | 280 |
864
+ | responsive | boolean | false | false |
803
865
 
804
866
  ### Events
805
867
 
@@ -807,6 +869,13 @@ No declared events.
807
869
 
808
870
  Slots: summary, filters, heading, actions, default
809
871
 
872
+ ```ts
873
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
874
+ export type DesignLength = number | string
875
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
876
+
877
+ ```
878
+
810
879
  ## GlobalMapLayerDock
811
880
 
812
881
  ### Props
@@ -872,6 +941,11 @@ Slots: footer
872
941
 
873
942
  | Name | Type | Required | Default expression |
874
943
  |---|---|---|---|
944
+ | height | DesignLength | false | 320 |
945
+ | maxHeight | DesignLength | false | '42dvh' |
946
+ | headerPadding | DesignSpacing | false | ()=>[10,16] |
947
+ | metaPadding | DesignSpacing | false | ()=>[8,16,0] |
948
+ | gap | DesignLength | false | 12 |
875
949
  | title | string | true | undefined / no declared default |
876
950
  | subtitle | string | false | '' |
877
951
  | demo | boolean | false | false |
@@ -887,6 +961,13 @@ Slots: footer
887
961
 
888
962
  Slots: No declared content slots.
889
963
 
964
+ ```ts
965
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
966
+ export type DesignLength = number | string
967
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
968
+
969
+ ```
970
+
890
971
  ## MapWorkspacePanel
891
972
 
892
973
  ### Props
@@ -895,6 +976,10 @@ Slots: No declared content slots.
895
976
  |---|---|---|---|
896
977
  | title | string | true | undefined / no declared default |
897
978
  | subtitle | string | false | undefined / no declared default |
979
+ | headerPadding | DesignSpacing | false | 16 |
980
+ | bodyPadding | DesignSpacing | false | 16 |
981
+ | footerPadding | DesignSpacing | false | () => [12, 16] |
982
+ | gap | DesignLength | false | 16 |
898
983
 
899
984
  ### Events
900
985
 
@@ -902,6 +987,13 @@ No declared events.
902
987
 
903
988
  Slots: actions, default, footer
904
989
 
990
+ ```ts
991
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
992
+ export type DesignLength = number | string
993
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
994
+
995
+ ```
996
+
905
997
  ## NationalHydroSidebar
906
998
 
907
999
  ### Props
@@ -971,7 +1063,11 @@ Slots: No declared content slots.
971
1063
  |---|---|---|---|
972
1064
  | structured | boolean | false | false |
973
1065
  | columns | 1 &#124; 2 | false | 2 |
974
- | topOffset | string | false | 'calc(var(--cp-font-1, 1px) * 64)' |
1066
+ | gap | DesignLength | false | 4 |
1067
+ | padding | DesignSpacing | false | 4 |
1068
+ | toolbarGap | DesignLength | false | 12 |
1069
+ | toolbarPadding | DesignSpacing | false | 12 |
1070
+ | topOffset | DesignLength | false | 'calc(var(--cp-font-1, 1px) * 64)' |
975
1071
 
976
1072
  ### Events
977
1073
 
@@ -979,6 +1075,13 @@ No declared events.
979
1075
 
980
1076
  Slots: toolbar, default
981
1077
 
1078
+ ```ts
1079
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
1080
+ export type DesignLength = number | string
1081
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
1082
+
1083
+ ```
1084
+
982
1085
  ## ModelWorkspace
983
1086
 
984
1087
  ### Props
@@ -1016,6 +1119,10 @@ Slots: title, actions
1016
1119
  | Name | Type | Required | Default expression |
1017
1120
  |---|---|---|---|
1018
1121
  | title | string | false | undefined / no declared default |
1122
+ | headerPadding | DesignSpacing | false | () => [12, 16] |
1123
+ | bodyPadding | DesignSpacing | false | 16 |
1124
+ | footerPadding | DesignSpacing | false | () => [12, 16] |
1125
+ | gap | DesignLength | false | 12 |
1019
1126
 
1020
1127
  ### Events
1021
1128
 
@@ -1023,6 +1130,13 @@ No declared events.
1023
1130
 
1024
1131
  Slots: header, actions, default, footer
1025
1132
 
1133
+ ```ts
1134
+ /** Numeric dimensions are VFit design units; CSS strings pass through unchanged. */
1135
+ export type DesignLength = number | string
1136
+ export type DesignSpacing = DesignLength | readonly [DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength] | readonly [DesignLength, DesignLength, DesignLength, DesignLength]
1137
+
1138
+ ```
1139
+
1026
1140
  ## UiAffix
1027
1141
 
1028
1142
  固钉 · 导航组件. Original: ElAffix. Import from: sky-ui-kit. [API](https://element-plus.org/zh-CN/component/affix.html). See dist/components/element-plus.d.ts.
package/docs/CSS-THEME.md CHANGED
@@ -248,3 +248,65 @@ import { DefenseMapLayout, UiButton } from 'sky-ui-kit'
248
248
 
249
249
 
250
250
  独立 model-workspace.css 面向原生 HTML,无 Vue/Element Plus 样式依赖;与 style.css 的模型主题来自同一源文件,Vue 无需重复导入。
251
+
252
+
253
+ ## 2026-11-03:可配置 VFit 尺寸(源码待发布)
254
+
255
+ 数字尺寸代表设计单位,由组件转换为 `calc(var(--cp-font-1, 1px) * n)`;CSS 字符串原样使用,不额外注册 VFit 或 transform。DesignSpacing 支持单值及2/3/4项数组,遵循CSS间距顺序。0是有效值。调用方传裸字符串 `"12"` 不是合法CSS长度,应使用 `:gap="12"`;`"12px"` 是固定CSS像素。
256
+
257
+ 所有新增参数有默认值;下表空字符串表示使用组件现有布局/样式默认值,不是0。根style可控制组件根尺寸,内部内边距通过对应props调整,无需deep覆盖。
258
+
259
+ | 组件 | 参数与默认值 |
260
+ | --- | --- |
261
+ | MapPageLayout | 新增gap=12;已有rightPanelWidth=328、leftPanelWidth=320、edge=12等参数兼容字符串并支持数字;top/bottom/toolbar/timeline偏移默认空字符串,沿用自动避让 |
262
+ | DefenseMapLayout | gap=4、padding=4、toolbarGap=12、toolbarPadding=12;topOffset默认64设计单位,兼容数字/字符串 |
263
+ | MapWorkspacePanel | headerPadding=16、bodyPadding=16、footerPadding=[12,16]、gap=16 |
264
+ | ModelWorkspacePanel | headerPadding=[12,16]、bodyPadding=16、footerPadding=[12,16]、gap=12 |
265
+ | WorkbenchPanel | width='auto'、height='auto'、padding=0、gap=0;gap只在调用方使用flex/grid时产生间距,不强改display |
266
+ | ManagementResourceLayout | gap=20、padding=[0,24,20](内容区域)、introPadding=24、filterGap=20、filterPadding=[20,24]、inputWidth=260、selectWidth=160、cascaderWidth=280、responsive=false |
267
+ | AppSelect | width='100%'、controlHeight=''(按size取主题小/中/大高度)、controlPadding=[0,10];多选内容可增高;浮层不再设100%最小宽度,使用底层fit-input-width等配置 |
268
+ | ProjectMenu | width=''、itemHeight=''、itemPadding=''、padding=''(分别保留横/纵菜单已有默认值)、gap=2 |
269
+ | MapTimeline | padding=[10,12]、gap=9、trackHeight=88、controlHeight=30;不改变播放/时次数据API |
270
+ | MapBottomProcessPanel | height=320、maxHeight='42dvh'、headerPadding=[10,16]、metaPadding=[8,16,0]、gap=12 |
271
+ | ProcessDataTable | cellPadding=[6,10]、paginationGap=12、paginationPadding=5 |
272
+
273
+ ManagementResourceLayout默认按VFit保持结构,不在700px阈值自动切换;旧调用方如需原断点布局显式传responsive=true。这是需要在升级说明中说明的行为变化。其内容区域padding与介绍区padding分开,避免改变原默认留白。
274
+
275
+ 地图布局时间轴测量改为offsetHeight,使用布局坐标而非transform后的视口像素,防止再次乘入缩放系数。UiButton/UiSelect/UiTable等基础组件继续使用底层size、width、height及主题token,无重复同义接口。旧TemplateLayout保留兼容接口,不冒充MapPageLayout别名。
276
+
277
+ 示例:
278
+ ```vue
279
+ <MapWorkspacePanel title="降水统计" :header-padding="[12, 16]" :body-padding="[8, 12]" :gap="8">
280
+ 业务内容
281
+ </MapWorkspacePanel>
282
+ <MapPageLayout :right-panel-width="320" :edge="12" :gap="8" />
283
+ ```
284
+ 预览入口:MapPageLayout布局演示,点击“查看紧凑尺寸”比较右栏宽度、边距与面板内边距。其他组件参数与默认值可在生成API查询。当前未构建、打包、发布或浏览器验证,用户预览确认后自行发版。
285
+
286
+ ## 2026-11-04:HTML 按需样式接入(未发布)
287
+
288
+ 新增 theme/panel/button/input 四个 CSS 出口,完整 model-workspace.css 与拆分入口共享源码;网站新增隔离 HTML 示例。外观模式保留原 DOM/事件,不能当作 Vue 组件接入。结构、安装、状态、主题、浮层及 AGENTS.md 规则见 [HTML 接入](HTML-INTEGRATION.md)。仅生成文档和静态检查,未构建、发布或浏览器验证;历史“CSS 未拆分”对 Vue style.css 仍成立。
289
+
290
+ ### 原生控件自动换肤调整(未发布)
291
+
292
+ 新增 sky-html 容器入口,按需样式直接匹配原生 button/input/select/textarea;支持 data-sky-native="off" 本身及后代退出、Element Plus/地图内部控件排除,保留旧工作区 opt-in。主题默认低优先级,特殊按钮使用 data-variant,支持只读、禁用、错误及焦点状态;面板继续使用明确结构类,不覆盖所有 div。示例网站展示完整原生 HTML 状态及退出区域,详见 HTML-INTEGRATION.md。
293
+
294
+ ### HTML 控件未换肤修复
295
+
296
+ 此前 Element Plus 排除规则使用 class 包含 el-,误命中 sky-model-panel,导致整块面板内原生控件不应用样式。改为类名开头或空格后的 el- 前缀匹配,保留显式局部退出和第三方控件隔离。补充 DOM 选择器回归检查;未进行浏览器视觉验证。
297
+
298
+ ### HTML / Vue 控件视觉统一(未发布)
299
+
300
+ HTML 控件直接复用 scoped-theme.css 的 userssite 主题变量,与 Vue 共用字体、默认 32px 高度、4px 圆角、主色/危险色及派生状态色;危险按钮为实底,禁用状态不再整体透明。补充复选框、单选框及 data-sky-error 错误文案。HTML 示例同步网站根主题变量。只验证源码和 DOM 选择器,未进行浏览器像素对比;原生 select 弹出菜单、日期选择器仍由浏览器提供。
301
+
302
+ ### HTML 输入聚焦双框修复
303
+
304
+ 文本输入、select、textarea 聚焦时取消外扩 outline 和额外阴影,仅将已有边框改为主题主色;错误状态聚焦/悬停继续保持危险色。复选框、单选框的键盘焦点提示不变。未进行浏览器验证。
305
+
306
+ ### 原生数字、选择和上传控件完善(未发布)
307
+
308
+ 多选 select 恢复列表高度,保留系统弹出菜单;file-selector-button 使用共享主题及禁用/聚焦状态。新增可选 html/number.js 与 number.css,enhanceNumbers 保留原 input、min/max/step 与事件,返回清理函数;step=any 禁用增减,动态新增节点需再次初始化。验收第 8/10/20 项同步更新。未构建或浏览器验证。
309
+
310
+ ### HTML 原生多选列表外观调整
311
+
312
+ 多选/size 列表设置可覆盖的 220px 宽度、选项留白和主题选中背景,补充悬停、选项禁用、整组禁用和高对比度规则;保留 size 与原生多选语义,不修改单选系统弹出菜单。第 10 项示例增加滚动及多选操作说明。未进行浏览器视觉验证。