@sdata/web-vue 3.18.0 → 3.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/dist/sd.css +478 -0
  2. package/dist/sd.min.css +2 -2
  3. package/es/_components/icon-hover.vue.d.ts +1 -1
  4. package/es/_components/input-label/input-label.d.ts +13 -1
  5. package/es/_components/input-label/input-label.js +35 -5
  6. package/es/_components/input-label/style/index.css +6 -0
  7. package/es/_components/input-label/style/input-label.scss +8 -0
  8. package/es/_components/picker/input-range.vue.d.ts +24 -1
  9. package/es/_components/picker/input-range.vue_vue_type_script_setup_true_lang.js +42 -6
  10. package/es/_components/picker/input.vue.d.ts +24 -1
  11. package/es/_components/picker/input.vue_vue_type_script_setup_true_lang.js +31 -4
  12. package/es/_components/picker/style/index.scss +8 -0
  13. package/es/_components/select-view/select-view.d.ts +15 -3
  14. package/es/_components/select-view/select-view.js +10 -1
  15. package/es/_components/select-view/style/index.css +12 -0
  16. package/es/_components/virtual-list/virtual-list.vue.d.ts +6 -6
  17. package/es/_hooks/use-fit-width.d.ts +22 -0
  18. package/es/_hooks/use-fit-width.js +76 -0
  19. package/es/_hooks/use-form-item.d.ts +1 -1
  20. package/es/_hooks/use-size.d.ts +1 -1
  21. package/es/anchor/anchor.vue.d.ts +1 -1
  22. package/es/anchor/index.d.ts +3 -3
  23. package/es/auto-complete/auto-complete.d.ts +20 -2
  24. package/es/auto-complete/auto-complete.js +18 -0
  25. package/es/auto-complete/index.d.ts +36 -6
  26. package/es/basic-crud-table/basic-crud-table.vue.d.ts +2 -2
  27. package/es/basic-crud-table/index.d.ts +5 -5
  28. package/es/button/button.vue.d.ts +2 -2
  29. package/es/button/index.d.ts +6 -6
  30. package/es/card/card.d.ts +3 -3
  31. package/es/card/index.d.ts +6 -6
  32. package/es/carousel/carousel-indicator.vue.d.ts +1 -1
  33. package/es/cascader/base-cascader-panel.d.ts +1 -1
  34. package/es/cascader/cascader-option.d.ts +1 -1
  35. package/es/cascader/cascader-panel.vue.d.ts +1 -1
  36. package/es/cascader/cascader-search-panel.d.ts +1 -1
  37. package/es/cascader/cascader.vue.d.ts +7 -5
  38. package/es/cascader/cascader.vue_vue_type_script_setup_true_lang.js +12 -0
  39. package/es/cascader/types.d.ts +2 -1
  40. package/es/checkbox/checkbox.d.ts +3 -3
  41. package/es/checkbox/index.d.ts +6 -6
  42. package/es/collapse/collapse-item.d.ts +3 -3
  43. package/es/collapse/index.d.ts +3 -3
  44. package/es/color-picker/color-picker.d.ts +2 -2
  45. package/es/color-picker/index.d.ts +6 -6
  46. package/es/components.d.ts +4 -0
  47. package/es/config-provider/config-provider.vue.d.ts +1 -1
  48. package/es/config-provider/index.d.ts +3 -3
  49. package/es/date-picker/index.d.ts +87 -23
  50. package/es/date-picker/interface.d.ts +2 -1
  51. package/es/date-picker/picker-panel.vue.d.ts +1 -1
  52. package/es/date-picker/picker.vue.d.ts +39 -17
  53. package/es/date-picker/picker.vue_vue_type_script_setup_true_lang.js +30 -1
  54. package/es/date-picker/pickers/date-picker.d.ts +18 -0
  55. package/es/date-picker/pickers/date-picker.js +16 -0
  56. package/es/date-picker/range-picker-panel.vue.d.ts +1 -1
  57. package/es/date-picker/range-picker.vue.d.ts +39 -17
  58. package/es/date-picker/range-picker.vue_vue_type_script_setup_true_lang.js +27 -1
  59. package/es/date-picker/style/index.css +6 -0
  60. package/es/descriptions/descriptions.d.ts +3 -3
  61. package/es/descriptions/index.d.ts +9 -9
  62. package/es/divider/divider.d.ts +1 -1
  63. package/es/divider/index.d.ts +3 -3
  64. package/es/drawer/drawer.vue.d.ts +4 -4
  65. package/es/drawer/index.d.ts +11 -11
  66. package/es/dropdown/dropdown-button.vue.d.ts +2 -2
  67. package/es/dropdown/dropdown-option.vue.d.ts +1 -1
  68. package/es/dropdown/dropdown-submenu.vue.d.ts +2 -2
  69. package/es/dropdown/dropdown.vue.d.ts +1 -1
  70. package/es/dropdown/index.d.ts +21 -21
  71. package/es/ellipsis/ellipsis.vue.d.ts +1 -1
  72. package/es/ellipsis/index.d.ts +6 -6
  73. package/es/ellipsis/performant-ellipsis.vue.d.ts +1 -1
  74. package/es/form/form-item.vue.d.ts +1 -1
  75. package/es/form/form.vue.d.ts +1 -1
  76. package/es/form/index.d.ts +9 -9
  77. package/es/grid/grid-row.vue.d.ts +3 -3
  78. package/es/grid/index.d.ts +9 -9
  79. package/es/icon/icon-arrow-up/icon-arrow-up.js +5 -0
  80. package/es/icon/icon-arrow-up/icon-arrow-up.vue_vue_type_script_setup_true_lang.js +52 -0
  81. package/es/icon/icon-arrow-up/index.js +9 -0
  82. package/es/icon/icon-mute/icon-mute.js +5 -0
  83. package/es/icon/icon-mute/icon-mute.vue_vue_type_script_setup_true_lang.js +52 -0
  84. package/es/icon/icon-mute/index.js +9 -0
  85. package/es/icon/icon-voice/icon-voice.js +5 -0
  86. package/es/icon/icon-voice/icon-voice.vue_vue_type_script_setup_true_lang.js +52 -0
  87. package/es/icon/icon-voice/index.js +9 -0
  88. package/es/image/preview-action.d.ts +6 -6
  89. package/es/image/preview-group.vue.d.ts +1 -1
  90. package/es/index.css +478 -0
  91. package/es/index.d.ts +5 -0
  92. package/es/index.js +5 -1
  93. package/es/index.scss +2 -0
  94. package/es/input/index.d.ts +99 -6
  95. package/es/input/input-password.vue.d.ts +18 -0
  96. package/es/input/input-password.vue_vue_type_script_setup_true_lang.js +24 -2
  97. package/es/input/input-search.d.ts +18 -0
  98. package/es/input/input-search.js +20 -2
  99. package/es/input/input.d.ts +29 -2
  100. package/es/input/input.js +45 -3
  101. package/es/input/style/index.css +16 -0
  102. package/es/input/style/index.scss +21 -0
  103. package/es/input-number/index.d.ts +36 -6
  104. package/es/input-number/input-number.d.ts +20 -2
  105. package/es/input-number/input-number.js +19 -0
  106. package/es/input-tag/index.d.ts +36 -6
  107. package/es/input-tag/input-tag.d.ts +20 -2
  108. package/es/input-tag/input-tag.js +35 -4
  109. package/es/input-tag/style/index.css +6 -0
  110. package/es/input-tag/style/input-tag.scss +8 -0
  111. package/es/kv-list/index.d.ts +72 -32
  112. package/es/link/index.d.ts +6 -6
  113. package/es/link/link.vue.d.ts +2 -2
  114. package/es/locale/interface.d.ts +22 -0
  115. package/es/locale/lang/ar-eg.js +21 -1
  116. package/es/locale/lang/de-de.js +21 -1
  117. package/es/locale/lang/en-us.js +21 -1
  118. package/es/locale/lang/es-es.js +21 -1
  119. package/es/locale/lang/fr-fr.js +21 -1
  120. package/es/locale/lang/id-id.js +21 -1
  121. package/es/locale/lang/it-it.js +21 -1
  122. package/es/locale/lang/ja-jp.js +21 -1
  123. package/es/locale/lang/km-kh.js +21 -1
  124. package/es/locale/lang/ko-kr.js +21 -1
  125. package/es/locale/lang/ms-my.js +21 -1
  126. package/es/locale/lang/nl-nl.js +21 -1
  127. package/es/locale/lang/pt-pt.js +21 -1
  128. package/es/locale/lang/ru-ru.js +21 -1
  129. package/es/locale/lang/th-th.js +21 -1
  130. package/es/locale/lang/vi-vn.js +21 -1
  131. package/es/locale/lang/zh-cn.js +21 -1
  132. package/es/locale/lang/zh-tw.js +21 -1
  133. package/es/mention/index.d.ts +39 -9
  134. package/es/mention/mention.d.ts +21 -3
  135. package/es/mention/mention.js +24 -1
  136. package/es/mention/style/index.css +6 -0
  137. package/es/mention/style/index.scss +8 -0
  138. package/es/menu/item.d.ts +1 -1
  139. package/es/message/message-list.d.ts +1 -1
  140. package/es/modal/index.d.ts +9 -9
  141. package/es/modal/modal.vue.d.ts +3 -3
  142. package/es/popconfirm/index.d.ts +3 -3
  143. package/es/popconfirm/popconfirm.vue.d.ts +1 -1
  144. package/es/popover/index.d.ts +6 -6
  145. package/es/popover/popover.vue.d.ts +2 -2
  146. package/es/progress/circle.vue.d.ts +1 -1
  147. package/es/progress/line.vue.d.ts +1 -1
  148. package/es/qr-code/index.d.ts +15 -15
  149. package/es/qr-code/qr-code.vue.d.ts +5 -5
  150. package/es/radio/index.d.ts +6 -6
  151. package/es/radio/radio.d.ts +3 -3
  152. package/es/rate/index.d.ts +3 -3
  153. package/es/rate/rate.d.ts +1 -1
  154. package/es/resize-box/index.d.ts +5 -5
  155. package/es/resize-box/resize-box.vue.d.ts +3 -3
  156. package/es/rich-text-editor/built-in-components.d.ts +5 -0
  157. package/es/rich-text-editor/built-in-components.js +6 -0
  158. package/es/rich-text-editor/index.d.ts +195 -0
  159. package/es/rich-text-editor/index.js +12 -0
  160. package/es/rich-text-editor/nodes/inline-component-node.d.ts +30 -0
  161. package/es/rich-text-editor/nodes/inline-component-node.js +86 -0
  162. package/es/rich-text-editor/rich-text-editor.js +5 -0
  163. package/es/rich-text-editor/rich-text-editor.vue.d.ts +76 -0
  164. package/es/rich-text-editor/rich-text-editor.vue_vue_type_script_setup_true_lang.js +630 -0
  165. package/es/rich-text-editor/rich-text-node-renderer.js +5 -0
  166. package/es/rich-text-editor/rich-text-node-renderer.vue.d.ts +28 -0
  167. package/es/rich-text-editor/rich-text-node-renderer.vue_vue_type_script_setup_true_lang.js +133 -0
  168. package/es/rich-text-editor/style/css.js +2 -0
  169. package/es/rich-text-editor/style/index.css +164 -0
  170. package/es/rich-text-editor/style/index.d.ts +2 -0
  171. package/es/rich-text-editor/style/index.js +2 -0
  172. package/es/rich-text-editor/style/index.scss +193 -0
  173. package/es/rich-text-editor/style/token.scss +36 -0
  174. package/es/rich-text-editor/types.d.ts +148 -0
  175. package/es/sd-vue.js +6 -0
  176. package/es/select/index.d.ts +108 -54
  177. package/es/select/interface.d.ts +2 -1
  178. package/es/select/select.d.ts +55 -25
  179. package/es/select/select.js +18 -0
  180. package/es/sender/context.d.ts +8 -0
  181. package/es/sender/context.js +4 -0
  182. package/es/sender/index.d.ts +119 -0
  183. package/es/sender/index.js +20 -0
  184. package/es/sender/sender-header.js +5 -0
  185. package/es/sender/sender-header.vue.d.ts +28 -0
  186. package/es/sender/sender-header.vue_vue_type_script_setup_true_lang.js +127 -0
  187. package/es/sender/sender-switch.js +5 -0
  188. package/es/sender/sender-switch.vue.d.ts +32 -0
  189. package/es/sender/sender-switch.vue_vue_type_script_setup_true_lang.js +95 -0
  190. package/es/sender/sender.js +5 -0
  191. package/es/sender/sender.vue_vue_type_script_setup_true_lang.js +871 -0
  192. package/es/sender/style/css.js +3 -0
  193. package/es/sender/style/index.css +290 -0
  194. package/es/sender/style/index.d.ts +3 -0
  195. package/es/sender/style/index.js +3 -0
  196. package/es/sender/style/index.scss +346 -0
  197. package/es/sender/style/token.scss +43 -0
  198. package/es/sender/types.d.ts +171 -0
  199. package/es/sender/use-speech.d.ts +9 -0
  200. package/es/sender/use-speech.js +120 -0
  201. package/es/slider/index.d.ts +3 -3
  202. package/es/slider/slider-input.vue.d.ts +1 -1
  203. package/es/slider/slider.vue.d.ts +1 -1
  204. package/es/space/index.d.ts +9 -9
  205. package/es/space/space.d.ts +2 -2
  206. package/es/spin/index.d.ts +3 -3
  207. package/es/spin/spin.d.ts +1 -1
  208. package/es/statistic/index.d.ts +3 -3
  209. package/es/statistic/statistic.vue.d.ts +1 -1
  210. package/es/steps/index.d.ts +5 -5
  211. package/es/steps/step.vue.d.ts +2 -2
  212. package/es/steps/steps.vue.d.ts +1 -1
  213. package/es/table/index.d.ts +17 -17
  214. package/es/table/table-column.d.ts +1 -1
  215. package/es/table/table-operation-td.d.ts +12 -12
  216. package/es/table/table-td.d.ts +2 -2
  217. package/es/table/table.d.ts +5 -5
  218. package/es/tabs/index.d.ts +12 -12
  219. package/es/tabs/tabs-nav.d.ts +1 -1
  220. package/es/tabs/tabs.d.ts +4 -4
  221. package/es/tag/index.d.ts +6 -6
  222. package/es/tag/tag.vue.d.ts +2 -2
  223. package/es/textarea/index.d.ts +38 -8
  224. package/es/textarea/style/index.css +6 -0
  225. package/es/textarea/style/index.scss +8 -0
  226. package/es/textarea/textarea.vue.d.ts +21 -3
  227. package/es/textarea/textarea.vue_vue_type_script_setup_true_lang.js +36 -3
  228. package/es/time-picker/index.d.ts +36 -6
  229. package/es/time-picker/interface.d.ts +2 -1
  230. package/es/time-picker/range-panel.js +58 -0
  231. package/es/time-picker/time-picker.vue.d.ts +20 -2
  232. package/es/time-picker/time-picker.vue_vue_type_script_setup_true_lang.js +30 -1
  233. package/es/timeline/index.d.ts +6 -6
  234. package/es/timeline/timeline.d.ts +3 -3
  235. package/es/tooltip/index.d.ts +6 -6
  236. package/es/tooltip/tooltip.vue.d.ts +2 -2
  237. package/es/tour/index.d.ts +3 -3
  238. package/es/tour/tour.vue.d.ts +1 -1
  239. package/es/transfer/index.d.ts +3 -3
  240. package/es/transfer/transfer.vue.d.ts +1 -1
  241. package/es/tree/tree.vue.d.ts +4 -4
  242. package/es/tree-select/interface.d.ts +2 -1
  243. package/es/tree-select/tree-select.vue.d.ts +25 -7
  244. package/es/tree-select/tree-select.vue_vue_type_script_setup_true_lang.js +20 -0
  245. package/es/trigger/index.d.ts +12 -12
  246. package/es/trigger/trigger.d.ts +4 -4
  247. package/es/typography/base.d.ts +4 -4
  248. package/es/typography/edit-content.vue.d.ts +2 -2
  249. package/es/upload/index.d.ts +6 -6
  250. package/es/upload/upload-button.d.ts +1 -1
  251. package/es/upload/upload.d.ts +2 -2
  252. package/es/verification-code/index.d.ts +3 -3
  253. package/es/verification-code/verification-code.d.ts +1 -1
  254. package/es/watermark/index.d.ts +3 -3
  255. package/es/watermark/watermark.d.ts +1 -1
  256. package/json/vetur-attributes.json +233 -0
  257. package/json/vetur-tags.json +83 -3
  258. package/json/web-types.json +535 -2
  259. package/package.json +10 -1
@@ -0,0 +1,3 @@
1
+ import "../../style/index.css";
2
+ import "../../rich-text-editor/style/index.css";
3
+ import "./index.css";
@@ -0,0 +1,290 @@
1
+ /******** borderSize *******/
2
+ /******** borderStyle *******/
3
+ /******** radius *******/
4
+ /******** shadow distance *******/
5
+ /******** size *******/
6
+ /******** spacing *******/
7
+ /******** shadow *******/
8
+ /******** opacity *******/
9
+ /******** fontSize *******/
10
+ /******** fontWeight ********/
11
+ /******** Primary *******/
12
+ /******** success *******/
13
+ /******** warning *******/
14
+ /******** danger *******/
15
+ /******** link *******/
16
+ /******** radius *******/
17
+ /********* icon hover *********/
18
+ .sd-sender {
19
+ box-sizing: border-box;
20
+ }
21
+ .sd-sender-main {
22
+ position: relative;
23
+ width: 100%;
24
+ overflow: hidden;
25
+ background: #fff;
26
+ border: 1px solid color-mix(in srgb, var(--sd-color-neutral-3) 10%, transparent);
27
+ border-radius: calc(var(--sd-border-radius-medium) * 2);
28
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px 0 rgba(0, 0, 0, 0.02);
29
+ }
30
+ .sd-sender-disabled {
31
+ background: var(--sd-color-neutral-2);
32
+ border-color: transparent;
33
+ }
34
+ .sd-sender-content {
35
+ display: flex;
36
+ gap: 8px;
37
+ align-items: flex-end;
38
+ box-sizing: border-box;
39
+ width: 100%;
40
+ padding-block: 12px;
41
+ padding-inline: 12px;
42
+ }
43
+ .sd-sender-prefix, .sd-sender-actions-list {
44
+ flex: none;
45
+ }
46
+ .sd-sender-input {
47
+ flex: auto;
48
+ align-self: center;
49
+ min-width: 0;
50
+ padding: 0;
51
+ color: var(--sd-color-neutral-10);
52
+ font-size: 14px;
53
+ caret-color: rgb(var(--sd-primary-6));
54
+ background: transparent;
55
+ border: 0;
56
+ border-radius: 0;
57
+ outline: none;
58
+ }
59
+ .sd-sender-input.sd-sender-input.sd-textarea-wrapper {
60
+ overflow: visible;
61
+ background: transparent;
62
+ border: 0;
63
+ box-shadow: none;
64
+ }
65
+ .sd-sender-input.sd-sender-input.sd-textarea-wrapper .sd-textarea {
66
+ min-height: 32px;
67
+ padding: 5px 0;
68
+ background: transparent;
69
+ border: 0;
70
+ box-shadow: none;
71
+ }
72
+ .sd-sender-input.sd-sender-input.sd-textarea-wrapper .sd-textarea:focus, .sd-sender-input.sd-sender-input.sd-textarea-wrapper .sd-textarea:focus-visible {
73
+ border: 0;
74
+ outline: 0;
75
+ box-shadow: none;
76
+ }
77
+ .sd-sender-actions-list {
78
+ display: flex;
79
+ }
80
+ .sd-sender-actions-list-presets {
81
+ display: flex;
82
+ gap: 8px;
83
+ }
84
+ .sd-sender-actions-btn.sd-button-text {
85
+ color: rgb(var(--sd-primary-6));
86
+ }
87
+ .sd-sender-actions-btn-disabled.sd-button-text {
88
+ color: color-mix(in srgb, rgb(var(--sd-primary-6)) 45%, transparent);
89
+ border-color: transparent;
90
+ }
91
+ .sd-sender-actions-btn-disabled:not(.sd-button-text) {
92
+ color: #fff;
93
+ background: color-mix(in srgb, rgb(var(--sd-primary-6)) 45%, transparent);
94
+ border-color: transparent;
95
+ }
96
+ .sd-sender-actions-btn-loading-button {
97
+ padding: 0;
98
+ border: 0;
99
+ }
100
+ .sd-sender-actions-btn-loading-icon {
101
+ width: 32px;
102
+ height: 32px;
103
+ vertical-align: top;
104
+ }
105
+ .sd-sender-actions-btn-recording-icon {
106
+ width: 1.2em;
107
+ height: 1.2em;
108
+ vertical-align: top;
109
+ }
110
+ .sd-sender-loading-spinner {
111
+ transform-origin: center;
112
+ animation: sender-loading-rotate 1s linear infinite;
113
+ }
114
+ .sd-sender-recording-bar {
115
+ transform-box: fill-box;
116
+ transform-origin: center;
117
+ animation: sender-recording-bar 0.8s ease-in-out infinite;
118
+ }
119
+ .sd-sender-footer {
120
+ box-sizing: border-box;
121
+ padding-block: 4px 12px;
122
+ padding-inline: 12px;
123
+ }
124
+ .sd-sender-header {
125
+ overflow: hidden;
126
+ border-bottom: 1px solid color-mix(in srgb, var(--sd-color-neutral-3) 10%, transparent);
127
+ }
128
+ .sd-sender-header-header {
129
+ display: flex;
130
+ align-items: center;
131
+ padding-block: 10px;
132
+ padding-inline: 16px 8px;
133
+ font-size: 14px;
134
+ line-height: 1.5715;
135
+ background: var(--sd-color-neutral-2);
136
+ border-radius: calc(var(--sd-border-radius-medium) * 2) calc(var(--sd-border-radius-medium) * 2) 0 0;
137
+ }
138
+ .sd-sender-header-title {
139
+ flex: auto;
140
+ }
141
+ .sd-sender-header-close {
142
+ flex: none;
143
+ }
144
+ .sd-sender-header-content {
145
+ padding: 16px;
146
+ }
147
+ .sd-sender-header-motion-enter-active, .sd-sender-header-motion-leave-active {
148
+ overflow: hidden;
149
+ transition: height 0.3s cubic-bezier(0.34, 0.69, 0.1, 1), border-color 0.3s cubic-bezier(0.34, 0.69, 0.1, 1);
150
+ }
151
+ .sd-sender-input-slot.sd-rich-text-editor {
152
+ display: block;
153
+ align-self: center;
154
+ width: 100%;
155
+ min-width: 0;
156
+ padding: 0;
157
+ background: transparent;
158
+ border: 0;
159
+ border-radius: 0;
160
+ box-shadow: none;
161
+ }
162
+ .sd-sender-input-slot.sd-rich-text-editor:hover, .sd-sender-input-slot.sd-rich-text-editor:focus-within {
163
+ border: 0;
164
+ box-shadow: none;
165
+ }
166
+ .sd-sender-input-slot .sd-rich-text-editor-content {
167
+ box-sizing: border-box;
168
+ padding: 0;
169
+ color: inherit;
170
+ font: inherit;
171
+ line-height: inherit;
172
+ caret-color: rgb(var(--sd-primary-6));
173
+ outline: none;
174
+ }
175
+ .sd-sender-input-slot .sd-rich-text-editor-placeholder {
176
+ inset-block-start: 0;
177
+ inset-inline-start: 0;
178
+ color: var(--sd-color-neutral-4);
179
+ }
180
+ .sd-sender-input-slot .sd-rich-text-editor-component {
181
+ margin-inline: 4px;
182
+ }
183
+ .sd-sender-input-slot .sd-rich-text-editor-component-control {
184
+ min-height: calc(14px * 1.5715 + 2px);
185
+ font-size: inherit;
186
+ line-height: inherit;
187
+ }
188
+ .sd-sender-input-slot-content {
189
+ width: 100%;
190
+ min-height: 32px;
191
+ white-space: pre-wrap;
192
+ overflow-wrap: anywhere;
193
+ cursor: text;
194
+ }
195
+ .sd-sender-slot {
196
+ display: inline-flex;
197
+ align-items: center;
198
+ }
199
+ .sd-sender-skill {
200
+ display: inline-block;
201
+ height: calc(14px * 1.5715 + 2px);
202
+ margin-block: 1px;
203
+ margin-inline-start: -1px;
204
+ vertical-align: baseline;
205
+ word-break: break-all;
206
+ }
207
+ .sd-sender-skill-empty::after {
208
+ display: inline-block;
209
+ height: inherit;
210
+ color: var(--sd-color-neutral-4);
211
+ content: attr(data-placeholder);
212
+ pointer-events: none;
213
+ }
214
+ .sd-sender-skill-wrapper {
215
+ display: inline-flex;
216
+ height: 100%;
217
+ }
218
+ .sd-sender-skill-tag {
219
+ display: inline-flex;
220
+ gap: 4px;
221
+ align-items: center;
222
+ height: 100%;
223
+ color: rgb(var(--sd-primary-6));
224
+ font-weight: 500;
225
+ background: color-mix(in srgb, rgb(var(--sd-primary-6)) 8%, transparent);
226
+ border-radius: var(--sd-border-radius-medium);
227
+ cursor: pointer;
228
+ transition: background-color 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);
229
+ padding-inline: 8px;
230
+ }
231
+ .sd-sender-skill-tag:hover {
232
+ background: color-mix(in srgb, rgb(var(--sd-primary-6)) 15%, transparent);
233
+ }
234
+ .sd-sender-skill-tag-close {
235
+ display: inline-flex;
236
+ color: rgb(var(--sd-primary-6));
237
+ font-size: 12px;
238
+ transition: color 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);
239
+ }
240
+ .sd-sender-skill-tag-close:not(.sd-sender-skill-tag-close-disabled):hover {
241
+ color: rgb(var(--sd-primary-5));
242
+ }
243
+ .sd-sender-skill-tag-close-disabled {
244
+ color: var(--sd-color-neutral-4);
245
+ cursor: not-allowed;
246
+ }
247
+ .sd-sender-skill-holder {
248
+ width: 10px;
249
+ height: 100%;
250
+ }
251
+ .sd-sender-switch {
252
+ display: inline-block;
253
+ }
254
+ .sd-sender-switch .sd-sender-switch-content:not(:disabled):hover {
255
+ color: var(--sd-color-neutral-10);
256
+ background: color-mix(in srgb, var(--sd-color-neutral-3) 4%, transparent);
257
+ border-color: var(--sd-color-neutral-3);
258
+ }
259
+ .sd-sender-switch-checked .sd-sender-switch-content {
260
+ color: rgb(var(--sd-primary-6));
261
+ background: color-mix(in srgb, rgb(var(--sd-primary-6)) 8%, transparent);
262
+ border-color: rgb(var(--sd-primary-6));
263
+ }
264
+ .sd-sender-switch-checked .sd-sender-switch-content:not(:disabled):hover {
265
+ color: rgb(var(--sd-primary-6));
266
+ background: color-mix(in srgb, rgb(var(--sd-primary-6)) 10%, transparent);
267
+ border-color: rgb(var(--sd-primary-6));
268
+ }
269
+
270
+ @keyframes sender-loading-rotate {
271
+ to {
272
+ transform: rotate(360deg);
273
+ }
274
+ }
275
+ @keyframes sender-recording-bar {
276
+ 0%, 100% {
277
+ transform: scaleY(1);
278
+ }
279
+ 50% {
280
+ transform: scaleY(2);
281
+ }
282
+ }
283
+ @media (prefers-reduced-motion: reduce) {
284
+ .sd-sender-loading-spinner, .sd-sender-recording-bar {
285
+ animation: none;
286
+ }
287
+ .sd-sender-header-motion-enter-active, .sd-sender-header-motion-leave-active {
288
+ transition-duration: 0.01ms;
289
+ }
290
+ }
@@ -0,0 +1,3 @@
1
+ import '../../style/index.scss';
2
+ import '../../rich-text-editor/style/index.scss';
3
+ import './index.scss';
@@ -0,0 +1,3 @@
1
+ import "../../style/index.scss";
2
+ import "../../rich-text-editor/style/index.scss";
3
+ import "./index.scss";
@@ -0,0 +1,346 @@
1
+ @use 'sass:string';
2
+ @use './token.scss' as *;
3
+ @use '@style/theme/index.scss' as theme;
4
+
5
+ $sender-prefix-cls: string.unquote('#{theme.$prefix}-sender');
6
+
7
+ .#{$sender-prefix-cls} {
8
+ box-sizing: border-box;
9
+
10
+ &-main {
11
+ position: relative;
12
+ width: 100%;
13
+ overflow: hidden;
14
+ background: $sender-color-bg;
15
+ border: $sender-border-width solid $sender-color-border-input;
16
+ border-radius: $sender-border-radius;
17
+ box-shadow: $sender-box-shadow;
18
+ }
19
+
20
+ &-disabled {
21
+ background: $sender-color-bg-disabled;
22
+ border-color: transparent;
23
+ }
24
+
25
+ &-content {
26
+ display: flex;
27
+ gap: $sender-content-gap;
28
+ align-items: flex-end;
29
+ box-sizing: border-box;
30
+ width: 100%;
31
+ padding-block: $sender-padding-block;
32
+ padding-inline: $sender-padding-inline;
33
+ }
34
+
35
+ &-prefix,
36
+ &-actions-list {
37
+ flex: none;
38
+ }
39
+
40
+ &-input {
41
+ flex: auto;
42
+ align-self: center;
43
+ min-width: 0;
44
+ padding: 0;
45
+ color: $sender-color-text;
46
+ font-size: $sender-font-size;
47
+ caret-color: $sender-color-primary;
48
+ background: transparent;
49
+ border: 0;
50
+ border-radius: 0;
51
+ outline: none;
52
+
53
+ &.#{$sender-prefix-cls}-input.sd-textarea-wrapper {
54
+ overflow: visible;
55
+ background: transparent;
56
+ border: 0;
57
+ box-shadow: none;
58
+
59
+ .sd-textarea {
60
+ min-height: $sender-control-height;
61
+ padding: 5px 0;
62
+ background: transparent;
63
+ border: 0;
64
+ box-shadow: none;
65
+
66
+ &:focus,
67
+ &:focus-visible {
68
+ border: 0;
69
+ outline: 0;
70
+ box-shadow: none;
71
+ }
72
+ }
73
+ }
74
+ }
75
+
76
+ &-actions-list {
77
+ display: flex;
78
+
79
+ &-presets {
80
+ display: flex;
81
+ gap: $sender-content-gap;
82
+ }
83
+ }
84
+
85
+ &-actions-btn {
86
+ &.sd-button-text {
87
+ color: $sender-color-primary;
88
+ }
89
+
90
+ &-disabled.sd-button-text {
91
+ color: $sender-color-bg-actions-disabled;
92
+ border-color: transparent;
93
+ }
94
+
95
+ &-disabled:not(.sd-button-text) {
96
+ color: #fff;
97
+ background: $sender-color-bg-actions-disabled;
98
+ border-color: transparent;
99
+ }
100
+
101
+ &-loading-button {
102
+ padding: 0;
103
+ border: 0;
104
+ }
105
+
106
+ &-loading-icon {
107
+ width: $sender-control-height;
108
+ height: $sender-control-height;
109
+ vertical-align: top;
110
+ }
111
+
112
+ &-recording-icon {
113
+ width: 1.2em;
114
+ height: 1.2em;
115
+ vertical-align: top;
116
+ }
117
+ }
118
+
119
+ &-loading-spinner {
120
+ transform-origin: center;
121
+ animation: sender-loading-rotate 1s linear infinite;
122
+ }
123
+
124
+ &-recording-bar {
125
+ transform-box: fill-box;
126
+ transform-origin: center;
127
+ animation: sender-recording-bar 0.8s ease-in-out infinite;
128
+ }
129
+
130
+ &-footer {
131
+ box-sizing: border-box;
132
+ padding-block: $sender-footer-padding-top $sender-padding-block;
133
+ padding-inline: $sender-padding-inline;
134
+ }
135
+
136
+ &-header {
137
+ overflow: hidden;
138
+ border-bottom: $sender-border-width solid $sender-color-border-input;
139
+
140
+ &-header {
141
+ display: flex;
142
+ align-items: center;
143
+ padding-block: $sender-padding-block - theme.$border-2;
144
+ padding-inline: theme.$spacing-7 theme.$spacing-4;
145
+ font-size: $sender-font-size;
146
+ line-height: $sender-line-height;
147
+ background: $sender-color-header-bg;
148
+ border-radius: $sender-border-radius $sender-border-radius 0 0;
149
+ }
150
+
151
+ &-title {
152
+ flex: auto;
153
+ }
154
+
155
+ &-close {
156
+ flex: none;
157
+ }
158
+
159
+ &-content {
160
+ padding: theme.$spacing-7;
161
+ }
162
+
163
+ &-motion-enter-active,
164
+ &-motion-leave-active {
165
+ overflow: hidden;
166
+ transition:
167
+ height $sender-motion-duration $sender-motion-easing,
168
+ border-color $sender-motion-duration $sender-motion-easing;
169
+ }
170
+ }
171
+
172
+ &-input-slot {
173
+ &.sd-rich-text-editor {
174
+ display: block;
175
+ align-self: center;
176
+ width: 100%;
177
+ min-width: 0;
178
+ padding: 0;
179
+ background: transparent;
180
+ border: 0;
181
+ border-radius: 0;
182
+ box-shadow: none;
183
+ }
184
+
185
+ &.sd-rich-text-editor:hover,
186
+ &.sd-rich-text-editor:focus-within {
187
+ border: 0;
188
+ box-shadow: none;
189
+ }
190
+
191
+ .sd-rich-text-editor-content {
192
+ box-sizing: border-box;
193
+ padding: 0;
194
+ color: inherit;
195
+ font: inherit;
196
+ line-height: inherit;
197
+ caret-color: $sender-color-primary;
198
+ outline: none;
199
+ }
200
+
201
+ .sd-rich-text-editor-placeholder {
202
+ inset-block-start: 0;
203
+ inset-inline-start: 0;
204
+ color: $sender-color-text-placeholder;
205
+ }
206
+
207
+ .sd-rich-text-editor-component {
208
+ margin-inline: $sender-slot-gap;
209
+ }
210
+
211
+ .sd-rich-text-editor-component-control {
212
+ min-height: calc(#{$sender-font-size} * #{$sender-line-height} + 2px);
213
+ font-size: inherit;
214
+ line-height: inherit;
215
+ }
216
+ }
217
+
218
+ &-input-slot-content {
219
+ width: 100%;
220
+ min-height: $sender-control-height;
221
+ white-space: pre-wrap;
222
+ overflow-wrap: anywhere;
223
+ cursor: text;
224
+ }
225
+
226
+ &-slot {
227
+ display: inline-flex;
228
+ align-items: center;
229
+ }
230
+
231
+ &-skill {
232
+ display: inline-block;
233
+ height: calc(#{$sender-font-size} * #{$sender-line-height} + 2px);
234
+ margin-block: 1px;
235
+ margin-inline-start: -1px;
236
+ vertical-align: baseline;
237
+ word-break: break-all;
238
+
239
+ &-empty::after {
240
+ display: inline-block;
241
+ height: inherit;
242
+ color: $sender-color-text-placeholder;
243
+ content: attr(data-placeholder);
244
+ pointer-events: none;
245
+ }
246
+
247
+ &-wrapper {
248
+ display: inline-flex;
249
+ height: 100%;
250
+ }
251
+
252
+ &-tag {
253
+ display: inline-flex;
254
+ gap: $sender-slot-gap;
255
+ align-items: center;
256
+ height: 100%;
257
+ color: $sender-color-primary;
258
+ font-weight: theme.$font-weight-500;
259
+ background: $sender-color-bg-skill;
260
+ border-radius: $sender-slot-border-radius;
261
+ cursor: pointer;
262
+ transition: background-color $sender-motion-duration-fast $sender-motion-easing;
263
+ padding-inline: $sender-skill-padding-inline;
264
+
265
+ &:hover {
266
+ background: $sender-color-bg-skill-hover;
267
+ }
268
+
269
+ &-close {
270
+ display: inline-flex;
271
+ color: $sender-color-primary;
272
+ font-size: theme.$font-size-body-1;
273
+ transition: color $sender-motion-duration-fast $sender-motion-easing;
274
+
275
+ &:not(.#{$sender-prefix-cls}-skill-tag-close-disabled):hover {
276
+ color: $sender-color-primary-hover;
277
+ }
278
+ }
279
+
280
+ &-close-disabled {
281
+ color: $sender-color-text-disabled;
282
+ cursor: not-allowed;
283
+ }
284
+ }
285
+
286
+ &-holder {
287
+ width: $sender-skill-holder-width;
288
+ height: 100%;
289
+ }
290
+ }
291
+
292
+ &-switch {
293
+ display: inline-block;
294
+
295
+ .#{$sender-prefix-cls}-switch-content:not(:disabled):hover {
296
+ color: $sender-color-text;
297
+ background: $sender-switch-unchecked-hover-bg;
298
+ border-color: $sender-color-border;
299
+ }
300
+
301
+ &-checked {
302
+ .#{$sender-prefix-cls}-switch-content {
303
+ color: $sender-color-primary;
304
+ background: $sender-switch-checked-bg;
305
+ border-color: $sender-color-primary;
306
+
307
+ &:not(:disabled):hover {
308
+ color: $sender-color-primary;
309
+ background: $sender-switch-checked-hover-bg;
310
+ border-color: $sender-color-primary;
311
+ }
312
+ }
313
+ }
314
+ }
315
+ }
316
+
317
+ @keyframes sender-loading-rotate {
318
+ to {
319
+ transform: rotate(360deg);
320
+ }
321
+ }
322
+
323
+ @keyframes sender-recording-bar {
324
+ 0%,
325
+ 100% {
326
+ transform: scaleY(1);
327
+ }
328
+
329
+ 50% {
330
+ transform: scaleY(2);
331
+ }
332
+ }
333
+
334
+ @media (prefers-reduced-motion: reduce) {
335
+ .#{$sender-prefix-cls} {
336
+ &-loading-spinner,
337
+ &-recording-bar {
338
+ animation: none;
339
+ }
340
+
341
+ &-header-motion-enter-active,
342
+ &-header-motion-leave-active {
343
+ transition-duration: 0.01ms;
344
+ }
345
+ }
346
+ }
@@ -0,0 +1,43 @@
1
+ @use '@style/theme/index.scss' as global;
2
+
3
+ @forward '@style/theme/index.scss';
4
+
5
+ $sender-font-size: global.$font-size-body-3;
6
+ $sender-line-height: global.$line-height-base;
7
+ $sender-border-width: global.$border-1;
8
+ $sender-border-radius: calc(global.$radius-medium * 2);
9
+ $sender-slot-border-radius: global.$radius-medium;
10
+ $sender-control-height: global.$size-default;
11
+
12
+ $sender-padding-block: global.$spacing-6;
13
+ $sender-padding-inline: global.$spacing-6;
14
+ $sender-content-gap: global.$spacing-4;
15
+ $sender-footer-padding-top: global.$spacing-2;
16
+ $sender-slot-gap: global.$spacing-2;
17
+ $sender-skill-padding-inline: global.$spacing-4;
18
+ $sender-skill-holder-width: global.$spacing-5;
19
+
20
+ $sender-color-primary: global.$color-primary-6;
21
+ $sender-color-primary-hover: global.$color-primary-5;
22
+ $sender-color-text: global.$color-text-1;
23
+ $sender-color-text-disabled: global.$color-text-4;
24
+ $sender-color-text-placeholder: global.$color-text-4;
25
+ $sender-color-bg: global.$color-bg-2;
26
+ $sender-color-bg-disabled: global.$color-fill-2;
27
+ $sender-color-header-bg: global.$color-fill-2;
28
+ $sender-color-border: global.$color-border-2;
29
+ $sender-color-border-input: color-mix(in srgb, #{global.$color-fill-3} 10%, transparent);
30
+ $sender-color-bg-skill: color-mix(in srgb, #{global.$color-primary-6} 8%, transparent);
31
+ $sender-color-bg-skill-hover: color-mix(in srgb, #{global.$color-primary-6} 15%, transparent);
32
+ $sender-color-bg-actions-disabled: color-mix(in srgb, #{global.$color-primary-6} 45%, transparent);
33
+ $sender-switch-checked-bg: color-mix(in srgb, #{global.$color-primary-6} 8%, transparent);
34
+ $sender-switch-checked-hover-bg: color-mix(in srgb, #{global.$color-primary-6} 10%, transparent);
35
+ $sender-switch-unchecked-hover-bg: color-mix(in srgb, #{global.$color-fill-3} 4%, transparent);
36
+
37
+ $sender-box-shadow:
38
+ 0 1px 2px 0 rgb(0 0 0 / 3%),
39
+ 0 1px 6px -1px rgb(0 0 0 / 2%),
40
+ 0 2px 4px 0 rgb(0 0 0 / 2%);
41
+ $sender-motion-duration: global.$transition-duration-3;
42
+ $sender-motion-duration-fast: global.$transition-duration-2;
43
+ $sender-motion-easing: global.$transition-timing-function-standard;