dlzn-ui 1.4.0 → 1.7.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.
@@ -1,2 +1,2 @@
1
- export { default as Button } from './src/button.vue';
2
1
  export * from './src/button';
2
+ export { default as Button } from './src/button.vue';
@@ -1,28 +1,28 @@
1
1
  import { ExtractPropTypes } from 'vue';
2
2
  export declare const buttonProps: {
3
- type: {
4
- type: StringConstructor;
3
+ circle: {
4
+ default: boolean;
5
+ type: BooleanConstructor;
6
+ };
7
+ disabled: {
8
+ default: boolean;
9
+ type: BooleanConstructor;
10
+ };
11
+ icon: {
5
12
  default: string;
13
+ type: StringConstructor;
6
14
  };
7
15
  plain: {
8
- type: BooleanConstructor;
9
16
  default: boolean;
17
+ type: BooleanConstructor;
10
18
  };
11
19
  round: {
12
- type: BooleanConstructor;
13
20
  default: boolean;
14
- };
15
- circle: {
16
21
  type: BooleanConstructor;
17
- default: boolean;
18
22
  };
19
- disabled: {
20
- type: BooleanConstructor;
21
- default: boolean;
22
- };
23
- icon: {
24
- type: StringConstructor;
23
+ type: {
25
24
  default: string;
25
+ type: StringConstructor;
26
26
  };
27
27
  };
28
28
  export type ButtonProps = ExtractPropTypes<typeof buttonProps>;
@@ -1,28 +1,28 @@
1
1
  //#region src/components/button/src/button.ts
2
2
  var e = {
3
- type: {
4
- type: String,
5
- default: "default"
6
- },
7
- plain: {
8
- type: Boolean,
9
- default: !1
10
- },
11
- round: {
12
- type: Boolean,
13
- default: !1
14
- },
15
3
  circle: {
16
- type: Boolean,
17
- default: !1
4
+ default: !1,
5
+ type: Boolean
18
6
  },
19
7
  disabled: {
20
- type: Boolean,
21
- default: !1
8
+ default: !1,
9
+ type: Boolean
22
10
  },
23
11
  icon: {
24
- type: String,
25
- default: ""
12
+ default: "",
13
+ type: String
14
+ },
15
+ plain: {
16
+ default: !1,
17
+ type: Boolean
18
+ },
19
+ round: {
20
+ default: !1,
21
+ type: Boolean
22
+ },
23
+ type: {
24
+ default: "default",
25
+ type: String
26
26
  }
27
27
  };
28
28
  //#endregion
@@ -2,64 +2,64 @@ import { DefineComponent, ExtractPropTypes, ComponentOptionsMixin, PublicProps,
2
2
  declare const _default: typeof __VLS_export;
3
3
  export default _default;
4
4
  declare const __VLS_export: DefineComponent<ExtractPropTypes<{
5
- type: {
6
- type: StringConstructor;
5
+ circle: {
6
+ default: boolean;
7
+ type: BooleanConstructor;
8
+ };
9
+ disabled: {
10
+ default: boolean;
11
+ type: BooleanConstructor;
12
+ };
13
+ icon: {
7
14
  default: string;
15
+ type: StringConstructor;
8
16
  };
9
17
  plain: {
10
- type: BooleanConstructor;
11
18
  default: boolean;
19
+ type: BooleanConstructor;
12
20
  };
13
21
  round: {
14
- type: BooleanConstructor;
15
22
  default: boolean;
23
+ type: BooleanConstructor;
16
24
  };
25
+ type: {
26
+ default: string;
27
+ type: StringConstructor;
28
+ };
29
+ }>, {
30
+ clickHandle: (e: Event) => void;
31
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "click"[], "click", PublicProps, Readonly< ExtractPropTypes<{
17
32
  circle: {
18
- type: BooleanConstructor;
19
33
  default: boolean;
34
+ type: BooleanConstructor;
20
35
  };
21
36
  disabled: {
22
- type: BooleanConstructor;
23
37
  default: boolean;
38
+ type: BooleanConstructor;
24
39
  };
25
40
  icon: {
26
- type: StringConstructor;
27
41
  default: string;
28
- };
29
- }>, {
30
- clickHandle: (e: Event) => void;
31
- }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "click"[], "click", PublicProps, Readonly< ExtractPropTypes<{
32
- type: {
33
42
  type: StringConstructor;
34
- default: string;
35
43
  };
36
44
  plain: {
37
- type: BooleanConstructor;
38
45
  default: boolean;
46
+ type: BooleanConstructor;
39
47
  };
40
48
  round: {
41
- type: BooleanConstructor;
42
49
  default: boolean;
43
- };
44
- circle: {
45
50
  type: BooleanConstructor;
46
- default: boolean;
47
51
  };
48
- disabled: {
49
- type: BooleanConstructor;
50
- default: boolean;
51
- };
52
- icon: {
53
- type: StringConstructor;
52
+ type: {
54
53
  default: string;
54
+ type: StringConstructor;
55
55
  };
56
56
  }>> & Readonly<{
57
57
  onClick?: ((...args: any[]) => any) | undefined;
58
58
  }>, {
59
- type: string;
60
- plain: boolean;
61
- round: boolean;
62
59
  circle: boolean;
63
60
  disabled: boolean;
64
61
  icon: string;
62
+ plain: boolean;
63
+ round: boolean;
64
+ type: string;
65
65
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
@@ -2,9 +2,9 @@ import { buttonProps as e } from "./button.mjs";
2
2
  import { defineComponent as t } from "vue";
3
3
  //#region src/components/button/src/button.vue?vue&type=script&lang.ts
4
4
  var n = t({
5
+ emits: ["click"],
5
6
  name: "DuyiButton",
6
7
  props: e,
7
- emits: ["click"],
8
8
  setup(e, { emit: t }) {
9
9
  function n(e) {
10
10
  t("click", e);
@@ -0,0 +1 @@
1
+ .duyi-button[data-v-4046b257]{color:#606266;cursor:pointer;background-color:#fff;border:1px solid #dcdfe6;border-radius:4px;justify-content:center;align-items:center;padding:8px 16px;font-size:14px;line-height:1;display:inline-flex}.duyi-button[data-v-4046b257]:hover{color:#409eff;border-color:#c6e2ff}.duyi-button.is-disabled[data-v-4046b257],.duyi-button[data-v-4046b257]:disabled{cursor:not-allowed;opacity:.6}.duyi-button.is-round[data-v-4046b257]{border-radius:20px}.duyi-button.is-circle[data-v-4046b257]{border-radius:50%;padding:8px}.duyi-button-primary[data-v-4046b257]{color:#fff;background-color:#409eff;border-color:#409eff}.duyi-button-primary[data-v-4046b257]:hover{color:#fff;background-color:#66b1ff;border-color:#66b1ff}
@@ -1,5 +1,5 @@
1
1
  import e from "./button.vue_vue_type_script_lang.mjs";
2
- import './button.vue_vue_type_style_index_0_scoped_e7952805_lang.css';/* empty css */
2
+ import './button.vue_vue_type_style_index_0_scoped_4046b257_lang.css';/* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
4
  import { createCommentVNode as n, createElementBlock as r, normalizeClass as i, openBlock as a, renderSlot as o } from "vue";
5
5
  //#region src/components/button/src/button.vue
@@ -19,6 +19,6 @@ function l(e, t, l, u, d, f) {
19
19
  class: i(`duyi-icon-${e.icon}`)
20
20
  }, null, 2)) : n("", !0), e.$slots.default ? (a(), r("span", c, [o(e.$slots, "default", {}, void 0, !0)])) : n("", !0)], 10, s);
21
21
  }
22
- var u = /*#__PURE__*/ t(e, [["render", l], ["__scopeId", "data-v-e7952805"]]);
22
+ var u = /*#__PURE__*/ t(e, [["render", l], ["__scopeId", "data-v-4046b257"]]);
23
23
  //#endregion
24
24
  export { u as default };
@@ -0,0 +1,207 @@
1
+ import antfu, { perfectionist as perfectionistConfigFn } from '@antfu/eslint-config'
2
+ import perfectionist from 'eslint-plugin-perfectionist'
3
+ import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'
4
+ import prettierOptions from './prettier.config.mjs'
5
+
6
+ const perfectionistConfig = await perfectionistConfigFn({})
7
+ /** @type {import('eslint').Linter.Config[]} */
8
+ const eslintConfig = await antfu(
9
+ {
10
+ formatters: {
11
+ // 都默认开启了
12
+ css: true, // 与 stylelint 一起
13
+ html: true,
14
+ markdown: true, // 使用 prettier 格式化 markdown 文件,搭配 davidAnson.vscode-markdownlint 插件一起使用
15
+ prettierOptions: {
16
+ ...prettierOptions,
17
+ xmlQuoteAttributes: 'preserve',
18
+ xmlSelfClosingSpace: true, // 在自闭合标签之间添加空格
19
+ xmlSortAttributesByKey: true, // 按属性键排序XML元素
20
+ xmlWhitespaceSensitivity: 'ignore', // 对XML全局空白敏感
21
+ }, // 配置 prettier 的配置,这里不会读 ignorePath 这个配置,否则 ignorePath 里面配置的文件都不会被 prettier 格式化了
22
+ svg: true,
23
+ xml: true,
24
+ },
25
+ // `.eslintignore` is no longer supported in Flat config, use `ignores` instead
26
+ // GLOB_EXCLUDE 已经包括了大部分的忽略文件,遵守 gitignore 规则
27
+ ignores: ['folder-alias.json', 'src/plugins/echarts/china.json', 'src/layout/vueBits/**/*.vue'],
28
+ jsonc: {
29
+ overrides: {
30
+ 'jsonc/sort-array-values': [
31
+ 'error',
32
+ {
33
+ minValues: 2,
34
+ order: {
35
+ caseSensitive: true,
36
+ natural: true,
37
+ type: 'asc',
38
+ },
39
+ pathPattern: '.*',
40
+ },
41
+ ],
42
+ 'jsonc/sort-keys': [
43
+ 'error',
44
+ 'asc',
45
+ {
46
+ allowLineSeparatedGroups: false,
47
+ caseSensitive: true,
48
+ minKeys: 2,
49
+ natural: true,
50
+ },
51
+ ],
52
+ },
53
+ },
54
+ // jsonc: true, // 配合 vscode.json-language-features 一起使用 (默认为true) [jsonc: true 排序, vscode.json-language-features 截断好一点]
55
+ // 1、 Enable linting for **code snippets** in Markdown.
56
+ // 2. 也会把上面的 formatters.markdown 设置为true
57
+ // 3. 默认为true
58
+ // 4. 这里设置为false 是因为 现在格式化错误 https://github.com/antfu/eslint-config/discussions/851
59
+ markdown: false,
60
+ perfectionist: true,
61
+ // https://eslint.style/packages/default#rules
62
+ stylistic: {
63
+ indent: 2,
64
+ jsx: true,
65
+ overrides: {
66
+ 'style/padding-line-between-statements': [
67
+ 'error',
68
+ { blankLine: 'never', next: '*', prev: '*' },
69
+ {
70
+ blankLine: 'always',
71
+ next: '*',
72
+ prev: [
73
+ 'import',
74
+ 'export',
75
+ 'class',
76
+ 'function',
77
+ 'multiline-block-like',
78
+ 'const',
79
+ 'let',
80
+ 'var',
81
+ ],
82
+ },
83
+ {
84
+ blankLine: 'always',
85
+ next: ['export', 'class', 'function', 'multiline-block-like', 'const', 'let', 'var'],
86
+ prev: '*',
87
+ },
88
+ { blankLine: 'never', next: 'import', prev: 'import' },
89
+ { blankLine: 'never', next: 'export', prev: 'export' },
90
+ {
91
+ blankLine: 'never',
92
+ next: ['const', 'let', 'var'],
93
+ prev: ['const', 'let', 'var'],
94
+ },
95
+ ],
96
+ },
97
+ quotes: 'single',
98
+ semi: false,
99
+ },
100
+ // https://typescript-eslint.io/rules/
101
+ typescript: {
102
+ // other rules
103
+ overrides: {
104
+ 'prefer-promise-reject-errors': 'off',
105
+ },
106
+ // type checked rules
107
+ overridesTypeAware: {
108
+ 'ts/no-floating-promises': 'off',
109
+ 'ts/no-unsafe-assignment': 'off',
110
+ 'ts/promise-function-async': 'off',
111
+ 'ts/strict-boolean-expressions': [
112
+ 'error',
113
+ {
114
+ allowAny: false,
115
+ allowNullableBoolean: true,
116
+ allowNullableEnum: false,
117
+ allowNullableNumber: false,
118
+ allowNullableObject: false,
119
+ allowNullableString: true,
120
+ allowNumber: false,
121
+ allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing: false,
122
+ allowString: true,
123
+ },
124
+ ],
125
+ 'ts/unbound-method': 'off',
126
+ },
127
+ tsconfigPath: 'tsconfig.json', // Linting with Type Information https://typescript-eslint.io/getting-started/typed-linting/
128
+ },
129
+ vue: {
130
+ overrides: {
131
+ 'vue/attributes-order': [
132
+ 'error',
133
+ {
134
+ alphabetical: true,
135
+ ignoreVBindObject: false,
136
+ order: [
137
+ 'DEFINITION',
138
+ 'LIST_RENDERING',
139
+ 'CONDITIONALS',
140
+ 'RENDER_MODIFIERS',
141
+ 'GLOBAL',
142
+ ['UNIQUE', 'SLOT'],
143
+ 'TWO_WAY_BINDING',
144
+ 'OTHER_DIRECTIVES',
145
+ 'OTHER_ATTR',
146
+ 'EVENTS',
147
+ 'CONTENT',
148
+ ],
149
+ sortLineLength: false,
150
+ },
151
+ ],
152
+ 'vue/component-name-in-template-casing': [
153
+ 'error',
154
+ 'PascalCase',
155
+ {
156
+ registeredComponentsOnly: false,
157
+ },
158
+ ], // 组件名必须为PascalCase
159
+ 'vue/html-self-closing': [
160
+ 'error',
161
+ {
162
+ html: {
163
+ component: 'never',
164
+ normal: 'never',
165
+ void: 'always', // 常见的 HTML 空元素 br, hr...
166
+ },
167
+ math: 'always',
168
+ svg: 'always',
169
+ },
170
+ ], // html标签不要自闭合
171
+ 'vue/padding-line-between-tags': ['error', [{ blankLine: 'never', next: '*', prev: '*' }]],
172
+ 'vue/prop-name-casing': [
173
+ 'error',
174
+ 'camelCase',
175
+ {
176
+ ignoreProps: ['/^onUpdate:*/'],
177
+ },
178
+ ],
179
+ 'vue/singleline-html-element-content-newline': 'off',
180
+ },
181
+ },
182
+ },
183
+ {
184
+ rules: {
185
+ 'e18e/ban-dependencies': [
186
+ 'error',
187
+ {
188
+ allowed: ['crypto-js'],
189
+ },
190
+ ],
191
+ 'no-console': 'off',
192
+ },
193
+ },
194
+ )
195
+ .override(perfectionistConfig[0].name, {
196
+ rules: {
197
+ ...perfectionist.configs['recommended-natural'].rules,
198
+ ...perfectionistConfig[0].rules,
199
+ },
200
+ })
201
+ .append({
202
+ ignores: ['**/*.md', '**/*.html', '**/*.xml', '**/*.svg', '**/*.jsonc'],
203
+ // https://github.com/prettier/eslint-plugin-prettier
204
+ ...eslintPluginPrettierRecommended,
205
+ })
206
+
207
+ export default eslintConfig
package/package.json CHANGED
@@ -1,24 +1,27 @@
1
1
  {
2
- "name": "dlzn-ui",
3
- "version": "1.4.0",
4
2
  "description": "",
5
- "keywords": [],
6
- "license": "MIT",
7
- "type": "module",
8
3
  "exports": {
9
4
  ".": {
10
- "types": "./index.d.ts",
11
- "import": "./index.mjs"
5
+ "import": "./index.mjs",
6
+ "types": "./index.d.ts"
7
+ },
8
+ "./const": {
9
+ "import": "./const/index.mjs",
10
+ "types": "./const/index.d.ts"
12
11
  },
12
+ "./eslint.config": "./eslint.config.mjs",
13
+ "./prettier.config": "./prettier.config.mjs",
14
+ "./stylelint.config": "./stylelint.config.mjs",
13
15
  "./utils": {
14
- "types": "./utils/index.d.ts",
15
- "import": "./utils/index.mjs"
16
+ "import": "./utils/index.mjs",
17
+ "types": "./utils/index.d.ts"
16
18
  }
17
19
  },
20
+ "keywords": [],
21
+ "license": "MIT",
22
+ "name": "dlzn-ui",
18
23
  "peerDependencies": {
19
24
  "@tsconfig/node-lts": "^24.0.0",
20
- "@types/crypto-js": "^4.2.2",
21
- "@types/file-saver": "^2.0.7",
22
25
  "@types/node": "^26.1.2",
23
26
  "@vitejs/plugin-vue": "^6.0.8",
24
27
  "@vue/tsconfig": "^0.9.1",
@@ -29,5 +32,7 @@
29
32
  },
30
33
  "sideEffects": [
31
34
  "**/*.css"
32
- ]
35
+ ],
36
+ "type": "module",
37
+ "version": "1.7.0"
33
38
  }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @description: https://prettier.io/docs/en/options
3
+ * @description: 还有些是 prettier-plugin-tailwindcss 的配置 https://github.com/tailwindlabs/prettier-plugin-tailwindcss
4
+ */
5
+ // @ts-check
6
+
7
+ /** @typedef {import('prettier').Config} Config */
8
+
9
+ /** @type {Config} */
10
+ export default {
11
+ $schema: 'https://json.schemastore.org/prettierrc',
12
+ arrowParens: 'always', // 单参数箭头函数参数周围使用圆括号-eg: (x) => x
13
+ bracketSameLine: false, // 会把多行的 HTML (包括 HTML、JSX、Vue 和 Angular) 元素的 `>` 放在最后一个属性的末尾,而不是另起一行(自闭合标签不受该选项控制)。
14
+ bracketSpacing: true, // 在对象前后添加空格-eg: { foo: bar }
15
+ embeddedLanguageFormatting: 'auto', // 控制嵌入的其他语言代码格式化。
16
+ endOfLine: 'lf', // 结束行形式
17
+ htmlWhitespaceSensitivity: 'css', // 对HTML全局空白不敏感
18
+ insertPragma: false, // 在已被preitter格式化的文件顶部加上标注
19
+ jsxSingleQuote: false, // jsx中使用单引号
20
+ plugins: ['prettier-plugin-tailwindcss'],
21
+ printWidth: 100, // 单行长度
22
+ proseWrap: 'preserve', // 保留原有的换行符,不进行任何修改
23
+ quoteProps: 'as-needed', // 仅在必需时为对象的key添加引号
24
+ requirePragma: false, // 无需顶部注释即可格式化
25
+ semi: false, // 句末使用分号
26
+ singleAttributePerLine: false, // 会在 HTML、JSX、Vue 和 Angular 中格式化为每个属性单独占一行。
27
+ singleQuote: true, // 使用单引号
28
+ tabWidth: 2, // 缩进长度
29
+ tailwindStylesheet: './src/assets/css/tailwindcss-entry.css',
30
+ trailingComma: 'all',
31
+ useTabs: false, // 使用空格代替tab缩进
32
+ vueIndentScriptAndStyle: false, // 不对vue中的script及style标签缩进
33
+ }
@@ -0,0 +1,62 @@
1
+ // [插件集合](https://stylelint.io/awesome-stylelint/)
2
+ // [stylelint 内置规则集](https://stylelint.io/user-guide/rules)
3
+ // 最新的版本去除了很多配置,比如缩进, 抛弃的规则 可在 @stylistic/stylelint-config(https://github.com/stylelint-stylistic/stylelint-config/blob/main/stylelint.config.js) 中找回
4
+ import defineConfig from 'stylelint-define-config'
5
+
6
+ export default defineConfig({
7
+ cache: true,
8
+ extends: [
9
+ '@stylistic/stylelint-config',
10
+ 'stylelint-config-standard',
11
+ 'stylelint-config-recess-order',
12
+ 'stylelint-config-recommended-vue', // 放最后一个 依赖 postcss-html
13
+ ],
14
+ // 格式化 md 文件中的 css 代码
15
+ overrides: [
16
+ {
17
+ customSyntax: 'postcss-markdown',
18
+ files: ['*.md', '**/*.md'],
19
+ },
20
+ {
21
+ files: ['src/plugins/element-plus/theme-chalk/**/*.css'],
22
+ rules: {
23
+ 'no-descending-specificity': null,
24
+ 'no-duplicate-selectors': null,
25
+ 'selector-class-pattern': null,
26
+ },
27
+ },
28
+ ],
29
+ plugins: ['stylelint-use-nesting'],
30
+ // null (to turn the rule off)
31
+ rules: {
32
+ '@stylistic/declaration-block-trailing-semicolon': null, // 与 prettier 保持一致
33
+ '@stylistic/declaration-colon-newline-after': null, // 与 prettier 保持一致
34
+ '@stylistic/declaration-colon-space-after': null, // 与 prettier 保持一致
35
+ '@stylistic/indentation': null, // 与 prettier 保持一致
36
+ '@stylistic/no-eol-whitespace': null, // 与 prettier 保持一致
37
+ '@stylistic/selector-combinator-space-before': null, // 与 prettier 保持一致
38
+ '@stylistic/string-quotes': null, // 与 prettier 保持一致
39
+ '@stylistic/value-list-comma-newline-after': null, // 与 prettier 保持一致
40
+ 'at-rule-no-unknown': [
41
+ true,
42
+ {
43
+ ignoreAtRules: ['theme'],
44
+ },
45
+ ],
46
+ 'csstools/use-nesting': [
47
+ 'always',
48
+ {
49
+ message: '尽量使用嵌套写法',
50
+ },
51
+ ],
52
+ 'import-notation': 'string', // TODO url 模式好像 tailwindcss 引入有问题
53
+ 'selector-class-pattern': [
54
+ '^(t-|el-|([a-zA-Z][a-zA-Z0-9_]*[a-zA-Z0-9])$)',
55
+ {
56
+ // disableFix: true, // disable autofix
57
+ message: '自定义 class 名称使用 snake_case',
58
+ },
59
+ ],
60
+ 'value-keyword-case': ['lower', { ignoreFunctions: ['v-bind'] }],
61
+ },
62
+ })
package/utils/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
+ export * from './number';
1
2
  export * from './string';
2
3
  export * from './tool';
3
- export * from './number';
package/utils/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { getFilenameFromUrl as e, queryStringToObject as t } from "./string.mjs";
2
- import { aesDecrypt as n, aesEncrypt as r, saveAs as i } from "./tool.mjs";
3
- import { formatSecondsToChinese as a } from "./number.mjs";
4
- export { n as aesDecrypt, r as aesEncrypt, a as formatSecondsToChinese, e as getFilenameFromUrl, t as queryStringToObject, i as saveAs };
1
+ import { formatSecondsToChinese as e } from "./number.mjs";
2
+ import { getFilenameFromUrl as t, queryStringToObject as n } from "./string.mjs";
3
+ import { aesDecrypt as r, aesEncrypt as i, saveAs as a } from "./tool.mjs";
4
+ export { r as aesDecrypt, i as aesEncrypt, e as formatSecondsToChinese, t as getFilenameFromUrl, n as queryStringToObject, a as saveAs };
@@ -1 +0,0 @@
1
- .duyi-button[data-v-e7952805]{color:#606266;cursor:pointer;background-color:#fff;border:1px solid #dcdfe6;border-radius:4px;justify-content:center;align-items:center;padding:8px 16px;font-size:14px;line-height:1;display:inline-flex}.duyi-button[data-v-e7952805]:hover{color:#409eff;border-color:#c6e2ff}.duyi-button.is-disabled[data-v-e7952805],.duyi-button[data-v-e7952805]:disabled{cursor:not-allowed;opacity:.6}.duyi-button.is-round[data-v-e7952805]{border-radius:20px}.duyi-button.is-circle[data-v-e7952805]{border-radius:50%;padding:8px}.duyi-button-primary[data-v-e7952805]{color:#fff;background-color:#409eff;border-color:#409eff}.duyi-button-primary[data-v-e7952805]:hover{color:#fff;background-color:#66b1ff;border-color:#66b1ff}