@memori.ai/memori-react 8.15.1 → 8.16.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 (166) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/components/Chat/Chat.css +2 -1
  3. package/dist/components/Chat/Chat.js +17 -17
  4. package/dist/components/Chat/Chat.js.map +1 -1
  5. package/dist/components/ChatBubble/ChatBubble.css +1 -1
  6. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +114 -0
  7. package/dist/components/ContentPreviewModal/ContentPreviewModal.d.ts +14 -0
  8. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +18 -0
  9. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -0
  10. package/dist/components/ContentPreviewModal/index.d.ts +2 -0
  11. package/dist/components/ContentPreviewModal/index.js +9 -0
  12. package/dist/components/ContentPreviewModal/index.js.map +1 -0
  13. package/dist/components/FilePreview/FilePreview.css +1 -1
  14. package/dist/components/FilePreview/FilePreview.js +43 -13
  15. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  16. package/dist/components/MediaWidget/DocumentCard.d.ts +3 -0
  17. package/dist/components/MediaWidget/DocumentCard.js +9 -0
  18. package/dist/components/MediaWidget/DocumentCard.js.map +1 -0
  19. package/dist/components/MediaWidget/MediaItemWidget.css +946 -19
  20. package/dist/components/MediaWidget/MediaItemWidget.d.ts +5 -36
  21. package/dist/components/MediaWidget/MediaItemWidget.js +295 -198
  22. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  23. package/dist/components/MediaWidget/MediaItemWidget.types.d.ts +62 -0
  24. package/dist/components/MediaWidget/MediaItemWidget.types.js +3 -0
  25. package/dist/components/MediaWidget/MediaItemWidget.types.js.map +1 -0
  26. package/dist/components/MediaWidget/MediaItemWidget.utils.d.ts +23 -0
  27. package/dist/components/MediaWidget/MediaItemWidget.utils.js +162 -0
  28. package/dist/components/MediaWidget/MediaItemWidget.utils.js.map +1 -0
  29. package/dist/components/MediaWidget/MediaPreviewModal.d.ts +15 -0
  30. package/dist/components/MediaWidget/MediaPreviewModal.js +162 -0
  31. package/dist/components/MediaWidget/MediaPreviewModal.js.map +1 -0
  32. package/dist/components/MediaWidget/MediaWidget.js +1 -2
  33. package/dist/components/MediaWidget/MediaWidget.js.map +1 -1
  34. package/dist/components/Snippet/Snippet.css +64 -33
  35. package/dist/components/Snippet/Snippet.js +17 -4
  36. package/dist/components/Snippet/Snippet.js.map +1 -1
  37. package/dist/components/StartPanel/StartPanel.js +1 -2
  38. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  39. package/dist/components/UploadButton/UploadButton.css +0 -5
  40. package/dist/components/layouts/WebsiteAssistant.js +8 -8
  41. package/dist/components/layouts/WebsiteAssistant.js.map +1 -1
  42. package/dist/components/layouts/chat.css +1 -1
  43. package/dist/components/layouts/website-assistant.css +405 -197
  44. package/dist/helpers/constants.js +0 -7
  45. package/dist/helpers/constants.js.map +1 -1
  46. package/dist/helpers/utils.d.ts +1 -0
  47. package/dist/helpers/utils.js +3 -1
  48. package/dist/helpers/utils.js.map +1 -1
  49. package/dist/index.js +43 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/styles.css +0 -2
  52. package/dist/version.d.ts +1 -0
  53. package/dist/version.js +5 -0
  54. package/dist/version.js.map +1 -0
  55. package/esm/components/Chat/Chat.css +2 -1
  56. package/esm/components/Chat/Chat.js +17 -17
  57. package/esm/components/Chat/Chat.js.map +1 -1
  58. package/esm/components/ChatBubble/ChatBubble.css +1 -1
  59. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +114 -0
  60. package/esm/components/ContentPreviewModal/ContentPreviewModal.d.ts +14 -0
  61. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +15 -0
  62. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -0
  63. package/esm/components/ContentPreviewModal/index.d.ts +2 -0
  64. package/esm/components/ContentPreviewModal/index.js +2 -0
  65. package/esm/components/ContentPreviewModal/index.js.map +1 -0
  66. package/esm/components/FilePreview/FilePreview.css +1 -1
  67. package/esm/components/FilePreview/FilePreview.js +44 -14
  68. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  69. package/esm/components/MediaWidget/DocumentCard.d.ts +3 -0
  70. package/esm/components/MediaWidget/DocumentCard.js +5 -0
  71. package/esm/components/MediaWidget/DocumentCard.js.map +1 -0
  72. package/esm/components/MediaWidget/MediaItemWidget.css +946 -19
  73. package/esm/components/MediaWidget/MediaItemWidget.d.ts +5 -36
  74. package/esm/components/MediaWidget/MediaItemWidget.js +296 -197
  75. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  76. package/esm/components/MediaWidget/MediaItemWidget.types.d.ts +62 -0
  77. package/esm/components/MediaWidget/MediaItemWidget.types.js +2 -0
  78. package/esm/components/MediaWidget/MediaItemWidget.types.js.map +1 -0
  79. package/esm/components/MediaWidget/MediaItemWidget.utils.d.ts +23 -0
  80. package/esm/components/MediaWidget/MediaItemWidget.utils.js +149 -0
  81. package/esm/components/MediaWidget/MediaItemWidget.utils.js.map +1 -0
  82. package/esm/components/MediaWidget/MediaPreviewModal.d.ts +15 -0
  83. package/esm/components/MediaWidget/MediaPreviewModal.js +157 -0
  84. package/esm/components/MediaWidget/MediaPreviewModal.js.map +1 -0
  85. package/esm/components/MediaWidget/MediaWidget.js +1 -2
  86. package/esm/components/MediaWidget/MediaWidget.js.map +1 -1
  87. package/esm/components/Snippet/Snippet.css +64 -33
  88. package/esm/components/Snippet/Snippet.js +18 -5
  89. package/esm/components/Snippet/Snippet.js.map +1 -1
  90. package/esm/components/StartPanel/StartPanel.js +1 -2
  91. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  92. package/esm/components/UploadButton/UploadButton.css +0 -5
  93. package/esm/components/layouts/WebsiteAssistant.js +8 -8
  94. package/esm/components/layouts/WebsiteAssistant.js.map +1 -1
  95. package/esm/components/layouts/chat.css +1 -1
  96. package/esm/components/layouts/website-assistant.css +405 -197
  97. package/esm/helpers/constants.js +0 -7
  98. package/esm/helpers/constants.js.map +1 -1
  99. package/esm/helpers/utils.d.ts +1 -0
  100. package/esm/helpers/utils.js +1 -0
  101. package/esm/helpers/utils.js.map +1 -1
  102. package/esm/index.js +43 -1
  103. package/esm/index.js.map +1 -1
  104. package/esm/styles.css +0 -2
  105. package/esm/version.d.ts +1 -0
  106. package/esm/version.js +2 -0
  107. package/esm/version.js.map +1 -0
  108. package/package.json +5 -3
  109. package/src/components/Chat/Chat.css +2 -1
  110. package/src/components/Chat/Chat.stories.tsx +124 -0
  111. package/src/components/Chat/Chat.tsx +72 -71
  112. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +567 -1034
  113. package/src/components/ChatBubble/ChatBubble.css +1 -1
  114. package/src/components/ContentPreviewModal/ContentPreviewModal.css +114 -0
  115. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +69 -0
  116. package/src/components/ContentPreviewModal/index.ts +2 -0
  117. package/src/components/FilePreview/FilePreview.css +1 -1
  118. package/src/components/FilePreview/FilePreview.tsx +60 -37
  119. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +15 -105
  120. package/src/components/MediaWidget/DocumentCard.test.tsx +45 -0
  121. package/src/components/MediaWidget/DocumentCard.tsx +19 -0
  122. package/src/components/MediaWidget/MediaItemWidget.css +946 -19
  123. package/src/components/MediaWidget/MediaItemWidget.test.tsx +89 -1
  124. package/src/components/MediaWidget/MediaItemWidget.tsx +734 -461
  125. package/src/components/MediaWidget/MediaItemWidget.types.ts +65 -0
  126. package/src/components/MediaWidget/MediaItemWidget.utils.test.ts +324 -0
  127. package/src/components/MediaWidget/MediaItemWidget.utils.ts +194 -0
  128. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +271 -0
  129. package/src/components/MediaWidget/MediaPreviewModal.tsx +423 -0
  130. package/src/components/MediaWidget/MediaWidget.stories.tsx +193 -0
  131. package/src/components/MediaWidget/MediaWidget.tsx +2 -4
  132. package/src/components/MediaWidget/__snapshots__/DocumentCard.test.tsx.snap +24 -0
  133. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +162 -170
  134. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +21 -63
  135. package/src/components/Snippet/Snippet.css +64 -33
  136. package/src/components/Snippet/Snippet.tsx +30 -21
  137. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +314 -297
  138. package/src/components/StartPanel/StartPanel.tsx +0 -9
  139. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +12 -636
  140. package/src/components/UploadButton/UploadButton.css +0 -5
  141. package/src/components/layouts/WebsiteAssistant.tsx +66 -62
  142. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +1 -53
  143. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +2 -106
  144. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +1 -53
  145. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +1 -53
  146. package/src/components/layouts/__snapshots__/WebsiteAssistant.test.tsx.snap +32 -33
  147. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +1 -53
  148. package/src/components/layouts/chat.css +1 -1
  149. package/src/components/layouts/layouts.stories.tsx +68 -0
  150. package/src/components/layouts/website-assistant.css +405 -197
  151. package/src/helpers/constants.ts +0 -7
  152. package/src/helpers/utils.ts +4 -0
  153. package/src/index.test.tsx +8 -0
  154. package/src/index.tsx +51 -1
  155. package/src/styles.css +0 -2
  156. package/src/version.ts +2 -0
  157. package/src/components/AttachmentLinkModal/AttachmentLinkModal.css +0 -68
  158. package/src/components/AttachmentLinkModal/AttachmentLinkModal.stories.tsx +0 -32
  159. package/src/components/AttachmentLinkModal/AttachmentLinkModal.test.tsx +0 -10
  160. package/src/components/AttachmentLinkModal/AttachmentLinkModal.tsx +0 -131
  161. package/src/components/AttachmentLinkModal/__snapshots__/AttachmentLinkModal.test.tsx.snap +0 -9
  162. package/src/components/MediaWidget/LinkItemWidget.css +0 -46
  163. package/src/components/MediaWidget/LinkItemWidget.stories.tsx +0 -61
  164. package/src/components/MediaWidget/LinkItemWidget.test.tsx +0 -33
  165. package/src/components/MediaWidget/LinkItemWidget.tsx +0 -204
  166. package/src/components/MediaWidget/__snapshots__/LinkItemWidget.test.tsx.snap +0 -253
@@ -1,204 +0,0 @@
1
- import { Medium } from '@memori.ai/memori-api-client/dist/types';
2
- import React, { useState, useEffect } from 'react';
3
- import Link from '../icons/Link';
4
- import cx from 'classnames';
5
- import { ellipsis } from 'ellipsed';
6
- import Card from '../ui/Card';
7
- import { Transition } from '@headlessui/react';
8
-
9
- export declare type ILinkPreviewInfo = {
10
- title?: string | undefined;
11
- siteName?: string | undefined;
12
- description?: string | undefined;
13
- mediaType?: string | undefined;
14
- image?: string | undefined;
15
- imageWidth?: number | undefined;
16
- imageHeight?: number | undefined;
17
- favicon?: string | undefined;
18
- images?: string[] | undefined;
19
- video?: string | undefined;
20
- videos?: string[] | undefined;
21
- };
22
-
23
- export interface Props {
24
- isChild?: boolean;
25
- items: Medium[];
26
- baseUrl?: string;
27
- descriptionOneLine?: boolean;
28
- onLinkPreviewInfo?: (linkPreviewInfo: ILinkPreviewInfo) => void;
29
- fromUser?: boolean;
30
- }
31
-
32
- const getSiteInfo = async (url: string, baseUrl?: string) => {
33
- try {
34
- const data = await fetch(
35
- `${baseUrl || 'https://aisuru.com'}/api/linkpreview/${encodeURIComponent(
36
- url
37
- )}`
38
- );
39
- const siteInfo: ILinkPreviewInfo = await data.json();
40
- return siteInfo;
41
- } catch (err) {
42
- console.error('getSiteInfo', err);
43
- return null;
44
- }
45
- };
46
-
47
- export const RenderLinkItem = ({
48
- isChild = false,
49
- item,
50
- baseUrl,
51
- onLinkPreviewInfo,
52
- descriptionOneLine = false,
53
- }: Omit<Props, 'items'> & {
54
- item: Medium;
55
- }) => {
56
- const [link, setLink] = useState<
57
- (ILinkPreviewInfo & { urlKey: string }) | null
58
- >(null);
59
- const normURL =
60
- item.url?.startsWith('http') || !item.url || item.url?.length === 0
61
- ? item.url
62
- : `https://${item.url}`;
63
-
64
- useEffect(() => {
65
- let normURL =
66
- item.url?.startsWith('http') || !item.url || item.url?.length === 0
67
- ? item.url
68
- : `https://${item.url}`;
69
- if (normURL && normURL !== link?.urlKey) {
70
- getSiteInfo(normURL, baseUrl).then(siteInfo => {
71
- setLink(
72
- siteInfo
73
- ? ({ ...siteInfo, urlKey: normURL } as ILinkPreviewInfo & {
74
- urlKey: string;
75
- })
76
- : null
77
- );
78
-
79
- if (onLinkPreviewInfo && siteInfo) onLinkPreviewInfo(siteInfo);
80
- });
81
- }
82
- // eslint-disable-next-line react-hooks/exhaustive-deps
83
- }, [item?.url, baseUrl, onLinkPreviewInfo]);
84
-
85
- const title = item.title && item.title.length > 0 ? item.title : link?.title;
86
- const description = link?.description;
87
- const video = link?.video;
88
- const image = link?.image ?? link?.images?.[0];
89
-
90
- useEffect(() => {
91
- setTimeout(() => {
92
- ellipsis('.memori-link-item--card .memori-card--description', 3, {
93
- responsive: true,
94
- });
95
- }, 300);
96
- }, [description, item.mediumID]);
97
-
98
- return (
99
- <a
100
- href={normURL}
101
- target="_blank"
102
- rel="noopener noreferrer"
103
- className={cx('memori-link-item--link', {
104
- 'memori-link-item--link--child': isChild,
105
- })}
106
- onClick={e => {
107
- if (!isChild) {
108
- e.preventDefault();
109
- e.stopPropagation();
110
- window.open(
111
- normURL,
112
- '_blank',
113
- `toolbar=yes,top=${window.innerHeight * 0.1},left=${
114
- window.innerWidth * 0.1
115
- },width=${window.innerWidth * 0.8},height=${
116
- window.innerHeight * 0.8
117
- }`
118
- );
119
- }
120
- }}
121
- >
122
- <Card
123
- hoverable
124
- className={cx('memori-link-item--card', {
125
- 'memori-link-item--card-description-oneline': descriptionOneLine,
126
- 'memori-link-item--card-has-image': image,
127
- 'memori-link-item--card-has-video': video,
128
- })}
129
- cover={
130
- video ? (
131
- <iframe
132
- width="100%"
133
- height="100%"
134
- src={video}
135
- title="Video player"
136
- frameBorder="0"
137
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
138
- allowFullScreen
139
- />
140
- ) : image ? (
141
- <img
142
- className="memori-link-item--card-cover-img"
143
- src="data:image/png;base64,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"
144
- srcSet={
145
- image.includes('data:image')
146
- ? undefined
147
- : image.startsWith('https')
148
- ? image
149
- : `https://${image.replace('http://', '')}`
150
- }
151
- alt={item.title}
152
- />
153
- ) : (
154
- <div className="memori-link-item--card-cover-icon">
155
- <Link className="memori-link-item--icon" />
156
- </div>
157
- )
158
- }
159
- title={title}
160
- description={description}
161
- />
162
- </a>
163
- );
164
- };
165
-
166
- const LinkItemWidget: React.FC<Props> = ({
167
- items,
168
- baseUrl,
169
- descriptionOneLine = false,
170
- onLinkPreviewInfo,
171
- fromUser = false,
172
- }: Props) => {
173
- return (
174
- <Transition appear show as="div" className="memori-link-items">
175
- <div className={cx('memori-link-items--grid memori-chat-scroll-item', {
176
- 'memori-link-items--user': fromUser,
177
- 'memori-link-items--agent': !fromUser,
178
- })}>
179
- {items.map((item, index) => (
180
- <Transition.Child
181
- as="div"
182
- className="memori-link-item"
183
- key={item.mediumID}
184
- enter={`ease-out duration-500 delay-${index * 100}`}
185
- enterFrom="opacity-0 scale-95"
186
- enterTo="opacity-1 scale-100"
187
- leave="ease-in duration-300"
188
- leaveFrom="opacity-1 scale-100"
189
- leaveTo="opacity-0 scale-95"
190
- >
191
- <RenderLinkItem
192
- item={item}
193
- baseUrl={baseUrl}
194
- descriptionOneLine={descriptionOneLine}
195
- onLinkPreviewInfo={onLinkPreviewInfo}
196
- />
197
- </Transition.Child>
198
- ))}
199
- </div>
200
- </Transition>
201
- );
202
- };
203
-
204
- export default LinkItemWidget;
@@ -1,253 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`renders LinkItemWidget unchanged 1`] = `
4
- <div>
5
- <div
6
- class="memori-link-items"
7
- >
8
- <div
9
- class="memori-link-items--grid memori-chat-scroll-item memori-link-items--agent"
10
- >
11
- <div
12
- class="memori-link-item ease-out duration-500 delay-0 opacity-0 scale-95"
13
- >
14
- <a
15
- class="memori-link-item--link"
16
- href="https://memori.ai/en"
17
- rel="noopener noreferrer"
18
- target="_blank"
19
- >
20
- <div
21
- class="memori-card memori-link-item--card memori-card--with-cover memori-card--hoverable"
22
- >
23
- <div
24
- class="memori-spin"
25
- >
26
- <div
27
- class="memori-card--cover"
28
- >
29
- <div
30
- class="memori-link-item--card-cover-icon"
31
- >
32
- <svg
33
- aria-hidden="true"
34
- class="memori-link-item--icon"
35
- focusable="false"
36
- role="img"
37
- viewBox="0 0 1024 1024"
38
- xmlns="http://www.w3.org/2000/svg"
39
- >
40
- <path
41
- d="M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"
42
- />
43
- </svg>
44
- </div>
45
- </div>
46
- <div
47
- class="memori-card--content"
48
- >
49
- <h3
50
- class="memori-card--title"
51
- >
52
- Memori Srl
53
- </h3>
54
- <div
55
- class="memori-card--children"
56
- />
57
- </div>
58
- <div
59
- class="memori-spin--spinner"
60
- >
61
- <svg
62
- aria-hidden="true"
63
- class="memori-loading-icon"
64
- focusable="false"
65
- role="img"
66
- viewBox="0 0 1024 1024"
67
- xmlns="http://www.w3.org/2000/svg"
68
- >
69
- <path
70
- d="M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"
71
- />
72
- </svg>
73
- </div>
74
- </div>
75
- </div>
76
- </a>
77
- </div>
78
- </div>
79
- </div>
80
- </div>
81
- `;
82
-
83
- exports[`renders LinkItemWidget unchanged with baseUrl 1`] = `
84
- <div>
85
- <div
86
- class="memori-link-items"
87
- >
88
- <div
89
- class="memori-link-items--grid memori-chat-scroll-item memori-link-items--agent"
90
- >
91
- <div
92
- class="memori-link-item ease-out duration-500 delay-0 opacity-0 scale-95"
93
- >
94
- <a
95
- class="memori-link-item--link"
96
- href="https://memori.ai/en"
97
- rel="noopener noreferrer"
98
- target="_blank"
99
- >
100
- <div
101
- class="memori-card memori-link-item--card memori-card--with-cover memori-card--hoverable"
102
- >
103
- <div
104
- class="memori-spin"
105
- >
106
- <div
107
- class="memori-card--cover"
108
- >
109
- <div
110
- class="memori-link-item--card-cover-icon"
111
- >
112
- <svg
113
- aria-hidden="true"
114
- class="memori-link-item--icon"
115
- focusable="false"
116
- role="img"
117
- viewBox="0 0 1024 1024"
118
- xmlns="http://www.w3.org/2000/svg"
119
- >
120
- <path
121
- d="M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"
122
- />
123
- </svg>
124
- </div>
125
- </div>
126
- <div
127
- class="memori-card--content"
128
- >
129
- <h3
130
- class="memori-card--title"
131
- >
132
- Memori Srl
133
- </h3>
134
- <div
135
- class="memori-card--children"
136
- />
137
- </div>
138
- <div
139
- class="memori-spin--spinner"
140
- >
141
- <svg
142
- aria-hidden="true"
143
- class="memori-loading-icon"
144
- focusable="false"
145
- role="img"
146
- viewBox="0 0 1024 1024"
147
- xmlns="http://www.w3.org/2000/svg"
148
- >
149
- <path
150
- d="M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"
151
- />
152
- </svg>
153
- </div>
154
- </div>
155
- </div>
156
- </a>
157
- </div>
158
- </div>
159
- </div>
160
- </div>
161
- `;
162
-
163
- exports[`renders LinkItemWidget unchanged with description oneline 1`] = `
164
- <div>
165
- <div
166
- class="memori-link-items"
167
- >
168
- <div
169
- class="memori-link-items--grid memori-chat-scroll-item memori-link-items--agent"
170
- >
171
- <div
172
- class="memori-link-item ease-out duration-500 delay-0 opacity-0 scale-95"
173
- >
174
- <a
175
- class="memori-link-item--link"
176
- href="https://memori.ai/en"
177
- rel="noopener noreferrer"
178
- target="_blank"
179
- >
180
- <div
181
- class="memori-card memori-link-item--card memori-link-item--card-description-oneline memori-card--with-cover memori-card--hoverable"
182
- >
183
- <div
184
- class="memori-spin"
185
- >
186
- <div
187
- class="memori-card--cover"
188
- >
189
- <div
190
- class="memori-link-item--card-cover-icon"
191
- >
192
- <svg
193
- aria-hidden="true"
194
- class="memori-link-item--icon"
195
- focusable="false"
196
- role="img"
197
- viewBox="0 0 1024 1024"
198
- xmlns="http://www.w3.org/2000/svg"
199
- >
200
- <path
201
- d="M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"
202
- />
203
- </svg>
204
- </div>
205
- </div>
206
- <div
207
- class="memori-card--content"
208
- >
209
- <h3
210
- class="memori-card--title"
211
- >
212
- Memori Srl
213
- </h3>
214
- <div
215
- class="memori-card--children"
216
- />
217
- </div>
218
- <div
219
- class="memori-spin--spinner"
220
- >
221
- <svg
222
- aria-hidden="true"
223
- class="memori-loading-icon"
224
- focusable="false"
225
- role="img"
226
- viewBox="0 0 1024 1024"
227
- xmlns="http://www.w3.org/2000/svg"
228
- >
229
- <path
230
- d="M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"
231
- />
232
- </svg>
233
- </div>
234
- </div>
235
- </div>
236
- </a>
237
- </div>
238
- </div>
239
- </div>
240
- </div>
241
- `;
242
-
243
- exports[`renders LinkItemWidget unchanged with no media 1`] = `
244
- <div>
245
- <div
246
- class="memori-link-items"
247
- >
248
- <div
249
- class="memori-link-items--grid memori-chat-scroll-item memori-link-items--agent"
250
- />
251
- </div>
252
- </div>
253
- `;