@touchvue/chat 1.0.0-beta.54 → 1.0.0-beta.55

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 (153) hide show
  1. package/README.md +70 -70
  2. package/es/node_modules/.pnpm/{dompurify@3.3.0 → dompurify@3.4.3}/node_modules/dompurify/dist/purify.es.mjs +299 -143
  3. package/es/node_modules/.pnpm/dompurify@3.4.3/node_modules/dompurify/dist/purify.es.mjs.map +1 -0
  4. package/es/package.json.css +1 -1
  5. package/es/package.json.mjs +1 -1
  6. package/es/packages/components/resolver.mjs.map +1 -1
  7. package/es/packages/components/touchchat/component/AiRobot/HelloChat.vue2.mjs.map +1 -1
  8. package/es/packages/components/touchchat/component/AiRobot/letter.vue.mjs +1 -1
  9. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs +9 -9
  10. package/es/packages/components/touchchat/component/AiRobot/letter.vue2.mjs.map +1 -1
  11. package/es/packages/components/touchchat/component/AudioFile.vue.mjs +7 -0
  12. package/es/packages/components/touchchat/component/AudioFile.vue.mjs.map +1 -0
  13. package/es/packages/components/touchchat/component/AudioFile.vue2.mjs +111 -0
  14. package/es/packages/components/touchchat/component/AudioFile.vue2.mjs.map +1 -0
  15. package/es/packages/components/touchchat/component/FileContent.vue2.mjs +3 -3
  16. package/es/packages/components/touchchat/component/FileContent.vue2.mjs.map +1 -1
  17. package/es/packages/components/touchchat/component/FileView.vue2.mjs +2 -2
  18. package/es/packages/components/touchchat/component/FileView.vue2.mjs.map +1 -1
  19. package/es/packages/components/touchchat/component/HelloChat.vue2.mjs.map +1 -1
  20. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs +6 -6
  21. package/es/packages/components/touchchat/component/ImageFile.vue2.mjs.map +1 -1
  22. package/es/packages/components/touchchat/component/ImageView.vue2.mjs +1 -1
  23. package/es/packages/components/touchchat/component/ImageView.vue2.mjs.map +1 -1
  24. package/es/packages/components/touchchat/component/LinkView.vue2.mjs +4 -4
  25. package/es/packages/components/touchchat/component/LinkView.vue2.mjs.map +1 -1
  26. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs +1 -1
  27. package/es/packages/components/touchchat/component/MarkLayer.vue2.mjs.map +1 -1
  28. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs +56 -5
  29. package/es/packages/components/touchchat/component/ModuleSelect.vue2.mjs.map +1 -1
  30. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs +10 -10
  31. package/es/packages/components/touchchat/component/PDFFile.vue2.mjs.map +1 -1
  32. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs +52 -10
  33. package/es/packages/components/touchchat/component/QuoteContent.vue2.mjs.map +1 -1
  34. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs +1 -1
  35. package/es/packages/components/touchchat/component/RealtimeVoice.vue2.mjs.map +1 -1
  36. package/es/packages/components/touchchat/component/UploadView.vue2.mjs.map +1 -1
  37. package/es/packages/components/touchchat/component/VideoFile.vue.mjs +1 -1
  38. package/es/packages/components/touchchat/component/VideoFile.vue2.mjs.map +1 -1
  39. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs +13 -4
  40. package/es/packages/components/touchchat/component/VoiceView.vue2.mjs.map +1 -1
  41. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs +1 -1
  42. package/es/packages/components/touchchat/src/AiChat/AgentsView.vue2.mjs.map +1 -1
  43. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs +30 -30
  44. package/es/packages/components/touchchat/src/AiChat/AiMessage.vue2.mjs.map +1 -1
  45. package/es/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.mjs.map +1 -1
  46. package/es/packages/components/touchchat/src/AiChat/Chat/types.mjs.map +1 -1
  47. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs +11 -8
  48. package/es/packages/components/touchchat/src/AiChat/Chat/useChat.mjs.map +1 -1
  49. package/es/packages/components/touchchat/src/AiChat/Chat/useCopy.mjs.map +1 -1
  50. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs +1 -1
  51. package/es/packages/components/touchchat/src/AiChat/Chat/useMessageRender.mjs.map +1 -1
  52. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs +16 -11
  53. package/es/packages/components/touchchat/src/AiChat/ChatInput.vue2.mjs.map +1 -1
  54. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs +1 -1
  55. package/es/packages/components/touchchat/src/AiChat/HistoryList.vue2.mjs.map +1 -1
  56. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs +3 -3
  57. package/es/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.mjs.map +1 -1
  58. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs +11 -11
  59. package/es/packages/components/touchchat/src/AiChat/MessageActions.vue2.mjs.map +1 -1
  60. package/es/packages/components/touchchat/src/AiChat/MessageViewed.vue.mjs +33 -0
  61. package/es/packages/components/touchchat/src/AiChat/MessageViewed.vue.mjs.map +1 -0
  62. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs +3 -3
  63. package/es/packages/components/touchchat/src/AiChat/SiderBarView.vue2.mjs.map +1 -1
  64. package/es/packages/components/touchchat/src/AiChat/TouchAgent.vue2.mjs +1 -1
  65. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs +36 -0
  66. package/es/packages/components/touchchat/src/AiChat/TouchChat.vue2.mjs.map +1 -1
  67. package/es/packages/components/touchchat/src/AiChat/TouchHistory.vue2.mjs.map +1 -1
  68. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs +127 -75
  69. package/es/packages/components/touchchat/src/AiChat/UserMessage.vue2.mjs.map +1 -1
  70. package/es/packages/components/touchchat/src/index.vue2.mjs.map +1 -1
  71. package/es/packages/components/touchchat/utils/a2aService.mjs.map +1 -1
  72. package/es/packages/components/touchchat/utils/fetchStream.mjs.map +1 -1
  73. package/es/packages/components/touchchat/utils/markdown.mjs +1 -1
  74. package/lib/node_modules/.pnpm/{dompurify@3.3.0 → dompurify@3.4.3}/node_modules/dompurify/dist/purify.es.js +299 -143
  75. package/lib/node_modules/.pnpm/dompurify@3.4.3/node_modules/dompurify/dist/purify.es.js.map +1 -0
  76. package/lib/package.json.css +1 -1
  77. package/lib/package.json.js +1 -1
  78. package/lib/packages/components/resolver.js.map +1 -1
  79. package/lib/packages/components/touchchat/component/AiRobot/HelloChat.vue2.js.map +1 -1
  80. package/lib/packages/components/touchchat/component/AiRobot/letter.vue.js +1 -1
  81. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js +9 -9
  82. package/lib/packages/components/touchchat/component/AiRobot/letter.vue2.js.map +1 -1
  83. package/lib/packages/components/touchchat/component/AudioFile.vue.js +11 -0
  84. package/lib/packages/components/touchchat/component/AudioFile.vue.js.map +1 -0
  85. package/lib/packages/components/touchchat/component/AudioFile.vue2.js +115 -0
  86. package/lib/packages/components/touchchat/component/AudioFile.vue2.js.map +1 -0
  87. package/lib/packages/components/touchchat/component/FileContent.vue2.js +3 -3
  88. package/lib/packages/components/touchchat/component/FileContent.vue2.js.map +1 -1
  89. package/lib/packages/components/touchchat/component/FileView.vue2.js +2 -2
  90. package/lib/packages/components/touchchat/component/FileView.vue2.js.map +1 -1
  91. package/lib/packages/components/touchchat/component/HelloChat.vue2.js.map +1 -1
  92. package/lib/packages/components/touchchat/component/ImageFile.vue2.js +6 -6
  93. package/lib/packages/components/touchchat/component/ImageFile.vue2.js.map +1 -1
  94. package/lib/packages/components/touchchat/component/ImageView.vue2.js +1 -1
  95. package/lib/packages/components/touchchat/component/ImageView.vue2.js.map +1 -1
  96. package/lib/packages/components/touchchat/component/LinkView.vue2.js +4 -4
  97. package/lib/packages/components/touchchat/component/LinkView.vue2.js.map +1 -1
  98. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js +1 -1
  99. package/lib/packages/components/touchchat/component/MarkLayer.vue2.js.map +1 -1
  100. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js +55 -4
  101. package/lib/packages/components/touchchat/component/ModuleSelect.vue2.js.map +1 -1
  102. package/lib/packages/components/touchchat/component/PDFFile.vue2.js +10 -10
  103. package/lib/packages/components/touchchat/component/PDFFile.vue2.js.map +1 -1
  104. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js +51 -9
  105. package/lib/packages/components/touchchat/component/QuoteContent.vue2.js.map +1 -1
  106. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js +1 -1
  107. package/lib/packages/components/touchchat/component/RealtimeVoice.vue2.js.map +1 -1
  108. package/lib/packages/components/touchchat/component/UploadView.vue2.js.map +1 -1
  109. package/lib/packages/components/touchchat/component/VideoFile.vue.js +1 -1
  110. package/lib/packages/components/touchchat/component/VideoFile.vue2.js.map +1 -1
  111. package/lib/packages/components/touchchat/component/VoiceView.vue2.js +13 -4
  112. package/lib/packages/components/touchchat/component/VoiceView.vue2.js.map +1 -1
  113. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js +1 -1
  114. package/lib/packages/components/touchchat/src/AiChat/AgentsView.vue2.js.map +1 -1
  115. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js +30 -30
  116. package/lib/packages/components/touchchat/src/AiChat/AiMessage.vue2.js.map +1 -1
  117. package/lib/packages/components/touchchat/src/AiChat/Chat/scriptMatcher.js.map +1 -1
  118. package/lib/packages/components/touchchat/src/AiChat/Chat/types.js.map +1 -1
  119. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js +11 -8
  120. package/lib/packages/components/touchchat/src/AiChat/Chat/useChat.js.map +1 -1
  121. package/lib/packages/components/touchchat/src/AiChat/Chat/useCopy.js.map +1 -1
  122. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js +1 -1
  123. package/lib/packages/components/touchchat/src/AiChat/Chat/useMessageRender.js.map +1 -1
  124. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js +16 -11
  125. package/lib/packages/components/touchchat/src/AiChat/ChatInput.vue2.js.map +1 -1
  126. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js +1 -1
  127. package/lib/packages/components/touchchat/src/AiChat/HistoryList.vue2.js.map +1 -1
  128. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js +3 -3
  129. package/lib/packages/components/touchchat/src/AiChat/HistorySidebar.vue2.js.map +1 -1
  130. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js +11 -11
  131. package/lib/packages/components/touchchat/src/AiChat/MessageActions.vue2.js.map +1 -1
  132. package/lib/packages/components/touchchat/src/AiChat/MessageViewed.vue.js +37 -0
  133. package/lib/packages/components/touchchat/src/AiChat/MessageViewed.vue.js.map +1 -0
  134. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js +3 -3
  135. package/lib/packages/components/touchchat/src/AiChat/SiderBarView.vue2.js.map +1 -1
  136. package/lib/packages/components/touchchat/src/AiChat/TouchAgent.vue2.js +1 -1
  137. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js +36 -0
  138. package/lib/packages/components/touchchat/src/AiChat/TouchChat.vue2.js.map +1 -1
  139. package/lib/packages/components/touchchat/src/AiChat/TouchHistory.vue2.js.map +1 -1
  140. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js +126 -74
  141. package/lib/packages/components/touchchat/src/AiChat/UserMessage.vue2.js.map +1 -1
  142. package/lib/packages/components/touchchat/src/index.vue2.js.map +1 -1
  143. package/lib/packages/components/touchchat/utils/a2aService.js.map +1 -1
  144. package/lib/packages/components/touchchat/utils/fetchStream.js.map +1 -1
  145. package/lib/packages/components/touchchat/utils/markdown.js +1 -1
  146. package/package.json +83 -83
  147. package/theme/components/index.css +152 -3
  148. package/theme/font/iconfont.woff +0 -0
  149. package/theme/font/iconfont.woff2 +0 -0
  150. package/theme/index.css +152 -3
  151. package/theme/skin/default.css +152 -3
  152. package/es/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.mjs.map +0 -1
  153. package/lib/node_modules/.pnpm/dompurify@3.3.0/node_modules/dompurify/dist/purify.es.js.map +0 -1
package/theme/index.css CHANGED
@@ -1010,6 +1010,7 @@ table.touchchat-table tr:hover {
1010
1010
  --action-icon-content: var(--quote-close-fill-content);
1011
1011
  }
1012
1012
  .touchchat-action-item.value-right-arrow {
1013
+ cursor: pointer;
1013
1014
  --action-icon-content: var(--ai-may-like-item-icon-content);
1014
1015
  color: var(--ai-may-like-item-icon-color);
1015
1016
  }
@@ -1661,6 +1662,7 @@ table.touchchat-table tr:hover {
1661
1662
  --user-avatar-pic-width: 2.5em;
1662
1663
  --user-avatar-pic-height: auto;
1663
1664
  --user-avatar-pic-radius: 50%;
1665
+ --user-file-avatar-padding-top: 4em;
1664
1666
  --user-bubble-bg: var(--color-primary);
1665
1667
  --user-bubble-color: #fff;
1666
1668
  --user-bubble-padding: 1em 1.5em;
@@ -1711,6 +1713,27 @@ table.touchchat-table tr:hover {
1711
1713
  --user-send-active-bg: #005fc7;
1712
1714
  --user-send-active-color: var(--user-send-color);
1713
1715
  --user-send-active-border: var(--user-send-border);
1716
+ --audio-icon-width: 2em;
1717
+ --audio-icon-height: 2em;
1718
+ --audio-icon-bg: #fff;
1719
+ --audio-icon-radius: 50%;
1720
+ --audio-icon-shadow: 0 0.2em 0.4em rgba(0, 0, 0, 0.1);
1721
+ --audio-icon-color: #0077fa;
1722
+ --audio-icon-size: 1em;
1723
+ --audio-duration-margin: 0 0 0 1em;
1724
+ --audio-wave-gap: 0.2em;
1725
+ --audio-wave-margin: 0 0 0 0.5em;
1726
+ --audio-wave-width: 0.2em;
1727
+ --audio-wave-height: 0.2em;
1728
+ --audio-wave-bg: #fff;
1729
+ --audio-wave-radius: 0.2em;
1730
+ --audio-wave-start-height: 0.2em;
1731
+ --audio-wave-end-height: 1.25em;
1732
+ --audio-wave-during: 0.2s;
1733
+ --viewed-color: var(--color-primary);
1734
+ --viewed-radius: 50%;
1735
+ --viewed-margin: 0 0 1.7em auto;
1736
+ --viewed-width: 1.5em;
1714
1737
  }
1715
1738
  .touchchat-user {
1716
1739
  display: flex;
@@ -1732,7 +1755,7 @@ table.touchchat-table tr:hover {
1732
1755
  order: 2;
1733
1756
  }
1734
1757
  .file-user-avatar {
1735
- padding-top: 4em;
1758
+ padding-top: var(--user-file-avatar-padding-top);
1736
1759
  }
1737
1760
  .touchchat-user-avatar-pic {
1738
1761
  width: var(--user-avatar-pic-width);
@@ -1740,7 +1763,7 @@ table.touchchat-table tr:hover {
1740
1763
  border-radius: var(--user-avatar-pic-radius);
1741
1764
  order: 2;
1742
1765
  }
1743
- .touch-user-wrapper {
1766
+ .touchchat-user-wrapper {
1744
1767
  display: flex;
1745
1768
  align-items: flex-end;
1746
1769
  }
@@ -1765,6 +1788,15 @@ table.touchchat-table tr:hover {
1765
1788
  background: var(--user-bubble-arrow-bg);
1766
1789
  background-size: var(--user-bubble-arrow-bg-size);
1767
1790
  }
1791
+ .touchchat-user-bubble.is-link {
1792
+ cursor: pointer;
1793
+ }
1794
+ .touchchat-user-bubble.is-link:hover {
1795
+ filter: brightness(1.2);
1796
+ }
1797
+ .touchchat-user-bubble.is-link:active {
1798
+ filter: brightness(0.8);
1799
+ }
1768
1800
  .touchchat-user-bubble-text {
1769
1801
  font-size: var(--user-bubble-text-size);
1770
1802
  font-weight: var(--user-bubble-text-weight);
@@ -1847,6 +1879,93 @@ table.touchchat-table tr:hover {
1847
1879
  .touchchat-user-send-text {
1848
1880
  font-size: var(--user-send-size);
1849
1881
  }
1882
+ .touchchat-audio {
1883
+ display: flex;
1884
+ align-items: center;
1885
+ }
1886
+ .touchchat-audio-icon {
1887
+ flex-shrink: 0;
1888
+ width: var(--audio-icon-width);
1889
+ height: var(--audio-icon-height);
1890
+ display: flex;
1891
+ align-items: center;
1892
+ justify-content: center;
1893
+ background: var(--audio-icon-bg);
1894
+ border-radius: var(--audio-icon-radius);
1895
+ box-shadow: var(--audio-icon-shadow);
1896
+ }
1897
+ .touchchat-audio-icon-play {
1898
+ font-family: 'touchchat-icon';
1899
+ font-size: var(--audio-icon-size);
1900
+ color: var(--audio-icon-color);
1901
+ }
1902
+ .touchchat-audio-icon-play:before {
1903
+ content: '\e619';
1904
+ }
1905
+ .touchchat-audio-icon-pause {
1906
+ font-family: 'touchchat-icon';
1907
+ font-size: var(--audio-icon-size);
1908
+ color: var(--audio-icon-color);
1909
+ }
1910
+ .touchchat-audio-icon-pause:before {
1911
+ content: '\e618';
1912
+ }
1913
+ .touchchat-audio-duration {
1914
+ margin: var(--audio-duration-margin);
1915
+ }
1916
+ .touchchat-audio-wave {
1917
+ display: flex;
1918
+ align-items: center;
1919
+ gap: var(--audio-wave-gap);
1920
+ margin: var(--audio-wave-margin);
1921
+ }
1922
+ .touchchat-audio-wave-bar {
1923
+ width: var(--audio-wave-width);
1924
+ height: var(--audio-wave-start-height);
1925
+ background: var(--audio-wave-bg);
1926
+ border-radius: var(--audio-wave-radius);
1927
+ transition: height var(--audio-wave-during);
1928
+ }
1929
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar {
1930
+ animation: wave 0.8s ease-in-out infinite;
1931
+ }
1932
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar:nth-child(1) {
1933
+ animation-delay: 0s;
1934
+ }
1935
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar:nth-child(2) {
1936
+ animation-delay: 0.1s;
1937
+ }
1938
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar:nth-child(3) {
1939
+ animation-delay: 0.2s;
1940
+ }
1941
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar:nth-child(4) {
1942
+ animation-delay: 0.3s;
1943
+ }
1944
+ @keyframes wave {
1945
+ 0%,
1946
+ 100% {
1947
+ height: var(--audio-wave-start-height);
1948
+ }
1949
+ 50% {
1950
+ height: var(--audio-wave-end-height);
1951
+ }
1952
+ }
1953
+ .touchchat-viewed {
1954
+ padding: 0.15em;
1955
+ width: var(--viewed-width);
1956
+ height: var(--viewed-width);
1957
+ border: 0.15em solid var(--viewed-color);
1958
+ border-radius: var(--viewed-radius);
1959
+ margin: var(--viewed-margin);
1960
+ box-sizing: border-box;
1961
+ align-self: flex-end;
1962
+ }
1963
+ .touchchat-viewed-wrapper {
1964
+ width: 100%;
1965
+ height: 100%;
1966
+ border-radius: var(--viewed-radius);
1967
+ background: conic-gradient(var(--viewed-color) 0%, var(--viewed-color) var(--value), transparent var(--value), transparent 100%);
1968
+ }
1850
1969
  .step-container {
1851
1970
  font-family: Arial, sans-serif;
1852
1971
  }
@@ -2328,12 +2447,25 @@ table.touchchat-table tr:hover {
2328
2447
  gap: 0.75em;
2329
2448
  }
2330
2449
  .quote-content-text {
2450
+ cursor: pointer;
2331
2451
  border-radius: 0.5em;
2332
2452
  background: #eaecf0b3;
2333
2453
  font-size: 1em;
2334
2454
  padding: 0.625em 0.5em 0.6875em 0.875em;
2335
2455
  color: #434c59;
2336
2456
  }
2457
+ .quote-highlight {
2458
+ animation: quote-flash 1s ease-in-out 2;
2459
+ }
2460
+ @keyframes quote-flash {
2461
+ 0%,
2462
+ 100% {
2463
+ background-color: transparent;
2464
+ }
2465
+ 50% {
2466
+ background-color: rgba(59, 130, 246, 0.15);
2467
+ }
2468
+ }
2337
2469
  .image-file {
2338
2470
  --image-file-pd: 0.75em;
2339
2471
  }
@@ -2651,6 +2783,21 @@ table.touchchat-table tr:hover {
2651
2783
  min-width: 8.125em;
2652
2784
  font-size: 0.875em;
2653
2785
  outline: none;
2786
+ white-space: nowrap;
2787
+ }
2788
+ .touchchat-custom-select .touchchat-select-measure {
2789
+ position: absolute;
2790
+ left: -9999px;
2791
+ top: -9999px;
2792
+ visibility: hidden;
2793
+ overflow: hidden;
2794
+ }
2795
+ .touchchat-custom-select .touchchat-select-measure .touchchat-select-measure-item {
2796
+ display: inline-block;
2797
+ white-space: nowrap;
2798
+ padding: 0.625em 0.875em;
2799
+ font-size: 0.875em;
2800
+ font-weight: 500;
2654
2801
  }
2655
2802
  .touchchat-custom-select .touchchat-select-trigger {
2656
2803
  display: flex;
@@ -2693,7 +2840,8 @@ table.touchchat-table tr:hover {
2693
2840
  .touchchat-custom-select .touchchat-select-dropdown {
2694
2841
  position: absolute;
2695
2842
  left: 0;
2696
- right: 0;
2843
+ min-width: 100%;
2844
+ width: max-content;
2697
2845
  background: white;
2698
2846
  border: 1px solid #e0e0e0;
2699
2847
  border-radius: 0.5em;
@@ -2717,6 +2865,7 @@ table.touchchat-table tr:hover {
2717
2865
  cursor: pointer;
2718
2866
  transition: background-color 0.2s ease;
2719
2867
  color: #444;
2868
+ white-space: nowrap;
2720
2869
  }
2721
2870
  .touchchat-custom-select .touchchat-select-option:hover {
2722
2871
  background-color: #f5f7fa;
@@ -1010,6 +1010,7 @@ table.touchchat-table tr:hover {
1010
1010
  --action-icon-content: var(--quote-close-fill-content);
1011
1011
  }
1012
1012
  .touchchat-action-item.value-right-arrow {
1013
+ cursor: pointer;
1013
1014
  --action-icon-content: var(--ai-may-like-item-icon-content);
1014
1015
  color: var(--ai-may-like-item-icon-color);
1015
1016
  }
@@ -1661,6 +1662,7 @@ table.touchchat-table tr:hover {
1661
1662
  --user-avatar-pic-width: 2.5em;
1662
1663
  --user-avatar-pic-height: auto;
1663
1664
  --user-avatar-pic-radius: 50%;
1665
+ --user-file-avatar-padding-top: 4em;
1664
1666
  --user-bubble-bg: var(--color-primary);
1665
1667
  --user-bubble-color: #fff;
1666
1668
  --user-bubble-padding: 1em 1.5em;
@@ -1711,6 +1713,27 @@ table.touchchat-table tr:hover {
1711
1713
  --user-send-active-bg: #005fc7;
1712
1714
  --user-send-active-color: var(--user-send-color);
1713
1715
  --user-send-active-border: var(--user-send-border);
1716
+ --audio-icon-width: 2em;
1717
+ --audio-icon-height: 2em;
1718
+ --audio-icon-bg: #fff;
1719
+ --audio-icon-radius: 50%;
1720
+ --audio-icon-shadow: 0 0.2em 0.4em rgba(0, 0, 0, 0.1);
1721
+ --audio-icon-color: #0077fa;
1722
+ --audio-icon-size: 1em;
1723
+ --audio-duration-margin: 0 0 0 1em;
1724
+ --audio-wave-gap: 0.2em;
1725
+ --audio-wave-margin: 0 0 0 0.5em;
1726
+ --audio-wave-width: 0.2em;
1727
+ --audio-wave-height: 0.2em;
1728
+ --audio-wave-bg: #fff;
1729
+ --audio-wave-radius: 0.2em;
1730
+ --audio-wave-start-height: 0.2em;
1731
+ --audio-wave-end-height: 1.25em;
1732
+ --audio-wave-during: 0.2s;
1733
+ --viewed-color: var(--color-primary);
1734
+ --viewed-radius: 50%;
1735
+ --viewed-margin: 0 0 1.7em auto;
1736
+ --viewed-width: 1.5em;
1714
1737
  }
1715
1738
  .touchchat-user {
1716
1739
  display: flex;
@@ -1732,7 +1755,7 @@ table.touchchat-table tr:hover {
1732
1755
  order: 2;
1733
1756
  }
1734
1757
  .file-user-avatar {
1735
- padding-top: 4em;
1758
+ padding-top: var(--user-file-avatar-padding-top);
1736
1759
  }
1737
1760
  .touchchat-user-avatar-pic {
1738
1761
  width: var(--user-avatar-pic-width);
@@ -1740,7 +1763,7 @@ table.touchchat-table tr:hover {
1740
1763
  border-radius: var(--user-avatar-pic-radius);
1741
1764
  order: 2;
1742
1765
  }
1743
- .touch-user-wrapper {
1766
+ .touchchat-user-wrapper {
1744
1767
  display: flex;
1745
1768
  align-items: flex-end;
1746
1769
  }
@@ -1765,6 +1788,15 @@ table.touchchat-table tr:hover {
1765
1788
  background: var(--user-bubble-arrow-bg);
1766
1789
  background-size: var(--user-bubble-arrow-bg-size);
1767
1790
  }
1791
+ .touchchat-user-bubble.is-link {
1792
+ cursor: pointer;
1793
+ }
1794
+ .touchchat-user-bubble.is-link:hover {
1795
+ filter: brightness(1.2);
1796
+ }
1797
+ .touchchat-user-bubble.is-link:active {
1798
+ filter: brightness(0.8);
1799
+ }
1768
1800
  .touchchat-user-bubble-text {
1769
1801
  font-size: var(--user-bubble-text-size);
1770
1802
  font-weight: var(--user-bubble-text-weight);
@@ -1847,6 +1879,93 @@ table.touchchat-table tr:hover {
1847
1879
  .touchchat-user-send-text {
1848
1880
  font-size: var(--user-send-size);
1849
1881
  }
1882
+ .touchchat-audio {
1883
+ display: flex;
1884
+ align-items: center;
1885
+ }
1886
+ .touchchat-audio-icon {
1887
+ flex-shrink: 0;
1888
+ width: var(--audio-icon-width);
1889
+ height: var(--audio-icon-height);
1890
+ display: flex;
1891
+ align-items: center;
1892
+ justify-content: center;
1893
+ background: var(--audio-icon-bg);
1894
+ border-radius: var(--audio-icon-radius);
1895
+ box-shadow: var(--audio-icon-shadow);
1896
+ }
1897
+ .touchchat-audio-icon-play {
1898
+ font-family: 'touchchat-icon';
1899
+ font-size: var(--audio-icon-size);
1900
+ color: var(--audio-icon-color);
1901
+ }
1902
+ .touchchat-audio-icon-play:before {
1903
+ content: '\e619';
1904
+ }
1905
+ .touchchat-audio-icon-pause {
1906
+ font-family: 'touchchat-icon';
1907
+ font-size: var(--audio-icon-size);
1908
+ color: var(--audio-icon-color);
1909
+ }
1910
+ .touchchat-audio-icon-pause:before {
1911
+ content: '\e618';
1912
+ }
1913
+ .touchchat-audio-duration {
1914
+ margin: var(--audio-duration-margin);
1915
+ }
1916
+ .touchchat-audio-wave {
1917
+ display: flex;
1918
+ align-items: center;
1919
+ gap: var(--audio-wave-gap);
1920
+ margin: var(--audio-wave-margin);
1921
+ }
1922
+ .touchchat-audio-wave-bar {
1923
+ width: var(--audio-wave-width);
1924
+ height: var(--audio-wave-start-height);
1925
+ background: var(--audio-wave-bg);
1926
+ border-radius: var(--audio-wave-radius);
1927
+ transition: height var(--audio-wave-during);
1928
+ }
1929
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar {
1930
+ animation: wave 0.8s ease-in-out infinite;
1931
+ }
1932
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar:nth-child(1) {
1933
+ animation-delay: 0s;
1934
+ }
1935
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar:nth-child(2) {
1936
+ animation-delay: 0.1s;
1937
+ }
1938
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar:nth-child(3) {
1939
+ animation-delay: 0.2s;
1940
+ }
1941
+ .touchchat-audio-wave.is-playing .touchchat-audio-wave-bar:nth-child(4) {
1942
+ animation-delay: 0.3s;
1943
+ }
1944
+ @keyframes wave {
1945
+ 0%,
1946
+ 100% {
1947
+ height: var(--audio-wave-start-height);
1948
+ }
1949
+ 50% {
1950
+ height: var(--audio-wave-end-height);
1951
+ }
1952
+ }
1953
+ .touchchat-viewed {
1954
+ padding: 0.15em;
1955
+ width: var(--viewed-width);
1956
+ height: var(--viewed-width);
1957
+ border: 0.15em solid var(--viewed-color);
1958
+ border-radius: var(--viewed-radius);
1959
+ margin: var(--viewed-margin);
1960
+ box-sizing: border-box;
1961
+ align-self: flex-end;
1962
+ }
1963
+ .touchchat-viewed-wrapper {
1964
+ width: 100%;
1965
+ height: 100%;
1966
+ border-radius: var(--viewed-radius);
1967
+ background: conic-gradient(var(--viewed-color) 0%, var(--viewed-color) var(--value), transparent var(--value), transparent 100%);
1968
+ }
1850
1969
  .step-container {
1851
1970
  font-family: Arial, sans-serif;
1852
1971
  }
@@ -2328,12 +2447,25 @@ table.touchchat-table tr:hover {
2328
2447
  gap: 0.75em;
2329
2448
  }
2330
2449
  .quote-content-text {
2450
+ cursor: pointer;
2331
2451
  border-radius: 0.5em;
2332
2452
  background: #eaecf0b3;
2333
2453
  font-size: 1em;
2334
2454
  padding: 0.625em 0.5em 0.6875em 0.875em;
2335
2455
  color: #434c59;
2336
2456
  }
2457
+ .quote-highlight {
2458
+ animation: quote-flash 1s ease-in-out 2;
2459
+ }
2460
+ @keyframes quote-flash {
2461
+ 0%,
2462
+ 100% {
2463
+ background-color: transparent;
2464
+ }
2465
+ 50% {
2466
+ background-color: rgba(59, 130, 246, 0.15);
2467
+ }
2468
+ }
2337
2469
  .image-file {
2338
2470
  --image-file-pd: 0.75em;
2339
2471
  }
@@ -2651,6 +2783,21 @@ table.touchchat-table tr:hover {
2651
2783
  min-width: 8.125em;
2652
2784
  font-size: 0.875em;
2653
2785
  outline: none;
2786
+ white-space: nowrap;
2787
+ }
2788
+ .touchchat-custom-select .touchchat-select-measure {
2789
+ position: absolute;
2790
+ left: -9999px;
2791
+ top: -9999px;
2792
+ visibility: hidden;
2793
+ overflow: hidden;
2794
+ }
2795
+ .touchchat-custom-select .touchchat-select-measure .touchchat-select-measure-item {
2796
+ display: inline-block;
2797
+ white-space: nowrap;
2798
+ padding: 0.625em 0.875em;
2799
+ font-size: 0.875em;
2800
+ font-weight: 500;
2654
2801
  }
2655
2802
  .touchchat-custom-select .touchchat-select-trigger {
2656
2803
  display: flex;
@@ -2693,7 +2840,8 @@ table.touchchat-table tr:hover {
2693
2840
  .touchchat-custom-select .touchchat-select-dropdown {
2694
2841
  position: absolute;
2695
2842
  left: 0;
2696
- right: 0;
2843
+ min-width: 100%;
2844
+ width: max-content;
2697
2845
  background: white;
2698
2846
  border: 1px solid #e0e0e0;
2699
2847
  border-radius: 0.5em;
@@ -2717,6 +2865,7 @@ table.touchchat-table tr:hover {
2717
2865
  cursor: pointer;
2718
2866
  transition: background-color 0.2s ease;
2719
2867
  color: #444;
2868
+ white-space: nowrap;
2720
2869
  }
2721
2870
  .touchchat-custom-select .touchchat-select-option:hover {
2722
2871
  background-color: #f5f7fa;