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

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