cozy-search 2.10.0 → 2.11.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 (54) hide show
  1. package/dist/assets/conversation.svg +1 -0
  2. package/dist/components/Assistant/AssistantContainer.js +1 -3
  3. package/dist/components/AssistantDesktop.d.ts +1 -0
  4. package/dist/components/AssistantDesktop.js +2 -1
  5. package/dist/components/AssistantMobile.js +1 -2
  6. package/dist/components/AssistantProvider.d.ts +1 -0
  7. package/dist/components/AssistantProvider.js +6 -3
  8. package/dist/components/Conversations/Conversation.js +17 -9
  9. package/dist/components/Conversations/ConversationActions.js +1 -0
  10. package/dist/components/Conversations/ConversationBar.d.ts +2 -4
  11. package/dist/components/Conversations/ConversationBar.js +23 -8
  12. package/dist/components/Conversations/ConversationComposer.js +14 -73
  13. package/dist/components/Conversations/ConversationComposerCompact.d.ts +1 -0
  14. package/dist/components/Conversations/ConversationComposerCompact.js +120 -0
  15. package/dist/components/Conversations/ConversationComposerRoot.d.ts +4 -0
  16. package/dist/components/Conversations/ConversationComposerRoot.js +86 -0
  17. package/dist/components/Conversations/ConversationListItem.js +17 -5
  18. package/dist/components/Conversations/ConversationListItemWider.js +5 -0
  19. package/dist/components/Conversations/ConversationSendButton.d.ts +1 -0
  20. package/dist/components/Conversations/ConversationSendButton.js +49 -0
  21. package/dist/components/Conversations/styles.styl +32 -1
  22. package/dist/components/Messages/AssistantMessage.js +0 -2
  23. package/dist/components/Messages/UserMessage.js +1 -12
  24. package/dist/components/Messages/styles.styl +3 -7
  25. package/dist/components/Search/NotFoundConversation.js +71 -25
  26. package/dist/components/Search/SearchBarDesktop.d.ts +2 -1
  27. package/dist/components/Search/SearchBarDesktop.js +4 -4
  28. package/dist/components/Search/SearchBarMobile.js +5 -0
  29. package/dist/components/Search/SearchConversation.js +2 -3
  30. package/dist/components/Search/SuggestionsPlaceholder.js +1 -2
  31. package/dist/components/Search/styles.styl +0 -5
  32. package/dist/components/Sidebar/SidebarConversations.d.ts +1 -0
  33. package/dist/components/Sidebar/SidebarConversations.js +84 -0
  34. package/dist/components/Sidebar/SidebarDesktop.d.ts +7 -0
  35. package/dist/components/Sidebar/SidebarDesktop.js +57 -0
  36. package/dist/components/Sidebar/SidebarHeader.d.ts +6 -0
  37. package/dist/components/Sidebar/SidebarHeader.js +67 -0
  38. package/dist/components/Sidebar/SidebarMobile.d.ts +8 -0
  39. package/dist/components/Sidebar/SidebarMobile.js +79 -0
  40. package/dist/components/Sidebar/SidebarMobileToolbar.d.ts +3 -0
  41. package/dist/components/Sidebar/SidebarMobileToolbar.js +55 -0
  42. package/dist/components/Sidebar/SidebarNewChatButton.d.ts +4 -0
  43. package/dist/components/Sidebar/SidebarNewChatButton.js +68 -0
  44. package/dist/components/Sidebar/SidebarToggleButton.d.ts +3 -0
  45. package/dist/components/Sidebar/SidebarToggleButton.js +35 -0
  46. package/dist/components/Sidebar/index.js +26 -167
  47. package/dist/components/Sidebar/styles.styl +29 -28
  48. package/dist/components/Views/AssistantView.d.ts +7 -1
  49. package/dist/components/Views/AssistantView.js +11 -2
  50. package/dist/stylesheet.css +56 -43
  51. package/package.json +3 -3
  52. package/dist/components/Containers/PrettyScrollbar.d.ts +0 -5
  53. package/dist/components/Containers/PrettyScrollbar.js +0 -27
  54. package/dist/components/Containers/styles.styl +0 -7
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="none" viewBox="0 0 32 32"><path fill="url(#paint0_linear_37801_44158)" fill-opacity=".9" d="M21.222 0c3.175 0 4.702.295 6.289 1.143a8.06 8.06 0 0 1 3.346 3.346C31.705 6.076 32 7.602 32 10.778v10.444c0 3.175-.295 4.702-1.143 6.289a8.06 8.06 0 0 1-3.346 3.346C25.924 31.705 24.398 32 21.222 32H10.778c-3.176 0-4.702-.295-6.289-1.143a8.06 8.06 0 0 1-3.346-3.346C.295 25.924 0 24.398 0 21.222V10.778c0-3.176.295-4.702 1.143-6.289A8.06 8.06 0 0 1 4.49 1.143C6.076.295 7.602 0 10.778 0zm0 2.91H10.778c-2.736 0-3.81.206-4.917.799A5.15 5.15 0 0 0 3.71 5.86c-.593 1.107-.8 2.18-.8 4.917v10.444c0 2.736.207 3.81.8 4.917a5.15 5.15 0 0 0 2.15 2.152c1.107.593 2.18.8 4.917.8h10.444c2.736 0 3.81-.207 4.917-.8a5.15 5.15 0 0 0 2.152-2.152c.593-1.107.8-2.18.8-4.917V10.778c0-2.736-.207-3.81-.8-4.917a5.15 5.15 0 0 0-2.15-2.151c-1.107-.593-2.18-.8-4.917-.8m-6.677 18.18a1.455 1.455 0 0 1 0 2.91H8.728a1.455 1.455 0 1 1 0-2.91zm8.728-6.544a1.455 1.455 0 1 1 0 2.909H8.727a1.455 1.455 0 1 1 0-2.91zm0-6.546a1.455 1.455 0 1 1 0 2.91H8.727a1.455 1.455 0 1 1 0-2.91z"/><path fill="url(#paint1_linear_37801_44158)" fill-opacity=".9" d="M22.167 20.006a.44.44 0 0 0-.355.316l-.001.006-.465 1.806a.3.3 0 0 1-.212.212l-1.806.466-.007.002a.442.442 0 0 0 0 .85l.007.001 1.806.466a.3.3 0 0 1 .212.211l.465 1.806.001.006a.441.441 0 0 0 .85 0l.002-.006.466-1.806a.3.3 0 0 1 .212-.211l1.806-.466.004-.001a.442.442 0 0 0 0-.852h-.004l-1.807-.466a.3.3 0 0 1-.211-.212l-.465-1.806-.002-.006a.44.44 0 0 0-.497-.316"/><defs><linearGradient id="paint0_linear_37801_44158" x1="0" x2="86.619" y1="16" y2="78.512" gradientUnits="userSpaceOnUse"><stop stop-color="#25c3f8"/><stop offset=".319" stop-color="#666fde"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="paint1_linear_37801_44158" x1="19" x2="36.531" y1="23.238" y2="35.89" gradientUnits="userSpaceOnUse"><stop stop-color="#00b7ff"/><stop offset=".567" stop-color="#6a70e0"/><stop offset="1" stop-color="#ff0"/></linearGradient></defs></svg>
@@ -15,8 +15,6 @@ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
15
15
 
16
16
  var _AssistantProvider = require("../AssistantProvider");
17
17
 
18
- var _PrettyScrollbar = _interopRequireDefault(require("../Containers/PrettyScrollbar"));
19
-
20
18
  var _Conversation = _interopRequireDefault(require("../Conversations/Conversation"));
21
19
 
22
20
  var _CozyAssistantRuntimeProvider = _interopRequireDefault(require("../CozyAssistantRuntimeProvider"));
@@ -52,7 +50,7 @@ var AssistantContainer = function AssistantContainer() {
52
50
  className: (0, _classnames.default)('u-flex u-ov-hidden u-h-100', styles['assistant-container'])
53
51
  }, /*#__PURE__*/_react.default.createElement(_Sidebar.default, {
54
52
  className: "u-pb-0-t u-pb-1"
55
- }), /*#__PURE__*/_react.default.createElement(_PrettyScrollbar.default, {
53
+ }), /*#__PURE__*/_react.default.createElement("div", {
56
54
  className: "u-flex-auto u-flex u-flex-column u-pb-0-t u-pb-1 u-ov-hidden"
57
55
  }, isOpenSearchConversation && (0, _cozyFlags.default)('cozy.assistant.search-conversation.enabled') ? /*#__PURE__*/_react.default.createElement(_SearchConversation.default, null) : /*#__PURE__*/_react.default.createElement(_CozyAssistantRuntimeProvider.default, null, /*#__PURE__*/_react.default.createElement(_Conversation.default, null))));
58
56
  };
@@ -12,6 +12,7 @@ declare namespace AssistantDesktop {
12
12
  hasHalfBorderRadius: PropTypes.Requireable<boolean>;
13
13
  className: PropTypes.Requireable<string>;
14
14
  disabledHover: PropTypes.Requireable<boolean>;
15
+ disabledAssistantButton: PropTypes.Requireable<boolean>;
15
16
  }>>;
16
17
  }>>;
17
18
  }
@@ -40,7 +40,8 @@ AssistantDesktop.propTypes = {
40
40
  size: _propTypes.default.string,
41
41
  hasHalfBorderRadius: _propTypes.default.bool,
42
42
  className: _propTypes.default.string,
43
- disabledHover: _propTypes.default.bool
43
+ disabledHover: _propTypes.default.bool,
44
+ disabledAssistantButton: _propTypes.default.bool
44
45
  })
45
46
  })
46
47
  };
@@ -29,8 +29,7 @@ var styles = {
29
29
  "searchBarDesktop--result": "styles__searchBarDesktop--result___2bQQy",
30
30
  "suggestionsPlaceholder": "styles__suggestionsPlaceholder___y-vsv",
31
31
  "search-bar-icon": "styles__search-bar-icon___1affF",
32
- "search-bar--mobile": "styles__search-bar--mobile___1CSb2",
33
- "not-found-icon": "styles__not-found-icon___1as3P"
32
+ "search-bar--mobile": "styles__search-bar--mobile___1CSb2"
34
33
  };
35
34
 
36
35
  var AssistantMobile = function AssistantMobile(_ref) {
@@ -15,6 +15,7 @@ export interface AssistantContextValue {
15
15
  setIsOpenSearchConversation: (isOpen: boolean) => void
16
16
  websearchEnabled: boolean
17
17
  setWebsearchEnabled: React.Dispatch<React.SetStateAction<boolean>>
18
+ hasCompactPrompt: boolean
18
19
  }
19
20
 
20
21
  export function useAssistant(): AssistantContextValue
@@ -38,7 +38,9 @@ var useAssistant = function useAssistant() {
38
38
  exports.useAssistant = useAssistant;
39
39
 
40
40
  var AssistantProvider = function AssistantProvider(_ref) {
41
- var children = _ref.children;
41
+ var children = _ref.children,
42
+ _ref$hasCompactPrompt = _ref.hasCompactPrompt,
43
+ hasCompactPrompt = _ref$hasCompactPrompt === void 0 ? false : _ref$hasCompactPrompt;
42
44
 
43
45
  var _useState = (0, _react.useState)(false),
44
46
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -90,9 +92,10 @@ var AssistantProvider = function AssistantProvider(_ref) {
90
92
  setSelectedAssistantId: setSelectedAssistantId,
91
93
  setIsOpenSearchConversation: setIsOpenSearchConversation,
92
94
  websearchEnabled: websearchEnabled,
93
- setWebsearchEnabled: setWebsearchEnabled
95
+ setWebsearchEnabled: setWebsearchEnabled,
96
+ hasCompactPrompt: hasCompactPrompt
94
97
  };
95
- }, [isOpenCreateAssistant, isOpenDeleteAssistant, isOpenEditAssistant, assistantIdInAction, selectedAssistantId, isOpenSearchConversation, websearchEnabled]);
98
+ }, [isOpenCreateAssistant, isOpenDeleteAssistant, isOpenEditAssistant, assistantIdInAction, selectedAssistantId, isOpenSearchConversation, websearchEnabled, hasCompactPrompt]);
96
99
  return /*#__PURE__*/_react.default.createElement(AssistantContext.Provider, {
97
100
  value: value
98
101
  }, children);
@@ -27,6 +27,10 @@ var _twakeI18n = require("twake-i18n");
27
27
 
28
28
  var _ConversationComposer = _interopRequireDefault(require("./ConversationComposer"));
29
29
 
30
+ var _ConversationComposerCompact = require("./ConversationComposerCompact");
31
+
32
+ var _AssistantProvider = require("../AssistantProvider");
33
+
30
34
  var _AssistantMessage = _interopRequireDefault(require("../Messages/AssistantMessage"));
31
35
 
32
36
  var _UserMessage = _interopRequireDefault(require("../Messages/UserMessage"));
@@ -39,6 +43,8 @@ var styles = {
39
43
  "composerContainer": "styles__composerContainer___3bNfY",
40
44
  "composerContainer--mobile": "styles__composerContainer--mobile___nIYa-",
41
45
  "composerContainer--mobile-dark": "styles__composerContainer--mobile-dark___12Go9",
46
+ "composerContainer--compact": "styles__composerContainer--compact___35e18",
47
+ "composerContainer--single-line": "styles__composerContainer--single-line___2yeWP",
42
48
  "composer-dock": "styles__composer-dock___2nPT8",
43
49
  "composerActions": "styles__composerActions___2xQEH",
44
50
  "welcome": "styles__welcome___ozY_t",
@@ -71,6 +77,9 @@ var styles = {
71
77
  "conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
72
78
  "conversation-list-item--selected": "styles__conversation-list-item--selected___2D5_3",
73
79
  "conversation-list-item--wider": "styles__conversation-list-item--wider___2Tl2c",
80
+ "conversation-list-item-container": "styles__conversation-list-item-container___36VTD",
81
+ "conversation-list-item-menu-button": "styles__conversation-list-item-menu-button___2ZYvH",
82
+ "conversation-list-item-secondary-action": "styles__conversation-list-item-secondary-action___2vwnw",
74
83
  "conversation-list-item-text": "styles__conversation-list-item-text___31VBM",
75
84
  "conversation-list-item-title": "styles__conversation-list-item-title___3je_6",
76
85
  "conversation-list-item-subtitle": "styles__conversation-list-item-subtitle___3e_h0",
@@ -91,6 +100,9 @@ var Conversation = function Conversation(_ref) {
91
100
  var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
92
101
  isMobile = _useBreakpoints.isMobile;
93
102
 
103
+ var _useAssistant = (0, _AssistantProvider.useAssistant)(),
104
+ hasCompactPrompt = _useAssistant.hasCompactPrompt;
105
+
94
106
  var isThreadEmpty = (0, _react.useThread)(function (state) {
95
107
  return state.messages.length === 0;
96
108
  }); // On mobile the conversation scrolls under the sidebar bar: once it has,
@@ -105,18 +117,14 @@ var Conversation = function Conversation(_ref) {
105
117
  return /*#__PURE__*/_react2.default.createElement(_react.ThreadPrimitive.Root, {
106
118
  // The gutters: the messages and the composer are centered up to a max
107
119
  // width, and keep a margin from the edges when the screen is narrower
108
- className: (0, _classnames.default)('u-flex u-flex-column u-flex-items-center u-h-100 u-bxz u-pos-relative', isMobile ? 'u-ph-1' : 'u-ph-2', className, {
109
- 'u-flex-justify-between': !isThreadEmpty,
110
- 'u-flex-justify-center': isThreadEmpty
111
- })
120
+ className: (0, _classnames.default)('u-flex u-flex-column u-flex-items-center u-flex-justify-between u-h-100 u-bxz u-pos-relative', isMobile ? 'u-ph-1' : 'u-ph-2', className)
112
121
  }, /*#__PURE__*/_react2.default.createElement(_react.ThreadPrimitive.Empty, null, /*#__PURE__*/_react2.default.createElement("div", {
113
- className: (0, _classnames.default)('u-pos-relative u-w-100 u-maw-7 u-mh-auto u-mb-3 u-flex u-flex-items-center u-flex-justify-center', styles['welcome'])
122
+ className: (0, _classnames.default)('u-pos-relative u-w-100 u-maw-7 u-mh-auto u-mb-3 u-flex u-flex-auto u-flex-items-center u-flex-justify-center', styles['welcome'])
114
123
  }, /*#__PURE__*/_react2.default.createElement("div", {
115
124
  "aria-hidden": "true",
116
125
  className: (0, _classnames.default)(styles['welcome-halo'], (0, _defineProperty2.default)({}, styles['welcome-halo--dark'], !isLight))
117
126
  }), /*#__PURE__*/_react2.default.createElement(_Typography.default, {
118
- variant: "h3",
119
- component: "h2",
127
+ variant: "h2",
120
128
  className: (0, _classnames.default)('u-pos-relative u-fw-normal u-ta-center', styles['welcome-title'])
121
129
  }, t('assistant.message.welcome')))), isMobile && !isThreadEmpty && /*#__PURE__*/_react2.default.createElement("div", {
122
130
  "aria-hidden": "true",
@@ -138,11 +146,11 @@ var Conversation = function Conversation(_ref) {
138
146
  }
139
147
  }))), /*#__PURE__*/_react2.default.createElement("div", {
140
148
  className: (0, _classnames.default)('u-w-100', (0, _defineProperty2.default)({}, styles['composer-dock'], !isThreadEmpty))
141
- }, /*#__PURE__*/_react2.default.createElement(_ConversationComposer.default, null), /*#__PURE__*/_react2.default.createElement(_Typography.default, {
149
+ }, hasCompactPrompt ? /*#__PURE__*/_react2.default.createElement(_ConversationComposerCompact.ConversationComposerCompact, null) : /*#__PURE__*/_react2.default.createElement(_ConversationComposer.default, null), /*#__PURE__*/_react2.default.createElement(_Typography.default, {
142
150
  variant: "caption",
143
151
  color: "textSecondary",
144
152
  component: "p",
145
- className: "u-w-100 u-maw-7 u-mh-auto u-mt-half u-mb-0 u-ta-center"
153
+ className: "u-w-100 u-maw-5-t u-maw-7 u-mh-auto u-mt-1-half u-mb-0 u-ta-center"
146
154
  }, t('assistant.disclaimer'))));
147
155
  };
148
156
 
@@ -191,6 +191,7 @@ var ConversationActions = function ConversationActions(_ref) {
191
191
  className: buttonClassName,
192
192
  size: "small",
193
193
  ref: anchorRef,
194
+ "aria-expanded": isMenuOpen,
194
195
  onClick: toggleMenu
195
196
  }, /*#__PURE__*/_react.default.createElement(_twakeIcons.Icon, {
196
197
  icon: _twakeIcons.Dots
@@ -1,7 +1,5 @@
1
1
  export default ConversationBar;
2
- declare function ConversationBar({ value, isEmpty, onKeyDown, ...props }: {
2
+ declare function ConversationBar({ onHeightChange, ...props }: {
3
3
  [x: string]: any;
4
- value: any;
5
- isEmpty: any;
6
- onKeyDown: any;
4
+ onHeightChange: any;
7
5
  }): JSX.Element;
@@ -27,7 +27,7 @@ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
27
27
 
28
28
  var _twakeI18n = require("twake-i18n");
29
29
 
30
- var _excluded = ["value", "isEmpty", "onKeyDown"];
30
+ var _excluded = ["onHeightChange"];
31
31
 
32
32
  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
33
 
@@ -37,6 +37,8 @@ var styles = {
37
37
  "composerContainer": "styles__composerContainer___3bNfY",
38
38
  "composerContainer--mobile": "styles__composerContainer--mobile___nIYa-",
39
39
  "composerContainer--mobile-dark": "styles__composerContainer--mobile-dark___12Go9",
40
+ "composerContainer--compact": "styles__composerContainer--compact___35e18",
41
+ "composerContainer--single-line": "styles__composerContainer--single-line___2yeWP",
40
42
  "composer-dock": "styles__composer-dock___2nPT8",
41
43
  "composerActions": "styles__composerActions___2xQEH",
42
44
  "welcome": "styles__welcome___ozY_t",
@@ -69,6 +71,9 @@ var styles = {
69
71
  "conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
70
72
  "conversation-list-item--selected": "styles__conversation-list-item--selected___2D5_3",
71
73
  "conversation-list-item--wider": "styles__conversation-list-item--wider___2Tl2c",
74
+ "conversation-list-item-container": "styles__conversation-list-item-container___36VTD",
75
+ "conversation-list-item-menu-button": "styles__conversation-list-item-menu-button___2ZYvH",
76
+ "conversation-list-item-secondary-action": "styles__conversation-list-item-secondary-action___2vwnw",
72
77
  "conversation-list-item-text": "styles__conversation-list-item-text___31VBM",
73
78
  "conversation-list-item-title": "styles__conversation-list-item-title___3je_6",
74
79
  "conversation-list-item-subtitle": "styles__conversation-list-item-subtitle___3e_h0",
@@ -76,9 +81,7 @@ var styles = {
76
81
  };
77
82
 
78
83
  var ConversationBar = function ConversationBar(_ref) {
79
- var value = _ref.value,
80
- isEmpty = _ref.isEmpty,
81
- onKeyDown = _ref.onKeyDown,
84
+ var onHeightChange = _ref.onHeightChange,
82
85
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
83
86
 
84
87
  var _useI18n = (0, _twakeI18n.useI18n)(),
@@ -87,6 +90,13 @@ var ConversationBar = function ConversationBar(_ref) {
87
90
  var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
88
91
  isMobile = _useBreakpoints.isMobile;
89
92
 
93
+ var composerRuntime = (0, _react.useComposerRuntime)();
94
+ var value = (0, _react.useComposer)(function (state) {
95
+ return state.text;
96
+ });
97
+ var isEmpty = (0, _react.useComposer)(function (state) {
98
+ return state.isEmpty;
99
+ });
90
100
  var inputRef = (0, _react2.useRef)(); // to adjust input height for multiline when typing in it
91
101
  // eslint-disable-next-line react-hooks/refs
92
102
 
@@ -97,9 +107,13 @@ var ConversationBar = function ConversationBar(_ref) {
97
107
  }
98
108
  });
99
109
 
100
- var handleKeyDown = function handleKeyDown(e) {
101
- if (isEmpty) return;
102
- onKeyDown(e);
110
+ var handleKeyDown = function handleKeyDown(ev) {
111
+ if (isEmpty || isMobile) return;
112
+
113
+ if (ev.key === 'Enter' && !ev.shiftKey) {
114
+ ev.preventDefault();
115
+ composerRuntime.send();
116
+ }
103
117
  };
104
118
 
105
119
  return /*#__PURE__*/_react2.default.createElement(_SearchBar.default, (0, _extends2.default)({}, props, {
@@ -118,7 +132,8 @@ var ConversationBar = function ConversationBar(_ref) {
118
132
  rows: 1,
119
133
  multiline: true,
120
134
  inputProps: {
121
- className: styles['conversationBar-input']
135
+ className: styles['conversationBar-input'],
136
+ onHeightChange: onHeightChange
122
137
  },
123
138
  autoFocus: !isMobile,
124
139
  inputComponent: _react.ComposerPrimitive.Input,
@@ -7,28 +7,22 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
10
  var _react = require("@assistant-ui/react");
15
11
 
16
12
  var _classnames = _interopRequireDefault(require("classnames"));
17
13
 
18
14
  var _react2 = _interopRequireWildcard(require("react"));
19
15
 
20
- var _twakeIcons = require("@linagora/twake-icons");
21
-
22
16
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
23
17
 
24
- var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
25
-
26
18
  var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
27
19
 
28
- var _CozyTheme = require("cozy-ui/transpiled/react/providers/CozyTheme");
29
-
30
20
  var _ConversationBar = _interopRequireDefault(require("./ConversationBar"));
31
21
 
22
+ var _ConversationComposerRoot = require("./ConversationComposerRoot");
23
+
24
+ var _ConversationSendButton = require("./ConversationSendButton");
25
+
32
26
  var _AssistantSelection = _interopRequireDefault(require("../Assistant/AssistantSelection"));
33
27
 
34
28
  var _AssistantProvider = require("../AssistantProvider");
@@ -43,6 +37,8 @@ var styles = {
43
37
  "composerContainer": "styles__composerContainer___3bNfY",
44
38
  "composerContainer--mobile": "styles__composerContainer--mobile___nIYa-",
45
39
  "composerContainer--mobile-dark": "styles__composerContainer--mobile-dark___12Go9",
40
+ "composerContainer--compact": "styles__composerContainer--compact___35e18",
41
+ "composerContainer--single-line": "styles__composerContainer--single-line___2yeWP",
46
42
  "composer-dock": "styles__composer-dock___2nPT8",
47
43
  "composerActions": "styles__composerActions___2xQEH",
48
44
  "welcome": "styles__welcome___ozY_t",
@@ -75,6 +71,9 @@ var styles = {
75
71
  "conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
76
72
  "conversation-list-item--selected": "styles__conversation-list-item--selected___2D5_3",
77
73
  "conversation-list-item--wider": "styles__conversation-list-item--wider___2Tl2c",
74
+ "conversation-list-item-container": "styles__conversation-list-item-container___36VTD",
75
+ "conversation-list-item-menu-button": "styles__conversation-list-item-menu-button___2ZYvH",
76
+ "conversation-list-item-secondary-action": "styles__conversation-list-item-secondary-action___2vwnw",
78
77
  "conversation-list-item-text": "styles__conversation-list-item-text___31VBM",
79
78
  "conversation-list-item-title": "styles__conversation-list-item-title___3je_6",
80
79
  "conversation-list-item-subtitle": "styles__conversation-list-item-subtitle___3e_h0",
@@ -82,15 +81,9 @@ var styles = {
82
81
  };
83
82
 
84
83
  var ConversationComposer = function ConversationComposer() {
85
- var _cx;
86
-
87
84
  var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
88
85
  isMobile = _useBreakpoints.isMobile;
89
86
 
90
- var _useCozyTheme = (0, _CozyTheme.useCozyTheme)(),
91
- isLight = _useCozyTheme.isLight;
92
-
93
- var composerRuntime = (0, _react.useComposerRuntime)();
94
87
  var isRunning = (0, _react.useThread)(function (state) {
95
88
  return state.isRunning;
96
89
  });
@@ -102,72 +95,20 @@ var ConversationComposer = function ConversationComposer() {
102
95
  websearchEnabled = _useAssistant.websearchEnabled,
103
96
  setWebsearchEnabled = _useAssistant.setWebsearchEnabled;
104
97
 
105
- var value = (0, _react.useComposer)(function (state) {
106
- return state.text;
107
- });
108
- var isEmpty = (0, _react.useComposer)(function (state) {
109
- return state.isEmpty;
110
- });
111
- var handleSend = (0, _react2.useCallback)(function () {
112
- composerRuntime.send();
113
- }, [composerRuntime]);
114
- var handleCancel = (0, _react2.useCallback)(function () {
115
- composerRuntime.cancel();
116
- }, [composerRuntime]);
117
- var handleKeyDown = (0, _react2.useCallback)(function (ev) {
118
- if (!isMobile) {
119
- if (ev.shiftKey && ev.key === 'Enter') {
120
- return;
121
- }
122
-
123
- if (ev.key === 'Enter') {
124
- ev.preventDefault();
125
- handleSend();
126
- }
127
- }
128
- }, [isMobile, handleSend]);
129
98
  var handleToggleWebsearch = (0, _react2.useCallback)(function () {
130
99
  if (isRunning) return;
131
100
  setWebsearchEnabled(function (prev) {
132
101
  return !prev;
133
102
  });
134
- }, [isRunning, setWebsearchEnabled]);
135
-
136
- var sendButton = /*#__PURE__*/_react2.default.createElement(_Buttons.default, (0, _extends2.default)({
137
- size: "small",
138
- className: "u-miw-auto u-w-2 u-h-2 u-bdrs-circle u-flex-shrink-0",
139
- classes: {
140
- label: 'u-flex u-w-auto'
141
- }
142
- }, isRunning ? {
143
- label: /*#__PURE__*/_react2.default.createElement(_twakeIcons.Icon, {
144
- icon: _twakeIcons.Stop,
145
- size: 12
146
- }),
147
- onClick: handleCancel
148
- } : {
149
- variant: 'primary',
150
- label: /*#__PURE__*/_react2.default.createElement(_twakeIcons.Icon, {
151
- icon: _twakeIcons.ArrowUp,
152
- size: 16
153
- }),
154
- onClick: handleSend
155
- })); // On mobile the send button sits by the text, the sources are icons and
103
+ }, [isRunning, setWebsearchEnabled]); // On mobile the send button sits by the text, the sources are icons and
156
104
  // the assistant chip picks the assistant; on desktop the send button ends
157
105
  // the chips row and the assistant is picked from the sidebar.
158
106
 
159
-
160
- return /*#__PURE__*/_react2.default.createElement(_react.ComposerPrimitive.Root, {
161
- className: (0, _classnames.default)('u-w-100 u-maw-7 u-mh-auto u-bxz', styles['composerContainer'], (_cx = {}, (0, _defineProperty2.default)(_cx, styles['composerContainer--mobile'], isMobile), (0, _defineProperty2.default)(_cx, styles['composerContainer--mobile-dark'], isMobile && !isLight), _cx))
162
- }, /*#__PURE__*/_react2.default.createElement("div", {
107
+ return /*#__PURE__*/_react2.default.createElement(_ConversationComposerRoot.ConversationComposerRoot, null, /*#__PURE__*/_react2.default.createElement("div", {
163
108
  className: "u-flex u-flex-items-start u-flex-justify-between"
164
- }, /*#__PURE__*/_react2.default.createElement(_ConversationBar.default, {
165
- value: value,
166
- isEmpty: isEmpty,
167
- onKeyDown: handleKeyDown
168
- }), isMobile && /*#__PURE__*/_react2.default.createElement("div", {
109
+ }, /*#__PURE__*/_react2.default.createElement(_ConversationBar.default, null), isMobile && /*#__PURE__*/_react2.default.createElement("div", {
169
110
  className: "u-flex u-flex-items-center u-flex-shrink-0"
170
- }, sendButton)), /*#__PURE__*/_react2.default.createElement("div", {
111
+ }, /*#__PURE__*/_react2.default.createElement(_ConversationSendButton.ConversationSendButton, null))), /*#__PURE__*/_react2.default.createElement("div", {
171
112
  className: (0, _classnames.default)('u-flex u-flex-items-center u-flex-justify-between', styles['composerActions'])
172
113
  }, /*#__PURE__*/_react2.default.createElement("div", {
173
114
  className: "u-flex u-flex-items-center u-flex-wrap"
@@ -183,7 +124,7 @@ var ConversationComposer = function ConversationComposer() {
183
124
  className: "u-ml-auto",
184
125
  websearchEnabled: websearchEnabled,
185
126
  onToggleWebsearch: handleToggleWebsearch
186
- }) : sendButton));
127
+ }) : /*#__PURE__*/_react2.default.createElement(_ConversationSendButton.ConversationSendButton, null)));
187
128
  };
188
129
 
189
130
  var _default = ConversationComposer;
@@ -0,0 +1 @@
1
+ export function ConversationComposerCompact(): JSX.Element;
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ConversationComposerCompact = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = require("@assistant-ui/react");
15
+
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+
18
+ var _react2 = _interopRequireWildcard(require("react"));
19
+
20
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
21
+
22
+ var _ConversationBar = _interopRequireDefault(require("./ConversationBar"));
23
+
24
+ var _ConversationComposerRoot = require("./ConversationComposerRoot");
25
+
26
+ var _ConversationSendButton = require("./ConversationSendButton");
27
+
28
+ 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); }
29
+
30
+ 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; }
31
+
32
+ var styles = {
33
+ "composerContainer": "styles__composerContainer___3bNfY",
34
+ "composerContainer--mobile": "styles__composerContainer--mobile___nIYa-",
35
+ "composerContainer--mobile-dark": "styles__composerContainer--mobile-dark___12Go9",
36
+ "composerContainer--compact": "styles__composerContainer--compact___35e18",
37
+ "composerContainer--single-line": "styles__composerContainer--single-line___2yeWP",
38
+ "composer-dock": "styles__composer-dock___2nPT8",
39
+ "composerActions": "styles__composerActions___2xQEH",
40
+ "welcome": "styles__welcome___ozY_t",
41
+ "welcome-halo": "styles__welcome-halo___3jlz_",
42
+ "welcome-halo--dark": "styles__welcome-halo--dark___fV9pN",
43
+ "welcome-title": "styles__welcome-title___sBOKX",
44
+ "conversationBar": "styles__conversationBar___2J-Us",
45
+ "conversationBar--mobile": "styles__conversationBar--mobile___1jdg8",
46
+ "viewport-fade-top": "styles__viewport-fade-top___3j8Lv",
47
+ "viewport-fade-top--visible": "styles__viewport-fade-top--visible___32uyl",
48
+ "conversationViewport": "styles__conversationViewport___24jYX",
49
+ "conversationViewport--filled": "styles__conversationViewport--filled___T2QFN",
50
+ "conversationBar-input": "styles__conversationBar-input___2DfdZ",
51
+ "chatConversation": "styles__chatConversation___2EmkA",
52
+ "conversationHeaderBar": "styles__conversationHeaderBar___C8tlD",
53
+ "conversationList": "styles__conversationList___2GCzV",
54
+ "conversationList--container": "styles__conversationList--container___2xRAG",
55
+ "conversationList--hidden": "styles__conversationList--hidden___20BsT",
56
+ "conversationListItem--selected": "styles__conversationListItem--selected___2jCyB",
57
+ "menuToggler": "styles__menuToggler___39GfB",
58
+ "menuToggler--disabled": "styles__menuToggler--disabled___15vd4",
59
+ "conversationChips-container": "styles__conversationChips-container___327dE",
60
+ "conversationChips-startIcon": "styles__conversationChips-startIcon___1yOVn",
61
+ "conversationChips-chipIcon": "styles__conversationChips-chipIcon___1wmF-",
62
+ "conversationChips-deleteIcon": "styles__conversationChips-deleteIcon___s9C40",
63
+ "is-warning": "styles__is-warning___3sa0v",
64
+ "conversationChips-chip": "styles__conversationChips-chip___2PqQv",
65
+ "cozyThread-messageContent": "styles__cozyThread-messageContent___2HjdB",
66
+ "conversation-list-item": "styles__conversation-list-item___rQapI",
67
+ "conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
68
+ "conversation-list-item--selected": "styles__conversation-list-item--selected___2D5_3",
69
+ "conversation-list-item--wider": "styles__conversation-list-item--wider___2Tl2c",
70
+ "conversation-list-item-container": "styles__conversation-list-item-container___36VTD",
71
+ "conversation-list-item-menu-button": "styles__conversation-list-item-menu-button___2ZYvH",
72
+ "conversation-list-item-secondary-action": "styles__conversation-list-item-secondary-action___2vwnw",
73
+ "conversation-list-item-text": "styles__conversation-list-item-text___31VBM",
74
+ "conversation-list-item-title": "styles__conversation-list-item-title___3je_6",
75
+ "conversation-list-item-subtitle": "styles__conversation-list-item-subtitle___3e_h0",
76
+ "conversation-list-item-meta": "styles__conversation-list-item-meta___3Zk-r"
77
+ };
78
+
79
+ var ConversationComposerCompact = function ConversationComposerCompact() {
80
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
81
+ isMobile = _useBreakpoints.isMobile;
82
+
83
+ var isEmpty = (0, _react.useComposer)(function (state) {
84
+ return state.isEmpty;
85
+ });
86
+
87
+ var _useState = (0, _react2.useState)(false),
88
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
89
+ isMultiline = _useState2[0],
90
+ setIsMultiline = _useState2[1]; // Stays multiline until emptied: once the send button leaves its side,
91
+ // the wider input could fit the text on one line and toggle in a loop
92
+
93
+
94
+ if (isEmpty && isMultiline) {
95
+ setIsMultiline(false);
96
+ }
97
+
98
+ var handleHeightChange = function handleHeightChange(height, _ref) {
99
+ var rowHeight = _ref.rowHeight;
100
+
101
+ if (height > rowHeight) {
102
+ setIsMultiline(true);
103
+ }
104
+ };
105
+
106
+ var isExpanded = !isMobile && isMultiline;
107
+ return /*#__PURE__*/_react2.default.createElement(_ConversationComposerRoot.ConversationComposerRoot, {
108
+ className: (0, _classnames.default)(styles['composerContainer--compact'], (0, _defineProperty2.default)({}, styles['composerContainer--single-line'], !isMobile && !isMultiline))
109
+ }, /*#__PURE__*/_react2.default.createElement("div", {
110
+ className: "u-flex u-flex-items-start u-flex-justify-between"
111
+ }, /*#__PURE__*/_react2.default.createElement(_ConversationBar.default, {
112
+ onHeightChange: handleHeightChange
113
+ }), !isExpanded && /*#__PURE__*/_react2.default.createElement("div", {
114
+ className: "u-flex u-flex-items-center u-flex-shrink-0"
115
+ }, /*#__PURE__*/_react2.default.createElement(_ConversationSendButton.ConversationSendButton, null))), isExpanded && /*#__PURE__*/_react2.default.createElement("div", {
116
+ className: (0, _classnames.default)('u-flex u-flex-justify-end', styles['composerActions'])
117
+ }, /*#__PURE__*/_react2.default.createElement(_ConversationSendButton.ConversationSendButton, null)));
118
+ };
119
+
120
+ exports.ConversationComposerCompact = ConversationComposerCompact;
@@ -0,0 +1,4 @@
1
+ export function ConversationComposerRoot({ className, children }: {
2
+ className: any;
3
+ children: any;
4
+ }): JSX.Element;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ConversationComposerRoot = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _react = require("@assistant-ui/react");
13
+
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
16
+ var _react2 = _interopRequireDefault(require("react"));
17
+
18
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
19
+
20
+ var _CozyTheme = require("cozy-ui/transpiled/react/providers/CozyTheme");
21
+
22
+ var styles = {
23
+ "composerContainer": "styles__composerContainer___3bNfY",
24
+ "composerContainer--mobile": "styles__composerContainer--mobile___nIYa-",
25
+ "composerContainer--mobile-dark": "styles__composerContainer--mobile-dark___12Go9",
26
+ "composerContainer--compact": "styles__composerContainer--compact___35e18",
27
+ "composerContainer--single-line": "styles__composerContainer--single-line___2yeWP",
28
+ "composer-dock": "styles__composer-dock___2nPT8",
29
+ "composerActions": "styles__composerActions___2xQEH",
30
+ "welcome": "styles__welcome___ozY_t",
31
+ "welcome-halo": "styles__welcome-halo___3jlz_",
32
+ "welcome-halo--dark": "styles__welcome-halo--dark___fV9pN",
33
+ "welcome-title": "styles__welcome-title___sBOKX",
34
+ "conversationBar": "styles__conversationBar___2J-Us",
35
+ "conversationBar--mobile": "styles__conversationBar--mobile___1jdg8",
36
+ "viewport-fade-top": "styles__viewport-fade-top___3j8Lv",
37
+ "viewport-fade-top--visible": "styles__viewport-fade-top--visible___32uyl",
38
+ "conversationViewport": "styles__conversationViewport___24jYX",
39
+ "conversationViewport--filled": "styles__conversationViewport--filled___T2QFN",
40
+ "conversationBar-input": "styles__conversationBar-input___2DfdZ",
41
+ "chatConversation": "styles__chatConversation___2EmkA",
42
+ "conversationHeaderBar": "styles__conversationHeaderBar___C8tlD",
43
+ "conversationList": "styles__conversationList___2GCzV",
44
+ "conversationList--container": "styles__conversationList--container___2xRAG",
45
+ "conversationList--hidden": "styles__conversationList--hidden___20BsT",
46
+ "conversationListItem--selected": "styles__conversationListItem--selected___2jCyB",
47
+ "menuToggler": "styles__menuToggler___39GfB",
48
+ "menuToggler--disabled": "styles__menuToggler--disabled___15vd4",
49
+ "conversationChips-container": "styles__conversationChips-container___327dE",
50
+ "conversationChips-startIcon": "styles__conversationChips-startIcon___1yOVn",
51
+ "conversationChips-chipIcon": "styles__conversationChips-chipIcon___1wmF-",
52
+ "conversationChips-deleteIcon": "styles__conversationChips-deleteIcon___s9C40",
53
+ "is-warning": "styles__is-warning___3sa0v",
54
+ "conversationChips-chip": "styles__conversationChips-chip___2PqQv",
55
+ "cozyThread-messageContent": "styles__cozyThread-messageContent___2HjdB",
56
+ "conversation-list-item": "styles__conversation-list-item___rQapI",
57
+ "conversation-list-item-action": "styles__conversation-list-item-action___qiuKm",
58
+ "conversation-list-item--selected": "styles__conversation-list-item--selected___2D5_3",
59
+ "conversation-list-item--wider": "styles__conversation-list-item--wider___2Tl2c",
60
+ "conversation-list-item-container": "styles__conversation-list-item-container___36VTD",
61
+ "conversation-list-item-menu-button": "styles__conversation-list-item-menu-button___2ZYvH",
62
+ "conversation-list-item-secondary-action": "styles__conversation-list-item-secondary-action___2vwnw",
63
+ "conversation-list-item-text": "styles__conversation-list-item-text___31VBM",
64
+ "conversation-list-item-title": "styles__conversation-list-item-title___3je_6",
65
+ "conversation-list-item-subtitle": "styles__conversation-list-item-subtitle___3e_h0",
66
+ "conversation-list-item-meta": "styles__conversation-list-item-meta___3Zk-r"
67
+ };
68
+
69
+ var ConversationComposerRoot = function ConversationComposerRoot(_ref) {
70
+ var _cx;
71
+
72
+ var className = _ref.className,
73
+ children = _ref.children;
74
+
75
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
76
+ isMobile = _useBreakpoints.isMobile;
77
+
78
+ var _useCozyTheme = (0, _CozyTheme.useCozyTheme)(),
79
+ isLight = _useCozyTheme.isLight;
80
+
81
+ return /*#__PURE__*/_react2.default.createElement(_react.ComposerPrimitive.Root, {
82
+ className: (0, _classnames.default)('u-w-100 u-maw-7 u-mh-auto u-bxz', styles['composerContainer'], (_cx = {}, (0, _defineProperty2.default)(_cx, styles['composerContainer--mobile'], isMobile), (0, _defineProperty2.default)(_cx, styles['composerContainer--mobile-dark'], isMobile && !isLight), _cx), className)
83
+ }, children);
84
+ };
85
+
86
+ exports.ConversationComposerRoot = ConversationComposerRoot;