@myun/gimi-chat 0.0.4 → 0.0.6

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 (98) hide show
  1. package/dist/components/ai-chat-dialogue/index.js +182 -136
  2. package/dist/components/ai-chat-dialogue/index.module.css +230 -0
  3. package/dist/components/ai-correction/index.js +38 -25
  4. package/dist/components/ai-loading/index.js +13 -9
  5. package/dist/components/ai-loading/index.module.css +11 -0
  6. package/dist/components/answer-item/index.js +136 -114
  7. package/dist/components/answer-item/index.module.css +266 -0
  8. package/dist/components/ask-card/index.js +43 -34
  9. package/dist/components/ask-card/index.module.css +122 -0
  10. package/dist/components/chat-input/index.js +136 -115
  11. package/dist/components/chat-input/index.module.css +42 -0
  12. package/dist/components/chat-voice/VoiceCommunication.js +23 -21
  13. package/dist/components/chat-voice/VoiceRecord.js +24 -21
  14. package/dist/components/conversation-delete/index.js +10 -8
  15. package/dist/components/dots-loading/index.js +11 -8
  16. package/dist/components/dots-loading/index.module.css +41 -0
  17. package/dist/components/empty/index.js +13 -8
  18. package/dist/components/empty/index.module.css +24 -0
  19. package/dist/components/excel-components/ExcelCard.js +7 -3
  20. package/dist/components/excel-components/ExcelExcuting.js +61 -44
  21. package/dist/components/excel-components/ExcelFailCard.js +16 -11
  22. package/dist/components/excel-components/ExcelSuccessCard.js +3 -2
  23. package/dist/components/excel-components/index.module.css +212 -0
  24. package/dist/components/excel-components/styles.module.css +178 -0
  25. package/dist/components/file-card/fileCardSidebar.js +24 -17
  26. package/dist/components/file-card/index.js +69 -50
  27. package/dist/components/file-card/index.module.css +139 -0
  28. package/dist/components/file-preview/index.js +39 -34
  29. package/dist/components/file-preview/index.module.css +83 -0
  30. package/dist/components/file-upload/index.js +10 -7
  31. package/dist/components/file-upload/uploadV1.js +33 -27
  32. package/dist/components/gimi-sidebar/index.js +21 -14
  33. package/dist/components/gimi-sidebar/index.module.css +118 -0
  34. package/dist/components/header/index.js +19 -12
  35. package/dist/components/header/index.module.css +19 -0
  36. package/dist/components/iconfont-com/index.js +2 -1
  37. package/dist/components/knowledge-trace/KnowledgeIconComponent.js +29 -23
  38. package/dist/components/knowledge-trace/classList.js +38 -29
  39. package/dist/components/knowledge-trace/documentList.js +37 -28
  40. package/dist/components/knowledge-trace/index.js +29 -22
  41. package/dist/components/knowledge-trace/index.module.css +254 -0
  42. package/dist/components/knowledge-trace/videoList.js +47 -37
  43. package/dist/components/lottie-img/index.js +10 -8
  44. package/dist/components/message-actions/CopyButton.js +25 -22
  45. package/dist/components/message-actions/LikeButton.js +25 -22
  46. package/dist/components/message-actions/RegenerateButton.js +21 -18
  47. package/dist/components/message-actions/UnLikeButton.js +25 -22
  48. package/dist/components/message-actions/VoicePlay.js +25 -22
  49. package/dist/components/message-list/index.js +86 -76
  50. package/dist/components/message-list/index.module.css +261 -0
  51. package/dist/components/no-microphone-root/index.js +40 -30
  52. package/dist/components/no-microphone-root/index.module.css +48 -0
  53. package/dist/components/preset-agent-content/index.js +21 -16
  54. package/dist/components/preset-agent-content/index.module.css +46 -0
  55. package/dist/components/quoted-content/index.module.css +80 -0
  56. package/dist/components/reasoning-content/index.js +56 -43
  57. package/dist/components/reasoning-content/index.module.css +169 -0
  58. package/dist/components/reference-content/index.js +73 -64
  59. package/dist/components/reference-content/index.module.css +84 -0
  60. package/dist/components/templates/CommonChat.js +79 -65
  61. package/dist/components/templates/GimiChatComponent.js +13 -6
  62. package/dist/components/templates/demo/demo.js +104 -103
  63. package/dist/components/templates/index.module.css +109 -0
  64. package/dist/components/upload-list/index.js +57 -42
  65. package/dist/components/upload-list/index.module.css +119 -0
  66. package/dist/components/voice-bars/index.js +22 -19
  67. package/dist/components/voice-check-dialog/index.js +25 -18
  68. package/dist/components/voice-check-dialog/{index.module.scss → index.module.css} +2 -2
  69. package/dist/components/voice-recording/index.js +58 -43
  70. package/dist/components/voice-recording/index.module.css +41 -0
  71. package/dist/components/work-flow-content/demo.js +2 -1
  72. package/dist/components/work-flow-content/index.js +13 -10
  73. package/dist/components/work-flow-content/index.module.css +24 -0
  74. package/package.json +7 -6
  75. package/dist/components/ai-chat-dialogue/index.module.scss +0 -272
  76. package/dist/components/ai-loading/index.module.scss +0 -11
  77. package/dist/components/answer-item/index.module.scss +0 -295
  78. package/dist/components/ask-card/index.module.scss +0 -125
  79. package/dist/components/chat-input/index.module.scss +0 -44
  80. package/dist/components/dots-loading/index.module.scss +0 -45
  81. package/dist/components/empty/index.module.scss +0 -27
  82. package/dist/components/excel-components/index.module.scss +0 -210
  83. package/dist/components/excel-components/styles.module.scss +0 -186
  84. package/dist/components/file-card/index.module.scss +0 -139
  85. package/dist/components/file-preview/index.module.scss +0 -120
  86. package/dist/components/gimi-sidebar/index.module.scss +0 -136
  87. package/dist/components/header/index.module.scss +0 -26
  88. package/dist/components/knowledge-trace/index.module.scss +0 -262
  89. package/dist/components/message-list/index.module.scss +0 -304
  90. package/dist/components/no-microphone-root/index.module.scss +0 -42
  91. package/dist/components/preset-agent-content/index.module.scss +0 -48
  92. package/dist/components/quoted-content/index.module.scss +0 -76
  93. package/dist/components/reasoning-content/index.module.scss +0 -164
  94. package/dist/components/reference-content/index.module.scss +0 -73
  95. package/dist/components/templates/index.module.scss +0 -119
  96. package/dist/components/upload-list/index.module.scss +0 -119
  97. package/dist/components/voice-recording/index.module.scss +0 -41
  98. package/dist/components/work-flow-content/index.module.scss +0 -23
@@ -1,14 +1,18 @@
1
1
  import React from 'react';
2
- import styles from "./index.module.scss";
2
+ import styles from "./index.module.css";
3
3
  import LottieImg from "../lottie-img";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { jsxs as _jsxs } from "react/jsx-runtime";
4
6
  var AiLoading = function AiLoading() {
5
- return /*#__PURE__*/React.createElement("div", {
6
- className: styles.aiLoading
7
- }, /*#__PURE__*/React.createElement(LottieImg, {
8
- name: "aiLoading",
9
- size: [30, 50]
10
- }), /*#__PURE__*/React.createElement("div", {
11
- className: styles.text
12
- }, "\u6570\u636E\u52A0\u8F7D\u4E2D~"));
7
+ return /*#__PURE__*/_jsxs("div", {
8
+ className: styles.aiLoading,
9
+ children: [/*#__PURE__*/_jsx(LottieImg, {
10
+ name: "aiLoading",
11
+ size: [30, 50]
12
+ }), /*#__PURE__*/_jsx("div", {
13
+ className: styles.text,
14
+ children: "\u6570\u636E\u52A0\u8F7D\u4E2D~"
15
+ })]
16
+ });
13
17
  };
14
18
  export default AiLoading;
@@ -0,0 +1,11 @@
1
+ .aiLoading {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ justify-content: center;
6
+ height: 100%;
7
+ }
8
+ .aiLoading .text {
9
+ margin-top: 4px;
10
+ text-align: center;
11
+ }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import styles from "./index.module.scss";
2
+ import styles from "./index.module.css";
3
3
  import classNames from 'classnames';
4
4
  import ReasoningContent from "../reasoning-content/index";
5
5
  import { processString } from "../../utils/tools";
@@ -10,13 +10,16 @@ import ExcelSuccessCard from "../excel-components/ExcelSuccessCard";
10
10
  import AICorrection from "../ai-correction/index";
11
11
  import KnowledgeIconGroup from "../knowledge-trace/KnowledgeIconComponent";
12
12
  import ExcelCard from "../excel-components/ExcelCard";
13
- import { CheckCircleFilled } from '@ant-design/icons';
13
+ import { IconTickCircle } from '@douyinfe/semi-icons';
14
14
  import VoicePlay from "../message-actions/VoicePlay";
15
15
  import { useAppSelector } from "../../store/hooks";
16
16
  import CopyButton from "../message-actions/CopyButton";
17
17
  import LikeButton from "../message-actions/LikeButton";
18
18
  import UnLikeButton from "../message-actions/UnLikeButton";
19
19
  import RegenerateButton from "../message-actions/RegenerateButton";
20
+ import { jsx as _jsx } from "react/jsx-runtime";
21
+ import { jsxs as _jsxs } from "react/jsx-runtime";
22
+ import { Fragment as _Fragment } from "react/jsx-runtime";
20
23
  var AnswerItem = function AnswerItem(_ref) {
21
24
  var _agentDetail$voiceCon;
22
25
  var item = _ref.item,
@@ -78,117 +81,136 @@ var AnswerItem = function AnswerItem(_ref) {
78
81
  var agentDetail = useAppSelector(function (state) {
79
82
  return state.gimiMenu.agentObj || {};
80
83
  });
81
- return /*#__PURE__*/React.createElement("div", {
82
- className: styles.title
83
- }, /*#__PURE__*/React.createElement("div", {
84
- className: classNames(styles.answer)
85
- }, item.mcp && /*#__PURE__*/React.createElement(WorkFlowContent, {
86
- chatItem: item
87
- }), item.vipLevel === 1 && item.reasoningContent && /*#__PURE__*/React.createElement(ReasoningContent, {
88
- item: item
89
- }), showTaskSuccess && /*#__PURE__*/React.createElement("div", {
90
- className: styles.completed
91
- }, /*#__PURE__*/React.createElement(CheckCircleFilled, {
92
- className: styles.checkIcon
93
- }), /*#__PURE__*/React.createElement("span", {
94
- className: styles.checkText
95
- }, "\u672C\u6B21\u4EFB\u52A1\u5DF2\u5B8C\u6210\uFF01")), showContentFlag && /*#__PURE__*/React.createElement(MMarkdown, {
96
- content: processString(item.content || ''),
97
- customRender: [{
98
- type: 'excel',
99
- component: ExcelSuccessCard
100
- }, {
101
- type: 'knowledge',
102
- component: function component(value) {
103
- var newVal = {
104
- content: value.value,
105
- messageId: item.id
106
- };
107
- return /*#__PURE__*/React.createElement(KnowledgeIconGroup, {
108
- value: newVal
109
- });
110
- }
111
- }, {
112
- type: 'correction',
113
- component: AICorrection
114
- }],
115
- showLoading: item.loading
116
- }), showAskTag && /*#__PURE__*/React.createElement(AskCard, {
117
- item: item,
118
- moduleInfo: item.moduleInfo,
119
- handleClickAskList: handleClickAskList
120
- }), showSkillTag && /*#__PURE__*/React.createElement(ExcelCard, {
121
- onRetry: onRetry,
122
- item: item,
123
- moduleInfo: item.moduleInfo,
124
- onSucess: onSucess,
125
- onFailure: onFailure
126
- }), item.stop === 1 && /*#__PURE__*/React.createElement("div", {
127
- className: styles.stop
128
- }, item.vipLevel === 1 && item.reasoningStatus === 3 ? '已停止推理' : '已停止内容输出'), showOperation && /*#__PURE__*/React.createElement("div", {
129
- className: styles.opera
130
- }, (showOpera === null || showOpera === void 0 ? void 0 : showOpera(item.id)) && !item.loading && /*#__PURE__*/React.createElement("div", {
131
- className: styles.opera_item
132
- }, enableCopy && /*#__PURE__*/React.createElement(CopyButton, {
133
- item: item,
134
- onCopyCallback: onCopyCallback
135
- }), enableLike && /*#__PURE__*/React.createElement(LikeButton, {
136
- item: item,
137
- onLikeCallback: onLikeCallback
138
- }), enableUnLike && /*#__PURE__*/React.createElement(UnLikeButton, {
139
- item: item,
140
- onUnLikeCallback: onUnLikeCallback
141
- }), enableVoicePlay && !showAskTag && !showSkillTag && ((_agentDetail$voiceCon = agentDetail.voiceConfigs) === null || _agentDetail$voiceCon === void 0 ? void 0 : _agentDetail$voiceCon.length) > 0 && /*#__PURE__*/React.createElement(VoicePlay, {
142
- playTTSByText: playTTSByText,
143
- stopTTSByText: stopTTSByText,
144
- isVoicePlaying: isVoicePlaying,
145
- text: processString(item.content || ''),
146
- messageId: item.id
147
- }), showRegerate && enableRegenerate && /*#__PURE__*/React.createElement(RegenerateButton, {
148
- onRegenerateClick: onRegenerateClick
149
- }))), (item.relatedResourceList || []).length > 0 && (showCommend === null || showCommend === void 0 ? void 0 : showCommend(item.id)) && /*#__PURE__*/React.createElement("div", {
150
- className: styles.quickInputList
151
- }, (item.relatedResourceList || []).map(function (item, index) {
152
- return /*#__PURE__*/React.createElement("div", {
153
- className: styles.quickInputItem,
154
- key: index,
155
- onClick: function onClick() {
156
- return handleClickPromptWord === null || handleClickPromptWord === void 0 ? void 0 : handleClickPromptWord(item.recommendQuestions);
157
- }
158
- }, item.recommendQuestions);
159
- })), (item.relatedCourseRecommendation || []).length > 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
160
- className: styles.course_recommend
161
- }, /*#__PURE__*/React.createElement("div", {
162
- className: styles.course_recommend_header
163
- }, /*#__PURE__*/React.createElement("div", {
164
- className: styles.course_recommend_header_title
165
- }, "\u76F8\u5173\u8BFE\u7A0B\u63A8\u8350"), (item.relatedCourseRecommendation || []).length > 4 && /*#__PURE__*/React.createElement("div", {
166
- className: styles.course_recommend_header_more,
167
- onClick: function onClick() {
168
- handleShowCourse(item);
169
- }
170
- }, /*#__PURE__*/React.createElement("span", {
171
- className: styles.all
172
- }, "\u5168\u90E8\u8BFE\u7A0B"))), /*#__PURE__*/React.createElement("div", {
173
- className: styles.course_recommend_list
174
- }, (item.relatedCourseRecommendation || []).map(function (course, i) {
175
- if (i > 3) return null;
176
- return /*#__PURE__*/React.createElement("div", {
177
- className: styles.courseItem,
178
- key: course.id,
179
- onClick: function onClick() {
180
- return window.open(course.productType === 'project' ? "/project-product/".concat(course.productId || course.id) : "/new-product/".concat(course.productId || course.id));
181
- }
182
- }, /*#__PURE__*/React.createElement("div", {
183
- className: styles.cover
184
- }, /*#__PURE__*/React.createElement("img", {
185
- src: course.productUrl,
186
- alt: ""
187
- })), /*#__PURE__*/React.createElement("div", {
188
- className: classNames(styles.courseTitle, 'ellipsis-3')
189
- }, course !== null && course !== void 0 && course.showStyle ? /*#__PURE__*/React.createElement("span", {
190
- className: classNames(styles.newEquityLabel, styles["newEquityLabel-".concat(course.showStyle)])
191
- }, course === null || course === void 0 ? void 0 : course.equityLabel) : null, course.name));
192
- }))))));
84
+ return /*#__PURE__*/_jsx("div", {
85
+ className: styles.title,
86
+ children: /*#__PURE__*/_jsxs("div", {
87
+ className: classNames(styles.answer),
88
+ children: [item.mcp && /*#__PURE__*/_jsx(WorkFlowContent, {
89
+ chatItem: item
90
+ }), item.vipLevel === 1 && item.reasoningContent && /*#__PURE__*/_jsx(ReasoningContent, {
91
+ item: item
92
+ }), showTaskSuccess && /*#__PURE__*/_jsxs("div", {
93
+ className: styles.completed,
94
+ children: [/*#__PURE__*/_jsx(IconTickCircle, {
95
+ className: styles.checkIcon
96
+ }), /*#__PURE__*/_jsx("span", {
97
+ className: styles.checkText,
98
+ children: "\u672C\u6B21\u4EFB\u52A1\u5DF2\u5B8C\u6210\uFF01"
99
+ })]
100
+ }), showContentFlag && /*#__PURE__*/_jsx(MMarkdown, {
101
+ content: processString(item.content || ''),
102
+ customRender: [{
103
+ type: 'excel',
104
+ component: ExcelSuccessCard
105
+ }, {
106
+ type: 'knowledge',
107
+ component: function component(value) {
108
+ var newVal = {
109
+ content: value.value,
110
+ messageId: item.id
111
+ };
112
+ return /*#__PURE__*/_jsx(KnowledgeIconGroup, {
113
+ value: newVal
114
+ });
115
+ }
116
+ }, {
117
+ type: 'correction',
118
+ component: AICorrection
119
+ }],
120
+ showLoading: item.loading
121
+ }), showAskTag && /*#__PURE__*/_jsx(AskCard, {
122
+ item: item,
123
+ moduleInfo: item.moduleInfo,
124
+ handleClickAskList: handleClickAskList
125
+ }), showSkillTag && /*#__PURE__*/_jsx(ExcelCard, {
126
+ onRetry: onRetry,
127
+ item: item,
128
+ moduleInfo: item.moduleInfo,
129
+ onSucess: onSucess,
130
+ onFailure: onFailure
131
+ }), item.stop === 1 && /*#__PURE__*/_jsx("div", {
132
+ className: styles.stop,
133
+ children: item.vipLevel === 1 && item.reasoningStatus === 3 ? '已停止推理' : '已停止内容输出'
134
+ }), showOperation && /*#__PURE__*/_jsx("div", {
135
+ className: styles.opera,
136
+ children: (showOpera === null || showOpera === void 0 ? void 0 : showOpera(item.id)) && !item.loading && /*#__PURE__*/_jsxs("div", {
137
+ className: styles.opera_item,
138
+ children: [enableCopy && /*#__PURE__*/_jsx(CopyButton, {
139
+ item: item,
140
+ onCopyCallback: onCopyCallback
141
+ }), enableLike && /*#__PURE__*/_jsx(LikeButton, {
142
+ item: item,
143
+ onLikeCallback: onLikeCallback
144
+ }), enableUnLike && /*#__PURE__*/_jsx(UnLikeButton, {
145
+ item: item,
146
+ onUnLikeCallback: onUnLikeCallback
147
+ }), enableVoicePlay && !showAskTag && !showSkillTag && ((_agentDetail$voiceCon = agentDetail.voiceConfigs) === null || _agentDetail$voiceCon === void 0 ? void 0 : _agentDetail$voiceCon.length) > 0 && /*#__PURE__*/_jsx(VoicePlay, {
148
+ playTTSByText: playTTSByText,
149
+ stopTTSByText: stopTTSByText,
150
+ isVoicePlaying: isVoicePlaying,
151
+ text: processString(item.content || ''),
152
+ messageId: item.id
153
+ }), showRegerate && enableRegenerate && /*#__PURE__*/_jsx(RegenerateButton, {
154
+ onRegenerateClick: onRegenerateClick
155
+ })]
156
+ })
157
+ }), (item.relatedResourceList || []).length > 0 && (showCommend === null || showCommend === void 0 ? void 0 : showCommend(item.id)) && /*#__PURE__*/_jsx("div", {
158
+ className: styles.quickInputList,
159
+ children: (item.relatedResourceList || []).map(function (item, index) {
160
+ return /*#__PURE__*/_jsx("div", {
161
+ className: styles.quickInputItem,
162
+ onClick: function onClick() {
163
+ return handleClickPromptWord === null || handleClickPromptWord === void 0 ? void 0 : handleClickPromptWord(item.recommendQuestions);
164
+ },
165
+ children: item.recommendQuestions
166
+ }, index);
167
+ })
168
+ }), (item.relatedCourseRecommendation || []).length > 0 && /*#__PURE__*/_jsx(_Fragment, {
169
+ children: /*#__PURE__*/_jsxs("div", {
170
+ className: styles.course_recommend,
171
+ children: [/*#__PURE__*/_jsxs("div", {
172
+ className: styles.course_recommend_header,
173
+ children: [/*#__PURE__*/_jsx("div", {
174
+ className: styles.course_recommend_header_title,
175
+ children: "\u76F8\u5173\u8BFE\u7A0B\u63A8\u8350"
176
+ }), (item.relatedCourseRecommendation || []).length > 4 && /*#__PURE__*/_jsx("div", {
177
+ className: styles.course_recommend_header_more,
178
+ onClick: function onClick() {
179
+ handleShowCourse(item);
180
+ },
181
+ children: /*#__PURE__*/_jsx("span", {
182
+ className: styles.all,
183
+ children: "\u5168\u90E8\u8BFE\u7A0B"
184
+ })
185
+ })]
186
+ }), /*#__PURE__*/_jsx("div", {
187
+ className: styles.course_recommend_list,
188
+ children: (item.relatedCourseRecommendation || []).map(function (course, i) {
189
+ if (i > 3) return null;
190
+ return /*#__PURE__*/_jsxs("div", {
191
+ className: styles.courseItem,
192
+ onClick: function onClick() {
193
+ return window.open(course.productType === 'project' ? "/project-product/".concat(course.productId || course.id) : "/new-product/".concat(course.productId || course.id));
194
+ },
195
+ children: [/*#__PURE__*/_jsx("div", {
196
+ className: styles.cover,
197
+ children: /*#__PURE__*/_jsx("img", {
198
+ src: course.productUrl,
199
+ alt: ""
200
+ })
201
+ }), /*#__PURE__*/_jsxs("div", {
202
+ className: classNames(styles.courseTitle, 'ellipsis-3'),
203
+ children: [course !== null && course !== void 0 && course.showStyle ? /*#__PURE__*/_jsx("span", {
204
+ className: classNames(styles.newEquityLabel, styles["newEquityLabel-".concat(course.showStyle)]),
205
+ children: course === null || course === void 0 ? void 0 : course.equityLabel
206
+ }) : null, course.name]
207
+ })]
208
+ }, course.id);
209
+ })
210
+ })]
211
+ })
212
+ })]
213
+ })
214
+ });
193
215
  };
194
216
  export default AnswerItem;
@@ -0,0 +1,266 @@
1
+ @charset "UTF-8";
2
+ .title {
3
+ width: 100%;
4
+ display: flex;
5
+ align-items: center;
6
+ position: relative;
7
+ font-size: 16px;
8
+ color: #000000;
9
+ line-height: 24px;
10
+ width: fit-content;
11
+ text-align: left;
12
+ word-break: break-all;
13
+ /* 强制换行 */
14
+ overflow-wrap: break-word;
15
+ /* 在适当位置换行 */
16
+ }
17
+ .title .qusetionOpera {
18
+ position: absolute;
19
+ top: 50%;
20
+ left: -30px;
21
+ transform: translateY(-50%);
22
+ }
23
+ .title .answer {
24
+ width: 100%;
25
+ display: flex;
26
+ flex-direction: column;
27
+ justify-content: center;
28
+ margin: 10px 0px;
29
+ }
30
+ .title .answer .completed {
31
+ display: flex;
32
+ gap: 10px;
33
+ align-items: center;
34
+ }
35
+ .title .answer .completed .checkIcon {
36
+ font-size: 16px;
37
+ color: rgb(62, 179, 86);
38
+ }
39
+ .title .answer .completed .checkText {
40
+ font-family: PingFang SC;
41
+ font-weight: 600;
42
+ font-style: Semibold;
43
+ font-size: 15px;
44
+ line-height: 180%;
45
+ letter-spacing: 0px;
46
+ color: rgb(46, 57, 76);
47
+ }
48
+ .title .answer .relevance {
49
+ width: fit-content;
50
+ height: 40px;
51
+ background: #ffffff;
52
+ border-radius: 16px;
53
+ border: 1px solid #cfd7e6;
54
+ display: flex;
55
+ justify-content: center;
56
+ align-items: center;
57
+ margin-bottom: 14px;
58
+ }
59
+ .title .answer .relevance .icon {
60
+ display: flex;
61
+ align-items: center;
62
+ justify-self: center;
63
+ margin-right: 12px;
64
+ }
65
+ .title .answer .relevance .search_icon {
66
+ display: flex;
67
+ align-items: center;
68
+ justify-self: center;
69
+ margin-left: 16px;
70
+ }
71
+ .title .answer .relevance span {
72
+ height: 20px;
73
+ font-family: PingFangSC, PingFang SC;
74
+ font-weight: 400;
75
+ font-size: 14px;
76
+ color: #2e394c;
77
+ line-height: 20px;
78
+ text-align: left;
79
+ font-style: normal;
80
+ margin: 0 2px;
81
+ }
82
+ .title .answer .stop {
83
+ width: 100%;
84
+ height: 28px;
85
+ font-family: PingFangSC, PingFang SC;
86
+ font-weight: 400;
87
+ font-size: 15px;
88
+ color: #7d91b3;
89
+ line-height: 28px;
90
+ text-align: left;
91
+ font-style: normal;
92
+ margin-top: 6px;
93
+ }
94
+
95
+ .opera {
96
+ height: 18px;
97
+ margin-top: 12px;
98
+ display: flex;
99
+ }
100
+ .opera .opera_item {
101
+ display: flex;
102
+ align-items: center;
103
+ gap: 18px;
104
+ }
105
+ .opera .opera_item .unlove {
106
+ display: flex;
107
+ align-items: center;
108
+ cursor: pointer;
109
+ user-select: none;
110
+ }
111
+
112
+ .operaicon {
113
+ height: 20px;
114
+ margin-top: 12px;
115
+ text-align: end;
116
+ }
117
+
118
+ .chatline {
119
+ width: 100%;
120
+ margin: 40px 0;
121
+ height: 1px;
122
+ background: #dfe8f7;
123
+ }
124
+
125
+ .course_recommend {
126
+ width: 100%;
127
+ margin-top: 20px;
128
+ }
129
+ .course_recommend .course_recommend_header {
130
+ width: 100%;
131
+ height: 28px;
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: space-between;
135
+ }
136
+ .course_recommend .course_recommend_header .course_recommend_header_title {
137
+ font-family: PingFangSC, PingFang SC;
138
+ font-weight: 600;
139
+ font-size: 18px;
140
+ color: #2e394c;
141
+ line-height: 28px;
142
+ text-align: left;
143
+ font-style: normal;
144
+ }
145
+ .course_recommend .course_recommend_header .course_recommend_header_more {
146
+ display: flex;
147
+ align-items: center;
148
+ }
149
+ .course_recommend .course_recommend_header .course_recommend_header_more .all {
150
+ width: 56px;
151
+ height: 20px;
152
+ font-family: PingFangSC, PingFang SC;
153
+ font-weight: 500;
154
+ font-size: 14px;
155
+ color: #2e394c;
156
+ line-height: 20px;
157
+ text-align: left;
158
+ font-style: normal;
159
+ }
160
+ .course_recommend .course_recommend_list {
161
+ margin-top: 12px;
162
+ display: flex;
163
+ flex-wrap: wrap;
164
+ gap: 20px 0;
165
+ }
166
+ .course_recommend .course_recommend_list .courseItem {
167
+ flex: 1 1 clamp(180px, 48%, 360px);
168
+ max-width: clamp(180px, 48%, 360px);
169
+ height: 68px;
170
+ display: flex;
171
+ align-items: center;
172
+ justify-content: space-between;
173
+ }
174
+ .course_recommend .course_recommend_list .courseItem .cover {
175
+ border-radius: 4px;
176
+ overflow: hidden;
177
+ width: 120px;
178
+ height: 68px;
179
+ border-radius: 4px;
180
+ }
181
+ .course_recommend .course_recommend_list .courseItem .cover img {
182
+ width: 100%;
183
+ height: 100%;
184
+ object-fit: cover;
185
+ }
186
+ .course_recommend .course_recommend_list .courseItem .courseTitle {
187
+ flex: 1 1 auto;
188
+ height: 68px;
189
+ font-family: PingFangSC, PingFang SC;
190
+ font-weight: 400;
191
+ font-size: 14px;
192
+ color: #2e394c;
193
+ text-align: left;
194
+ font-style: normal;
195
+ display: -webkit-box;
196
+ -webkit-line-clamp: 3;
197
+ /* 限制行数 */
198
+ -webkit-box-orient: vertical;
199
+ overflow: hidden;
200
+ text-overflow: ellipsis;
201
+ margin-left: 20px;
202
+ }
203
+ .course_recommend .course_recommend_list .courseItem .courseTitle .newEquityLabel {
204
+ display: inline-block !important;
205
+ margin-right: 8px;
206
+ padding: 0 4px;
207
+ color: #e68845;
208
+ font-size: 10px;
209
+ font-weight: 600;
210
+ line-height: 18px;
211
+ border-radius: 4px;
212
+ background: #ffecd9;
213
+ position: relative;
214
+ bottom: 2px;
215
+ }
216
+ .course_recommend .course_recommend_list .courseItem .courseTitle .newEquityLabel-1 {
217
+ color: #3d996b;
218
+ background: #ccffe6;
219
+ }
220
+ .course_recommend .course_recommend_list .courseItem .courseTitle .newEquityLabel-3 {
221
+ color: #fff;
222
+ background: #7d91b3;
223
+ }
224
+ .course_recommend .course_recommend_list .courseItem:nth-child(2n) {
225
+ margin-left: 40px;
226
+ }
227
+
228
+ .quickInputList {
229
+ max-width: min(800px, 90vw);
230
+ display: flex;
231
+ gap: 12px;
232
+ flex-wrap: wrap;
233
+ flex-direction: column;
234
+ align-items: flex-start;
235
+ margin-top: 20px;
236
+ }
237
+ .quickInputList .quickInputItem {
238
+ padding: 5px 10px;
239
+ font-family: PingFangSC, PingFang SC;
240
+ font-weight: 400;
241
+ font-size: 14px;
242
+ color: rgb(46, 57, 76);
243
+ line-height: 18px;
244
+ text-align: left;
245
+ font-style: normal;
246
+ border-radius: 8px;
247
+ border: 1px solid rgb(217, 220, 229);
248
+ cursor: pointer;
249
+ display: inline;
250
+ white-space: nowrap;
251
+ /* 禁止换行 */
252
+ overflow: hidden;
253
+ /* 隐藏溢出内容 */
254
+ text-overflow: ellipsis;
255
+ /* 显示省略号 */
256
+ /* 如果需要可以添加最大宽度 */
257
+ white-space: normal;
258
+ }
259
+
260
+ .fileBox {
261
+ border-radius: 16px;
262
+ border: 1px solid var(---, #e9ebf2);
263
+ background: linear-gradient(180deg, #f7fff9 0%, #f1fcfe 30%, #fff 100%);
264
+ box-shadow: 0 2px 2px 0 #fff inset;
265
+ padding: 20px;
266
+ }