@ai-group/chat-sdk 3.5.12 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/cjs/components/FileGallery/index.js +1 -1
  2. package/dist/cjs/components/FileGallery/index.js.map +1 -1
  3. package/dist/cjs/components/FolderTree/DirectoryTree.d.ts +1 -1
  4. package/dist/cjs/components/FolderTree/DirectoryTree.js +56 -18
  5. package/dist/cjs/components/FolderTree/DirectoryTree.js.map +2 -2
  6. package/dist/cjs/components/FolderTree/index.js +2 -2
  7. package/dist/cjs/components/FolderTree/index.js.map +2 -2
  8. package/dist/cjs/components/FolderTree/styles.js +4 -1
  9. package/dist/cjs/components/FolderTree/styles.js.map +2 -2
  10. package/dist/cjs/components/XAdkChatbot/index.js +8 -8
  11. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  12. package/dist/cjs/components/XAdkChatbot/styles.d.ts +1 -0
  13. package/dist/cjs/components/XAdkChatbot/styles.js +7 -1
  14. package/dist/cjs/components/XAdkChatbot/styles.js.map +2 -2
  15. package/dist/cjs/components/XAdkProvider/index.js +2 -0
  16. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  17. package/dist/cjs/components/XAdkThoughtChain/index.js +75 -39
  18. package/dist/cjs/components/XAdkThoughtChain/index.js.map +2 -2
  19. package/dist/cjs/components/XAdkThoughtChain/styles.js +27 -26
  20. package/dist/cjs/components/XAdkThoughtChain/styles.js.map +2 -2
  21. package/dist/cjs/index.d.ts +2 -1
  22. package/dist/cjs/index.js +9 -0
  23. package/dist/cjs/index.js.map +2 -2
  24. package/dist/cjs/styles/tokens.d.ts +27 -0
  25. package/dist/cjs/styles/tokens.js +72 -0
  26. package/dist/cjs/styles/tokens.js.map +7 -0
  27. package/dist/cjs/types/XAdkChatbot.d.ts +7 -1
  28. package/dist/cjs/types/XAdkChatbot.js.map +1 -1
  29. package/dist/cjs/types/XAdkThoughtChain.d.ts +13 -0
  30. package/dist/cjs/types/XAdkThoughtChain.js.map +1 -1
  31. package/dist/esm/components/FileGallery/index.js +1 -1
  32. package/dist/esm/components/FileGallery/index.js.map +1 -1
  33. package/dist/esm/components/FolderTree/DirectoryTree.d.ts +1 -1
  34. package/dist/esm/components/FolderTree/DirectoryTree.js +86 -54
  35. package/dist/esm/components/FolderTree/DirectoryTree.js.map +1 -1
  36. package/dist/esm/components/FolderTree/index.js +2 -2
  37. package/dist/esm/components/FolderTree/index.js.map +1 -1
  38. package/dist/esm/components/FolderTree/styles.js +2 -2
  39. package/dist/esm/components/FolderTree/styles.js.map +1 -1
  40. package/dist/esm/components/XAdkChatbot/index.js +15 -38
  41. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  42. package/dist/esm/components/XAdkChatbot/styles.d.ts +1 -0
  43. package/dist/esm/components/XAdkChatbot/styles.js +20 -19
  44. package/dist/esm/components/XAdkChatbot/styles.js.map +1 -1
  45. package/dist/esm/components/XAdkProvider/index.js +3 -2
  46. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  47. package/dist/esm/components/XAdkThoughtChain/index.js +100 -50
  48. package/dist/esm/components/XAdkThoughtChain/index.js.map +1 -1
  49. package/dist/esm/components/XAdkThoughtChain/styles.js +20 -19
  50. package/dist/esm/components/XAdkThoughtChain/styles.js.map +1 -1
  51. package/dist/esm/index.d.ts +2 -1
  52. package/dist/esm/index.js +3 -0
  53. package/dist/esm/index.js.map +1 -1
  54. package/dist/esm/styles/tokens.d.ts +27 -0
  55. package/dist/esm/styles/tokens.js +42 -0
  56. package/dist/esm/styles/tokens.js.map +1 -0
  57. package/dist/esm/types/XAdkChatbot.d.ts +7 -1
  58. package/dist/esm/types/XAdkChatbot.js.map +1 -1
  59. package/dist/esm/types/XAdkThoughtChain.d.ts +13 -0
  60. package/dist/esm/types/XAdkThoughtChain.js.map +1 -1
  61. package/dist/umd/chat-sdk.min.js +1 -1
  62. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26;
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27;
3
3
  import { css } from "@emotion/css";
4
4
  import { withBasicStyles } from "../../styles/common";
5
5
  export var useStyles = withBasicStyles(function () {
6
6
  return {
7
- wrapper: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 0 16px;\n min-height: 300px;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n\n .x-markdown {\n --margin-ul-ol: 0 0 1em 1em;\n\n code {\n background: rgba(150, 150, 150, 0.2);\n border-radius: 3px;\n }\n\n .ant-highlightCode-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--ant-highlight-code-color-text-title);\n background: var(--ant-highlight-code-color-bg-title);\n padding: var(--ant-padding-sm);\n border-top-left-radius: var(--ant-border-radius);\n border-top-right-radius: var(--ant-border-radius);\n }\n }\n "]))),
7
+ wrapper: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 0 16px;\n min-height: 300px;\n height: 100%;\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n\n .x-markdown {\n --margin-ul-ol: 0 0 1em 1em;\n\n code {\n background: rgba(150, 150, 150, 0.2);\n border-radius: 3px;\n }\n\n .ant-highlightCode-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--ant-highlight-code-color-text-title);\n background: var(--ant-highlight-code-color-bg-title);\n padding: var(--ant-padding-sm);\n border-top-left-radius: var(--ant-border-radius);\n border-top-right-radius: var(--ant-border-radius);\n }\n }\n "]))),
8
8
  list: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n flex: 1;\n margin-top: 16px;\n overflow-y: auto;\n /* Chrome, Safari, Edge, Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n /* Firefox */\n scrollbar-width: none;\n /* IE 10+ */\n -ms-overflow-style: none;\n "]))),
9
9
  prologue: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin-bottom: 12px;\n "]))),
10
10
  suggestion: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin-bottom: 12px;\n "]))),
@@ -13,24 +13,25 @@ export var useStyles = withBasicStyles(function () {
13
13
  userContainer: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: flex-end;\n "]))),
14
14
  card: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n display: inline-flex;\n padding: 12px 16px;\n background: #d5e3ff;\n border-radius: 12px;\n max-width: 100%;\n white-space: pre-line;\n word-break: break-all;\n "]))),
15
15
  botMsg: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n margin-bottom: 12px;\n "]))),
16
+ emptyWrapper: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 200px;\n "]))),
16
17
  // 新增样式
17
- welcomeWrapper: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 40px 20px;\n text-align: center;\n "]))),
18
- welcomeIcon: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n width: 64px;\n height: 64px;\n border-radius: 12px;\n margin-bottom: 16px;\n "]))),
19
- welcomeTitle: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n font-size: 24px;\n font-weight: 600;\n color: rgba(0, 0, 0, 0.88);\n margin-bottom: 8px;\n "]))),
20
- welcomeDesc: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n font-size: 14px;\n color: rgba(0, 0, 0, 0.65);\n margin-bottom: 24px;\n "]))),
21
- suggestionWrapper: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n margin-top: 16px;\n "]))),
22
- successBadge: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n border-radius: 4px;\n color: #52c41a;\n font-size: 13px;\n margin-bottom: 12px;\n "]))),
23
- fileSection: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n margin: 12px 0;\n "]))),
24
- fileHeader: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: rgba(0, 0, 0, 0.65);\n margin-bottom: 8px;\n "]))),
25
- metaFooter: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #f0f0f0;\n "]))),
26
- actionIcons: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n color: rgba(0, 0, 0, 0.45);\n\n & > span {\n cursor: pointer;\n transition: color 0.2s;\n\n &:hover {\n color: #1890ff;\n }\n }\n "]))),
27
- fnCall: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 11px;\n border-radius: 24px;\n line-height: 16px;\n border: 1px solid #e7e7e7;\n cursor: pointer;\n "]))),
28
- confirm: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n padding: 12px;\n border-radius: 12px;\n border: 1px solid #e7e7e7;\n "]))),
29
- footer: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n /* senderWrap and tip moved to top-level keys so they are\n accessible as styles.senderWrap and styles.tip in the component */\n "]))),
30
- sender: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 8px 8px 12px;\n border: 1px solid #e7e7e7;\n border-radius: 24px;\n\n /* .input moved to top-level key so component can use styles.input */\n "]))),
31
- senderWrap: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n "]))),
32
- tip: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n padding: 4px;\n font-size: 12px;\n text-align: center;\n color: rgba(0, 0, 0, 0.4);\n "]))),
33
- input: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n padding: 0;\n margin: 5px 0;\n line-height: 22px;\n font-size: 15px;\n border-radius: 0;\n border: none;\n\n &:focus {\n box-shadow: none;\n }\n "])))
18
+ welcomeWrapper: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 40px 20px;\n text-align: center;\n "]))),
19
+ welcomeIcon: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n width: 64px;\n height: 64px;\n border-radius: 12px;\n margin-bottom: 16px;\n "]))),
20
+ welcomeTitle: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n font-size: 24px;\n font-weight: 600;\n color: rgba(0, 0, 0, 0.88);\n margin-bottom: 8px;\n "]))),
21
+ welcomeDesc: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n font-size: 14px;\n color: rgba(0, 0, 0, 0.65);\n margin-bottom: 24px;\n "]))),
22
+ suggestionWrapper: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n margin-top: 16px;\n "]))),
23
+ successBadge: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n border-radius: 4px;\n color: #52c41a;\n font-size: 13px;\n margin-bottom: 12px;\n "]))),
24
+ fileSection: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n margin: 12px 0;\n "]))),
25
+ fileHeader: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: rgba(0, 0, 0, 0.65);\n margin-bottom: 8px;\n "]))),
26
+ metaFooter: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #f0f0f0;\n "]))),
27
+ actionIcons: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n color: rgba(0, 0, 0, 0.45);\n\n & > span {\n cursor: pointer;\n transition: color 0.2s;\n\n &:hover {\n color: #1890ff;\n }\n }\n "]))),
28
+ fnCall: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 11px;\n border-radius: 24px;\n line-height: 16px;\n border: 1px solid #e7e7e7;\n cursor: pointer;\n "]))),
29
+ confirm: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n padding: 12px;\n border-radius: 12px;\n border: 1px solid #e7e7e7;\n "]))),
30
+ footer: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n /* senderWrap and tip moved to top-level keys so they are\n accessible as styles.senderWrap and styles.tip in the component */\n "]))),
31
+ sender: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 8px 8px 12px;\n border: 1px solid #e7e7e7;\n border-radius: 24px;\n\n /* .input moved to top-level key so component can use styles.input */\n "]))),
32
+ senderWrap: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n "]))),
33
+ tip: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n padding: 4px;\n font-size: 12px;\n text-align: center;\n color: rgba(0, 0, 0, 0.4);\n "]))),
34
+ input: css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral(["\n padding: 0;\n margin: 5px 0;\n line-height: 22px;\n font-size: 15px;\n border-radius: 0;\n border: none;\n\n &:focus {\n box-shadow: none;\n }\n "])))
34
35
  };
35
36
  });
36
37
  export default useStyles;
@@ -1 +1 @@
1
- {"version":3,"names":["css","withBasicStyles","useStyles","wrapper","_templateObject","_taggedTemplateLiteral","list","_templateObject2","prologue","_templateObject3","suggestion","_templateObject4","suggestContent","_templateObject5","userMsg","_templateObject6","userContainer","_templateObject7","card","_templateObject8","botMsg","_templateObject9","welcomeWrapper","_templateObject10","welcomeIcon","_templateObject11","welcomeTitle","_templateObject12","welcomeDesc","_templateObject13","suggestionWrapper","_templateObject14","successBadge","_templateObject15","fileSection","_templateObject16","fileHeader","_templateObject17","metaFooter","_templateObject18","actionIcons","_templateObject19","fnCall","_templateObject20","confirm","_templateObject21","footer","_templateObject22","sender","_templateObject23","senderWrap","_templateObject24","tip","_templateObject25","input","_templateObject26"],"sources":["../../../../src/components/XAdkChatbot/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n wrapper: css`\n padding: 0 16px;\n min-height: 300px;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n\n .x-markdown {\n --margin-ul-ol: 0 0 1em 1em;\n\n code {\n background: rgba(150, 150, 150, 0.2);\n border-radius: 3px;\n }\n\n .ant-highlightCode-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--ant-highlight-code-color-text-title);\n background: var(--ant-highlight-code-color-bg-title);\n padding: var(--ant-padding-sm);\n border-top-left-radius: var(--ant-border-radius);\n border-top-right-radius: var(--ant-border-radius);\n }\n }\n `,\n\n list: css`\n flex: 1;\n margin-top: 16px;\n overflow-y: auto;\n /* Chrome, Safari, Edge, Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n /* Firefox */\n scrollbar-width: none;\n /* IE 10+ */\n -ms-overflow-style: none;\n `,\n\n prologue: css`\n margin-bottom: 12px;\n `,\n\n suggestion: css`\n margin-bottom: 12px;\n `,\n\n suggestContent: css`\n display: inline-flex;\n border: 2px solid #e7e7e7;\n border-radius: 8px;\n `,\n\n userMsg: css`\n display: flex;\n justify-content: flex-end;\n margin-bottom: 24px;\n `,\n\n userContainer: css`\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: flex-end;\n `,\n\n card: css`\n display: inline-flex;\n padding: 12px 16px;\n background: #d5e3ff;\n border-radius: 12px;\n max-width: 100%;\n white-space: pre-line;\n word-break: break-all;\n `,\n\n botMsg: css`\n margin-bottom: 12px;\n `,\n\n // 新增样式\n welcomeWrapper: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 40px 20px;\n text-align: center;\n `,\n\n welcomeIcon: css`\n width: 64px;\n height: 64px;\n border-radius: 12px;\n margin-bottom: 16px;\n `,\n\n welcomeTitle: css`\n font-size: 24px;\n font-weight: 600;\n color: rgba(0, 0, 0, 0.88);\n margin-bottom: 8px;\n `,\n\n welcomeDesc: css`\n font-size: 14px;\n color: rgba(0, 0, 0, 0.65);\n margin-bottom: 24px;\n `,\n\n suggestionWrapper: css`\n margin-top: 16px;\n `,\n\n successBadge: css`\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n border-radius: 4px;\n color: #52c41a;\n font-size: 13px;\n margin-bottom: 12px;\n `,\n\n fileSection: css`\n margin: 12px 0;\n `,\n\n fileHeader: css`\n font-size: 13px;\n color: rgba(0, 0, 0, 0.65);\n margin-bottom: 8px;\n `,\n\n metaFooter: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #f0f0f0;\n `,\n\n actionIcons: css`\n color: rgba(0, 0, 0, 0.45);\n\n & > span {\n cursor: pointer;\n transition: color 0.2s;\n\n &:hover {\n color: #1890ff;\n }\n }\n `,\n\n fnCall: css`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 11px;\n border-radius: 24px;\n line-height: 16px;\n border: 1px solid #e7e7e7;\n cursor: pointer;\n `,\n\n confirm: css`\n padding: 12px;\n border-radius: 12px;\n border: 1px solid #e7e7e7;\n `,\n\n footer: css`\n /* senderWrap and tip moved to top-level keys so they are\n accessible as styles.senderWrap and styles.tip in the component */\n `,\n\n sender: css`\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 8px 8px 12px;\n border: 1px solid #e7e7e7;\n border-radius: 24px;\n\n /* .input moved to top-level key so component can use styles.input */\n `,\n\n senderWrap: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n `,\n\n tip: css`\n padding: 4px;\n font-size: 12px;\n text-align: center;\n color: rgba(0, 0, 0, 0.4);\n `,\n\n input: css`\n padding: 0;\n margin: 5px 0;\n line-height: 22px;\n font-size: 15px;\n border-radius: 0;\n border: none;\n\n &:focus {\n box-shadow: none;\n }\n `,\n}));\n\nexport default useStyles;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,OAAO,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IAC9CE,OAAO,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA,svBA4BX;IAEDC,IAAI,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,wQAYR;IAEDG,QAAQ,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,sCAEZ;IAEDK,UAAU,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,sCAEd;IAEDO,cAAc,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,gGAIlB;IAEDS,OAAO,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,0FAIX;IAEDW,aAAa,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,yHAKjB;IAEDa,IAAI,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,kMAQR;IAEDe,MAAM,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA,sCAEV;IAED;IACAiB,cAAc,EAAEtB,GAAG,CAAAuB,iBAAA,KAAAA,iBAAA,GAAAlB,sBAAA,yIAMlB;IAEDmB,WAAW,EAAExB,GAAG,CAAAyB,iBAAA,KAAAA,iBAAA,GAAApB,sBAAA,qGAKf;IAEDqB,YAAY,EAAE1B,GAAG,CAAA2B,iBAAA,KAAAA,iBAAA,GAAAtB,sBAAA,mHAKhB;IAEDuB,WAAW,EAAE5B,GAAG,CAAA6B,iBAAA,KAAAA,iBAAA,GAAAxB,sBAAA,6FAIf;IAEDyB,iBAAiB,EAAE9B,GAAG,CAAA+B,iBAAA,KAAAA,iBAAA,GAAA1B,sBAAA,mCAErB;IAED2B,YAAY,EAAEhC,GAAG,CAAAiC,iBAAA,KAAAA,iBAAA,GAAA5B,sBAAA,gQAWhB;IAED6B,WAAW,EAAElC,GAAG,CAAAmC,iBAAA,KAAAA,iBAAA,GAAA9B,sBAAA,iCAEf;IAED+B,UAAU,EAAEpC,GAAG,CAAAqC,iBAAA,KAAAA,iBAAA,GAAAhC,sBAAA,4FAId;IAEDiC,UAAU,EAAEtC,GAAG,CAAAuC,iBAAA,KAAAA,iBAAA,GAAAlC,sBAAA,mLAQd;IAEDmC,WAAW,EAAExC,GAAG,CAAAyC,iBAAA,KAAAA,iBAAA,GAAApC,sBAAA,kLAWf;IAEDqC,MAAM,EAAE1C,GAAG,CAAA2C,iBAAA,KAAAA,iBAAA,GAAAtC,sBAAA,yMASV;IAEDuC,OAAO,EAAE5C,GAAG,CAAA6C,iBAAA,KAAAA,iBAAA,GAAAxC,sBAAA,0FAIX;IAEDyC,MAAM,EAAE9C,GAAG,CAAA+C,iBAAA,KAAAA,iBAAA,GAAA1C,sBAAA,sJAGV;IAED2C,MAAM,EAAEhD,GAAG,CAAAiD,iBAAA,KAAAA,iBAAA,GAAA5C,sBAAA,kQAUV;IAED6C,UAAU,EAAElD,GAAG,CAAAmD,iBAAA,KAAAA,iBAAA,GAAA9C,sBAAA,8GAKd;IAED+C,GAAG,EAAEpD,GAAG,CAAAqD,iBAAA,KAAAA,iBAAA,GAAAhD,sBAAA,8GAKP;IAEDiD,KAAK,EAAEtD,GAAG,CAAAuD,iBAAA,KAAAA,iBAAA,GAAAlD,sBAAA;EAYZ,CAAC;AAAA,CAAC,CAAC;AAEH,eAAeH,SAAS"}
1
+ {"version":3,"names":["css","withBasicStyles","useStyles","wrapper","_templateObject","_taggedTemplateLiteral","list","_templateObject2","prologue","_templateObject3","suggestion","_templateObject4","suggestContent","_templateObject5","userMsg","_templateObject6","userContainer","_templateObject7","card","_templateObject8","botMsg","_templateObject9","emptyWrapper","_templateObject10","welcomeWrapper","_templateObject11","welcomeIcon","_templateObject12","welcomeTitle","_templateObject13","welcomeDesc","_templateObject14","suggestionWrapper","_templateObject15","successBadge","_templateObject16","fileSection","_templateObject17","fileHeader","_templateObject18","metaFooter","_templateObject19","actionIcons","_templateObject20","fnCall","_templateObject21","confirm","_templateObject22","footer","_templateObject23","sender","_templateObject24","senderWrap","_templateObject25","tip","_templateObject26","input","_templateObject27"],"sources":["../../../../src/components/XAdkChatbot/styles.tsx"],"sourcesContent":["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n wrapper: css`\n padding: 0 16px;\n min-height: 300px;\n height: 100%;\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n\n .x-markdown {\n --margin-ul-ol: 0 0 1em 1em;\n\n code {\n background: rgba(150, 150, 150, 0.2);\n border-radius: 3px;\n }\n\n .ant-highlightCode-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--ant-highlight-code-color-text-title);\n background: var(--ant-highlight-code-color-bg-title);\n padding: var(--ant-padding-sm);\n border-top-left-radius: var(--ant-border-radius);\n border-top-right-radius: var(--ant-border-radius);\n }\n }\n `,\n\n list: css`\n flex: 1;\n margin-top: 16px;\n overflow-y: auto;\n /* Chrome, Safari, Edge, Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n /* Firefox */\n scrollbar-width: none;\n /* IE 10+ */\n -ms-overflow-style: none;\n `,\n\n prologue: css`\n margin-bottom: 12px;\n `,\n\n suggestion: css`\n margin-bottom: 12px;\n `,\n\n suggestContent: css`\n display: inline-flex;\n border: 2px solid #e7e7e7;\n border-radius: 8px;\n `,\n\n userMsg: css`\n display: flex;\n justify-content: flex-end;\n margin-bottom: 24px;\n `,\n\n userContainer: css`\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: flex-end;\n `,\n\n card: css`\n display: inline-flex;\n padding: 12px 16px;\n background: #d5e3ff;\n border-radius: 12px;\n max-width: 100%;\n white-space: pre-line;\n word-break: break-all;\n `,\n\n botMsg: css`\n margin-bottom: 12px;\n `,\n\n emptyWrapper: css`\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 200px;\n `,\n\n // 新增样式\n welcomeWrapper: css`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 40px 20px;\n text-align: center;\n `,\n\n welcomeIcon: css`\n width: 64px;\n height: 64px;\n border-radius: 12px;\n margin-bottom: 16px;\n `,\n\n welcomeTitle: css`\n font-size: 24px;\n font-weight: 600;\n color: rgba(0, 0, 0, 0.88);\n margin-bottom: 8px;\n `,\n\n welcomeDesc: css`\n font-size: 14px;\n color: rgba(0, 0, 0, 0.65);\n margin-bottom: 24px;\n `,\n\n suggestionWrapper: css`\n margin-top: 16px;\n `,\n\n successBadge: css`\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n border-radius: 4px;\n color: #52c41a;\n font-size: 13px;\n margin-bottom: 12px;\n `,\n\n fileSection: css`\n margin: 12px 0;\n `,\n\n fileHeader: css`\n font-size: 13px;\n color: rgba(0, 0, 0, 0.65);\n margin-bottom: 8px;\n `,\n\n metaFooter: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #f0f0f0;\n `,\n\n actionIcons: css`\n color: rgba(0, 0, 0, 0.45);\n\n & > span {\n cursor: pointer;\n transition: color 0.2s;\n\n &:hover {\n color: #1890ff;\n }\n }\n `,\n\n fnCall: css`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 11px;\n border-radius: 24px;\n line-height: 16px;\n border: 1px solid #e7e7e7;\n cursor: pointer;\n `,\n\n confirm: css`\n padding: 12px;\n border-radius: 12px;\n border: 1px solid #e7e7e7;\n `,\n\n footer: css`\n /* senderWrap and tip moved to top-level keys so they are\n accessible as styles.senderWrap and styles.tip in the component */\n `,\n\n sender: css`\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 8px 8px 12px;\n border: 1px solid #e7e7e7;\n border-radius: 24px;\n\n /* .input moved to top-level key so component can use styles.input */\n `,\n\n senderWrap: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n `,\n\n tip: css`\n padding: 4px;\n font-size: 12px;\n text-align: center;\n color: rgba(0, 0, 0, 0.4);\n `,\n\n input: css`\n padding: 0;\n margin: 5px 0;\n line-height: 22px;\n font-size: 15px;\n border-radius: 0;\n border: none;\n\n &:focus {\n box-shadow: none;\n }\n `,\n}));\n\nexport default useStyles;\n"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,cAAc;AAClC,SAASC,eAAe;AAExB,OAAO,IAAMC,SAAS,GAAGD,eAAe,CAAC;EAAA,OAAO;IAC9CE,OAAO,EAAEH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,sBAAA,ouBA2BX;IAEDC,IAAI,EAAEN,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,wQAYR;IAEDG,QAAQ,EAAER,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,sBAAA,sCAEZ;IAEDK,UAAU,EAAEV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,sBAAA,sCAEd;IAEDO,cAAc,EAAEZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,sBAAA,gGAIlB;IAEDS,OAAO,EAAEd,GAAG,CAAAe,gBAAA,KAAAA,gBAAA,GAAAV,sBAAA,0FAIX;IAEDW,aAAa,EAAEhB,GAAG,CAAAiB,gBAAA,KAAAA,gBAAA,GAAAZ,sBAAA,yHAKjB;IAEDa,IAAI,EAAElB,GAAG,CAAAmB,gBAAA,KAAAA,gBAAA,GAAAd,sBAAA,kMAQR;IAEDe,MAAM,EAAEpB,GAAG,CAAAqB,gBAAA,KAAAA,gBAAA,GAAAhB,sBAAA,sCAEV;IAEDiB,YAAY,EAAEtB,GAAG,CAAAuB,iBAAA,KAAAA,iBAAA,GAAAlB,sBAAA,8HAMhB;IAED;IACAmB,cAAc,EAAExB,GAAG,CAAAyB,iBAAA,KAAAA,iBAAA,GAAApB,sBAAA,yIAMlB;IAEDqB,WAAW,EAAE1B,GAAG,CAAA2B,iBAAA,KAAAA,iBAAA,GAAAtB,sBAAA,qGAKf;IAEDuB,YAAY,EAAE5B,GAAG,CAAA6B,iBAAA,KAAAA,iBAAA,GAAAxB,sBAAA,mHAKhB;IAEDyB,WAAW,EAAE9B,GAAG,CAAA+B,iBAAA,KAAAA,iBAAA,GAAA1B,sBAAA,6FAIf;IAED2B,iBAAiB,EAAEhC,GAAG,CAAAiC,iBAAA,KAAAA,iBAAA,GAAA5B,sBAAA,mCAErB;IAED6B,YAAY,EAAElC,GAAG,CAAAmC,iBAAA,KAAAA,iBAAA,GAAA9B,sBAAA,gQAWhB;IAED+B,WAAW,EAAEpC,GAAG,CAAAqC,iBAAA,KAAAA,iBAAA,GAAAhC,sBAAA,iCAEf;IAEDiC,UAAU,EAAEtC,GAAG,CAAAuC,iBAAA,KAAAA,iBAAA,GAAAlC,sBAAA,4FAId;IAEDmC,UAAU,EAAExC,GAAG,CAAAyC,iBAAA,KAAAA,iBAAA,GAAApC,sBAAA,mLAQd;IAEDqC,WAAW,EAAE1C,GAAG,CAAA2C,iBAAA,KAAAA,iBAAA,GAAAtC,sBAAA,kLAWf;IAEDuC,MAAM,EAAE5C,GAAG,CAAA6C,iBAAA,KAAAA,iBAAA,GAAAxC,sBAAA,yMASV;IAEDyC,OAAO,EAAE9C,GAAG,CAAA+C,iBAAA,KAAAA,iBAAA,GAAA1C,sBAAA,0FAIX;IAED2C,MAAM,EAAEhD,GAAG,CAAAiD,iBAAA,KAAAA,iBAAA,GAAA5C,sBAAA,sJAGV;IAED6C,MAAM,EAAElD,GAAG,CAAAmD,iBAAA,KAAAA,iBAAA,GAAA9C,sBAAA,kQAUV;IAED+C,UAAU,EAAEpD,GAAG,CAAAqD,iBAAA,KAAAA,iBAAA,GAAAhD,sBAAA,8GAKd;IAEDiD,GAAG,EAAEtD,GAAG,CAAAuD,iBAAA,KAAAA,iBAAA,GAAAlD,sBAAA,8GAKP;IAEDmD,KAAK,EAAExD,GAAG,CAAAyD,iBAAA,KAAAA,iBAAA,GAAApD,sBAAA;EAYZ,CAAC;AAAA,CAAC,CAAC;AAEH,eAAeH,SAAS"}
@@ -9,6 +9,7 @@ import { ChatActionContext } from "./context/ChatActionContext";
9
9
  import { SessionContext } from "./context/SessionContext";
10
10
  import useADKChat from "../../hooks/useADKChat";
11
11
  import { primaryBlue } from "../../styles/common";
12
+ import { cssVarStyle } from "../../styles/tokens";
12
13
  import { mergeChatStrategies, resolvePresetUploadRequest } from "../../presets/xGroupAdk";
13
14
 
14
15
  /**
@@ -223,12 +224,12 @@ var XAdkProviderComponent = /*#__PURE__*/forwardRef(function (_ref, ref) {
223
224
  children: /*#__PURE__*/_jsx(SessionContext.Provider, {
224
225
  value: sessionValue,
225
226
  children: /*#__PURE__*/_jsx("div", {
226
- style: {
227
+ style: _objectSpread(_objectSpread({}, cssVarStyle), {}, {
227
228
  display: "flex",
228
229
  height: "100%",
229
230
  width: "100%",
230
231
  position: "relative"
231
- },
232
+ }),
232
233
  children: children
233
234
  })
234
235
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useImperativeHandle","useMemo","ConfigProvider","XProvider","ChatStateContext","ChatActionContext","SessionContext","useADKChat","primaryBlue","mergeChatStrategies","resolvePresetUploadRequest","XAdkProviderComponent","_ref","ref","_config$showFeedback","_config$uploadRequest","_ref$url","url","window","location","origin","token","config","preset","strategies","chatData","_ref$providerId","providerId","onSuccess","onError","onMessage","onStream","children","mergedStrategies","_objectSpread","internalData","enabled","data","appInfo","startChat","stopChat","reChat","clearChat","suggestChat","confirmFnCall","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","prologue","suggestions","initialized","setCurrentSession","setMessages","_data$likeMessage","likeMessage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","_data$setStateDelta","setStateDelta","showFeedback","onFileClick","presetUploadRequest","appNo","uploadRequest","getAppInfo","getMessages","getSessions","chatStateValue","chatActionValue","chat","sessionValue","_jsx","theme","colorPrimary","appTheme","Provider","value","style","display","height","width","position","displayName","Header","Sidebar","Messages","Sender","Chatbot","Welcome","DefaultLayout","jsx","XAdkProvider"],"sources":["../../../../src/components/XAdkProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from \"react\";\nimport { ConfigProvider } from \"antd\";\nimport { XProvider } from \"@ant-design/x\";\nimport { ChatStateContext } from \"./context/ChatStateContext\";\nimport { ChatActionContext } from \"./context/ChatActionContext\";\nimport { SessionContext } from \"./context/SessionContext\";\nimport useADKChat from \"@/hooks/useADKChat\";\nimport { primaryBlue } from \"@/styles/common\";\nimport type {\n XAdkProviderProps,\n XAdkProviderHandle,\n XAdkProviderConfig,\n} from \"@/types/XAdkProvider\";\nimport type { ChatHookResult } from \"@/types/ChatHook\";\nimport {\n mergeChatStrategies,\n resolvePresetUploadRequest,\n} from \"@/presets/xGroupAdk\";\n\n/**\n * XAdkProvider Props (扩展版)\n *\n * 支持两种使用方式:\n * 1. 标准协议: 提供 url/token/config,使用内置 useADKChat\n * 2. 自定义协议: 提供 chatData,使用自己的 Hook\n */\nexport interface XAdkProviderPropsExtended extends Omit<\n XAdkProviderProps,\n \"url\" | \"token\" | \"config\"\n> {\n /**\n * 选项 A: 使用标准协议 (内置 useADKChat)\n */\n url?: string;\n token: string;\n config?: XAdkProviderConfig;\n\n /**\n * 选项 B: 使用自定义 Hook 数据\n * 如果提供此参数,将忽略 url/token/config\n *\n * @example\n * // GraphQL 协议\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n *\n * @example\n * // WebSocket 协议\n * const chatData = useWebSocketChat({ url: 'ws://...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n */\n chatData?: ChatHookResult;\n\n children: React.ReactNode;\n}\n\n/**\n * XAdkProvider - AI 聊天 SDK 核心 Provider\n *\n * 采用 Compound Components 架构:\n * - 只负责数据和状态管理\n * - 不包含 UI 布局\n * - 通过 Context 向子组件提供数据\n * - 支持完全自定义的组件组合\n * - 支持协议解耦,可使用自定义 Hook\n *\n * @example\n * // 基础用法 - 标准协议\n * <XAdkProvider url=\"...\" token=\"...\" config={...}>\n * <XAdkProvider.Chatbot />\n * </XAdkProvider>\n *\n * @example\n * // 自定义协议 - GraphQL\n * function App() {\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * return (\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n * );\n * }\n *\n * @example\n * // 自定义布局\n * <XAdkProvider url=\"...\" token=\"...\">\n * <div style={{ display: 'flex' }}>\n * <XAdkProvider.Sidebar />\n * <div>\n * <XAdkProvider.Messages />\n * <XAdkProvider.Sender />\n * </div>\n * </div>\n * </XAdkProvider>\n */\nconst XAdkProviderComponent = forwardRef<\n XAdkProviderHandle,\n XAdkProviderPropsExtended\n>(\n (\n {\n url = window.location.origin,\n token,\n config,\n preset,\n strategies,\n chatData, // 自定义 Hook 数据\n providerId = \"defaultId\",\n onSuccess,\n onError,\n onMessage,\n onStream,\n children,\n },\n ref,\n ) => {\n const mergedStrategies = useMemo(\n () =>\n mergeChatStrategies(\n preset ?? config?.preset,\n {\n ...config?.strategies,\n ...strategies,\n },\n ),\n [preset, strategies, config?.preset, config?.strategies],\n );\n\n // 内置 Hook 数据 (仅在没有提供 chatData 时调用)\n const internalData = useADKChat({\n url,\n token: token || \"\",\n config: config || {},\n strategies: mergedStrategies,\n onError,\n onSuccess,\n onMessage,\n onStream,\n // 仅在提供了 url 和 token 时才初始化\n enabled: !chatData && !!url && !!token,\n });\n\n // 使用外部数据或内部数据\n const data = chatData || internalData;\n\n // 解构数据\n const {\n appInfo,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n prologue,\n suggestions,\n initialized,\n setCurrentSession,\n setMessages,\n likeMessage = async () => false,\n setStateDelta = () => {},\n } = data;\n\n const showFeedback = config?.showFeedback ?? true;\n const onFileClick = config?.onFileClick;\n const presetUploadRequest = useMemo(\n () =>\n resolvePresetUploadRequest(preset ?? config?.preset, {\n url,\n token,\n appNo: config?.appNo,\n }),\n [preset, config?.preset, url, token, config?.appNo],\n );\n const uploadRequest = config?.uploadRequest ?? presetUploadRequest;\n\n // 暴露 API 给 ref\n useImperativeHandle(\n ref,\n () => ({\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSession,\n setStateDelta,\n }),\n [\n appInfo,\n messages,\n sessionList,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n setMessages,\n setCurrentSession,\n setStateDelta,\n ],\n );\n\n // 状态 Context Value - 使用 useMemo 避免不必要的 rerender\n const chatStateValue = useMemo(\n () => ({\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n url,\n token,\n showFeedback,\n onFileClick,\n uploadRequest,\n strategies: mergedStrategies,\n }),\n [\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n showFeedback,\n onFileClick,\n uploadRequest,\n mergedStrategies,\n ],\n );\n\n // 动作 Context Value - 函数引用稳定,不需要每次都创建新对象\n const chatActionValue = useMemo(\n () => ({\n chat: startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n likeMessage,\n setStateDelta,\n }),\n [\n startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n likeMessage,\n setStateDelta,\n ],\n );\n\n // 会话 Context Value\n const sessionValue = useMemo(\n () => ({\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSession,\n }),\n [\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSession,\n ],\n );\n\n return (\n <ConfigProvider\n theme={{\n token: {\n colorPrimary: appInfo?.appTheme || primaryBlue,\n },\n }}\n >\n <XProvider>\n <ChatStateContext.Provider value={chatStateValue}>\n <ChatActionContext.Provider value={chatActionValue}>\n <SessionContext.Provider value={sessionValue}>\n <div\n style={{\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {children}\n </div>\n </SessionContext.Provider>\n </ChatActionContext.Provider>\n </ChatStateContext.Provider>\n </XProvider>\n </ConfigProvider>\n );\n },\n);\n\nXAdkProviderComponent.displayName = \"XAdkProvider\";\n\n// 导入 Compound Components\nimport Header from \"./compound/Header\";\nimport Sidebar from \"./compound/Sidebar\";\nimport Messages from \"./compound/Messages\";\nimport Sender from \"./compound/Sender\";\nimport Chatbot from \"./compound/Chatbot\";\nimport Welcome from \"./compound/Welcome\";\nimport DefaultLayout from \"./compound/DefaultLayout\";\n\n// 导出时会挂载 Compound Components\nconst XAdkProvider = XAdkProviderComponent as typeof XAdkProviderComponent & {\n Header: typeof Header;\n Sidebar: typeof Sidebar;\n Messages: typeof Messages;\n Sender: typeof Sender;\n Chatbot: typeof Chatbot;\n Welcome: typeof Welcome;\n DefaultLayout: typeof DefaultLayout;\n};\n\n// 挂载 Compound Components\nXAdkProvider.Header = Header;\nXAdkProvider.Sidebar = Sidebar;\nXAdkProvider.Messages = Messages;\nXAdkProvider.Sender = Sender;\nXAdkProvider.Chatbot = Chatbot;\nXAdkProvider.DefaultLayout = DefaultLayout;\nXAdkProvider.Welcome = Welcome;\n\nexport default XAdkProvider;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","forwardRef","useImperativeHandle","useMemo","ConfigProvider","XProvider","ChatStateContext","ChatActionContext","SessionContext","useADKChat","primaryBlue","cssVarStyle","mergeChatStrategies","resolvePresetUploadRequest","XAdkProviderComponent","_ref","ref","_config$showFeedback","_config$uploadRequest","_ref$url","url","window","location","origin","token","config","preset","strategies","chatData","_ref$providerId","providerId","onSuccess","onError","onMessage","onStream","children","mergedStrategies","_objectSpread","internalData","enabled","data","appInfo","startChat","stopChat","reChat","clearChat","suggestChat","confirmFnCall","deleteSession","updateSession","currentSessionId","sessionPagination","sessionList","messages","loading","prologue","suggestions","initialized","setCurrentSession","setMessages","_data$likeMessage","likeMessage","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","_data$setStateDelta","setStateDelta","showFeedback","onFileClick","presetUploadRequest","appNo","uploadRequest","getAppInfo","getMessages","getSessions","chatStateValue","chatActionValue","chat","sessionValue","_jsx","theme","colorPrimary","appTheme","Provider","value","style","display","height","width","position","displayName","Header","Sidebar","Messages","Sender","Chatbot","Welcome","DefaultLayout","jsx","XAdkProvider"],"sources":["../../../../src/components/XAdkProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from \"react\";\nimport { ConfigProvider } from \"antd\";\nimport { XProvider } from \"@ant-design/x\";\nimport { ChatStateContext } from \"./context/ChatStateContext\";\nimport { ChatActionContext } from \"./context/ChatActionContext\";\nimport { SessionContext } from \"./context/SessionContext\";\nimport useADKChat from \"@/hooks/useADKChat\";\nimport { primaryBlue } from \"@/styles/common\";\nimport { cssVarStyle } from \"@/styles/tokens\";\nimport type {\n XAdkProviderProps,\n XAdkProviderHandle,\n XAdkProviderConfig,\n} from \"@/types/XAdkProvider\";\nimport type { ChatHookResult } from \"@/types/ChatHook\";\nimport {\n mergeChatStrategies,\n resolvePresetUploadRequest,\n} from \"@/presets/xGroupAdk\";\n\n/**\n * XAdkProvider Props (扩展版)\n *\n * 支持两种使用方式:\n * 1. 标准协议: 提供 url/token/config,使用内置 useADKChat\n * 2. 自定义协议: 提供 chatData,使用自己的 Hook\n */\nexport interface XAdkProviderPropsExtended extends Omit<\n XAdkProviderProps,\n \"url\" | \"token\" | \"config\"\n> {\n /**\n * 选项 A: 使用标准协议 (内置 useADKChat)\n */\n url?: string;\n token: string;\n config?: XAdkProviderConfig;\n\n /**\n * 选项 B: 使用自定义 Hook 数据\n * 如果提供此参数,将忽略 url/token/config\n *\n * @example\n * // GraphQL 协议\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n *\n * @example\n * // WebSocket 协议\n * const chatData = useWebSocketChat({ url: 'ws://...' });\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n */\n chatData?: ChatHookResult;\n\n children: React.ReactNode;\n}\n\n/**\n * XAdkProvider - AI 聊天 SDK 核心 Provider\n *\n * 采用 Compound Components 架构:\n * - 只负责数据和状态管理\n * - 不包含 UI 布局\n * - 通过 Context 向子组件提供数据\n * - 支持完全自定义的组件组合\n * - 支持协议解耦,可使用自定义 Hook\n *\n * @example\n * // 基础用法 - 标准协议\n * <XAdkProvider url=\"...\" token=\"...\" config={...}>\n * <XAdkProvider.Chatbot />\n * </XAdkProvider>\n *\n * @example\n * // 自定义协议 - GraphQL\n * function App() {\n * const chatData = useMyGraphQLChat({ endpoint: '...' });\n * return (\n * <XAdkProvider chatData={chatData}>\n * <XAdkProvider.DefaultLayout />\n * </XAdkProvider>\n * );\n * }\n *\n * @example\n * // 自定义布局\n * <XAdkProvider url=\"...\" token=\"...\">\n * <div style={{ display: 'flex' }}>\n * <XAdkProvider.Sidebar />\n * <div>\n * <XAdkProvider.Messages />\n * <XAdkProvider.Sender />\n * </div>\n * </div>\n * </XAdkProvider>\n */\nconst XAdkProviderComponent = forwardRef<\n XAdkProviderHandle,\n XAdkProviderPropsExtended\n>(\n (\n {\n url = window.location.origin,\n token,\n config,\n preset,\n strategies,\n chatData, // 自定义 Hook 数据\n providerId = \"defaultId\",\n onSuccess,\n onError,\n onMessage,\n onStream,\n children,\n },\n ref,\n ) => {\n const mergedStrategies = useMemo(\n () =>\n mergeChatStrategies(\n preset ?? config?.preset,\n {\n ...config?.strategies,\n ...strategies,\n },\n ),\n [preset, strategies, config?.preset, config?.strategies],\n );\n\n // 内置 Hook 数据 (仅在没有提供 chatData 时调用)\n const internalData = useADKChat({\n url,\n token: token || \"\",\n config: config || {},\n strategies: mergedStrategies,\n onError,\n onSuccess,\n onMessage,\n onStream,\n // 仅在提供了 url 和 token 时才初始化\n enabled: !chatData && !!url && !!token,\n });\n\n // 使用外部数据或内部数据\n const data = chatData || internalData;\n\n // 解构数据\n const {\n appInfo,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n confirmFnCall,\n deleteSession,\n updateSession,\n currentSessionId,\n sessionPagination,\n sessionList,\n messages,\n loading,\n prologue,\n suggestions,\n initialized,\n setCurrentSession,\n setMessages,\n likeMessage = async () => false,\n setStateDelta = () => {},\n } = data;\n\n const showFeedback = config?.showFeedback ?? true;\n const onFileClick = config?.onFileClick;\n const presetUploadRequest = useMemo(\n () =>\n resolvePresetUploadRequest(preset ?? config?.preset, {\n url,\n token,\n appNo: config?.appNo,\n }),\n [preset, config?.preset, url, token, config?.appNo],\n );\n const uploadRequest = config?.uploadRequest ?? presetUploadRequest;\n\n // 暴露 API 给 ref\n useImperativeHandle(\n ref,\n () => ({\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n getSessions: () => sessionList,\n setMessages,\n setCurrentSession,\n setStateDelta,\n }),\n [\n appInfo,\n messages,\n sessionList,\n startChat,\n stopChat,\n reChat,\n clearChat,\n suggestChat,\n deleteSession,\n updateSession,\n setMessages,\n setCurrentSession,\n setStateDelta,\n ],\n );\n\n // 状态 Context Value - 使用 useMemo 避免不必要的 rerender\n const chatStateValue = useMemo(\n () => ({\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n url,\n token,\n showFeedback,\n onFileClick,\n uploadRequest,\n strategies: mergedStrategies,\n }),\n [\n messages,\n loading,\n currentSessionId,\n prologue,\n suggestions,\n appInfo,\n initialized,\n showFeedback,\n onFileClick,\n uploadRequest,\n mergedStrategies,\n ],\n );\n\n // 动作 Context Value - 函数引用稳定,不需要每次都创建新对象\n const chatActionValue = useMemo(\n () => ({\n chat: startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n likeMessage,\n setStateDelta,\n }),\n [\n startChat,\n stopChat,\n clearChat,\n reChat,\n suggestChat,\n confirmFnCall,\n setMessages,\n likeMessage,\n setStateDelta,\n ],\n );\n\n // 会话 Context Value\n const sessionValue = useMemo(\n () => ({\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSession,\n }),\n [\n sessionList,\n sessionPagination,\n deleteSession,\n updateSession,\n setCurrentSession,\n ],\n );\n\n return (\n <ConfigProvider\n theme={{\n token: {\n colorPrimary: appInfo?.appTheme || primaryBlue,\n },\n }}\n >\n <XProvider>\n <ChatStateContext.Provider value={chatStateValue}>\n <ChatActionContext.Provider value={chatActionValue}>\n <SessionContext.Provider value={sessionValue}>\n <div\n style={{\n ...cssVarStyle,\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n position: \"relative\",\n } as React.CSSProperties}\n >\n {children}\n </div>\n </SessionContext.Provider>\n </ChatActionContext.Provider>\n </ChatStateContext.Provider>\n </XProvider>\n </ConfigProvider>\n );\n },\n);\n\nXAdkProviderComponent.displayName = \"XAdkProvider\";\n\n// 导入 Compound Components\nimport Header from \"./compound/Header\";\nimport Sidebar from \"./compound/Sidebar\";\nimport Messages from \"./compound/Messages\";\nimport Sender from \"./compound/Sender\";\nimport Chatbot from \"./compound/Chatbot\";\nimport Welcome from \"./compound/Welcome\";\nimport DefaultLayout from \"./compound/DefaultLayout\";\n\n// 导出时会挂载 Compound Components\nconst XAdkProvider = XAdkProviderComponent as typeof XAdkProviderComponent & {\n Header: typeof Header;\n Sidebar: typeof Sidebar;\n Messages: typeof Messages;\n Sender: typeof Sender;\n Chatbot: typeof Chatbot;\n Welcome: typeof Welcome;\n DefaultLayout: typeof DefaultLayout;\n};\n\n// 挂载 Compound Components\nXAdkProvider.Header = Header;\nXAdkProvider.Sidebar = Sidebar;\nXAdkProvider.Messages = Messages;\nXAdkProvider.Sender = Sender;\nXAdkProvider.Chatbot = Chatbot;\nXAdkProvider.DefaultLayout = DefaultLayout;\nXAdkProvider.Welcome = Welcome;\n\nexport default XAdkProvider;\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useState, useEffect } from "react";
3
- import { CheckCircleFilled, SyncOutlined, ThunderboltOutlined, PartitionOutlined, RightOutlined, DownOutlined } from "@ant-design/icons";
3
+ import { CheckCircleFilled, CloseCircleFilled, ClockCircleOutlined, SyncOutlined, ThunderboltOutlined, PartitionOutlined, RightOutlined, DownOutlined } from "@ant-design/icons";
4
4
  import MarkdownRender from "../XAdkChatbot/components/MarkdownRender";
5
5
  import FunctionCallRender from "../XAdkChatbot/components/FunctionCallRender";
6
6
  import { useStyles } from "./styles";
@@ -117,36 +117,110 @@ var TimelineToolItem = function TimelineToolItem(_ref3) {
117
117
  })]
118
118
  });
119
119
  };
120
- var XAdkThoughtChain = function XAdkThoughtChain(_ref4) {
121
- var _ref4$defaultOpen = _ref4.defaultOpen,
122
- defaultOpen = _ref4$defaultOpen === void 0 ? false : _ref4$defaultOpen,
123
- _ref4$showFnCallDetai = _ref4.showFnCallDetail,
124
- showFnCallDetail = _ref4$showFnCallDetai === void 0 ? false : _ref4$showFnCallDetai,
125
- _ref4$title = _ref4.title,
126
- title = _ref4$title === void 0 ? "思维链已完成" : _ref4$title,
127
- _ref4$items = _ref4.items,
128
- items = _ref4$items === void 0 ? [] : _ref4$items,
129
- loading = _ref4.loading,
130
- _ref4$blink = _ref4.blink,
131
- blink = _ref4$blink === void 0 ? false : _ref4$blink,
132
- onConfirm = _ref4.onConfirm,
133
- renderFunctionCall = _ref4.renderFunctionCall,
134
- _ref4$toolKindResolve = _ref4.toolKindResolver,
135
- toolKindResolver = _ref4$toolKindResolve === void 0 ? defaultToolKindResolver : _ref4$toolKindResolve,
136
- strategies = _ref4.strategies;
120
+ var StatusIcon = function StatusIcon(_ref4) {
121
+ var status = _ref4.status;
122
+ switch (status) {
123
+ case "loading":
124
+ return /*#__PURE__*/_jsx(SyncOutlined, {
125
+ spin: true,
126
+ style: {
127
+ color: "#1677ff"
128
+ }
129
+ });
130
+ case "success":
131
+ return /*#__PURE__*/_jsx(CheckCircleFilled, {
132
+ style: {
133
+ color: "#52c41a"
134
+ }
135
+ });
136
+ case "error":
137
+ return /*#__PURE__*/_jsx(CloseCircleFilled, {
138
+ style: {
139
+ color: "#ff4d4f"
140
+ }
141
+ });
142
+ case "pending":
143
+ return /*#__PURE__*/_jsx(ClockCircleOutlined, {
144
+ style: {
145
+ color: "#8c8c8c"
146
+ }
147
+ });
148
+ }
149
+ };
150
+ var XAdkThoughtChain = function XAdkThoughtChain(_ref5) {
151
+ var _ref5$collapsible = _ref5.collapsible,
152
+ showCollapsibleHeader = _ref5$collapsible === void 0 ? false : _ref5$collapsible,
153
+ status = _ref5.status,
154
+ className = _ref5.className,
155
+ style = _ref5.style,
156
+ _ref5$defaultOpen = _ref5.defaultOpen,
157
+ defaultOpen = _ref5$defaultOpen === void 0 ? false : _ref5$defaultOpen,
158
+ _ref5$showFnCallDetai = _ref5.showFnCallDetail,
159
+ showFnCallDetail = _ref5$showFnCallDetai === void 0 ? false : _ref5$showFnCallDetai,
160
+ _ref5$title = _ref5.title,
161
+ title = _ref5$title === void 0 ? "思维链已完成" : _ref5$title,
162
+ _ref5$items = _ref5.items,
163
+ items = _ref5$items === void 0 ? [] : _ref5$items,
164
+ loading = _ref5.loading,
165
+ _ref5$blink = _ref5.blink,
166
+ blink = _ref5$blink === void 0 ? false : _ref5$blink,
167
+ onConfirm = _ref5.onConfirm,
168
+ renderFunctionCall = _ref5.renderFunctionCall,
169
+ _ref5$toolKindResolve = _ref5.toolKindResolver,
170
+ toolKindResolver = _ref5$toolKindResolve === void 0 ? defaultToolKindResolver : _ref5$toolKindResolve,
171
+ strategies = _ref5.strategies;
137
172
  var styles = useStyles();
173
+
174
+ // status 优先,loading 向后兼容
175
+ var effectiveStatus = status !== null && status !== void 0 ? status : loading ? "loading" : "success";
176
+ var isLoading = effectiveStatus === "loading";
138
177
  var _useState3 = useState(defaultOpen),
139
178
  _useState4 = _slicedToArray(_useState3, 2),
140
179
  isOpen = _useState4[0],
141
180
  setIsOpen = _useState4[1];
142
181
  useEffect(function () {
143
- if (loading) Promise.resolve().then(function () {
182
+ if (isLoading) Promise.resolve().then(function () {
144
183
  return setIsOpen(true);
145
184
  });
146
- }, [loading]);
147
- var shouldBlink = blink && loading;
185
+ }, [isLoading]);
186
+ var shouldBlink = blink && isLoading;
187
+ var renderTimeline = function renderTimeline() {
188
+ return /*#__PURE__*/_jsx("div", {
189
+ className: styles.timeline,
190
+ children: items.map(function (item, i) {
191
+ return item.type === "text" ? /*#__PURE__*/_jsx(TimelineTextItem, {
192
+ item: item,
193
+ blink: shouldBlink
194
+ }, item.key || i) : /*#__PURE__*/_jsx(TimelineToolItem, {
195
+ msg: item.msg,
196
+ collapsible: item.collapsible,
197
+ showFnCallDetail: showFnCallDetail,
198
+ onConfirm: onConfirm,
199
+ blink: shouldBlink,
200
+ renderFunctionCall: renderFunctionCall,
201
+ toolKindResolver: toolKindResolver,
202
+ strategies: strategies
203
+ }, "tool-".concat(item.key || i));
204
+ })
205
+ });
206
+ };
207
+
208
+ // 不显示外层 header,直接渲染 timeline
209
+ if (!showCollapsibleHeader) {
210
+ return /*#__PURE__*/_jsx("div", {
211
+ className: "".concat(styles.thoughtChainBlock).concat(className ? " ".concat(className) : ""),
212
+ style: style,
213
+ children: /*#__PURE__*/_jsx("div", {
214
+ className: styles.thinkingBody,
215
+ children: renderTimeline()
216
+ })
217
+ });
218
+ }
219
+
220
+ // 显示可折叠 header
148
221
  return /*#__PURE__*/_jsxs("div", {
149
- className: styles.thoughtChainBlock,
222
+ className: "".concat(styles.thoughtChainBlock).concat(className ? " ".concat(className) : ""),
223
+ style: style,
150
224
  children: [/*#__PURE__*/_jsx("div", {
151
225
  className: styles.thoughtHeader,
152
226
  onClick: function onClick() {
@@ -156,19 +230,12 @@ var XAdkThoughtChain = function XAdkThoughtChain(_ref4) {
156
230
  className: styles.headerLeft,
157
231
  children: [/*#__PURE__*/_jsx("div", {
158
232
  className: styles.statusIcon,
159
- children: loading ? /*#__PURE__*/_jsx(SyncOutlined, {
160
- spin: true,
161
- style: {
162
- color: "#1677ff"
163
- }
164
- }) : /*#__PURE__*/_jsx(CheckCircleFilled, {
165
- style: {
166
- color: "#52c41a"
167
- }
233
+ children: /*#__PURE__*/_jsx(StatusIcon, {
234
+ status: effectiveStatus
168
235
  })
169
236
  }), /*#__PURE__*/_jsx("span", {
170
237
  className: "".concat(styles.headerTitle).concat(shouldBlink ? " ".concat(styles.blink) : ""),
171
- children: loading ? "深度思考与执行中..." : title
238
+ children: isLoading ? "深度思考与执行中..." : title
172
239
  }), /*#__PURE__*/_jsx("div", {
173
240
  className: "".concat(styles.caret, " ").concat(isOpen ? "open" : ""),
174
241
  children: /*#__PURE__*/_jsx(RightOutlined, {})
@@ -176,24 +243,7 @@ var XAdkThoughtChain = function XAdkThoughtChain(_ref4) {
176
243
  })
177
244
  }), isOpen && /*#__PURE__*/_jsx("div", {
178
245
  className: styles.thinkingBody,
179
- children: /*#__PURE__*/_jsx("div", {
180
- className: styles.timeline,
181
- children: items.map(function (item, i) {
182
- return item.type === "text" ? /*#__PURE__*/_jsx(TimelineTextItem, {
183
- item: item,
184
- blink: shouldBlink
185
- }, item.key || i) : /*#__PURE__*/_jsx(TimelineToolItem, {
186
- msg: item.msg,
187
- collapsible: item.collapsible,
188
- showFnCallDetail: showFnCallDetail,
189
- onConfirm: onConfirm,
190
- blink: shouldBlink,
191
- renderFunctionCall: renderFunctionCall,
192
- toolKindResolver: toolKindResolver,
193
- strategies: strategies
194
- }, "tool-".concat(item.key || i));
195
- })
196
- })
246
+ children: renderTimeline()
197
247
  })]
198
248
  });
199
249
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","CheckCircleFilled","SyncOutlined","ThunderboltOutlined","PartitionOutlined","RightOutlined","DownOutlined","MarkdownRender","FunctionCallRender","useStyles","defaultToolKindResolver","cleanProcessText","jsx","_jsx","jsxs","_jsxs","TimelineItem","_ref","icon","title","children","_ref$collapsible","collapsible","_ref$defaultOpen","defaultOpen","blink","_useState","_useState2","_slicedToArray","isOpen","setIsOpen","styles","className","timelineItem","timelineLeft","timelineConnector","timelineRight","collapsibleHeader","onClick","undefined","arrowIcon","stepContent","TimelineTextItem","_ref2","item","timelineIcon","titleText","text","content","TimelineToolItem","_ref3","_msg$functionCall","_msg$functionCall2","_msg$functionCall3","_msg$functionResponse","_msg$functionResponse2","_renderFunctionCall","msg","onConfirm","showFnCallDetail","renderFunctionCall","toolKindResolver","strategies","fnName","functionCall","name","kind","needsConfirm","functionResponse","isDone","toolName","args","componentName","statusInfo","response","processData","output","titleNode","toolTitleGroup","toolStatusTag","timelineIconTool","showDetail","renderApproval","renderHandoff","XAdkThoughtChain","_ref4","_ref4$defaultOpen","_ref4$showFnCallDetai","_ref4$title","_ref4$items","items","loading","_ref4$blink","_ref4$toolKindResolve","_useState3","_useState4","Promise","resolve","then","shouldBlink","thoughtChainBlock","thoughtHeader","headerLeft","statusIcon","spin","style","color","concat","headerTitle","caret","thinkingBody","timeline","map","i","type","key"],"sources":["../../../../src/components/XAdkThoughtChain/index.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport {\n CheckCircleFilled,\n SyncOutlined,\n ThunderboltOutlined,\n PartitionOutlined,\n RightOutlined,\n DownOutlined,\n} from \"@ant-design/icons\";\nimport MarkdownRender from \"@/components/XAdkChatbot/components/MarkdownRender\";\nimport FunctionCallRender from \"@/components/XAdkChatbot/components/FunctionCallRender\";\nimport { useStyles } from \"./styles\";\nimport {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n TimelineItemProps,\n FunctionCall,\n IMessage,\n RenderFunctionCall,\n ToolRenderKind,\n} from \"@/types\";\nimport { defaultToolKindResolver } from \"@/types/FunctionCallRender\";\nimport { cleanProcessText } from \"@/utils\";\n\nconst TimelineItem = ({\n icon,\n title,\n children,\n collapsible = true,\n defaultOpen = true,\n blink,\n}: TimelineItemProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const styles = useStyles();\n\n return (\n <div className={styles.timelineItem}>\n <div className={styles.timelineLeft}>\n {icon}\n <div className={styles.timelineConnector} />\n </div>\n <div className={styles.timelineRight}>\n <div\n className={styles.collapsibleHeader}\n onClick={() => (collapsible ? setIsOpen(!isOpen) : undefined)}\n >\n <div className={blink ? styles.blink : undefined}>{title}</div>\n {collapsible && (\n <span className={styles.arrowIcon}>\n {isOpen ? <DownOutlined /> : <RightOutlined />}\n </span>\n )}\n </div>\n\n {isOpen && <div className={styles.stepContent}>{children}</div>}\n </div>\n </div>\n );\n};\n\nconst TimelineTextItem: React.FC<{\n item: ThoughtChainItemType;\n blink?: boolean;\n}> = ({ item, blink }) => {\n return (\n <TimelineItem\n icon={\n <span className={useStyles().timelineIcon}>\n <PartitionOutlined />\n </span>\n }\n title={<span className={useStyles().titleText}>{item.title}</span>}\n blink={blink}\n >\n <MarkdownRender text={cleanProcessText(item.content)} />\n </TimelineItem>\n );\n};\n\nconst TimelineToolItem: React.FC<{\n msg: IMessage;\n collapsible?: boolean;\n showFnCallDetail: boolean;\n onConfirm?: (fnCall: FunctionCall, confirmed: boolean) => void;\n blink?: boolean;\n renderFunctionCall?: RenderFunctionCall;\n toolKindResolver: (name: string | undefined) => ToolRenderKind;\n strategies?: XAdkThoughtChainProps[\"strategies\"];\n}> = ({\n msg,\n collapsible,\n onConfirm,\n showFnCallDetail,\n blink,\n renderFunctionCall,\n toolKindResolver,\n strategies,\n}) => {\n const styles = useStyles();\n const fnName = msg.functionCall?.name;\n const kind = toolKindResolver(fnName);\n const needsConfirm = msg.functionCall && !msg.functionResponse;\n const isDone = !!msg.functionResponse;\n\n const toolName =\n msg.functionCall?.args?.componentName ||\n msg.functionCall?.name ||\n \"组件执行\";\n\n const statusInfo =\n msg.functionResponse?.response?.processData ||\n msg.functionResponse?.response?.output;\n\n const titleNode = (\n <div className={styles.toolTitleGroup}>\n <span className={styles.toolName}>{toolName}</span>\n {isDone && <span className={styles.toolStatusTag}>执行成功</span>}\n </div>\n );\n\n return (\n <TimelineItem\n icon={\n <span className={styles.timelineIconTool}>\n <ThunderboltOutlined />\n </span>\n }\n title={titleNode}\n collapsible={collapsible}\n defaultOpen={needsConfirm}\n blink={blink}\n >\n {statusInfo && typeof statusInfo === \"string\" && (\n <div className={styles.statusInfo}>{statusInfo}</div>\n )}\n {renderFunctionCall?.(msg) ?? (\n <FunctionCallRender\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n kind={kind}\n renderApproval={strategies?.renderApproval}\n renderHandoff={strategies?.renderHandoff}\n />\n )}\n </TimelineItem>\n );\n};\n\nconst XAdkThoughtChain: React.FC<XAdkThoughtChainProps> = ({\n defaultOpen = false,\n showFnCallDetail = false,\n title = \"思维链已完成\",\n items = [],\n loading,\n blink = false,\n onConfirm,\n renderFunctionCall,\n toolKindResolver = defaultToolKindResolver,\n strategies,\n}) => {\n const styles = useStyles();\n const [isOpen, setIsOpen] = useState(defaultOpen);\n useEffect(() => {\n if (loading) Promise.resolve().then(() => setIsOpen(true));\n }, [loading]);\n\n const shouldBlink = blink && loading;\n\n return (\n <div className={styles.thoughtChainBlock}>\n <div className={styles.thoughtHeader} onClick={() => setIsOpen(!isOpen)}>\n <div className={styles.headerLeft}>\n <div className={styles.statusIcon}>\n {loading ? (\n <SyncOutlined spin style={{ color: \"#1677ff\" }} />\n ) : (\n <CheckCircleFilled style={{ color: \"#52c41a\" }} />\n )}\n </div>\n <span\n className={`${styles.headerTitle}${shouldBlink ? ` ${styles.blink}` : \"\"}`}\n >\n {loading ? \"深度思考与执行中...\" : title}\n </span>\n <div className={`${styles.caret} ${isOpen ? \"open\" : \"\"}`}>\n <RightOutlined />\n </div>\n </div>\n </div>\n {isOpen && (\n <div className={styles.thinkingBody}>\n <div className={styles.timeline}>\n {items.map((item, i) =>\n item.type === \"text\" ? (\n <TimelineTextItem\n key={item.key || i}\n item={item}\n blink={shouldBlink}\n />\n ) : (\n <TimelineToolItem\n key={`tool-${item.key || i}`}\n msg={item.msg!}\n collapsible={item.collapsible}\n showFnCallDetail={showFnCallDetail}\n onConfirm={onConfirm}\n blink={shouldBlink}\n renderFunctionCall={renderFunctionCall}\n toolKindResolver={toolKindResolver}\n strategies={strategies}\n />\n ),\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default XAdkThoughtChain;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","useEffect","CheckCircleFilled","CloseCircleFilled","ClockCircleOutlined","SyncOutlined","ThunderboltOutlined","PartitionOutlined","RightOutlined","DownOutlined","MarkdownRender","FunctionCallRender","useStyles","defaultToolKindResolver","cleanProcessText","jsx","_jsx","jsxs","_jsxs","TimelineItem","_ref","icon","title","children","_ref$collapsible","collapsible","_ref$defaultOpen","defaultOpen","blink","_useState","_useState2","_slicedToArray","isOpen","setIsOpen","styles","className","timelineItem","timelineLeft","timelineConnector","timelineRight","collapsibleHeader","onClick","undefined","arrowIcon","stepContent","TimelineTextItem","_ref2","item","timelineIcon","titleText","text","content","TimelineToolItem","_ref3","_msg$functionCall","_msg$functionCall2","_msg$functionCall3","_msg$functionResponse","_msg$functionResponse2","_renderFunctionCall","msg","onConfirm","showFnCallDetail","renderFunctionCall","toolKindResolver","strategies","fnName","functionCall","name","kind","needsConfirm","functionResponse","isDone","toolName","args","componentName","statusInfo","response","processData","output","titleNode","toolTitleGroup","toolStatusTag","timelineIconTool","showDetail","renderApproval","renderHandoff","StatusIcon","_ref4","status","spin","style","color","XAdkThoughtChain","_ref5","_ref5$collapsible","showCollapsibleHeader","_ref5$defaultOpen","_ref5$showFnCallDetai","_ref5$title","_ref5$items","items","loading","_ref5$blink","_ref5$toolKindResolve","effectiveStatus","isLoading","_useState3","_useState4","Promise","resolve","then","shouldBlink","renderTimeline","timeline","map","i","type","key","concat","thoughtChainBlock","thinkingBody","thoughtHeader","headerLeft","statusIcon","headerTitle","caret"],"sources":["../../../../src/components/XAdkThoughtChain/index.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport {\n CheckCircleFilled,\n CloseCircleFilled,\n ClockCircleOutlined,\n SyncOutlined,\n ThunderboltOutlined,\n PartitionOutlined,\n RightOutlined,\n DownOutlined,\n} from \"@ant-design/icons\";\nimport MarkdownRender from \"@/components/XAdkChatbot/components/MarkdownRender\";\nimport FunctionCallRender from \"@/components/XAdkChatbot/components/FunctionCallRender\";\nimport { useStyles } from \"./styles\";\nimport {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n ThoughtChainStatus,\n TimelineItemProps,\n FunctionCall,\n IMessage,\n RenderFunctionCall,\n ToolRenderKind,\n} from \"@/types\";\nimport { defaultToolKindResolver } from \"@/types/FunctionCallRender\";\nimport { cleanProcessText } from \"@/utils\";\n\nconst TimelineItem = ({\n icon,\n title,\n children,\n collapsible = true,\n defaultOpen = true,\n blink,\n}: TimelineItemProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const styles = useStyles();\n\n return (\n <div className={styles.timelineItem}>\n <div className={styles.timelineLeft}>\n {icon}\n <div className={styles.timelineConnector} />\n </div>\n <div className={styles.timelineRight}>\n <div\n className={styles.collapsibleHeader}\n onClick={() => (collapsible ? setIsOpen(!isOpen) : undefined)}\n >\n <div className={blink ? styles.blink : undefined}>{title}</div>\n {collapsible && (\n <span className={styles.arrowIcon}>\n {isOpen ? <DownOutlined /> : <RightOutlined />}\n </span>\n )}\n </div>\n\n {isOpen && <div className={styles.stepContent}>{children}</div>}\n </div>\n </div>\n );\n};\n\nconst TimelineTextItem: React.FC<{\n item: ThoughtChainItemType;\n blink?: boolean;\n}> = ({ item, blink }) => {\n return (\n <TimelineItem\n icon={\n <span className={useStyles().timelineIcon}>\n <PartitionOutlined />\n </span>\n }\n title={<span className={useStyles().titleText}>{item.title}</span>}\n blink={blink}\n >\n <MarkdownRender text={cleanProcessText(item.content)} />\n </TimelineItem>\n );\n};\n\nconst TimelineToolItem: React.FC<{\n msg: IMessage;\n collapsible?: boolean;\n showFnCallDetail: boolean;\n onConfirm?: (fnCall: FunctionCall, confirmed: boolean) => void;\n blink?: boolean;\n renderFunctionCall?: RenderFunctionCall;\n toolKindResolver: (name: string | undefined) => ToolRenderKind;\n strategies?: XAdkThoughtChainProps[\"strategies\"];\n}> = ({\n msg,\n collapsible,\n onConfirm,\n showFnCallDetail,\n blink,\n renderFunctionCall,\n toolKindResolver,\n strategies,\n}) => {\n const styles = useStyles();\n const fnName = msg.functionCall?.name;\n const kind = toolKindResolver(fnName);\n const needsConfirm = msg.functionCall && !msg.functionResponse;\n const isDone = !!msg.functionResponse;\n\n const toolName =\n msg.functionCall?.args?.componentName ||\n msg.functionCall?.name ||\n \"组件执行\";\n\n const statusInfo =\n msg.functionResponse?.response?.processData ||\n msg.functionResponse?.response?.output;\n\n const titleNode = (\n <div className={styles.toolTitleGroup}>\n <span className={styles.toolName}>{toolName}</span>\n {isDone && <span className={styles.toolStatusTag}>执行成功</span>}\n </div>\n );\n\n return (\n <TimelineItem\n icon={\n <span className={styles.timelineIconTool}>\n <ThunderboltOutlined />\n </span>\n }\n title={titleNode}\n collapsible={collapsible}\n defaultOpen={needsConfirm}\n blink={blink}\n >\n {statusInfo && typeof statusInfo === \"string\" && (\n <div className={styles.statusInfo}>{statusInfo}</div>\n )}\n {renderFunctionCall?.(msg) ?? (\n <FunctionCallRender\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n kind={kind}\n renderApproval={strategies?.renderApproval}\n renderHandoff={strategies?.renderHandoff}\n />\n )}\n </TimelineItem>\n );\n};\n\nconst StatusIcon: React.FC<{ status: ThoughtChainStatus }> = ({ status }) => {\n switch (status) {\n case \"loading\":\n return <SyncOutlined spin style={{ color: \"#1677ff\" }} />;\n case \"success\":\n return <CheckCircleFilled style={{ color: \"#52c41a\" }} />;\n case \"error\":\n return <CloseCircleFilled style={{ color: \"#ff4d4f\" }} />;\n case \"pending\":\n return <ClockCircleOutlined style={{ color: \"#8c8c8c\" }} />;\n }\n};\n\nconst XAdkThoughtChain: React.FC<XAdkThoughtChainProps> = ({\n collapsible: showCollapsibleHeader = false,\n status,\n className,\n style,\n defaultOpen = false,\n showFnCallDetail = false,\n title = \"思维链已完成\",\n items = [],\n loading,\n blink = false,\n onConfirm,\n renderFunctionCall,\n toolKindResolver = defaultToolKindResolver,\n strategies,\n}) => {\n const styles = useStyles();\n\n // status 优先,loading 向后兼容\n const effectiveStatus: ThoughtChainStatus =\n status ?? (loading ? \"loading\" : \"success\");\n const isLoading = effectiveStatus === \"loading\";\n\n const [isOpen, setIsOpen] = useState(defaultOpen);\n useEffect(() => {\n if (isLoading) Promise.resolve().then(() => setIsOpen(true));\n }, [isLoading]);\n\n const shouldBlink = blink && isLoading;\n\n const renderTimeline = () => (\n <div className={styles.timeline}>\n {items.map((item, i) =>\n item.type === \"text\" ? (\n <TimelineTextItem\n key={item.key || i}\n item={item}\n blink={shouldBlink}\n />\n ) : (\n <TimelineToolItem\n key={`tool-${item.key || i}`}\n msg={item.msg!}\n collapsible={item.collapsible}\n showFnCallDetail={showFnCallDetail}\n onConfirm={onConfirm}\n blink={shouldBlink}\n renderFunctionCall={renderFunctionCall}\n toolKindResolver={toolKindResolver}\n strategies={strategies}\n />\n ),\n )}\n </div>\n );\n\n // 不显示外层 header,直接渲染 timeline\n if (!showCollapsibleHeader) {\n return (\n <div\n className={`${styles.thoughtChainBlock}${className ? ` ${className}` : \"\"}`}\n style={style}\n >\n <div className={styles.thinkingBody}>{renderTimeline()}</div>\n </div>\n );\n }\n\n // 显示可折叠 header\n return (\n <div\n className={`${styles.thoughtChainBlock}${className ? ` ${className}` : \"\"}`}\n style={style}\n >\n <div className={styles.thoughtHeader} onClick={() => setIsOpen(!isOpen)}>\n <div className={styles.headerLeft}>\n <div className={styles.statusIcon}>\n <StatusIcon status={effectiveStatus} />\n </div>\n <span\n className={`${styles.headerTitle}${shouldBlink ? ` ${styles.blink}` : \"\"}`}\n >\n {isLoading ? \"深度思考与执行中...\" : title}\n </span>\n <div className={`${styles.caret} ${isOpen ? \"open\" : \"\"}`}>\n <RightOutlined />\n </div>\n </div>\n </div>\n {isOpen && (\n <div className={styles.thinkingBody}>{renderTimeline()}</div>\n )}\n </div>\n );\n};\n\nexport default XAdkThoughtChain;\n"],"mappings":"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"}
@@ -3,39 +3,40 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
3
3
  /* eslint-disable import/prefer-default-export */
4
4
  import { css, keyframes } from "@emotion/css";
5
5
  import { withBasicStyles } from "../../styles/common";
6
+ import { token, tokens } from "../../styles/tokens";
6
7
  var blinkAnimation = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 0% { background-position-x: -200%; background-position-y: 100%; }\n 25% { background-position-x: -100%; background-position-y: 100%; }\n 50% { background-position-x: 0%; background-position-y: 100%; }\n 75% { background-position-x: 100%; background-position-y: 100%; }\n 100% { background-position-x: 200%; background-position-y: 100%; }\n"])));
7
8
  export var useStyles = withBasicStyles(function () {
8
9
  return {
9
10
  /* --- ThoughtChain --- */
10
11
 
11
- thoughtChainBlock: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n margin-bottom: 16px;\n border-radius: 8px;\n overflow: hidden;\n "]))),
12
- thoughtHeader: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n padding: 10px 14px;\n cursor: pointer;\n user-select: none;\n transition: background 0.2s;\n &:hover {\n background: #f0f0f0;\n border-color: #ccc;\n }\n "]))),
13
- headerLeft: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n "]))),
14
- caret: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #8194ad;\n transition: transform 0.2s;\n &.open {\n transform: rotate(90deg);\n }\n "]))),
12
+ thoughtChainBlock: css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n margin-bottom: ", ";\n border-radius: ", ";\n overflow: hidden;\n "])), token(tokens.spacingMd), token(tokens.borderRadius)),
13
+ thoughtHeader: css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n padding: 10px 14px;\n cursor: pointer;\n user-select: none;\n transition: background 0.2s;\n &:hover {\n background: ", ";\n border-color: #ccc;\n }\n "])), token(tokens.colorBgHover)),
14
+ headerLeft: css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: ", ";\n "])), token(tokens.spacingSm)),
15
+ caret: css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n font-size: ", ";\n color: ", ";\n transition: transform 0.2s;\n &.open {\n transform: rotate(90deg);\n }\n "])), token(tokens.fontSizeSm), token(tokens.colorTextSecondary)),
15
16
  statusIcon: css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n font-size: 14px;\n display: flex;\n align-items: center;\n "]))),
16
- headerTitle: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: #8194ad;\n font-weight: 500;\n "]))),
17
+ headerTitle: css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n font-size: ", ";\n color: ", ";\n font-weight: 500;\n "])), token(tokens.fontSizeBase), token(tokens.colorTextSecondary)),
17
18
  headerRight: css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([""]))),
18
- thinkingBody: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n padding: 0 16px;\n animation: fadeIn 0.2s ease-in-out;\n "]))),
19
+ thinkingBody: css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n padding: 0 ", ";\n animation: fadeIn 0.2s ease-in-out;\n "])), token(tokens.spacingMd)),
19
20
  /* --- Timeline --- */
20
21
 
21
22
  timeline: css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n width: 100%;\n "]))),
22
23
  timelineItem: css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n display: flex;\n gap: 12px;\n position: relative;\n "]))),
23
24
  timelineLeft: css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 20px;\n flex-shrink: 0;\n "]))),
24
- timelineIcon: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n color: #8194ad;\n font-size: 16px;\n margin-top: 6px;\n "]))),
25
- timelineIconTool: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n color: #faad14;\n font-size: 16px;\n margin-top: 6px;\n "]))),
26
- timelineConnector: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n flex: 1;\n width: 1px;\n background-color: #e5e5e5;\n margin: 4px 0;\n min-height: 12px;\n "]))),
25
+ timelineIcon: css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 16px;\n margin-top: 6px;\n "])), token(tokens.colorTextSecondary)),
26
+ timelineIconTool: css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 16px;\n margin-top: 6px;\n "])), token(tokens.colorWarning)),
27
+ timelineConnector: css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n flex: 1;\n width: 1px;\n background-color: ", ";\n margin: 4px 0;\n min-height: 12px;\n "])), token(tokens.colorBorder)),
27
28
  /* Hide connector on last item */
28
29
  timelineItemLastConnector: css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n display: none;\n "]))),
29
- timelineRight: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n flex: 1;\n padding-bottom: 8px;\n min-width: 0;\n "]))),
30
- collapsibleHeader: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 5px 8px;\n margin: 0 -8px 4px -8px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n user-select: none;\n\n &:hover {\n background: #f5f5f5;\n }\n "]))),
31
- titleText: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n "]))),
32
- toolTitleGroup: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n "]))),
33
- toolName: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n font-size: 13px;\n font-weight: 600;\n color: #8194ad;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n "]))),
34
- toolStatusTag: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: #52c41a;\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n padding: 0 6px;\n border-radius: 4px;\n flex-shrink: 0;\n "]))),
35
- arrowIcon: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n font-size: 10px;\n color: #bbb;\n margin-left: 8px;\n "]))),
36
- stepContent: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n font-size: 13px;\n color: #8194ad;\n line-height: 1.6;\n padding-left: 4px;\n "]))),
37
- statusInfo: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n font-size: 12px;\n color: #8194ad;\n margin-bottom: 4px;\n font-style: italic;\n "]))),
38
- blink: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n color: #8194ad;\n background-image: linear-gradient(\n 90deg,\n transparent,\n rgba(0, 0, 0, 0.88),\n transparent\n );\n background-clip: text;\n -webkit-background-clip: text;\n background-size: 50%;\n background-repeat: no-repeat;\n animation-name: ", ";\n animation-duration: 1s;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n "])), blinkAnimation)
30
+ timelineRight: css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n flex: 1;\n padding-bottom: ", ";\n min-width: 0;\n "])), token(tokens.spacingSm)),
31
+ collapsibleHeader: css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 5px 8px;\n margin: 0 -8px 4px -8px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n user-select: none;\n\n &:hover {\n background: ", ";\n }\n "])), token(tokens.colorBgHover)),
32
+ titleText: css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n font-size: ", ";\n font-weight: 600;\n color: ", ";\n "])), token(tokens.fontSizeBase), token(tokens.colorTextSecondary)),
33
+ toolTitleGroup: css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: ", ";\n overflow: hidden;\n "])), token(tokens.spacingSm)),
34
+ toolName: css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n font-size: ", ";\n font-weight: 600;\n color: ", ";\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n "])), token(tokens.fontSizeBase), token(tokens.colorTextSecondary)),
35
+ toolStatusTag: css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n font-size: 11px;\n color: ", ";\n background: #f6ffed;\n border: 1px solid #b7eb8f;\n padding: 0 6px;\n border-radius: 4px;\n flex-shrink: 0;\n "])), token(tokens.colorSuccess)),
36
+ arrowIcon: css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["\n font-size: 10px;\n color: #bbb;\n margin-left: ", ";\n "])), token(tokens.spacingSm)),
37
+ stepContent: css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["\n font-size: ", ";\n color: ", ";\n line-height: 1.6;\n padding-left: 4px;\n "])), token(tokens.fontSizeBase), token(tokens.colorTextSecondary)),
38
+ statusInfo: css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["\n font-size: ", ";\n color: ", ";\n margin-bottom: 4px;\n font-style: italic;\n "])), token(tokens.fontSizeSm), token(tokens.colorTextSecondary)),
39
+ blink: css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["\n color: ", ";\n background-image: linear-gradient(\n 90deg,\n transparent,\n rgba(0, 0, 0, 0.88),\n transparent\n );\n background-clip: text;\n -webkit-background-clip: text;\n background-size: 50%;\n background-repeat: no-repeat;\n animation-name: ", ";\n animation-duration: 1s;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n animation-fill-mode: forwards;\n "])), token(tokens.colorTextSecondary), blinkAnimation)
39
40
  };
40
41
  });
41
42
  //# sourceMappingURL=styles.js.map