@memori.ai/memori-react 9.0.0-alpha.21 → 9.0.0-alpha.22

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 (250) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  5. package/dist/components/Auth/Auth.css +12 -5
  6. package/dist/components/Auth/Auth.d.ts +1 -1
  7. package/dist/components/Auth/Auth.js +46 -32
  8. package/dist/components/Auth/Auth.js.map +1 -1
  9. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  10. package/dist/components/Chat/Chat.css +1 -0
  11. package/dist/components/Chat/Chat.js +1 -1
  12. package/dist/components/Chat/Chat.js.map +1 -1
  13. package/dist/components/ChatBubble/ChatBubble.css +32 -5
  14. package/dist/components/ChatBubble/ChatBubble.js +2 -4
  15. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  16. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  17. package/dist/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  18. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  19. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  20. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  21. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -57
  22. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  23. package/dist/components/ChatInputs/ChatInputs.js +10 -1
  24. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  25. package/dist/components/ChatTextArea/ChatTextArea.css +1 -1
  26. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +1 -10
  27. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  28. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  29. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  30. package/dist/components/Header/Header.css +8 -3
  31. package/dist/components/Header/Header.js +15 -18
  32. package/dist/components/Header/Header.js.map +1 -1
  33. package/dist/components/IconButton/IconButton.d.ts +1 -1
  34. package/dist/components/KnownFacts/KnownFacts.css +1 -1
  35. package/dist/components/KnownFacts/KnownFacts.js +2 -5
  36. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  37. package/dist/components/LoginDrawer/LoginDrawer.css +16 -14
  38. package/dist/components/LoginDrawer/LoginDrawer.js +19 -11
  39. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  40. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +4 -4
  41. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +28 -5
  42. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -2
  43. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  44. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +1 -1
  45. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  46. package/dist/components/MemoriWidget/MemoriWidget.js +35 -31
  47. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  48. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  49. package/dist/components/PositionPopover/PositionPopover.css +3 -3
  50. package/dist/components/PositionPopover/PositionPopover.js +38 -25
  51. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  52. package/dist/components/Snippet/Snippet.css +1 -1
  53. package/dist/components/StartPanel/StartPanel.css +19 -3
  54. package/dist/components/StartPanel/StartPanel.js +12 -18
  55. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  56. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  57. package/dist/components/layouts/totem.css +43 -9
  58. package/dist/helpers/positionPopover.d.ts +2 -1
  59. package/dist/helpers/positionPopover.js +10 -2
  60. package/dist/helpers/positionPopover.js.map +1 -1
  61. package/dist/icons/MemoriIcon.js +1 -1
  62. package/dist/icons/MemoriIcon.js.map +1 -1
  63. package/dist/locales/de.json +4 -1
  64. package/dist/locales/en.json +3 -1
  65. package/dist/locales/es.json +3 -1
  66. package/dist/locales/fr.json +3 -1
  67. package/dist/locales/it.json +3 -1
  68. package/dist/styles.css +1 -1
  69. package/dist/version.d.ts +1 -1
  70. package/dist/version.js +1 -1
  71. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  72. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  73. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  74. package/esm/components/Auth/Auth.css +12 -5
  75. package/esm/components/Auth/Auth.d.ts +1 -1
  76. package/esm/components/Auth/Auth.js +47 -33
  77. package/esm/components/Auth/Auth.js.map +1 -1
  78. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  79. package/esm/components/Chat/Chat.css +1 -0
  80. package/esm/components/Chat/Chat.js +1 -1
  81. package/esm/components/Chat/Chat.js.map +1 -1
  82. package/esm/components/ChatBubble/ChatBubble.css +32 -5
  83. package/esm/components/ChatBubble/ChatBubble.js +2 -4
  84. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  85. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  86. package/esm/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  87. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  88. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  89. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  90. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +9 -59
  91. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  92. package/esm/components/ChatInputs/ChatInputs.js +11 -2
  93. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  94. package/esm/components/ChatTextArea/ChatTextArea.css +1 -1
  95. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +1 -10
  96. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  97. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  98. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  99. package/esm/components/Header/Header.css +8 -3
  100. package/esm/components/Header/Header.js +15 -18
  101. package/esm/components/Header/Header.js.map +1 -1
  102. package/esm/components/IconButton/IconButton.d.ts +1 -1
  103. package/esm/components/KnownFacts/KnownFacts.css +1 -1
  104. package/esm/components/KnownFacts/KnownFacts.js +2 -5
  105. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  106. package/esm/components/LoginDrawer/LoginDrawer.css +16 -14
  107. package/esm/components/LoginDrawer/LoginDrawer.js +20 -12
  108. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  109. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +4 -4
  110. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +28 -5
  111. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -2
  112. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  113. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +1 -1
  114. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  115. package/esm/components/MemoriWidget/MemoriWidget.js +36 -32
  116. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  117. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  118. package/esm/components/PositionPopover/PositionPopover.css +3 -3
  119. package/esm/components/PositionPopover/PositionPopover.js +39 -26
  120. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  121. package/esm/components/Snippet/Snippet.css +1 -1
  122. package/esm/components/StartPanel/StartPanel.css +19 -3
  123. package/esm/components/StartPanel/StartPanel.js +12 -18
  124. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  125. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  126. package/esm/components/layouts/totem.css +43 -9
  127. package/esm/helpers/positionPopover.d.ts +2 -1
  128. package/esm/helpers/positionPopover.js +9 -2
  129. package/esm/helpers/positionPopover.js.map +1 -1
  130. package/esm/icons/MemoriIcon.js +1 -1
  131. package/esm/icons/MemoriIcon.js.map +1 -1
  132. package/esm/locales/de.json +4 -1
  133. package/esm/locales/en.json +3 -1
  134. package/esm/locales/es.json +3 -1
  135. package/esm/locales/fr.json +3 -1
  136. package/esm/locales/it.json +3 -1
  137. package/esm/styles.css +1 -1
  138. package/esm/version.d.ts +1 -1
  139. package/esm/version.js +1 -1
  140. package/package.json +5 -3
  141. package/src/Live/Agents.stories.tsx +49 -0
  142. package/src/Live/KnownFacts.stories.tsx +50 -0
  143. package/src/Showcase.stories.tsx +3 -14
  144. package/src/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  145. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +1 -1
  146. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +1 -0
  147. package/src/components/Auth/Auth.css +12 -5
  148. package/src/components/Auth/Auth.stories.tsx +1 -1
  149. package/src/components/Auth/Auth.test.tsx +68 -1
  150. package/src/components/Auth/Auth.tsx +69 -54
  151. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +5 -6
  152. package/src/components/Avatar/Avatar.stories.tsx +1 -18
  153. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +1 -103
  154. package/src/components/Blob/Blob.stories.tsx +1 -1
  155. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  156. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +1 -1
  157. package/src/components/ChangeMode/ChangeMode.stories.tsx +1 -1
  158. package/src/components/Chat/Chat.css +1 -0
  159. package/src/components/Chat/Chat.stories.tsx +61 -7
  160. package/src/components/Chat/Chat.tsx +1 -0
  161. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +80 -80
  162. package/src/components/ChatBubble/ChatBubble.css +32 -5
  163. package/src/components/ChatBubble/ChatBubble.stories.tsx +13 -2
  164. package/src/components/ChatBubble/ChatBubble.test.tsx +21 -1
  165. package/src/components/ChatBubble/ChatBubble.tsx +7 -13
  166. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +158 -185
  167. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +1 -1
  168. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +6 -0
  169. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  170. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +24 -81
  171. package/src/components/ChatInputs/ChatInputs.stories.tsx +1 -39
  172. package/src/components/ChatInputs/ChatInputs.test.tsx +47 -0
  173. package/src/components/ChatInputs/ChatInputs.tsx +12 -2
  174. package/src/components/ChatTextArea/ChatTextArea.css +1 -1
  175. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +1 -1
  176. package/src/components/ContentPreviewModal/ContentPreviewModal.css +1 -10
  177. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +1 -1
  178. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  179. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +1 -1
  180. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +29 -10
  181. package/src/components/Header/Header.css +8 -3
  182. package/src/components/Header/Header.stories.tsx +1 -1
  183. package/src/components/Header/Header.tsx +146 -117
  184. package/src/components/KnownFacts/KnownFacts.css +1 -1
  185. package/src/components/KnownFacts/KnownFacts.stories.tsx +1 -23
  186. package/src/components/KnownFacts/KnownFacts.tsx +4 -9
  187. package/src/components/LoginDrawer/LoginDrawer.css +16 -14
  188. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +2 -52
  189. package/src/components/LoginDrawer/LoginDrawer.tsx +51 -39
  190. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +1 -15
  191. package/src/components/MediaWidget/MediaWidget.stories.tsx +1 -45
  192. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +1 -1
  193. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +4 -4
  194. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +28 -5
  195. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +4 -6
  196. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +1 -1
  197. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +32 -28
  198. package/src/components/MemoriWidget/MemoriUIProvider.contract.test.tsx +55 -0
  199. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +55 -77
  200. package/src/components/MemoriWidget/MemoriWidget.tsx +49 -44
  201. package/src/components/MemoriWidget/getChatStyles.test.ts +24 -0
  202. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +1 -1
  203. package/src/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  204. package/src/components/PositionPopover/PositionPopover.css +3 -3
  205. package/src/components/PositionPopover/PositionPopover.stories.tsx +1 -1
  206. package/src/components/PositionPopover/PositionPopover.tsx +50 -28
  207. package/src/components/PoweredBy/PoweredBy.stories.tsx +1 -54
  208. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +2 -2
  209. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +1 -1
  210. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +1 -1
  211. package/src/components/ShareButton/ShareButton.stories.tsx +1 -1
  212. package/src/components/Snippet/Snippet.css +1 -1
  213. package/src/components/Snippet/Snippet.stories.tsx +1 -1
  214. package/src/components/StartPanel/StartPanel.css +19 -3
  215. package/src/components/StartPanel/StartPanel.stories.tsx +2 -2
  216. package/src/components/StartPanel/StartPanel.tsx +22 -35
  217. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +177 -121
  218. package/src/components/Typing/Typing.stories.tsx +1 -1
  219. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +22 -44
  220. package/src/components/layouts/FullBody/FullBody.stories.tsx +55 -68
  221. package/src/components/layouts/Totem/Totem.stories.tsx +69 -87
  222. package/src/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  223. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +69 -87
  224. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +19 -41
  225. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +39 -83
  226. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +15 -11
  227. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +116 -42
  228. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +18 -40
  229. package/src/components/layouts/layouts.stories.tsx +96 -179
  230. package/src/components/layouts/totem.css +43 -9
  231. package/src/helpers/positionPopover.test.ts +36 -1
  232. package/src/helpers/positionPopover.ts +21 -4
  233. package/src/i18n.knownFacts.test.ts +40 -0
  234. package/src/icons/MemoriIcon.tsx +1 -1
  235. package/src/index.stories.tsx +1 -47
  236. package/src/locales/de.json +4 -1
  237. package/src/locales/en.json +3 -1
  238. package/src/locales/es.json +3 -1
  239. package/src/locales/fr.json +3 -1
  240. package/src/locales/it.json +3 -1
  241. package/src/styles.css +13 -27
  242. package/src/version.ts +1 -1
  243. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  244. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  245. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  246. package/src/components/FilePreview/FilePreview.stories.tsx +0 -63
  247. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -265
  248. package/src/components/UploadButton/UploadButton.stories.tsx +0 -510
  249. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -69
  250. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +0 -115
@@ -1,5 +1,5 @@
1
1
  import { Venue } from '@memori.ai/memori-api-client/dist/types';
2
- import { Button, Popover } from '@memori.ai/ui';
2
+ import { Button, Popover, Tooltip } from '@memori.ai/ui';
3
3
  import IconButton from '../IconButton/IconButton';
4
4
  import { MapPin, Pencil } from 'lucide-react';
5
5
  import React, { useCallback, useEffect, useRef, useState } from 'react';
@@ -14,6 +14,8 @@ import {
14
14
  } from '../VenueWidget/VenueWidget';
15
15
  import cx from 'classnames';
16
16
 
17
+ const GEOCODE_TIMEOUT_MS = 8000;
18
+
17
19
  function hasShareableCoords(v?: Venue): boolean {
18
20
  return !!(v?.latitude && v?.longitude);
19
21
  }
@@ -113,39 +115,56 @@ export const PositionPopoverContent: React.FC<PositionPopoverContentProps> = ({
113
115
  const gen = ++geoGenRef.current;
114
116
  setPermissionDeniedMessage(null);
115
117
  setGeocodingError(null);
118
+
119
+ if (!navigator.geolocation) {
120
+ setGeolocationLoading(false);
121
+ setPermissionDeniedMessage(String(t('widget.positionUnavailableManual')));
122
+ setEditingLocation(true);
123
+ return;
124
+ }
125
+
116
126
  setGeolocationLoading(true);
117
127
 
118
128
  navigator.geolocation.getCurrentPosition(
119
- async pos => {
129
+ pos => {
120
130
  if (gen !== geoGenRef.current) return;
121
- let next: Venue = {
131
+ const next: Venue = {
122
132
  latitude: pos.coords.latitude,
123
133
  longitude: pos.coords.longitude,
124
134
  placeName: '',
125
135
  uncertainty: pos.coords.accuracy / 1000,
126
136
  };
127
- try {
128
- const result = await fetch(
129
- `https://nominatim.openstreetmap.org/reverse?lat=${pos.coords.latitude}&lon=${pos.coords.longitude}&format=jsonv2&addressdetails=1`
130
- );
131
- const response = (await result.json()) as NominatimItem;
132
- const placeName = getPlaceName(response);
133
- next = {
134
- latitude: pos.coords.latitude,
135
- longitude: pos.coords.longitude,
136
- placeName,
137
- uncertainty: pos.coords.accuracy / 1000,
138
- };
139
- setVenue(next);
140
- } catch (e) {
141
- console.error('[PositionPopover] reverse geocode failed', e);
142
- setGeocodingError(String(t('widget.geocodingFailed')));
143
- setVenue(next);
144
- } finally {
145
- if (gen === geoGenRef.current) {
146
- setGeolocationLoading(false);
137
+ setVenue(next);
138
+ setGeolocationLoading(false);
139
+
140
+ const controller = new AbortController();
141
+ const timeoutId = window.setTimeout(
142
+ () => controller.abort(),
143
+ GEOCODE_TIMEOUT_MS
144
+ );
145
+
146
+ void (async () => {
147
+ try {
148
+ const result = await fetch(
149
+ `https://nominatim.openstreetmap.org/reverse?lat=${pos.coords.latitude}&lon=${pos.coords.longitude}&format=jsonv2&addressdetails=1`,
150
+ { signal: controller.signal }
151
+ );
152
+ if (gen !== geoGenRef.current) return;
153
+ const response = (await result.json()) as NominatimItem;
154
+ const placeName = getPlaceName(response);
155
+ setVenue({
156
+ ...next,
157
+ placeName,
158
+ });
159
+ } catch (e) {
160
+ if (gen !== geoGenRef.current) return;
161
+ if ((e as { name?: string }).name === 'AbortError') return;
162
+ console.error('[PositionPopover] reverse geocode failed', e);
163
+ setGeocodingError(String(t('widget.geocodingFailed')));
164
+ } finally {
165
+ window.clearTimeout(timeoutId);
147
166
  }
148
- }
167
+ })();
149
168
  },
150
169
  err => {
151
170
  if (gen !== geoGenRef.current) return;
@@ -213,6 +232,8 @@ export const PositionPopoverContent: React.FC<PositionPopoverContentProps> = ({
213
232
  }, [editingLocation]);
214
233
 
215
234
  const inlineError = permissionDeniedMessage || geocodingError;
235
+ const shareLocationHint =
236
+ t('widget.shareLocationHint') || 'Get answers tailored to where you are';
216
237
 
217
238
  return (
218
239
  <>
@@ -231,10 +252,11 @@ export const PositionPopoverContent: React.FC<PositionPopoverContentProps> = ({
231
252
  <span className="memori-dropdown--auth-title">
232
253
  {t('widget.shareLocation') || 'Share my location'}
233
254
  </span>
234
- <span className="memori-dropdown--auth-subtitle">
235
- {t('widget.shareLocationHint') ||
236
- 'Get answers tailored to where you are'}
237
- </span>
255
+ <Tooltip title={shareLocationHint} placement="top">
256
+ <span className="memori-dropdown--auth-subtitle">
257
+ {shareLocationHint}
258
+ </span>
259
+ </Tooltip>
238
260
  </span>
239
261
  <span
240
262
  className={cx(
@@ -4,7 +4,7 @@ import PoweredBy, { Props } from './PoweredBy';
4
4
  import './PoweredBy.css';
5
5
 
6
6
  const meta: Meta = {
7
- title: 'Powered by',
7
+ title: 'Internals/Powered by',
8
8
  component: PoweredBy,
9
9
  argTypes: {},
10
10
  parameters: {
@@ -20,56 +20,3 @@ export const Default = Template.bind({});
20
20
  Default.args = {
21
21
  userLang: 'en',
22
22
  };
23
-
24
- export const Italian = Template.bind({});
25
- Italian.args = {
26
- userLang: 'it',
27
- };
28
-
29
- export const MemoryTwin = Template.bind({});
30
- MemoryTwin.args = {
31
- tenant: {
32
- id: 'memorytwin',
33
- theme: 'memorytwin',
34
- config: {
35
- name: 'MemoryTwin',
36
- showNewUser: true,
37
- requirePosition: false,
38
- feedbackURL: '',
39
- },
40
- },
41
- };
42
-
43
- export const TwinCreator = Template.bind({});
44
- TwinCreator.args = {
45
- tenant: {
46
- id: 'twincreator',
47
- theme: 'twincreator',
48
- config: {
49
- name: 'twincreator',
50
- showNewUser: true,
51
- requirePosition: false,
52
- feedbackURL: '',
53
- },
54
- },
55
- };
56
-
57
- export const AIsuru = Template.bind({});
58
- AIsuru.args = {
59
- tenant: {
60
- id: 'AIsuru',
61
- theme: 'aisuru',
62
- config: {
63
- name: 'AIsuru',
64
- showNewUser: true,
65
- requirePosition: false,
66
- feedbackURL: '',
67
- },
68
- },
69
- };
70
-
71
- export const WithData = Template.bind({});
72
- WithData.args = {
73
- integrationID: 'abc',
74
- memoriHash: 'tenant-owner-memori',
75
- };
@@ -27,7 +27,7 @@ exports[`renders PoweredBy unchanged 1`] = `
27
27
  }
28
28
 
29
29
  .cls-2 {
30
- fill: var(--memori-logo-text-color, '#744c99');
30
+ fill: var(--memori-text-color, '#744c99');
31
31
  }
32
32
 
33
33
  </style>
@@ -170,7 +170,7 @@ exports[`renders PoweredBy with data unchanged 1`] = `
170
170
  }
171
171
 
172
172
  .cls-2 {
173
- fill: var(--memori-logo-text-color, '#744c99');
173
+ fill: var(--memori-text-color, '#744c99');
174
174
  }
175
175
 
176
176
  </style>
@@ -6,7 +6,7 @@ import SendOnEnterMenu, { Props } from './SendOnEnterMenu';
6
6
  import './SendOnEnterMenu.css';
7
7
 
8
8
  const meta: Meta = {
9
- title: 'Widget/Send On Enter Menu',
9
+ title: 'Internals/Send On Enter Menu',
10
10
  component: SendOnEnterMenu,
11
11
  argTypes: {
12
12
  sendOnEnter: {
@@ -5,7 +5,7 @@ import SettingsDrawer, { Props } from './SettingsDrawer';
5
5
  import './SettingsDrawer.css';
6
6
 
7
7
  const meta: Meta = {
8
- title: 'Widget/SettingsDrawer',
8
+ title: 'Surfaces/SettingsDrawer',
9
9
  component: SettingsDrawer,
10
10
  argTypes: {
11
11
  open: {
@@ -8,7 +8,7 @@ import './ShareButton.css';
8
8
  import { AlertProvider } from '@memori.ai/ui';
9
9
 
10
10
  const meta: Meta = {
11
- title: 'Share Button',
11
+ title: 'Compositions/Share Button',
12
12
  component: ShareButton,
13
13
  argTypes: {
14
14
  url: {
@@ -131,7 +131,7 @@ button.memori-snippet--copy-button svg {
131
131
  }
132
132
 
133
133
  .memori-snippet button.memori-snippet--copy-button--copied svg {
134
- color: var(--memori-success-color, #22c55e);
134
+ color: var(--memori-success, #22c55e);
135
135
  }
136
136
 
137
137
  .memori-snippet--caption {
@@ -51,7 +51,7 @@ export default Snippet;
51
51
  `;
52
52
 
53
53
  const meta: Meta = {
54
- title: 'Snippet',
54
+ title: 'Internals/Snippet',
55
55
  component: Snippet,
56
56
  argTypes: {
57
57
  mimeType: {
@@ -151,6 +151,23 @@
151
151
  white-space: nowrap;
152
152
  }
153
153
 
154
+ .memori--title-row {
155
+ display: inline-flex;
156
+ min-width: 0;
157
+ max-width: 100%;
158
+ align-items: center;
159
+ margin-bottom: var(--memori-spacing-sm);
160
+ gap: var(--memori-spacing-sm);
161
+ }
162
+
163
+ .memori--title-row .memori--title {
164
+ margin-bottom: 0;
165
+ }
166
+
167
+ .memori--title-row .blocked-memori-badge--wrapper {
168
+ flex-shrink: 0;
169
+ }
170
+
154
171
  .memori--description,
155
172
  .memori--needsLogin,
156
173
  .memori--needsPosition {
@@ -944,11 +961,10 @@
944
961
  outline-offset: var(--memori-focus-ring-offset);
945
962
  }
946
963
 
947
- /* Portal renders on document.body; website-assistant layout uses z-index up to 2^31-1 for the
948
- fixed panel/trigger — without this, the popover stays underneath and looks “missing”. */
964
+ /* Portal on widget root; tooltip/popover library z-index is 1300. */
949
965
  .memori--privacy-popover-positioner,
950
966
  .memori--deep-thought-helper-tooltip-positioner {
951
- z-index: 2147483647;
967
+ z-index: 1300;
952
968
  }
953
969
 
954
970
  .memori--privacy-popover-popup {
@@ -9,7 +9,7 @@ import '../../i18n';
9
9
  import './StartPanel.css';
10
10
 
11
11
  const meta: Meta = {
12
- title: 'Widget/Start panel',
12
+ title: 'Compositions/Start panel',
13
13
  component: StartPanel,
14
14
  argTypes: {
15
15
  showShare: {
@@ -38,7 +38,7 @@ const integrationProperties = getChatStyles(integrationConfig);
38
38
 
39
39
  const integrationStylesheet =
40
40
  Object.keys(integrationProperties).length > 0
41
- ? `@layer integration {
41
+ ? `@layer memori.overrides {
42
42
  #root, .memori-widget {
43
43
  ${Object.entries(integrationProperties)
44
44
  .map(([key, value]) => `${key}: ${value};`)
@@ -30,15 +30,6 @@ import { Expandable } from '@memori.ai/ui';
30
30
  import { usePressTooltip } from '../../helpers/usePressTooltip';
31
31
  import { useWidgetSurfaceEl } from '../../context/widgetSurfaceContext';
32
32
 
33
- /**
34
- * Sentinel values used as non-selectable section headers in the language
35
- * Combobox. We render a flat list with disabled "header" items instead of
36
- * the Combobox.Group API because @memori.ai/ui's grouped mode renders the
37
- * group's original items and bypasses the built-in search filter.
38
- */
39
- const LANG_COMBO_GROUP_POPULAR = '__memori_lang_group_popular__';
40
- const LANG_COMBO_GROUP_ALL = '__memori_lang_group_all__';
41
-
42
33
  interface Memori extends MemoriOriginal {
43
34
  requireLoginToken?: boolean;
44
35
  }
@@ -121,23 +112,19 @@ const StartPanel: React.FC<Props> = ({
121
112
  const { popular, all } = getGroupedChatLanguages();
122
113
  return [
123
114
  {
124
- value: LANG_COMBO_GROUP_POPULAR,
125
- label: String(t('popularLanguages') || 'Popular'),
126
- disabled: true,
115
+ groupLabel: String(t('popularLanguages') || 'Popular'),
116
+ options: popular.map(lang => ({
117
+ label: lang.label,
118
+ value: lang.value,
119
+ })),
127
120
  },
128
- ...popular.map(lang => ({
129
- label: lang.label,
130
- value: lang.value,
131
- })),
132
121
  {
133
- value: LANG_COMBO_GROUP_ALL,
134
- label: String(t('allLanguages') || 'All Languages'),
135
- disabled: true,
122
+ groupLabel: String(t('allLanguages') || 'All Languages'),
123
+ options: all.map(lang => ({
124
+ label: lang.label,
125
+ value: lang.value,
126
+ })),
136
127
  },
137
- ...all.map(lang => ({
138
- label: lang.label,
139
- value: lang.value,
140
- })),
141
128
  ];
142
129
  }, [t]);
143
130
 
@@ -289,7 +276,18 @@ const StartPanel: React.FC<Props> = ({
289
276
  />
290
277
  </picture>
291
278
  <div className="memori--title-container__content">
292
- <h2 className="memori--title">{memori.name}</h2>
279
+ <div className="memori--title-row">
280
+ <h2 className="memori--title">{memori.name}</h2>
281
+ {(memori.blockedUntil || notEnoughCredits) && (
282
+ <BlockedMemoriBadge
283
+ memoriName={memori.name}
284
+ blockedUntil={memori.blockedUntil}
285
+ notEnoughCredits={notEnoughCredits}
286
+ showGiverInfo={memori.isGiver}
287
+ showTitle
288
+ />
289
+ )}
290
+ </div>
293
291
  <>
294
292
  {isMobile && showFullDescriptionOnMobile ? (
295
293
  <p className="memori--description-text memori--description-text--full">
@@ -672,17 +670,6 @@ const StartPanel: React.FC<Props> = ({
672
670
  </Tooltip>
673
671
  )} */}
674
672
  </div>
675
-
676
- {(memori.blockedUntil || notEnoughCredits) && (
677
- <BlockedMemoriBadge
678
- memoriName={memori.name}
679
- blockedUntil={memori.blockedUntil}
680
- notEnoughCredits={notEnoughCredits}
681
- showGiverInfo={memori.isGiver}
682
- showTitle
683
- marginLeft
684
- />
685
- )}
686
673
  </div>
687
674
  )}
688
675
  </div>