jky-component-lib 0.0.56 → 0.0.61

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 (79) hide show
  1. package/dist/es/add-input/AddInput.vue.d.ts +27 -0
  2. package/dist/es/add-input/AddInput.vue.js +151 -0
  3. package/dist/es/add-input/AddInput.vue3.js +5 -0
  4. package/dist/es/add-input/index.d.ts +4 -0
  5. package/dist/es/add-input/index.js +8 -0
  6. package/dist/es/add-input/style.css +35 -0
  7. package/dist/es/button-nav/ButtonNav.vue.d.ts +4 -4
  8. package/dist/es/code-mirror-editor/CodeMirrorEditor.vue.d.ts +4 -4
  9. package/dist/es/components.d.ts +3 -0
  10. package/dist/es/components.js +10 -1
  11. package/dist/es/form/Form.vue.d.ts +2 -2
  12. package/dist/es/form/FormItem.vue.js +12 -0
  13. package/dist/es/index.js +6 -0
  14. package/dist/es/node_modules/@element-plus/icons-vue/dist/index.js +32 -0
  15. package/dist/es/package.json.js +1 -1
  16. package/dist/es/page-header/PageHeader.vue.js +1 -1
  17. package/dist/es/page-header/PopoverMenu.vue.d.ts +1 -1
  18. package/dist/es/page-header/PopoverMenu.vue.js +1 -1
  19. package/dist/es/page-table/PageTable.vue.d.ts +6087 -0
  20. package/dist/es/page-table/PageTable.vue.js +374 -0
  21. package/dist/es/page-table/PageTable.vue3.js +5 -0
  22. package/dist/es/page-table/Toolbar.vue.d.ts +32 -0
  23. package/dist/es/page-table/Toolbar.vue.js +268 -0
  24. package/dist/es/page-table/Toolbar.vue3.js +5 -0
  25. package/dist/es/page-table/index.d.ts +4 -0
  26. package/dist/es/page-table/index.js +8 -0
  27. package/dist/es/page-table/style.css +4 -0
  28. package/dist/es/rich-editor/RichEditor.vue.d.ts +78 -0
  29. package/dist/es/rich-editor/RichEditor.vue.js +105 -0
  30. package/dist/es/rich-editor/RichEditor.vue3.js +5 -0
  31. package/dist/es/rich-editor/index.d.ts +4 -0
  32. package/dist/es/rich-editor/index.js +8 -0
  33. package/dist/es/rich-editor/style.css +34 -0
  34. package/dist/es/style.css +28 -0
  35. package/dist/es/styles.css +1 -1
  36. package/dist/es/utils/index.d.ts +1 -0
  37. package/dist/es/utils/responsive-toolbar.d.ts +78 -0
  38. package/dist/es/utils/responsive-toolbar.js +64 -0
  39. package/dist/lib/add-input/AddInput.vue.d.ts +27 -0
  40. package/dist/lib/add-input/AddInput.vue.js +151 -0
  41. package/dist/lib/add-input/AddInput.vue3.js +5 -0
  42. package/dist/lib/add-input/index.d.ts +4 -0
  43. package/dist/lib/add-input/index.js +8 -0
  44. package/dist/lib/add-input/style.css +35 -0
  45. package/dist/lib/button-nav/ButtonNav.vue.d.ts +4 -4
  46. package/dist/lib/code-mirror-editor/CodeMirrorEditor.vue.d.ts +4 -4
  47. package/dist/lib/components.d.ts +3 -0
  48. package/dist/lib/components.js +30 -21
  49. package/dist/lib/form/Form.vue.d.ts +2 -2
  50. package/dist/lib/form/FormItem.vue.js +20 -8
  51. package/dist/lib/index.js +20 -14
  52. package/dist/lib/node_modules/@element-plus/icons-vue/dist/index.js +32 -0
  53. package/dist/lib/package.json.js +1 -1
  54. package/dist/lib/page-header/PageHeader.vue.js +2 -2
  55. package/dist/lib/page-header/PopoverMenu.vue.d.ts +1 -1
  56. package/dist/lib/page-header/PopoverMenu.vue.js +1 -1
  57. package/dist/lib/page-table/PageTable.vue.d.ts +6087 -0
  58. package/dist/lib/page-table/PageTable.vue.js +374 -0
  59. package/dist/lib/page-table/PageTable.vue3.js +5 -0
  60. package/dist/lib/page-table/Toolbar.vue.d.ts +32 -0
  61. package/dist/lib/page-table/Toolbar.vue.js +268 -0
  62. package/dist/lib/page-table/Toolbar.vue3.js +5 -0
  63. package/dist/lib/page-table/index.d.ts +4 -0
  64. package/dist/lib/page-table/index.js +8 -0
  65. package/dist/lib/page-table/style.css +4 -0
  66. package/dist/lib/rich-editor/RichEditor.vue.d.ts +78 -0
  67. package/dist/lib/rich-editor/RichEditor.vue.js +105 -0
  68. package/dist/lib/rich-editor/RichEditor.vue3.js +5 -0
  69. package/dist/lib/rich-editor/index.d.ts +4 -0
  70. package/dist/lib/rich-editor/index.js +8 -0
  71. package/dist/lib/rich-editor/style.css +34 -0
  72. package/dist/lib/style.css +28 -0
  73. package/dist/lib/styles.css +1 -1
  74. package/dist/lib/utils/index.d.ts +1 -0
  75. package/dist/lib/utils/responsive-toolbar.d.ts +78 -0
  76. package/dist/lib/utils/responsive-toolbar.js +64 -0
  77. package/package.json +4 -1
  78. package/dist/umd/index.js +0 -3966
  79. package/dist/umd/styles.css +0 -1
package/dist/umd/index.js DELETED
@@ -1,3966 +0,0 @@
1
- (function(global, factory) {
2
- typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue"), require("element-plus"), require("@codemirror/lang-css"), require("@codemirror/lang-html"), require("@codemirror/lang-javascript"), require("@codemirror/lang-json"), require("@codemirror/lang-markdown"), require("@codemirror/lang-vue"), require("@codemirror/state"), require("@codemirror/theme-one-dark"), require("@codemirror/view"), require("codemirror")) : typeof define === "function" && define.amd ? define(["exports", "vue", "element-plus", "@codemirror/lang-css", "@codemirror/lang-html", "@codemirror/lang-javascript", "@codemirror/lang-json", "@codemirror/lang-markdown", "@codemirror/lang-vue", "@codemirror/state", "@codemirror/theme-one-dark", "@codemirror/view", "codemirror"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.JkyComponentLib = {}, global.Vue, global.ElementPlus, global.langCss, global.langHtml, global.langJavascript, global.langJson, global.langMarkdown, global.langVue, global.state, global.themeOneDark, global.view, global.codemirror));
3
- })(this, (function(exports2, vue, ElementPlus, langCss, langHtml, langJavascript, langJson, langMarkdown, langVue, state, themeOneDark, view, codemirror) {
4
- "use strict";var __defProp = Object.defineProperty;
5
- var __defProps = Object.defineProperties;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
- var __spreadValues = (a, b) => {
12
- for (var prop in b || (b = {}))
13
- if (__hasOwnProp.call(b, prop))
14
- __defNormalProp(a, prop, b[prop]);
15
- if (__getOwnPropSymbols)
16
- for (var prop of __getOwnPropSymbols(b)) {
17
- if (__propIsEnum.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- }
20
- return a;
21
- };
22
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
- var __objRest = (source, exclude) => {
24
- var target = {};
25
- for (var prop in source)
26
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
- target[prop] = source[prop];
28
- if (source != null && __getOwnPropSymbols)
29
- for (var prop of __getOwnPropSymbols(source)) {
30
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
- target[prop] = source[prop];
32
- }
33
- return target;
34
- };
35
- var __async = (__this, __arguments, generator) => {
36
- return new Promise((resolve, reject) => {
37
- var fulfilled = (value) => {
38
- try {
39
- step(generator.next(value));
40
- } catch (e) {
41
- reject(e);
42
- }
43
- };
44
- var rejected = (value) => {
45
- try {
46
- step(generator.throw(value));
47
- } catch (e) {
48
- reject(e);
49
- }
50
- };
51
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
52
- step((generator = generator.apply(__this, __arguments)).next());
53
- });
54
- };
55
-
56
- var __vite_style__ = document.createElement("style");
57
- __vite_style__.textContent = `
58
- /* 禁止使用 @apply,所有 TailwindCSS 工具类直接写在 class 中 */
59
- /* 样式文件仅用于定义组件特定的自定义纯 CSS 样式 */
60
- /* Button 组件样式 - 使用 CSS 变量实现主题化 */
61
- /* 1. 定义 CSS 变量 */
62
- :root {
63
- /* 颜色变量 */
64
- --jky-button-primary-bg: #007bff;
65
- --jky-button-primary-text: #ffffff;
66
- --jky-button-primary-hover-bg: #0056b3;
67
-
68
- --jky-button-success-bg: #28a745;
69
- --jky-button-success-text: #ffffff;
70
- --jky-button-success-hover-bg: #1e7e34;
71
-
72
- --jky-button-warning-bg: #ffc107;
73
- --jky-button-warning-text: #ffffff;
74
- --jky-button-warning-hover-bg: #e0a800;
75
-
76
- --jky-button-danger-bg: #dc3545;
77
- --jky-button-danger-text: #ffffff;
78
- --jky-button-danger-hover-bg: #c82333;
79
-
80
- --jky-button-info-bg: #6c757d;
81
- --jky-button-info-text: #ffffff;
82
- --jky-button-info-hover-bg: #5a6268;
83
-
84
- /* 默认样式 */
85
- --jky-button-default-bg: #ffffff;
86
- --jky-button-default-text: #606266;
87
- --jky-button-default-border: #dcdfe6;
88
- --jky-button-default-hover-bg: #f5f7fa;
89
-
90
- /* 尺寸变量 */
91
- --jky-button-font-size: 14px;
92
- --jky-button-font-size-small: 12px;
93
- --jky-button-font-size-large: 16px;
94
-
95
- --jky-button-padding: 0 16px;
96
- --jky-button-padding-small: 0 12px;
97
- --jky-button-padding-large: 0 20px;
98
-
99
- --jky-button-height: 40px;
100
- --jky-button-height-small: 32px;
101
- --jky-button-height-large: 48px;
102
-
103
- /* 圆角 */
104
- --jky-button-border-radius: 0.375rem;
105
-
106
- /* 状态变量 */
107
- --jky-button-disabled-opacity: 0.5;
108
- --jky-button-disabled-bg: #f5f7fa;
109
- --jky-button-disabled-text: #c0c4cc;
110
- --jky-button-loading-opacity: 0.7;
111
-
112
- /* 图标 */
113
- --jky-button-icon-size: 1.25rem;
114
- --jky-button-icon-margin: 0.5rem;
115
- }
116
- /* 2. 基础样式 */
117
- .jky-button {
118
- display: inline-flex;
119
- align-items: center;
120
- justify-content: center;
121
- height: var(--jky-button-height);
122
- padding: var(--jky-button-padding);
123
- font-size: var(--jky-button-font-size);
124
- font-weight: 500;
125
- border-radius: var(--jky-button-border-radius);
126
- background-color: var(--jky-button-default-bg);
127
- color: var(--jky-button-default-text);
128
- border: 1px solid var(--jky-button-default-border);
129
- transition: color 200ms, background-color 200ms;
130
- cursor: pointer;
131
- }
132
- /* 3. 类型变体 */
133
- .jky-button--primary {
134
- background-color: var(--jky-button-primary-bg);
135
- color: var(--jky-button-primary-text);
136
- border: none;
137
- }
138
- .jky-button--primary:hover {
139
- background-color: var(--jky-button-primary-hover-bg);
140
- }
141
- .jky-button--success {
142
- background-color: var(--jky-button-success-bg);
143
- color: var(--jky-button-success-text);
144
- border: none;
145
- }
146
- .jky-button--success:hover {
147
- background-color: var(--jky-button-success-hover-bg);
148
- }
149
- .jky-button--warning {
150
- background-color: var(--jky-button-warning-bg);
151
- color: var(--jky-button-warning-text);
152
- border: none;
153
- }
154
- .jky-button--warning:hover {
155
- background-color: var(--jky-button-warning-hover-bg);
156
- }
157
- .jky-button--danger {
158
- background-color: var(--jky-button-danger-bg);
159
- color: var(--jky-button-danger-text);
160
- border: none;
161
- }
162
- .jky-button--danger:hover {
163
- background-color: var(--jky-button-danger-hover-bg);
164
- }
165
- .jky-button--info {
166
- background-color: var(--jky-button-info-bg);
167
- color: var(--jky-button-info-text);
168
- border: none;
169
- }
170
- .jky-button--info:hover {
171
- background-color: var(--jky-button-info-hover-bg);
172
- }
173
- /* 4. 尺寸变体 */
174
- .jky-button--small {
175
- height: var(--jky-button-height-small);
176
- font-size: var(--jky-button-font-size-small);
177
- padding: var(--jky-button-padding-small);
178
- }
179
- .jky-button--large {
180
- height: var(--jky-button-height-large);
181
- font-size: var(--jky-button-font-size-large);
182
- padding: var(--jky-button-padding-large);
183
- }
184
- /* 5. 状态样式 */
185
- .jky-button.is-disabled {
186
- opacity: var(--jky-button-disabled-opacity);
187
- pointer-events: none;
188
- cursor: not-allowed;
189
- background-color: var(--jky-button-disabled-bg);
190
- color: var(--jky-button-disabled-text);
191
- }
192
- .jky-button.is-loading {
193
- position: relative;
194
- opacity: var(--jky-button-loading-opacity);
195
- pointer-events: none;
196
- }
197
- .jky-button__loading {
198
- position: absolute;
199
- inset: 0;
200
- display: flex;
201
- align-items: center;
202
- justify-content: center;
203
- }
204
- /* 6. 图标样式 */
205
- .jky-button__icon {
206
- display: inline-flex;
207
- align-items: center;
208
- justify-content: center;
209
- font-size: 1em;
210
- margin-right: var(--jky-button-icon-margin);
211
- }
212
- .jky-button__icon:only-child {
213
- margin-right: 0;
214
- }
215
- .jky-button--suffix .jky-button__icon {
216
- margin-right: 0;
217
- margin-left: var(--jky-button-icon-margin);
218
- }
219
- /* 7. 焦点样式 */
220
- .jky-button:focus-visible {
221
- outline: 2px solid transparent;
222
- outline-offset: 2px;
223
- box-shadow: 0 0 0 2px white, 0 0 0 4px #000;
224
- }
225
- /* 8. 加载动画 */
226
- .loading-spinner {
227
- width: var(--jky-button-icon-size);
228
- height: var(--jky-button-icon-size);
229
- animation: spin 1s linear infinite;
230
- }
231
- @keyframes spin {
232
- from {
233
- transform: rotate(0deg);
234
- }
235
- to {
236
- transform: rotate(360deg);
237
- }
238
- }
239
- /* ButtonNav 组件样式 */
240
- :root {
241
- /* 选中状态的颜色变量 */
242
- --jky-button-nav-active-bg: var(--el-color-primary);
243
- --jky-button-nav-active-text: #ffffff;
244
- --jky-button-nav-inactive-bg: var(--el-fill-color-light);
245
- --jky-button-nav-inactive-text: var(--el-text-color-regular);
246
-
247
- /* Dropdown 间距 */
248
- --el-dropdown-menu-margin-left: 12px;
249
- }
250
- .jky-button-nav {
251
- /* 使用纯 CSS 定义容器样式 */
252
- display: flex;
253
- flex-wrap: wrap;
254
- align-items: center;
255
- .el-dropdown {
256
- margin-left: var(--el-dropdown-menu-margin-left);
257
- }
258
- }
259
-
260
- /* 按钮选中状态 - 通过 CSS 变量控制 */
261
- .jky-button-nav-item {
262
- /* 默认状态(未选中) */
263
- background-color: var(--jky-button-nav-inactive-bg);
264
- color: var(--jky-button-nav-inactive-text);
265
-
266
- /* 选中状态 */
267
- &[aria-pressed="true"],
268
- &.is-active {
269
- background-color: var(--jky-button-nav-active-bg);
270
- color: var(--jky-button-nav-active-text);
271
- }
272
- }
273
-
274
- /* Dropdown 菜单保持 Element Plus 原始样式 */
275
- .jky-button-nav-dropdown {
276
- /* 不覆盖任何样式,保持 el-dropdown-menu 默认样式 */
277
- }
278
- :root {
279
- /* CodeMirror 编辑器基础样式变量 */
280
- --j-code-mirror-border-color: #dcdfe6;
281
- --j-code-mirror-border-radius: 4px;
282
- --j-code-mirror-height: 400px;
283
- }
284
- .j-code-mirror-editor {
285
- width: 100%;
286
- height: var(--j-code-mirror-height);
287
- /* border: 1px solid var(--j-code-mirror-border-color); */
288
- border-radius: var(--j-code-mirror-border-radius);
289
- overflow: hidden;
290
- }
291
- .code-mirror-container {
292
- height: 100%;
293
- width: 100%;
294
- overflow: auto;
295
- }
296
-
297
- /* CodeMirror 基础样式覆盖 */
298
- .code-mirror-container .cm-editor {
299
- height: 100%;
300
- }
301
- .code-mirror-container .cm-scroller {
302
- overflow: auto;
303
- font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
304
- font-size: 14px;
305
- line-height: 1.5;
306
- }
307
- .code-mirror-container .cm-gutters {
308
- background-color: #2c2d2d;
309
- border-color: #4c4d4f;
310
- color: #909399;
311
- }
312
-
313
- /* 暗黑模式支持 */
314
- html.dark .j-code-mirror-editor {
315
- /* border-color: #4c4d4f; */
316
- }
317
- html.dark .code-mirror-container .cm-gutters {
318
- /* background-color: #2c2d2d;
319
- border-color: #4c4d4f;
320
- color: #909399; */
321
- }
322
- :root {
323
- /* 表单组件间距 */
324
- /* --jky-form-item-gap: 12px; */
325
- --jky-form-item-border-width: 4px;
326
- --jky-form-item-border-color: var(--el-color-primary);
327
- --jky-form-item-bg-color: rgba(var(--el-color-primary-rgb), 0.5);
328
- }
329
-
330
-
331
- /* Form 组件样式 */
332
- .jky-form {
333
- /* 表单容器样式 */
334
- }
335
- .jky-form__title {
336
- /* 表单标题样式 */
337
- }
338
-
339
-
340
- /* FormItem 组件样式 */
341
- .jky-form-item {
342
- /* 表单项容器样式 */
343
- }
344
- .jky-form-item--no-label {
345
- /* 表单项标题样式(无 label 时) */
346
- /* border-left: var(--jky-form-item-border-width) solid var(--jky-form-item-border-color); */
347
- /* background-color: var(--jky-form-item-bg-color); */
348
- /* padding-left: var(--jky-form-item-border-width); */
349
- }
350
- .jky-form-item__title {
351
- /* 表单项标题样式(无 label 时) */
352
- }
353
- .jky-form-item__title--no-label {
354
- }
355
- :root {
356
- /* 表单组件间距 */
357
- /* --jky-form-item-gap: 12px; */
358
- --jky-form-item-border-width: 4px;
359
- --jky-form-item-border-color: var(--el-color-primary);
360
- --jky-form-item-bg-color: rgba(var(--el-color-primary-rgb), 0.5);
361
- }
362
-
363
-
364
- /* Form 组件样式 */
365
- .jky-form {
366
- /* 表单容器样式 */
367
- }
368
- .jky-form__title {
369
- /* 表单标题样式 */
370
- }
371
-
372
-
373
- /* FormItem 组件样式 */
374
- .jky-form-item {
375
- /* 表单项容器样式 */
376
- }
377
- .jky-form-item--no-label {
378
- /* 表单项标题样式(无 label 时) */
379
- /* border-left: var(--jky-form-item-border-width) solid var(--jky-form-item-border-color); */
380
- /* background-color: var(--jky-form-item-bg-color); */
381
- /* padding-left: var(--jky-form-item-border-width); */
382
- }
383
- .jky-form-item__title {
384
- /* 表单项标题样式(无 label 时) */
385
- }
386
- .jky-form-item__title--no-label {
387
- }
388
- /* Menu 组件样式 - 使用 CSS 变量实现主题化 */
389
-
390
- /* 1. 定义 CSS 变量 */
391
- :root {
392
- /* 颜色变量 */
393
- --jky-menu-bg-color: #ffffff;
394
- --jky-menu-text-color: #303133;
395
- --jky-menu-active-color: #409eff;
396
- --jky-menu-hover-bg-color: #f5f7fa;
397
- --jky-menu-hover-text-color: #606266;
398
-
399
- /* 尺寸变量 */
400
- --jky-menu-item-height: 56px;
401
- --jky-menu-item-padding: 0 20px;
402
- --jky-menu-item-font-size: 14px;
403
-
404
- /* 图标 */
405
- --jky-menu-icon-size: 18px;
406
- --jky-menu-icon-margin: 8px;
407
-
408
- /* 边框 */
409
- --jky-menu-border-color: #e4e7ed;
410
-
411
- /* 状态变量 */
412
- --jky-menu-disabled-opacity: 0.5;
413
- --jky-menu-disabled-text-color: #c0c4cc;
414
- }
415
-
416
- /* 2. 基础样式 */
417
- .jky-menu {
418
- .el-sub-menu.is-active {
419
- }
420
- .el-sub-menu__title {
421
- }
422
- }
423
-
424
- /* 3. 菜单项容器样式 - 确保统一高度 */
425
- .jky-menu {
426
- li + li {
427
- margin-top: 0;
428
- }
429
- }
430
-
431
- /* 4. 菜单项图标样式 */
432
- .jky-menu-item__icon {
433
- display: inline-flex;
434
- align-items: center;
435
- justify-content: center;
436
- width: var(--jky-menu-icon-size);
437
- height: var(--jky-menu-icon-size);
438
- margin-right: var(--jky-menu-icon-margin);
439
- font-size: var(--jky-menu-icon-size);
440
- flex-shrink: 0;
441
- }
442
-
443
- /* 5. 菜单项标题样式 */
444
- .jky-menu-item__title {
445
- }
446
-
447
- /* 6. 禁用状态 */
448
- .jky-menu-item.is-disabled {
449
- /* 禁用状态下的样式 */
450
- }
451
- /* PageHeader 组件样式变量 */
452
- :root {
453
- /* 背景 */
454
- --jky-page-header-bg-color: #1890ff;
455
- --jky-page-header-bg-size: cover;
456
- --jky-page-header-bg-position: center;
457
- --jky-page-header-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
458
-
459
- /* 布局 */
460
- --jky-page-header-padding-x: 24px;
461
- --jky-page-header-padding-x-mobile: 16px;
462
- --jky-page-header-gap: 16px;
463
- --jky-page-header-gap-mobile: 12px;
464
- --jky-page-header-gap-left: 12px;
465
- --jky-page-header-gap-status: 12px;
466
- --jky-page-header-gap-center: 24px;
467
- --jky-page-header-gap-center-mobile: 12px;
468
-
469
- /* 文字 */
470
- --jky-page-header-title-color: #ffffff;
471
- --jky-page-header-title-size: 20px;
472
- --jky-page-header-title-size-mobile: 16px;
473
- --jky-page-header-title-weight: 600;
474
- --jky-page-header-text-color: rgba(255, 255, 255, 0.85);
475
- --jky-page-header-text-size: 16px;
476
-
477
- /* 图标 */
478
- --jky-page-header-icon-color: #ffffff;
479
- --jky-page-header-icon-size: 20px;
480
- --jky-page-header-icon-hover-opacity: 0.8;
481
-
482
- /* Logo */
483
- --jky-page-header-logo-height: 40px;
484
-
485
- /* 用户头像 */
486
- --jky-page-header-avatar-size: 32px;
487
- }
488
- .jky-page-header {
489
- width: 100%;
490
- background-color: var(--jky-page-header-bg-color);
491
- background-size: var(--jky-page-header-bg-size);
492
- background-position: var(--jky-page-header-bg-position);
493
- box-shadow: var(--jky-page-header-box-shadow);
494
- }
495
- .jky-page-header__container {
496
- display: flex;
497
- align-items: center;
498
- justify-content: space-between;
499
- height: 100%;
500
- padding: 0 var(--jky-page-header-padding-x);
501
- margin: 0 auto;
502
- max-width: 100%;
503
- }
504
- /* 左侧区域 */
505
- .jky-page-header__left {
506
- display: flex;
507
- align-items: center;
508
- gap: var(--jky-page-header-gap-left);
509
- flex-shrink: 0;
510
- }
511
- .jky-page-header__logo {
512
- height: var(--jky-page-header-logo-height);
513
- width: auto;
514
- object-fit: contain;
515
- }
516
- .jky-page-header__title {
517
- font-size: var(--jky-page-header-title-size);
518
- font-weight: var(--jky-page-header-title-weight);
519
- color: var(--jky-page-header-title-color);
520
- white-space: nowrap;
521
- }
522
- /* 中间区域 */
523
- .jky-page-header__center {
524
- flex: 1;
525
- display: flex;
526
- align-items: center;
527
- justify-content: center;
528
- min-width: 0;
529
- margin: 0 var(--jky-page-header-gap-center);
530
- }
531
- /* 右侧区域 */
532
- .jky-page-header__right {
533
- display: flex;
534
- align-items: center;
535
- gap: var(--jky-page-header-gap);
536
- flex-shrink: 0;
537
- }
538
- .jky-page-header__status-icons {
539
- display: flex;
540
- align-items: center;
541
- gap: var(--jky-page-header-gap-status);
542
- }
543
- .jky-page-header__status-icon {
544
- color: var(--jky-page-header-icon-color);
545
- cursor: pointer;
546
- transition: opacity 0.2s;
547
- &:hover {
548
- opacity: var(--jky-page-header-icon-hover-opacity);
549
- }
550
- }
551
- .jky-page-header__time {
552
- color: var(--jky-page-header-text-color);
553
- font-size: var(--jky-page-header-text-size);
554
- white-space: nowrap;
555
- }
556
- .jky-page-header__user {
557
- display: flex;
558
- align-items: center;
559
- gap: 8px;
560
- cursor: pointer;
561
- color: var(--jky-page-header-text-color);
562
- }
563
- .jky-page-header__avatar {
564
- color: var(--jky-page-header-icon-color);
565
- img {
566
- width: 100%;
567
- height: 100%;
568
- object-fit: cover;
569
- }
570
- }
571
- .jky-page-header__username {
572
- font-size: var(--jky-page-header-text-size);
573
- color: var(--jky-page-header-text-color);
574
- white-space: nowrap;
575
- }
576
- .jky-page-header__logout {
577
- font-size: var(--jky-page-header-text-size);
578
- color: var(--jky-page-header-text-color);
579
- }
580
- /* 响应式设计 */
581
- @media (max-width: 768px) {
582
- .jky-page-header__container {
583
- padding: 0 var(--jky-page-header-padding-x-mobile);
584
- }
585
- .jky-page-header__title {
586
- font-size: var(--jky-page-header-title-size-mobile);
587
- }
588
- .jky-page-header__center {
589
- margin: 0 var(--jky-page-header-gap-center-mobile);
590
- }
591
- .jky-page-header__right {
592
- gap: var(--jky-page-header-gap-mobile);
593
- }
594
- }
595
- /* SayHello 组件样式 - 使用 CSS 变量实现主题化 */
596
-
597
- /* 1. 定义 CSS 变量 */
598
- :root {
599
- /* 颜色变量 */
600
- --jky-say-hello-bg: #42b883;
601
- --jky-say-hello-text: #ffffff;
602
- --jky-say-hello-hover-bg: #3aa876;
603
-
604
- /* 尺寸变量 */
605
- --jky-say-hello-font-size: 16px;
606
- --jky-say-hello-padding: 8px 20px;
607
- --jky-say-hello-margin: 4px 2px;
608
-
609
- /* 圆角 */
610
- --jky-say-hello-border-radius: 6px;
611
- }
612
-
613
- /* 2. 基础样式 */
614
- .jky-say-hello {
615
- display: inline-block;
616
- padding: var(--jky-say-hello-padding);
617
- margin: var(--jky-say-hello-margin);
618
- font-size: var(--jky-say-hello-font-size);
619
- background-color: var(--jky-say-hello-bg);
620
- color: var(--jky-say-hello-text);
621
- text-align: center;
622
- text-decoration: none;
623
- border-radius: var(--jky-say-hello-border-radius);
624
- cursor: pointer;
625
- transition: background-color 200ms ease;
626
- }
627
-
628
- /* 3. 悬停状态 */
629
- .jky-say-hello:hover {
630
- background-color: var(--jky-say-hello-hover-bg);
631
- }
632
- /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
633
- @layer properties {
634
- @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
635
- *, :before, :after, ::backdrop {
636
- --tw-translate-x: 0;
637
- --tw-translate-y: 0;
638
- --tw-translate-z: 0;
639
- --tw-rotate-x: initial;
640
- --tw-rotate-y: initial;
641
- --tw-rotate-z: initial;
642
- --tw-skew-x: initial;
643
- --tw-skew-y: initial;
644
- --tw-space-y-reverse: 0;
645
- --tw-border-style: solid;
646
- --tw-font-weight: initial;
647
- --tw-outline-style: solid;
648
- --tw-blur: initial;
649
- --tw-brightness: initial;
650
- --tw-contrast: initial;
651
- --tw-grayscale: initial;
652
- --tw-hue-rotate: initial;
653
- --tw-invert: initial;
654
- --tw-opacity: initial;
655
- --tw-saturate: initial;
656
- --tw-sepia: initial;
657
- --tw-drop-shadow: initial;
658
- --tw-drop-shadow-color: initial;
659
- --tw-drop-shadow-alpha: 100%;
660
- --tw-drop-shadow-size: initial;
661
- --tw-shadow: 0 0 #0000;
662
- --tw-shadow-color: initial;
663
- --tw-shadow-alpha: 100%;
664
- --tw-inset-shadow: 0 0 #0000;
665
- --tw-inset-shadow-color: initial;
666
- --tw-inset-shadow-alpha: 100%;
667
- --tw-ring-color: initial;
668
- --tw-ring-shadow: 0 0 #0000;
669
- --tw-inset-ring-color: initial;
670
- --tw-inset-ring-shadow: 0 0 #0000;
671
- --tw-ring-inset: initial;
672
- --tw-ring-offset-width: 0px;
673
- --tw-ring-offset-color: #fff;
674
- --tw-ring-offset-shadow: 0 0 #0000;
675
- }
676
- }
677
- }
678
-
679
- @layer theme {
680
- :root, :host {
681
- --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
682
- "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
683
- --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
684
- "Courier New", monospace;
685
- --color-red-500: oklch(63.7% .237 25.331);
686
- --color-yellow-50: oklch(98.7% .026 102.212);
687
- --color-yellow-600: oklch(68.1% .162 75.834);
688
- --color-yellow-800: oklch(47.6% .114 61.907);
689
- --color-green-50: oklch(98.2% .018 155.826);
690
- --color-green-500: oklch(72.3% .219 149.579);
691
- --color-green-600: oklch(62.7% .194 149.214);
692
- --color-green-800: oklch(44.8% .119 151.328);
693
- --color-blue-50: oklch(97% .014 254.604);
694
- --color-blue-500: oklch(62.3% .214 259.815);
695
- --color-blue-600: oklch(54.6% .245 262.881);
696
- --color-blue-800: oklch(42.4% .199 265.638);
697
- --color-indigo-50: oklch(96.2% .018 272.314);
698
- --color-indigo-600: oklch(51.1% .262 276.966);
699
- --color-indigo-800: oklch(39.8% .195 277.366);
700
- --color-purple-50: oklch(97.7% .014 308.299);
701
- --color-purple-500: oklch(62.7% .265 303.9);
702
- --color-purple-600: oklch(55.8% .288 302.321);
703
- --color-purple-800: oklch(43.8% .218 303.724);
704
- --color-gray-100: oklch(96.7% .003 264.542);
705
- --color-gray-300: oklch(87.2% .01 258.338);
706
- --color-gray-400: oklch(70.7% .022 261.325);
707
- --color-gray-500: oklch(55.1% .027 264.364);
708
- --color-gray-600: oklch(44.6% .03 256.802);
709
- --color-white: #fff;
710
- --spacing: .25rem;
711
- --text-xs: .75rem;
712
- --text-xs--line-height: calc(1 / .75);
713
- --text-sm: .875rem;
714
- --text-sm--line-height: calc(1.25 / .875);
715
- --text-base: 1rem;
716
- --text-base--line-height: calc(1.5 / 1);
717
- --text-lg: 1.125rem;
718
- --text-lg--line-height: calc(1.75 / 1.125);
719
- --text-xl: 1.25rem;
720
- --text-xl--line-height: calc(1.75 / 1.25);
721
- --text-2xl: 1.5rem;
722
- --text-2xl--line-height: calc(2 / 1.5);
723
- --font-weight-medium: 500;
724
- --font-weight-semibold: 600;
725
- --font-weight-bold: 700;
726
- --radius-md: .375rem;
727
- --radius-lg: .5rem;
728
- --default-transition-duration: .15s;
729
- --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);
730
- --default-font-family: var(--font-sans);
731
- --default-mono-font-family: var(--font-mono);
732
- }
733
- }
734
-
735
- @layer base {
736
- *, :after, :before, ::backdrop {
737
- box-sizing: border-box;
738
- border: 0 solid;
739
- margin: 0;
740
- padding: 0;
741
- }
742
-
743
- ::file-selector-button {
744
- box-sizing: border-box;
745
- border: 0 solid;
746
- margin: 0;
747
- padding: 0;
748
- }
749
-
750
- html, :host {
751
- -webkit-text-size-adjust: 100%;
752
- tab-size: 4;
753
- line-height: 1.5;
754
- font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
755
- font-feature-settings: var(--default-font-feature-settings, normal);
756
- font-variation-settings: var(--default-font-variation-settings, normal);
757
- -webkit-tap-highlight-color: transparent;
758
- }
759
-
760
- hr {
761
- height: 0;
762
- color: inherit;
763
- border-top-width: 1px;
764
- }
765
-
766
- abbr:where([title]) {
767
- -webkit-text-decoration: underline dotted;
768
- text-decoration: underline dotted;
769
- }
770
-
771
- h1, h2, h3, h4, h5, h6 {
772
- font-size: inherit;
773
- font-weight: inherit;
774
- }
775
-
776
- a {
777
- color: inherit;
778
- -webkit-text-decoration: inherit;
779
- -webkit-text-decoration: inherit;
780
- -webkit-text-decoration: inherit;
781
- text-decoration: inherit;
782
- }
783
-
784
- b, strong {
785
- font-weight: bolder;
786
- }
787
-
788
- code, kbd, samp, pre {
789
- font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
790
- font-feature-settings: var(--default-mono-font-feature-settings, normal);
791
- font-variation-settings: var(--default-mono-font-variation-settings, normal);
792
- font-size: 1em;
793
- }
794
-
795
- small {
796
- font-size: 80%;
797
- }
798
-
799
- sub, sup {
800
- vertical-align: baseline;
801
- font-size: 75%;
802
- line-height: 0;
803
- position: relative;
804
- }
805
-
806
- sub {
807
- bottom: -.25em;
808
- }
809
-
810
- sup {
811
- top: -.5em;
812
- }
813
-
814
- table {
815
- text-indent: 0;
816
- border-color: inherit;
817
- border-collapse: collapse;
818
- }
819
-
820
- :-moz-focusring {
821
- outline: auto;
822
- }
823
-
824
- progress {
825
- vertical-align: baseline;
826
- }
827
-
828
- summary {
829
- display: list-item;
830
- }
831
-
832
- ol, ul, menu {
833
- list-style: none;
834
- }
835
-
836
- img, svg, video, canvas, audio, iframe, embed, object {
837
- vertical-align: middle;
838
- display: block;
839
- }
840
-
841
- img, video {
842
- max-width: 100%;
843
- height: auto;
844
- }
845
-
846
- button, input, select, optgroup, textarea {
847
- font: inherit;
848
- font-feature-settings: inherit;
849
- font-variation-settings: inherit;
850
- letter-spacing: inherit;
851
- color: inherit;
852
- opacity: 1;
853
- background-color: #0000;
854
- border-radius: 0;
855
- }
856
-
857
- ::file-selector-button {
858
- font: inherit;
859
- font-feature-settings: inherit;
860
- font-variation-settings: inherit;
861
- letter-spacing: inherit;
862
- color: inherit;
863
- opacity: 1;
864
- background-color: #0000;
865
- border-radius: 0;
866
- }
867
-
868
- :where(select:is([multiple], [size])) optgroup {
869
- font-weight: bolder;
870
- }
871
-
872
- :where(select:is([multiple], [size])) optgroup option {
873
- padding-inline-start: 20px;
874
- }
875
-
876
- ::file-selector-button {
877
- margin-inline-end: 4px;
878
- }
879
-
880
- ::placeholder {
881
- opacity: 1;
882
- }
883
-
884
- @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {
885
- ::placeholder {
886
- color: currentColor;
887
- }
888
-
889
- @supports (color: color-mix(in lab, red, red)) {
890
- ::placeholder {
891
- color: color-mix(in oklab, currentcolor 50%, transparent);
892
- }
893
- }
894
- }
895
-
896
- textarea {
897
- resize: vertical;
898
- }
899
-
900
- ::-webkit-search-decoration {
901
- -webkit-appearance: none;
902
- }
903
-
904
- ::-webkit-date-and-time-value {
905
- min-height: 1lh;
906
- text-align: inherit;
907
- }
908
-
909
- ::-webkit-datetime-edit {
910
- display: inline-flex;
911
- }
912
-
913
- ::-webkit-datetime-edit-fields-wrapper {
914
- padding: 0;
915
- }
916
-
917
- ::-webkit-datetime-edit {
918
- padding-block: 0;
919
- }
920
-
921
- ::-webkit-datetime-edit-year-field {
922
- padding-block: 0;
923
- }
924
-
925
- ::-webkit-datetime-edit-month-field {
926
- padding-block: 0;
927
- }
928
-
929
- ::-webkit-datetime-edit-day-field {
930
- padding-block: 0;
931
- }
932
-
933
- ::-webkit-datetime-edit-hour-field {
934
- padding-block: 0;
935
- }
936
-
937
- ::-webkit-datetime-edit-minute-field {
938
- padding-block: 0;
939
- }
940
-
941
- ::-webkit-datetime-edit-second-field {
942
- padding-block: 0;
943
- }
944
-
945
- ::-webkit-datetime-edit-millisecond-field {
946
- padding-block: 0;
947
- }
948
-
949
- ::-webkit-datetime-edit-meridiem-field {
950
- padding-block: 0;
951
- }
952
-
953
- ::-webkit-calendar-picker-indicator {
954
- line-height: 1;
955
- }
956
-
957
- :-moz-ui-invalid {
958
- box-shadow: none;
959
- }
960
-
961
- button, input:where([type="button"], [type="reset"], [type="submit"]) {
962
- appearance: button;
963
- }
964
-
965
- ::file-selector-button {
966
- appearance: button;
967
- }
968
-
969
- ::-webkit-inner-spin-button {
970
- height: auto;
971
- }
972
-
973
- ::-webkit-outer-spin-button {
974
- height: auto;
975
- }
976
-
977
- [hidden]:where(:not([hidden="until-found"])) {
978
- display: none !important;
979
- }
980
- }
981
-
982
- @layer components;
983
-
984
- @layer utilities {
985
- .collapse {
986
- visibility: collapse;
987
- }
988
-
989
- .absolute {
990
- position: absolute;
991
- }
992
-
993
- .fixed {
994
- position: fixed;
995
- }
996
-
997
- .relative {
998
- position: relative;
999
- }
1000
-
1001
- .static {
1002
- position: static;
1003
- }
1004
-
1005
- .sticky {
1006
- position: sticky;
1007
- }
1008
-
1009
- .start {
1010
- inset-inline-start: var(--spacing);
1011
- }
1012
-
1013
- .end {
1014
- inset-inline-end: var(--spacing);
1015
- }
1016
-
1017
- .top-0 {
1018
- top: calc(var(--spacing) * 0);
1019
- }
1020
-
1021
- .top-1\\/2 {
1022
- top: 50%;
1023
- }
1024
-
1025
- .top-2 {
1026
- top: calc(var(--spacing) * 2);
1027
- }
1028
-
1029
- .right-3 {
1030
- right: calc(var(--spacing) * 3);
1031
- }
1032
-
1033
- .left-0 {
1034
- left: calc(var(--spacing) * 0);
1035
- }
1036
-
1037
- .z-999 {
1038
- z-index: 999;
1039
- }
1040
-
1041
- .col-span-4 {
1042
- grid-column: span 4 / span 4;
1043
- }
1044
-
1045
- .col-span-6 {
1046
- grid-column: span 6 / span 6;
1047
- }
1048
-
1049
- .col-span-8 {
1050
- grid-column: span 8 / span 8;
1051
- }
1052
-
1053
- .col-span-12 {
1054
- grid-column: span 12 / span 12;
1055
- }
1056
-
1057
- .col-span-24 {
1058
- grid-column: span 24 / span 24;
1059
- }
1060
-
1061
- .container {
1062
- width: 100%;
1063
- }
1064
-
1065
- @media (min-width: 40rem) {
1066
- .container {
1067
- max-width: 40rem;
1068
- }
1069
- }
1070
-
1071
- @media (min-width: 48rem) {
1072
- .container {
1073
- max-width: 48rem;
1074
- }
1075
- }
1076
-
1077
- @media (min-width: 64rem) {
1078
- .container {
1079
- max-width: 64rem;
1080
- }
1081
- }
1082
-
1083
- @media (min-width: 80rem) {
1084
- .container {
1085
- max-width: 80rem;
1086
- }
1087
- }
1088
-
1089
- @media (min-width: 96rem) {
1090
- .container {
1091
- max-width: 96rem;
1092
- }
1093
- }
1094
-
1095
- .mt-1 {
1096
- margin-top: calc(var(--spacing) * 1);
1097
- }
1098
-
1099
- .mt-2 {
1100
- margin-top: calc(var(--spacing) * 2);
1101
- }
1102
-
1103
- .mt-4 {
1104
- margin-top: calc(var(--spacing) * 4);
1105
- }
1106
-
1107
- .mt-6 {
1108
- margin-top: calc(var(--spacing) * 6);
1109
- }
1110
-
1111
- .mr-2 {
1112
- margin-right: calc(var(--spacing) * 2);
1113
- }
1114
-
1115
- .mb-2 {
1116
- margin-bottom: calc(var(--spacing) * 2);
1117
- }
1118
-
1119
- .mb-3 {
1120
- margin-bottom: calc(var(--spacing) * 3);
1121
- }
1122
-
1123
- .mb-4 {
1124
- margin-bottom: calc(var(--spacing) * 4);
1125
- }
1126
-
1127
- .ml-0\\! {
1128
- margin-left: calc(var(--spacing) * 0) !important;
1129
- }
1130
-
1131
- .ml-1 {
1132
- margin-left: calc(var(--spacing) * 1);
1133
- }
1134
-
1135
- .ml-2 {
1136
- margin-left: calc(var(--spacing) * 2);
1137
- }
1138
-
1139
- .icon-\\[ant-design--menu-fold-outlined\\] {
1140
- width: 1em;
1141
- height: 1em;
1142
- -webkit-mask-image: var(--svg);
1143
- -webkit-mask-image: var(--svg);
1144
- -webkit-mask-image: var(--svg);
1145
- mask-image: var(--svg);
1146
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024' width='1024' height='1024'%3E%3Cpath fill='black' d='M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8m-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8m0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8M115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8'/%3E%3C/svg%3E");
1147
- background-color: currentColor;
1148
- display: inline-block;
1149
- -webkit-mask-size: 100% 100%;
1150
- mask-size: 100% 100%;
1151
- -webkit-mask-repeat: no-repeat;
1152
- mask-repeat: no-repeat;
1153
- }
1154
-
1155
- .icon-\\[carbon--arrow-right\\] {
1156
- width: 1em;
1157
- height: 1em;
1158
- -webkit-mask-image: var(--svg);
1159
- -webkit-mask-image: var(--svg);
1160
- -webkit-mask-image: var(--svg);
1161
- mask-image: var(--svg);
1162
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='black' d='m18 6l-1.43 1.393L24.15 15H4v2h20.15l-7.58 7.573L18 26l10-10z'/%3E%3C/svg%3E");
1163
- background-color: currentColor;
1164
- display: inline-block;
1165
- -webkit-mask-size: 100% 100%;
1166
- mask-size: 100% 100%;
1167
- -webkit-mask-repeat: no-repeat;
1168
- mask-repeat: no-repeat;
1169
- }
1170
-
1171
- .icon-\\[carbon--close\\] {
1172
- width: 1em;
1173
- height: 1em;
1174
- -webkit-mask-image: var(--svg);
1175
- -webkit-mask-image: var(--svg);
1176
- -webkit-mask-image: var(--svg);
1177
- mask-image: var(--svg);
1178
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='black' d='M17.414 16L24 9.414L22.586 8L16 14.586L9.414 8L8 9.414L14.586 16L8 22.586L9.414 24L16 17.414L22.586 24L24 22.586z'/%3E%3C/svg%3E");
1179
- background-color: currentColor;
1180
- display: inline-block;
1181
- -webkit-mask-size: 100% 100%;
1182
- mask-size: 100% 100%;
1183
- -webkit-mask-repeat: no-repeat;
1184
- mask-repeat: no-repeat;
1185
- }
1186
-
1187
- .icon-\\[carbon--home\\] {
1188
- width: 1em;
1189
- height: 1em;
1190
- -webkit-mask-image: var(--svg);
1191
- -webkit-mask-image: var(--svg);
1192
- -webkit-mask-image: var(--svg);
1193
- mask-image: var(--svg);
1194
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='black' d='M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428ZM18 26h-4v-8h4Zm2 0v-8a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26Z'/%3E%3C/svg%3E");
1195
- background-color: currentColor;
1196
- display: inline-block;
1197
- -webkit-mask-size: 100% 100%;
1198
- mask-size: 100% 100%;
1199
- -webkit-mask-repeat: no-repeat;
1200
- mask-repeat: no-repeat;
1201
- }
1202
-
1203
- .icon-\\[carbon--search\\] {
1204
- width: 1em;
1205
- height: 1em;
1206
- -webkit-mask-image: var(--svg);
1207
- -webkit-mask-image: var(--svg);
1208
- -webkit-mask-image: var(--svg);
1209
- mask-image: var(--svg);
1210
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='black' d='m29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29ZM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9'/%3E%3C/svg%3E");
1211
- background-color: currentColor;
1212
- display: inline-block;
1213
- -webkit-mask-size: 100% 100%;
1214
- mask-size: 100% 100%;
1215
- -webkit-mask-repeat: no-repeat;
1216
- mask-repeat: no-repeat;
1217
- }
1218
-
1219
- .icon-\\[carbon--star\\] {
1220
- width: 1em;
1221
- height: 1em;
1222
- -webkit-mask-image: var(--svg);
1223
- -webkit-mask-image: var(--svg);
1224
- -webkit-mask-image: var(--svg);
1225
- mask-image: var(--svg);
1226
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cpath fill='black' d='m16 6.52l2.76 5.58l.46 1l1 .15l6.16.89l-4.38 4.3l-.75.73l.18 1l1.05 6.13l-5.51-2.89L16 23l-.93.49l-5.51 2.85l1-6.13l.18-1l-.74-.77l-4.42-4.35l6.16-.89l1-.15l.46-1zM16 2l-4.55 9.22l-10.17 1.47l7.36 7.18L6.9 30l9.1-4.78L25.1 30l-1.74-10.13l7.36-7.17l-10.17-1.48Z'/%3E%3C/svg%3E");
1227
- background-color: currentColor;
1228
- display: inline-block;
1229
- -webkit-mask-size: 100% 100%;
1230
- mask-size: 100% 100%;
1231
- -webkit-mask-repeat: no-repeat;
1232
- mask-repeat: no-repeat;
1233
- }
1234
-
1235
- .icon-\\[heroicons--arrow-down\\] {
1236
- width: 1em;
1237
- height: 1em;
1238
- -webkit-mask-image: var(--svg);
1239
- -webkit-mask-image: var(--svg);
1240
- -webkit-mask-image: var(--svg);
1241
- mask-image: var(--svg);
1242
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M19.5 13.5L12 21m0 0l-7.5-7.5M12 21V3'/%3E%3C/svg%3E");
1243
- background-color: currentColor;
1244
- display: inline-block;
1245
- -webkit-mask-size: 100% 100%;
1246
- mask-size: 100% 100%;
1247
- -webkit-mask-repeat: no-repeat;
1248
- mask-repeat: no-repeat;
1249
- }
1250
-
1251
- .icon-\\[heroicons--arrow-right-on-rectangle\\] {
1252
- width: 1em;
1253
- height: 1em;
1254
- -webkit-mask-image: var(--svg);
1255
- -webkit-mask-image: var(--svg);
1256
- -webkit-mask-image: var(--svg);
1257
- mask-image: var(--svg);
1258
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9'/%3E%3C/svg%3E");
1259
- background-color: currentColor;
1260
- display: inline-block;
1261
- -webkit-mask-size: 100% 100%;
1262
- mask-size: 100% 100%;
1263
- -webkit-mask-repeat: no-repeat;
1264
- mask-repeat: no-repeat;
1265
- }
1266
-
1267
- .icon-\\[heroicons--arrow-right\\] {
1268
- width: 1em;
1269
- height: 1em;
1270
- -webkit-mask-image: var(--svg);
1271
- -webkit-mask-image: var(--svg);
1272
- -webkit-mask-image: var(--svg);
1273
- mask-image: var(--svg);
1274
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3'/%3E%3C/svg%3E");
1275
- background-color: currentColor;
1276
- display: inline-block;
1277
- -webkit-mask-size: 100% 100%;
1278
- mask-size: 100% 100%;
1279
- -webkit-mask-repeat: no-repeat;
1280
- mask-repeat: no-repeat;
1281
- }
1282
-
1283
- .icon-\\[heroicons--arrow-top-right-on-square\\] {
1284
- width: 1em;
1285
- height: 1em;
1286
- -webkit-mask-image: var(--svg);
1287
- -webkit-mask-image: var(--svg);
1288
- -webkit-mask-image: var(--svg);
1289
- mask-image: var(--svg);
1290
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25'/%3E%3C/svg%3E");
1291
- background-color: currentColor;
1292
- display: inline-block;
1293
- -webkit-mask-size: 100% 100%;
1294
- mask-size: 100% 100%;
1295
- -webkit-mask-repeat: no-repeat;
1296
- mask-repeat: no-repeat;
1297
- }
1298
-
1299
- .icon-\\[heroicons--bell\\] {
1300
- width: 1em;
1301
- height: 1em;
1302
- -webkit-mask-image: var(--svg);
1303
- -webkit-mask-image: var(--svg);
1304
- -webkit-mask-image: var(--svg);
1305
- mask-image: var(--svg);
1306
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M14.857 17.082a24 24 0 0 0 5.454-1.31A8.97 8.97 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.97 8.97 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.3 24.3 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0'/%3E%3C/svg%3E");
1307
- background-color: currentColor;
1308
- display: inline-block;
1309
- -webkit-mask-size: 100% 100%;
1310
- mask-size: 100% 100%;
1311
- -webkit-mask-repeat: no-repeat;
1312
- mask-repeat: no-repeat;
1313
- }
1314
-
1315
- .icon-\\[heroicons--chart-bar\\] {
1316
- width: 1em;
1317
- height: 1em;
1318
- -webkit-mask-image: var(--svg);
1319
- -webkit-mask-image: var(--svg);
1320
- -webkit-mask-image: var(--svg);
1321
- mask-image: var(--svg);
1322
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875zm6.75-4.5c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125zm6.75-4.5c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125z'/%3E%3C/svg%3E");
1323
- background-color: currentColor;
1324
- display: inline-block;
1325
- -webkit-mask-size: 100% 100%;
1326
- mask-size: 100% 100%;
1327
- -webkit-mask-repeat: no-repeat;
1328
- mask-repeat: no-repeat;
1329
- }
1330
-
1331
- .icon-\\[heroicons--check\\] {
1332
- width: 1em;
1333
- height: 1em;
1334
- -webkit-mask-image: var(--svg);
1335
- -webkit-mask-image: var(--svg);
1336
- -webkit-mask-image: var(--svg);
1337
- mask-image: var(--svg);
1338
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m4.5 12.75l6 6l9-13.5'/%3E%3C/svg%3E");
1339
- background-color: currentColor;
1340
- display: inline-block;
1341
- -webkit-mask-size: 100% 100%;
1342
- mask-size: 100% 100%;
1343
- -webkit-mask-repeat: no-repeat;
1344
- mask-repeat: no-repeat;
1345
- }
1346
-
1347
- .icon-\\[heroicons--cog-6-tooth\\] {
1348
- width: 1em;
1349
- height: 1em;
1350
- -webkit-mask-image: var(--svg);
1351
- -webkit-mask-image: var(--svg);
1352
- -webkit-mask-image: var(--svg);
1353
- mask-image: var(--svg);
1354
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5'%3E%3Cpath d='M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87q.11.06.22.127c.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a8 8 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a7 7 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a7 7 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a7 7 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124q.108-.066.22-.128c.332-.183.582-.495.644-.869z'/%3E%3Cpath d='M15 12a3 3 0 1 1-6 0a3 3 0 0 1 6 0'/%3E%3C/g%3E%3C/svg%3E");
1355
- background-color: currentColor;
1356
- display: inline-block;
1357
- -webkit-mask-size: 100% 100%;
1358
- mask-size: 100% 100%;
1359
- -webkit-mask-repeat: no-repeat;
1360
- mask-repeat: no-repeat;
1361
- }
1362
-
1363
- .icon-\\[heroicons--cog\\] {
1364
- width: 1em;
1365
- height: 1em;
1366
- -webkit-mask-image: var(--svg);
1367
- -webkit-mask-image: var(--svg);
1368
- -webkit-mask-image: var(--svg);
1369
- mask-image: var(--svg);
1370
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077l1.41-.513m14.095-5.13l1.41-.513M5.106 17.785l1.15-.964m11.49-9.642l1.149-.964M7.501 19.795l.75-1.3m7.5-12.99l.75-1.3m-6.063 16.658l.26-1.477m2.605-14.772l.26-1.477m0 17.726l-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205L12 12m6.894 5.785l-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864l-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495'/%3E%3C/svg%3E");
1371
- background-color: currentColor;
1372
- display: inline-block;
1373
- -webkit-mask-size: 100% 100%;
1374
- mask-size: 100% 100%;
1375
- -webkit-mask-repeat: no-repeat;
1376
- mask-repeat: no-repeat;
1377
- }
1378
-
1379
- .icon-\\[heroicons--cube\\] {
1380
- width: 1em;
1381
- height: 1em;
1382
- -webkit-mask-image: var(--svg);
1383
- -webkit-mask-image: var(--svg);
1384
- -webkit-mask-image: var(--svg);
1385
- mask-image: var(--svg);
1386
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m21 7.5l-9-5.25L3 7.5m18 0l-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9'/%3E%3C/svg%3E");
1387
- background-color: currentColor;
1388
- display: inline-block;
1389
- -webkit-mask-size: 100% 100%;
1390
- mask-size: 100% 100%;
1391
- -webkit-mask-repeat: no-repeat;
1392
- mask-repeat: no-repeat;
1393
- }
1394
-
1395
- .icon-\\[heroicons--document-text\\] {
1396
- width: 1em;
1397
- height: 1em;
1398
- -webkit-mask-image: var(--svg);
1399
- -webkit-mask-image: var(--svg);
1400
- -webkit-mask-image: var(--svg);
1401
- mask-image: var(--svg);
1402
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9'/%3E%3C/svg%3E");
1403
- background-color: currentColor;
1404
- display: inline-block;
1405
- -webkit-mask-size: 100% 100%;
1406
- mask-size: 100% 100%;
1407
- -webkit-mask-repeat: no-repeat;
1408
- mask-repeat: no-repeat;
1409
- }
1410
-
1411
- .icon-\\[heroicons--ellipsis-horizontal\\] {
1412
- width: 1em;
1413
- height: 1em;
1414
- -webkit-mask-image: var(--svg);
1415
- -webkit-mask-image: var(--svg);
1416
- -webkit-mask-image: var(--svg);
1417
- mask-image: var(--svg);
1418
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6.75 12a.75.75 0 1 1-1.5 0a.75.75 0 0 1 1.5 0m6 0a.75.75 0 1 1-1.5 0a.75.75 0 0 1 1.5 0m6 0a.75.75 0 1 1-1.5 0a.75.75 0 0 1 1.5 0'/%3E%3C/svg%3E");
1419
- background-color: currentColor;
1420
- display: inline-block;
1421
- -webkit-mask-size: 100% 100%;
1422
- mask-size: 100% 100%;
1423
- -webkit-mask-repeat: no-repeat;
1424
- mask-repeat: no-repeat;
1425
- }
1426
-
1427
- .icon-\\[heroicons--exclamation-triangle\\] {
1428
- width: 1em;
1429
- height: 1em;
1430
- -webkit-mask-image: var(--svg);
1431
- -webkit-mask-image: var(--svg);
1432
- -webkit-mask-image: var(--svg);
1433
- mask-image: var(--svg);
1434
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z'/%3E%3C/svg%3E");
1435
- background-color: currentColor;
1436
- display: inline-block;
1437
- -webkit-mask-size: 100% 100%;
1438
- mask-size: 100% 100%;
1439
- -webkit-mask-repeat: no-repeat;
1440
- mask-repeat: no-repeat;
1441
- }
1442
-
1443
- .icon-\\[heroicons--home\\] {
1444
- width: 1em;
1445
- height: 1em;
1446
- -webkit-mask-image: var(--svg);
1447
- -webkit-mask-image: var(--svg);
1448
- -webkit-mask-image: var(--svg);
1449
- mask-image: var(--svg);
1450
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2.25 12l8.955-8.955a1.124 1.124 0 0 1 1.59 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25'/%3E%3C/svg%3E");
1451
- background-color: currentColor;
1452
- display: inline-block;
1453
- -webkit-mask-size: 100% 100%;
1454
- mask-size: 100% 100%;
1455
- -webkit-mask-repeat: no-repeat;
1456
- mask-repeat: no-repeat;
1457
- }
1458
-
1459
- .icon-\\[heroicons--key\\] {
1460
- width: 1em;
1461
- height: 1em;
1462
- -webkit-mask-image: var(--svg);
1463
- -webkit-mask-image: var(--svg);
1464
- -webkit-mask-image: var(--svg);
1465
- mask-image: var(--svg);
1466
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25'/%3E%3C/svg%3E");
1467
- background-color: currentColor;
1468
- display: inline-block;
1469
- -webkit-mask-size: 100% 100%;
1470
- mask-size: 100% 100%;
1471
- -webkit-mask-repeat: no-repeat;
1472
- mask-repeat: no-repeat;
1473
- }
1474
-
1475
- .icon-\\[heroicons--share\\] {
1476
- width: 1em;
1477
- height: 1em;
1478
- -webkit-mask-image: var(--svg);
1479
- -webkit-mask-image: var(--svg);
1480
- -webkit-mask-image: var(--svg);
1481
- mask-image: var(--svg);
1482
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M7.217 10.907a2.25 2.25 0 1 0 0 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 1 0 3.935 2.186a2.25 2.25 0 0 0-3.935-2.186m0-12.814a2.25 2.25 0 1 0 3.933-2.185a2.25 2.25 0 0 0-3.933 2.185'/%3E%3C/svg%3E");
1483
- background-color: currentColor;
1484
- display: inline-block;
1485
- -webkit-mask-size: 100% 100%;
1486
- mask-size: 100% 100%;
1487
- -webkit-mask-repeat: no-repeat;
1488
- mask-repeat: no-repeat;
1489
- }
1490
-
1491
- .icon-\\[heroicons--shield-check\\] {
1492
- width: 1em;
1493
- height: 1em;
1494
- -webkit-mask-image: var(--svg);
1495
- -webkit-mask-image: var(--svg);
1496
- -webkit-mask-image: var(--svg);
1497
- mask-image: var(--svg);
1498
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M9 12.75L11.25 15L15 9.75m-3-7.036A11.96 11.96 0 0 1 3.598 6A12 12 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623c5.176-1.332 9-6.03 9-11.622c0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285'/%3E%3C/svg%3E");
1499
- background-color: currentColor;
1500
- display: inline-block;
1501
- -webkit-mask-size: 100% 100%;
1502
- mask-size: 100% 100%;
1503
- -webkit-mask-repeat: no-repeat;
1504
- mask-repeat: no-repeat;
1505
- }
1506
-
1507
- .icon-\\[heroicons--star\\] {
1508
- width: 1em;
1509
- height: 1em;
1510
- -webkit-mask-image: var(--svg);
1511
- -webkit-mask-image: var(--svg);
1512
- -webkit-mask-image: var(--svg);
1513
- mask-image: var(--svg);
1514
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.56.56 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.56.56 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.56.56 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.56.56 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.56.56 0 0 0 .475-.345z'/%3E%3C/svg%3E");
1515
- background-color: currentColor;
1516
- display: inline-block;
1517
- -webkit-mask-size: 100% 100%;
1518
- mask-size: 100% 100%;
1519
- -webkit-mask-repeat: no-repeat;
1520
- mask-repeat: no-repeat;
1521
- }
1522
-
1523
- .icon-\\[heroicons--trash\\] {
1524
- width: 1em;
1525
- height: 1em;
1526
- -webkit-mask-image: var(--svg);
1527
- -webkit-mask-image: var(--svg);
1528
- -webkit-mask-image: var(--svg);
1529
- mask-image: var(--svg);
1530
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21q.512.078 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48 48 0 0 0-3.478-.397m-12 .562q.51-.088 1.022-.165m0 0a48 48 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a52 52 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a49 49 0 0 0-7.5 0'/%3E%3C/svg%3E");
1531
- background-color: currentColor;
1532
- display: inline-block;
1533
- -webkit-mask-size: 100% 100%;
1534
- mask-size: 100% 100%;
1535
- -webkit-mask-repeat: no-repeat;
1536
- mask-repeat: no-repeat;
1537
- }
1538
-
1539
- .icon-\\[heroicons--user\\] {
1540
- width: 1em;
1541
- height: 1em;
1542
- -webkit-mask-image: var(--svg);
1543
- -webkit-mask-image: var(--svg);
1544
- -webkit-mask-image: var(--svg);
1545
- mask-image: var(--svg);
1546
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M15.75 6a3.75 3.75 0 1 1-7.5 0a3.75 3.75 0 0 1 7.5 0M4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.9 17.9 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632'/%3E%3C/svg%3E");
1547
- background-color: currentColor;
1548
- display: inline-block;
1549
- -webkit-mask-size: 100% 100%;
1550
- mask-size: 100% 100%;
1551
- -webkit-mask-repeat: no-repeat;
1552
- mask-repeat: no-repeat;
1553
- }
1554
-
1555
- .icon-\\[heroicons--users\\] {
1556
- width: 1em;
1557
- height: 1em;
1558
- -webkit-mask-image: var(--svg);
1559
- -webkit-mask-image: var(--svg);
1560
- -webkit-mask-image: var(--svg);
1561
- mask-image: var(--svg);
1562
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M15 19.128a9.4 9.4 0 0 0 2.625.372a9.3 9.3 0 0 0 4.121-.952q.004-.086.004-.173a4.125 4.125 0 0 0-7.536-2.32M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.3 12.3 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0a3.375 3.375 0 0 1 6.75 0m8.25 2.25a2.625 2.625 0 1 1-5.25 0a2.625 2.625 0 0 1 5.25 0'/%3E%3C/svg%3E");
1563
- background-color: currentColor;
1564
- display: inline-block;
1565
- -webkit-mask-size: 100% 100%;
1566
- mask-size: 100% 100%;
1567
- -webkit-mask-repeat: no-repeat;
1568
- mask-repeat: no-repeat;
1569
- }
1570
-
1571
- .icon-\\[mdi--account\\] {
1572
- width: 1em;
1573
- height: 1em;
1574
- -webkit-mask-image: var(--svg);
1575
- -webkit-mask-image: var(--svg);
1576
- -webkit-mask-image: var(--svg);
1577
- mask-image: var(--svg);
1578
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4m0 10c4.42 0 8 1.79 8 4v2H4v-2c0-2.21 3.58-4 8-4'/%3E%3C/svg%3E");
1579
- background-color: currentColor;
1580
- display: inline-block;
1581
- -webkit-mask-size: 100% 100%;
1582
- mask-size: 100% 100%;
1583
- -webkit-mask-repeat: no-repeat;
1584
- mask-repeat: no-repeat;
1585
- }
1586
-
1587
- .icon-\\[mdi--format-list-bulleted\\] {
1588
- width: 1em;
1589
- height: 1em;
1590
- -webkit-mask-image: var(--svg);
1591
- -webkit-mask-image: var(--svg);
1592
- -webkit-mask-image: var(--svg);
1593
- mask-image: var(--svg);
1594
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M7 5h14v2H7zm0 8v-2h14v2zM4 4.5A1.5 1.5 0 0 1 5.5 6A1.5 1.5 0 0 1 4 7.5A1.5 1.5 0 0 1 2.5 6A1.5 1.5 0 0 1 4 4.5m0 6A1.5 1.5 0 0 1 5.5 12A1.5 1.5 0 0 1 4 13.5A1.5 1.5 0 0 1 2.5 12A1.5 1.5 0 0 1 4 10.5M7 19v-2h14v2zm-3-2.5A1.5 1.5 0 0 1 5.5 18A1.5 1.5 0 0 1 4 19.5A1.5 1.5 0 0 1 2.5 18A1.5 1.5 0 0 1 4 16.5'/%3E%3C/svg%3E");
1595
- background-color: currentColor;
1596
- display: inline-block;
1597
- -webkit-mask-size: 100% 100%;
1598
- mask-size: 100% 100%;
1599
- -webkit-mask-repeat: no-repeat;
1600
- mask-repeat: no-repeat;
1601
- }
1602
-
1603
- .icon-\\[ri--logout-circle-line\\] {
1604
- width: 1em;
1605
- height: 1em;
1606
- -webkit-mask-image: var(--svg);
1607
- -webkit-mask-image: var(--svg);
1608
- -webkit-mask-image: var(--svg);
1609
- mask-image: var(--svg);
1610
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5 11h8v2H5v3l-5-4l5-4zm-1 7h2.708a8 8 0 1 0 0-12H4a9.99 9.99 0 0 1 8-4c5.523 0 10 4.477 10 10s-4.477 10-10 10a9.99 9.99 0 0 1-8-4'/%3E%3C/svg%3E");
1611
- background-color: currentColor;
1612
- display: inline-block;
1613
- -webkit-mask-size: 100% 100%;
1614
- mask-size: 100% 100%;
1615
- -webkit-mask-repeat: no-repeat;
1616
- mask-repeat: no-repeat;
1617
- }
1618
-
1619
- .contents {
1620
- display: contents;
1621
- }
1622
-
1623
- .flex {
1624
- display: flex;
1625
- }
1626
-
1627
- .grid {
1628
- display: grid;
1629
- }
1630
-
1631
- .hidden {
1632
- display: none;
1633
- }
1634
-
1635
- .inline {
1636
- display: inline;
1637
- }
1638
-
1639
- .h-4 {
1640
- height: calc(var(--spacing) * 4);
1641
- }
1642
-
1643
- .h-5 {
1644
- height: calc(var(--spacing) * 5);
1645
- }
1646
-
1647
- .h-6 {
1648
- height: calc(var(--spacing) * 6);
1649
- }
1650
-
1651
- .h-20 {
1652
- height: calc(var(--spacing) * 20);
1653
- }
1654
-
1655
- .h-fit\\! {
1656
- height: fit-content !important;
1657
- }
1658
-
1659
- .h-full {
1660
- height: 100%;
1661
- }
1662
-
1663
- .w-4 {
1664
- width: calc(var(--spacing) * 4);
1665
- }
1666
-
1667
- .w-5 {
1668
- width: calc(var(--spacing) * 5);
1669
- }
1670
-
1671
- .w-6 {
1672
- width: calc(var(--spacing) * 6);
1673
- }
1674
-
1675
- .w-20 {
1676
- width: calc(var(--spacing) * 20);
1677
- }
1678
-
1679
- .w-100 {
1680
- width: calc(var(--spacing) * 100);
1681
- }
1682
-
1683
- .w-fit {
1684
- width: fit-content;
1685
- }
1686
-
1687
- .w-fit\\! {
1688
- width: fit-content !important;
1689
- }
1690
-
1691
- .w-full {
1692
- width: 100%;
1693
- }
1694
-
1695
- .w-full\\! {
1696
- width: 100% !important;
1697
- }
1698
-
1699
- .flex-1 {
1700
- flex: 1;
1701
- }
1702
-
1703
- .-translate-y-1\\/2 {
1704
- --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
1705
- translate: var(--tw-translate-x) var(--tw-translate-y);
1706
- }
1707
-
1708
- .transform {
1709
- transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );
1710
- }
1711
-
1712
- .cursor-pointer {
1713
- cursor: pointer;
1714
- }
1715
-
1716
- .list-inside {
1717
- list-style-position: inside;
1718
- }
1719
-
1720
- .list-disc {
1721
- list-style-type: disc;
1722
- }
1723
-
1724
- .grid-cols-3 {
1725
- grid-template-columns: repeat(3, minmax(0, 1fr));
1726
- }
1727
-
1728
- .flex-col {
1729
- flex-direction: column;
1730
- }
1731
-
1732
- .flex-wrap {
1733
- flex-wrap: wrap;
1734
- }
1735
-
1736
- .items-center {
1737
- align-items: center;
1738
- }
1739
-
1740
- .justify-around {
1741
- justify-content: space-around;
1742
- }
1743
-
1744
- .justify-end {
1745
- justify-content: flex-end;
1746
- }
1747
-
1748
- .gap-2 {
1749
- gap: calc(var(--spacing) * 2);
1750
- }
1751
-
1752
- .gap-4 {
1753
- gap: calc(var(--spacing) * 4);
1754
- }
1755
-
1756
- :where(.space-y-4 > :not(:last-child)) {
1757
- --tw-space-y-reverse: 0;
1758
- margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
1759
- margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
1760
- }
1761
-
1762
- :where(.space-y-6 > :not(:last-child)) {
1763
- --tw-space-y-reverse: 0;
1764
- margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
1765
- margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
1766
- }
1767
-
1768
- .self-center {
1769
- align-self: center;
1770
- }
1771
-
1772
- .rounded {
1773
- border-radius: .25rem;
1774
- }
1775
-
1776
- .rounded-full {
1777
- border-radius: 3.40282e38px;
1778
- }
1779
-
1780
- .rounded-lg {
1781
- border-radius: var(--radius-lg);
1782
- }
1783
-
1784
- .rounded-md {
1785
- border-radius: var(--radius-md);
1786
- }
1787
-
1788
- .border {
1789
- border-style: var(--tw-border-style);
1790
- border-width: 1px;
1791
- }
1792
-
1793
- .border-l-4 {
1794
- border-left-style: var(--tw-border-style);
1795
- border-left-width: 4px;
1796
- }
1797
-
1798
- .border-solid {
1799
- --tw-border-style: solid;
1800
- border-style: solid;
1801
- }
1802
-
1803
- .border-gray-300 {
1804
- border-color: var(--color-gray-300);
1805
- }
1806
-
1807
- .border-l-\\(--el-color-primary\\) {
1808
- border-left-color: var(--el-color-primary);
1809
- }
1810
-
1811
- .bg-\\(--el-color-error\\)\\/10 {
1812
- background-color: var(--el-color-error);
1813
- }
1814
-
1815
- @supports (color: color-mix(in lab, red, red)) {
1816
- .bg-\\(--el-color-error\\)\\/10 {
1817
- background-color: color-mix(in oklab, var(--el-color-error) 10%, transparent);
1818
- }
1819
- }
1820
-
1821
- .bg-\\(--el-color-info\\)\\/10 {
1822
- background-color: var(--el-color-info);
1823
- }
1824
-
1825
- @supports (color: color-mix(in lab, red, red)) {
1826
- .bg-\\(--el-color-info\\)\\/10 {
1827
- background-color: color-mix(in oklab, var(--el-color-info) 10%, transparent);
1828
- }
1829
- }
1830
-
1831
- .bg-\\(--el-color-primary\\)\\/50 {
1832
- background-color: var(--el-color-primary);
1833
- }
1834
-
1835
- @supports (color: color-mix(in lab, red, red)) {
1836
- .bg-\\(--el-color-primary\\)\\/50 {
1837
- background-color: color-mix(in oklab, var(--el-color-primary) 50%, transparent);
1838
- }
1839
- }
1840
-
1841
- .bg-\\(--el-color-success\\)\\/10 {
1842
- background-color: var(--el-color-success);
1843
- }
1844
-
1845
- @supports (color: color-mix(in lab, red, red)) {
1846
- .bg-\\(--el-color-success\\)\\/10 {
1847
- background-color: color-mix(in oklab, var(--el-color-success) 10%, transparent);
1848
- }
1849
- }
1850
-
1851
- .bg-\\(--el-color-warning\\)\\/10 {
1852
- background-color: var(--el-color-warning);
1853
- }
1854
-
1855
- @supports (color: color-mix(in lab, red, red)) {
1856
- .bg-\\(--el-color-warning\\)\\/10 {
1857
- background-color: color-mix(in oklab, var(--el-color-warning) 10%, transparent);
1858
- }
1859
- }
1860
-
1861
- .bg-\\(--my-var\\), .bg-\\[var\\(--my-var\\)\\] {
1862
- background-color: var(--my-var);
1863
- }
1864
-
1865
- .bg-blue-50 {
1866
- background-color: var(--color-blue-50);
1867
- }
1868
-
1869
- .bg-gray-100 {
1870
- background-color: var(--color-gray-100);
1871
- }
1872
-
1873
- .bg-gray-100\\! {
1874
- background-color: var(--color-gray-100) !important;
1875
- }
1876
-
1877
- .bg-green-50 {
1878
- background-color: var(--color-green-50);
1879
- }
1880
-
1881
- .bg-green-500\\! {
1882
- background-color: var(--color-green-500) !important;
1883
- }
1884
-
1885
- .bg-indigo-50 {
1886
- background-color: var(--color-indigo-50);
1887
- }
1888
-
1889
- .bg-purple-50 {
1890
- background-color: var(--color-purple-50);
1891
- }
1892
-
1893
- .bg-purple-500\\! {
1894
- background-color: var(--color-purple-500) !important;
1895
- }
1896
-
1897
- .bg-red-500\\! {
1898
- background-color: var(--color-red-500) !important;
1899
- }
1900
-
1901
- .bg-white {
1902
- background-color: var(--color-white);
1903
- }
1904
-
1905
- .bg-yellow-50 {
1906
- background-color: var(--color-yellow-50);
1907
- }
1908
-
1909
- .p-2 {
1910
- padding: calc(var(--spacing) * 2);
1911
- }
1912
-
1913
- .p-4 {
1914
- padding: calc(var(--spacing) * 4);
1915
- }
1916
-
1917
- .px-2 {
1918
- padding-inline: calc(var(--spacing) * 2);
1919
- }
1920
-
1921
- .px-4 {
1922
- padding-inline: calc(var(--spacing) * 4);
1923
- }
1924
-
1925
- .py-1\\.5 {
1926
- padding-block: calc(var(--spacing) * 1.5);
1927
- }
1928
-
1929
- .py-2 {
1930
- padding-block: calc(var(--spacing) * 2);
1931
- }
1932
-
1933
- .pr-0 {
1934
- padding-right: calc(var(--spacing) * 0);
1935
- }
1936
-
1937
- .pb-0 {
1938
- padding-bottom: calc(var(--spacing) * 0);
1939
- }
1940
-
1941
- .pl-1\\.5 {
1942
- padding-left: calc(var(--spacing) * 1.5);
1943
- }
1944
-
1945
- .text-center {
1946
- text-align: center;
1947
- }
1948
-
1949
- .text-2xl {
1950
- font-size: var(--text-2xl);
1951
- line-height: var(--tw-leading, var(--text-2xl--line-height));
1952
- }
1953
-
1954
- .text-base {
1955
- font-size: var(--text-base);
1956
- line-height: var(--tw-leading, var(--text-base--line-height));
1957
- }
1958
-
1959
- .text-lg {
1960
- font-size: var(--text-lg);
1961
- line-height: var(--tw-leading, var(--text-lg--line-height));
1962
- }
1963
-
1964
- .text-sm {
1965
- font-size: var(--text-sm);
1966
- line-height: var(--tw-leading, var(--text-sm--line-height));
1967
- }
1968
-
1969
- .text-xl {
1970
- font-size: var(--text-xl);
1971
- line-height: var(--tw-leading, var(--text-xl--line-height));
1972
- }
1973
-
1974
- .text-xs {
1975
- font-size: var(--text-xs);
1976
- line-height: var(--tw-leading, var(--text-xs--line-height));
1977
- }
1978
-
1979
- .font-bold {
1980
- --tw-font-weight: var(--font-weight-bold);
1981
- font-weight: var(--font-weight-bold);
1982
- }
1983
-
1984
- .font-medium {
1985
- --tw-font-weight: var(--font-weight-medium);
1986
- font-weight: var(--font-weight-medium);
1987
- }
1988
-
1989
- .font-semibold {
1990
- --tw-font-weight: var(--font-weight-semibold);
1991
- font-weight: var(--font-weight-semibold);
1992
- }
1993
-
1994
- .text-\\(--el-color-error\\) {
1995
- color: var(--el-color-error);
1996
- }
1997
-
1998
- .text-\\(--el-color-info\\) {
1999
- color: var(--el-color-info);
2000
- }
2001
-
2002
- .text-\\(--el-color-success\\) {
2003
- color: var(--el-color-success);
2004
- }
2005
-
2006
- .text-\\(--el-color-warning\\) {
2007
- color: var(--el-color-warning);
2008
- }
2009
-
2010
- .text-\\[white\\] {
2011
- color: #fff;
2012
- }
2013
-
2014
- .text-blue-500 {
2015
- color: var(--color-blue-500);
2016
- }
2017
-
2018
- .text-blue-600 {
2019
- color: var(--color-blue-600);
2020
- }
2021
-
2022
- .text-blue-800 {
2023
- color: var(--color-blue-800);
2024
- }
2025
-
2026
- .text-gray-400 {
2027
- color: var(--color-gray-400);
2028
- }
2029
-
2030
- .text-gray-500 {
2031
- color: var(--color-gray-500);
2032
- }
2033
-
2034
- .text-gray-600 {
2035
- color: var(--color-gray-600);
2036
- }
2037
-
2038
- .text-gray-600\\! {
2039
- color: var(--color-gray-600) !important;
2040
- }
2041
-
2042
- .text-green-600 {
2043
- color: var(--color-green-600);
2044
- }
2045
-
2046
- .text-green-800 {
2047
- color: var(--color-green-800);
2048
- }
2049
-
2050
- .text-indigo-600 {
2051
- color: var(--color-indigo-600);
2052
- }
2053
-
2054
- .text-indigo-800 {
2055
- color: var(--color-indigo-800);
2056
- }
2057
-
2058
- .text-purple-600 {
2059
- color: var(--color-purple-600);
2060
- }
2061
-
2062
- .text-purple-800 {
2063
- color: var(--color-purple-800);
2064
- }
2065
-
2066
- .text-red-500 {
2067
- color: var(--color-red-500);
2068
- }
2069
-
2070
- .text-white {
2071
- color: var(--color-white);
2072
- }
2073
-
2074
- .text-white\\! {
2075
- color: var(--color-white) !important;
2076
- }
2077
-
2078
- .text-yellow-600 {
2079
- color: var(--color-yellow-600);
2080
- }
2081
-
2082
- .text-yellow-800 {
2083
- color: var(--color-yellow-800);
2084
- }
2085
-
2086
- .lowercase {
2087
- text-transform: lowercase;
2088
- }
2089
-
2090
- .outline {
2091
- outline-style: var(--tw-outline-style);
2092
- outline-width: 1px;
2093
- }
2094
-
2095
- .blur {
2096
- --tw-blur: blur(8px);
2097
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
2098
- }
2099
-
2100
- .transition {
2101
- transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
2102
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
2103
- transition-duration: var(--tw-duration, var(--default-transition-duration));
2104
- }
2105
-
2106
- @media (hover: hover) {
2107
- .hover\\:opacity-80:hover {
2108
- opacity: .8;
2109
- }
2110
- }
2111
-
2112
- .focus\\:border-transparent:focus {
2113
- border-color: #0000;
2114
- }
2115
-
2116
- .focus\\:ring-2:focus {
2117
- --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
2118
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2119
- }
2120
-
2121
- .focus\\:ring-blue-500:focus {
2122
- --tw-ring-color: var(--color-blue-500);
2123
- }
2124
-
2125
- @media (min-width: 48rem) {
2126
- .md\\:col-span-6 {
2127
- grid-column: span 6 / span 6;
2128
- }
2129
-
2130
- .md\\:col-span-8 {
2131
- grid-column: span 8 / span 8;
2132
- }
2133
-
2134
- .md\\:col-span-12 {
2135
- grid-column: span 12 / span 12;
2136
- }
2137
-
2138
- .md\\:block {
2139
- display: block;
2140
- }
2141
-
2142
- .md\\:flex {
2143
- display: flex;
2144
- }
2145
-
2146
- .md\\:hidden {
2147
- display: none;
2148
- }
2149
- }
2150
-
2151
- @media (min-width: 64rem) {
2152
- .lg\\:col-span-4 {
2153
- grid-column: span 4 / span 4;
2154
- }
2155
-
2156
- .lg\\:col-span-6 {
2157
- grid-column: span 6 / span 6;
2158
- }
2159
-
2160
- .lg\\:col-span-8 {
2161
- grid-column: span 8 / span 8;
2162
- }
2163
- }
2164
- }
2165
-
2166
- @property --tw-translate-x {
2167
- syntax: "*";
2168
- inherits: false;
2169
- initial-value: 0;
2170
- }
2171
-
2172
- @property --tw-translate-y {
2173
- syntax: "*";
2174
- inherits: false;
2175
- initial-value: 0;
2176
- }
2177
-
2178
- @property --tw-translate-z {
2179
- syntax: "*";
2180
- inherits: false;
2181
- initial-value: 0;
2182
- }
2183
-
2184
- @property --tw-rotate-x {
2185
- syntax: "*";
2186
- inherits: false
2187
- }
2188
-
2189
- @property --tw-rotate-y {
2190
- syntax: "*";
2191
- inherits: false
2192
- }
2193
-
2194
- @property --tw-rotate-z {
2195
- syntax: "*";
2196
- inherits: false
2197
- }
2198
-
2199
- @property --tw-skew-x {
2200
- syntax: "*";
2201
- inherits: false
2202
- }
2203
-
2204
- @property --tw-skew-y {
2205
- syntax: "*";
2206
- inherits: false
2207
- }
2208
-
2209
- @property --tw-space-y-reverse {
2210
- syntax: "*";
2211
- inherits: false;
2212
- initial-value: 0;
2213
- }
2214
-
2215
- @property --tw-border-style {
2216
- syntax: "*";
2217
- inherits: false;
2218
- initial-value: solid;
2219
- }
2220
-
2221
- @property --tw-font-weight {
2222
- syntax: "*";
2223
- inherits: false
2224
- }
2225
-
2226
- @property --tw-outline-style {
2227
- syntax: "*";
2228
- inherits: false;
2229
- initial-value: solid;
2230
- }
2231
-
2232
- @property --tw-blur {
2233
- syntax: "*";
2234
- inherits: false
2235
- }
2236
-
2237
- @property --tw-brightness {
2238
- syntax: "*";
2239
- inherits: false
2240
- }
2241
-
2242
- @property --tw-contrast {
2243
- syntax: "*";
2244
- inherits: false
2245
- }
2246
-
2247
- @property --tw-grayscale {
2248
- syntax: "*";
2249
- inherits: false
2250
- }
2251
-
2252
- @property --tw-hue-rotate {
2253
- syntax: "*";
2254
- inherits: false
2255
- }
2256
-
2257
- @property --tw-invert {
2258
- syntax: "*";
2259
- inherits: false
2260
- }
2261
-
2262
- @property --tw-opacity {
2263
- syntax: "*";
2264
- inherits: false
2265
- }
2266
-
2267
- @property --tw-saturate {
2268
- syntax: "*";
2269
- inherits: false
2270
- }
2271
-
2272
- @property --tw-sepia {
2273
- syntax: "*";
2274
- inherits: false
2275
- }
2276
-
2277
- @property --tw-drop-shadow {
2278
- syntax: "*";
2279
- inherits: false
2280
- }
2281
-
2282
- @property --tw-drop-shadow-color {
2283
- syntax: "*";
2284
- inherits: false
2285
- }
2286
-
2287
- @property --tw-drop-shadow-alpha {
2288
- syntax: "<percentage>";
2289
- inherits: false;
2290
- initial-value: 100%;
2291
- }
2292
-
2293
- @property --tw-drop-shadow-size {
2294
- syntax: "*";
2295
- inherits: false
2296
- }
2297
-
2298
- @property --tw-shadow {
2299
- syntax: "*";
2300
- inherits: false;
2301
- initial-value: 0 0 #0000;
2302
- }
2303
-
2304
- @property --tw-shadow-color {
2305
- syntax: "*";
2306
- inherits: false
2307
- }
2308
-
2309
- @property --tw-shadow-alpha {
2310
- syntax: "<percentage>";
2311
- inherits: false;
2312
- initial-value: 100%;
2313
- }
2314
-
2315
- @property --tw-inset-shadow {
2316
- syntax: "*";
2317
- inherits: false;
2318
- initial-value: 0 0 #0000;
2319
- }
2320
-
2321
- @property --tw-inset-shadow-color {
2322
- syntax: "*";
2323
- inherits: false
2324
- }
2325
-
2326
- @property --tw-inset-shadow-alpha {
2327
- syntax: "<percentage>";
2328
- inherits: false;
2329
- initial-value: 100%;
2330
- }
2331
-
2332
- @property --tw-ring-color {
2333
- syntax: "*";
2334
- inherits: false
2335
- }
2336
-
2337
- @property --tw-ring-shadow {
2338
- syntax: "*";
2339
- inherits: false;
2340
- initial-value: 0 0 #0000;
2341
- }
2342
-
2343
- @property --tw-inset-ring-color {
2344
- syntax: "*";
2345
- inherits: false
2346
- }
2347
-
2348
- @property --tw-inset-ring-shadow {
2349
- syntax: "*";
2350
- inherits: false;
2351
- initial-value: 0 0 #0000;
2352
- }
2353
-
2354
- @property --tw-ring-inset {
2355
- syntax: "*";
2356
- inherits: false
2357
- }
2358
-
2359
- @property --tw-ring-offset-width {
2360
- syntax: "<length>";
2361
- inherits: false;
2362
- initial-value: 0;
2363
- }
2364
-
2365
- @property --tw-ring-offset-color {
2366
- syntax: "*";
2367
- inherits: false;
2368
- initial-value: #fff;
2369
- }
2370
-
2371
- @property --tw-ring-offset-shadow {
2372
- syntax: "*";
2373
- inherits: false;
2374
- initial-value: 0 0 #0000;
2375
- }
2376
- /*$vite$:1*/`;
2377
- document.head.appendChild(__vite_style__);
2378
- const version$1 = "0.0.56";
2379
- const INSTALLED_KEY = Symbol("INSTALLED_KEY");
2380
- function createInstaller(components2 = []) {
2381
- const install2 = (app, options) => {
2382
- if (app[INSTALLED_KEY])
2383
- return;
2384
- app[INSTALLED_KEY] = true;
2385
- app.use(ElementPlus, options == null ? void 0 : options.elementPlusOptions);
2386
- components2.forEach((c) => app.use(c));
2387
- };
2388
- return {
2389
- install: install2,
2390
- version: version$1
2391
- };
2392
- }
2393
- function installWithSFC(main, extra) {
2394
- main.install = ((app, ..._options) => {
2395
- for (const comp of [main, ...Object.values({})]) {
2396
- if (comp && comp.name) {
2397
- app.component(comp.name, comp);
2398
- }
2399
- }
2400
- return app;
2401
- });
2402
- return main;
2403
- }
2404
- const _hoisted_1$5 = ["disabled"];
2405
- const _hoisted_2$4 = {
2406
- key: 0,
2407
- class: "jky-button__loading"
2408
- };
2409
- const _hoisted_3$3 = {
2410
- key: 0,
2411
- class: "jky-button__icon"
2412
- };
2413
- const _hoisted_4$3 = {
2414
- key: 1,
2415
- class: "jky-button__icon"
2416
- };
2417
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
2418
- name: "JkyButton"
2419
- }), {
2420
- __name: "Button",
2421
- props: {
2422
- type: { default: "primary" },
2423
- size: { default: "default" },
2424
- disabled: { type: Boolean, default: false },
2425
- loading: { type: Boolean, default: false },
2426
- icon: {},
2427
- iconPosition: { default: "prefix" }
2428
- },
2429
- emits: ["click"],
2430
- setup(__props, { emit: __emit }) {
2431
- const emit = __emit;
2432
- function handleClick() {
2433
- if (!__props.disabled && !__props.loading) {
2434
- emit("click");
2435
- }
2436
- }
2437
- return (_ctx, _cache) => {
2438
- return vue.openBlock(), vue.createElementBlock("button", {
2439
- class: vue.normalizeClass(["jky-button", [
2440
- `jky-button--${__props.type}`,
2441
- `jky-button--${__props.size}`,
2442
- {
2443
- "is-disabled": __props.disabled,
2444
- "is-loading": __props.loading
2445
- }
2446
- ]]),
2447
- disabled: __props.disabled || __props.loading,
2448
- onClick: handleClick
2449
- }, [
2450
- __props.loading ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$4, [..._cache[0] || (_cache[0] = [
2451
- vue.createElementVNode("svg", {
2452
- class: "loading-spinner",
2453
- viewBox: "0 0 50 50"
2454
- }, [
2455
- vue.createElementVNode("circle", {
2456
- cx: "25",
2457
- cy: "25",
2458
- r: "20",
2459
- fill: "none",
2460
- stroke: "currentColor",
2461
- "stroke-width": "4",
2462
- "stroke-dasharray": "80",
2463
- "stroke-dashoffset": "0"
2464
- }, [
2465
- vue.createElementVNode("animateTransform", {
2466
- attributeName: "transform",
2467
- type: "rotate",
2468
- from: "0 25 25",
2469
- to: "360 25 25",
2470
- dur: "1s",
2471
- repeatCount: "indefinite"
2472
- })
2473
- ])
2474
- ], -1)
2475
- ])])) : __props.icon ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
2476
- __props.iconPosition === "prefix" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$3, [
2477
- vue.renderSlot(_ctx.$slots, "icon", {}, () => [
2478
- vue.createElementVNode("span", {
2479
- class: vue.normalizeClass(__props.icon)
2480
- }, null, 2)
2481
- ])
2482
- ])) : vue.createCommentVNode("", true),
2483
- vue.renderSlot(_ctx.$slots, "default"),
2484
- __props.iconPosition === "suffix" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$3, [
2485
- vue.renderSlot(_ctx.$slots, "icon", {}, () => [
2486
- vue.createElementVNode("span", {
2487
- class: vue.normalizeClass(__props.icon)
2488
- }, null, 2)
2489
- ])
2490
- ])) : vue.createCommentVNode("", true)
2491
- ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
2492
- vue.renderSlot(_ctx.$slots, "icon"),
2493
- vue.renderSlot(_ctx.$slots, "default")
2494
- ], 64))
2495
- ], 10, _hoisted_1$5);
2496
- };
2497
- }
2498
- }));
2499
- const JkyButton = installWithSFC(_sfc_main$9);
2500
- const _hoisted_1$4 = { class: "jky-button-nav flex flex-wrap items-center gap-2" };
2501
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
2502
- name: "JkyButtonNav"
2503
- }), {
2504
- __name: "ButtonNav",
2505
- props: {
2506
- modelValue: {},
2507
- items: { default: () => [] },
2508
- limit: { default: 2 },
2509
- size: { default: "default" },
2510
- type: { default: "primary" },
2511
- plain: { type: Boolean, default: false },
2512
- buttonWidth: {},
2513
- route: { type: Boolean, default: false }
2514
- },
2515
- emits: ["update:modelValue", "change", "navClick"],
2516
- setup(__props, { emit: __emit }) {
2517
- const props = __props;
2518
- const emit = __emit;
2519
- const router = vue.inject("router", null);
2520
- const route = vue.inject("route", null);
2521
- const visibleItems = vue.computed(() => props.items.slice(0, props.limit));
2522
- const hiddenItems = vue.computed(() => props.items.slice(props.limit));
2523
- const hasMore = vue.computed(() => props.items.length > props.limit);
2524
- function isActiveItem(item) {
2525
- if (props.route && item.to && route) {
2526
- const targetPath = typeof item.to === "string" ? item.to : item.to.path;
2527
- return route.path === targetPath;
2528
- }
2529
- return props.modelValue === item.value;
2530
- }
2531
- function handleClick(item) {
2532
- emit("update:modelValue", item.value);
2533
- emit("change", item.value);
2534
- emit("navClick", item);
2535
- if (props.route && item.to) {
2536
- if (router) {
2537
- router.push(item.to);
2538
- }
2539
- }
2540
- }
2541
- return (_ctx, _cache) => {
2542
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
2543
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(visibleItems.value, (item) => {
2544
- return vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElButton), {
2545
- key: item.value,
2546
- type: isActiveItem(item) ? props.type : "default",
2547
- size: props.size,
2548
- disabled: item.disabled,
2549
- link: props.plain && !isActiveItem(item),
2550
- style: vue.normalizeStyle({ width: props.buttonWidth }),
2551
- class: vue.normalizeClass({
2552
- "is-active": isActiveItem(item)
2553
- }),
2554
- onClick: ($event) => handleClick(item)
2555
- }, vue.createSlots({
2556
- default: vue.withCtx(() => [
2557
- vue.createTextVNode(" " + vue.toDisplayString(item.label), 1)
2558
- ]),
2559
- _: 2
2560
- }, [
2561
- item.icon ? {
2562
- name: "icon",
2563
- fn: vue.withCtx(() => [
2564
- vue.createElementVNode("span", {
2565
- class: vue.normalizeClass(item.icon)
2566
- }, null, 2)
2567
- ]),
2568
- key: "0"
2569
- } : void 0
2570
- ]), 1032, ["type", "size", "disabled", "link", "style", "class", "onClick"]);
2571
- }), 128)),
2572
- hasMore.value ? (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElDropdown), {
2573
- key: 0,
2574
- trigger: "click"
2575
- }, {
2576
- dropdown: vue.withCtx(() => [
2577
- vue.createVNode(vue.unref(ElementPlus.ElDropdownMenu), { class: "jky-button-nav-dropdown" }, {
2578
- default: vue.withCtx(() => [
2579
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(hiddenItems.value, (item) => {
2580
- return vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElDropdownItem), {
2581
- key: item.value,
2582
- disabled: item.disabled,
2583
- onClick: ($event) => handleClick(item)
2584
- }, {
2585
- default: vue.withCtx(() => [
2586
- item.icon ? (vue.openBlock(), vue.createElementBlock("span", {
2587
- key: 0,
2588
- class: vue.normalizeClass([item.icon, "mr-2"])
2589
- }, null, 2)) : vue.createCommentVNode("", true),
2590
- vue.createTextVNode(" " + vue.toDisplayString(item.label), 1)
2591
- ]),
2592
- _: 2
2593
- }, 1032, ["disabled", "onClick"]);
2594
- }), 128))
2595
- ]),
2596
- _: 1
2597
- })
2598
- ]),
2599
- default: vue.withCtx(() => [
2600
- vue.createVNode(vue.unref(ElementPlus.ElButton), {
2601
- type: hiddenItems.value.some((item) => isActiveItem(item)) ? props.type : "default",
2602
- size: props.size,
2603
- link: props.plain && !hiddenItems.value.some((item) => isActiveItem(item)),
2604
- style: vue.normalizeStyle({ width: props.buttonWidth }),
2605
- class: vue.normalizeClass({
2606
- "is-active": hiddenItems.value.some((item) => isActiveItem(item))
2607
- })
2608
- }, {
2609
- default: vue.withCtx(() => [..._cache[0] || (_cache[0] = [
2610
- vue.createTextVNode(" 更多 ", -1),
2611
- vue.createElementVNode("span", { class: "ml-1" }, "▼", -1)
2612
- ])]),
2613
- _: 1
2614
- }, 8, ["type", "size", "link", "style", "class"])
2615
- ]),
2616
- _: 1
2617
- })) : vue.createCommentVNode("", true)
2618
- ]);
2619
- };
2620
- }
2621
- }));
2622
- const JkyButtonNav = installWithSFC(_sfc_main$8);
2623
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
2624
- name: "JkyCodeMirrorEditor"
2625
- }), {
2626
- __name: "CodeMirrorEditor",
2627
- props: {
2628
- modelValue: { default: "" },
2629
- height: { default: "400px" },
2630
- disabled: { type: Boolean, default: false },
2631
- readonly: { type: Boolean, default: false },
2632
- language: { default: "javascript" },
2633
- theme: { default: "oneDark" },
2634
- lineNumbers: { type: Boolean, default: true },
2635
- lineWrapping: { type: Boolean, default: false }
2636
- },
2637
- emits: ["update:modelValue", "change"],
2638
- setup(__props, { expose: __expose, emit: __emit }) {
2639
- var _a;
2640
- const props = __props;
2641
- const emit = __emit;
2642
- const editorRef = vue.ref();
2643
- let editorView = null;
2644
- let innerValue = (_a = props.modelValue) != null ? _a : "";
2645
- function getLanguageExtension(language) {
2646
- switch (language) {
2647
- case "typescript":
2648
- case "javascript":
2649
- return langJavascript.javascript({
2650
- jsx: true,
2651
- typescript: language === "typescript"
2652
- });
2653
- case "json":
2654
- return langJson.json();
2655
- case "css":
2656
- return langCss.css();
2657
- case "markdown":
2658
- return langMarkdown.markdown();
2659
- case "html":
2660
- return langHtml.html();
2661
- case "vue":
2662
- return langVue.vue();
2663
- default:
2664
- return langJavascript.javascript();
2665
- }
2666
- }
2667
- function initializeEditor() {
2668
- if (!editorRef.value)
2669
- return;
2670
- const extensions = [
2671
- codemirror.basicSetup,
2672
- getLanguageExtension(props.language),
2673
- view.EditorView.updateListener.of((update) => {
2674
- if (update.docChanged) {
2675
- const newValue = update.state.doc.toString();
2676
- innerValue = newValue;
2677
- emit("change", newValue);
2678
- emit("update:modelValue", newValue);
2679
- }
2680
- }),
2681
- view.EditorView.editable.of(!props.disabled && !props.readonly),
2682
- state.EditorState.readOnly.of(props.readonly)
2683
- ];
2684
- if (props.theme === "oneDark") {
2685
- extensions.push(themeOneDark.oneDark);
2686
- }
2687
- if (!props.lineNumbers) {
2688
- extensions.push(view.lineNumbers());
2689
- }
2690
- if (props.lineWrapping) {
2691
- extensions.push(view.EditorView.lineWrapping);
2692
- }
2693
- try {
2694
- editorView = new view.EditorView({
2695
- state: state.EditorState.create({
2696
- doc: innerValue,
2697
- extensions
2698
- }),
2699
- parent: editorRef.value
2700
- });
2701
- } catch (error) {
2702
- console.error("Failed to initialize CodeMirror Editor:", error);
2703
- }
2704
- }
2705
- vue.watch(() => props.modelValue, (newValue) => {
2706
- if (newValue !== innerValue && editorView) {
2707
- const currentContent = editorView.state.doc.toString();
2708
- if (currentContent !== newValue) {
2709
- editorView.dispatch({
2710
- changes: {
2711
- from: 0,
2712
- to: currentContent.length,
2713
- insert: newValue
2714
- }
2715
- });
2716
- innerValue = newValue;
2717
- }
2718
- }
2719
- });
2720
- vue.watch(() => props.language, () => {
2721
- if (editorView) {
2722
- const currentValue = editorView.state.doc.toString();
2723
- editorView.destroy();
2724
- innerValue = currentValue;
2725
- initializeEditor();
2726
- }
2727
- });
2728
- vue.watch([() => props.disabled, () => props.readonly], () => {
2729
- if (editorView) {
2730
- const currentValue = editorView.state.doc.toString();
2731
- editorView.destroy();
2732
- innerValue = currentValue;
2733
- initializeEditor();
2734
- }
2735
- });
2736
- vue.onMounted(() => {
2737
- initializeEditor();
2738
- });
2739
- vue.onUnmounted(() => {
2740
- if (editorView) {
2741
- editorView.destroy();
2742
- editorView = null;
2743
- }
2744
- });
2745
- __expose({
2746
- getEditor: () => editorView,
2747
- getContent: () => {
2748
- var _a2;
2749
- return (_a2 = editorView == null ? void 0 : editorView.state.doc.toString()) != null ? _a2 : "";
2750
- },
2751
- setContent: (content) => {
2752
- if (editorView) {
2753
- editorView.dispatch({
2754
- changes: {
2755
- from: 0,
2756
- to: editorView.state.doc.length,
2757
- insert: content
2758
- }
2759
- });
2760
- }
2761
- }
2762
- });
2763
- return (_ctx, _cache) => {
2764
- return vue.openBlock(), vue.createElementBlock("div", {
2765
- class: "j-code-mirror-editor",
2766
- style: vue.normalizeStyle({ height: __props.height })
2767
- }, [
2768
- vue.createElementVNode("div", {
2769
- ref_key: "editorRef",
2770
- ref: editorRef,
2771
- class: "code-mirror-container"
2772
- }, null, 512)
2773
- ], 4);
2774
- };
2775
- }
2776
- }));
2777
- const JkyCodeMirrorEditor = installWithSFC(_sfc_main$7);
2778
- /*! Element Plus Icons Vue v2.3.2 */
2779
- var _sfc_main48 = /* @__PURE__ */ vue.defineComponent({
2780
- name: "CircleCheckFilled",
2781
- __name: "circle-check-filled",
2782
- setup(__props) {
2783
- return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
2784
- xmlns: "http://www.w3.org/2000/svg",
2785
- viewBox: "0 0 1024 1024"
2786
- }, [
2787
- vue.createElementVNode("path", {
2788
- fill: "currentColor",
2789
- d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"
2790
- })
2791
- ]));
2792
- }
2793
- }), circle_check_filled_default = _sfc_main48;
2794
- var _sfc_main50 = /* @__PURE__ */ vue.defineComponent({
2795
- name: "CircleCloseFilled",
2796
- __name: "circle-close-filled",
2797
- setup(__props) {
2798
- return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
2799
- xmlns: "http://www.w3.org/2000/svg",
2800
- viewBox: "0 0 1024 1024"
2801
- }, [
2802
- vue.createElementVNode("path", {
2803
- fill: "currentColor",
2804
- d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"
2805
- })
2806
- ]));
2807
- }
2808
- }), circle_close_filled_default = _sfc_main50;
2809
- var _sfc_main201 = /* @__PURE__ */ vue.defineComponent({
2810
- name: "Plus",
2811
- __name: "plus",
2812
- setup(__props) {
2813
- return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
2814
- xmlns: "http://www.w3.org/2000/svg",
2815
- viewBox: "0 0 1024 1024"
2816
- }, [
2817
- vue.createElementVNode("path", {
2818
- fill: "currentColor",
2819
- d: "M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"
2820
- })
2821
- ]));
2822
- }
2823
- }), plus_default = _sfc_main201;
2824
- var _sfc_main211 = /* @__PURE__ */ vue.defineComponent({
2825
- name: "QuestionFilled",
2826
- __name: "question-filled",
2827
- setup(__props) {
2828
- return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
2829
- xmlns: "http://www.w3.org/2000/svg",
2830
- viewBox: "0 0 1024 1024"
2831
- }, [
2832
- vue.createElementVNode("path", {
2833
- fill: "currentColor",
2834
- d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592q0-64.416-42.24-101.376c-28.16-25.344-65.472-37.312-111.232-37.312m-12.672 406.208a54.27 54.27 0 0 0-38.72 14.784 49.4 49.4 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.85 54.85 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.97 51.97 0 0 0-15.488-38.016 55.94 55.94 0 0 0-39.424-14.784"
2835
- })
2836
- ]));
2837
- }
2838
- }), question_filled_default = _sfc_main211;
2839
- var _sfc_main287 = /* @__PURE__ */ vue.defineComponent({
2840
- name: "WarningFilled",
2841
- __name: "warning-filled",
2842
- setup(__props) {
2843
- return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
2844
- xmlns: "http://www.w3.org/2000/svg",
2845
- viewBox: "0 0 1024 1024"
2846
- }, [
2847
- vue.createElementVNode("path", {
2848
- fill: "currentColor",
2849
- d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"
2850
- })
2851
- ]));
2852
- }
2853
- }), warning_filled_default = _sfc_main287;
2854
- const _hoisted_1$3 = {
2855
- key: 0,
2856
- style: { "display": "none" }
2857
- };
2858
- const _hoisted_2$3 = { class: "jky-form-item__title text-base font-medium flex items-center" };
2859
- const _hoisted_3$2 = { class: "flex items-center" };
2860
- const _hoisted_4$2 = {
2861
- key: 0,
2862
- class: "flex items-center"
2863
- };
2864
- const _hoisted_5$2 = {
2865
- key: 0,
2866
- class: "mr-2"
2867
- };
2868
- const _hoisted_6$1 = {
2869
- key: 1,
2870
- class: "ml-2"
2871
- };
2872
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
2873
- name: "JkyFormItem",
2874
- inheritAttrs: false
2875
- }), {
2876
- __name: "FormItem",
2877
- props: {
2878
- field: {},
2879
- config: {},
2880
- model: {},
2881
- readonly: { type: Boolean, default: false },
2882
- disabled: { type: Boolean, default: false },
2883
- label: {},
2884
- labelWidth: {},
2885
- labelPosition: {},
2886
- prop: {},
2887
- required: { type: Boolean },
2888
- rules: {},
2889
- error: {},
2890
- validateStatus: {},
2891
- for: {},
2892
- inlineMessage: { type: Boolean },
2893
- showMessage: { type: Boolean },
2894
- size: {}
2895
- },
2896
- setup(__props) {
2897
- const props = __props;
2898
- const loading = vue.ref(false);
2899
- const componentProps = vue.ref({});
2900
- function loadComponentProps() {
2901
- return __async(this, null, function* () {
2902
- const configProps = props.config.componentProps;
2903
- if (!configProps) {
2904
- componentProps.value = {};
2905
- return;
2906
- }
2907
- if (typeof configProps === "function") {
2908
- loading.value = true;
2909
- try {
2910
- const result = yield configProps({
2911
- model: props.model,
2912
- field: props.field,
2913
- $form: props.model
2914
- });
2915
- componentProps.value = result || {};
2916
- } catch (error) {
2917
- console.error("Failed to load component props:", error);
2918
- componentProps.value = {};
2919
- } finally {
2920
- loading.value = false;
2921
- }
2922
- return;
2923
- }
2924
- componentProps.value = configProps;
2925
- });
2926
- }
2927
- vue.watch(
2928
- () => props.model,
2929
- () => {
2930
- loadComponentProps();
2931
- },
2932
- { deep: true }
2933
- );
2934
- loadComponentProps();
2935
- const modelValue = vue.computed({
2936
- get: () => props.model[props.field],
2937
- set: (val) => {
2938
- props.model[props.field] = val;
2939
- }
2940
- });
2941
- const isHidden = vue.computed(() => {
2942
- if (typeof props.config.hidden === "function") {
2943
- return props.config.hidden({
2944
- model: props.model,
2945
- field: props.field,
2946
- $form: props.model
2947
- });
2948
- }
2949
- return props.config.hidden || false;
2950
- });
2951
- const formItemProps = vue.computed(() => {
2952
- const config = props.config;
2953
- const _a = config, {
2954
- field,
2955
- type,
2956
- title,
2957
- placeholder,
2958
- componentProps: componentProps2,
2959
- hidden,
2960
- className,
2961
- customStyle,
2962
- children,
2963
- render,
2964
- prepend,
2965
- append,
2966
- prefixIcon,
2967
- suffixIcon,
2968
- clearable,
2969
- filterable,
2970
- multiple,
2971
- options,
2972
- formatValue,
2973
- formatModel,
2974
- noLabelMargin,
2975
- titleRender
2976
- } = _a, rest = __objRest(_a, [
2977
- "field",
2978
- "type",
2979
- "title",
2980
- "placeholder",
2981
- "componentProps",
2982
- "hidden",
2983
- "className",
2984
- "customStyle",
2985
- "children",
2986
- "render",
2987
- "prepend",
2988
- "append",
2989
- "prefixIcon",
2990
- "suffixIcon",
2991
- "clearable",
2992
- "filterable",
2993
- "multiple",
2994
- "options",
2995
- "formatValue",
2996
- "formatModel",
2997
- "noLabelMargin",
2998
- "titleRender"
2999
- ]);
3000
- return rest;
3001
- });
3002
- function renderComponent(type) {
3003
- var _a, _b;
3004
- if (type === "divider") {
3005
- const dividerProps = __spreadValues({}, componentProps.value);
3006
- return vue.h(ElementPlus.ElDivider, dividerProps, {
3007
- default: () => props.config.children || null
3008
- });
3009
- }
3010
- const commonProps = __spreadValues({
3011
- "modelValue": modelValue.value,
3012
- "onUpdate:modelValue": (val) => {
3013
- props.model[props.field] = val;
3014
- },
3015
- "placeholder": props.config.placeholder,
3016
- "disabled": props.disabled,
3017
- "clearable": props.config.clearable
3018
- }, componentProps.value);
3019
- switch (type) {
3020
- case "input":
3021
- return vue.h(ElementPlus.ElInput, __spreadProps(__spreadValues({}, commonProps), {
3022
- prefixIcon: props.config.prefixIcon,
3023
- suffixIcon: props.config.suffixIcon
3024
- }));
3025
- case "textarea":
3026
- return vue.h(ElementPlus.ElInput, __spreadProps(__spreadValues({}, commonProps), {
3027
- type: "textarea",
3028
- rows: 4
3029
- }));
3030
- case "select": {
3031
- const selectProps = __spreadValues(__spreadValues({}, commonProps), componentProps.value);
3032
- return vue.h(ElementPlus.ElSelect, selectProps);
3033
- }
3034
- case "autocomplete": {
3035
- const autocompleteProps = __spreadValues(__spreadValues({}, commonProps), componentProps.value);
3036
- return vue.h(ElementPlus.ElAutocomplete, autocompleteProps);
3037
- }
3038
- case "datepicker":
3039
- return vue.h(ElementPlus.ElDatePicker, __spreadValues(__spreadValues({}, commonProps), componentProps.value));
3040
- case "datetime-picker":
3041
- return vue.h(ElementPlus.ElDatePicker, __spreadValues(__spreadValues({}, commonProps), componentProps.value));
3042
- case "time-picker":
3043
- return vue.h(ElementPlus.ElTimePicker, __spreadValues(__spreadValues({}, commonProps), componentProps.value));
3044
- case "time-select":
3045
- return vue.h(ElementPlus.ElTimeSelect, __spreadValues(__spreadValues({}, commonProps), componentProps.value));
3046
- case "radio-group": {
3047
- const radioGroupProps = __spreadValues(__spreadValues({}, commonProps), componentProps.value);
3048
- return vue.h(
3049
- ElementPlus.ElRadioGroup,
3050
- radioGroupProps,
3051
- {
3052
- default: () => {
3053
- const options = componentProps.value.options || props.config.options || [];
3054
- return options.map(
3055
- (option) => vue.h(ElementPlus.ElRadio, {
3056
- key: option.value,
3057
- value: option.value,
3058
- disabled: option.disabled
3059
- }, {
3060
- default: () => option.label
3061
- })
3062
- );
3063
- }
3064
- }
3065
- );
3066
- }
3067
- case "checkbox-group": {
3068
- const arrayModelValue = Array.isArray(modelValue.value) ? modelValue.value : [];
3069
- const checkboxGroupProps = __spreadValues(__spreadProps(__spreadValues({}, commonProps), {
3070
- modelValue: arrayModelValue
3071
- }), componentProps.value);
3072
- return vue.h(
3073
- ElementPlus.ElCheckboxGroup,
3074
- checkboxGroupProps,
3075
- {
3076
- default: () => {
3077
- const options = componentProps.value.options || props.config.options || [];
3078
- return options.map(
3079
- (option) => vue.h(ElementPlus.ElCheckbox, {
3080
- key: option.value,
3081
- value: option.value,
3082
- disabled: option.disabled
3083
- }, {
3084
- default: () => option.label
3085
- })
3086
- );
3087
- }
3088
- }
3089
- );
3090
- }
3091
- case "switch":
3092
- return vue.h(ElementPlus.ElSwitch, __spreadValues(__spreadValues({}, commonProps), componentProps.value));
3093
- case "slider":
3094
- return vue.h(ElementPlus.ElSlider, __spreadValues(__spreadValues({}, commonProps), componentProps.value));
3095
- case "cascader": {
3096
- const cascaderProps = __spreadValues(__spreadValues({}, commonProps), componentProps.value);
3097
- return vue.h(ElementPlus.ElCascader, cascaderProps);
3098
- }
3099
- case "tree-select": {
3100
- const treeSelectProps = __spreadValues(__spreadValues({}, commonProps), componentProps.value);
3101
- return vue.h(ElementPlus.ElTreeSelect, treeSelectProps);
3102
- }
3103
- case "color-picker":
3104
- return vue.h(ElementPlus.ElColorPicker, __spreadValues(__spreadValues({}, commonProps), componentProps.value));
3105
- case "rate":
3106
- return vue.h(ElementPlus.ElRate, __spreadValues(__spreadValues({}, commonProps), componentProps.value));
3107
- case "input-number": {
3108
- const numberModelValue = modelValue.value === "" || modelValue.value === null || modelValue.value === void 0 ? null : Number(modelValue.value);
3109
- const inputNumberProps = __spreadValues(__spreadProps(__spreadValues({}, commonProps), {
3110
- "modelValue": numberModelValue,
3111
- "onUpdate:modelValue": (val) => {
3112
- props.model[props.field] = val;
3113
- }
3114
- }), componentProps.value);
3115
- return vue.h(ElementPlus.ElInputNumber, inputNumberProps);
3116
- }
3117
- // 图片上传
3118
- case "image-upload": {
3119
- const uploadProps = __spreadValues(__spreadProps(__spreadValues({}, commonProps), {
3120
- "action": componentProps.value.action || "#",
3121
- "file-list": componentProps.value.fileList || [],
3122
- "list-type": componentProps.value.listType || "picture-card",
3123
- "onPreview": componentProps.value.onPreview,
3124
- "onRemove": componentProps.value.onRemove
3125
- }), componentProps.value);
3126
- if (uploadProps["list-type"] === "picture-card") {
3127
- return vue.h(ElementPlus.ElUpload, uploadProps, {
3128
- default: () => vue.h("div", { class: "el-upload__picture-card-wrapper" }, [
3129
- vue.h(ElementPlus.ElIcon, { size: 24 }, { default: () => vue.h(plus_default) })
3130
- ])
3131
- });
3132
- }
3133
- if (uploadProps["list-type"] === "picture") {
3134
- return vue.h(ElementPlus.ElUpload, uploadProps, {
3135
- default: () => vue.h(ElementPlus.ElButton, { type: "primary" }, { default: () => "点击上传" })
3136
- });
3137
- }
3138
- return vue.h(ElementPlus.ElUpload, uploadProps);
3139
- }
3140
- // 文件上传
3141
- case "file-upload": {
3142
- const uploadProps = __spreadValues(__spreadProps(__spreadValues({}, commonProps), {
3143
- "action": componentProps.value.action || "#",
3144
- "file-list": componentProps.value.fileList || [],
3145
- "list-type": componentProps.value.listType || "text",
3146
- "onPreview": componentProps.value.onPreview,
3147
- "onRemove": componentProps.value.onRemove
3148
- }), componentProps.value);
3149
- if (uploadProps["list-type"] === "text") {
3150
- return vue.h(ElementPlus.ElUpload, uploadProps, {
3151
- default: () => vue.h(ElementPlus.ElButton, { type: "primary" }, { default: () => "点击上传" })
3152
- });
3153
- }
3154
- return vue.h(ElementPlus.ElUpload, uploadProps);
3155
- }
3156
- // CodeMirror 编辑器
3157
- case "code-mirror-editor": {
3158
- const codeMirrorProps = __spreadValues(__spreadValues({}, commonProps), componentProps.value);
3159
- return vue.h(JkyCodeMirrorEditor, codeMirrorProps);
3160
- }
3161
- case "custom":
3162
- return (_b = (_a = props.config).render) == null ? void 0 : _b.call(_a, commonProps);
3163
- default:
3164
- return vue.h(ElementPlus.ElInput, commonProps);
3165
- }
3166
- }
3167
- function renderHelpTooltip() {
3168
- if (!props.config.help)
3169
- return null;
3170
- const { help } = props.config;
3171
- const { text, type = "info", position = "top" } = help;
3172
- const iconMap = {
3173
- info: { icon: question_filled_default, color: "var(--el-color-info)" },
3174
- warning: { icon: warning_filled_default, color: "var(--el-color-warning)" },
3175
- success: { icon: circle_check_filled_default, color: "var(--el-color-success)" },
3176
- error: { icon: circle_close_filled_default, color: "var(--el-color-error)" }
3177
- };
3178
- const { icon, color } = iconMap[type];
3179
- return vue.h(
3180
- ElementPlus.ElTooltip,
3181
- {
3182
- content: text,
3183
- placement: position
3184
- },
3185
- {
3186
- default: () => vue.h(
3187
- ElementPlus.ElIcon,
3188
- {
3189
- style: { color, cursor: "pointer", marginLeft: "4px" },
3190
- size: 16
3191
- },
3192
- { default: () => vue.h(icon) }
3193
- )
3194
- }
3195
- );
3196
- }
3197
- function renderHelpText() {
3198
- if (!props.config.help || props.config.help.tooltip)
3199
- return null;
3200
- const { text, type = "info" } = props.config.help;
3201
- const typeStyles = {
3202
- info: "bg-(--el-color-info)/10 text-(--el-color-info)",
3203
- warning: "bg-(--el-color-warning)/10 text-(--el-color-warning)",
3204
- success: "bg-(--el-color-success)/10 text-(--el-color-success)",
3205
- error: "bg-(--el-color-error)/10 text-(--el-color-error)"
3206
- };
3207
- return vue.h(
3208
- "div",
3209
- {
3210
- class: `jky-form-item__help mt-2 text-xs px-2 py-1.5 rounded ${typeStyles[type]}`
3211
- },
3212
- { default: () => text }
3213
- );
3214
- }
3215
- return (_ctx, _cache) => {
3216
- return isHidden.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3)) : __props.config.title && !__props.config.label ? (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElFormItem), vue.mergeProps({
3217
- key: 1,
3218
- prop: __props.field
3219
- }, __spreadValues(__spreadValues({}, formItemProps.value), _ctx.$attrs), {
3220
- class: ["jky-form-item jky-form-item--no-label", [__props.config.useDefaultBorderClass ? "border-l-4 border-solid border-l-(--el-color-primary) bg-(--el-color-primary)/50 pl-1.5" : "", __props.config.className]],
3221
- style: [__props.config.customStyle]
3222
- }), {
3223
- default: vue.withCtx(() => [
3224
- vue.createElementVNode("div", _hoisted_2$3, [
3225
- __props.config.titleRender ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.config.titleRender({ model: modelValue.value, field: __props.field })), { key: 0 })) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
3226
- vue.createTextVNode(vue.toDisplayString(__props.config.title), 1)
3227
- ], 64)),
3228
- __props.config.help && __props.config.help.tooltip ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderHelpTooltip()), { key: 2 })) : vue.createCommentVNode("", true)
3229
- ]),
3230
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent(__props.config.type || "input")))),
3231
- __props.config.help && !__props.config.help.tooltip ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderHelpText()), { key: 0 })) : vue.createCommentVNode("", true)
3232
- ]),
3233
- _: 1
3234
- }, 16, ["prop", "class", "style"])) : (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElFormItem), vue.mergeProps({
3235
- key: 2,
3236
- label: __props.config.label,
3237
- prop: __props.field
3238
- }, __spreadValues(__spreadValues({}, formItemProps.value), _ctx.$attrs), {
3239
- class: ["jky-form-item", [__props.config.className]]
3240
- }), vue.createSlots({
3241
- default: vue.withCtx(() => [
3242
- __props.config.prepend || __props.config.append ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
3243
- __props.config.prepend ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$2, vue.toDisplayString(__props.config.prepend), 1)) : vue.createCommentVNode("", true),
3244
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent(__props.config.type || "input")))),
3245
- __props.config.append ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_6$1, vue.toDisplayString(__props.config.append), 1)) : vue.createCommentVNode("", true)
3246
- ])) : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderComponent(__props.config.type || "input")), { key: 1 })),
3247
- __props.config.help && !__props.config.help.tooltip ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderHelpText()), { key: 2 })) : vue.createCommentVNode("", true)
3248
- ]),
3249
- _: 2
3250
- }, [
3251
- __props.config.help && __props.config.help.tooltip ? {
3252
- name: "label",
3253
- fn: vue.withCtx(() => [
3254
- vue.createElementVNode("div", _hoisted_3$2, [
3255
- vue.createElementVNode("span", null, vue.toDisplayString(__props.config.label), 1),
3256
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderHelpTooltip())))
3257
- ])
3258
- ]),
3259
- key: "0"
3260
- } : void 0
3261
- ]), 1040, ["label", "prop", "class"]));
3262
- };
3263
- }
3264
- }));
3265
- const _hoisted_1$2 = {
3266
- key: 0,
3267
- class: "jky-form__title mb-4 text-xl font-semibold"
3268
- };
3269
- const _hoisted_2$2 = {
3270
- key: 1,
3271
- class: "jky-form__footer mt-6 flex justify-end gap-2"
3272
- };
3273
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
3274
- name: "JkyForm"
3275
- }), {
3276
- __name: "Form",
3277
- props: /* @__PURE__ */ vue.mergeModels({
3278
- modelValue: {},
3279
- items: {},
3280
- showTitle: { type: Boolean, default: false },
3281
- title: {},
3282
- gutter: { default: 0 },
3283
- defaultSpan: { default: 24 },
3284
- responsive: { type: Boolean, default: true },
3285
- className: {},
3286
- readonly: { type: Boolean },
3287
- disabled: { type: Boolean },
3288
- watchDeep: { type: Boolean, default: true },
3289
- showFooter: { type: Boolean, default: false },
3290
- submitText: { default: "提交" },
3291
- cancelText: { default: "取消" },
3292
- submitDisabled: { type: Boolean },
3293
- cancelDisabled: { type: Boolean },
3294
- onValidate: {},
3295
- onSubmit: {},
3296
- onReset: {},
3297
- model: {},
3298
- rules: {},
3299
- labelPosition: { default: "right" },
3300
- requireAsteriskPosition: {},
3301
- labelWidth: { default: "100" },
3302
- labelSuffix: {},
3303
- inline: { type: Boolean },
3304
- inlineMessage: { type: Boolean },
3305
- statusIcon: { type: Boolean },
3306
- showMessage: { type: Boolean },
3307
- validateOnRuleChange: { type: Boolean },
3308
- hideRequiredAsterisk: { type: Boolean },
3309
- scrollToError: { type: Boolean },
3310
- scrollIntoViewOptions: { type: Boolean },
3311
- size: { default: "default" }
3312
- }, {
3313
- "modelValue": { required: true, default: () => ({}) },
3314
- "modelModifiers": {}
3315
- }),
3316
- emits: /* @__PURE__ */ vue.mergeModels(["change", "validate", "submit", "reset"], ["update:modelValue"]),
3317
- setup(__props, { expose: __expose, emit: __emit }) {
3318
- const props = __props;
3319
- const emit = __emit;
3320
- const modelValue = vue.useModel(__props, "modelValue");
3321
- const formRef = vue.ref();
3322
- const formClass = vue.computed(() => {
3323
- return [
3324
- "jky-form",
3325
- props.className
3326
- ].filter(Boolean).join(" ");
3327
- });
3328
- vue.watch(
3329
- () => props.modelValue,
3330
- (newVal, oldVal) => {
3331
- if (newVal !== oldVal) {
3332
- emit("change", __spreadValues({}, newVal));
3333
- }
3334
- },
3335
- { deep: props.watchDeep }
3336
- );
3337
- function validate(callback) {
3338
- return __async(this, null, function* () {
3339
- var _a;
3340
- try {
3341
- yield (_a = formRef.value) == null ? void 0 : _a.validate();
3342
- emit("validate", { valid: true });
3343
- callback == null ? void 0 : callback(true, void 0);
3344
- return true;
3345
- } catch (error) {
3346
- emit("validate", { valid: false, fields: error.fields });
3347
- callback == null ? void 0 : callback(false, error.fields);
3348
- return false;
3349
- }
3350
- });
3351
- }
3352
- function resetFields() {
3353
- var _a, _b;
3354
- (_a = formRef.value) == null ? void 0 : _a.resetFields();
3355
- emit("reset");
3356
- (_b = props.onReset) == null ? void 0 : _b.call(props);
3357
- }
3358
- function clearValidate(props2) {
3359
- var _a;
3360
- (_a = formRef.value) == null ? void 0 : _a.clearValidate(props2);
3361
- }
3362
- function getFormInstance() {
3363
- return formRef.value;
3364
- }
3365
- function handleSubmit() {
3366
- return __async(this, null, function* () {
3367
- var _a, _b;
3368
- try {
3369
- yield (_a = formRef.value) == null ? void 0 : _a.validate();
3370
- emit("submit", __spreadValues({}, modelValue.value));
3371
- (_b = props.onSubmit) == null ? void 0 : _b.call(props, __spreadValues({}, modelValue.value));
3372
- } catch (error) {
3373
- emit("validate", { valid: false, fields: error.fields });
3374
- }
3375
- });
3376
- }
3377
- function handleCancel() {
3378
- resetFields();
3379
- }
3380
- __expose({
3381
- validate,
3382
- resetFields,
3383
- clearValidate,
3384
- getFormInstance,
3385
- formRef
3386
- });
3387
- return (_ctx, _cache) => {
3388
- return vue.openBlock(), vue.createElementBlock("div", {
3389
- class: vue.normalizeClass(formClass.value)
3390
- }, [
3391
- __props.showTitle && __props.title ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, vue.toDisplayString(__props.title), 1)) : vue.createCommentVNode("", true),
3392
- vue.createVNode(vue.unref(ElementPlus.ElForm), vue.mergeProps({
3393
- ref_key: "formRef",
3394
- ref: formRef,
3395
- model: modelValue.value,
3396
- "label-width": __props.labelWidth,
3397
- "label-position": __props.labelPosition,
3398
- size: __props.size
3399
- }, _ctx.$attrs), {
3400
- default: vue.withCtx(() => [
3401
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
3402
- return vue.openBlock(), vue.createBlock(_sfc_main$6, {
3403
- key: item.field,
3404
- field: item.field,
3405
- config: item,
3406
- model: modelValue.value,
3407
- readonly: __props.readonly,
3408
- disabled: __props.disabled
3409
- }, null, 8, ["field", "config", "model", "readonly", "disabled"]);
3410
- }), 128))
3411
- ]),
3412
- _: 1
3413
- }, 16, ["model", "label-width", "label-position", "size"]),
3414
- props.showFooter ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2, [
3415
- vue.createVNode(vue.unref(ElementPlus.ElButton), {
3416
- disabled: __props.cancelDisabled || __props.disabled,
3417
- onClick: handleCancel
3418
- }, {
3419
- default: vue.withCtx(() => [
3420
- vue.createTextVNode(vue.toDisplayString(__props.cancelText), 1)
3421
- ]),
3422
- _: 1
3423
- }, 8, ["disabled"]),
3424
- vue.createVNode(vue.unref(ElementPlus.ElButton), {
3425
- type: "primary",
3426
- disabled: __props.submitDisabled || __props.disabled,
3427
- loading: false,
3428
- onClick: handleSubmit
3429
- }, {
3430
- default: vue.withCtx(() => [
3431
- vue.createTextVNode(vue.toDisplayString(__props.submitText), 1)
3432
- ]),
3433
- _: 1
3434
- }, 8, ["disabled"])
3435
- ])) : vue.createCommentVNode("", true)
3436
- ], 2);
3437
- };
3438
- }
3439
- }));
3440
- const JkyForm = installWithSFC(_sfc_main$5);
3441
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
3442
- name: "JkyAside"
3443
- }), {
3444
- __name: "Aside",
3445
- setup(__props) {
3446
- return (_ctx, _cache) => {
3447
- return vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElAside), { class: "w-fit pr-0 pb-0 h-full" }, {
3448
- default: vue.withCtx(() => [
3449
- vue.createVNode(vue.unref(ElementPlus.ElScrollbar), { class: "bg-white rounded-md" }, {
3450
- default: vue.withCtx(() => [
3451
- vue.renderSlot(_ctx.$slots, "default")
3452
- ]),
3453
- _: 3
3454
- })
3455
- ]),
3456
- _: 3
3457
- });
3458
- };
3459
- }
3460
- }));
3461
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
3462
- name: "JkyMenu"
3463
- }), {
3464
- __name: "Menu",
3465
- props: {
3466
- aside: { type: Boolean, default: false },
3467
- menuData: { default: () => [] },
3468
- mode: {},
3469
- defaultActive: {},
3470
- defaultOpeneds: {},
3471
- uniqueOpened: { type: Boolean },
3472
- router: { type: Boolean },
3473
- menuTrigger: {},
3474
- collapse: { type: Boolean },
3475
- backgroundColor: {},
3476
- textColor: {},
3477
- activeTextColor: {},
3478
- closeOnClickOutside: { type: Boolean },
3479
- collapseTransition: { type: Boolean },
3480
- ellipsis: { type: Boolean },
3481
- popperOffset: {},
3482
- ellipsisIcon: {},
3483
- popperEffect: {},
3484
- popperClass: {},
3485
- popperStyle: {},
3486
- showTimeout: {},
3487
- hideTimeout: {},
3488
- persistent: { type: Boolean }
3489
- },
3490
- setup(__props) {
3491
- const props = __props;
3492
- function renderMenuItem(item) {
3493
- var _a;
3494
- return vue.h(
3495
- ElementPlus.ElMenuItem,
3496
- {
3497
- index: item.index || item.id || "",
3498
- disabled: (_a = item.disabled) != null ? _a : false,
3499
- route: item.route
3500
- },
3501
- {
3502
- default: () => [
3503
- item.icon ? vue.h("span", { class: "jky-menu-item__icon" }, [vue.h("span", { class: item.icon })]) : null,
3504
- item.title ? vue.h("span", { class: "jky-menu-item__title" }, item.title) : null
3505
- ]
3506
- }
3507
- );
3508
- }
3509
- function renderSubMenu(item) {
3510
- var _a;
3511
- const children = item.children || [];
3512
- return vue.h(
3513
- ElementPlus.ElSubMenu,
3514
- {
3515
- index: item.index || item.id || "",
3516
- disabled: (_a = item.disabled) != null ? _a : false,
3517
- popperOffset: item.popperOffset
3518
- },
3519
- {
3520
- title: () => [
3521
- item.icon ? vue.h("span", { class: "jky-menu-item__icon" }, [vue.h("span", { class: item.icon })]) : null,
3522
- item.title ? vue.h("span", { class: "jky-menu-item__title" }, item.title) : null
3523
- ],
3524
- default: () => children.map((child) => renderMenuNode(child))
3525
- }
3526
- );
3527
- }
3528
- function renderMenuNode(item) {
3529
- if (item.children && item.children.length > 0) {
3530
- return renderSubMenu(item);
3531
- }
3532
- return renderMenuItem(item);
3533
- }
3534
- return (_ctx, _cache) => {
3535
- return props.aside ? (vue.openBlock(), vue.createBlock(_sfc_main$4, { key: 0 }, {
3536
- default: vue.withCtx(() => [
3537
- vue.createVNode(vue.unref(ElementPlus.ElMenu), vue.mergeProps({ class: "jky-menu" }, __spreadValues(__spreadValues({}, props), _ctx.$attrs)), {
3538
- default: vue.withCtx(() => [
3539
- props.menuData && props.menuData.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(props.menuData, (item) => {
3540
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderMenuNode(item)), {
3541
- key: item.index || item.id
3542
- });
3543
- }), 128)) : vue.renderSlot(_ctx.$slots, "default", { key: 1 })
3544
- ]),
3545
- _: 3
3546
- }, 16)
3547
- ]),
3548
- _: 3
3549
- })) : (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElMenu), vue.mergeProps({
3550
- key: 1,
3551
- class: "jky-menu"
3552
- }, __spreadValues(__spreadValues({}, props), _ctx.$attrs)), {
3553
- default: vue.withCtx(() => [
3554
- props.menuData && props.menuData.length > 0 ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(props.menuData, (item) => {
3555
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderMenuNode(item)), {
3556
- key: item.index || item.id
3557
- });
3558
- }), 128)) : vue.renderSlot(_ctx.$slots, "default", { key: 1 })
3559
- ]),
3560
- _: 3
3561
- }, 16));
3562
- };
3563
- }
3564
- }));
3565
- const JkyMenu = installWithSFC(_sfc_main$3);
3566
- const _hoisted_1$1 = {
3567
- key: 0,
3568
- class: "jky-page-header__popover mr-2 h-full flex items-center text-white"
3569
- };
3570
- const _hoisted_2$1 = { class: "flex items-center" };
3571
- const _hoisted_3$1 = {
3572
- key: 0,
3573
- class: "text-white ml-2"
3574
- };
3575
- const _hoisted_4$1 = { class: "grid grid-cols-3 gap-2 p-2" };
3576
- const _hoisted_5$1 = { class: "text-sm text-center" };
3577
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3578
- __name: "PopoverMenu",
3579
- props: {
3580
- refIconClass: {},
3581
- refName: {},
3582
- menus: { default: () => [] },
3583
- buttonClass: { default: "w-20 h-20" },
3584
- elButtonClass: {},
3585
- elButtonType: {},
3586
- width: { default: 400 },
3587
- trigger: { default: "click" },
3588
- highlightCurrent: { type: Boolean, default: true },
3589
- placement: { default: "bottom-start" }
3590
- },
3591
- setup(__props) {
3592
- const props = __props;
3593
- const popoverIndex = vue.ref("");
3594
- function onPopoverButtonClick(item) {
3595
- var _a;
3596
- if (props.highlightCurrent) {
3597
- popoverIndex.value = item.value;
3598
- }
3599
- (_a = item.onClick) == null ? void 0 : _a.call(item);
3600
- }
3601
- return (_ctx, _cache) => {
3602
- var _a;
3603
- return ((_a = __props.menus) == null ? void 0 : _a.length) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
3604
- vue.createVNode(vue.unref(ElementPlus.ElPopover), {
3605
- placement: __props.placement,
3606
- class: "h-full",
3607
- trigger: __props.trigger,
3608
- width: __props.width
3609
- }, {
3610
- reference: vue.withCtx(() => [
3611
- vue.createElementVNode("div", _hoisted_2$1, [
3612
- vue.createElementVNode("span", {
3613
- class: vue.normalizeClass(["icon-[ant-design--menu-fold-outlined] text-[white] text-2xl cursor-pointer hover:opacity-80", __props.refIconClass])
3614
- }, null, 2),
3615
- __props.refName ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$1, vue.toDisplayString(__props.refName), 1)) : vue.createCommentVNode("", true)
3616
- ])
3617
- ]),
3618
- default: vue.withCtx(() => [
3619
- vue.createElementVNode("div", _hoisted_4$1, [
3620
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.menus, (item) => {
3621
- return vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElButton), {
3622
- key: item.value,
3623
- disabled: item.disabled,
3624
- class: vue.normalizeClass(["w-fit! h-fit! ml-0!", [__props.elButtonClass, item.elButtonClass]]),
3625
- type: vue.unref(popoverIndex) === item.value ? "primary" : __props.elButtonType || "default",
3626
- onClick: ($event) => onPopoverButtonClick(item)
3627
- }, {
3628
- default: vue.withCtx(() => [
3629
- vue.createElementVNode("div", {
3630
- class: vue.normalizeClass(["jky-page-header__popover-inner flex flex-col justify-around items-center", __props.buttonClass])
3631
- }, [
3632
- item.icon ? (vue.openBlock(), vue.createElementBlock("span", {
3633
- key: 0,
3634
- class: vue.normalizeClass(["text-xl mr-2", [item.icon]])
3635
- }, null, 2)) : vue.createCommentVNode("", true),
3636
- vue.createElementVNode("span", _hoisted_5$1, vue.toDisplayString(item.label), 1)
3637
- ], 2)
3638
- ]),
3639
- _: 2
3640
- }, 1032, ["disabled", "class", "type", "onClick"]);
3641
- }), 128))
3642
- ])
3643
- ]),
3644
- _: 1
3645
- }, 8, ["placement", "trigger", "width"])
3646
- ])) : vue.createCommentVNode("", true);
3647
- };
3648
- }
3649
- });
3650
- const _hoisted_1 = { class: "jky-page-header__container" };
3651
- const _hoisted_2 = { class: "jky-page-header__left" };
3652
- const _hoisted_3 = ["src", "alt"];
3653
- const _hoisted_4 = {
3654
- key: 1,
3655
- class: "jky-page-header__title"
3656
- };
3657
- const _hoisted_5 = { class: "jky-page-header__center" };
3658
- const _hoisted_6 = { class: "jky-page-header__right" };
3659
- const _hoisted_7 = { class: "jky-page-header__status-icons hidden md:flex" };
3660
- const _hoisted_8 = {
3661
- xmlns: "http://www.w3.org/2000/svg",
3662
- style: { "color": "white" },
3663
- fill: "none",
3664
- viewBox: "0 0 24 24",
3665
- stroke: "currentColor"
3666
- };
3667
- const _hoisted_9 = { class: "jky-page-header__time hidden md:block" };
3668
- const _hoisted_10 = { class: "jky-page-header__user" };
3669
- const _hoisted_11 = ["src", "alt"];
3670
- const _hoisted_12 = {
3671
- key: 0,
3672
- class: "jky-page-header__username text-base hidden md:block"
3673
- };
3674
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
3675
- name: "JkyPageHeader"
3676
- }), {
3677
- __name: "PageHeader",
3678
- props: {
3679
- logo: {},
3680
- title: {},
3681
- height: { default: 76 },
3682
- background: {},
3683
- backgroundImage: {},
3684
- statusIcons: { default: () => [] },
3685
- userName: {},
3686
- userAvatar: {},
3687
- popover: {},
3688
- showMore: { type: Boolean },
3689
- showPopover: { type: Boolean },
3690
- showLogout: { type: Boolean },
3691
- userDropdownItems: { default: () => [
3692
- { label: "个人信息", value: "profile", icon: "icon-[heroicons--user]" },
3693
- { label: "清理缓存", value: "clear", icon: "icon-[heroicons--trash]" },
3694
- { label: "注销", value: "logout", icon: "icon-[heroicons--arrow-right-on-rectangle]" }
3695
- ] }
3696
- },
3697
- emits: ["logout", "command"],
3698
- setup(__props, { emit: __emit }) {
3699
- const props = __props;
3700
- const emit = __emit;
3701
- function handleCommand(command) {
3702
- emit("command", command);
3703
- }
3704
- const heightValue = vue.computed(() => {
3705
- if (typeof props.height === "number") {
3706
- return `${props.height}px`;
3707
- }
3708
- return props.height;
3709
- });
3710
- const backgroundStyle = vue.computed(() => {
3711
- const style = {};
3712
- if (props.backgroundImage) {
3713
- style.backgroundImage = `url(${props.backgroundImage})`;
3714
- style.backgroundSize = "cover";
3715
- style.backgroundPosition = "center";
3716
- }
3717
- if (props.background) {
3718
- style.backgroundColor = props.background;
3719
- }
3720
- return style;
3721
- });
3722
- return (_ctx, _cache) => {
3723
- var _a, _b, _c, _d;
3724
- return vue.openBlock(), vue.createElementBlock("header", {
3725
- class: "jky-page-header",
3726
- style: vue.normalizeStyle([vue.unref(backgroundStyle), { height: vue.unref(heightValue) }])
3727
- }, [
3728
- vue.createElementVNode("div", _hoisted_1, [
3729
- __props.showPopover && ((_b = (_a = __props.popover) == null ? void 0 : _a.menus) == null ? void 0 : _b.length) ? (vue.openBlock(), vue.createBlock(_sfc_main$2, vue.normalizeProps(vue.mergeProps({ key: 0 }, __props.popover)), null, 16)) : vue.createCommentVNode("", true),
3730
- vue.createElementVNode("div", _hoisted_2, [
3731
- __props.logo ? (vue.openBlock(), vue.createElementBlock("img", {
3732
- key: 0,
3733
- src: __props.logo,
3734
- alt: __props.title || "Logo",
3735
- class: "jky-page-header__logo"
3736
- }, null, 8, _hoisted_3)) : vue.createCommentVNode("", true),
3737
- __props.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4, vue.toDisplayString(__props.title), 1)) : vue.createCommentVNode("", true)
3738
- ]),
3739
- vue.createElementVNode("div", _hoisted_5, [
3740
- vue.renderSlot(_ctx.$slots, "center")
3741
- ]),
3742
- vue.createElementVNode("div", _hoisted_6, [
3743
- vue.createElementVNode("div", _hoisted_7, [
3744
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.statusIcons, (icon, index) => {
3745
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: index }, [
3746
- typeof icon.icon === "string" ? (vue.openBlock(), vue.createElementBlock("span", {
3747
- key: 0,
3748
- class: vue.normalizeClass(["jky-page-header__status-icon text-white cursor-pointer", [icon.icon]])
3749
- }, null, 2)) : (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElIcon), {
3750
- key: 1,
3751
- size: 20,
3752
- title: icon.label,
3753
- color: icon.color || "white",
3754
- class: "jky-page-header__status-icon cursor-pointer",
3755
- onClick: icon.onClick
3756
- }, {
3757
- default: vue.withCtx(() => [
3758
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(icon.icon)))
3759
- ]),
3760
- _: 2
3761
- }, 1032, ["title", "color", "onClick"]))
3762
- ], 64);
3763
- }), 128))
3764
- ]),
3765
- __props.statusIcons.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElDropdown), {
3766
- key: 0,
3767
- trigger: "click",
3768
- class: "md:hidden"
3769
- }, {
3770
- dropdown: vue.withCtx(() => [
3771
- vue.createVNode(vue.unref(ElementPlus.ElDropdownMenu), null, {
3772
- default: vue.withCtx(() => [
3773
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.statusIcons, (icon, index) => {
3774
- return vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElDropdownItem), {
3775
- key: index,
3776
- onClick: icon.onClick
3777
- }, {
3778
- default: vue.withCtx(() => [
3779
- typeof icon.icon === "string" ? (vue.openBlock(), vue.createElementBlock("span", {
3780
- key: 0,
3781
- class: vue.normalizeClass(["text-white", [icon.icon]])
3782
- }, null, 2)) : (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElIcon), {
3783
- key: 1,
3784
- size: 16,
3785
- class: "mr-2"
3786
- }, {
3787
- default: vue.withCtx(() => [
3788
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(icon.icon)))
3789
- ]),
3790
- _: 2
3791
- }, 1024)),
3792
- vue.createTextVNode(" " + vue.toDisplayString(icon.label), 1)
3793
- ]),
3794
- _: 2
3795
- }, 1032, ["onClick"]);
3796
- }), 128))
3797
- ]),
3798
- _: 1
3799
- })
3800
- ]),
3801
- default: vue.withCtx(() => [
3802
- vue.createVNode(vue.unref(ElementPlus.ElIcon), {
3803
- size: 20,
3804
- class: "jky-page-header__status-icon text-white"
3805
- }, {
3806
- default: vue.withCtx(() => [
3807
- (vue.openBlock(), vue.createElementBlock("svg", _hoisted_8, [..._cache[1] || (_cache[1] = [
3808
- vue.createElementVNode("path", {
3809
- "stroke-linecap": "round",
3810
- "stroke-linejoin": "round",
3811
- "stroke-width": "2",
3812
- d: "M4 6h16M4 12h16M4 18h16"
3813
- }, null, -1)
3814
- ])]))
3815
- ]),
3816
- _: 1
3817
- })
3818
- ]),
3819
- _: 1
3820
- })) : vue.createCommentVNode("", true),
3821
- vue.createElementVNode("div", _hoisted_9, [
3822
- vue.renderSlot(_ctx.$slots, "time", {}, () => [
3823
- vue.createElementVNode("span", null, vue.toDisplayString((/* @__PURE__ */ new Date()).toLocaleString("zh-CN")), 1)
3824
- ])
3825
- ]),
3826
- __props.showMore && ((_d = (_c = __props.popover) == null ? void 0 : _c.menus) == null ? void 0 : _d.length) ? (vue.openBlock(), vue.createBlock(_sfc_main$2, vue.mergeProps({
3827
- key: 1,
3828
- "ref-name": "更多",
3829
- "ref-icon-class": "icon-[mdi--format-list-bulleted]"
3830
- }, __props.popover, { placement: "bottom" }), null, 16)) : vue.createCommentVNode("", true),
3831
- vue.createVNode(vue.unref(ElementPlus.ElDropdown), {
3832
- trigger: "hover",
3833
- onCommand: handleCommand
3834
- }, {
3835
- dropdown: vue.withCtx(() => [
3836
- vue.createVNode(vue.unref(ElementPlus.ElDropdownMenu), null, {
3837
- default: vue.withCtx(() => [
3838
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.userDropdownItems, (item) => {
3839
- return vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElDropdownItem), {
3840
- key: item.value,
3841
- command: item.value,
3842
- disabled: item.disabled,
3843
- divided: item.divided
3844
- }, {
3845
- default: vue.withCtx(() => [
3846
- vue.createElementVNode("span", {
3847
- class: vue.normalizeClass(["mr-2", item.icon])
3848
- }, null, 2),
3849
- vue.createTextVNode(" " + vue.toDisplayString(item.label), 1)
3850
- ]),
3851
- _: 2
3852
- }, 1032, ["command", "disabled", "divided"]);
3853
- }), 128))
3854
- ]),
3855
- _: 1
3856
- })
3857
- ]),
3858
- default: vue.withCtx(() => [
3859
- vue.createElementVNode("div", _hoisted_10, [
3860
- vue.renderSlot(_ctx.$slots, "userIcon", {}, () => [
3861
- __props.userAvatar ? (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElIcon), {
3862
- key: 0,
3863
- size: 24,
3864
- class: "jky-page-header__avatar"
3865
- }, {
3866
- default: vue.withCtx(() => [
3867
- vue.createElementVNode("img", {
3868
- src: __props.userAvatar,
3869
- alt: __props.userName,
3870
- class: "rounded-full"
3871
- }, null, 8, _hoisted_11)
3872
- ]),
3873
- _: 1
3874
- })) : (vue.openBlock(), vue.createBlock(vue.unref(ElementPlus.ElIcon), {
3875
- key: 1,
3876
- size: 24,
3877
- class: "jky-page-header__avatar"
3878
- }, {
3879
- default: vue.withCtx(() => [..._cache[2] || (_cache[2] = [
3880
- vue.createElementVNode("span", { class: "icon-[heroicons--user]" }, null, -1)
3881
- ])]),
3882
- _: 1
3883
- }))
3884
- ]),
3885
- __props.userName ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_12, vue.toDisplayString(__props.userName), 1)) : vue.createCommentVNode("", true)
3886
- ])
3887
- ]),
3888
- _: 3
3889
- }),
3890
- __props.showLogout ? (vue.openBlock(), vue.createElementBlock("div", {
3891
- key: 2,
3892
- class: "jky-page-header__logout h-full flex items-center text-white",
3893
- onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("logout"))
3894
- }, [..._cache[3] || (_cache[3] = [
3895
- vue.createElementVNode("span", { class: "icon-[ri--logout-circle-line] mr-2" }, null, -1),
3896
- vue.createElementVNode("span", null, "退出登录", -1)
3897
- ])])) : vue.createCommentVNode("", true)
3898
- ])
3899
- ])
3900
- ], 4);
3901
- };
3902
- }
3903
- }));
3904
- const JkyPageHeader = installWithSFC(_sfc_main$1);
3905
- const _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
3906
- name: "JkySayHello"
3907
- }), {
3908
- __name: "SayHello",
3909
- props: {
3910
- name: {}
3911
- },
3912
- setup(__props) {
3913
- function sayHello() {
3914
- alert(`Hello, ${__props.name}!`);
3915
- }
3916
- return (_ctx, _cache) => {
3917
- return vue.openBlock(), vue.createElementBlock("button", {
3918
- class: "jky-component-lib-say-hello",
3919
- onClick: _cache[0] || (_cache[0] = ($event) => sayHello())
3920
- }, " Say, hi! ");
3921
- };
3922
- }
3923
- }));
3924
- const JkySayHello = installWithSFC(_sfc_main);
3925
- const components = [
3926
- JkySayHello,
3927
- JkyButton,
3928
- JkyButtonNav,
3929
- JkyPageHeader,
3930
- JkyMenu,
3931
- JkyForm,
3932
- JkyCodeMirrorEditor
3933
- ];
3934
- function JkyComponentLibResolver() {
3935
- return {
3936
- type: "component",
3937
- resolve: (name) => {
3938
- if (name.match(/^Jky[A-Z]/)) {
3939
- return {
3940
- name,
3941
- from: "jky-component-lib",
3942
- sideEffects: [
3943
- `jky-component-lib/dist/es/${name.replace("Jky", "").replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase()}/style.css`
3944
- ]
3945
- };
3946
- }
3947
- }
3948
- };
3949
- }
3950
- const installer = createInstaller(components);
3951
- const install = installer.install;
3952
- const version = installer.version;
3953
- exports2.JkyButton = JkyButton;
3954
- exports2.JkyButtonNav = JkyButtonNav;
3955
- exports2.JkyCodeMirrorEditor = JkyCodeMirrorEditor;
3956
- exports2.JkyComponentLibResolver = JkyComponentLibResolver;
3957
- exports2.JkyForm = JkyForm;
3958
- exports2.JkyMenu = JkyMenu;
3959
- exports2.JkyPageHeader = JkyPageHeader;
3960
- exports2.JkySayHello = JkySayHello;
3961
- exports2.components = components;
3962
- exports2.default = installer;
3963
- exports2.install = install;
3964
- exports2.version = version;
3965
- Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3966
- }));