cozy-search 0.17.3 → 0.18.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 (70) hide show
  1. package/dist/actions/delete.js +1 -1
  2. package/dist/actions/rename.js +1 -1
  3. package/dist/actions/share.js +1 -1
  4. package/dist/components/Assistant/AssistantAvatar.d.ts +1 -1
  5. package/dist/components/Assistant/AssistantAvatar.js +6 -2
  6. package/dist/components/Assistant/AssistantContainer.js +12 -8
  7. package/dist/components/Assistant/AssistantSelection.d.ts +2 -1
  8. package/dist/components/Assistant/AssistantSelection.js +33 -5
  9. package/dist/components/Assistant/AssistantSelectionItem.js +44 -5
  10. package/dist/components/Assistant/styles.styl +17 -1
  11. package/dist/components/AssistantMobile.js +2 -1
  12. package/dist/components/AssistantProvider.d.ts +43 -7
  13. package/dist/components/AssistantProvider.js +4 -0
  14. package/dist/components/Conversations/ConversationBar.d.ts +2 -1
  15. package/dist/components/Conversations/ConversationBar.js +18 -5
  16. package/dist/components/Conversations/ConversationComposer.js +13 -2
  17. package/dist/components/Conversations/ConversationListItem.js +15 -9
  18. package/dist/components/Conversations/ConversationListItemWider.js +17 -8
  19. package/dist/components/Conversations/styles.styl +11 -1
  20. package/dist/components/CozyAssistantRuntimeProvider.d.ts +2 -6
  21. package/dist/components/CozyAssistantRuntimeProvider.js +159 -38
  22. package/dist/components/CreateAssistantSteps/BasicInfoStep.js +1 -0
  23. package/dist/components/CreateAssistantSteps/Provider.js +1 -0
  24. package/dist/components/CreateAssistantSteps/ProviderSelectionStep.js +12 -2
  25. package/dist/components/CreateAssistantSteps/styles.styl +3 -0
  26. package/dist/components/Messages/AssistantMessage.js +3 -3
  27. package/dist/components/Messages/UserMessage.js +9 -2
  28. package/dist/components/Messages/styles.styl +6 -0
  29. package/dist/components/Search/NotFoundConversation.d.ts +2 -0
  30. package/dist/components/Search/NotFoundConversation.js +43 -0
  31. package/dist/components/Search/SearchBarDesktop.js +2 -1
  32. package/dist/components/Search/SearchBarMobile.js +3 -1
  33. package/dist/components/Search/SearchConversation.js +162 -45
  34. package/dist/components/Search/SuggestionsPlaceholder.js +2 -1
  35. package/dist/components/Search/helpers.spec.d.ts +1 -0
  36. package/dist/components/Search/helpers.spec.js +71 -0
  37. package/dist/components/Search/styles.styl +5 -0
  38. package/dist/components/Sidebar/index.js +79 -25
  39. package/dist/components/Sidebar/styles.styl +12 -0
  40. package/dist/components/TwakeKnowledges/TwakeKnowledgePanel.js +65 -85
  41. package/dist/components/TwakeKnowledges/TwakeKnowledgeSelector.js +15 -3
  42. package/dist/components/TwakeKnowledges/styles.styl +0 -3
  43. package/dist/components/Views/AssistantView.js +8 -1
  44. package/dist/components/Views/CreateAssistantDialog.js +7 -0
  45. package/dist/components/Views/DeleteAssistantDialog.js +1 -0
  46. package/dist/components/Views/EditAssistantDialog.js +7 -0
  47. package/dist/components/adapters/CozyRealtimeChatAdapter.d.ts +1 -0
  48. package/dist/components/adapters/CozyRealtimeChatAdapter.js +57 -43
  49. package/dist/components/adapters/StreamBridge.spec.ts +82 -0
  50. package/dist/components/constants.d.ts +1 -0
  51. package/dist/components/constants.js +4 -2
  52. package/dist/components/helpers.spec.js +139 -39
  53. package/dist/components/queries.d.ts +7 -2
  54. package/dist/components/queries.js +15 -6
  55. package/dist/components/styles.styl +1 -1
  56. package/dist/hooks/useConversation.js +4 -14
  57. package/dist/hooks/useConversation.spec.d.ts +1 -0
  58. package/dist/hooks/useConversation.spec.js +100 -0
  59. package/dist/hooks/useConversation.spec.jsx +121 -0
  60. package/dist/hooks/useFetchConversations.d.ts +70 -0
  61. package/dist/hooks/useFetchConversations.js +215 -0
  62. package/dist/hooks/useFetchConversations.spec.d.ts +1 -0
  63. package/dist/hooks/useFetchConversations.spec.js +256 -0
  64. package/dist/locales/en.json +11 -3
  65. package/dist/locales/fr.json +11 -3
  66. package/dist/locales/index.js +44 -12
  67. package/dist/locales/ru.json +11 -3
  68. package/dist/locales/vi.json +11 -3
  69. package/dist/stylesheet.css +55 -6
  70. package/package.json +3 -6
@@ -54,7 +54,7 @@ var remove = function remove(_ref) {
54
54
  displayCondition: function displayCondition() {
55
55
  return true;
56
56
  },
57
- action: function action() {// TO DO: Add action to remove
57
+ action: function action() {// TO DO: Add action to remove due to this action does not exist yet in backend, we will implement it later
58
58
  }
59
59
  };
60
60
  };
@@ -51,7 +51,7 @@ var rename = function rename(_ref) {
51
51
  displayCondition: function displayCondition() {
52
52
  return true;
53
53
  },
54
- action: function action() {// TO DO: Add action to remove
54
+ action: function action() {// TO DO: Add action to rename due to this action does not exist yet in backend, we will implement it later
55
55
  }
56
56
  };
57
57
  };
@@ -51,7 +51,7 @@ var share = function share(_ref) {
51
51
  displayCondition: function displayCondition() {
52
52
  return true;
53
53
  },
54
- action: function action() {// TO DO: Add action to remove
54
+ action: function action() {// TO DO: Add action to share due to this action does not exist yet in backend, we will implement it later
55
55
  }
56
56
  };
57
57
  };
@@ -3,4 +3,4 @@ declare function AssistantAvatar({ assistant, isSmall, className }: {
3
3
  assistant: any;
4
4
  isSmall: any;
5
5
  className: any;
6
- }): JSX.Element | undefined;
6
+ }): JSX.Element | null;
@@ -23,20 +23,24 @@ var _constants = require("../constants");
23
23
 
24
24
  var styles = {
25
25
  "assistant-container": "styles__assistant-container___2WDzp",
26
+ "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
27
+ "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
26
28
  "trigger-button": "styles__trigger-button___yyIz8",
27
29
  "assistant-icon": "styles__assistant-icon___1VM6i",
28
30
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
29
31
  "menu-item": "styles__menu-item___1jvWN",
30
32
  "create-item": "styles__create-item___3ZARq",
31
33
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
32
- "create-icon": "styles__create-icon___1jhHS"
34
+ "create-icon": "styles__create-icon___1jhHS",
35
+ "dropdown-icon": "styles__dropdown-icon___HKkCm",
36
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
33
37
  };
34
38
 
35
39
  var AssistantAvatar = function AssistantAvatar(_ref) {
36
40
  var assistant = _ref.assistant,
37
41
  isSmall = _ref.isSmall,
38
42
  className = _ref.className;
39
- if (!assistant) return;
43
+ if (!assistant) return null;
40
44
 
41
45
  if (assistant.id !== _constants.DEFAULT_ASSISTANT.id && !assistant.icon) {
42
46
  return /*#__PURE__*/_react.default.createElement(_Icon.default, {
@@ -13,7 +13,7 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
15
15
 
16
- var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
16
+ var _CozyTheme = require("cozy-ui-plus/dist/providers/CozyTheme");
17
17
 
18
18
  var _AssistantProvider = require("../AssistantProvider");
19
19
 
@@ -31,13 +31,17 @@ var _TwakeKnowledgePanel = _interopRequireDefault(require("../TwakeKnowledges/Tw
31
31
 
32
32
  var styles = {
33
33
  "assistant-container": "styles__assistant-container___2WDzp",
34
+ "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
35
+ "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
34
36
  "trigger-button": "styles__trigger-button___yyIz8",
35
37
  "assistant-icon": "styles__assistant-icon___1VM6i",
36
38
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
37
39
  "menu-item": "styles__menu-item___1jvWN",
38
40
  "create-item": "styles__create-item___3ZARq",
39
41
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
40
- "create-icon": "styles__create-icon___1jhHS"
42
+ "create-icon": "styles__create-icon___1jhHS",
43
+ "dropdown-icon": "styles__dropdown-icon___HKkCm",
44
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
41
45
  };
42
46
 
43
47
  var AssistantContainer = function AssistantContainer() {
@@ -46,17 +50,17 @@ var AssistantContainer = function AssistantContainer() {
46
50
  openedKnowledgePanel = _useAssistant.openedKnowledgePanel,
47
51
  setOpenedKnowledgePanel = _useAssistant.setOpenedKnowledgePanel;
48
52
 
53
+ var _useCozyTheme = (0, _CozyTheme.useCozyTheme)(),
54
+ theme = _useCozyTheme.type;
55
+
49
56
  return /*#__PURE__*/_react.default.createElement("div", {
50
57
  className: (0, _classnames.default)('u-flex u-ov-hidden u-h-100', styles['assistant-container'])
51
58
  }, /*#__PURE__*/_react.default.createElement(_Sidebar.default, {
52
- className: "u-w-5 u-pb-1 u-bg-white"
53
- }), /*#__PURE__*/_react.default.createElement(_Divider.default, {
54
- orientation: "vertical",
55
- flexItem: true
59
+ className: "u-w-5 u-pb-0-t u-pb-1"
56
60
  }), /*#__PURE__*/_react.default.createElement(_PrettyScrollbar.default, {
57
- className: "u-flex-auto u-flex u-flex-column u-pb-1 u-ov-hidden u-bg-white"
61
+ className: "u-flex-auto u-flex u-flex-column u-pb-0-t u-pb-1 u-ov-hidden"
58
62
  }, isOpenSearchConversation && (0, _cozyFlags.default)('cozy.search-conversation.enabled') ? /*#__PURE__*/_react.default.createElement(_SearchConversation.default, null) : /*#__PURE__*/_react.default.createElement(_CozyAssistantRuntimeProvider.default, null, /*#__PURE__*/_react.default.createElement(_Conversation.default, null))), openedKnowledgePanel && (0, _cozyFlags.default)('cozy.source-knowledge.enabled') && /*#__PURE__*/_react.default.createElement("div", {
59
- className: "u-ml-half u-h-100 u-maw-7"
63
+ className: (0, _classnames.default)('u-h-100 u-maw-7 u-pl-half', styles["knowledge-panel--".concat(theme)])
60
64
  }, /*#__PURE__*/_react.default.createElement(_TwakeKnowledgePanel.default, {
61
65
  onClose: function onClose() {
62
66
  return setOpenedKnowledgePanel(undefined);
@@ -1,4 +1,5 @@
1
1
  export default AssistantSelection;
2
- declare function AssistantSelection({ className }: {
2
+ declare function AssistantSelection({ className, disabled }: {
3
3
  className: any;
4
+ disabled: any;
4
5
  }): JSX.Element;
@@ -13,6 +13,8 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _react = _interopRequireWildcard(require("react"));
15
15
 
16
+ var _twakeI18n = require("twake-i18n");
17
+
16
18
  var _cozyClient = require("cozy-client");
17
19
 
18
20
  var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu"));
@@ -23,10 +25,14 @@ var _Chips = _interopRequireDefault(require("cozy-ui/transpiled/react/Chips"));
23
25
 
24
26
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
25
27
 
28
+ var _Dropdown = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Dropdown"));
29
+
26
30
  var _Plus = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Plus"));
27
31
 
28
32
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
29
33
 
34
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
35
+
30
36
  var _AssistantProvider = require("../AssistantProvider");
31
37
 
32
38
  var _constants = require("../constants");
@@ -43,19 +49,31 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
43
49
 
44
50
  var styles = {
45
51
  "assistant-container": "styles__assistant-container___2WDzp",
52
+ "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
53
+ "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
46
54
  "trigger-button": "styles__trigger-button___yyIz8",
47
55
  "assistant-icon": "styles__assistant-icon___1VM6i",
48
56
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
49
57
  "menu-item": "styles__menu-item___1jvWN",
50
58
  "create-item": "styles__create-item___3ZARq",
51
59
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
52
- "create-icon": "styles__create-icon___1jhHS"
60
+ "create-icon": "styles__create-icon___1jhHS",
61
+ "dropdown-icon": "styles__dropdown-icon___HKkCm",
62
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
53
63
  };
54
64
 
55
65
  var AssistantSelection = function AssistantSelection(_ref) {
56
66
  var _useQuery;
57
67
 
58
- var className = _ref.className;
68
+ var className = _ref.className,
69
+ disabled = _ref.disabled;
70
+
71
+ var _useI18n = (0, _twakeI18n.useI18n)(),
72
+ t = _useI18n.t;
73
+
74
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
75
+ isMobile = _useBreakpoints.isMobile;
76
+
59
77
  var buttonRef = (0, _react.useRef)(null);
60
78
 
61
79
  var _useState = (0, _react.useState)(false),
@@ -71,10 +89,16 @@ var AssistantSelection = function AssistantSelection(_ref) {
71
89
  selectedAssistantId = _useAssistant.selectedAssistantId,
72
90
  setSelectedAssistantId = _useAssistant.setSelectedAssistantId;
73
91
 
92
+ (0, _react.useEffect)(function () {
93
+ if (disabled) {
94
+ setOpen(false);
95
+ }
96
+ }, [disabled]);
74
97
  var assistantsQuery = (0, _queries.buildAssistantsQuery)();
75
98
  var assistants = ((_useQuery = (0, _cozyClient.useQuery)(assistantsQuery.definition, assistantsQuery.options)) === null || _useQuery === void 0 ? void 0 : _useQuery.data) || [];
76
99
 
77
100
  var handleClick = function handleClick() {
101
+ if (disabled) return;
78
102
  setOpen(true);
79
103
  };
80
104
 
@@ -100,9 +124,13 @@ var AssistantSelection = function AssistantSelection(_ref) {
100
124
  isSmall: true,
101
125
  assistant: selectedAssistant
102
126
  }),
103
- label: selectedAssistant.name,
127
+ label: isMobile ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
128
+ className: styles['dropdown-icon'],
129
+ icon: _Dropdown.default
130
+ }) : selectedAssistant.name,
104
131
  clickable: true,
105
- onClick: handleClick
132
+ onClick: handleClick,
133
+ disabled: disabled
106
134
  })), open && /*#__PURE__*/_react.default.createElement(_ActionsMenu.default, {
107
135
  open: true,
108
136
  ref: buttonRef,
@@ -143,7 +171,7 @@ var AssistantSelection = function AssistantSelection(_ref) {
143
171
  className: styles['create-icon']
144
172
  }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
145
173
  variant: "body1"
146
- }, "Create Assistant")))));
174
+ }, t('assistant_create.title'))))));
147
175
  };
148
176
 
149
177
  var _default = AssistantSelection;
@@ -7,10 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
11
15
 
12
16
  var _ActionsMenuItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem"));
13
17
 
18
+ var _Badge = _interopRequireDefault(require("cozy-ui/transpiled/react/Badge"));
19
+
14
20
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
15
21
 
16
22
  var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
@@ -23,20 +29,32 @@ var _Trash = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Tras
23
29
 
24
30
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
25
31
 
32
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
33
+
26
34
  var _AssistantAvatar = _interopRequireDefault(require("../Assistant/AssistantAvatar"));
27
35
 
36
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
+
38
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
+
28
40
  var styles = {
29
41
  "assistant-container": "styles__assistant-container___2WDzp",
42
+ "knowledge-panel--light": "styles__knowledge-panel--light___1dZvc",
43
+ "knowledge-panel--dark": "styles__knowledge-panel--dark___3IGQc",
30
44
  "trigger-button": "styles__trigger-button___yyIz8",
31
45
  "assistant-icon": "styles__assistant-icon___1VM6i",
32
46
  "assistant-icon--small": "styles__assistant-icon--small___3D9po",
33
47
  "menu-item": "styles__menu-item___1jvWN",
34
48
  "create-item": "styles__create-item___3ZARq",
35
49
  "menu-item-icon-button": "styles__menu-item-icon-button___2q_ct",
36
- "create-icon": "styles__create-icon___1jhHS"
50
+ "create-icon": "styles__create-icon___1jhHS",
51
+ "dropdown-icon": "styles__dropdown-icon___HKkCm",
52
+ "selected-item--mobile": "styles__selected-item--mobile___gxVpw"
37
53
  };
38
54
 
39
55
  var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
56
+ var _cx, _cx2;
57
+
40
58
  var assistant = _ref.assistant,
41
59
  onClose = _ref.onClose,
42
60
  onSelect = _ref.onSelect,
@@ -47,6 +65,9 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
47
65
  _ref$disableActions = _ref.disableActions,
48
66
  disableActions = _ref$disableActions === void 0 ? false : _ref$disableActions;
49
67
 
68
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
69
+ isMobile = _useBreakpoints.isMobile;
70
+
50
71
  var handleSelect = function handleSelect(assistant) {
51
72
  onSelect(assistant);
52
73
  onClose();
@@ -66,6 +87,9 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
66
87
  e.stopPropagation();
67
88
  };
68
89
 
90
+ var isSelected = (0, _react.useMemo)(function () {
91
+ return (selectedAssistant === null || selectedAssistant === void 0 ? void 0 : selectedAssistant.id) === assistant.id;
92
+ }, [selectedAssistant === null || selectedAssistant === void 0 ? void 0 : selectedAssistant.id, assistant.id]);
69
93
  return /*#__PURE__*/_react.default.createElement(_ActionsMenuItem.default, {
70
94
  onClick: function onClick() {
71
95
  return handleSelect(assistant);
@@ -73,19 +97,34 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
73
97
  className: styles['menu-item']
74
98
  }, /*#__PURE__*/_react.default.createElement("div", {
75
99
  className: "u-flex u-flex-items-center"
100
+ }, isMobile && isSelected ? /*#__PURE__*/_react.default.createElement(_Badge.default, {
101
+ badgeContent: /*#__PURE__*/_react.default.createElement(_Icon.default, {
102
+ icon: _Check.default,
103
+ size: 10,
104
+ className: styles['selected-item--mobile']
105
+ }),
106
+ variant: "standard",
107
+ size: "small",
108
+ anchorOrigin: {
109
+ vertical: 'bottom',
110
+ horizontal: 'right'
111
+ },
112
+ overlap: "circular"
76
113
  }, /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
77
114
  assistant: assistant
115
+ })) : /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
116
+ assistant: assistant
78
117
  }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
79
118
  variant: "body1"
80
119
  }, assistant.name)), /*#__PURE__*/_react.default.createElement("div", {
81
120
  className: "u-flex u-flex-items-center u-flex-justify-between"
82
- }, (selectedAssistant === null || selectedAssistant === void 0 ? void 0 : selectedAssistant.id) === assistant.id && /*#__PURE__*/_react.default.createElement(_Icon.default, {
121
+ }, isSelected && !isMobile && /*#__PURE__*/_react.default.createElement(_Icon.default, {
83
122
  icon: _Check.default,
84
123
  className: "u-success"
85
124
  }), !disableActions && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
86
125
  "aria-label": "Edit assistant",
87
126
  size: "small",
88
- className: styles['menu-item-icon-button'],
127
+ className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, styles['menu-item-icon-button'], !isMobile || !isSelected && isMobile), (0, _defineProperty2.default)(_cx, 'u-db', isSelected && isMobile), _cx)),
89
128
  onClick: handleEdit
90
129
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
91
130
  icon: _Pen.default,
@@ -93,7 +132,7 @@ var AssistantSelectionItem = function AssistantSelectionItem(_ref) {
93
132
  })), /*#__PURE__*/_react.default.createElement(_IconButton.default, {
94
133
  "aria-label": "Delete assistant",
95
134
  size: "small",
96
- className: styles['menu-item-icon-button'],
135
+ className: (0, _classnames.default)((_cx2 = {}, (0, _defineProperty2.default)(_cx2, styles['menu-item-icon-button'], !isMobile || !isSelected && isMobile), (0, _defineProperty2.default)(_cx2, 'u-db', isSelected && isMobile), _cx2)),
97
136
  onClick: handleDelete
98
137
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
99
138
  icon: _Trash.default,
@@ -1,6 +1,13 @@
1
1
  .assistant-container
2
2
  z-index 1
3
3
 
4
+ .knowledge-panel
5
+ &--light
6
+ background-color var(--primaryBackgroundLight)
7
+
8
+ &--dark
9
+ background-color var(--greyA400)
10
+
4
11
  .trigger-button
5
12
  border-radius 20px
6
13
  padding 4px 12px
@@ -36,4 +43,13 @@
36
43
  display none !important
37
44
 
38
45
  .create-icon
39
- margin-right 8px
46
+ margin-right 0.5rem
47
+
48
+ .dropdown-icon
49
+ margin-top 0.25rem
50
+
51
+ .selected-item--mobile
52
+ padding 1px
53
+ border-radius 100%
54
+ color var(--white)
55
+ background-color var(--malachite)
@@ -30,7 +30,8 @@ var _locales = require("../locales");
30
30
  var styles = {
31
31
  "searchBarDesktop--result": "styles__searchBarDesktop--result___2bQQy",
32
32
  "suggestionsPlaceholder": "styles__suggestionsPlaceholder___y-vsv",
33
- "search-bar-icon": "styles__search-bar-icon___1affF"
33
+ "search-bar-icon": "styles__search-bar-icon___1affF",
34
+ "search-bar--mobile": "styles__search-bar--mobile___1CSb2"
34
35
  };
35
36
 
36
37
  var AssistantMobile = function AssistantMobile(_ref) {
@@ -1,7 +1,43 @@
1
- export const AssistantContext: React.Context<any>;
2
- export function useAssistant(): any;
3
- declare const _default: React.MemoExoticComponent<({ children }: {
4
- children: any;
5
- }) => JSX.Element>;
6
- export default _default;
7
- import React from 'react';
1
+ import React from 'react'
2
+
3
+ export interface AssistantState {
4
+ message: Record<string, string>
5
+ status: 'idle' | 'writing' | 'pending'
6
+ messagesId: string[]
7
+ }
8
+
9
+ export interface TwakeKnowledgeState {
10
+ drive: { id: string; name: string }[]
11
+ mail: { id: string; name: string }[]
12
+ chat: { id: string; name: string }[]
13
+ }
14
+
15
+ export interface AssistantContextValue {
16
+ assistantState: AssistantState
17
+ isOpenCreateAssistant: boolean
18
+ isOpenDeleteAssistant: boolean
19
+ isOpenEditAssistant: boolean
20
+ assistantIdInAction: string | null
21
+ selectedAssistantId: string
22
+ isOpenSearchConversation: boolean
23
+ openedKnowledgePanel: string | null
24
+ selectedTwakeKnowledge: TwakeKnowledgeState
25
+ setAssistantIdInAction: (id: string | null) => void
26
+ setIsOpenDeleteAssistant: (isOpen: boolean) => void
27
+ setAssistantState: React.Dispatch<React.SetStateAction<AssistantState>>
28
+ clearAssistant: () => void
29
+ onAssistantExecute: (
30
+ params: { value: string; conversationId: string },
31
+ callback?: () => void
32
+ ) => Promise<void>
33
+ setIsOpenCreateAssistant: (isOpen: boolean) => void
34
+ setIsOpenEditAssistant: (isOpen: boolean) => void
35
+ setSelectedAssistantId: (id: string) => void
36
+ setIsOpenSearchConversation: (isOpen: boolean) => void
37
+ setOpenedKnowledgePanel: (panel: string | null) => void
38
+ setSelectedTwakeKnowledge: React.Dispatch<
39
+ React.SetStateAction<TwakeKnowledgeState>
40
+ >
41
+ }
42
+
43
+ export function useAssistant(): AssistantContextValue
@@ -40,6 +40,10 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
40
40
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
41
41
 
42
42
  var AssistantContext = /*#__PURE__*/_react.default.createContext();
43
+ /**
44
+ * @returns {import('./AssistantProvider').AssistantContextValue}
45
+ */
46
+
43
47
 
44
48
  exports.AssistantContext = AssistantContext;
45
49
 
@@ -1,5 +1,6 @@
1
1
  export default ConversationBar;
2
- declare function ConversationBar({ value, isEmpty, isRunning, onKeyDown, onSend, onCancel }: {
2
+ declare function ConversationBar({ value, isEmpty, isRunning, onKeyDown, onSend, onCancel, ...props }: {
3
+ [x: string]: any;
3
4
  value: any;
4
5
  isEmpty: any;
5
6
  isRunning: any;
@@ -7,8 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
+
10
16
  var _react = require("@assistant-ui/react");
11
17
 
18
+ var _classnames = _interopRequireDefault(require("classnames"));
19
+
12
20
  var _react2 = _interopRequireWildcard(require("react"));
13
21
 
14
22
  var _twakeI18n = require("twake-i18n");
@@ -29,12 +37,15 @@ var _useEventListener = _interopRequireDefault(require("cozy-ui/transpiled/react
29
37
 
30
38
  var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
31
39
 
40
+ var _excluded = ["value", "isEmpty", "isRunning", "onKeyDown", "onSend", "onCancel"];
41
+
32
42
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
43
 
34
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
45
 
36
46
  var styles = {
37
47
  "conversationBar": "styles__conversationBar___2J-Us",
48
+ "conversationBar--mobile": "styles__conversationBar--mobile___1jdg8",
38
49
  "conversationBar-input": "styles__conversationBar-input___2DfdZ",
39
50
  "chatConversation": "styles__chatConversation___2EmkA",
40
51
  "conversationHeaderBar": "styles__conversationHeaderBar___C8tlD",
@@ -53,7 +64,8 @@ var styles = {
53
64
  "cozyThread-messageContent": "styles__cozyThread-messageContent___2HjdB",
54
65
  "conversation-list-item": "styles__conversation-list-item___rQapI",
55
66
  "conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
56
- "conversation-list-item--selected": "styles__conversation-list-item--selected___2D5_3"
67
+ "conversation-list-item--selected--light": "styles__conversation-list-item--selected--light___3WvIn",
68
+ "conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY"
57
69
  };
58
70
 
59
71
  var ConversationBar = function ConversationBar(_ref) {
@@ -62,7 +74,8 @@ var ConversationBar = function ConversationBar(_ref) {
62
74
  isRunning = _ref.isRunning,
63
75
  onKeyDown = _ref.onKeyDown,
64
76
  onSend = _ref.onSend,
65
- onCancel = _ref.onCancel;
77
+ onCancel = _ref.onCancel,
78
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
66
79
 
67
80
  var _useI18n = (0, _twakeI18n.useI18n)(),
68
81
  t = _useI18n.t;
@@ -95,8 +108,8 @@ var ConversationBar = function ConversationBar(_ref) {
95
108
 
96
109
  return /*#__PURE__*/_react2.default.createElement("div", {
97
110
  className: "u-w-100 u-maw-7 u-mh-auto"
98
- }, /*#__PURE__*/_react2.default.createElement(_SearchBar.default, {
99
- className: styles['conversationBar'],
111
+ }, /*#__PURE__*/_react2.default.createElement(_SearchBar.default, (0, _extends2.default)({}, props, {
112
+ className: (0, _classnames.default)(styles['conversationBar'], (0, _defineProperty2.default)({}, styles['conversationBar--mobile'], isMobile)),
100
113
  icon: null,
101
114
  size: "auto",
102
115
  placeholder: t('assistant.search.placeholder'),
@@ -147,7 +160,7 @@ var ConversationBar = function ConversationBar(_ref) {
147
160
  onKeyDown: handleKeyDown
148
161
  }
149
162
  }
150
- }));
163
+ })));
151
164
  };
152
165
 
153
166
  var _default = ConversationBar;
@@ -9,6 +9,8 @@ exports.default = void 0;
9
9
 
10
10
  var _react = require("@assistant-ui/react");
11
11
 
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
12
14
  var _react2 = _interopRequireWildcard(require("react"));
13
15
 
14
16
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
@@ -35,6 +37,9 @@ var ConversationComposer = function ConversationComposer() {
35
37
  var isRunning = (0, _react.useThread)(function (state) {
36
38
  return state.isRunning;
37
39
  });
40
+ var isThreadEmpty = (0, _react.useThread)(function (state) {
41
+ return state.messages.length === 0;
42
+ });
38
43
 
39
44
  var _useAssistant = (0, _AssistantProvider.useAssistant)(),
40
45
  setOpenedKnowledgePanel = _useAssistant.setOpenedKnowledgePanel;
@@ -64,8 +69,12 @@ var ConversationComposer = function ConversationComposer() {
64
69
  }
65
70
  }, [isMobile, handleSend]);
66
71
  return /*#__PURE__*/_react2.default.createElement(_react.ComposerPrimitive.Root, {
67
- className: "u-w-100 u-maw-7 u-mh-auto"
72
+ className: (0, _classnames.default)('u-w-100 u-maw-7 u-mh-auto', {
73
+ 'u-card u-bxz u-elevation-1': isMobile
74
+ })
68
75
  }, /*#__PURE__*/_react2.default.createElement(_ConversationBar.default, {
76
+ elevation: isMobile ? 0 : 1,
77
+ disabledHover: !!isMobile,
69
78
  value: value,
70
79
  isEmpty: isEmpty,
71
80
  isRunning: isRunning,
@@ -74,7 +83,9 @@ var ConversationComposer = function ConversationComposer() {
74
83
  onSend: handleSend
75
84
  }), /*#__PURE__*/_react2.default.createElement("div", {
76
85
  className: "u-flex u-flex-items-center u-flex-justify-between u-mt-1"
77
- }, (0, _cozyFlags.default)('cozy.create-assistant.enabled') && /*#__PURE__*/_react2.default.createElement(_AssistantSelection.default, null), (0, _cozyFlags.default)('cozy.source-knowledge.enabled') && /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
86
+ }, (0, _cozyFlags.default)('cozy.create-assistant.enabled') && /*#__PURE__*/_react2.default.createElement(_AssistantSelection.default, {
87
+ disabled: !isThreadEmpty
88
+ }), (0, _cozyFlags.default)('cozy.source-knowledge.enabled') && /*#__PURE__*/_react2.default.createElement(_TwakeKnowledgeSelector.default, {
78
89
  onSelectTwakeKnowledge: setOpenedKnowledgePanel
79
90
  })));
80
91
  };
@@ -17,22 +17,23 @@ var _twakeI18n = require("twake-i18n");
17
17
 
18
18
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
19
19
 
20
- var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
21
-
22
- var _Assistant = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Assistant"));
23
-
24
20
  var _ListItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItem"));
25
21
 
26
22
  var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
27
23
 
28
24
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
29
25
 
26
+ var _CozyTheme = require("cozy-ui-plus/dist/providers/CozyTheme");
27
+
30
28
  var _ConversationActions = _interopRequireDefault(require("./ConversationActions"));
31
29
 
30
+ var _AssistantAvatar = _interopRequireDefault(require("../Assistant/AssistantAvatar"));
31
+
32
32
  var _helpers = require("../helpers");
33
33
 
34
34
  var styles = {
35
35
  "conversationBar": "styles__conversationBar___2J-Us",
36
+ "conversationBar--mobile": "styles__conversationBar--mobile___1jdg8",
36
37
  "conversationBar-input": "styles__conversationBar-input___2DfdZ",
37
38
  "chatConversation": "styles__chatConversation___2EmkA",
38
39
  "conversationHeaderBar": "styles__conversationHeaderBar___C8tlD",
@@ -51,7 +52,8 @@ var styles = {
51
52
  "cozyThread-messageContent": "styles__cozyThread-messageContent___2HjdB",
52
53
  "conversation-list-item": "styles__conversation-list-item___rQapI",
53
54
  "conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
54
- "conversation-list-item--selected": "styles__conversation-list-item--selected___2D5_3"
55
+ "conversation-list-item--selected--light": "styles__conversation-list-item--selected--light___3WvIn",
56
+ "conversation-list-item--selected--dark": "styles__conversation-list-item--selected--dark___JDQlY"
55
57
  };
56
58
 
57
59
  var ConversationListItem = function ConversationListItem(_ref) {
@@ -65,12 +67,15 @@ var ConversationListItem = function ConversationListItem(_ref) {
65
67
  t = _useI18n.t,
66
68
  lang = _useI18n.lang;
67
69
 
70
+ var _useCozyTheme = (0, _CozyTheme.useCozyTheme)(),
71
+ theme = _useCozyTheme.type;
72
+
68
73
  return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
69
74
  button: true,
70
75
  onClick: function onClick() {
71
76
  return onOpenConversation(conversation._id);
72
77
  },
73
- className: (0, _classnames.default)('u-bdrs-4 u-ov-hidden u-mb-half', styles['conversation-list-item'], (0, _defineProperty2.default)({}, styles['conversation-list-item--selected'], selected)),
78
+ className: (0, _classnames.default)('u-bdrs-4 u-ov-hidden u-mb-half', styles['conversation-list-item'], (0, _defineProperty2.default)({}, styles["conversation-list-item--selected--".concat(theme)], selected)),
74
79
  selected: selected
75
80
  }, /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
76
81
  primary: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
@@ -85,9 +90,10 @@ var ConversationListItem = function ConversationListItem(_ref) {
85
90
  }, (0, _helpers.getDescriptionOfConversation)(conversation)), /*#__PURE__*/_react.default.createElement(_Typography.default, {
86
91
  variant: "h6",
87
92
  className: "u-flex u-flex-items-center u-coolGrey"
88
- }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
89
- icon: _Assistant.default,
90
- className: "u-mr-half"
93
+ }, /*#__PURE__*/_react.default.createElement(_AssistantAvatar.default, {
94
+ assistant: conversation.assistant,
95
+ className: "u-mr-half",
96
+ isSmall: true
91
97
  }), (0, _helpers.formatConversationDate)((_conversation$cozyMet = conversation.cozyMetadata) === null || _conversation$cozyMet === void 0 ? void 0 : _conversation$cozyMet.updatedAt, t, lang)))
92
98
  }));
93
99
  };