vue-chat-kit 0.3.9 → 0.3.11

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/vue-chat-kit.css +1 -1
  2. package/dist/vue-chat-kit.es.js +4420 -2877
  3. package/dist/vue-chat-kit.umd.js +1 -1
  4. package/package.json +1 -1
  5. package/src/components/AvatarCrop.vue +16 -127
  6. package/src/components/ChatPanel.vue +503 -2818
  7. package/src/components/EmojiPicker.vue +2 -73
  8. package/src/components/chat/ChatWindow.vue +177 -0
  9. package/src/components/chat/ContentList.vue +300 -0
  10. package/src/components/chat/ContextMenu.vue +32 -0
  11. package/src/components/chat/GroupSidebar.vue +284 -0
  12. package/src/components/chat/MainArea.vue +87 -0
  13. package/src/components/chat/Sidebar.vue +52 -0
  14. package/src/components/chat/dialogs/AddFriendDialog.vue +62 -0
  15. package/src/components/chat/dialogs/CreateGroupDialog.vue +86 -0
  16. package/src/components/chat/dialogs/GroupDetailDialog.vue +132 -0
  17. package/src/components/ui/Button.vue +190 -0
  18. package/src/components/ui/Dialog.vue +194 -0
  19. package/src/components/ui/Empty.vue +66 -0
  20. package/src/components/ui/Input.vue +166 -0
  21. package/src/components/ui/Message.vue +186 -0
  22. package/src/components/ui/MessageBox.vue +143 -0
  23. package/src/components/ui/MessageManager.vue +92 -0
  24. package/src/components/ui/Switch.vue +65 -0
  25. package/src/components/ui/Tag.vue +68 -0
  26. package/src/components/ui/icons/ArrowDown.vue +5 -0
  27. package/src/components/ui/icons/ArrowRight.vue +5 -0
  28. package/src/components/ui/icons/Bell.vue +6 -0
  29. package/src/components/ui/icons/Camera.vue +6 -0
  30. package/src/components/ui/icons/ChatDotRound.vue +5 -0
  31. package/src/components/ui/icons/Check.vue +5 -0
  32. package/src/components/ui/icons/CircleCheck.vue +6 -0
  33. package/src/components/ui/icons/Clock.vue +6 -0
  34. package/src/components/ui/icons/Close.vue +5 -0
  35. package/src/components/ui/icons/Delete.vue +8 -0
  36. package/src/components/ui/icons/Edit.vue +6 -0
  37. package/src/components/ui/icons/Folder.vue +5 -0
  38. package/src/components/ui/icons/Minus.vue +5 -0
  39. package/src/components/ui/icons/Monitor.vue +7 -0
  40. package/src/components/ui/icons/Moon.vue +5 -0
  41. package/src/components/ui/icons/Picture.vue +7 -0
  42. package/src/components/ui/icons/Plus.vue +5 -0
  43. package/src/components/ui/icons/Search.vue +6 -0
  44. package/src/components/ui/icons/Setting.vue +6 -0
  45. package/src/components/ui/icons/Sunny.vue +6 -0
  46. package/src/components/ui/icons/User.vue +6 -0
  47. package/src/components/ui/icons/UserFilled.vue +6 -0
  48. package/src/components/ui/icons/Warning.vue +5 -0
  49. package/src/components/ui/icons/index.js +24 -0
  50. package/src/components/ui/index.js +10 -0
  51. package/src/composables/useFriendChat.js +10 -14
  52. package/src/composables/useGroupChat.js +140 -48
  53. package/src/composables/useMessage.js +21 -0
  54. package/src/composables/useMessageBox.js +98 -0
  55. package/src/composables/useTheme.js +140 -0
  56. package/src/config/index.js +1 -0
  57. package/src/const/index.js +1 -0
  58. package/src/const/theme.js +19 -0
  59. package/src/core/api.js +13 -2
  60. package/src/index.js +5 -5
  61. package/src/styles/_base.scss +38 -0
  62. package/src/styles/_variables.scss +43 -0
  63. package/src/styles/components/_add-friend-dialog.scss +45 -0
  64. package/src/styles/components/_avatar-crop.scss +120 -0
  65. package/src/styles/components/_chat-panel.scss +546 -0
  66. package/src/styles/components/_chat-window.scss +239 -0
  67. package/src/styles/components/_content-list.scss +260 -0
  68. package/src/styles/components/_context-menu.scss +35 -0
  69. package/src/styles/components/_create-group-dialog.scss +78 -0
  70. package/src/styles/components/_dialogs.scss +226 -0
  71. package/src/styles/components/_emoji-picker.scss +74 -0
  72. package/src/styles/components/_group-detail-dialog.scss +110 -0
  73. package/src/styles/components/_group-sidebar.scss +278 -0
  74. package/src/styles/components/_main-area.scss +94 -0
  75. package/src/styles/components/_sidebar.scss +83 -0
  76. package/src/styles/index.scss +18 -0
  77. package/src/styles/themes/_dark.scss +68 -0
  78. package/src/styles/themes/_index.scss +7 -0
  79. package/src/styles/themes/_light.scss +69 -0
@@ -0,0 +1,226 @@
1
+ // ==========================================
2
+ // Dialogs 组件样式
3
+ // ==========================================
4
+
5
+ // 通用对话框样式
6
+ .chat-dialog {
7
+ :deep(.el-dialog) {
8
+ border-radius: var(--vck-radius-lg);
9
+ overflow: hidden;
10
+ }
11
+
12
+ :deep(.el-dialog__header) {
13
+ padding: var(--vck-space-lg) var(--vck-space-lg) 0;
14
+ margin: 0;
15
+ }
16
+
17
+ :deep(.el-dialog__title) {
18
+ font-size: 18px;
19
+ font-weight: 600;
20
+ color: var(--vck-text-primary);
21
+ }
22
+
23
+ :deep(.el-dialog__body) {
24
+ padding: var(--vck-space-lg);
25
+ }
26
+
27
+ :deep(.el-dialog__footer) {
28
+ padding: var(--vck-space-md) var(--vck-space-lg) var(--vck-space-lg);
29
+ }
30
+ }
31
+
32
+ .dialog-form {
33
+ display: flex;
34
+ flex-direction: column;
35
+ gap: var(--vck-space-md);
36
+ }
37
+
38
+ .dialog-form-item {
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: var(--vck-space-xs);
42
+ }
43
+
44
+ .dialog-label {
45
+ font-size: 14px;
46
+ color: var(--vck-text-secondary);
47
+ font-weight: 500;
48
+ }
49
+
50
+ // 添加好友对话框
51
+ .add-friend-avatar {
52
+ width: 80px;
53
+ height: 80px;
54
+ border-radius: var(--vck-radius-lg);
55
+ object-fit: cover;
56
+ margin: 0 auto var(--vck-space-md);
57
+ display: block;
58
+ }
59
+
60
+ .add-friend-username {
61
+ text-align: center;
62
+ font-weight: 600;
63
+ color: var(--vck-text-primary);
64
+ font-size: 16px;
65
+ margin-bottom: var(--vck-space-xs);
66
+ }
67
+
68
+ .add-friend-info {
69
+ text-align: center;
70
+ color: var(--vck-text-muted);
71
+ font-size: 13px;
72
+ }
73
+
74
+ // 创建群聊对话框
75
+ .member-selector {
76
+ border: 1px solid var(--vck-border-light);
77
+ border-radius: var(--vck-radius-md);
78
+ background-color: var(--vck-bg-panel);
79
+ max-height: 300px;
80
+ overflow-y: auto;
81
+ padding: var(--vck-space-sm);
82
+ }
83
+
84
+ .member-selector-item {
85
+ display: flex;
86
+ align-items: center;
87
+ gap: var(--vck-space-sm);
88
+ padding: var(--vck-space-sm);
89
+ border-radius: var(--vck-radius-md);
90
+ cursor: pointer;
91
+ transition: var(--vck-transition-fast);
92
+
93
+ &:hover {
94
+ background-color: var(--vck-bg-hover);
95
+ }
96
+ }
97
+
98
+ .member-selector-avatar {
99
+ width: 36px;
100
+ height: 36px;
101
+ border-radius: var(--vck-radius-md);
102
+ object-fit: cover;
103
+ }
104
+
105
+ .member-selector-name {
106
+ flex: 1;
107
+ font-size: 14px;
108
+ color: var(--vck-text-primary);
109
+ }
110
+
111
+ // 群详情对话框
112
+ .group-detail-avatar {
113
+ width: 96px;
114
+ height: 96px;
115
+ border-radius: var(--vck-radius-lg);
116
+ object-fit: cover;
117
+ margin: 0 auto var(--vck-space-md);
118
+ display: block;
119
+ }
120
+
121
+ .group-detail-info {
122
+ text-align: center;
123
+ }
124
+
125
+ .group-detail-name {
126
+ font-weight: 600;
127
+ color: var(--vck-text-primary);
128
+ font-size: 20px;
129
+ margin-bottom: var(--vck-space-xs);
130
+ }
131
+
132
+ .group-detail-meta {
133
+ font-size: 13px;
134
+ color: var(--vck-text-muted);
135
+ margin-bottom: var(--vck-space-md);
136
+ }
137
+
138
+ .group-detail-section {
139
+ margin-bottom: var(--vck-space-md);
140
+ }
141
+
142
+ .group-detail-section-title {
143
+ font-size: 13px;
144
+ font-weight: 600;
145
+ color: var(--vck-text-secondary);
146
+ margin-bottom: var(--vck-space-sm);
147
+ text-transform: uppercase;
148
+ letter-spacing: 0.5px;
149
+ }
150
+
151
+ .group-detail-members {
152
+ display: flex;
153
+ flex-wrap: wrap;
154
+ gap: var(--vck-space-sm);
155
+ }
156
+
157
+ .group-detail-member {
158
+ display: flex;
159
+ flex-direction: column;
160
+ align-items: center;
161
+ gap: var(--vck-space-xs);
162
+ padding: var(--vck-space-sm);
163
+ background-color: var(--vck-bg-panel);
164
+ border-radius: var(--vck-radius-md);
165
+ min-width: 80px;
166
+ }
167
+
168
+ .group-detail-member-avatar {
169
+ width: 40px;
170
+ height: 40px;
171
+ border-radius: var(--vck-radius-md);
172
+ object-fit: cover;
173
+ }
174
+
175
+ .group-detail-member-name {
176
+ font-size: 12px;
177
+ color: var(--vck-text-secondary);
178
+ max-width: 72px;
179
+ overflow: hidden;
180
+ text-overflow: ellipsis;
181
+ white-space: nowrap;
182
+ }
183
+
184
+ // 输入框样式
185
+ :deep(.el-input__wrapper) {
186
+ background-color: var(--vck-bg-panel);
187
+ box-shadow: 0 0 0 1px var(--vck-border) inset;
188
+ border-radius: var(--vck-radius-md);
189
+ transition: var(--vck-transition-fast);
190
+
191
+ &:hover {
192
+ box-shadow: 0 0 0 1px var(--vck-border-strong) inset;
193
+ }
194
+
195
+ &.is-focus {
196
+ box-shadow: 0 0 0 1px var(--vck-primary) inset;
197
+ }
198
+ }
199
+
200
+ :deep(.el-input__inner) {
201
+ color: var(--vck-text-primary);
202
+
203
+ &::placeholder {
204
+ color: var(--vck-text-placeholder);
205
+ }
206
+ }
207
+
208
+ :deep(.el-textarea__inner) {
209
+ background-color: var(--vck-bg-panel);
210
+ border: 1px solid var(--vck-border);
211
+ border-radius: var(--vck-radius-md);
212
+ color: var(--vck-text-primary);
213
+ transition: var(--vck-transition-fast);
214
+
215
+ &:hover {
216
+ border-color: var(--vck-border-strong);
217
+ }
218
+
219
+ &:focus {
220
+ border-color: var(--vck-primary);
221
+ }
222
+
223
+ &::placeholder {
224
+ color: var(--vck-text-placeholder);
225
+ }
226
+ }
@@ -0,0 +1,74 @@
1
+ // ==========================================
2
+ // EmojiPicker 组件样式
3
+ // ==========================================
4
+
5
+ .emoji-picker {
6
+ position: absolute;
7
+ bottom: 100%;
8
+ left: 0;
9
+ width: 320px;
10
+ background: var(--vck-bg);
11
+ border-radius: var(--vck-radius-xl);
12
+ box-shadow: var(--vck-shadow);
13
+ border: 1px solid var(--vck-border);
14
+ overflow: hidden;
15
+ z-index: 1000;
16
+ margin-bottom: 8px;
17
+ }
18
+
19
+ .emoji-header {
20
+ display: flex;
21
+ padding: 8px 12px;
22
+ border-bottom: 1px solid var(--vck-border-light);
23
+ gap: 4px;
24
+ }
25
+
26
+ .emoji-category-tab {
27
+ padding: 8px 12px;
28
+ cursor: pointer;
29
+ border-radius: var(--vck-radius);
30
+ transition: var(--vck-transition-fast);
31
+ font-size: 18px;
32
+ line-height: 1;
33
+ }
34
+
35
+ .emoji-category-tab:hover {
36
+ background: var(--vck-bg-hover);
37
+ }
38
+
39
+ .emoji-category-tab.active {
40
+ background: var(--vck-bg-active);
41
+ }
42
+
43
+ .emoji-body {
44
+ display: grid;
45
+ grid-template-columns: repeat(8, 1fr);
46
+ gap: 4px;
47
+ padding: 12px;
48
+ max-height: 240px;
49
+ overflow-y: auto;
50
+ }
51
+
52
+ .emoji-body::-webkit-scrollbar {
53
+ width: 6px;
54
+ }
55
+
56
+ .emoji-body::-webkit-scrollbar-thumb {
57
+ background: var(--vck-scrollbar);
58
+ border-radius: 3px;
59
+ }
60
+
61
+ .emoji-item {
62
+ font-size: 24px;
63
+ padding: 8px;
64
+ text-align: center;
65
+ cursor: pointer;
66
+ border-radius: var(--vck-radius);
67
+ transition: var(--vck-transition-fast);
68
+ line-height: 1;
69
+ }
70
+
71
+ .emoji-item:hover {
72
+ background: var(--vck-bg-hover);
73
+ transform: scale(1.2);
74
+ }
@@ -0,0 +1,110 @@
1
+ // ==========================================
2
+ // GroupDetailDialog 组件样式
3
+ // ==========================================
4
+
5
+ .group-detail-content {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 20px;
9
+ }
10
+
11
+ .group-info-section {
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: 12px;
15
+ }
16
+
17
+ .group-info-item {
18
+ display: flex;
19
+ justify-content: space-between;
20
+ align-items: center;
21
+ padding: 12px;
22
+ background-color: var(--vck-bg-panel);
23
+ border-radius: var(--vck-radius);
24
+ }
25
+
26
+ .info-label {
27
+ font-size: 14px;
28
+ color: var(--vck-text-secondary);
29
+ }
30
+
31
+ .info-value {
32
+ font-size: 14px;
33
+ color: var(--vck-text-primary);
34
+ font-weight: 500;
35
+ }
36
+
37
+ .group-members-section {
38
+ display: flex;
39
+ flex-direction: column;
40
+ gap: 12px;
41
+ }
42
+
43
+ .section-header {
44
+ display: flex;
45
+ justify-content: space-between;
46
+ align-items: center;
47
+ }
48
+
49
+ .section-title {
50
+ font-size: 14px;
51
+ font-weight: 500;
52
+ color: var(--vck-text-primary);
53
+ }
54
+
55
+ .group-members-list {
56
+ display: grid;
57
+ grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
58
+ gap: 12px;
59
+ max-height: 300px;
60
+ overflow-y: auto;
61
+ }
62
+
63
+ .group-member-item {
64
+ display: flex;
65
+ flex-direction: column;
66
+ align-items: center;
67
+ gap: 8px;
68
+ padding: 12px;
69
+ border-radius: var(--vck-radius);
70
+ background-color: var(--vck-bg-panel);
71
+ text-align: center;
72
+ }
73
+
74
+ .group-member-avatar {
75
+ width: 50px;
76
+ height: 50px;
77
+ border-radius: 50%;
78
+ object-fit: cover;
79
+ }
80
+
81
+ .group-member-name {
82
+ font-size: 12px;
83
+ color: var(--vck-text-primary);
84
+ overflow: hidden;
85
+ text-overflow: ellipsis;
86
+ white-space: nowrap;
87
+ width: 100%;
88
+ }
89
+
90
+ .group-member-badge {
91
+ font-size: 10px;
92
+ background-color: var(--vck-bg-active);
93
+ color: var(--vck-primary);
94
+ padding: 2px 6px;
95
+ border-radius: var(--vck-radius-sm);
96
+ margin-top: 4px;
97
+ }
98
+
99
+ .group-actions-list {
100
+ display: flex;
101
+ gap: 12px;
102
+ margin-top: 8px;
103
+ }
104
+
105
+ .group-member-actions {
106
+ display: flex;
107
+ flex-direction: column;
108
+ gap: 4px;
109
+ margin-top: 4px;
110
+ }
@@ -0,0 +1,278 @@
1
+ // ==========================================
2
+ // GroupSidebar 组件样式
3
+ // ==========================================
4
+
5
+ .group-sidebar {
6
+ width: 320px;
7
+ background-color: var(--vck-bg-panel);
8
+ border-left: 1px solid var(--vck-border);
9
+ display: flex;
10
+ flex-direction: column;
11
+ height: 100%;
12
+ overflow: hidden;
13
+ }
14
+
15
+ .slide-enter-active,
16
+ .slide-leave-active {
17
+ transition: transform var(--vck-transition-fast);
18
+ }
19
+
20
+ .slide-enter-from,
21
+ .slide-leave-to {
22
+ transform: translateX(100%);
23
+ }
24
+
25
+ .group-sidebar-header {
26
+ height: 56px;
27
+ display: flex;
28
+ justify-content: space-between;
29
+ align-items: center;
30
+ padding: 0 var(--vck-space-md);
31
+ border-bottom: 1px solid var(--vck-border);
32
+ background-color: var(--vck-bg);
33
+ }
34
+
35
+ .group-sidebar-title {
36
+ font-size: 16px;
37
+ font-weight: 500;
38
+ color: var(--vck-text-primary);
39
+ }
40
+
41
+ .group-sidebar-close {
42
+ width: 32px;
43
+ height: 32px;
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ border-radius: 50%;
48
+ cursor: pointer;
49
+ transition: var(--vck-transition-fast);
50
+ color: var(--vck-text-secondary);
51
+ }
52
+
53
+ .group-sidebar-close:hover {
54
+ background-color: var(--vck-bg-hover);
55
+ color: var(--vck-text-primary);
56
+ }
57
+
58
+ .group-sidebar-content {
59
+ flex: 1;
60
+ overflow-y: auto;
61
+ padding: var(--vck-space-md);
62
+ }
63
+
64
+ .group-members-avatar-section {
65
+ margin-bottom: var(--vck-space-md);
66
+ position: relative;
67
+ }
68
+
69
+ .group-members-grid {
70
+ display: grid;
71
+ grid-template-columns: repeat(4, 1fr);
72
+ gap: var(--vck-space-md);
73
+ }
74
+
75
+ .group-member-avatar-item {
76
+ display: flex;
77
+ flex-direction: column;
78
+ align-items: center;
79
+ cursor: pointer;
80
+ padding: var(--vck-space-xs);
81
+ border-radius: var(--vck-radius-md);
82
+ transition: var(--vck-transition-fast);
83
+ }
84
+
85
+ .group-member-avatar-item:hover {
86
+ background-color: var(--vck-bg-hover);
87
+ }
88
+
89
+ .group-member-avatar-item.is-remove-mode:hover {
90
+ background-color: var(--vck-bg-active);
91
+ }
92
+
93
+ /* 移除模式整体提示 */
94
+ .group-remove-mode-hint {
95
+ background-color: var(--vck-bg-active);
96
+ color: var(--vck-danger);
97
+ padding: var(--vck-space-sm) var(--vck-space);
98
+ border-radius: var(--vck-radius);
99
+ font-size: 13px;
100
+ margin-bottom: var(--vck-space-sm);
101
+ display: flex;
102
+ align-items: center;
103
+ gap: var(--vck-space-sm);
104
+ border: 1px solid var(--vck-danger);
105
+ }
106
+
107
+ .group-member-avatar-small {
108
+ width: 48px;
109
+ height: 48px;
110
+ border-radius: var(--vck-radius-md);
111
+ object-fit: cover;
112
+ margin-bottom: var(--vck-space-xs);
113
+ transition: var(--vck-transition-fast);
114
+ }
115
+
116
+ .is-remove-mode .group-member-avatar-small {
117
+ filter: brightness(0.8);
118
+ }
119
+
120
+ .group-member-avatar-wrapper {
121
+ position: relative;
122
+ }
123
+
124
+ .group-member-remove-badge {
125
+ position: absolute;
126
+ top: -6px;
127
+ right: -6px;
128
+ background-color: var(--vck-danger);
129
+ color: var(--vck-text-white);
130
+ border-radius: 50%;
131
+ width: 18px;
132
+ height: 18px;
133
+ display: flex;
134
+ align-items: center;
135
+ justify-content: center;
136
+ font-size: 12px;
137
+ box-shadow: var(--vck-shadow-sm);
138
+ }
139
+
140
+ .group-member-action-icon {
141
+ width: 48px;
142
+ height: 48px;
143
+ border-radius: var(--vck-radius-md);
144
+ border: 1px dashed var(--vck-border-strong);
145
+ display: flex;
146
+ align-items: center;
147
+ justify-content: center;
148
+ color: var(--vck-text-secondary);
149
+ margin-bottom: var(--vck-space-xs);
150
+ background-color: var(--vck-bg);
151
+ transition: var(--vck-transition-fast);
152
+ }
153
+
154
+ .group-member-avatar-item:hover .group-member-action-icon {
155
+ border-color: var(--vck-text-muted);
156
+ background-color: var(--vck-bg-panel);
157
+ }
158
+
159
+ .group-member-avatar-item.is-active .group-member-action-icon {
160
+ border-color: var(--vck-primary);
161
+ color: var(--vck-primary);
162
+ border-style: solid;
163
+ }
164
+
165
+ .group-member-nickname {
166
+ font-size: 12px;
167
+ color: var(--vck-text-secondary);
168
+ text-align: center;
169
+ overflow: hidden;
170
+ text-overflow: ellipsis;
171
+ white-space: nowrap;
172
+ max-width: 100%;
173
+ }
174
+
175
+ .group-divider {
176
+ height: 12px;
177
+ background-color: transparent;
178
+ border-top: 1px solid var(--vck-border);
179
+ margin: var(--vck-space-md) 0;
180
+ }
181
+
182
+ .group-settings-section {
183
+ display: flex;
184
+ flex-direction: column;
185
+ gap: var(--vck-space-xs);
186
+ }
187
+
188
+ .group-setting-item {
189
+ display: flex;
190
+ justify-content: space-between;
191
+ align-items: center;
192
+ padding: 14px var(--vck-space-md);
193
+ background-color: var(--vck-bg);
194
+ cursor: pointer;
195
+ transition: var(--vck-transition-fast);
196
+ border-radius: var(--vck-radius-md);
197
+ margin-bottom: var(--vck-space-xs);
198
+ }
199
+
200
+ .group-setting-item:hover {
201
+ background-color: var(--vck-bg-panel);
202
+ }
203
+
204
+ .group-setting-item.danger {
205
+ color: var(--vck-danger);
206
+ margin-top: var(--vck-space-sm);
207
+ }
208
+
209
+ .group-setting-item.danger:hover {
210
+ background-color: var(--vck-bg-active);
211
+ }
212
+
213
+ .group-setting-label {
214
+ font-size: 14px;
215
+ color: var(--vck-text-primary);
216
+ }
217
+
218
+ .group-setting-item.danger .group-setting-label {
219
+ color: var(--vck-danger);
220
+ }
221
+
222
+ .group-setting-value {
223
+ display: flex;
224
+ align-items: center;
225
+ gap: var(--vck-space-sm);
226
+ color: var(--vck-text-secondary);
227
+ font-size: 14px;
228
+ cursor: pointer;
229
+ padding: var(--vck-space-xs) var(--vck-space-sm);
230
+ border-radius: var(--vck-radius-sm);
231
+ transition: var(--vck-transition-fast);
232
+ }
233
+
234
+ .group-setting-value:hover {
235
+ background-color: var(--vck-bg-panel);
236
+ }
237
+
238
+ .group-setting-value-text {
239
+ max-width: 160px;
240
+ overflow: hidden;
241
+ text-overflow: ellipsis;
242
+ white-space: nowrap;
243
+ color: var(--vck-text-secondary);
244
+ }
245
+
246
+ .group-edit-icon {
247
+ font-size: 14px;
248
+ color: var(--vck-text-muted);
249
+ margin-left: var(--vck-space-xs);
250
+ cursor: pointer;
251
+ }
252
+
253
+ .group-edit-icon:hover {
254
+ color: var(--vck-primary);
255
+ }
256
+
257
+ .group-setting-value-wrapper {
258
+ display: flex;
259
+ flex: 1;
260
+ justify-content: flex-end;
261
+ }
262
+
263
+ .group-edit-wrapper {
264
+ width: 100%;
265
+ display: flex;
266
+ flex-direction: column;
267
+ gap: var(--vck-space-sm);
268
+ }
269
+
270
+ .group-edit-buttons {
271
+ display: flex;
272
+ justify-content: flex-end;
273
+ gap: var(--vck-space-sm);
274
+ }
275
+
276
+ .group-input-edit {
277
+ flex: 1;
278
+ }