@manohub/ui 0.6.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 (169) hide show
  1. package/README.md +141 -0
  2. package/dist/components/avatar/index.d.ts +283 -0
  3. package/dist/components/avatar/index.js +167 -0
  4. package/dist/components/badge/index.d.ts +132 -0
  5. package/dist/components/badge/index.js +99 -0
  6. package/dist/components/button/index.d.ts +578 -0
  7. package/dist/components/button/index.js +191 -0
  8. package/dist/components/capsule/index.d.ts +161 -0
  9. package/dist/components/capsule/index.js +101 -0
  10. package/dist/components/card/index.d.ts +456 -0
  11. package/dist/components/card/index.js +231 -0
  12. package/dist/components/checkbox/index.d.ts +331 -0
  13. package/dist/components/checkbox/index.js +165 -0
  14. package/dist/components/code/index.d.ts +134 -0
  15. package/dist/components/code/index.js +117 -0
  16. package/dist/components/code-editor/index.d.ts +163 -0
  17. package/dist/components/code-editor/index.js +98 -0
  18. package/dist/components/collapse/index.d.ts +125 -0
  19. package/dist/components/collapse/index.js +95 -0
  20. package/dist/components/control-size.d.ts +8 -0
  21. package/dist/components/dialog/index.d.ts +224 -0
  22. package/dist/components/dialog/index.js +194 -0
  23. package/dist/components/divider/index.d.ts +64 -0
  24. package/dist/components/divider/index.js +62 -0
  25. package/dist/components/drawer/index.d.ts +226 -0
  26. package/dist/components/drawer/index.js +190 -0
  27. package/dist/components/filter/index.d.ts +391 -0
  28. package/dist/components/filter/index.js +203 -0
  29. package/dist/components/form/index.d.ts +704 -0
  30. package/dist/components/form/index.js +329 -0
  31. package/dist/components/input/index.d.ts +980 -0
  32. package/dist/components/input/index.js +334 -0
  33. package/dist/components/layout/index.d.ts +162 -0
  34. package/dist/components/layout/index.js +100 -0
  35. package/dist/components/list-view/index.d.ts +563 -0
  36. package/dist/components/list-view/index.js +221 -0
  37. package/dist/components/loading/index.d.ts +77 -0
  38. package/dist/components/loading/index.js +40 -0
  39. package/dist/components/nav/index.d.ts +293 -0
  40. package/dist/components/nav/index.js +164 -0
  41. package/dist/components/notice/index.d.ts +137 -0
  42. package/dist/components/notice/index.js +101 -0
  43. package/dist/components/notification/index.d.ts +118 -0
  44. package/dist/components/notification/index.js +99 -0
  45. package/dist/components/page/index.d.ts +276 -0
  46. package/dist/components/page/index.js +351 -0
  47. package/dist/components/page/split-resize.d.ts +42 -0
  48. package/dist/components/page/split-resize.js +36 -0
  49. package/dist/components/pagination/index.d.ts +171 -0
  50. package/dist/components/pagination/index.js +226 -0
  51. package/dist/components/panel/index.d.ts +401 -0
  52. package/dist/components/panel/index.js +193 -0
  53. package/dist/components/part-padding.d.ts +27 -0
  54. package/dist/components/part-padding.js +23 -0
  55. package/dist/components/query-state/index.d.ts +207 -0
  56. package/dist/components/query-state/index.js +181 -0
  57. package/dist/components/radio/index.d.ts +473 -0
  58. package/dist/components/radio/index.js +250 -0
  59. package/dist/components/search/index.d.ts +167 -0
  60. package/dist/components/search/index.js +105 -0
  61. package/dist/components/select/index.d.ts +252 -0
  62. package/dist/components/select/index.js +281 -0
  63. package/dist/components/skeleton/index.d.ts +88 -0
  64. package/dist/components/skeleton/index.js +56 -0
  65. package/dist/components/steps/index.d.ts +199 -0
  66. package/dist/components/steps/index.js +117 -0
  67. package/dist/components/switch/index.d.ts +150 -0
  68. package/dist/components/switch/index.js +103 -0
  69. package/dist/components/table/index.d.ts +351 -0
  70. package/dist/components/table/index.js +286 -0
  71. package/dist/components/tabs/index.d.ts +179 -0
  72. package/dist/components/tabs/index.js +153 -0
  73. package/dist/components/tabset/index.d.ts +105 -0
  74. package/dist/components/tabset/index.js +68 -0
  75. package/dist/components/tag/index.d.ts +203 -0
  76. package/dist/components/tag/index.js +144 -0
  77. package/dist/components/toast/index.d.ts +271 -0
  78. package/dist/components/toast/index.js +116 -0
  79. package/dist/components/tooltip/index.d.ts +126 -0
  80. package/dist/components/tooltip/index.js +97 -0
  81. package/dist/components/tree/index.d.ts +317 -0
  82. package/dist/components/tree/index.js +251 -0
  83. package/dist/components/upload/index.d.ts +384 -0
  84. package/dist/components/upload/index.js +172 -0
  85. package/dist/index.d.ts +63 -0
  86. package/dist/index.js +102 -0
  87. package/dist/services/base.d.ts +21 -0
  88. package/dist/services/base.js +42 -0
  89. package/dist/services/dialog.d.ts +41 -0
  90. package/dist/services/dialog.js +83 -0
  91. package/dist/services/index.d.ts +12 -0
  92. package/dist/services/loading.d.ts +21 -0
  93. package/dist/services/loading.js +41 -0
  94. package/dist/services/toast.d.ts +40 -0
  95. package/dist/services/toast.js +74 -0
  96. package/dist/styles/components/avatar.css +128 -0
  97. package/dist/styles/components/avatar.tokens.css +24 -0
  98. package/dist/styles/components/badge.css +237 -0
  99. package/dist/styles/components/button.css +454 -0
  100. package/dist/styles/components/button.tokens.css +56 -0
  101. package/dist/styles/components/capsule.css +120 -0
  102. package/dist/styles/components/capsule.tokens.css +27 -0
  103. package/dist/styles/components/card.css +192 -0
  104. package/dist/styles/components/checkbox.css +145 -0
  105. package/dist/styles/components/checkbox.tokens.css +26 -0
  106. package/dist/styles/components/code-editor.css +91 -0
  107. package/dist/styles/components/code-editor.tokens.css +24 -0
  108. package/dist/styles/components/code.css +153 -0
  109. package/dist/styles/components/code.tokens.css +29 -0
  110. package/dist/styles/components/collapse.css +62 -0
  111. package/dist/styles/components/collapse.tokens.css +20 -0
  112. package/dist/styles/components/dialog.css +106 -0
  113. package/dist/styles/components/dialog.tokens.css +24 -0
  114. package/dist/styles/components/divider.css +71 -0
  115. package/dist/styles/components/divider.tokens.css +21 -0
  116. package/dist/styles/components/drawer.css +143 -0
  117. package/dist/styles/components/drawer.tokens.css +22 -0
  118. package/dist/styles/components/filter.css +41 -0
  119. package/dist/styles/components/filter.tokens.css +14 -0
  120. package/dist/styles/components/form.css +220 -0
  121. package/dist/styles/components/form.tokens.css +15 -0
  122. package/dist/styles/components/input.css +445 -0
  123. package/dist/styles/components/input.tokens.css +41 -0
  124. package/dist/styles/components/layout.css +198 -0
  125. package/dist/styles/components/list-view.css +244 -0
  126. package/dist/styles/components/loading.css +76 -0
  127. package/dist/styles/components/loading.tokens.css +23 -0
  128. package/dist/styles/components/nav.css +48 -0
  129. package/dist/styles/components/notice.css +153 -0
  130. package/dist/styles/components/notice.tokens.css +17 -0
  131. package/dist/styles/components/notification.css +159 -0
  132. package/dist/styles/components/notification.tokens.css +37 -0
  133. package/dist/styles/components/page.css +473 -0
  134. package/dist/styles/components/pagination.css +297 -0
  135. package/dist/styles/components/pagination.tokens.css +32 -0
  136. package/dist/styles/components/panel.css +77 -0
  137. package/dist/styles/components/query-state.css +88 -0
  138. package/dist/styles/components/radio.css +271 -0
  139. package/dist/styles/components/radio.tokens.css +26 -0
  140. package/dist/styles/components/search.css +30 -0
  141. package/dist/styles/components/select.css +242 -0
  142. package/dist/styles/components/select.tokens.css +33 -0
  143. package/dist/styles/components/skeleton.css +60 -0
  144. package/dist/styles/components/skeleton.tokens.css +27 -0
  145. package/dist/styles/components/steps.css +157 -0
  146. package/dist/styles/components/steps.tokens.css +42 -0
  147. package/dist/styles/components/switch.css +165 -0
  148. package/dist/styles/components/switch.tokens.css +26 -0
  149. package/dist/styles/components/table.css +439 -0
  150. package/dist/styles/components/table.tokens.css +41 -0
  151. package/dist/styles/components/tabs.css +234 -0
  152. package/dist/styles/components/tabs.tokens.css +30 -0
  153. package/dist/styles/components/tag.css +200 -0
  154. package/dist/styles/components/tag.tokens.css +30 -0
  155. package/dist/styles/components/toast.css +150 -0
  156. package/dist/styles/components/toast.tokens.css +26 -0
  157. package/dist/styles/components/tooltip.css +89 -0
  158. package/dist/styles/components/tooltip.tokens.css +25 -0
  159. package/dist/styles/components/tree.css +139 -0
  160. package/dist/styles/components/tree.tokens.css +20 -0
  161. package/dist/styles/components/upload.css +150 -0
  162. package/dist/styles/components/upload.tokens.css +27 -0
  163. package/dist/styles/index.css +149 -0
  164. package/dist/styles/operations/collapse.css +84 -0
  165. package/dist/styles/operations/popup.css +189 -0
  166. package/dist/styles/operations/tabset.css +57 -0
  167. package/dist/utils/state-illustration.d.ts +31 -0
  168. package/dist/utils/state-illustration.js +156 -0
  169. package/package.json +62 -0
@@ -0,0 +1,563 @@
1
+ import { type PropType, type SlotsType, type VNodeChild } from 'vue';
2
+ /** 卡片右上状态胶囊的语义档(取色走令牌,与 `Badge` 同源词表) */
3
+ export type ListViewStatusTone = 'primary' | 'success' | 'warning' | 'error' | 'neutral';
4
+ export interface ListViewStatus {
5
+ /** 胶囊文案 */
6
+ label: string;
7
+ /** 语义档:`primary`(默认)/ `success` / `warning` / `error` / `neutral` */
8
+ tone?: ListViewStatusTone;
9
+ /** 文案前挂状态圆点(在线 / 离线这类点状状态) */
10
+ dot?: boolean;
11
+ }
12
+ /**
13
+ * 卡片网格列表:**容器自适应列数 + 三态内建**。
14
+ *
15
+ * ## 列数(响应式口径)
16
+ *
17
+ * 列数由**容器宽度**决定,不跟视口断点:`repeat(auto-fill, minmax(min(--mh-list-view-min, 100%), 1fr))`
18
+ * —— 栏宽变窄自动减列(窄到放不下时回落单列),栏内再嵌组件也不会因为「视口没变」而排错列数。
19
+ * `minItemWidth` 是唯一的下限入口(缺省 `--ui-grid-column-min`)。
20
+ *
21
+ * ## 三态
22
+ *
23
+ * - `loading` → **骨架卡网格**(与卡片同尺寸占位,避免加载完成时高度跳动);
24
+ * - `error` / `empty` → 委托 `QueryState`(口径同 CONTRACT §4.6:**错误不得塞进空态**,
25
+ * 两条各自的恢复入口由 `errorActionText` / `emptyActionText` 给)。
26
+ *
27
+ * 无数据或失败时消费方**不要渲染分页**(分页归属见 CONTRACT §4.17)。
28
+ *
29
+ * ## 卡片外观
30
+ *
31
+ * 列表项一律用 `ListView.CardItem`(内部以 `Card interactive` 为壳),消费方不得自绘卡片外观。
32
+ *
33
+ * @example 服务卡片列表(三态;分页由承载它的容器给)
34
+ * <ListView
35
+ * minItemWidth={320}
36
+ * loading={query.isPending.value}
37
+ * error={query.isError.value}
38
+ * errorActionText="重试"
39
+ * onErrorAction={() => void query.refetch()}
40
+ * // 空态:传字符串即空态标题(传 true 会用内置的「暂无数据」)
41
+ * empty={items.value.length === 0 ? '暂无服务' : false}>
42
+ * {items.value.map((item) => (
43
+ * <ListView.CardItem key={item.id} title={item.name} description={item.desc}
44
+ * status={{ label: '在线', tone: 'success', dot: true }}
45
+ * onClick={() => openDetail(item.id)}
46
+ * actions={() => <Button title="编辑" onClick={() => openEdit(item.id)} />} />
47
+ * ))}
48
+ * </ListView>
49
+ */
50
+ export interface ListViewProps {
51
+ /**
52
+ * 卡片最小宽度(px):容器自适应换列的**唯一**下限(`auto-fill`,窄容器自动减列,
53
+ * 不依赖视口断点)。缺省回落 `--ui-grid-column-min`(260)。
54
+ *
55
+ * 传了它只下发一个自定义属性 `--mh-list-view-min`,列公式仍在 CSS 内(与 `Tree` 缩进同一手法)。
56
+ */
57
+ minItemWidth?: number;
58
+ /** 加载态:渲染**骨架卡**网格(与卡片同尺寸,避免高度跳动) */
59
+ loading?: boolean;
60
+ /**
61
+ * 错误态(truthy 即触发)。构造器顺序同 `表格.error` / `QueryState.error`:
62
+ * **`String` 必须排在 `Boolean` 前** —— 顺序写反时空字符串会被判成错误态。
63
+ */
64
+ error?: unknown;
65
+ /** 空态:`true` 用默认文案,`string` 作为空态标题 */
66
+ empty?: boolean | string;
67
+ /** 空态副文案 */
68
+ emptyDescription?: string;
69
+ /** 空态操作按钮(如「新建」);与 `onEmptyAction` 同时传才渲染 */
70
+ emptyActionText?: string;
71
+ onEmptyAction?: () => void;
72
+ /** 错误态标题(默认「加载失败」) */
73
+ errorTitle?: string;
74
+ /** 错误态副文案 */
75
+ errorDescription?: string;
76
+ /** 错误态操作按钮(如「重试」);与 `onErrorAction` 同时传才渲染 */
77
+ errorActionText?: string;
78
+ onErrorAction?: () => void;
79
+ /** 骨架卡数量(缺省 8,与常见一屏卡片数对齐) */
80
+ skeletonCount?: number;
81
+ }
82
+ /**
83
+ * 列表卡片项:卡片的**结构化形态**(图标 / 标题 / 副标题 / 描述 / 标签 / 状态胶囊 / 统计 / 操作位)。
84
+ *
85
+ * 以 `Card interactive` 为壳,卡片外观与悬浮反馈都来自它;本件只管卡片**内部**的排版与几何
86
+ * (最小高 144、图标 36、标题 16/600、描述两行截断、尾部贴底、胶囊与标签片),
87
+ * 几何来源同 `Card`(portal 技能市场卡片实测)。
88
+ *
89
+ * 三处「有意为之」:
90
+ * 1. **操作位默认隐藏**(`opacity: 0`),卡片悬浮或卡内获得焦点时显形;触屏(无 hover 能力)恒显形 ——
91
+ * 因此按钮始终可聚焦、可点,只是平时不抢视觉;
92
+ * 2. **操作位点击不冒泡**:卡内按钮(编辑 / 删除)不会顺带触发整卡的 `onClick`(打开详情);
93
+ * 3. **状态胶囊与标签片由本件自绘**,不复用 `Badge`:原型是**全圆角胶囊**与无最小宽的标签片,
94
+ * 而 `Badge` 的几何是方角 + 最小宽(给徽标列宽用的),套进来会改变原型几何。
95
+ *
96
+ * @example 带状态、标签与操作位的卡片项
97
+ * <ListView.CardItem
98
+ * icon={resolveIcon(item.icon)}
99
+ * title={item.name}
100
+ * subtitle={`V${item.version}`}
101
+ * description={item.desc}
102
+ * tags={[item.topic, item.domain]}
103
+ * status={{ label: '在线', tone: 'success', dot: true }}
104
+ * extra={() => <><Icon name="download" size={14} />{item.downloadCount}</>}
105
+ * actions={() => <Button title="编辑" onClick={() => openEdit(item.id)} />}
106
+ * onClick={() => openDetail(item.id)} />
107
+ */
108
+ export interface ListViewCardItemProps {
109
+ /** 图标:图片地址(`<img>`,`alt` 走空串——名称已由标题承担)或自定义节点 / 返回节点的函数 */
110
+ icon?: string | (() => VNodeChild);
111
+ /** 卡片标题(必填;单行省略) */
112
+ title: string;
113
+ /** 副标题(如版本号),排在标题下方一行 */
114
+ subtitle?: string;
115
+ /** 描述:两行截断(超长文案请由消费方用 `Tooltip` 补全) */
116
+ description?: string;
117
+ /** 标签组(主色弱底 + 主色字的小圆角片),排在尾部左侧 */
118
+ tags?: string[];
119
+ /** 右上状态胶囊 */
120
+ status?: ListViewStatus;
121
+ /** 整卡点击(打开详情 / 抽屉);尾部操作位的点击**不会**冒泡到这里 */
122
+ onClick?: () => void;
123
+ }
124
+ /** 列表卡片项(见 `ListView.CardItem`):图标 / 标题 / 副标题 / 描述 / 标签 / 状态胶囊 / 操作位 */
125
+ export declare const ListViewCardItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
126
+ icon: {
127
+ type: PropType<any>;
128
+ default: undefined;
129
+ };
130
+ title: {
131
+ type: StringConstructor;
132
+ required: true;
133
+ };
134
+ subtitle: {
135
+ type: StringConstructor;
136
+ default: undefined;
137
+ };
138
+ description: {
139
+ type: StringConstructor;
140
+ default: undefined;
141
+ };
142
+ tags: {
143
+ type: PropType<string[]>;
144
+ default: undefined;
145
+ };
146
+ status: {
147
+ type: PropType<ListViewStatus>;
148
+ default: undefined;
149
+ };
150
+ /** 尾部左侧自定义内容(如状态徽标);与 `footer` 插槽等价 */
151
+ footer: {
152
+ type: PropType<any>;
153
+ default: undefined;
154
+ };
155
+ /** 尾部右侧统计(如下载量);渲染在操作位之前 */
156
+ extra: {
157
+ type: PropType<any>;
158
+ default: undefined;
159
+ };
160
+ /** 操作位:**默认隐藏、卡片悬浮(或卡内获得焦点)时显形**;点击不冒泡到整卡 */
161
+ actions: {
162
+ type: PropType<any>;
163
+ default: undefined;
164
+ };
165
+ onClick: {
166
+ type: PropType<() => void>;
167
+ default: undefined;
168
+ };
169
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
170
+ [key: string]: any;
171
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
172
+ icon: {
173
+ type: PropType<any>;
174
+ default: undefined;
175
+ };
176
+ title: {
177
+ type: StringConstructor;
178
+ required: true;
179
+ };
180
+ subtitle: {
181
+ type: StringConstructor;
182
+ default: undefined;
183
+ };
184
+ description: {
185
+ type: StringConstructor;
186
+ default: undefined;
187
+ };
188
+ tags: {
189
+ type: PropType<string[]>;
190
+ default: undefined;
191
+ };
192
+ status: {
193
+ type: PropType<ListViewStatus>;
194
+ default: undefined;
195
+ };
196
+ /** 尾部左侧自定义内容(如状态徽标);与 `footer` 插槽等价 */
197
+ footer: {
198
+ type: PropType<any>;
199
+ default: undefined;
200
+ };
201
+ /** 尾部右侧统计(如下载量);渲染在操作位之前 */
202
+ extra: {
203
+ type: PropType<any>;
204
+ default: undefined;
205
+ };
206
+ /** 操作位:**默认隐藏、卡片悬浮(或卡内获得焦点)时显形**;点击不冒泡到整卡 */
207
+ actions: {
208
+ type: PropType<any>;
209
+ default: undefined;
210
+ };
211
+ onClick: {
212
+ type: PropType<() => void>;
213
+ default: undefined;
214
+ };
215
+ }>> & Readonly<{}>, {
216
+ icon: any;
217
+ extra: any;
218
+ footer: any;
219
+ onClick: () => void;
220
+ actions: any;
221
+ subtitle: string;
222
+ status: ListViewStatus;
223
+ description: string;
224
+ tags: string[];
225
+ }, SlotsType<{
226
+ default?: () => VNodeChild;
227
+ footer?: () => VNodeChild;
228
+ extra?: () => VNodeChild;
229
+ actions?: () => VNodeChild;
230
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
231
+ /**
232
+ * 复合件入口:`ListView` + `ListView.CardItem`
233
+ * (与 `Panel` 同款 `Object.assign` 复合写法;成员不平级导出)
234
+ */
235
+ export declare const ListView: {
236
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
237
+ minItemWidth: {
238
+ type: NumberConstructor;
239
+ default: undefined;
240
+ };
241
+ /** 固定列数(>0 时不再按容器宽度自适应;窄屏要锁死列数时用) */
242
+ columns: {
243
+ type: NumberConstructor;
244
+ default: number;
245
+ };
246
+ loading: {
247
+ type: BooleanConstructor;
248
+ default: boolean;
249
+ };
250
+ error: {
251
+ type: PropType<any>;
252
+ default: undefined;
253
+ };
254
+ empty: {
255
+ type: PropType<boolean | string>;
256
+ default: boolean;
257
+ };
258
+ emptyDescription: {
259
+ type: StringConstructor;
260
+ default: undefined;
261
+ };
262
+ emptyActionText: {
263
+ type: StringConstructor;
264
+ default: undefined;
265
+ };
266
+ onEmptyAction: {
267
+ type: PropType<() => void>;
268
+ default: undefined;
269
+ };
270
+ errorTitle: {
271
+ type: StringConstructor;
272
+ default: undefined;
273
+ };
274
+ errorDescription: {
275
+ type: StringConstructor;
276
+ default: undefined;
277
+ };
278
+ errorActionText: {
279
+ type: StringConstructor;
280
+ default: undefined;
281
+ };
282
+ onErrorAction: {
283
+ type: PropType<() => void>;
284
+ default: undefined;
285
+ };
286
+ skeletonCount: {
287
+ type: NumberConstructor;
288
+ default: number;
289
+ };
290
+ }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
291
+ error: any;
292
+ loading: boolean;
293
+ empty: string | boolean;
294
+ emptyDescription: string;
295
+ errorTitle: string;
296
+ errorDescription: string;
297
+ emptyActionText: string;
298
+ onEmptyAction: () => void;
299
+ errorActionText: string;
300
+ onErrorAction: () => void;
301
+ columns: number;
302
+ minItemWidth: number;
303
+ skeletonCount: number;
304
+ }, true, {}, SlotsType<{
305
+ default?: () => VNodeChild;
306
+ }>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
307
+ P: {};
308
+ B: {};
309
+ D: {};
310
+ C: {};
311
+ M: {};
312
+ Defaults: {};
313
+ }, Readonly<import("vue").ExtractPropTypes<{
314
+ minItemWidth: {
315
+ type: NumberConstructor;
316
+ default: undefined;
317
+ };
318
+ /** 固定列数(>0 时不再按容器宽度自适应;窄屏要锁死列数时用) */
319
+ columns: {
320
+ type: NumberConstructor;
321
+ default: number;
322
+ };
323
+ loading: {
324
+ type: BooleanConstructor;
325
+ default: boolean;
326
+ };
327
+ error: {
328
+ type: PropType<any>;
329
+ default: undefined;
330
+ };
331
+ empty: {
332
+ type: PropType<boolean | string>;
333
+ default: boolean;
334
+ };
335
+ emptyDescription: {
336
+ type: StringConstructor;
337
+ default: undefined;
338
+ };
339
+ emptyActionText: {
340
+ type: StringConstructor;
341
+ default: undefined;
342
+ };
343
+ onEmptyAction: {
344
+ type: PropType<() => void>;
345
+ default: undefined;
346
+ };
347
+ errorTitle: {
348
+ type: StringConstructor;
349
+ default: undefined;
350
+ };
351
+ errorDescription: {
352
+ type: StringConstructor;
353
+ default: undefined;
354
+ };
355
+ errorActionText: {
356
+ type: StringConstructor;
357
+ default: undefined;
358
+ };
359
+ onErrorAction: {
360
+ type: PropType<() => void>;
361
+ default: undefined;
362
+ };
363
+ skeletonCount: {
364
+ type: NumberConstructor;
365
+ default: number;
366
+ };
367
+ }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, {
368
+ error: any;
369
+ loading: boolean;
370
+ empty: string | boolean;
371
+ emptyDescription: string;
372
+ errorTitle: string;
373
+ errorDescription: string;
374
+ emptyActionText: string;
375
+ onEmptyAction: () => void;
376
+ errorActionText: string;
377
+ onErrorAction: () => void;
378
+ columns: number;
379
+ minItemWidth: number;
380
+ skeletonCount: number;
381
+ }>;
382
+ __isFragment?: never;
383
+ __isTeleport?: never;
384
+ __isSuspense?: never;
385
+ } & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
386
+ minItemWidth: {
387
+ type: NumberConstructor;
388
+ default: undefined;
389
+ };
390
+ /** 固定列数(>0 时不再按容器宽度自适应;窄屏要锁死列数时用) */
391
+ columns: {
392
+ type: NumberConstructor;
393
+ default: number;
394
+ };
395
+ loading: {
396
+ type: BooleanConstructor;
397
+ default: boolean;
398
+ };
399
+ error: {
400
+ type: PropType<any>;
401
+ default: undefined;
402
+ };
403
+ empty: {
404
+ type: PropType<boolean | string>;
405
+ default: boolean;
406
+ };
407
+ emptyDescription: {
408
+ type: StringConstructor;
409
+ default: undefined;
410
+ };
411
+ emptyActionText: {
412
+ type: StringConstructor;
413
+ default: undefined;
414
+ };
415
+ onEmptyAction: {
416
+ type: PropType<() => void>;
417
+ default: undefined;
418
+ };
419
+ errorTitle: {
420
+ type: StringConstructor;
421
+ default: undefined;
422
+ };
423
+ errorDescription: {
424
+ type: StringConstructor;
425
+ default: undefined;
426
+ };
427
+ errorActionText: {
428
+ type: StringConstructor;
429
+ default: undefined;
430
+ };
431
+ onErrorAction: {
432
+ type: PropType<() => void>;
433
+ default: undefined;
434
+ };
435
+ skeletonCount: {
436
+ type: NumberConstructor;
437
+ default: number;
438
+ };
439
+ }>> & Readonly<{}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
440
+ error: any;
441
+ loading: boolean;
442
+ empty: string | boolean;
443
+ emptyDescription: string;
444
+ errorTitle: string;
445
+ errorDescription: string;
446
+ emptyActionText: string;
447
+ onEmptyAction: () => void;
448
+ errorActionText: string;
449
+ onErrorAction: () => void;
450
+ columns: number;
451
+ minItemWidth: number;
452
+ skeletonCount: number;
453
+ }, {}, string, SlotsType<{
454
+ default?: () => VNodeChild;
455
+ }>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & {
456
+ CardItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
457
+ icon: {
458
+ type: PropType<any>;
459
+ default: undefined;
460
+ };
461
+ title: {
462
+ type: StringConstructor;
463
+ required: true;
464
+ };
465
+ subtitle: {
466
+ type: StringConstructor;
467
+ default: undefined;
468
+ };
469
+ description: {
470
+ type: StringConstructor;
471
+ default: undefined;
472
+ };
473
+ tags: {
474
+ type: PropType<string[]>;
475
+ default: undefined;
476
+ };
477
+ status: {
478
+ type: PropType<ListViewStatus>;
479
+ default: undefined;
480
+ };
481
+ /** 尾部左侧自定义内容(如状态徽标);与 `footer` 插槽等价 */
482
+ footer: {
483
+ type: PropType<any>;
484
+ default: undefined;
485
+ };
486
+ /** 尾部右侧统计(如下载量);渲染在操作位之前 */
487
+ extra: {
488
+ type: PropType<any>;
489
+ default: undefined;
490
+ };
491
+ /** 操作位:**默认隐藏、卡片悬浮(或卡内获得焦点)时显形**;点击不冒泡到整卡 */
492
+ actions: {
493
+ type: PropType<any>;
494
+ default: undefined;
495
+ };
496
+ onClick: {
497
+ type: PropType<() => void>;
498
+ default: undefined;
499
+ };
500
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
501
+ [key: string]: any;
502
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
503
+ icon: {
504
+ type: PropType<any>;
505
+ default: undefined;
506
+ };
507
+ title: {
508
+ type: StringConstructor;
509
+ required: true;
510
+ };
511
+ subtitle: {
512
+ type: StringConstructor;
513
+ default: undefined;
514
+ };
515
+ description: {
516
+ type: StringConstructor;
517
+ default: undefined;
518
+ };
519
+ tags: {
520
+ type: PropType<string[]>;
521
+ default: undefined;
522
+ };
523
+ status: {
524
+ type: PropType<ListViewStatus>;
525
+ default: undefined;
526
+ };
527
+ /** 尾部左侧自定义内容(如状态徽标);与 `footer` 插槽等价 */
528
+ footer: {
529
+ type: PropType<any>;
530
+ default: undefined;
531
+ };
532
+ /** 尾部右侧统计(如下载量);渲染在操作位之前 */
533
+ extra: {
534
+ type: PropType<any>;
535
+ default: undefined;
536
+ };
537
+ /** 操作位:**默认隐藏、卡片悬浮(或卡内获得焦点)时显形**;点击不冒泡到整卡 */
538
+ actions: {
539
+ type: PropType<any>;
540
+ default: undefined;
541
+ };
542
+ onClick: {
543
+ type: PropType<() => void>;
544
+ default: undefined;
545
+ };
546
+ }>> & Readonly<{}>, {
547
+ icon: any;
548
+ extra: any;
549
+ footer: any;
550
+ onClick: () => void;
551
+ actions: any;
552
+ subtitle: string;
553
+ status: ListViewStatus;
554
+ description: string;
555
+ tags: string[];
556
+ }, SlotsType<{
557
+ default?: () => VNodeChild;
558
+ footer?: () => VNodeChild;
559
+ extra?: () => VNodeChild;
560
+ actions?: () => VNodeChild;
561
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
562
+ };
563
+ export type ListViewCompound = typeof ListView;