x-next 1.13.0 → 1.14.0

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 (138) hide show
  1. package/AI_CODING.md +6 -5
  2. package/AI_USAGE/catalog.md +106 -105
  3. package/AI_USAGE/components/alert-api.md +48 -0
  4. package/AI_USAGE/components/alert.md +222 -3
  5. package/AI_USAGE/components/bar-chart-api.md +177 -0
  6. package/AI_USAGE/components/bar-chart.md +297 -3
  7. package/AI_USAGE/components/boxicons.md +147 -0
  8. package/AI_USAGE/components/button-api.md +144 -0
  9. package/AI_USAGE/components/button.md +447 -3
  10. package/AI_USAGE/components/charts.md +81 -0
  11. package/AI_USAGE/components/checkbox-api.md +145 -0
  12. package/AI_USAGE/components/checkbox.md +365 -3
  13. package/AI_USAGE/components/color-picker-api.md +52 -0
  14. package/AI_USAGE/components/color-picker.md +211 -3
  15. package/AI_USAGE/components/config-provider-api.md +38 -0
  16. package/AI_USAGE/components/config-provider.md +250 -3
  17. package/AI_USAGE/components/date-picker-api.md +1114 -0
  18. package/AI_USAGE/components/date-picker.md +378 -3
  19. package/AI_USAGE/components/dialog-api.md +142 -0
  20. package/AI_USAGE/components/dialog.md +284 -3
  21. package/AI_USAGE/components/draggable-api.md +146 -0
  22. package/AI_USAGE/components/draggable.md +259 -0
  23. package/AI_USAGE/components/drawer-api.md +78 -0
  24. package/AI_USAGE/components/drawer.md +227 -0
  25. package/AI_USAGE/components/dropdown-api.md +529 -0
  26. package/AI_USAGE/components/dropdown.md +392 -3
  27. package/AI_USAGE/components/empty-api.md +36 -0
  28. package/AI_USAGE/components/empty.md +227 -3
  29. package/AI_USAGE/components/finicon.md +88 -0
  30. package/AI_USAGE/components/form-api.md +524 -0
  31. package/AI_USAGE/components/form.md +454 -0
  32. package/AI_USAGE/components/grid-api.md +527 -0
  33. package/AI_USAGE/components/grid.md +224 -0
  34. package/AI_USAGE/components/heatmap-api.md +122 -0
  35. package/AI_USAGE/components/heatmap.md +220 -0
  36. package/AI_USAGE/components/icon-api.md +4707 -0
  37. package/AI_USAGE/components/icon.md +257 -0
  38. package/AI_USAGE/components/image-api.md +440 -0
  39. package/AI_USAGE/components/image.md +465 -0
  40. package/AI_USAGE/components/input-api.md +184 -0
  41. package/AI_USAGE/components/input-number-api.md +66 -0
  42. package/AI_USAGE/components/input-number.md +294 -0
  43. package/AI_USAGE/components/input-tag-api.md +114 -0
  44. package/AI_USAGE/components/input-tag.md +482 -0
  45. package/AI_USAGE/components/input.md +293 -3
  46. package/AI_USAGE/components/layout-api.md +147 -0
  47. package/AI_USAGE/components/layout.md +230 -0
  48. package/AI_USAGE/components/line-chart-api.md +197 -0
  49. package/AI_USAGE/components/line-chart.md +279 -3
  50. package/AI_USAGE/components/link-api.md +42 -0
  51. package/AI_USAGE/components/link.md +197 -0
  52. package/AI_USAGE/components/menu-api.md +516 -0
  53. package/AI_USAGE/components/menu.md +268 -0
  54. package/AI_USAGE/components/message-api.md +215 -0
  55. package/AI_USAGE/components/message-box-api.md +108 -0
  56. package/AI_USAGE/components/message-box.md +268 -3
  57. package/AI_USAGE/components/message.md +231 -3
  58. package/AI_USAGE/components/network-api.md +91 -0
  59. package/AI_USAGE/components/network.md +378 -0
  60. package/AI_USAGE/components/notification-api.md +236 -0
  61. package/AI_USAGE/components/notification.md +275 -3
  62. package/AI_USAGE/components/pagination-api.md +62 -0
  63. package/AI_USAGE/components/pagination.md +380 -3
  64. package/AI_USAGE/components/pie-chart-api.md +109 -0
  65. package/AI_USAGE/components/pie-chart.md +245 -3
  66. package/AI_USAGE/components/popconfirm-api.md +75 -0
  67. package/AI_USAGE/components/popconfirm.md +231 -3
  68. package/AI_USAGE/components/popover-api.md +75 -0
  69. package/AI_USAGE/components/popover.md +208 -3
  70. package/AI_USAGE/components/popup-api.md +75 -0
  71. package/AI_USAGE/components/popup.md +52 -0
  72. package/AI_USAGE/components/progress-api.md +44 -0
  73. package/AI_USAGE/components/progress.md +248 -3
  74. package/AI_USAGE/components/radio-api.md +165 -0
  75. package/AI_USAGE/components/radio.md +259 -3
  76. package/AI_USAGE/components/rate-api.md +54 -0
  77. package/AI_USAGE/components/rate.md +233 -3
  78. package/AI_USAGE/components/resize-box-api.md +56 -0
  79. package/AI_USAGE/components/resize-box.md +231 -0
  80. package/AI_USAGE/components/scrollbar-api.md +77 -0
  81. package/AI_USAGE/components/scrollbar.md +218 -0
  82. package/AI_USAGE/components/select-api.md +758 -0
  83. package/AI_USAGE/components/select.md +640 -3
  84. package/AI_USAGE/components/skeleton-api.md +85 -0
  85. package/AI_USAGE/components/skeleton.md +150 -0
  86. package/AI_USAGE/components/slider-api.md +51 -0
  87. package/AI_USAGE/components/slider.md +233 -3
  88. package/AI_USAGE/components/space-api.md +38 -0
  89. package/AI_USAGE/components/space.md +145 -0
  90. package/AI_USAGE/components/spin-api.md +43 -0
  91. package/AI_USAGE/components/spin.md +205 -0
  92. package/AI_USAGE/components/steps-api.md +111 -0
  93. package/AI_USAGE/components/steps.md +201 -3
  94. package/AI_USAGE/components/switch-api.md +58 -0
  95. package/AI_USAGE/components/switch.md +290 -3
  96. package/AI_USAGE/components/table-api.md +2919 -0
  97. package/AI_USAGE/components/table.md +1414 -0
  98. package/AI_USAGE/components/tabs-api.md +135 -0
  99. package/AI_USAGE/components/tabs.md +308 -3
  100. package/AI_USAGE/components/tag-api.md +124 -0
  101. package/AI_USAGE/components/tag.md +292 -0
  102. package/AI_USAGE/components/textarea-api.md +55 -0
  103. package/AI_USAGE/components/textarea.md +326 -3
  104. package/AI_USAGE/components/time-picker-api.md +137 -0
  105. package/AI_USAGE/components/time-picker.md +271 -3
  106. package/AI_USAGE/components/time-range-selector-api.md +44 -0
  107. package/AI_USAGE/components/time-range-selector.md +355 -0
  108. package/AI_USAGE/components/timeline-api.md +93 -0
  109. package/AI_USAGE/components/timeline.md +312 -0
  110. package/AI_USAGE/components/tooltip-api.md +77 -0
  111. package/AI_USAGE/components/tooltip.md +182 -0
  112. package/AI_USAGE/components/trend-chart-api.md +119 -0
  113. package/AI_USAGE/components/trend-chart.md +335 -0
  114. package/AI_USAGE/components/trigger-api.md +124 -0
  115. package/AI_USAGE/components/trigger.md +185 -0
  116. package/AI_USAGE/components/upload-api.md +200 -0
  117. package/AI_USAGE/components/upload.md +711 -3
  118. package/AI_USAGE/components/watermark-api.md +87 -0
  119. package/AI_USAGE/components/watermark.md +200 -0
  120. package/AI_USAGE/core.md +1 -1
  121. package/AI_USAGE/index.md +35 -7
  122. package/AI_USAGE/recipes/form-on-demand.md +1 -1
  123. package/AI_USAGE.md +33651 -5
  124. package/CHANGELOG.md +18 -0
  125. package/dist/_utils/inherit-component-type.d.ts +11 -0
  126. package/dist/components/date-picker/index.d.ts +420 -5
  127. package/dist/components/form-input/index.d.ts +617 -2
  128. package/dist/components/layout/index.d.ts +689 -1
  129. package/dist/components/menu/index.d.ts +786 -1
  130. package/dist/es/_utils/inherit-component-type.js +6 -0
  131. package/dist/es/components/date-picker/index.js +18 -17
  132. package/dist/es/components/form-input/index.js +12 -11
  133. package/dist/es/components/layout/index.js +10 -9
  134. package/dist/es/components/menu/hooks/use-level.js +5 -5
  135. package/dist/es/components/menu/index.js +13 -10
  136. package/dist/index.cjs +3 -3
  137. package/dist/index.umd.js +3 -3
  138. package/package.json +10 -5
@@ -0,0 +1,224 @@
1
+ <!-- Generated by pnpm generate:ai-usage. Edit script/ai-usage/content.md and script/ai-usage/. -->
2
+ # Grid AI 使用
3
+
4
+ 适用版本:x-next@1.14.0;来源指纹:`014984639d816a2c7e25eb22690c586b0b2e8efba6846bec8a4e424db41a09e9`。
5
+
6
+ 先读 [通用接入](../core.md)。公开导出:`Col, Grid, GridItem, Row`;主要模型:无。完整 Props、Events、Slots、实例方法与服务签名见 [本地 API](./grid-api.md),包含本组件族全部子组件和别名。
7
+
8
+ 按需样式:`x-next/style/grid`(包含 base.css、grid.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
9
+
10
+ ## 场景用法
11
+
12
+ 以下示例从本地 `src/docs/components/grid.md` 显式导入到独立 AI 源,补齐局部注册、状态和样式后进行严格模板检查。上方已核验行为优先;原始 prop 默认值、包装透传和示例业务适配分别查 [完整 API](./grid-api.md) 与场景说明。类型通过不代表所有散文和交互已验证。
13
+
14
+ ### 用途与选型
15
+
16
+ 通过行列结构组织页面内容,适合构建响应式表单、卡片和信息区块。
17
+
18
+
19
+ ### 何时使用
20
+
21
+ - 页面需要按 24 栅格组织横向信息。
22
+ - 表单、详情、卡片列表需要响应式换行或固定列间距。
23
+ - 需要用 CSS Grid 管理折叠、后缀操作项或更灵活的列数。
24
+
25
+
26
+ ### 基础用法
27
+
28
+ ```vue
29
+ <script setup lang="ts">
30
+ import 'x-next/style.css';
31
+ import { Row, Col } from 'x-next';
32
+
33
+ </script>
34
+ <template>
35
+ <Row :gutter="[12, 12]">
36
+ <Col :span="8"><div class="grid-demo-cell">8</div></Col>
37
+ <Col :span="8"><div class="grid-demo-cell">8</div></Col>
38
+ <Col :span="8"><div class="grid-demo-cell">8</div></Col>
39
+ </Row>
40
+ </template>
41
+ ```
42
+
43
+ ### 间距
44
+
45
+ ```vue
46
+ <script setup lang="ts">
47
+ import 'x-next/style.css';
48
+ import { Row, Col } from 'x-next';
49
+
50
+ </script>
51
+ <template>
52
+ <Row :gutter="[16, 12]">
53
+ <Col :span="6"><div class="grid-demo-cell">6</div></Col>
54
+ <Col :span="6"><div class="grid-demo-cell">6</div></Col>
55
+ <Col :span="6"><div class="grid-demo-cell">6</div></Col>
56
+ <Col :span="6"><div class="grid-demo-cell">6</div></Col>
57
+ <Col :span="12"><div class="grid-demo-cell">12</div></Col>
58
+ <Col :span="12"><div class="grid-demo-cell">12</div></Col>
59
+ </Row>
60
+ </template>
61
+ ```
62
+
63
+ ### 偏移
64
+
65
+ ```vue
66
+ <script setup lang="ts">
67
+ import 'x-next/style.css';
68
+ import { Row, Col } from 'x-next';
69
+
70
+ </script>
71
+ <template>
72
+ <Row :gutter="[12, 12]">
73
+ <Col :span="8"><div class="grid-demo-cell">span 8</div></Col>
74
+ <Col :span="8" :offset="8"><div class="grid-demo-cell">offset 8</div></Col>
75
+ <Col :span="6" :offset="6"><div class="grid-demo-cell">offset 6</div></Col>
76
+ <Col :span="6" :offset="6"><div class="grid-demo-cell">offset 6</div></Col>
77
+ </Row>
78
+ </template>
79
+ ```
80
+
81
+ ### 对齐
82
+
83
+ ```vue
84
+ <script setup lang="ts">
85
+ import 'x-next/style.css';
86
+ import { Row, Col } from 'x-next';
87
+
88
+ </script>
89
+ <template>
90
+ <Row :gutter="[12, 12]" justify="space-between" align="center">
91
+ <Col :span="5"><div class="grid-demo-cell">start</div></Col>
92
+ <Col :span="5"><div class="grid-demo-cell">center</div></Col>
93
+ <Col :span="5"><div class="grid-demo-cell">end</div></Col>
94
+ </Row>
95
+
96
+ <Row :gutter="[12, 12]" justify="center">
97
+ <Col :span="5"><div class="grid-demo-cell">center</div></Col>
98
+ <Col :span="5"><div class="grid-demo-cell">center</div></Col>
99
+ </Row>
100
+ </template>
101
+ ```
102
+
103
+ ### 排序
104
+
105
+ ```vue
106
+ <script setup lang="ts">
107
+ import 'x-next/style.css';
108
+ import { Row, Col } from 'x-next';
109
+
110
+ </script>
111
+ <template>
112
+ <Row :gutter="[12, 12]">
113
+ <Col :span="8" :order="3"><div class="grid-demo-cell">1 / order 3</div></Col>
114
+ <Col :span="8" :order="1"><div class="grid-demo-cell">2 / order 1</div></Col>
115
+ <Col :span="8" :order="2"><div class="grid-demo-cell">3 / order 2</div></Col>
116
+ </Row>
117
+ </template>
118
+ ```
119
+
120
+ ### Flex 列
121
+
122
+ ```vue
123
+ <script setup lang="ts">
124
+ import 'x-next/style.css';
125
+ import { Row, Col } from 'x-next';
126
+
127
+ </script>
128
+ <template>
129
+ <Row :gutter="[12, 12]" :wrap="false">
130
+ <Col flex="120px"><div class="grid-demo-cell">120px</div></Col>
131
+ <Col flex="auto"><div class="grid-demo-cell">auto</div></Col>
132
+ <Col flex="80px"><div class="grid-demo-cell">80px</div></Col>
133
+ </Row>
134
+ </template>
135
+ ```
136
+
137
+ ### 响应式
138
+
139
+ ```vue
140
+ <script setup lang="ts">
141
+ import 'x-next/style.css';
142
+ import { Row, Col } from 'x-next';
143
+ import { ref } from 'vue';
144
+
145
+ const denseMode = ref(false);
146
+ </script>
147
+ <template>
148
+ <Row :gutter="[{ xs: 8, md: 16 }, 12]">
149
+ <Col :xs="24" :sm="12" :md="denseMode ? 6 : 8">
150
+ <div class="grid-demo-cell">xs 24 / sm 12</div>
151
+ </Col>
152
+ <Col
153
+ :xs="{ span: 24, offset: 0 }"
154
+ :sm="{ span: 12, offset: 0 }"
155
+ :md="{ span: denseMode ? 6 : 8, offset: 0 }"
156
+ >
157
+ <div class="grid-demo-cell">对象配置</div>
158
+ </Col>
159
+ <Col :xs="0" :sm="12" :md="denseMode ? 6 : 8">
160
+ <div class="grid-demo-cell">xs 隐藏</div>
161
+ </Col>
162
+ </Row>
163
+ </template>
164
+ ```
165
+
166
+ ### Grid 布局
167
+
168
+ ```vue
169
+ <script setup lang="ts">
170
+ import 'x-next/style.css';
171
+ import { Grid, GridItem } from 'x-next';
172
+
173
+ </script>
174
+ <template>
175
+ <Grid :cols="4" :col-gap="12" :row-gap="12">
176
+ <GridItem :span="2"><div class="grid-demo-cell">跨 2 列</div></GridItem>
177
+ <GridItem><div class="grid-demo-cell">普通项</div></GridItem>
178
+ <GridItem><div class="grid-demo-cell">普通项</div></GridItem>
179
+ <GridItem :offset="1"><div class="grid-demo-cell">offset 1</div></GridItem>
180
+ <GridItem :span="3"><div class="grid-demo-cell">跨 3 列</div></GridItem>
181
+ </Grid>
182
+ </template>
183
+ ```
184
+
185
+ ### Grid 折叠
186
+
187
+ ```vue
188
+ <script setup lang="ts">
189
+ import 'x-next/style.css';
190
+ import { Button, Grid, GridItem } from 'x-next';
191
+ import { ref } from 'vue';
192
+
193
+ const gridCollapsed = ref(true);
194
+ </script>
195
+ <template>
196
+ <Button @click="gridCollapsed = !gridCollapsed">
197
+ {{ gridCollapsed ? '展开' : '收起' }}
198
+ </Button>
199
+
200
+ <Grid :cols="4" :col-gap="12" :row-gap="12" :collapsed="gridCollapsed" :collapsed-rows="1">
201
+ <GridItem v-for="index in 6" :key="index">
202
+ <div class="grid-demo-cell">item {{ index }}</div>
203
+ </GridItem>
204
+ <GridItem suffix #="{ overflow }">
205
+ <div class="grid-demo-cell">{{ overflow ? '还有更多' : '已全部显示' }}</div>
206
+ </GridItem>
207
+ </Grid>
208
+ </template>
209
+ ```
210
+
211
+ ### ResponsiveValue
212
+
213
+ | 参数 | 说明 | 类型 | 默认值 |
214
+ | --- | --- | --- | --- |
215
+ | `xxl` | `>= 1600px` 响应式配置 | `number` | `-` |
216
+ | `xl` | `>= 1200px` 响应式配置 | `number` | `-` |
217
+ | `lg` | `>= 992px` 响应式配置 | `number` | `-` |
218
+ | `md` | `>= 768px` 响应式配置 | `number` | `-` |
219
+ | `sm` | `>= 576px` 响应式配置 | `number` | `-` |
220
+ | `xs` | `< 576px` 响应式配置 | `number` | `-` |
221
+
222
+
223
+
224
+ 返回 [AI 索引](../index.md)。先查本页与 [本地 API](./grid-api.md);需要更深类型时查 [公开组件导航](../catalog.md),不默认上网查找本包用法。
@@ -0,0 +1,122 @@
1
+ <!-- Generated by pnpm generate:ai-usage. Edit script/ai-usage/content.md and script/ai-usage/. -->
2
+ # Heatmap 完整公开 API
3
+
4
+ 适用版本:x-next@1.14.0;来源指纹:`014984639d816a2c7e25eb22690c586b0b2e8efba6846bec8a4e424db41a09e9`。
5
+
6
+ 从同版本构建的公开声明、运行时 props/emits 和显式 expose 生成。运行时导入始终使用 `x-next`,声明路径仅作定位。插槽类型未细化时,具体槽名与作用域见本地用法示例。
7
+
8
+ ## Heatmap API
9
+
10
+ 公开声明:`dist/components/heatmap/index.d.ts`。 类型中的 undefined 表示可省略;原始 prop 默认值不等于继承配置或服务默认值。
11
+
12
+ ### Props
13
+
14
+ | 名称 | 用途 | 公开类型 | 必填 | 声明默认值 |
15
+ | --- | --- | --- | --- | --- |
16
+ | data | 热力图数据 | undefined &#124; HeatmapDataItem[] | 否 | [] |
17
+ | year | 要渲染的自然年;优先于 startDate / endDate | undefined &#124; number | 否 | 未声明 |
18
+ | startDate | 自定义范围起始(时间戳或日期字符串) | undefined &#124; string &#124; number | 否 | 未声明 |
19
+ | endDate | 自定义范围结束(时间戳或日期字符串) | undefined &#124; string &#124; number | 否 | 未声明 |
20
+ | activeColors | 由浅到深的色阶 | undefined &#124; string[] | 否 | 未声明 |
21
+ | minimumColor | 最小值与无数据格的颜色 | undefined &#124; string | 否 | 未声明 |
22
+ | size | 格子尺寸 | undefined &#124; "small" &#124; "medium" &#124; "large" | 否 | 未声明 |
23
+ | firstDayOfWeek | 一周的起始日,0 为周日 | undefined &#124; 0 &#124; 1 &#124; 2 &#124; 4 &#124; 3 &#124; 5 &#124; 6 | 否 | 0 |
24
+ | showWeekLabels | 是否展示星期标签 | undefined &#124; false &#124; true | 否 | true |
25
+ | showMonthLabels | 是否展示月份标签 | undefined &#124; false &#124; true | 否 | true |
26
+ | showColorIndicator | 是否展示颜色图例 | undefined &#124; false &#124; true | 否 | true |
27
+ | tooltip | 鼠标悬浮提示;传对象可配置内部浮层 | undefined &#124; false &#124; true &#124; { disabled: boolean; position: "top" &#124; "bottom" &#124; "right" &#124; "left" &#124; "tl" &#124; "tr" &#124; "bl" &#124; "br" &#124; "lt" &#124; "rt" &#124; "lb" &#124; "rb"; renderToBody: boolean; mini: boolean; defaultPopupVisible: boolean; trigger: "click" &#124; "hover" &#124; "focus" &#124; "contextMenu" &#124; ("click" &#124; "hover" &#124; "focus" &#124; "contextMenu")[]; alignPoint: boolean; unmountOnClose: boolean; popupOffset: number; showArrow: boolean; animationName: string; mouseEnterDelay: number; mouseLeaveDelay: number; focusDelay: number; popupHoverStay: boolean; blurToClose: boolean; clickToClose: boolean; clickOutsideToClose: boolean; autoFitPopupWidth: boolean; autoFitPopupMinWidth: boolean; autoFixPosition: boolean; updateAtScroll: boolean; autoFitPosition: boolean; preventFocus: boolean; scrollToClose: boolean; scrollToCloseDistance: number; } & { duration?: number &#124; { enter: number; leave: number; } &#124; undefined; popupVisible?: boolean &#124; undefined; popupContainer?: string &#124; HTMLElement &#124; undefined; contentClass?: ClassName &#124; undefined; content?: string &#124; number &#124; undefined; backgroundColor?: string &#124; undefined; contentStyle?: CSSProperties &#124; undefined; arrowClass?: ClassName &#124; undefined; arrowStyle?: CSSProperties &#124; undefined; popupTranslate?: TriggerPopupTranslate &#124; undefined; popupStyle?: CSSProperties &#124; undefined; openedClass?: ClassName &#124; undefined; } | 否 | true |
28
+ | loading | 加载中 | undefined &#124; false &#124; true &#124; { [x: string]: unknown; } | 否 | false |
29
+ | ariaLabel | 无障碍名称:交互模式下作为网格的 aria-label,纯展示模式下让容器带 role="img" | undefined &#124; string | 否 | 未声明 |
30
+
31
+ ### Events
32
+
33
+ | 事件 | 用途 | 监听器签名(即事件参数) |
34
+ | --- | --- | --- |
35
+ | cellClick | 点击某个日期格时触发 | undefined &#124; (cell: HeatmapCell, ev: MouseEvent) => any |
36
+
37
+ ### Slots
38
+
39
+ | 名称 | 用途 | 公开类型 |
40
+ | --- | --- | --- |
41
+ | tooltip | 自定义悬浮提示内容 | undefined &#124; (props: unknown) => unknown |
42
+ | cell | 自定义格子内容 | undefined &#124; (props: unknown) => unknown |
43
+ | footer | 网格下方的补充内容 | undefined &#124; () => unknown |
44
+ | indicator | 自定义颜色图例 | undefined &#124; (props: { colors: string[]; }) => unknown |
45
+ | indicator-leading-text | 图例左端文案 | undefined &#124; () => unknown |
46
+ | indicator-trailing-text | 图例右端文案 | undefined &#124; () => unknown |
47
+
48
+ ### 实例方法
49
+
50
+ 没有检索到显式 expose 或 Options API methods 的公开方法;不把 setup 内部函数当成稳定实例 API。
51
+
52
+ ### 关联类型定义
53
+
54
+ 以下摘自本组件族声明,供查阅嵌套配置;运行时和值类型均以根入口可导出项为准。
55
+
56
+ ```typescript-reference
57
+ type HeatmapSize = Extract<Size, 'small' | 'medium' | 'large'>;
58
+
59
+ type HeatmapFirstDayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;
60
+
61
+ interface HeatmapDataItem {
62
+ /** 该天的任意时间戳(内部按当天零点归并) */
63
+ timestamp: number;
64
+ /** 该天的值;`null` / `undefined` 表示无数据 */
65
+ value?: number | null;
66
+ }
67
+
68
+ type HeatmapData = HeatmapDataItem[];
69
+
70
+ interface HeatmapCell {
71
+ timestamp: number;
72
+ date: Dayjs;
73
+ value: number | null;
74
+ /** 0 表示无数据(使用 minimumColor),1..n 为色阶档位 */
75
+ level: number;
76
+ rowIndex: number;
77
+ colIndex: number;
78
+ }
79
+
80
+ interface HeatmapResolvedRange {
81
+ /** 按 firstDayOfWeek 对齐后的渲染起点 */
82
+ start: Dayjs;
83
+ /** 按 firstDayOfWeek 对齐后的渲染终点 */
84
+ end: Dayjs;
85
+ days: number;
86
+ weeks: number;
87
+ /** 用户请求的原始起点(未对齐),用于标记补齐格 */
88
+ requestedStart: Dayjs;
89
+ /** 用户请求的原始终点(未对齐),用于标记补齐格 */
90
+ requestedEnd: Dayjs;
91
+ }
92
+
93
+ type HeatmapRange = number | string;
94
+
95
+ interface HeatmapMonthLabel {
96
+ text: string;
97
+ colIndex: number;
98
+ }
99
+
100
+ interface HeatmapTooltipSlotProps extends HeatmapCell {
101
+ /** 该格的展示文本(日期 + 值),slot 可直接复用 */
102
+ label: string;
103
+ }
104
+
105
+ type HeatmapTooltipProps = boolean | TooltipProps;
106
+
107
+ type HeatmapLoadingProps = boolean | Record<string, unknown>;
108
+
109
+ interface HeatmapSlots {
110
+ tooltip?: (props: HeatmapTooltipSlotProps) => unknown;
111
+ cell?: (props: HeatmapCell) => unknown;
112
+ footer?: () => unknown;
113
+ indicator?: (props: {
114
+ colors: string[];
115
+ }) => unknown;
116
+ 'indicator-leading-text'?: () => unknown;
117
+ 'indicator-trailing-text'?: () => unknown;
118
+ }
119
+ ```
120
+
121
+
122
+ 返回 [Heatmap 用法](./heatmap.md)。
@@ -0,0 +1,220 @@
1
+ <!-- Generated by pnpm generate:ai-usage. Edit script/ai-usage/content.md and script/ai-usage/. -->
2
+ # Heatmap AI 使用
3
+
4
+ 适用版本:x-next@1.14.0;来源指纹:`014984639d816a2c7e25eb22690c586b0b2e8efba6846bec8a4e424db41a09e9`。
5
+
6
+ 先读 [通用接入](../core.md)。公开导出:`Heatmap`;主要模型:无。完整 Props、Events、Slots、实例方法与服务签名见 [本地 API](./heatmap-api.md),包含本组件族全部子组件和别名。
7
+
8
+ 按需样式:`x-next/style/heatmap`(包含 base.css、heatmap.css、spin.css)。代码块未单独引样式时在应用入口加载全量样式,或按实际所有组件加载 JS 入口;不要仅因复制一个组件页就漏掉其中的 Button 等组合依赖。
9
+
10
+ ## 场景用法
11
+
12
+ 以下示例从本地 `src/docs/components/heatmap.md` 显式导入到独立 AI 源,补齐局部注册、状态和样式后进行严格模板检查。上方已核验行为优先;原始 prop 默认值、包装透传和示例业务适配分别查 [完整 API](./heatmap-api.md) 与场景说明。类型通过不代表所有散文和交互已验证。
13
+
14
+ ### 用途与选型
15
+
16
+ 用于展示一年(或任意区间)内每日的活跃度、提交量、访问量等按天聚合的指标。
17
+
18
+
19
+ ### 何时使用
20
+
21
+ - 需要在一屏内看出一年中哪些天数值高、哪些天几乎为零。
22
+ - 数据天然按天聚合,且关注的是**分布形态**而不是精确数值比较。
23
+ - 常见于贡献图、打卡记录、可用性监控(如服务健康度日历)。
24
+
25
+
26
+ ### 基础用法
27
+
28
+ 默认按自然年渲染:`year` 指定年份,`data` 提供每天的数值。没有数据的天会使用 `minimumColor`。
29
+
30
+ ```vue
31
+ <script setup lang="ts">
32
+ import 'x-next/style.css';
33
+ import { Heatmap } from 'x-next';
34
+ import { ref } from 'vue';
35
+
36
+ const year = new Date().getFullYear();
37
+ const data = ref([
38
+ { timestamp: new Date(year, 0, 3).getTime(), value: 12 },
39
+ { timestamp: new Date(year, 0, 4).getTime(), value: 30 },
40
+ { timestamp: new Date(year, 5, 18).getTime(), value: 5 },
41
+ { timestamp: new Date(year, 8, 9).getTime(), value: 41 },
42
+ ]);
43
+ </script>
44
+ <template>
45
+ <Heatmap :year="year" :data="data" :ariaLabel="`${year} 年活跃度`" />
46
+ </template>
47
+ ```
48
+
49
+ ### 自定义范围
50
+
51
+ 不传 `year` 时,可以用 `startDate` / `endDate` 指定任意区间;两者都不传时,会从 `data` 的首尾时间戳推导。
52
+
53
+ ```vue
54
+ <script setup lang="ts">
55
+ import 'x-next/style.css';
56
+ import { Heatmap } from 'x-next';
57
+ import { ref } from 'vue';
58
+
59
+ const data = ref([
60
+ { timestamp: new Date(2026, 7, 1).getTime(), value: 8 },
61
+ { timestamp: new Date(2026, 11, 20).getTime(), value: 26 },
62
+ { timestamp: new Date(2027, 2, 14).getTime(), value: 31 },
63
+ ]);
64
+ </script>
65
+ <template>
66
+ <Heatmap :data="data" ariaLabel="跨年区间活跃度" />
67
+ </template>
68
+ ```
69
+
70
+ ### 自定义配色
71
+
72
+ `activeColors` 按**由浅到深**的顺序给出色阶,`minimumColor` 指定最小值(以及无数据格)的颜色。
73
+
74
+ ```vue
75
+ <script setup lang="ts">
76
+ import 'x-next/style.css';
77
+ import { Heatmap } from 'x-next';
78
+ import { ref } from 'vue';
79
+
80
+ const year = new Date().getFullYear();
81
+ const minimumColor = ref('#ebedf0');
82
+ const colors = ref(['#9be9a8', '#40c463', '#30a14e', '#216e39', '#0e4429']);
83
+ const data = ref([
84
+ { timestamp: new Date(year, 0, 3).getTime(), value: 1 },
85
+ { timestamp: new Date(year, 3, 8).getTime(), value: 60 },
86
+ ]);
87
+ </script>
88
+ <template>
89
+ <Heatmap
90
+ :year="year"
91
+ :data="data"
92
+ :active-colors="colors"
93
+ :minimum-color="minimumColor"
94
+ />
95
+ </template>
96
+ ```
97
+
98
+ ### 尺寸
99
+
100
+ `size` 支持 `small` / `medium` / `large`,影响格子边长与整体密度。
101
+
102
+ ```vue
103
+ <script setup lang="ts">
104
+ import 'x-next/style.css';
105
+ import { Heatmap } from 'x-next';
106
+ import { ref } from 'vue';
107
+
108
+ const year = new Date().getFullYear();
109
+ const data = ref([{ timestamp: new Date(year, 4, 20).getTime(), value: 18 }]);
110
+ </script>
111
+ <template>
112
+ <Heatmap :year="year" :data="data" size="small" />
113
+ <Heatmap :year="year" :data="data" size="medium" />
114
+ <Heatmap :year="year" :data="data" size="large" />
115
+ </template>
116
+ ```
117
+
118
+ ### 标签与图例
119
+
120
+ `showWeekLabels` / `showMonthLabels` / `showColorIndicator` 可以分别关闭星期标签、月份标签与底部图例。`firstDayOfWeek` 控制一周从哪天开始。
121
+
122
+ ```vue
123
+ <script setup lang="ts">
124
+ import 'x-next/style.css';
125
+ import { Heatmap } from 'x-next';
126
+ import { ref } from 'vue';
127
+
128
+ const year = new Date().getFullYear();
129
+ const data = ref([{ timestamp: new Date(year, 2, 6).getTime(), value: 9 }]);
130
+ </script>
131
+ <template>
132
+ <Heatmap :year="year" :data="data" :first-day-of-week="1" />
133
+ <Heatmap
134
+ :year="year"
135
+ :data="data"
136
+ :show-week-labels="false"
137
+ :show-month-labels="false"
138
+ :show-color-indicator="false"
139
+ />
140
+ </template>
141
+ ```
142
+
143
+ ### 点击事件与自定义提示
144
+
145
+ 点击格子会派发 `cell-click`;`tooltip` 插槽可自定义悬浮内容。
146
+
147
+ 自定义 tooltip 内容:
148
+
149
+ ```vue
150
+ <script setup lang="ts">
151
+ import 'x-next/style.css';
152
+ import { Heatmap } from 'x-next';
153
+ import { ref } from 'vue';
154
+
155
+ const year = new Date().getFullYear();
156
+ const data = ref([{ timestamp: new Date(year, 6, 15).getTime(), value: 22 }]);
157
+ const selectedCell = ref('点击格子查看日期与值');
158
+
159
+ const handleCellClick = (cell: import('x-next').HeatmapCell) => {
160
+ selectedCell.value = `${cell.date} 的值为 ${cell.value ?? '空'}`;
161
+ };
162
+ </script>
163
+ <template>
164
+ <Heatmap :year="year" :data="data" @cell-click="handleCellClick" />
165
+ <p role="status">{{ selectedCell }}</p>
166
+ </template>
167
+ ```
168
+
169
+ ```vue
170
+ <script setup lang="ts">
171
+ import 'x-next/style.css';
172
+ import { Heatmap } from 'x-next';
173
+ import { ref } from 'vue';
174
+
175
+ const year = new Date().getFullYear();
176
+ const data = ref([{ timestamp: new Date(year, 8, 1).getTime(), value: 14 }]);
177
+ function tooltipText(details: unknown) {
178
+ if (!details || typeof details !== 'object' || !('date' in details) || !('value' in details)) return '';
179
+ return `${details.date} / ${details.value ?? '空'}`;
180
+ }
181
+ </script>
182
+ <template>
183
+ <Heatmap :year="year" :data="data">
184
+ <template #tooltip="details">
185
+ 自定义:{{ tooltipText(details) }}
186
+ </template>
187
+ </Heatmap>
188
+ </template>
189
+ ```
190
+
191
+ ### 加载状态
192
+
193
+ `loading` 为 `true` 时用 Spin 覆盖;也可以传对象透传给 Spin。
194
+
195
+ ```vue
196
+ <script setup lang="ts">
197
+ import 'x-next/style.css';
198
+ import { Heatmap } from 'x-next';
199
+ import { ref } from 'vue';
200
+
201
+ const year = new Date().getFullYear();
202
+ const data = ref([]);
203
+ </script>
204
+ <template>
205
+ <Heatmap :year="year" :data="data" loading />
206
+ </template>
207
+ ```
208
+
209
+ ### 交互说明
210
+
211
+ - **色阶分档**:有效值按 `[min, max]` 均分到各档;全部数据同值时统一取最高档,避免整片落到最浅色。
212
+ - **性能**:悬浮提示由整块网格共享一个节点(鼠标事件委托 + 按帧节流),不会为每个格子创建浮层实例;`tooltip` 关闭时改用原生 `title`。
213
+ - **补齐格**:为凑满整周,首尾会有日期属于区间之外的格子,它们带 `x-heatmap-is-out-of-range` 类并降低不透明度。
214
+ - **月份标签**:跨列数不足 3 周的月份不展示标签,以免相邻月份标注重叠。
215
+ - **键盘导航**:网格可聚焦(`tooltip` 开启时)。左右方向键按天移动、上下方向键按周移动,Home / End 到当周首尾,Esc 关闭提示;移动时通过 `aria-live` 播报「日期:数值」,鼠标悬浮不播报。
216
+ - **无障碍结构**:`tooltip` 开启时网格承担 `role="grid"`(用 `aria-activedescendant` 指向当前格),避免 `role="img"` 把整块网格对读屏隐藏;关闭提示时容器带 `role="img"` 作为静态图像。
217
+
218
+
219
+
220
+ 返回 [AI 索引](../index.md)。先查本页与 [本地 API](./heatmap-api.md);需要更深类型时查 [公开组件导航](../catalog.md),不默认上网查找本包用法。