aiChatDialogue.scss 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655
  1. @import './variables.scss';
  2. $module: #{$prefix}-ai-chat-dialogue;
  3. @mixin loading-circle-common() {
  4. border-radius: $radius-aiChatDialogue_loading_circle;
  5. height: $width-aiChatDialogue_loading_circle;
  6. width: $height-aiChatDialogue_loading_circle;
  7. background-color: $color-aiChatDialogue_loading_circle_bg;
  8. background-color: $color-aiChatDialogue_loading_circle-bg;
  9. }
  10. .#{$module} {
  11. &-wrapper {
  12. box-sizing: border-box;
  13. display: flex;
  14. flex-direction: row;
  15. align-items: center;
  16. width: $width-aiChatDialogue_wrapper;
  17. flex-wrap: nowrap;
  18. padding: $spacing-aiChatDialogue_wrapper-paddingY $spacing-aiChatDialogue_wrapper-paddingX;
  19. .#{$module}-checkbox {
  20. width: $width-aiChatDialogue_checkbox;
  21. }
  22. .#{$module}-container {
  23. flex: 1 1 auto;
  24. display: flex;
  25. flex-direction: row;
  26. column-gap: $spacing-aiChatDialogue_container-columnGap;
  27. &-right {
  28. flex-direction: row-reverse;
  29. .#{$module}-inner {
  30. width: $width-aiChatDialogue_inner;
  31. display: flex;
  32. flex-direction: column;
  33. align-items: flex-end;
  34. }
  35. .#{$module}-content {
  36. &-no-bubble, &-user, &-custom-renderer {
  37. margin-left: auto;
  38. }
  39. }
  40. }
  41. }
  42. &:hover {
  43. .#{$module}-action:not(.#{$module}-action-hidden) {
  44. visibility: visible;
  45. }
  46. }
  47. }
  48. &-title {
  49. line-height: $font-aiChatDialogue_title-lineHeight;
  50. font-size: $font-aiChatDialogue_title-fontSize;
  51. font-weight: $font-aiChatDialogue_title-fontWeight;
  52. text-overflow: ellipsis;
  53. }
  54. &-avatar {
  55. flex-shrink: 0;
  56. width: $width-aiChatDialogue_avatar;
  57. height: $height-aiChatDialogue_avatar;
  58. &-hidden {
  59. visibility: hidden;
  60. }
  61. }
  62. &-content {
  63. width: $width-aiChatDialogue_content;
  64. max-width: $width-aiChatDialogue_content_max;
  65. font-size: $font-aiChatDialogue_content-fontSize;
  66. pre {
  67. background-color: transparent;
  68. }
  69. &-editing {
  70. width: $width-aiChatDialogue_content_editing;
  71. }
  72. &-wrapper {
  73. display: flex;
  74. align-items: end;
  75. }
  76. &-inner {
  77. margin-left: auto;
  78. }
  79. &-failed {
  80. color: $color-aiChatDialogue_failed;
  81. margin-right: $spacing-aiChatDialogue_content_failed-marginRight;
  82. }
  83. &-bubble, &-userBubble {
  84. margin-top: $spacing-aiChatDialogue_content_bubble-marginTop;
  85. padding: $spacing-aiChatDialogue_bubble-paddingY $spacing-aiChatDialogue_bubble-paddingX;
  86. border-radius: $radius-aiChatDialogue_bubble;
  87. background-color: $color-aiChatDialogue_bubble-bg;
  88. max-width: $width-aiChatDialogue_bubble_max;
  89. box-sizing: border-box;
  90. width: $width-aiChatDialogue_bubble;
  91. }
  92. &-no-bubble {
  93. margin-top: $spacing-aiChatDialogue_content_noBubble-marginTop;
  94. }
  95. &-loading {
  96. display: flex;
  97. align-items: baseline;
  98. margin-top: $spacing-aiChatDialogue_content_loading-marginTop;
  99. &-item {
  100. @include loading-circle-common();
  101. margin: $spacing-aiChatDialogue_loading_item-marginY $spacing-aiChatDialogue_loading_item-marginX;
  102. overflow: visible;
  103. position: relative;
  104. animation: #{$module}-loading-flashing .8s infinite alternate;
  105. animation-delay: -0.2s;
  106. animation-timing-function: ease;
  107. &::before {
  108. content: '';
  109. @include loading-circle-common();
  110. position: absolute;
  111. top: 0;
  112. left: $spacing-aiChatDialogue_loading_item_before-left;
  113. animation: #{$module}-loading-flashing .8s infinite alternate;
  114. animation-timing-function: ease;
  115. animation-delay: -0.4s;
  116. }
  117. &::after {
  118. content: '';
  119. @include loading-circle-common();
  120. position: absolute;
  121. top: 0;
  122. left: $spacing-aiChatDialogue_loading_item_after-left;
  123. animation: #{$module}-loading-flashing .8s infinite alternate;
  124. animation-delay: 0s;
  125. animation-timing-function: ease;
  126. }
  127. }
  128. &-text {
  129. margin-left: $spacing-aiChatDialogue_loading_text-marginLeft;
  130. color: var(--semi-color-text-3);
  131. font-size: $font-aiChatDialogue_loading_text-fontSize;
  132. }
  133. }
  134. &-img {
  135. margin-top: $spacing-aiChatDialogue_img-marginTop;
  136. border-radius: $radius-aiChatDialogue_img;
  137. img {
  138. width: $width-aiChatDialogue_img;
  139. height: $height-aiChatDialogue_img;
  140. object-fit: cover;
  141. }
  142. &-list {
  143. display: inline-flex;
  144. flex-direction: column;
  145. margin-right: $spacing-aiChatDialogue_img_list-marginRight;
  146. img {
  147. width: $width-aiChatDialogue_img_list;
  148. height: $height-aiChatDialogue_img_list;
  149. object-fit: cover;
  150. }
  151. }
  152. &-list:last-child {
  153. margin-right: 0;
  154. }
  155. }
  156. &-file {
  157. display: inline-flex;
  158. flex-direction: row;
  159. align-items: center;
  160. height: $height-aiChatDialogue_file;
  161. width: $width-aiChatDialogue_file;
  162. column-gap: $spacing-aiChatDialogue_file-columnGap;
  163. padding: $spacing-aiChatDialogue_file-paddingY $spacing-aiChatDialogue_file-paddingX;
  164. margin-top: $spacing-aiChatDialogue_file-marginTop;
  165. margin-right: $spacing-aiChatDialogue_file-marginRight;
  166. border-radius: $radius-aiChatDialogue_file;
  167. background: $color-aiChatDialogue_file-bg;
  168. text-decoration: none;
  169. &:last-child {
  170. margin-right: 0;
  171. }
  172. &-icon {
  173. color: $color-aiChatDialogue_icon-text;
  174. &-wrapper {
  175. width: $width-aiChatDialogue_file_icon_wrapper;
  176. height: $height-aiChatDialogue_file_icon_wrapper;
  177. border-radius: $radius-aiChatDialogue_icon_wrapper;
  178. @include all-center;
  179. }
  180. &-code {
  181. background-color: $color-aiChatDialogue_code_icon-bg;
  182. }
  183. &-word {
  184. background-color: $color-aiChatDialogue_word_icon-bg;
  185. }
  186. &-pdf {
  187. background-color: $color-aiChatDialogue_pdf_icon-bg;
  188. }
  189. &-excel {
  190. background-color: $color-aiChatDialogue_excel_icon-bg;
  191. }
  192. &-image {
  193. background-color: $color-aiChatDialogue_image_icon-bg;
  194. }
  195. &-default {
  196. background-color: $color-aiChatDialogue_default_icon-bg;
  197. }
  198. }
  199. &-info {
  200. display: flex;
  201. flex-direction: column;
  202. }
  203. &-title {
  204. font-size: $font-aiChatDialogue_file_title-fontSize;
  205. color: $color-aiChatDialogue_file_title-text;
  206. max-width: $width-aiChatDialogue_file_title_max;
  207. text-overflow: ellipsis;
  208. overflow: hidden;
  209. }
  210. &-metadata {
  211. font-size: $font-aiChatDialogue_file_metadata-fontSize;
  212. color: $color-aiChatDialogue_file_metadata-text;
  213. }
  214. &-type {
  215. text-transform: uppercase;
  216. }
  217. }
  218. &-tool-call {
  219. display: flex;
  220. color: $color-aiChatDialogue_tool_call-text;
  221. padding: $spacing-aiChatDialogue_tool_call-paddingY $spacing-aiChatDialogue_tool_call-paddingX;
  222. background-color: $color-aiChatDialogue_tool_call-bg;
  223. border-radius: $radius-aiChatDialogue_tool_call;
  224. width: $width-aiChatDialogue_tool_call;
  225. align-items: center;
  226. justify-content: center;
  227. column-gap: $spacing-aiChatDialogue_tool_call-columnGap;
  228. margin-top: $spacing-aiChatDialogue_tool_call-marginTop;
  229. }
  230. &-custom-renderer {
  231. margin-top: $spacing-aiChatDialogue_custom_renderer-marginTop;
  232. width: $width-aiChatDialogue_custom_renderer;
  233. }
  234. }
  235. &-action {
  236. margin-top: $spacing-aiChatDialogue_action-marginTop;
  237. visibility: hidden;
  238. &-btn {
  239. width: $width-aiChatDialogue_action_btn;
  240. height: $height-aiChatDialogue_action_btn;
  241. }
  242. &-icon-flip {
  243. transform: scaleY(-1);
  244. }
  245. &-show {
  246. visibility: visible;
  247. }
  248. &.#{$module}-action-hidden, &:hover.#{$module}-action-hidden {
  249. visibility: hidden;
  250. }
  251. &-dropdown {
  252. li {
  253. color: $color-aiChatDialogue_action_dropdown-text;
  254. }
  255. .#{$prefix}-icon {
  256. font-size: $font-aiChatDialogue_dropdown_icon-fontSize;
  257. }
  258. }
  259. }
  260. &-reasoning {
  261. width: $width-aiChatDialogue_reasoning;
  262. &-wrapper {
  263. width: $width-aiChatDialogue_reasoning_wrapper;
  264. margin-top: $spacing-aiChatDialogue_reasoning_wrapper-marginTop;
  265. flex: 1 1 auto;
  266. // min-width: 0;
  267. cursor: pointer;
  268. border: $width-aiChatDialogue_reasoning-border solid $color-aiChatDialogue_reasoning-border;
  269. border-radius: $radius-aiChatDialogue_reasoning_wrapper;
  270. }
  271. &-header {
  272. box-sizing: border-box;
  273. display: flex;
  274. flex-direction: row;
  275. align-items: center;
  276. justify-content: center;
  277. padding: $spacing-aiChatDialogue_reasoning_header-padding;
  278. &-prefix, &-suffix {
  279. width: $width-aiChatDialogue_reasoning_prefix;
  280. height: $height-aiChatDialogue_reasoning_prefix;
  281. @include all-center;
  282. }
  283. &-title {
  284. flex: 1 1 auto;
  285. // min-width: 0;
  286. line-height: $font-aiChatDialogue_reasoning_header_title-lineHeight;
  287. font-weight: $font-aiChatDialogue_reasoning_header_title-fontWeight;
  288. }
  289. }
  290. &-content {
  291. padding: $spacing-aiChatDialogue_reasoning_content-paddingY $spacing-aiChatDialogue_reasoning_content-paddingX;
  292. border-top: $width-aiChatDialogue_reasoning-border solid var(--semi-color-border);
  293. }
  294. }
  295. &-step {
  296. display: inline-flex;
  297. flex-direction: row;
  298. align-items: center;
  299. line-height: $font-aiChatDialogue_step-lineHeight;
  300. padding: $spacing-aiChatDialogue_step-paddingY $spacing-aiChatDialogue_step-paddingX;
  301. border: $width-aiChatDialogue_step-border solid var(--semi-color-border);
  302. border-radius: $radius-aiChatDialogue_step;
  303. margin-top: $spacing-aiChatDialogue_step-marginTop;
  304. font-size: $font-aiChatDialogue_step-fontSize;
  305. &-completed {
  306. color: $color-aiChatDialogue_step_completed-text;
  307. }
  308. &-summary {
  309. display: inline-block;
  310. width: $width-aiChatDialogue_step_summary;
  311. cursor: pointer;
  312. }
  313. &-prefix {
  314. width: $width-aiChatDialogue_step_prefix;
  315. height: $height-aiChatDialogue_step_prefix;
  316. @include all-center;
  317. margin-right: $spacing-aiChatDialogue_step_prefix-marginRight;
  318. }
  319. &-suffix {
  320. width: $width-aiChatDialogue_step_suffix;
  321. height: $height-aiChatDialogue_step_suffix;
  322. @include all-center;
  323. color: $color-aiChatDialogue_step_suffix-text;
  324. margin-left: $spacing-aiChatDialogue_step_suffix-marginLeft;
  325. }
  326. &-panel {
  327. display: flex;
  328. gap: $spacing-aiChatDialogue_step_panel-gap;
  329. }
  330. &-line {
  331. width: $width-aiChatDialogue_step_line;
  332. background-color: $color-aiChatDialogue_step-border;
  333. margin-left: $spacing-aiChatDialogue_step_line-marginLeft;
  334. }
  335. &-action {
  336. line-height: $font-aiChatDialogue_step_action-lineHeight;
  337. margin-top: $spacing-aiChatDialogue_step_action-marginTop;
  338. font-size: $font-aiChatDialogue_step_action-fontSize;
  339. &-summary {
  340. margin-bottom: $spacing-aiChatDialogue_step_action_summary-marginBottom;
  341. }
  342. &-desc {
  343. display: inline-flex;
  344. color: $color-aiChatDialogue_step_action-text;
  345. padding: $spacing-aiChatDialogue_step_action_desc-paddingY $spacing-aiChatDialogue_step_action_desc-paddingX;
  346. background-color: $color-aiChatDialogue_step_action-bg;
  347. border-radius: $radius-aiChatDialogue_action_desc;
  348. width: $width-aiChatDialogue_step_action_desc;
  349. align-items: center;
  350. justify-content: center;
  351. column-gap: $spacing-aiChatDialogue_step_action_desc-columnGap;
  352. }
  353. }
  354. }
  355. &-step-wrapper {
  356. > .#{$module}-step:first-child {
  357. margin-top: $spacing-aiChatDialogue_step_wrapper-marginTop;
  358. }
  359. }
  360. &-annotation {
  361. width: $width-aiChatDialogue_annotation;
  362. &-wrapper {
  363. width: $width-aiChatDialogue_annotation_wrapper;
  364. margin-top: $spacing-aiChatDialogue_annotation_wrapper-marginTop;
  365. flex: 1 1 auto;
  366. border: $width-aiChatDialogue_annotation-border solid $color-aiChatDialogue_annotation-border;
  367. border-radius: $radius-aiChatDialogue_annotation_wrapper;
  368. padding: $spacing-aiChatDialogue_annotation_wrapper-paddingY $spacing-aiChatDialogue_annotation_wrapper-paddingX;
  369. &:hover {
  370. background-color: $color-aiChatDialogue_annotation-bg-hover;
  371. }
  372. }
  373. &-content {
  374. display: flex;
  375. flex-direction: row;
  376. align-items: center;
  377. justify-content: center;
  378. column-gap: $spacing-aiChatDialogue_annotation_content-columnGap;
  379. font-size: $font-aiChatDialogue_annotation_content-fontSize;
  380. color: $color-aiChatDialogue_annotation-text;
  381. cursor: pointer;
  382. .#{$prefix}-avatar-group {
  383. display: flex;
  384. }
  385. &-logo {
  386. width: $width-aiChatDialogue_annotation_logo;
  387. height: $height-aiChatDialogue_annotation_logo;
  388. display: flex;
  389. }
  390. &-logo-renderMore {
  391. width: $width-aiChatDialogue_annotation_logo;
  392. height: $height-aiChatDialogue_annotation_logo;
  393. }
  394. &-icon {
  395. @include all-center;
  396. }
  397. }
  398. }
  399. &-references {
  400. display: flex;
  401. flex-wrap: wrap;
  402. font-size: $font-aiChatDialogue_references-fontSize;
  403. line-height: $font-aiChatDialogue_references-lineHeight;
  404. color: $color-aiChatDialogue_reference-text;
  405. margin-top: $spacing-aiChatDialogue_references-marginTop;
  406. column-gap: $spacing-aiChatDialogue_references-columnGap;
  407. row-gap: $spacing-aiChatDialogue_references-rowGap;
  408. .#{$module}-reference {
  409. display: flex;
  410. padding: $spacing-aiChatDialogue_reference-paddingY $spacing-aiChatDialogue_reference-paddingX;
  411. box-sizing: border-box;
  412. width: $width-aiChatDialogue_reference;
  413. max-width: $width-aiChatDialogue_reference_max;
  414. flex-shrink: 1;
  415. align-items: center;
  416. column-gap: $spacing-aiChatDialogue_reference-columnGap;
  417. background-color: $color-aiChatDialogue_reference-bg;
  418. border-radius: $radius-aiChatDialogue_reference;
  419. &-content {
  420. display: flex;
  421. align-items: center;
  422. flex-grow: 1;
  423. text-overflow: ellipsis;
  424. overflow: hidden;
  425. white-space: nowrap;
  426. }
  427. &-icon {
  428. @include all-center;
  429. margin-right: $spacing-aiChatDialogue_reference_icon-marginRight;
  430. color: $color-aiChatDialogue_icon-text;
  431. width: $width-aiChatDialogue_reference_icon;
  432. height: $height-aiChatDialogue_reference_icon;
  433. border-radius: $radius-aiChatDialogue_reference_icon;
  434. &-word {
  435. background-color: $color-aiChatDialogue_word_icon-bg;
  436. }
  437. &-pdf {
  438. background-color: $color-aiChatDialogue_pdf_icon-bg;
  439. }
  440. &-excel {
  441. background-color: $color-aiChatDialogue_excel_icon-bg;
  442. }
  443. &-video {
  444. background-color: $color-aiChatDialogue_video_icon-bg;
  445. }
  446. &-code {
  447. background-color: $color-aiChatDialogue_code_icon-bg;
  448. }
  449. }
  450. &-img {
  451. margin-right: $spacing-aiChatDialogue_reference_img-marginRight;
  452. }
  453. &-name {
  454. display: inline-block;
  455. text-overflow: ellipsis;
  456. overflow: hidden;
  457. word-break: break-all;
  458. }
  459. }
  460. }
  461. &-code {
  462. border-radius: $radius-aiChatDialogue_code;
  463. overflow: hidden;
  464. border: $width-aiChatDialogue_code-border solid $color-aiChatDialogue_code-border;
  465. line-height: $font-aiChatDialogue_code-lineHeight;
  466. & .#{$prefix}-codeHighlight pre {
  467. word-break: break-all;
  468. white-space: pre-wrap;
  469. }
  470. &-topSlot {
  471. display: flex;
  472. justify-content: space-between;
  473. background-color: $color-aiChatDialogue_code_topSlot-bg;
  474. align-items: center;
  475. padding: $spacing-aiChatDialogue_code_topSlot-paddingY $spacing-aiChatDialogue_code_topSlot-paddingX;
  476. color: $color-aiChatDialogue_code_topSlot-text;
  477. font-size: $font-aiChatDialogue_code_topSlot-fontSize;
  478. &-copy {
  479. display: flex;
  480. justify-content: flex-end;
  481. align-items: center;
  482. width: $width-aiChatDialogue_action_copy;
  483. &-wrapper {
  484. display: flex;
  485. align-items: center;
  486. justify-content: center;
  487. cursor: pointer;
  488. background: transparent;
  489. border: none;
  490. }
  491. }
  492. }
  493. .#{$prefix}-codeHighlight-defaultTheme pre[class*=language-] {
  494. margin: 0px;
  495. background: $color-aiChatDialogue_code_content-bg;
  496. }
  497. }
  498. &-hints {
  499. display: flex;
  500. flex-direction: column;
  501. row-gap: $spacing-aiChatDialogue_hints-rowGap;
  502. margin-top: $spacing-aiChatDialogue_hints-marginTop;
  503. margin-bottom: $spacing-aiChatDialogue_hints-marginBottom;
  504. }
  505. &-hint {
  506. &-item {
  507. cursor: pointer;
  508. display: flex;
  509. flex-direction: row;
  510. width: fit-content;
  511. background: $color-aiChatDialogue_hint-bg;
  512. align-items: center;
  513. border: $width-aiChatDialogue_hint-border solid $color-aiChatDialogue_hint-border;
  514. padding: $spacing-aiChatDialogue_hint_item-paddingY $spacing-aiChatDialogue_hint_item-paddingX;
  515. border-radius: $radius-aiChatDialogue_hint_item;
  516. &:hover {
  517. background-color: $color-aiChatDialogue_hint-bg-hover;
  518. }
  519. }
  520. &-content {
  521. font-size: $font-aiChatDialogue_hint_content-fontSize;
  522. color: $color-aiChatDialogue_hint-text;
  523. }
  524. }
  525. }
  526. @keyframes #{$module}-loading-flashing {
  527. 0% {
  528. opacity: 1;;
  529. }
  530. 50% {
  531. opacity: 0.1;
  532. }
  533. to {
  534. opacity: 1;
  535. }
  536. }
  537. @import './rtl.scss';