@hbdlzy/ui-core 0.1.1 → 0.1.2

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 (35) hide show
  1. package/README.md +37 -2
  2. package/components.manifest.json +195 -163
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.js +1877 -13
  5. package/dist/style.css +1 -1
  6. package/package.json +2 -1
  7. package/src/components/OutlinedCascader/OutlinedCascader.types.ts +28 -0
  8. package/src/components/OutlinedCascader/OutlinedCascader.vue +250 -0
  9. package/src/components/OutlinedCascader/README.md +91 -0
  10. package/src/components/OutlinedCascader/index.ts +10 -0
  11. package/src/components/OutlinedDatePicker/OutlinedDatePicker.types.ts +40 -0
  12. package/src/components/OutlinedDatePicker/OutlinedDatePicker.vue +365 -0
  13. package/src/components/OutlinedDatePicker/README.md +137 -0
  14. package/src/components/OutlinedDatePicker/index.ts +11 -0
  15. package/src/components/OutlinedDateTimePicker/OutlinedDateTimePicker.types.ts +34 -0
  16. package/src/components/OutlinedDateTimePicker/OutlinedDateTimePicker.vue +421 -0
  17. package/src/components/OutlinedDateTimePicker/README.md +88 -0
  18. package/src/components/OutlinedDateTimePicker/index.ts +11 -0
  19. package/src/components/OutlinedInput/OutlinedInput.types.ts +32 -0
  20. package/src/components/OutlinedInput/OutlinedInput.vue +307 -0
  21. package/src/components/OutlinedInput/README.md +154 -0
  22. package/src/components/OutlinedInput/index.ts +10 -0
  23. package/src/components/OutlinedSelect/OutlinedSelect.types.ts +48 -0
  24. package/src/components/OutlinedSelect/OutlinedSelect.vue +359 -0
  25. package/src/components/OutlinedSelect/README.md +166 -0
  26. package/src/components/OutlinedSelect/index.ts +12 -0
  27. package/src/components/OutlinedTimePicker/OutlinedTimePicker.types.ts +36 -0
  28. package/src/components/OutlinedTimePicker/OutlinedTimePicker.vue +303 -0
  29. package/src/components/OutlinedTimePicker/README.md +93 -0
  30. package/src/components/OutlinedTimePicker/index.ts +10 -0
  31. package/src/components/OutlinedTreeSelect/OutlinedTreeSelect.types.ts +56 -0
  32. package/src/components/OutlinedTreeSelect/OutlinedTreeSelect.vue +354 -0
  33. package/src/components/OutlinedTreeSelect/README.md +107 -0
  34. package/src/components/OutlinedTreeSelect/index.ts +12 -0
  35. package/src/index.ts +14 -0
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # @hbdlzy/ui-core
1
+ # @hbdlzy/ui-core
2
2
 
3
3
  `@hbdlzy/ui-core` 负责沉淀跨项目复用的基础 UI 组件和无业务依赖的前端工具。
4
4
 
@@ -8,13 +8,34 @@
8
8
  - `BaseCard`
9
9
  - `BaseEChart`
10
10
  - `BaseExportButton`
11
+ - `OutlinedInput`
12
+ - `OutlinedSelect`
13
+ - `OutlinedDatePicker`
14
+ - `OutlinedDateTimePicker`
15
+ - `OutlinedTimePicker`
16
+ - `OutlinedCascader`
17
+ - `OutlinedTreeSelect`
11
18
  - `echarts`
12
19
  - `exportExcel`
13
20
 
14
21
  ## 使用方式
15
22
 
16
23
  ```ts
17
- import { BaseTable, BaseCard, BaseEChart, BaseExportButton, echarts, exportExcel } from '@hbdlzy/ui-core'
24
+ import {
25
+ BaseTable,
26
+ BaseCard,
27
+ BaseEChart,
28
+ BaseExportButton,
29
+ OutlinedInput,
30
+ OutlinedSelect,
31
+ OutlinedDatePicker,
32
+ OutlinedDateTimePicker,
33
+ OutlinedTimePicker,
34
+ OutlinedCascader,
35
+ OutlinedTreeSelect,
36
+ echarts,
37
+ exportExcel
38
+ } from '@hbdlzy/ui-core'
18
39
  ```
19
40
 
20
41
  ## 详细文档
@@ -23,6 +44,13 @@ import { BaseTable, BaseCard, BaseEChart, BaseExportButton, echarts, exportExcel
23
44
  - `BaseCard`: [src/components/BaseCard/README.md](./src/components/BaseCard/README.md)
24
45
  - `BaseEChart`: [src/components/BaseEChart/README.md](./src/components/BaseEChart/README.md)
25
46
  - `BaseExportButton`: [src/components/BaseExportButton/README.md](./src/components/BaseExportButton/README.md)
47
+ - `OutlinedInput`: [src/components/OutlinedInput/README.md](./src/components/OutlinedInput/README.md)
48
+ - `OutlinedSelect`: [src/components/OutlinedSelect/README.md](./src/components/OutlinedSelect/README.md)
49
+ - `OutlinedDatePicker`: [src/components/OutlinedDatePicker/README.md](./src/components/OutlinedDatePicker/README.md)
50
+ - `OutlinedDateTimePicker`: [src/components/OutlinedDateTimePicker/README.md](./src/components/OutlinedDateTimePicker/README.md)
51
+ - `OutlinedTimePicker`: [src/components/OutlinedTimePicker/README.md](./src/components/OutlinedTimePicker/README.md)
52
+ - `OutlinedCascader`: [src/components/OutlinedCascader/README.md](./src/components/OutlinedCascader/README.md)
53
+ - `OutlinedTreeSelect`: [src/components/OutlinedTreeSelect/README.md](./src/components/OutlinedTreeSelect/README.md)
26
54
  - AI 清单: [components.manifest.json](./components.manifest.json)
27
55
 
28
56
  ## 当前导出能力
@@ -32,6 +60,13 @@ import { BaseTable, BaseCard, BaseEChart, BaseExportButton, echarts, exportExcel
32
60
  - `BaseCard`
33
61
  - `BaseEChart`
34
62
  - `BaseExportButton`
63
+ - `OutlinedInput`
64
+ - `OutlinedSelect`
65
+ - `OutlinedDatePicker`
66
+ - `OutlinedDateTimePicker`
67
+ - `OutlinedTimePicker`
68
+ - `OutlinedCascader`
69
+ - `OutlinedTreeSelect`
35
70
  - 工具
36
71
  - `echarts`
37
72
  - `exportExcel`
@@ -9,68 +9,28 @@
9
9
  "entry": "@hbdlzy/ui-core",
10
10
  "importName": "BaseTable",
11
11
  "docs": "packages/ui-core/src/components/BaseTable/README.md",
12
- "description": "统一封装分页、远程请求、勾选列、索引列、操作列和常见表格列渲染能力的基础表格组件。",
12
+ "description": "统一封装分页、远程请求、排序参数映射、结果适配和常见列渲染能力的基础表格组件。",
13
13
  "props": [
14
- {
15
- "name": "columns",
16
- "type": "BaseTableColumn[]",
17
- "required": true
18
- },
19
- {
20
- "name": "data",
21
- "type": "Record<string, any>[]",
22
- "required": false
23
- },
24
- {
25
- "name": "request",
26
- "type": "BaseTableRequestHandler",
27
- "required": false
28
- },
29
- {
30
- "name": "requestParams",
31
- "type": "Record<string, unknown>",
32
- "required": false
33
- },
14
+ { "name": "columns", "type": "BaseTableColumn[]", "required": true },
15
+ { "name": "data", "type": "Record<string, any>[]", "required": false },
16
+ { "name": "request", "type": "BaseTableRequestHandler", "required": false },
17
+ { "name": "requestParams", "type": "Record<string, unknown>", "required": false },
34
18
  {
35
19
  "name": "resultAdapter",
36
20
  "type": "(result: unknown, params: BaseTableRequestParams) => { rows?: Record<string, any>[]; total?: number }",
37
21
  "required": false
38
22
  },
39
- {
40
- "name": "defaultSort",
41
- "type": "BaseTableSortState",
42
- "required": false
43
- },
44
- {
45
- "name": "sortFieldKey",
46
- "type": "string",
47
- "default": "sortField"
48
- },
49
- {
50
- "name": "sortOrderKey",
51
- "type": "string",
52
- "default": "sortOrder"
53
- },
23
+ { "name": "defaultSort", "type": "BaseTableSortState", "required": false },
24
+ { "name": "sortFieldKey", "type": "string", "default": "sortField" },
25
+ { "name": "sortOrderKey", "type": "string", "default": "sortOrder" },
54
26
  {
55
27
  "name": "sortMapper",
56
28
  "type": "(payload: BaseTableSortPayload) => Record<string, unknown> | void",
57
29
  "required": false
58
30
  },
59
- {
60
- "name": "hasSelection",
61
- "type": "boolean",
62
- "default": false
63
- },
64
- {
65
- "name": "hasIndex",
66
- "type": "boolean",
67
- "default": false
68
- },
69
- {
70
- "name": "showPagination",
71
- "type": "boolean",
72
- "default": true
73
- }
31
+ { "name": "hasSelection", "type": "boolean", "default": false },
32
+ { "name": "hasIndex", "type": "boolean", "default": false },
33
+ { "name": "showPagination", "type": "boolean", "default": true }
74
34
  ],
75
35
  "emits": ["row-action", "selection-change", "sort-change", "page-change", "size-change", "loaded"]
76
36
  },
@@ -80,58 +40,18 @@
80
40
  "entry": "@hbdlzy/ui-core",
81
41
  "importName": "BaseCard",
82
42
  "docs": "packages/ui-core/src/components/BaseCard/README.md",
83
- "description": "统一封装卡片标题区、右侧信息区、导出触发区和常用卡片视觉样式的基础容器组件。",
43
+ "description": "统一封装卡片标题区、右侧信息区、导出触发区和常用视觉参数的基础容器组件。",
84
44
  "props": [
85
- {
86
- "name": "title",
87
- "type": "string",
88
- "default": ""
89
- },
90
- {
91
- "name": "metaText",
92
- "type": "string",
93
- "default": ""
94
- },
95
- {
96
- "name": "showHeader",
97
- "type": "boolean",
98
- "default": true
99
- },
100
- {
101
- "name": "showTitleMarker",
102
- "type": "boolean",
103
- "default": true
104
- },
105
- {
106
- "name": "showExport",
107
- "type": "boolean",
108
- "default": false
109
- },
110
- {
111
- "name": "exportPayload",
112
- "type": "unknown",
113
- "required": false
114
- },
115
- {
116
- "name": "padding",
117
- "type": "string | number",
118
- "default": 20
119
- },
120
- {
121
- "name": "borderColor",
122
- "type": "string",
123
- "default": "var(--border-color)"
124
- },
125
- {
126
- "name": "backgroundColor",
127
- "type": "string",
128
- "default": "var(--border-bg-color)"
129
- },
130
- {
131
- "name": "markerColor",
132
- "type": "string",
133
- "default": "var(--el-color-primary)"
134
- }
45
+ { "name": "title", "type": "string", "default": "" },
46
+ { "name": "metaText", "type": "string", "default": "" },
47
+ { "name": "showHeader", "type": "boolean", "default": true },
48
+ { "name": "showTitleMarker", "type": "boolean", "default": true },
49
+ { "name": "showExport", "type": "boolean", "default": false },
50
+ { "name": "exportPayload", "type": "unknown", "required": false },
51
+ { "name": "padding", "type": "string | number", "default": 20 },
52
+ { "name": "borderColor", "type": "string", "default": "var(--border-color)" },
53
+ { "name": "backgroundColor", "type": "string", "default": "var(--border-bg-color)" },
54
+ { "name": "markerColor", "type": "string", "default": "var(--el-color-primary)" }
135
55
  ],
136
56
  "emits": ["export"]
137
57
  },
@@ -141,43 +61,15 @@
141
61
  "entry": "@hbdlzy/ui-core",
142
62
  "importName": "BaseEChart",
143
63
  "docs": "packages/ui-core/src/components/BaseEChart/README.md",
144
- "description": "统一封装 ECharts 的初始化、setOption、自动 resize、实例销毁和常用实例方法暴露。",
64
+ "description": "统一封装 ECharts 初始化、setOption、自动 resize、实例销毁和实例方法暴露。",
145
65
  "props": [
146
- {
147
- "name": "option",
148
- "type": "EChartOption",
149
- "required": false
150
- },
151
- {
152
- "name": "theme",
153
- "type": "string | object",
154
- "required": false
155
- },
156
- {
157
- "name": "initOptions",
158
- "type": "EChartInitOptions",
159
- "required": false
160
- },
161
- {
162
- "name": "setOptionOptions",
163
- "type": "boolean | EChartSetOptionOptions",
164
- "required": false
165
- },
166
- {
167
- "name": "loading",
168
- "type": "boolean",
169
- "default": false
170
- },
171
- {
172
- "name": "autoResize",
173
- "type": "boolean",
174
- "default": true
175
- },
176
- {
177
- "name": "useDefaultColors",
178
- "type": "boolean",
179
- "default": true
180
- }
66
+ { "name": "option", "type": "EChartOption", "required": false },
67
+ { "name": "theme", "type": "string | object", "required": false },
68
+ { "name": "initOptions", "type": "EChartInitOptions", "required": false },
69
+ { "name": "setOptionOptions", "type": "boolean | EChartSetOptionOptions", "required": false },
70
+ { "name": "loading", "type": "boolean", "default": false },
71
+ { "name": "autoResize", "type": "boolean", "default": true },
72
+ { "name": "useDefaultColors", "type": "boolean", "default": true }
181
73
  ],
182
74
  "emits": ["ready"]
183
75
  },
@@ -189,33 +81,173 @@
189
81
  "docs": "packages/ui-core/src/components/BaseExportButton/README.md",
190
82
  "description": "统一处理前端 Excel 导出和后端 blob 下载的基础导出按钮。",
191
83
  "props": [
192
- {
193
- "name": "label",
194
- "type": "string",
195
- "default": "导出"
196
- },
197
- {
198
- "name": "fileName",
199
- "type": "string",
200
- "default": ""
201
- },
202
- {
203
- "name": "excelOptions",
204
- "type": "ExcelExportOptions",
205
- "required": false
206
- },
207
- {
208
- "name": "requestHandler",
209
- "type": "() => Promise<ExportResponseLike>",
210
- "required": false
211
- },
212
- {
213
- "name": "beforeExport",
214
- "type": "() => boolean | Promise<boolean>",
215
- "required": false
216
- }
84
+ { "name": "label", "type": "string", "default": "导出" },
85
+ { "name": "fileName", "type": "string", "default": "" },
86
+ { "name": "excelOptions", "type": "ExcelExportOptions", "required": false },
87
+ { "name": "requestHandler", "type": "() => Promise<ExportResponseLike>", "required": false },
88
+ { "name": "beforeExport", "type": "() => boolean | Promise<boolean>", "required": false }
217
89
  ],
218
90
  "emits": ["start", "success", "error"]
91
+ },
92
+ {
93
+ "name": "OutlinedInput",
94
+ "category": "ui-core",
95
+ "entry": "@hbdlzy/ui-core",
96
+ "importName": "OutlinedInput",
97
+ "docs": "packages/ui-core/src/components/OutlinedInput/README.md",
98
+ "description": "统一封装浮动标签、数值校验、属性透传和常用实例方法暴露的表单输入组件。",
99
+ "props": [
100
+ { "name": "value", "type": "string | number", "required": false },
101
+ { "name": "placeholder", "type": "string", "default": "" },
102
+ { "name": "label", "type": "string", "default": "" },
103
+ { "name": "typeInput", "type": "string", "default": "text" },
104
+ { "name": "isNumber", "type": "boolean", "default": false },
105
+ { "name": "regex", "type": "RegExp", "required": false },
106
+ { "name": "inputHeight", "type": "number", "default": 40 },
107
+ { "name": "isBorder", "type": "boolean", "default": false },
108
+ { "name": "suffixText", "type": "string", "default": "" },
109
+ { "name": "clearable", "type": "boolean", "default": false },
110
+ { "name": "showWordLimit", "type": "boolean", "default": true }
111
+ ],
112
+ "emits": ["input", "update:value", "warning", "focus", "blur", "change", "clear"]
113
+ },
114
+ {
115
+ "name": "OutlinedSelect",
116
+ "category": "ui-core",
117
+ "entry": "@hbdlzy/ui-core",
118
+ "importName": "OutlinedSelect",
119
+ "docs": "packages/ui-core/src/components/OutlinedSelect/README.md",
120
+ "description": "统一封装浮动标签、选项映射、弹层焦点控制和实例方法暴露的表单下拉组件。",
121
+ "props": [
122
+ { "name": "value", "type": "string | number | boolean | object | unknown[]", "required": false },
123
+ { "name": "options", "type": "OutlinedSelectOption[]", "required": false },
124
+ { "name": "placeholder", "type": "string", "default": "" },
125
+ { "name": "label", "type": "string", "default": "" },
126
+ { "name": "multiple", "type": "boolean", "default": false },
127
+ { "name": "filterable", "type": "boolean", "default": true },
128
+ { "name": "clearable", "type": "boolean", "default": true },
129
+ { "name": "collapseTags", "type": "boolean", "default": false },
130
+ { "name": "keyValue", "type": "string", "default": "value" },
131
+ { "name": "labelValue", "type": "string", "default": "label" },
132
+ { "name": "inputHeight", "type": "number", "default": 40 },
133
+ { "name": "isBorder", "type": "boolean", "default": false }
134
+ ],
135
+ "emits": ["input", "update:value", "change", "focus", "blur", "visible-change", "clear"]
136
+ },
137
+ {
138
+ "name": "OutlinedDatePicker",
139
+ "category": "ui-core",
140
+ "entry": "@hbdlzy/ui-core",
141
+ "importName": "OutlinedDatePicker",
142
+ "docs": "packages/ui-core/src/components/OutlinedDatePicker/README.md",
143
+ "description": "统一封装浮动标签、日期禁用规则、格式映射和实例方法暴露的表单日期组件。",
144
+ "props": [
145
+ { "name": "value", "type": "string | number | Date | Array<string | number | Date>", "required": false },
146
+ { "name": "placeholder", "type": "string", "default": "" },
147
+ { "name": "label", "type": "string", "default": "" },
148
+ { "name": "typeDate", "type": "string", "default": "date" },
149
+ { "name": "format", "type": "string", "default": "YYYY-MM-DD" },
150
+ { "name": "valueFormat", "type": "string", "required": false },
151
+ { "name": "timeValue", "type": "boolean", "default": false },
152
+ { "name": "disabledDate", "type": "string | number | Date | ((date: Date) => boolean)", "required": false },
153
+ { "name": "inputHeight", "type": "number", "default": 40 },
154
+ { "name": "isBorder", "type": "boolean", "default": false }
155
+ ],
156
+ "emits": ["input", "update:value", "change", "focus", "blur", "visible-change"]
157
+ },
158
+ {
159
+ "name": "OutlinedDateTimePicker",
160
+ "category": "ui-core",
161
+ "entry": "@hbdlzy/ui-core",
162
+ "importName": "OutlinedDateTimePicker",
163
+ "docs": "packages/ui-core/src/components/OutlinedDateTimePicker/README.md",
164
+ "description": "统一封装日期时间组合输入、浮动标签、禁用日期规则和日期时间面板实例方法暴露。",
165
+ "props": [
166
+ { "name": "value", "type": "string", "required": false },
167
+ { "name": "placeholder", "type": "string", "default": "" },
168
+ { "name": "label", "type": "string", "default": "" },
169
+ { "name": "inputHeight", "type": "number", "default": 40 },
170
+ { "name": "isBorder", "type": "boolean", "default": false },
171
+ { "name": "disabledDate", "type": "string | number | Date | ((date: Date) => boolean)", "required": false },
172
+ { "name": "separatorText", "type": "string", "default": "-" },
173
+ { "name": "timePlaceholder", "type": "string", "default": "时间" },
174
+ { "name": "clearable", "type": "boolean", "default": false }
175
+ ],
176
+ "emits": ["input", "update:value", "change", "focus", "blur", "visible-change"]
177
+ },
178
+ {
179
+ "name": "OutlinedTimePicker",
180
+ "category": "ui-core",
181
+ "entry": "@hbdlzy/ui-core",
182
+ "importName": "OutlinedTimePicker",
183
+ "docs": "packages/ui-core/src/components/OutlinedTimePicker/README.md",
184
+ "description": "统一封装时间选择控件的单值模式、范围模式、浮动标签和实例方法暴露。",
185
+ "props": [
186
+ { "name": "value", "type": "string | number | Date | Array<string | number | Date> | null", "required": false },
187
+ { "name": "placeholder", "type": "string", "default": "" },
188
+ { "name": "label", "type": "string", "default": "" },
189
+ { "name": "disabled", "type": "boolean", "default": false },
190
+ { "name": "clearable", "type": "boolean", "default": true },
191
+ { "name": "isRange", "type": "boolean", "default": false },
192
+ { "name": "startPlaceholder", "type": "string", "default": "开始时间" },
193
+ { "name": "endPlaceholder", "type": "string", "default": "结束时间" },
194
+ { "name": "rangeSeparator", "type": "string", "default": "-" },
195
+ { "name": "format", "type": "string", "default": "HH:mm" },
196
+ { "name": "valueFormat", "type": "string", "required": false },
197
+ { "name": "arrowControl", "type": "boolean", "default": false },
198
+ { "name": "inputHeight", "type": "number", "default": 40 },
199
+ { "name": "isBorder", "type": "boolean", "default": false }
200
+ ],
201
+ "emits": ["input", "update:value", "change", "focus", "blur", "visible-change", "clear"]
202
+ },
203
+ {
204
+ "name": "OutlinedCascader",
205
+ "category": "ui-core",
206
+ "entry": "@hbdlzy/ui-core",
207
+ "importName": "OutlinedCascader",
208
+ "docs": "packages/ui-core/src/components/OutlinedCascader/README.md",
209
+ "description": "统一封装级联选择的浮动标签、选项映射、弹层显隐和实例方法暴露。",
210
+ "props": [
211
+ { "name": "value", "type": "Array<string | number>", "required": false },
212
+ { "name": "options", "type": "Record<string, unknown>[]", "required": false },
213
+ { "name": "clearable", "type": "boolean", "default": false },
214
+ { "name": "propsValue", "type": "Record<string, unknown>", "required": false },
215
+ { "name": "placeholder", "type": "string", "default": "" },
216
+ { "name": "label", "type": "string", "default": "" },
217
+ { "name": "popperClass", "type": "string", "default": "" },
218
+ { "name": "disabled", "type": "boolean", "default": false },
219
+ { "name": "inputHeight", "type": "number", "default": 40 },
220
+ { "name": "isBorder", "type": "boolean", "default": false },
221
+ { "name": "filterable", "type": "boolean", "default": true },
222
+ { "name": "levels", "type": "boolean", "default": true }
223
+ ],
224
+ "emits": ["input", "update:value", "change", "focus", "blur", "visible-change"]
225
+ },
226
+ {
227
+ "name": "OutlinedTreeSelect",
228
+ "category": "ui-core",
229
+ "entry": "@hbdlzy/ui-core",
230
+ "importName": "OutlinedTreeSelect",
231
+ "docs": "packages/ui-core/src/components/OutlinedTreeSelect/README.md",
232
+ "description": "统一封装树形下拉选择的字段映射、浮动标签、弹层显隐和实例方法暴露。",
233
+ "props": [
234
+ { "name": "value", "type": "string | number | boolean | object | Array<string | number | boolean | object>", "required": false },
235
+ { "name": "data", "type": "OutlinedTreeSelectNode[]", "required": false },
236
+ { "name": "propsValue", "type": "Record<string, unknown>", "required": false },
237
+ { "name": "placeholder", "type": "string", "default": "" },
238
+ { "name": "label", "type": "string", "default": "" },
239
+ { "name": "disabled", "type": "boolean", "default": false },
240
+ { "name": "clearable", "type": "boolean", "default": true },
241
+ { "name": "filterable", "type": "boolean", "default": true },
242
+ { "name": "multiple", "type": "boolean", "default": false },
243
+ { "name": "showCheckbox", "type": "boolean", "default": false },
244
+ { "name": "checkStrictly", "type": "boolean", "default": false },
245
+ { "name": "nodeKey", "type": "string", "default": "value" },
246
+ { "name": "keyValue", "type": "string", "default": "value" },
247
+ { "name": "labelValue", "type": "string", "default": "label" },
248
+ { "name": "childrenValue", "type": "string", "default": "children" }
249
+ ],
250
+ "emits": ["input", "update:value", "change", "focus", "blur", "visible-change", "clear"]
219
251
  }
220
252
  ],
221
253
  "utilities": [