@tencentcloud/chat-uikit-react 3.0.2 → 3.4.2

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 (115) hide show
  1. package/.eslintrc.cjs +5 -4
  2. package/CHANGELOG.md +9 -0
  3. package/debug/GenerateTestUserSig-es.js +26 -0
  4. package/debug/lib-generate-test-usersig-es.min.js +2 -0
  5. package/dist/components/Chat/Chat.d.ts +1 -1
  6. package/dist/components/Chat/Chat.js +18 -23
  7. package/dist/components/ChatHeader/AudioCallPicker/AudioCallPicker.d.ts +30 -0
  8. package/dist/components/ChatHeader/AudioCallPicker/AudioCallPicker.js +135 -0
  9. package/dist/components/ChatHeader/AudioCallPicker/index.d.ts +1 -0
  10. package/dist/components/ChatHeader/AudioCallPicker/index.js +4 -0
  11. package/dist/components/ChatHeader/ChatHeader.d.ts +6 -0
  12. package/dist/components/ChatHeader/ChatHeader.js +43 -41
  13. package/dist/components/ChatHeader/ChatHeaderUI/ChatHeaderUI.d.ts +14 -9
  14. package/dist/components/ChatHeader/ChatHeaderUI/ChatHeaderUI.js +47 -65
  15. package/dist/components/ChatHeader/VideoCallPicker/VideoCallPicker.d.ts +30 -0
  16. package/dist/components/ChatHeader/VideoCallPicker/VideoCallPicker.js +135 -0
  17. package/dist/components/ChatHeader/VideoCallPicker/index.d.ts +1 -0
  18. package/dist/components/ChatHeader/VideoCallPicker/index.js +4 -0
  19. package/dist/components/ChatHeader/index.d.ts +2 -1
  20. package/dist/components/ChatHeader/index.js +4 -2
  21. package/dist/components/Checkbox/index.js +1 -1
  22. package/dist/components/Modal/Modal.js +1 -1
  23. package/dist/components/Model/index.js +1 -1
  24. package/dist/components/Plugins/index.js +1 -1
  25. package/dist/components/Popup/index.js +1 -1
  26. package/dist/components/PopupNew/Popup.js +1 -1
  27. package/dist/components/Profile/Profile.js +20 -22
  28. package/dist/components/Profile/ProfileDefault.d.ts +3 -2
  29. package/dist/components/Profile/ProfileDefault.js +55 -56
  30. package/dist/components/Profile/hooks/useMyProfile.d.ts +2 -3
  31. package/dist/components/Profile/hooks/useMyProfile.js +1 -1
  32. package/dist/components/Profile/myProfile/MyProfile.d.ts +1 -1
  33. package/dist/components/Profile/myProfile/MyProfile.js +12 -16
  34. package/dist/components/index.js +27 -25
  35. package/dist/context/ChatContext.d.ts +1 -1
  36. package/dist/context/ChatContext.js +11 -16
  37. package/dist/context/ContactContext.d.ts +1 -1
  38. package/dist/external_modules/mui-BhvHeL5-.js +2253 -0
  39. package/dist/hooks/index.d.ts +2 -2
  40. package/dist/hooks/index.js +2 -2
  41. package/dist/{states/ChatHeaderState.d.ts → hooks/useChatHeader.d.ts} +6 -6
  42. package/dist/hooks/useChatHeader.js +41 -0
  43. package/dist/index-UBuvRM8r-DTXQB6zV.js +34000 -0
  44. package/dist/index.d.ts +3 -1
  45. package/dist/index.js +93 -4129
  46. package/dist/server/mainServer.js +2 -2
  47. package/dist/states/UIManagerState.d.ts +5 -5
  48. package/dist/states/UIManagerState.js +2 -2
  49. package/dist/states/index.d.ts +0 -1
  50. package/dist/states/index.js +2 -4
  51. package/dist/styles/AudioCallPicker.css +1 -0
  52. package/dist/styles/ChatHeaderUI.css +1 -1
  53. package/dist/styles/VideoCallPicker.css +1 -0
  54. package/dist/styles/index-UBuvRM8r.css +1 -0
  55. package/dist/styles/index.css +1 -1
  56. package/dist/styles/index2.css +1 -1
  57. package/dist/styles/index3.css +1 -1
  58. package/dist/styles/index4.css +1 -1
  59. package/dist/styles/index5.css +1 -1
  60. package/dist/types/message.d.ts +1 -1
  61. package/dist/types/user.d.ts +4 -4
  62. package/package.json +12 -20
  63. package/src/components/ChatHeader/AudioCallPicker/AudioCallPicker.module.scss +57 -0
  64. package/src/components/ChatHeader/AudioCallPicker/AudioCallPicker.tsx +234 -0
  65. package/src/components/ChatHeader/AudioCallPicker/index.ts +1 -0
  66. package/src/components/ChatHeader/ChatHeader.tsx +15 -3
  67. package/src/components/ChatHeader/ChatHeaderUI/ChatHeaderUI.tsx +33 -40
  68. package/src/components/ChatHeader/VideoCallPicker/VideoCallPicker.module.scss +57 -0
  69. package/src/components/ChatHeader/VideoCallPicker/VideoCallPicker.tsx +233 -0
  70. package/src/components/ChatHeader/VideoCallPicker/index.ts +1 -0
  71. package/src/components/ChatHeader/index.ts +2 -1
  72. package/src/components/Profile/Profile.tsx +7 -6
  73. package/src/components/Profile/ProfileDefault.tsx +8 -8
  74. package/src/components/Profile/hooks/useMyProfile.tsx +2 -3
  75. package/src/components/Profile/myProfile/MyProfile.tsx +1 -1
  76. package/src/context/ChatContext.tsx +1 -1
  77. package/src/context/ContactContext.tsx +1 -1
  78. package/src/hooks/index.ts +2 -2
  79. package/src/{states/ChatHeaderState.ts → hooks/useChatHeader.ts} +19 -22
  80. package/src/index.ts +3 -5
  81. package/src/server/mainServer.ts +2 -2
  82. package/src/states/UIManagerState.ts +9 -9
  83. package/src/states/index.ts +0 -2
  84. package/src/styles/index.scss +0 -1
  85. package/src/types/message.ts +1 -1
  86. package/src/types/user.ts +4 -4
  87. package/vite.config.ts +4 -25
  88. package/dist/ChatSetting-BtQwjHr0.js +0 -28525
  89. package/dist/assets/fonts/iconfont.ttf +0 -0
  90. package/dist/assets/fonts/iconfont.woff +0 -0
  91. package/dist/assets/fonts/iconfont.woff2 +0 -0
  92. package/dist/components/ChatHeader/ChatHeaderActions/ChatHeaderActions.d.ts +0 -11
  93. package/dist/components/ChatHeader/ChatHeaderActions/ChatHeaderActions.js +0 -79
  94. package/dist/components/ChatHeader/ChatHeaderActions/index.d.ts +0 -1
  95. package/dist/components/ChatHeader/ChatHeaderActions/index.js +0 -4
  96. package/dist/components/IconFont/Icon.d.ts +0 -21
  97. package/dist/components/IconFont/Icon.js +0 -47
  98. package/dist/components/IconFont/index.d.ts +0 -2
  99. package/dist/components/IconFont/index.js +0 -4
  100. package/dist/external_modules/lodash-vwDjcXxQ.js +0 -0
  101. package/dist/external_modules/mui-BcA3SBHM.js +0 -2473
  102. package/dist/states/ChatHeaderState.js +0 -48
  103. package/dist/styles/ChatHeaderActions.css +0 -1
  104. package/dist/styles/ChatSetting.css +0 -1
  105. package/dist/styles/Icon2.css +0 -1
  106. package/src/assets/fonts/iconfont.ttf +0 -0
  107. package/src/assets/fonts/iconfont.woff +0 -0
  108. package/src/assets/fonts/iconfont.woff2 +0 -0
  109. package/src/components/ChatHeader/ChatHeaderActions/ChatHeaderActions.module.scss +0 -44
  110. package/src/components/ChatHeader/ChatHeaderActions/ChatHeaderActions.tsx +0 -105
  111. package/src/components/ChatHeader/ChatHeaderActions/index.ts +0 -1
  112. package/src/components/IconFont/Icon.module.scss +0 -42
  113. package/src/components/IconFont/Icon.tsx +0 -68
  114. package/src/components/IconFont/index.ts +0 -3
  115. package/src/styles/fonts/icon-font.scss +0 -18
@@ -1 +1 @@
1
- .checkbox{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;position:relative}.checkbox-default{box-sizing:border-box;width:14px;height:14px;border-radius:14px;border:1px solid #DDDDDD}.checkbox-input{margin:0;padding:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;opacity:0}[data-uikit-theme=light] .info{background-color:var(--uikit-theme-light-bg-color-operate);color:var(--uikit-theme-light-text-color-primary);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .info{background-color:var(--uikit-theme-dark-bg-color-operate);color:var(--uikit-theme-dark-text-color-primary);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=light] .warn{background-color:var(--uikit-theme-light-text-color-warning);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .warn{background-color:var(--uikit-theme-dark-text-color-warning);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=light] .error{background-color:var(--uikit-theme-light-text-color-error);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .error{background-color:var(--uikit-theme-dark-text-color-error);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}
1
+ /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:after,*:before{box-sizing:border-box}ul,li{list-style:none;padding:0;margin:0}picture,img,video,canvas,svg{display:block;max-width:100%}img{max-width:100%;height:auto;vertical-align:middle;image-rendering:-webkit-optimize-contrast;aspect-ratio:attr(width)/attr(height);display:inline-block;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}img:not([src],[srcset]){visibility:hidden}
@@ -1 +1 @@
1
- .model{background:#00000080;position:fixed;z-index:5;width:100vw;top:0;left:0;bottom:0;display:flex;justify-content:center;align-items:center}
1
+ .checkbox{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;position:relative}.checkbox-default{box-sizing:border-box;width:14px;height:14px;border-radius:14px;border:1px solid #DDDDDD}.checkbox-input{margin:0;padding:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;opacity:0}[data-uikit-theme=light] .info{background-color:var(--uikit-theme-light-bg-color-operate);color:var(--uikit-theme-light-text-color-primary);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .info{background-color:var(--uikit-theme-dark-bg-color-operate);color:var(--uikit-theme-dark-text-color-primary);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=light] .warn{background-color:var(--uikit-theme-light-text-color-warning);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .warn{background-color:var(--uikit-theme-dark-text-color-warning);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=light] .error{background-color:var(--uikit-theme-light-text-color-error);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .error{background-color:var(--uikit-theme-dark-text-color-error);color:#fff;transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}
@@ -1 +1 @@
1
- .plugin{display:flex;align-items:center;height:100%;padding:0 8px;gap:8px}.plugin-popup{height:100%;display:flex;align-items:center;position:relative}.plugin-popup-box{position:absolute;z-index:5;bottom:100%}.plugin-popup-box{border-radius:8px;overflow:hidden}[data-uikit-theme=light] .plugin-popup-box{background-color:var(--uikit-theme-light-dropdown-color-default);box-shadow:0 0 10px 0 var(--uikit-theme-light-shadow-color);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .plugin-popup-box{background-color:var(--uikit-theme-dark-dropdown-color-default);box-shadow:0 0 10px 0 var(--uikit-theme-dark-shadow-color);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}
1
+ .model{background:#00000080;position:fixed;z-index:5;width:100vw;top:0;left:0;bottom:0;display:flex;justify-content:center;align-items:center}
@@ -1 +1 @@
1
- .popup{opacity:0}.popup-show{opacity:1}
1
+ .plugin{display:flex;align-items:center;height:100%;padding:0 8px;gap:8px}.plugin-popup{height:100%;display:flex;align-items:center;position:relative}.plugin-popup-box{position:absolute;z-index:5;bottom:100%}.plugin-popup-box{border-radius:8px;overflow:hidden}[data-uikit-theme=light] .plugin-popup-box{background-color:var(--uikit-theme-light-dropdown-color-default);box-shadow:0 0 10px 0 var(--uikit-theme-light-shadow-color);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}[data-uikit-theme=dark] .plugin-popup-box{background-color:var(--uikit-theme-dark-dropdown-color-default);box-shadow:0 0 10px 0 var(--uikit-theme-dark-shadow-color);transition:color .3s ease-out,border-color .3s ease-out,background-color .3s ease-out}
@@ -1 +1 @@
1
- /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:after,*:before{box-sizing:border-box}ul,li{list-style:none;padding:0;margin:0}picture,img,video,canvas,svg{display:block;max-width:100%}img{max-width:100%;height:auto;vertical-align:middle;image-rendering:-webkit-optimize-contrast;aspect-ratio:attr(width)/attr(height);display:inline-block;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}img:not([src],[srcset]){visibility:hidden}@font-face{font-family:iconfont;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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) format("truetype")}.iconfont{font-family:iconfont,Arial,sans-serif!important;font-size:20px;font-style:normal;line-height:1;vertical-align:bottom;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}
1
+ .popup{opacity:0}.popup-show{opacity:1}
@@ -1,4 +1,4 @@
1
- import { IMessageModel } from '@tencentcloud/chat-uikit-engine';
1
+ import { IMessageModel } from '@tencentcloud/chat-uikit-engine-lite';
2
2
  interface IScrollPosition {
3
3
  /** The target scroll position from the top */
4
4
  top: number;
@@ -1,4 +1,4 @@
1
- interface IUserStatus {
1
+ interface UserStatus {
2
2
  /**
3
3
  * user status type
4
4
  * 0: unknown
@@ -12,7 +12,7 @@ interface IUserStatus {
12
12
  */
13
13
  customStatus: string;
14
14
  }
15
- interface IUserStatusMap {
16
- [userID: string]: IUserStatus;
15
+ interface UserStatusMap {
16
+ [userID: string]: UserStatus;
17
17
  }
18
- export type { IUserStatus, IUserStatusMap };
18
+ export type { UserStatus, UserStatusMap };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tencentcloud/chat-uikit-react",
3
- "version": "3.0.2",
3
+ "version": "3.4.2",
4
4
  "type": "module",
5
5
  "module": "dist/index.js",
6
6
  "exports": {
@@ -40,25 +40,14 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@mui/base": "5.0.0-beta.66",
43
- "@tencentcloud/chat": "^3.5.2",
44
- "@tencentcloud/chat-uikit-engine": "~2.5.1",
45
- "@tencentcloud/tui-core": "latest",
46
- "@tencentcloud/uikit-base-component-react": "0.1.0",
47
- "tuikit-atomicx-react": "0.1.2",
48
- "@tencentcloud/universal-api": "^2.4.0",
49
- "@tiptap/extension-image": "2.0.0-beta.220",
50
- "@tiptap/extension-placeholder": "2.0.0-beta.220",
51
- "@tiptap/react": "2.11.5",
52
- "@tiptap/starter-kit": "2.11.5",
43
+ "tuikit-atomicx-react": "3.4.2",
53
44
  "classnames": "^2.5.1",
54
- "date-fns": "^2.29.3",
55
- "lodash-es": "4.17.21",
56
- "react": "^18.2.0",
57
- "react-dom": "^18.2.0",
58
45
  "react-transition-group": "^4.4.5",
59
46
  "zustand": "^5.0.0"
60
47
  },
61
48
  "devDependencies": {
49
+ "react": "^18.2.0",
50
+ "react-dom": "^18.2.0",
62
51
  "@chromatic-com/storybook": "^3.2.2",
63
52
  "@storybook/addon-docs": "^8.4.5",
64
53
  "@storybook/addon-essentials": "^8.4.5",
@@ -74,8 +63,6 @@
74
63
  "@storybook/theming": "^8.4.5",
75
64
  "@stylistic/stylelint-config": "^2.0.0",
76
65
  "@tencentcloud/eslint-config-hybrid": "^0.0.1",
77
- "@types/lodash-es": "^4.17.12",
78
- "@types/lodash.throttle": "^4.1.9",
79
66
  "@types/node": "latest",
80
67
  "@types/postcss-url": "^10.0.4",
81
68
  "@types/react": "^18.3.12",
@@ -102,12 +89,17 @@
102
89
  "vite": "^5.4.10",
103
90
  "vite-plugin-dts": "^4.2.2",
104
91
  "vite-plugin-lib-inject-css": "^2.1.1",
105
- "vite-plugin-static-copy": "^1.0.6"
92
+ "vite-plugin-static-copy": "^1.0.6",
93
+ "@trtc/calls-uikit-react": "~4.2.2"
106
94
  },
107
95
  "peerDependencies": {
108
- "@tencentcloud/call-uikit-react": "3.3.9",
109
96
  "i18next": "^23.7.11",
110
97
  "react": "^18.2.0",
111
- "react-dom": "^18.2.0"
98
+ "react-dom": "^18.2.0",
99
+ "@tencentcloud/lite-chat": "^1.5.0",
100
+ "@tencentcloud/tui-core-lite": "~1.0.0",
101
+ "@tencentcloud/chat-uikit-engine-lite": "~1.0.1",
102
+ "@tencentcloud/uikit-base-component-react": "1.1.1",
103
+ "@tencentcloud/universal-api": "^2.4.0"
112
104
  }
113
105
  }
@@ -0,0 +1,57 @@
1
+ @use "@tencentcloud/uikit-base-component-react/dist/styles/theme/util" as *;
2
+
3
+ .audio-call-picker {
4
+ &__button {
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: center;
8
+ cursor: pointer;
9
+ padding: 4px 6px;
10
+ border: none;
11
+ background: transparent;
12
+ transition: background-color 0.5s ease;
13
+ border-radius: 4px;
14
+ outline: none;
15
+
16
+ @include theme() {
17
+ &:hover {
18
+ background-color: get(button-color-secondary-hover);
19
+ }
20
+
21
+ &:active {
22
+ background-color: get(button-color-secondary-active);
23
+ }
24
+ }
25
+
26
+ &:focus {
27
+ outline: none;
28
+ }
29
+
30
+ &--disabled {
31
+ opacity: 0.5;
32
+ cursor: not-allowed;
33
+ user-select: none;
34
+ pointer-events: none;
35
+ }
36
+ }
37
+
38
+ &__icon {
39
+ transition: color 0.2s ease;
40
+
41
+ @include theme() {
42
+ color: get(text-color-link);
43
+ }
44
+ }
45
+ }
46
+
47
+ // Global styles for dialog (non-module)
48
+
49
+ .group-call-dialog {
50
+ background: white;
51
+ border-radius: 8px;
52
+ max-width: 500px;
53
+ max-height: 70vh;
54
+ display: flex;
55
+ flex-direction: column;
56
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 15%);
57
+ }
@@ -0,0 +1,234 @@
1
+ import type React from 'react';
2
+ import { useState, useRef, useMemo, useCallback } from 'react';
3
+ import {
4
+ IconCallFilled,
5
+ Dialog,
6
+ useUIKit,
7
+ } from '@tencentcloud/uikit-base-component-react';
8
+ import cs from 'classnames';
9
+ import {
10
+ View,
11
+ useConversationListState,
12
+ useGroupSettingState,
13
+ ConversationType,
14
+ startCall,
15
+ UserPicker,
16
+ useLoginState,
17
+ } from 'tuikit-atomicx-react';
18
+ import classes from './AudioCallPicker.module.scss';
19
+ import type { IUserPickerRef } from 'tuikit-atomicx-react';
20
+
21
+ interface AudioCallPickerProps {
22
+ /**
23
+ * Label text for the button
24
+ */
25
+ label?: string;
26
+ /**
27
+ * Icon size in pixels
28
+ */
29
+ iconSize?: number;
30
+ /**
31
+ * Whether the button is disabled
32
+ */
33
+ disabled?: boolean;
34
+ /**
35
+ * Custom className for the button
36
+ */
37
+ className?: string;
38
+ /**
39
+ * Custom style for the button
40
+ */
41
+ style?: React.CSSProperties;
42
+ /**
43
+ * Custom icon slot
44
+ */
45
+ children?: React.ReactNode;
46
+ }
47
+
48
+ interface GroupMemberOption {
49
+ key: string;
50
+ label: string;
51
+ avatarUrl?: string;
52
+ }
53
+
54
+ const AUDIO_CALL_TYPE = 1;
55
+ const MEMBER_PAGE_SIZE = 80;
56
+ const MAX_GROUP_CALL_MEMBERS = 8;
57
+ const MIN_GROUP_CALL_MEMBERS = 1;
58
+
59
+ const AudioCallPicker = (props: AudioCallPickerProps) => {
60
+ const {
61
+ label = '',
62
+ iconSize = 20,
63
+ disabled = false,
64
+ className,
65
+ style,
66
+ children,
67
+ } = props;
68
+
69
+ const { t } = useUIKit();
70
+ const { loginUserInfo } = useLoginState();
71
+ const { activeConversation } = useConversationListState();
72
+ const { allMembers, getGroupMemberList, memberCount } = useGroupSettingState();
73
+
74
+ const [isGroupCallDialogVisible, setIsGroupCallDialogVisible] = useState(false);
75
+ const groupMemberPickerRef = useRef<IUserPickerRef>(null);
76
+
77
+ const selfUserId = useMemo(() => loginUserInfo?.userId, [loginUserInfo]);
78
+
79
+ const isC2CConversation = useMemo(() => activeConversation?.type === ConversationType.C2C, [activeConversation]);
80
+
81
+ const groupMemberOptions = useMemo<GroupMemberOption[]>(() => allMembers?.map((member: any) => ({
82
+ key: member.userID,
83
+ label: member.nick || member.userID,
84
+ avatarUrl: member.avatar,
85
+ })) ?? [], [allMembers]);
86
+
87
+ const canStartCall = useMemo(() => {
88
+ if (!activeConversation || disabled) {
89
+ return false;
90
+ }
91
+ // TODO: add more call permission check logic
92
+ return true;
93
+ }, [activeConversation, disabled]);
94
+
95
+ const initiatePrivateCall = useCallback((): void => {
96
+ const peerUserId = activeConversation?.userProfile?.userID;
97
+ if (!peerUserId) {
98
+ console.warn('No peer user ID found for C2C call');
99
+ return;
100
+ }
101
+
102
+ try {
103
+ startCall({
104
+ userIDList: [peerUserId],
105
+ type: AUDIO_CALL_TYPE,
106
+ });
107
+ } catch (error) {
108
+ console.error('Failed to start private audio call:', error);
109
+ }
110
+ }, []);
111
+
112
+ const loadMoreGroupMembers = useCallback((): void => {
113
+ if (activeConversation?.type !== ConversationType.GROUP) {
114
+ return;
115
+ }
116
+
117
+ const currentMemberCount = allMembers?.length || 0;
118
+ const totalMemberCount = memberCount || 0;
119
+
120
+ if (currentMemberCount < totalMemberCount) {
121
+ getGroupMemberList({
122
+ count: MEMBER_PAGE_SIZE,
123
+ offset: currentMemberCount,
124
+ });
125
+ }
126
+ }, [activeConversation, allMembers, memberCount, getGroupMemberList]);
127
+
128
+ const showGroupCallDialog = useCallback((): void => {
129
+ loadMoreGroupMembers();
130
+ setIsGroupCallDialogVisible(true);
131
+ }, [loadMoreGroupMembers]);
132
+
133
+ const handleCloseGroupCallDialog = useCallback(() => {
134
+ setIsGroupCallDialogVisible(false);
135
+ }, []);
136
+
137
+ const initiateGroupCall = useCallback((): void => {
138
+ const currentGroupId = activeConversation?.groupProfile?.groupID;
139
+ if (!groupMemberPickerRef.current || !currentGroupId) {
140
+ console.warn('Missing group information for group call');
141
+ return;
142
+ }
143
+
144
+ const selectedMembers = groupMemberPickerRef.current.getSelectedItems();
145
+ if (!Array.isArray(selectedMembers) || selectedMembers.length === 0) {
146
+ console.warn('No members selected for group call');
147
+ return;
148
+ }
149
+
150
+ const selectedUserIds = selectedMembers.map(member => member.key);
151
+
152
+ try {
153
+ startCall({
154
+ userIDList: selectedUserIds,
155
+ chatGroupID: currentGroupId,
156
+ type: AUDIO_CALL_TYPE,
157
+ });
158
+
159
+ handleCloseGroupCallDialog();
160
+ } catch (error) {
161
+ console.error('Failed to start group audio call:', error);
162
+ }
163
+ }, [handleCloseGroupCallDialog]);
164
+
165
+ const handleAudioCallClick = useCallback(() => {
166
+ if (!canStartCall) {
167
+ console.warn('Cannot start audio call');
168
+ return;
169
+ }
170
+
171
+ if (isC2CConversation) {
172
+ initiatePrivateCall();
173
+ } else {
174
+ showGroupCallDialog();
175
+ }
176
+ }, []);
177
+
178
+ const handleConfirmGroupCall = useCallback(() => {
179
+ initiateGroupCall();
180
+ }, [initiateGroupCall]);
181
+
182
+ return (
183
+ <>
184
+ <View>
185
+ <button
186
+ type="button"
187
+ className={cs(
188
+ classes['audio-call-picker__button'],
189
+ {
190
+ [classes['audio-call-picker__button--disabled']]: disabled,
191
+ },
192
+ className,
193
+ )}
194
+ style={style}
195
+ onClick={handleAudioCallClick}
196
+ disabled={disabled}
197
+ aria-label={label || 'Audio Call'}
198
+ >
199
+ {children || (
200
+ <IconCallFilled
201
+ className={classes['audio-call-picker__icon']}
202
+ size={`${iconSize}px`}
203
+ />
204
+ )}
205
+ </button>
206
+
207
+ {/* TODO: Replace with TUIDialog component */}
208
+ <Dialog
209
+ visible={isGroupCallDialogVisible}
210
+ title={t('MessageInput.select_call_members')}
211
+ cancelText={t('MessageInput.cancel')}
212
+ onCancel={handleCloseGroupCallDialog}
213
+ onClose={handleCloseGroupCallDialog}
214
+ confirmText={t('MessageInput.initiate_call')}
215
+ onConfirm={handleConfirmGroupCall}
216
+ className={classes['group-call-dialog']}
217
+ >
218
+ <UserPicker
219
+ ref={groupMemberPickerRef}
220
+ displayMode="list"
221
+ dataSource={groupMemberOptions}
222
+ lockedItems={selfUserId ? [{ key: selfUserId }] : []}
223
+ maxCount={MAX_GROUP_CALL_MEMBERS}
224
+ minCount={MIN_GROUP_CALL_MEMBERS}
225
+ onReachEnd={loadMoreGroupMembers}
226
+ />
227
+ </Dialog>
228
+ </View>
229
+ </>
230
+ );
231
+ };
232
+
233
+ export { AudioCallPicker };
234
+ export type { AudioCallPickerProps };
@@ -0,0 +1 @@
1
+ export { AudioCallPicker } from './AudioCallPicker';
@@ -1,8 +1,8 @@
1
1
  import type React from 'react';
2
2
  import { useEffect } from 'react';
3
- import { TUIUserService } from '@tencentcloud/chat-uikit-engine';
3
+ import { TUIUserService } from '@tencentcloud/chat-uikit-engine-lite';
4
4
  import { useMessageInputState } from 'tuikit-atomicx-react';
5
- import { useChatHeaderState } from '../../states';
5
+ import { useChatHeader } from '../../hooks';
6
6
  import ChatHeaderUI from './ChatHeaderUI';
7
7
  import type { AvatarProps } from 'tuikit-atomicx-react';
8
8
 
@@ -13,10 +13,16 @@ interface ChatHeaderProps {
13
13
  avatar?: string | undefined;
14
14
  /** Whether to show user status */
15
15
  enableUserStatus?: boolean | undefined;
16
+ /** Whether to show call features */
17
+ enableCall?: boolean | undefined;
16
18
  /** Whether to enable chat setting */
17
19
  chatHeaderActions?: Array<'videoCall' | 'audioCall' | 'chatSetting' | 'search'> | undefined;
18
20
  /** Custom avatar component */
19
21
  Avatar?: React.ComponentType<AvatarProps> | undefined;
22
+ /** Custom left slot */
23
+ ChatHeaderLeft?: React.ReactNode | undefined;
24
+ /** Custom right slot */
25
+ ChatHeaderRight?: React.ReactNode | undefined;
20
26
  /** Additional class names */
21
27
  className?: string | undefined;
22
28
  /** Additional style */
@@ -29,10 +35,13 @@ const ChatHeader = (props: ChatHeaderProps) => {
29
35
  title,
30
36
  avatar,
31
37
  enableUserStatus = false,
38
+ enableCall = false,
32
39
  chatHeaderActions,
33
40
  Avatar,
34
41
  className,
35
42
  style,
43
+ ChatHeaderLeft,
44
+ ChatHeaderRight,
36
45
  } = props;
37
46
 
38
47
  const {
@@ -42,7 +51,7 @@ const ChatHeader = (props: ChatHeaderProps) => {
42
51
  title: exceptedTitle,
43
52
  avatar: exceptedAvatar,
44
53
  userStatus,
45
- } = useChatHeaderState();
54
+ } = useChatHeader();
46
55
 
47
56
  const { isPeerTyping } = useMessageInputState();
48
57
 
@@ -60,11 +69,14 @@ const ChatHeader = (props: ChatHeaderProps) => {
60
69
  isPeerTyping={isPeerTyping}
61
70
  system={system}
62
71
  enableUserStatus={enableUserStatus}
72
+ enableCall={enableCall}
63
73
  chatHeaderActions={chatHeaderActions}
64
74
  Avatar={Avatar}
65
75
  style={style}
66
76
  className={className}
67
77
  onSearchClick={props.onSearchClick}
78
+ ChatHeaderLeft={ChatHeaderLeft}
79
+ ChatHeaderRight={ChatHeaderRight}
68
80
  />
69
81
  );
70
82
  };