@hbdlzy/ui-core 0.1.5 → 0.1.7

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 (57) hide show
  1. package/README.md +4 -0
  2. package/components.manifest.json +37 -1
  3. package/dist/components/BaseTable/BaseTable.types.d.ts +17 -2
  4. package/dist/components/BaseTable/BaseTable.vue.d.ts +4 -4
  5. package/dist/components/BaseTable/index.d.ts +1 -1
  6. package/dist/components/OutlinedCascader/OutlinedCascader.types.d.ts +3 -0
  7. package/dist/components/OutlinedCascader/OutlinedCascader.vue.d.ts +9 -0
  8. package/dist/components/OutlinedDatePicker/OutlinedDatePicker.types.d.ts +3 -0
  9. package/dist/components/OutlinedDatePicker/OutlinedDatePicker.vue.d.ts +9 -0
  10. package/dist/components/OutlinedDateTimePicker/OutlinedDateTimePicker.types.d.ts +3 -0
  11. package/dist/components/OutlinedDateTimePicker/OutlinedDateTimePicker.vue.d.ts +9 -0
  12. package/dist/components/OutlinedInput/OutlinedInput.types.d.ts +3 -0
  13. package/dist/components/OutlinedInput/OutlinedInput.vue.d.ts +9 -0
  14. package/dist/components/OutlinedSelect/OutlinedSelect.types.d.ts +3 -0
  15. package/dist/components/OutlinedSelect/OutlinedSelect.vue.d.ts +9 -0
  16. package/dist/components/OutlinedTimePicker/OutlinedTimePicker.types.d.ts +3 -0
  17. package/dist/components/OutlinedTimePicker/OutlinedTimePicker.vue.d.ts +9 -0
  18. package/dist/components/OutlinedTreeSelect/OutlinedTreeSelect.types.d.ts +3 -0
  19. package/dist/components/OutlinedTreeSelect/OutlinedTreeSelect.vue.d.ts +9 -0
  20. package/dist/components/SvgIcon/SvgIcon.types.d.ts +6 -0
  21. package/dist/components/SvgIcon/SvgIcon.vue.d.ts +32 -0
  22. package/dist/components/SvgIcon/index.d.ts +3 -0
  23. package/dist/index.cjs +5 -5
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.js +1114 -241
  26. package/dist/style.css +1 -1
  27. package/package.json +1 -1
  28. package/src/components/BaseTable/BaseTable.types.ts +19 -2
  29. package/src/components/BaseTable/BaseTable.vue +1089 -105
  30. package/src/components/BaseTable/README.md +88 -5
  31. package/src/components/BaseTable/index.ts +5 -0
  32. package/src/components/OutlinedCascader/OutlinedCascader.types.ts +3 -0
  33. package/src/components/OutlinedCascader/OutlinedCascader.vue +71 -6
  34. package/src/components/OutlinedCascader/README.md +3 -0
  35. package/src/components/OutlinedDatePicker/OutlinedDatePicker.types.ts +3 -0
  36. package/src/components/OutlinedDatePicker/OutlinedDatePicker.vue +71 -6
  37. package/src/components/OutlinedDatePicker/README.md +3 -0
  38. package/src/components/OutlinedDateTimePicker/OutlinedDateTimePicker.types.ts +3 -0
  39. package/src/components/OutlinedDateTimePicker/OutlinedDateTimePicker.vue +144 -64
  40. package/src/components/OutlinedDateTimePicker/README.md +3 -0
  41. package/src/components/OutlinedInput/OutlinedInput.types.ts +3 -0
  42. package/src/components/OutlinedInput/OutlinedInput.vue +87 -8
  43. package/src/components/OutlinedInput/README.md +3 -0
  44. package/src/components/OutlinedSelect/OutlinedSelect.types.ts +3 -0
  45. package/src/components/OutlinedSelect/OutlinedSelect.vue +72 -6
  46. package/src/components/OutlinedSelect/README.md +3 -0
  47. package/src/components/OutlinedTimePicker/OutlinedTimePicker.types.ts +3 -0
  48. package/src/components/OutlinedTimePicker/OutlinedTimePicker.vue +75 -8
  49. package/src/components/OutlinedTimePicker/README.md +3 -0
  50. package/src/components/OutlinedTreeSelect/OutlinedTreeSelect.types.ts +3 -0
  51. package/src/components/OutlinedTreeSelect/OutlinedTreeSelect.vue +72 -6
  52. package/src/components/OutlinedTreeSelect/README.md +3 -0
  53. package/src/components/SvgIcon/README.md +53 -0
  54. package/src/components/SvgIcon/SvgIcon.types.ts +6 -0
  55. package/src/components/SvgIcon/SvgIcon.vue +68 -0
  56. package/src/components/SvgIcon/index.ts +5 -0
  57. package/src/index.ts +2 -0
@@ -12,14 +12,15 @@
12
12
  :is-range="isRange"
13
13
  :format="format"
14
14
  :value-format="resolvedValueFormat"
15
- :placeholder="placeholder"
16
- :start-placeholder="startPlaceholder"
17
- :end-placeholder="endPlaceholder"
15
+ :placeholder="controlPlaceholder"
16
+ :start-placeholder="controlStartPlaceholder"
17
+ :end-placeholder="controlEndPlaceholder"
18
18
  :range-separator="rangeSeparator"
19
19
  :disabled="disabled"
20
20
  :clearable="clearable"
21
21
  :arrow-control="arrowControl"
22
22
  :style="pickerStyle"
23
+ :aria-invalid="hasError ? 'true' : undefined"
23
24
  @update:model-value="handleModelValueUpdate"
24
25
  @focus="handleFocus"
25
26
  @blur="handleBlur"
@@ -33,8 +34,19 @@
33
34
  class="outlined-time-picker__label"
34
35
  :class="labelClasses"
35
36
  >
36
- {{ floatingLabel }}
37
+ <span
38
+ v-if="required"
39
+ class="outlined-time-picker__required"
40
+ >*</span>
41
+ <span>{{ floatingLabel }}</span>
37
42
  </div>
43
+
44
+ <p
45
+ v-if="hasError"
46
+ class="outlined-time-picker__error"
47
+ >
48
+ {{ resolvedErrorMessage }}
49
+ </p>
38
50
  </div>
39
51
  </template>
40
52
 
@@ -68,7 +80,10 @@ const props = withDefaults(defineProps<OutlinedTimePickerProps>(), {
68
80
  inputHeight: 40,
69
81
  isBorder: false,
70
82
  marginBottom: 20,
71
- paddingTop: 20
83
+ paddingTop: 20,
84
+ required: false,
85
+ error: false,
86
+ errorMessage: ''
72
87
  })
73
88
 
74
89
  const emit = defineEmits<{
@@ -106,7 +121,8 @@ const pickerAttrs = computed(() => {
106
121
  })
107
122
 
108
123
  const containerClasses = computed(() => ({
109
- 'outlined-time-picker--bordered': props.isBorder
124
+ 'outlined-time-picker--bordered': props.isBorder,
125
+ 'outlined-time-picker--error': hasError.value
110
126
  }))
111
127
 
112
128
  const containerStyle = computed(() => ({
@@ -119,6 +135,11 @@ const pickerStyle = computed(() => ({
119
135
  }))
120
136
 
121
137
  const floatingLabel = computed(() => props.label || props.placeholder || '')
138
+ const controlPlaceholder = computed(() => addRequiredMark(props.placeholder))
139
+ const controlStartPlaceholder = computed(() => addRequiredMark(props.startPlaceholder))
140
+ const controlEndPlaceholder = computed(() => addRequiredMark(props.endPlaceholder))
141
+ const hasError = computed(() => Boolean(props.error))
142
+ const resolvedErrorMessage = computed(() => props.errorMessage || createRequiredMessage(floatingLabel.value))
122
143
 
123
144
  const hasContent = computed(() => {
124
145
  if (Array.isArray(pickerValue.value)) {
@@ -210,6 +231,18 @@ function toCssValue(value: OutlinedTimePickerCssValue | undefined) {
210
231
  return value
211
232
  }
212
233
 
234
+ function addRequiredMark(value: string) {
235
+ if (!props.required || !value || value.startsWith('*')) {
236
+ return value
237
+ }
238
+
239
+ return `*${value}`
240
+ }
241
+
242
+ function createRequiredMessage(label: string) {
243
+ return label ? `${label}为必填项` : '该项为必填项'
244
+ }
245
+
213
246
  defineExpose<OutlinedTimePickerExpose>({
214
247
  focus: () => {
215
248
  pickerRef.value?.focus?.()
@@ -242,6 +275,9 @@ defineExpose<OutlinedTimePickerExpose>({
242
275
  .outlined-time-picker__label {
243
276
  position: absolute;
244
277
  left: -2px;
278
+ display: inline-flex;
279
+ align-items: center;
280
+ gap: 2px;
245
281
  padding: 2px 5px;
246
282
  border-radius: 2px;
247
283
  background-color: #ffffff;
@@ -271,6 +307,23 @@ defineExpose<OutlinedTimePickerExpose>({
271
307
  color: var(--el-text-color-regular);
272
308
  }
273
309
 
310
+ .outlined-time-picker--error {
311
+ --el-input-focus-border-color: var(--el-color-danger);
312
+ --el-input-hover-border-color: var(--el-color-danger);
313
+ }
314
+
315
+ .outlined-time-picker__required,
316
+ .outlined-time-picker--error .outlined-time-picker__label,
317
+ .outlined-time-picker__error {
318
+ color: var(--el-color-danger);
319
+ }
320
+
321
+ .outlined-time-picker__error {
322
+ margin: 6px 0 0;
323
+ font-size: 12px;
324
+ line-height: 1.2;
325
+ }
326
+
274
327
  :deep(.outlined-time-picker__control.el-date-editor) {
275
328
  width: 100%;
276
329
  }
@@ -291,13 +344,27 @@ defineExpose<OutlinedTimePickerExpose>({
291
344
  right: 30px;
292
345
  }
293
346
 
294
- :deep(.outlined-time-picker--bordered .el-input__wrapper) {
347
+ .outlined-time-picker--bordered :deep(.el-input__wrapper) {
295
348
  box-shadow: none;
296
349
  border-radius: 0;
297
350
  border-bottom: 1px solid #cccccc;
298
351
  }
299
352
 
300
- :deep(.outlined-time-picker--bordered .el-input__wrapper.is-focus) {
353
+ .outlined-time-picker--bordered :deep(.el-input__wrapper.is-focus) {
301
354
  border-bottom-color: var(--el-color-primary);
302
355
  }
356
+
357
+ .outlined-time-picker--error :deep(.el-input__wrapper) {
358
+ box-shadow: 0 0 0 1px var(--el-color-danger) inset;
359
+ }
360
+
361
+ .outlined-time-picker--error :deep(.el-input__wrapper.is-focus),
362
+ .outlined-time-picker--error :deep(.el-input__wrapper:hover) {
363
+ box-shadow: 0 0 0 1px var(--el-color-danger) inset;
364
+ }
365
+
366
+ .outlined-time-picker--error.outlined-time-picker--bordered :deep(.el-input__wrapper) {
367
+ box-shadow: 0 0 0 1px var(--el-color-danger) inset;
368
+ border-bottom-color: transparent;
369
+ }
303
370
  </style>
@@ -49,6 +49,9 @@ const periodRange = ref<string[]>([])
49
49
  | `value` | `string \| number \| Date \| Array<string \| number \| Date> \| null` | `''` | `v-model:value` 绑定值 |
50
50
  | `placeholder` | `string` | `''` | 单值模式占位文案,也会作为浮动标签文案 |
51
51
  | `label` | `string` | `''` | 自定义浮动标签文案,优先级高于 `placeholder` |
52
+ | `required` | `boolean` | `false` | 是否显示必填星号 |
53
+ | `error` | `boolean` | `false` | 是否显示错误态,开启后时间框变红并展示错误文案 |
54
+ | `errorMessage` | `string` | `''` | 错误文案,未传时默认使用“字段名为必填项” |
52
55
  | `disabled` | `boolean` | `false` | 是否禁用 |
53
56
  | `clearable` | `boolean` | `true` | 是否允许清空 |
54
57
  | `isRange` | `boolean` | `false` | 是否启用时间范围模式 |
@@ -46,6 +46,9 @@ export interface OutlinedTreeSelectProps {
46
46
  isBorder?: boolean
47
47
  marginBottom?: OutlinedTreeSelectCssValue
48
48
  paddingTop?: OutlinedTreeSelectCssValue
49
+ required?: boolean
50
+ error?: boolean
51
+ errorMessage?: string
49
52
  }
50
53
 
51
54
  export interface OutlinedTreeSelectExpose {
@@ -11,7 +11,7 @@
11
11
  :model-value="treeSelectValue"
12
12
  :data="data"
13
13
  :props="resolvedTreeProps"
14
- :placeholder="placeholder"
14
+ :placeholder="controlPlaceholder"
15
15
  :disabled="disabled"
16
16
  :clearable="clearable"
17
17
  :filterable="filterable"
@@ -28,6 +28,7 @@
28
28
  :popper-class="popperClass"
29
29
  :node-key="nodeKey"
30
30
  :style="treeSelectStyle"
31
+ :aria-invalid="hasError ? 'true' : undefined"
31
32
  @update:model-value="handleModelValueUpdate"
32
33
  @focus="handleFocus"
33
34
  @blur="handleBlur"
@@ -53,8 +54,19 @@
53
54
  class="outlined-tree-select__label"
54
55
  :class="labelClasses"
55
56
  >
56
- {{ floatingLabel }}
57
+ <span
58
+ v-if="required"
59
+ class="outlined-tree-select__required"
60
+ >*</span>
61
+ <span>{{ floatingLabel }}</span>
57
62
  </div>
63
+
64
+ <p
65
+ v-if="hasError"
66
+ class="outlined-tree-select__error"
67
+ >
68
+ {{ resolvedErrorMessage }}
69
+ </p>
58
70
  </div>
59
71
  </template>
60
72
 
@@ -101,7 +113,10 @@ const props = withDefaults(defineProps<OutlinedTreeSelectProps>(), {
101
113
  inputHeight: 40,
102
114
  isBorder: false,
103
115
  marginBottom: 20,
104
- paddingTop: 20
116
+ paddingTop: 20,
117
+ required: false,
118
+ error: false,
119
+ errorMessage: ''
105
120
  })
106
121
 
107
122
  const emit = defineEmits<{
@@ -138,7 +153,8 @@ const treeSelectAttrs = computed(() => {
138
153
  })
139
154
 
140
155
  const containerClasses = computed(() => ({
141
- 'outlined-tree-select--bordered': props.isBorder
156
+ 'outlined-tree-select--bordered': props.isBorder,
157
+ 'outlined-tree-select--error': hasError.value
142
158
  }))
143
159
 
144
160
  const containerStyle = computed(() => ({
@@ -165,6 +181,9 @@ const resolvedTreeProps = computed(() => {
165
181
  })
166
182
 
167
183
  const floatingLabel = computed(() => props.label || props.placeholder || '')
184
+ const controlPlaceholder = computed(() => addRequiredMark(props.placeholder))
185
+ const hasError = computed(() => Boolean(props.error))
186
+ const resolvedErrorMessage = computed(() => props.errorMessage || createRequiredMessage(floatingLabel.value))
168
187
 
169
188
  const hasContent = computed(() => {
170
189
  if (isArrayMode()) {
@@ -263,6 +282,18 @@ function toCssValue(value: OutlinedTreeSelectCssValue | undefined) {
263
282
  return value
264
283
  }
265
284
 
285
+ function addRequiredMark(value: string) {
286
+ if (!props.required || !value || value.startsWith('*')) {
287
+ return value
288
+ }
289
+
290
+ return `*${value}`
291
+ }
292
+
293
+ function createRequiredMessage(label: string) {
294
+ return label ? `${label}为必填项` : '该项为必填项'
295
+ }
296
+
266
297
  defineExpose<OutlinedTreeSelectExpose>({
267
298
  focus: () => {
268
299
  treeSelectRef.value?.focus?.()
@@ -296,6 +327,9 @@ defineExpose<OutlinedTreeSelectExpose>({
296
327
  .outlined-tree-select__label {
297
328
  position: absolute;
298
329
  left: -2px;
330
+ display: inline-flex;
331
+ align-items: center;
332
+ gap: 2px;
299
333
  padding: 2px 5px;
300
334
  border-radius: 2px;
301
335
  background-color: #ffffff;
@@ -325,6 +359,23 @@ defineExpose<OutlinedTreeSelectExpose>({
325
359
  color: var(--el-text-color-regular);
326
360
  }
327
361
 
362
+ .outlined-tree-select--error {
363
+ --el-input-focus-border-color: var(--el-color-danger);
364
+ --el-input-hover-border-color: var(--el-color-danger);
365
+ }
366
+
367
+ .outlined-tree-select__required,
368
+ .outlined-tree-select--error .outlined-tree-select__label,
369
+ .outlined-tree-select__error {
370
+ color: var(--el-color-danger);
371
+ }
372
+
373
+ .outlined-tree-select__error {
374
+ margin: 6px 0 0;
375
+ font-size: 12px;
376
+ line-height: 1.2;
377
+ }
378
+
328
379
  :deep(.outlined-tree-select__control.el-select) {
329
380
  width: 100%;
330
381
  }
@@ -342,13 +393,28 @@ defineExpose<OutlinedTreeSelectExpose>({
342
393
  padding-top: 4px;
343
394
  }
344
395
 
345
- :deep(.outlined-tree-select--bordered .el-select__wrapper) {
396
+ .outlined-tree-select--bordered :deep(.el-select__wrapper) {
346
397
  box-shadow: none;
347
398
  border-radius: 0;
348
399
  border-bottom: 1px solid #cccccc;
349
400
  }
350
401
 
351
- :deep(.outlined-tree-select--bordered .el-select__wrapper.is-focused) {
402
+ .outlined-tree-select--bordered :deep(.el-select__wrapper.is-focused) {
352
403
  border-bottom-color: var(--el-color-primary);
353
404
  }
405
+
406
+ .outlined-tree-select--error :deep(.el-select__wrapper) {
407
+ box-shadow: 0 0 0 1px var(--el-color-danger) inset;
408
+ }
409
+
410
+ .outlined-tree-select--error :deep(.el-select__wrapper.is-focused),
411
+ .outlined-tree-select--error :deep(.el-select__wrapper.is-focus),
412
+ .outlined-tree-select--error :deep(.el-select__wrapper:hover) {
413
+ box-shadow: 0 0 0 1px var(--el-color-danger) inset;
414
+ }
415
+
416
+ .outlined-tree-select--error.outlined-tree-select--bordered :deep(.el-select__wrapper) {
417
+ box-shadow: 0 0 0 1px var(--el-color-danger) inset;
418
+ border-bottom-color: transparent;
419
+ }
354
420
  </style>
@@ -55,6 +55,9 @@ const treeData = [
55
55
  | `propsValue` | `Record<string, unknown>` | `undefined` | 透传给 `el-tree-select` 的 `props` |
56
56
  | `placeholder` | `string` | `''` | 占位文案,也会作为浮动标签文案 |
57
57
  | `label` | `string` | `''` | 自定义浮动标签文案,优先级高于 `placeholder` |
58
+ | `required` | `boolean` | `false` | 是否显示必填星号 |
59
+ | `error` | `boolean` | `false` | 是否显示错误态,开启后树选择框变红并展示错误文案 |
60
+ | `errorMessage` | `string` | `''` | 错误文案,未传时默认使用“字段名为必填项” |
58
61
  | `disabled` | `boolean` | `false` | 是否禁用 |
59
62
  | `clearable` | `boolean` | `true` | 是否允许清空 |
60
63
  | `filterable` | `boolean` | `true` | 是否允许搜索 |
@@ -0,0 +1,53 @@
1
+ # SvgIcon
2
+
3
+ `SvgIcon` 用来展示 SVG symbol sprite 或外链 SVG,兼容旧项目里 `<svg-icon icon-class="xxx" class-name="xxx" />` 的写法。
4
+
5
+ ## 解决的问题
6
+
7
+ - 统一 SVG 图标展示入口
8
+ - 支持 `#icon-xxx` 形式的 symbol 引用
9
+ - 支持 http、data、blob 等外链 SVG 通过 mask 渲染为 `currentColor`
10
+ - 自动去掉 `iconClass` 首尾空格,兼容旧模板里误带空格的图标名
11
+
12
+ ## 基础用法
13
+
14
+ ```vue
15
+ <template>
16
+ <SvgIcon
17
+ icon-class="filter"
18
+ class-name="table-search-icon"
19
+ />
20
+ </template>
21
+
22
+ <script setup lang="ts">
23
+ import { SvgIcon } from '@hbdlzy/ui-core'
24
+ </script>
25
+ ```
26
+
27
+ 上面的写法会渲染 `<use href="#icon-filter" />`。页面或项目需要自行通过 SVG sprite 注入 `symbol id="icon-filter"`。
28
+
29
+ ## 外链 SVG
30
+
31
+ ```vue
32
+ <template>
33
+ <SvgIcon
34
+ :icon-class="externalSvgUrl"
35
+ class-name="status-icon"
36
+ />
37
+ </template>
38
+ ```
39
+
40
+ 外链模式会使用 CSS mask 渲染,图标颜色继承父级 `color`。
41
+
42
+ ## Props
43
+
44
+ - `iconClass`: 图标名或外链 SVG 地址,必填
45
+ - `className`: 追加到根节点的类名
46
+ - `prefix`: symbol 前缀,默认 `icon`,最终引用为 `#${prefix}-${iconClass}`
47
+ - `ariaLabel`: 无障碍标签,未传时图标默认 `aria-hidden="true"`
48
+
49
+ ## 推荐约定
50
+
51
+ - symbol sprite 的 id 统一使用 `icon-xxx`
52
+ - 需要调色时通过父级或 `className` 设置 `color`
53
+ - 业务项目如果已经有 `svg-sprite-loader` 或 Vite SVG sprite 插件,可继续复用原有注入方式
@@ -0,0 +1,6 @@
1
+ export interface SvgIconProps {
2
+ iconClass: string
3
+ className?: string
4
+ prefix?: string
5
+ ariaLabel?: string
6
+ }
@@ -0,0 +1,68 @@
1
+ <template>
2
+ <span
3
+ v-if="isExternal"
4
+ class="svg-external-icon svg-icon"
5
+ :class="className"
6
+ :style="externalIconStyle"
7
+ :aria-hidden="ariaHidden"
8
+ :aria-label="ariaLabel"
9
+ role="img"
10
+ />
11
+ <svg
12
+ v-else
13
+ class="svg-icon"
14
+ :class="className"
15
+ :aria-hidden="ariaHidden"
16
+ :aria-label="ariaLabel"
17
+ role="img"
18
+ >
19
+ <use
20
+ :href="iconName"
21
+ :xlink:href="iconName"
22
+ />
23
+ </svg>
24
+ </template>
25
+
26
+ <script setup lang="ts">
27
+ import { computed } from 'vue'
28
+ import type { CSSProperties } from 'vue'
29
+ import type { SvgIconProps } from './SvgIcon.types'
30
+
31
+ defineOptions({
32
+ name: 'SvgIcon'
33
+ })
34
+
35
+ const props = withDefaults(defineProps<SvgIconProps>(), {
36
+ className: '',
37
+ prefix: 'icon',
38
+ ariaLabel: ''
39
+ })
40
+
41
+ const normalizedIconClass = computed(() => props.iconClass.trim())
42
+ const normalizedPrefix = computed(() => props.prefix.trim() || 'icon')
43
+ const isExternal = computed(() => /^(https?:|mailto:|tel:|data:|blob:)/.test(normalizedIconClass.value))
44
+ const iconName = computed(() => `#${normalizedPrefix.value}-${normalizedIconClass.value}`)
45
+ const ariaHidden = computed(() => props.ariaLabel ? undefined : 'true')
46
+
47
+ const externalIconStyle = computed<CSSProperties>(() => ({
48
+ mask: `url(${normalizedIconClass.value}) no-repeat 50% 50%`,
49
+ WebkitMask: `url(${normalizedIconClass.value}) no-repeat 50% 50%`
50
+ }))
51
+ </script>
52
+
53
+ <style scoped>
54
+ .svg-icon {
55
+ width: 1em;
56
+ height: 1em;
57
+ vertical-align: -0.15em;
58
+ fill: currentColor;
59
+ overflow: hidden;
60
+ }
61
+
62
+ .svg-external-icon {
63
+ display: inline-block;
64
+ background-color: currentColor;
65
+ mask-size: cover !important;
66
+ -webkit-mask-size: cover !important;
67
+ }
68
+ </style>
@@ -0,0 +1,5 @@
1
+ import SvgIcon from './SvgIcon.vue'
2
+
3
+ export default SvgIcon
4
+
5
+ export type { SvgIconProps } from './SvgIcon.types'
package/src/index.ts CHANGED
@@ -19,6 +19,8 @@ export { default as BaseEChart } from './components/BaseEChart'
19
19
  export * from './components/BaseEChart'
20
20
  export { default as BaseExportButton } from './components/BaseExportButton'
21
21
  export * from './components/BaseExportButton'
22
+ export { default as SvgIcon } from './components/SvgIcon'
23
+ export * from './components/SvgIcon'
22
24
  export { default as OutlinedInput } from './components/OutlinedInput'
23
25
  export * from './components/OutlinedInput'
24
26
  export { default as OutlinedSelect } from './components/OutlinedSelect'