vue-element-ui-x 0.2.2 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/lib/components/Attachments/index.js +18 -18
  2. package/lib/components/Bubble/index.js +145 -155
  3. package/lib/components/BubbleList/index.js +180 -207
  4. package/lib/components/Conversations/index.js +14370 -14370
  5. package/lib/components/FilesCard/index.js +5 -5
  6. package/lib/components/Prompts/index.js +25 -25
  7. package/lib/components/Sender/index.js +1606 -1459
  8. package/lib/components/Thinking/index.js +157 -23
  9. package/lib/components/ThoughtChain/index.js +143 -144
  10. package/lib/components/Typewriter/index.js +124 -125
  11. package/lib/components/Welcome/index.js +5 -5
  12. package/lib/index.common.js +1 -1
  13. package/lib/index.esm.js +1 -1
  14. package/lib/index.js +817 -389
  15. package/lib/index.umd.js +1 -1
  16. package/lib/locale/index.js +97 -0
  17. package/lib/locale/lang/ar-SA.js +18 -0
  18. package/lib/locale/lang/ar-SA.umd.js +26 -0
  19. package/lib/locale/lang/ar.js +18 -0
  20. package/lib/locale/lang/ar.umd.js +26 -0
  21. package/lib/locale/lang/de-DE.js +18 -0
  22. package/lib/locale/lang/de-DE.umd.js +26 -0
  23. package/lib/locale/lang/de.js +18 -0
  24. package/lib/locale/lang/de.umd.js +26 -0
  25. package/lib/locale/lang/en.js +18 -0
  26. package/lib/locale/lang/en.umd.js +26 -0
  27. package/lib/locale/lang/es-ES.js +18 -0
  28. package/lib/locale/lang/es-ES.umd.js +26 -0
  29. package/lib/locale/lang/es.js +18 -0
  30. package/lib/locale/lang/es.umd.js +26 -0
  31. package/lib/locale/lang/fr-FR.js +18 -0
  32. package/lib/locale/lang/fr-FR.umd.js +26 -0
  33. package/lib/locale/lang/fr.js +18 -0
  34. package/lib/locale/lang/fr.umd.js +26 -0
  35. package/lib/locale/lang/index.js +50 -0
  36. package/lib/locale/lang/it-IT.js +18 -0
  37. package/lib/locale/lang/it-IT.umd.js +26 -0
  38. package/lib/locale/lang/it.js +18 -0
  39. package/lib/locale/lang/it.umd.js +26 -0
  40. package/lib/locale/lang/ja-JP.js +18 -0
  41. package/lib/locale/lang/ja-JP.umd.js +26 -0
  42. package/lib/locale/lang/ja.js +18 -0
  43. package/lib/locale/lang/ja.umd.js +26 -0
  44. package/lib/locale/lang/ko-KR.js +18 -0
  45. package/lib/locale/lang/ko-KR.umd.js +26 -0
  46. package/lib/locale/lang/ko.js +18 -0
  47. package/lib/locale/lang/ko.umd.js +26 -0
  48. package/lib/locale/lang/pt-BR.js +18 -0
  49. package/lib/locale/lang/pt-BR.umd.js +26 -0
  50. package/lib/locale/lang/ru-RU.js +18 -0
  51. package/lib/locale/lang/ru-RU.umd.js +26 -0
  52. package/lib/locale/lang/zh-CN.js +18 -0
  53. package/lib/locale/lang/zh-CN.umd.js +26 -0
  54. package/lib/locale/lang/zh-TW.js +18 -0
  55. package/lib/locale/lang/zh-TW.umd.js +26 -0
  56. package/lib/locale/mixin.js +9 -0
  57. package/package.json +15 -10
  58. package/src/components/Attachments/src/main.vue +2 -10
  59. package/src/components/Bubble/src/main.vue +288 -299
  60. package/src/components/BubbleList/src/main.vue +2 -19
  61. package/src/components/Conversations/src/main.vue +0 -41
  62. package/src/components/Prompts/src/main.vue +248 -248
  63. package/src/components/Sender/src/components/LoadingButton.vue +37 -39
  64. package/src/components/Sender/src/components/SpeechLoadingButton.vue +41 -43
  65. package/src/components/Sender/src/main.vue +13 -3
  66. package/src/components/Thinking/src/main.vue +13 -9
  67. package/src/components/ThoughtChain/src/main.vue +1 -3
  68. package/src/components/Typewriter/src/main.vue +3 -7
  69. package/src/components/Welcome/src/main.vue +151 -151
  70. package/src/index.js +23 -6
  71. package/src/locale/index.js +97 -0
  72. package/src/locale/lang/ar.js +18 -0
  73. package/src/locale/lang/de.js +18 -0
  74. package/src/locale/lang/en.js +18 -0
  75. package/src/locale/lang/es.js +18 -0
  76. package/src/locale/lang/fr.js +18 -0
  77. package/src/locale/lang/index.js +62 -0
  78. package/src/locale/lang/it.js +18 -0
  79. package/src/locale/lang/ja.js +18 -0
  80. package/src/locale/lang/ko.js +18 -0
  81. package/src/locale/lang/pt-br.js +18 -0
  82. package/src/locale/lang/ru-RU.js +18 -0
  83. package/src/locale/lang/zh-CN.js +18 -0
  84. package/src/locale/lang/zh-TW.js +18 -0
  85. package/src/locale/mixin.js +9 -0
  86. package/src/styles/Attachments.scss +236 -236
  87. package/src/styles/Bubble.scss +5 -4
  88. package/src/styles/BubbleList.scss +148 -148
  89. package/src/styles/Conversations.scss +260 -260
  90. package/src/styles/FilesCard.scss +222 -221
  91. package/src/styles/Prompts.scss +197 -195
  92. package/src/styles/Sender.scss +207 -199
  93. package/src/styles/Thinking.scss +36 -6
  94. package/src/styles/ThoughtChain.scss +113 -113
  95. package/src/styles/Typewriter.scss +66 -66
  96. package/src/styles/var.scss +4 -5
  97. package/src/theme/var.scss +183 -72
@@ -1,199 +1,207 @@
1
- @import '../theme/var.scss';
2
-
3
- // 设置全局CSS变量默认值
4
- :root {
5
- --el-x-sender-trigger-popover-width: fit-content;
6
- --el-x-sender-trigger-popover-left: 0px;
7
- }
8
-
9
- $--el-x-sender-box-shadow-tertiary: 0 1px 2px 0 rgba(0, 0, 0, 0.03),
10
- 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);
11
- $--el-x-sender-input-font-size: 14px;
12
- $--el-x-sender-header-animation-duration: 300ms;
13
- $--el-x-border-width: $--border-width-base;
14
- $--el-x-padding-xs: 8px;
15
- $--el-x-padding-sm: 12px;
16
- $--el-x-padding: 16px;
17
- $--el-x-transition-duration: 0.3s;
18
- $--el-x-color-primary: $--color-primary;
19
- $--el-x-color-white: $--color-white;
20
- $--el-x-box-shadow: $--box-shadow-base;
21
- $--el-x-border-color: $--border-color-base;
22
- $--el-x-text-color-primary: $--color-text-primary;
23
- $--el-x-font-line-height-primary: $--font-line-height-primary;
24
- $--el-x-fill-color: $--background-color-base;
25
-
26
- .el-x-sender {
27
- width: 100%;
28
- display: flex;
29
- flex-direction: column;
30
-
31
- position: relative;
32
- box-sizing: border-box;
33
- box-shadow: $--el-x-sender-box-shadow-tertiary;
34
- transition: background $--el-x-transition-duration;
35
- border-radius: calc(#{$--border-radius-base} * 2);
36
- border-color: $--el-x-border-color;
37
- border-width: 0;
38
- border-style: solid;
39
- transition: width $--el-x-sender-header-animation-duration;
40
-
41
- &:after {
42
- content: '';
43
- position: absolute;
44
- inset: 0;
45
- pointer-events: none;
46
- transition: border-color $--el-x-transition-duration;
47
- border-radius: inherit;
48
- border-style: inherit;
49
- border-color: inherit;
50
- border-width: $--el-x-border-width;
51
- }
52
-
53
- &:focus-within {
54
- box-shadow: $--el-x-box-shadow;
55
- border-color: $--el-x-color-primary;
56
-
57
- &::after {
58
- border-width: 2px;
59
- }
60
- }
61
-
62
- .el-x-sender-header-wrap {
63
- display: flex;
64
- flex-direction: column;
65
- gap: $--el-x-padding-xs;
66
- width: 100%;
67
- margin: 0;
68
- padding: 0;
69
- }
70
-
71
- // 展开收起动画
72
- .slide-enter-active,
73
- .slide-leave-active {
74
- transition: height $--el-x-sender-header-animation-duration,
75
- opacity $--el-x-sender-header-animation-duration,
76
- border $--el-x-sender-header-animation-duration;
77
- overflow: hidden;
78
- }
79
-
80
- // .slide-enter-from,
81
- // .slide-leave-to {
82
- // height: 0;
83
- // opacity: 0;
84
- // }
85
-
86
- .slide-enter,
87
- .slide-leave-to {
88
- height: 0;
89
- opacity: 0;
90
- }
91
-
92
- .el-x-sender-header {
93
- border-bottom-width: $--el-x-border-width;
94
- border-bottom-style: solid;
95
- border-bottom-color: $--el-x-border-color;
96
- }
97
-
98
- .el-x-sender-content {
99
- display: flex;
100
- gap: $--el-x-padding-xs;
101
- width: 100%;
102
- padding-block: $--el-x-padding-sm;
103
- padding-inline-start: $--el-x-padding;
104
- padding-inline-end: $--el-x-padding-sm;
105
- box-sizing: border-box;
106
- align-items: flex-end;
107
-
108
- // 前缀
109
- .el-x-sender-prefix {
110
- flex: none;
111
- }
112
-
113
- // 输入框
114
- .el-x-sender-input {
115
- height: 100%;
116
- display: flex;
117
- align-items: center;
118
- align-self: center;
119
-
120
- ::v-deep .el-textarea__inner {
121
- padding: 0;
122
- margin: 0;
123
- color: $--el-x-text-color-primary;
124
- font-size: $--el-x-sender-input-font-size;
125
- line-height: $--el-x-font-line-height-primary;
126
- list-style: none;
127
- position: relative;
128
- display: inline-block;
129
- box-sizing: border-box;
130
- width: 100%;
131
- min-width: 0;
132
- max-width: 100%;
133
- height: auto;
134
- min-height: auto !important;
135
- border-radius: 0;
136
- border: none;
137
- flex: auto;
138
- align-self: center;
139
- vertical-align: bottom;
140
- resize: none;
141
- background-color: transparent;
142
- transition: all $--el-x-transition-duration, height 0s;
143
- box-shadow: none !important;
144
- }
145
- }
146
-
147
- // 操作列表
148
- .el-x-sender-action-list-presets {
149
- display: flex;
150
- gap: $--el-x-padding-xs;
151
- flex-direction: row-reverse;
152
- }
153
- }
154
-
155
- // 变体样式 --variant
156
- .content-variant-updown {
157
- display: flex;
158
- flex-direction: column;
159
- align-items: initial;
160
-
161
- .el-x-sender-updown-wrap {
162
- display: flex;
163
- justify-content: space-between;
164
- gap: 8px;
165
-
166
- // 前缀
167
- .el-x-sender-prefix {
168
- flex: initial;
169
- }
170
-
171
- .el-x-sender-action-list {
172
- margin-left: auto;
173
- }
174
- }
175
- }
176
-
177
- // 底部容器
178
- .el-x-sender-footer {
179
- border-top-width: $--el-x-border-width;
180
- border-top-style: solid;
181
- border-top-color: $--el-x-border-color;
182
- }
183
- }
184
-
185
- .el-x-sender-disabled {
186
- background-color: $--el-x-fill-color;
187
- pointer-events: none;
188
- }
189
-
190
- .el-x-sender-trigger-popover {
191
- // 设置默认值
192
- width: fit-content !important;
193
- margin-left: 0px !important;
194
- max-width: calc(100% - 54px) !important;
195
-
196
- // 应用自定义变量(如果存在)
197
- width: var(--el-x-sender-trigger-popover-width) !important;
198
- margin-left: var(--el-x-sender-trigger-popover-left) !important;
199
- }
1
+ @import '../theme/var.scss';
2
+
3
+ // 设置全局CSS变量默认值
4
+ // :root {
5
+ // --el-x-sender-trigger-popover-width: fit-content;
6
+ // --el-x-sender-trigger-popover-left: 0px;
7
+ // }
8
+
9
+ $--el-x-sender-box-shadow-tertiary: 0 1px 2px 0 rgba(0, 0, 0, 0.03),
10
+ 0 1px 6px -1px rgba(0, 0, 0, 0.02),
11
+ 0 2px 4px 0 rgba(0, 0, 0, 0.02);
12
+ $--el-x-sender-input-font-size: 14px;
13
+ // $--el-x-sender-header-animation-duration: 300ms;
14
+ $--el-x-border-width: $--border-width-base;
15
+ $--el-x-padding-xs: 8px;
16
+ $--el-x-padding-sm: 12px;
17
+ $--el-x-padding: 16px;
18
+ $--el-x-transition-duration: 0.3s;
19
+ $--el-x-color-primary: $--color-primary;
20
+ $--el-x-color-white: $--color-white;
21
+ $--el-x-box-shadow: $--box-shadow-base;
22
+ $--el-x-border-color: $--border-color-base;
23
+ $--el-x-text-color-primary: $--color-text-primary;
24
+ $--el-x-font-line-height-primary: $--font-line-height-primary;
25
+ $--el-x-fill-color: $--background-color-base;
26
+
27
+ .el-x-sender {
28
+ width: 100%;
29
+ display: flex;
30
+ flex-direction: column;
31
+
32
+ position: relative;
33
+ box-sizing: border-box;
34
+ box-shadow: $--el-x-sender-box-shadow-tertiary;
35
+ transition: background $--el-x-transition-duration;
36
+ border-radius: calc(#{$--border-radius-base} * 2);
37
+ border-color: $--el-x-border-color;
38
+ border-width: 0;
39
+ border-style: solid;
40
+ transition: width var(--el-x-sender-header-animation-duration);
41
+
42
+ &:after {
43
+ content: '';
44
+ position: absolute;
45
+ inset: 0;
46
+ pointer-events: none;
47
+ transition: border-color $--el-x-transition-duration;
48
+ border-radius: inherit;
49
+ border-style: inherit;
50
+ border-color: inherit;
51
+ border-width: $--el-x-border-width;
52
+ }
53
+
54
+ &:focus-within {
55
+ box-shadow: $--el-x-box-shadow;
56
+ border-color: $--el-x-color-primary;
57
+
58
+ &::after {
59
+ border-width: 2px;
60
+ }
61
+ }
62
+
63
+ .el-x-sender-header-wrap {
64
+ display: flex;
65
+ flex-direction: column;
66
+ gap: $--el-x-padding-xs;
67
+ width: 100%;
68
+ margin: 0;
69
+ padding: 0;
70
+ }
71
+
72
+ // 展开收起动画 - calc-size:解决无法对某些非固定尺寸(如 auto、min-content、max-content 等)进行动画过渡的新特性
73
+ .slide-enter-active,
74
+ .slide-leave-active {
75
+ height: calc-size(max-content, size);
76
+ opacity: 1;
77
+ transition:
78
+ height var(--el-x-sender-header-animation-duration),
79
+ opacity var(--el-x-sender-header-animation-duration),
80
+ border var(--el-x-sender-header-animation-duration);
81
+ overflow: hidden;
82
+ }
83
+
84
+ .slide-enter,
85
+ .slide-leave-to {
86
+ height: 0;
87
+ opacity: 0 !important;
88
+ }
89
+
90
+ .slide-enter-to,
91
+ .slide-leave {
92
+ height: calc-size(max-content, size);
93
+ opacity: 1;
94
+ }
95
+
96
+ // 确保内部内容能够正确收缩
97
+ .slide-enter-active .el-x-sender-header-wrap,
98
+ .slide-leave-active .el-x-sender-header-wrap {
99
+ min-height: 0;
100
+ overflow: hidden;
101
+ }
102
+
103
+ .el-x-sender-header {
104
+ border-bottom-width: $--el-x-border-width;
105
+ border-bottom-style: solid;
106
+ border-bottom-color: $--el-x-border-color;
107
+ }
108
+
109
+ .el-x-sender-content {
110
+ display: flex;
111
+ gap: $--el-x-padding-xs;
112
+ width: 100%;
113
+ padding-block: $--el-x-padding-sm;
114
+ padding-inline-start: $--el-x-padding;
115
+ padding-inline-end: $--el-x-padding-sm;
116
+ box-sizing: border-box;
117
+ align-items: flex-end;
118
+
119
+ // 前缀
120
+ .el-x-sender-prefix {
121
+ flex: none;
122
+ }
123
+
124
+ // 输入框
125
+ .el-x-sender-input {
126
+ height: 100%;
127
+ display: flex;
128
+ align-items: center;
129
+ align-self: center;
130
+
131
+ ::v-deep .el-textarea__inner {
132
+ padding: 0;
133
+ margin: 0;
134
+ color: $--el-x-text-color-primary;
135
+ font-size: $--el-x-sender-input-font-size;
136
+ line-height: $--el-x-font-line-height-primary;
137
+ list-style: none;
138
+ position: relative;
139
+ display: inline-block;
140
+ box-sizing: border-box;
141
+ width: 100%;
142
+ min-width: 0;
143
+ max-width: 100%;
144
+ height: auto;
145
+ min-height: auto !important;
146
+ border-radius: 0;
147
+ border: none;
148
+ flex: auto;
149
+ align-self: center;
150
+ vertical-align: bottom;
151
+ resize: none;
152
+ background-color: transparent;
153
+ transition: all $--el-x-transition-duration, height 0s;
154
+ box-shadow: none !important;
155
+ }
156
+ }
157
+
158
+ // 操作列表
159
+ .el-x-sender-action-list-presets {
160
+ display: flex;
161
+ gap: $--el-x-padding-xs;
162
+ flex-direction: row-reverse;
163
+ }
164
+ }
165
+
166
+ // 变体样式 --variant
167
+ .content-variant-updown {
168
+ display: flex;
169
+ flex-direction: column;
170
+ align-items: initial;
171
+
172
+ .el-x-sender-updown-wrap {
173
+ display: flex;
174
+ justify-content: space-between;
175
+ gap: 8px;
176
+
177
+ // 前缀
178
+ .el-x-sender-prefix {
179
+ flex: initial;
180
+ }
181
+
182
+ .el-x-sender-action-list {
183
+ margin-left: auto;
184
+ }
185
+ }
186
+ }
187
+
188
+ // 底部容器
189
+ .el-x-sender-footer {
190
+ border-top-width: $--el-x-border-width;
191
+ border-top-style: solid;
192
+ border-top-color: $--el-x-border-color;
193
+ }
194
+ }
195
+
196
+ .el-x-sender-disabled {
197
+ background-color: $--el-x-fill-color;
198
+ pointer-events: none;
199
+ }
200
+
201
+ ::v-deep .el-x-sender-trigger-popover {
202
+ max-width: calc(100% - 54px) !important;
203
+
204
+ // 应用自定义变量(如果存在)
205
+ width: var(--el-x-sender-trigger-popover-width) !important;
206
+ margin-left: var(--el-x-sender-trigger-popover-left) !important;
207
+ }
@@ -66,18 +66,48 @@
66
66
  transform: rotate(180deg);
67
67
  }
68
68
 
69
+ // .slide-enter-active,
70
+ // .slide-leave-active {
71
+ // transition: max-height var(--el-x-thinking-animation-duration) ease-out,
72
+ // transform var(--el-x-thinking-animation-duration) ease-out,
73
+ // opacity var(--el-x-thinking-animation-duration) ease-out;
74
+ // overflow: hidden;
75
+ // }
76
+
77
+ // .slide-enter,
78
+ // .slide-leave-to {
79
+ // max-height: 0;
80
+ // transform: translateY(-10px);
81
+ // opacity: 0;
82
+ // }
83
+
84
+ // .slide-enter-to,
85
+ // .slide-leave {
86
+ // max-height: 200px;
87
+ // transform: translateY(0);
88
+ // opacity: 1;
89
+ // }
69
90
  .slide-enter-active,
70
91
  .slide-leave-active {
71
- height: max-content;
72
- transition: height var(--el-x-thinking-animation-duration) ease-in-out,
73
- opacity var(--el-x-thinking-animation-duration) ease-in-out;
92
+ height: calc-size(max-content, size);
93
+ opacity: 1;
94
+ transition:
95
+ height var(--el-x-thinking-animation-duration),
96
+ opacity var(--el-x-thinking-animation-duration),
97
+ border var(--el-x-thinking-animation-duration);
74
98
  overflow: hidden;
75
99
  }
76
100
 
77
- .slide-enter-from,
101
+ .slide-enter,
78
102
  .slide-leave-to {
79
- height: 0 !important;
80
- opacity: 0;
103
+ height: 0;
104
+ opacity: 0 !important;
105
+ }
106
+
107
+ .slide-enter-to,
108
+ .slide-leave {
109
+ height: calc-size(max-content, size);
110
+ opacity: 1;
81
111
  }
82
112
 
83
113
  .content-wrapper {