@memori.ai/memori-react 8.30.1 → 8.32.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 (123) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/components/DrawerFooter/DrawerFooter.css +62 -0
  3. package/dist/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  4. package/dist/components/DrawerFooter/DrawerFooter.js +10 -0
  5. package/dist/components/DrawerFooter/DrawerFooter.js.map +1 -0
  6. package/dist/components/Header/Header.css +53 -0
  7. package/dist/components/Header/Header.d.ts +1 -0
  8. package/dist/components/Header/Header.js +74 -3
  9. package/dist/components/Header/Header.js.map +1 -1
  10. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +5 -17
  11. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  12. package/dist/components/MemoriWidget/MemoriWidget.js +1 -0
  13. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  14. package/dist/components/PositionPopover/PositionPopover.css +194 -0
  15. package/dist/components/PositionPopover/PositionPopover.d.ts +15 -0
  16. package/dist/components/PositionPopover/PositionPopover.js +181 -0
  17. package/dist/components/PositionPopover/PositionPopover.js.map +1 -0
  18. package/dist/components/icons/GasStation.d.ts +6 -0
  19. package/dist/components/icons/GasStation.js +6 -0
  20. package/dist/components/icons/GasStation.js.map +1 -0
  21. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  22. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +37 -0
  23. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  24. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +671 -0
  25. package/dist/components/layouts/chat.css +14 -0
  26. package/dist/components/layouts/fullpage.css +119 -0
  27. package/dist/helpers/userMessage.d.ts +2 -0
  28. package/dist/helpers/userMessage.js +23 -0
  29. package/dist/helpers/userMessage.js.map +1 -0
  30. package/dist/icons/FacebookIcon.d.ts +3 -0
  31. package/dist/icons/FacebookIcon.js +6 -0
  32. package/dist/icons/FacebookIcon.js.map +1 -0
  33. package/dist/icons/LinkedinIcon.d.ts +3 -0
  34. package/dist/icons/LinkedinIcon.js +6 -0
  35. package/dist/icons/LinkedinIcon.js.map +1 -0
  36. package/dist/icons/TelegramIcon.d.ts +3 -0
  37. package/dist/icons/TelegramIcon.js +6 -0
  38. package/dist/icons/TelegramIcon.js.map +1 -0
  39. package/dist/icons/TwitterIcon.d.ts +3 -0
  40. package/dist/icons/TwitterIcon.js +6 -0
  41. package/dist/icons/TwitterIcon.js.map +1 -0
  42. package/dist/icons/WhatsappIcon.d.ts +3 -0
  43. package/dist/icons/WhatsappIcon.js +6 -0
  44. package/dist/icons/WhatsappIcon.js.map +1 -0
  45. package/dist/locales/de.json +1 -0
  46. package/dist/locales/en.json +1 -0
  47. package/dist/locales/es.json +1 -0
  48. package/dist/locales/fr.json +1 -0
  49. package/dist/locales/it.json +1 -0
  50. package/dist/testUtils.d.ts +5 -0
  51. package/dist/testUtils.js +18 -0
  52. package/dist/testUtils.js.map +1 -0
  53. package/dist/version.d.ts +1 -1
  54. package/dist/version.js +1 -1
  55. package/esm/components/DrawerFooter/DrawerFooter.css +62 -0
  56. package/esm/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  57. package/esm/components/DrawerFooter/DrawerFooter.js +8 -0
  58. package/esm/components/DrawerFooter/DrawerFooter.js.map +1 -0
  59. package/esm/components/Header/Header.css +53 -0
  60. package/esm/components/Header/Header.d.ts +1 -0
  61. package/esm/components/Header/Header.js +75 -4
  62. package/esm/components/Header/Header.js.map +1 -1
  63. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +5 -17
  64. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  65. package/esm/components/MemoriWidget/MemoriWidget.js +1 -0
  66. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  67. package/esm/components/PositionPopover/PositionPopover.css +194 -0
  68. package/esm/components/PositionPopover/PositionPopover.d.ts +15 -0
  69. package/esm/components/PositionPopover/PositionPopover.js +178 -0
  70. package/esm/components/PositionPopover/PositionPopover.js.map +1 -0
  71. package/esm/components/icons/GasStation.d.ts +6 -0
  72. package/esm/components/icons/GasStation.js +4 -0
  73. package/esm/components/icons/GasStation.js.map +1 -0
  74. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  75. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +34 -0
  76. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  77. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +671 -0
  78. package/esm/components/layouts/chat.css +14 -0
  79. package/esm/components/layouts/fullpage.css +119 -0
  80. package/esm/helpers/userMessage.d.ts +2 -0
  81. package/esm/helpers/userMessage.js +18 -0
  82. package/esm/helpers/userMessage.js.map +1 -0
  83. package/esm/icons/FacebookIcon.d.ts +3 -0
  84. package/esm/icons/FacebookIcon.js +4 -0
  85. package/esm/icons/FacebookIcon.js.map +1 -0
  86. package/esm/icons/LinkedinIcon.d.ts +3 -0
  87. package/esm/icons/LinkedinIcon.js +4 -0
  88. package/esm/icons/LinkedinIcon.js.map +1 -0
  89. package/esm/icons/TelegramIcon.d.ts +3 -0
  90. package/esm/icons/TelegramIcon.js +4 -0
  91. package/esm/icons/TelegramIcon.js.map +1 -0
  92. package/esm/icons/TwitterIcon.d.ts +3 -0
  93. package/esm/icons/TwitterIcon.js +4 -0
  94. package/esm/icons/TwitterIcon.js.map +1 -0
  95. package/esm/icons/WhatsappIcon.d.ts +3 -0
  96. package/esm/icons/WhatsappIcon.js +4 -0
  97. package/esm/icons/WhatsappIcon.js.map +1 -0
  98. package/esm/locales/de.json +1 -0
  99. package/esm/locales/en.json +1 -0
  100. package/esm/locales/es.json +1 -0
  101. package/esm/locales/fr.json +1 -0
  102. package/esm/locales/it.json +1 -0
  103. package/esm/testUtils.d.ts +5 -0
  104. package/esm/testUtils.js +15 -0
  105. package/esm/testUtils.js.map +1 -0
  106. package/esm/version.d.ts +1 -1
  107. package/esm/version.js +1 -1
  108. package/package.json +1 -1
  109. package/src/components/Header/Header.css +53 -0
  110. package/src/components/Header/Header.stories.tsx +46 -0
  111. package/src/components/Header/Header.tsx +151 -2
  112. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +71 -0
  113. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +10 -24
  114. package/src/components/MemoriWidget/MemoriWidget.tsx +1 -0
  115. package/src/components/icons/GasStation.tsx +36 -0
  116. package/src/components/layouts/chat.css +14 -0
  117. package/src/components/layouts/layouts.stories.tsx +14 -14
  118. package/src/locales/de.json +1 -0
  119. package/src/locales/en.json +1 -0
  120. package/src/locales/es.json +1 -0
  121. package/src/locales/fr.json +1 -0
  122. package/src/locales/it.json +1 -0
  123. package/src/version.ts +1 -1
@@ -790,6 +790,43 @@ function hello() {
790
790
  This project helps you build amazing applications.
791
791
  </output>`;
792
792
 
793
+ const markdownCustomArtifact = `<output class="memori-artifact" data-mimetype="markdown" data-title="CUSTOM_MARKDOWN_TEST.md">
794
+ # Custom Markdown Rendering Test
795
+
796
+ ## Text formatting
797
+ Use **bold**, *italic*, and \`inline code\` in the same sentence.
798
+
799
+ ## Checklist
800
+ - [x] Parse headings
801
+ - [x] Render lists
802
+ - [ ] Verify custom table support
803
+
804
+ ## Table
805
+ | Feature | Expected |
806
+ | --- | --- |
807
+ | Link rendering | Opens in a new tab |
808
+ | Code block | Preserves indentation |
809
+ | Blockquote | Styled correctly |
810
+
811
+ ## Blockquote
812
+ > This is a quoted note to verify markdown styling in preview mode.
813
+
814
+ ## Code block
815
+ \`\`\`ts
816
+ type User = {
817
+ id: string;
818
+ name: string;
819
+ active: boolean;
820
+ };
821
+
822
+ const toLabel = (user: User) => \`\${user.name} (\${user.id})\`;
823
+ \`\`\`
824
+
825
+ ## Links
826
+ - [Memori website](https://memori.ai)
827
+ - [Example docs](https://example.com/docs)
828
+ </output>`;
829
+
793
830
  const cssArtifact = `<output class="memori-artifact" data-mimetype="css">
794
831
  /* Modern CSS Grid Layout */
795
832
  .container {
@@ -1112,6 +1149,40 @@ This includes all the essential sections for a project README with proper format
1112
1149
  ),
1113
1150
  };
1114
1151
 
1152
+ export const MarkdownCustomRendering: Story = {
1153
+ args: {},
1154
+ render: () => (
1155
+ <Chat
1156
+ memori={mockMemori}
1157
+ tenant={mockTenant}
1158
+ sessionID="test-session"
1159
+ history={[
1160
+ {
1161
+ text: `I generated a custom markdown artifact to validate rendering behavior:
1162
+
1163
+ ${markdownCustomArtifact}
1164
+
1165
+ Please check preview and code tabs to verify the output.`,
1166
+ fromUser: false,
1167
+ timestamp: new Date().toISOString(),
1168
+ },
1169
+ ]}
1170
+ pushMessage={mockPushMessage}
1171
+ simulateUserPrompt={mockSimulateUserPrompt}
1172
+ onChangeUserMessage={mockOnChangeUserMessage}
1173
+ sendMessage={mockSendMessage}
1174
+ setEnableFocusChatInput={mockSetEnableFocusChatInput}
1175
+ stopAudio={mockStopAudio}
1176
+ startListening={mockStartListening}
1177
+ stopListening={mockStopListening}
1178
+ setSendOnEnter={mockSetSendOnEnter}
1179
+ setAttachmentsMenuOpen={mockSetAttachmentsMenuOpen}
1180
+ showInputs={false}
1181
+ isChatlogPanel={false}
1182
+ />
1183
+ ),
1184
+ };
1185
+
1115
1186
  export const CSSStyles: Story = {
1116
1187
  args: {},
1117
1188
  render: () => (
@@ -13,6 +13,7 @@ import Code from '../../../icons/Code';
13
13
  import { PreviewIcon } from '../../../icons/Preview';
14
14
  import Snippet from '../../../Snippet/Snippet';
15
15
  import { Medium } from '@memori.ai/memori-api-client/dist/types';
16
+ import { renderMsg } from '../../../../helpers/message';
16
17
 
17
18
  const ArtifactPreview: React.FC<{
18
19
  artifact: ArtifactData;
@@ -41,15 +42,22 @@ const ArtifactPreview: React.FC<{
41
42
  />
42
43
  );
43
44
 
44
- case 'markdown':
45
+ case 'markdown': {
46
+ const { text: renderedMarkdown } = renderMsg(
47
+ artifact.content,
48
+ false,
49
+ 'Reasoning...',
50
+ false
51
+ );
45
52
  return (
46
53
  <div
47
54
  className="memori-artifact-preview-markdown"
48
55
  dangerouslySetInnerHTML={{
49
- __html: renderMarkdown(artifact.content),
56
+ __html: renderedMarkdown,
50
57
  }}
51
58
  />
52
59
  );
60
+ }
53
61
 
54
62
  default:
55
63
  return (
@@ -63,28 +71,6 @@ const ArtifactPreview: React.FC<{
63
71
  }
64
72
  }, [artifact]);
65
73
 
66
- /**
67
- * Basic markdown rendering
68
- */
69
- const renderMarkdown = useCallback((markdown: string): string => {
70
- return markdown
71
- .replace(/^# (.*$)/gim, '<h1>$1</h1>')
72
- .replace(/^## (.*$)/gim, '<h2>$1</h2>')
73
- .replace(/^### (.*$)/gim, '<h3>$1</h3>')
74
- .replace(/^#### (.*$)/gim, '<h4>$1</h4>')
75
- .replace(/^##### (.*$)/gim, '<h5>$1</h5>')
76
- .replace(/^###### (.*$)/gim, '<h6>$1</h6>')
77
- .replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>')
78
- .replace(/\*(.*?)\*/g, '<em>$1</em>')
79
- .replace(/`(.*?)`/g, '<code>$1</code>')
80
- .replace(/```([\s\S]*?)```/g, '<pre><code>$1</code></pre>')
81
- .replace(
82
- /\[([^\]]+)\]\(([^)]+)\)/g,
83
- '<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'
84
- )
85
- .replace(/\n/g, '<br>');
86
- }, []);
87
-
88
74
  const mapArtifactMimeTypeToSnippetMimeType = useCallback(
89
75
  (mimeType: string) => {
90
76
  switch (mimeType) {
@@ -2896,6 +2896,7 @@ const MemoriWidget = ({
2896
2896
  showSettings: showSettings ?? integrationConfig?.showSettings ?? true,
2897
2897
  showChatHistory:
2898
2898
  showChatHistory ?? integrationConfig?.showChatHistory ?? true,
2899
+ showMessageConsumption: enableMessageConsumption,
2899
2900
  hasUserActivatedSpeak,
2900
2901
  showReload: selectedLayout === 'TOTEM',
2901
2902
  showClear: showClear ?? integrationConfig?.showClear ?? false,
@@ -0,0 +1,36 @@
1
+ import * as React from "react"
2
+ const GasStation = ({ className, title }: { className?: string; title?: string }) => (
3
+ <svg
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width={800}
6
+ height={800}
7
+ fill="none"
8
+ viewBox="0 0 24 24"
9
+ className={className}
10
+ aria-label={title}
11
+ >
12
+ <path
13
+ stroke="currentColor"
14
+ strokeWidth={1.5}
15
+ d="M16 22V8c0-2.828 0-4.243-.879-5.121C14.243 2 12.828 2 10 2H9c-2.828 0-4.243 0-5.121.879C3 3.757 3 5.172 3 8v14"
16
+ />
17
+ <path
18
+ stroke="currentColor"
19
+ strokeWidth={1.5}
20
+ d="M11 6H8c-.943 0-1.414 0-1.707.293C6 6.586 6 7.057 6 8c0 .943 0 1.414.293 1.707C6.586 10 7.057 10 8 10h3c.943 0 1.414 0 1.707-.293C13 9.414 13 8.943 13 8c0-.943 0-1.414-.293-1.707C12.414 6 11.943 6 11 6Z"
21
+ />
22
+ <path
23
+ stroke="currentColor"
24
+ strokeLinecap="round"
25
+ strokeWidth={1.5}
26
+ d="M7 17h5M17 22H2M19.5 4l1.233.986c.138.11.207.166.27.222a3 3 0 0 1 .992 2.066c.005.084.005.172.005.348V18.5a1.5 1.5 0 0 1-3 0v-.071c0-.79-.64-1.429-1.429-1.429H16"
27
+ />
28
+ <path
29
+ stroke="currentColor"
30
+ strokeLinecap="round"
31
+ strokeWidth={1.5}
32
+ d="M22 8h-1.5A1.5 1.5 0 0 0 19 9.5v2.419a1.5 1.5 0 0 0 1.026 1.423L22 14"
33
+ />
34
+ </svg>
35
+ )
36
+ export default GasStation;
@@ -18,6 +18,16 @@
18
18
  transition: all 0.05s ease-in-out;
19
19
  }
20
20
 
21
+ .memori-chat-layout--header .memori-header {
22
+ display: inline-flex;
23
+ width: calc(50% - 1rem);
24
+ max-width: 100%;
25
+ flex-wrap: wrap;
26
+ align-items: center;
27
+ justify-content: flex-end;
28
+ gap: 0.2rem;
29
+ }
30
+
21
31
  .memori-chat-layout--header-with-artifact {
22
32
  display: none;
23
33
  }
@@ -144,6 +154,10 @@
144
154
  }
145
155
 
146
156
  @media (max-width: 870px) {
157
+ .memori-chat-layout--header .memori-header {
158
+ width: 100%;
159
+ }
160
+
147
161
  .memori-chat-layout .memori--powered-by {
148
162
  top: 3.5rem;
149
163
  bottom: auto;
@@ -52,6 +52,7 @@ DefaultLayout.args = {
52
52
  showLogin: true,
53
53
  multilingual: true,
54
54
  avatar3dHidden: true,
55
+ showMessageConsumption: true,
55
56
  };
56
57
 
57
58
 
@@ -227,18 +228,17 @@ HiddenChat.args = {
227
228
  export const ZoomedFullBody = Template.bind({});
228
229
  ZoomedFullBody.args = {
229
230
  ...DefaultLayout.args,
230
- uiLang: 'it',
231
- showShare: true,
232
- showSettings: true,
233
- showAudio: true,
234
- enableAudio: true,
235
- integration: {
236
-
237
- },
238
- memori: {
239
- ...memori,
240
- voiceType: 'FEMALE',
241
- },
242
- tenant,
243
- layout: 'ZOOMED_FULL_BODY',
231
+ memoriName: "Layout Storybook",
232
+ ownerUserName: "Andrea-Patini",
233
+ memoriID: "ae20fc5a-cc15-4db9-b7dd-2cd4a621b85e",
234
+ ownerUserID: "91dbc9ba-b684-4fbe-9828-b5980af6cda9",
235
+ tenantID: "aisuru-staging.aclambda.online",
236
+ engineURL: "https://engine-staging.memori.ai/memori/v2",
237
+ apiURL: "https://backend-staging.memori.ai/api/v2",
238
+ baseURL: "http://localhost:3000",
239
+ layout: "FULLPAGE",
240
+ uiLang: "IT",
241
+ spokenLang: "IT",
242
+ integrationID: "32922e14-24d6-4f5f-a06b-d963da14a658",
243
+ showSettings: true
244
244
  };
@@ -383,6 +383,7 @@
383
383
  "co2": "CO2",
384
384
  "water": "Wasser",
385
385
  "usageBadgesHint": "Klicke auf einen dieser Buttons, um mehr Informationen zu sehen",
386
+ "totalChatConsumptionTitle": "Gesamter Chat-Verbrauch",
386
387
  "impactComparisonUnavailable": "Indikativer Vergleich nicht verfuegbar.",
387
388
  "impactComparisonEnergy": "Indikativer Vergleich: in etwa wie eine 10-W-LED-Lampe fuer {{duration}} eingeschaltet lassen.",
388
389
  "impactComparisonCo2": "Indikativer Vergleich: etwa {{distance}} mit einem durchschnittlichen Benzinauto gefahren.",
@@ -454,6 +454,7 @@
454
454
  "co2": "CO2",
455
455
  "water": "Water",
456
456
  "usageBadgesHint": "Click one of these buttons to show more information",
457
+ "totalChatConsumptionTitle": "Total Chat Consumption",
457
458
  "impactComparisonUnavailable": "Indicative comparison unavailable.",
458
459
  "impactComparisonEnergy": "Indicative comparison: roughly like keeping a 10 W LED bulb on for {{duration}}.",
459
460
  "impactComparisonCo2": "Indicative comparison: about {{distance}} traveled by an average gasoline car.",
@@ -410,6 +410,7 @@
410
410
  "co2": "CO2",
411
411
  "water": "Agua",
412
412
  "usageBadgesHint": "Haz clic en uno de estos botones para ver más información",
413
+ "totalChatConsumptionTitle": "Consumo Total del Chat",
413
414
  "impactComparisonUnavailable": "Comparacion indicativa no disponible.",
414
415
  "impactComparisonEnergy": "Comparacion indicativa: aproximadamente como mantener encendida una bombilla LED de 10 W durante {{duration}}.",
415
416
  "impactComparisonCo2": "Comparacion indicativa: aproximadamente {{distance}} recorridos en un coche de gasolina promedio.",
@@ -418,6 +418,7 @@
418
418
  "co2": "CO2",
419
419
  "water": "Eau",
420
420
  "usageBadgesHint": "Cliquez sur un de ces boutons pour afficher plus d'informations",
421
+ "totalChatConsumptionTitle": "Consommation Totale du Chat",
421
422
  "impactComparisonUnavailable": "Comparaison indicative non disponible.",
422
423
  "impactComparisonEnergy": "Comparaison indicative : environ comme laisser allumee une ampoule LED de 10 W pendant {{duration}}.",
423
424
  "impactComparisonCo2": "Comparaison indicative : environ {{distance}} parcourus en voiture essence moyenne.",
@@ -451,6 +451,7 @@
451
451
  "co2": "CO2",
452
452
  "water": "Acqua",
453
453
  "usageBadgesHint": "Clicca uno di questi pulsanti per mostrare maggiori informazioni",
454
+ "totalChatConsumptionTitle": "Consumo Totale Chat",
454
455
  "impactComparisonUnavailable": "Confronto indicativo non disponibile.",
455
456
  "impactComparisonEnergy": "Confronto indicativo: circa quanto tenere accesa una lampadina LED da 10 W per {{duration}}.",
456
457
  "impactComparisonCo2": "Confronto indicativo: circa {{distance}} percorsi in auto a benzina media.",
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // This file is auto-generated. Do not edit manually.
2
- export const version = '8.30.1';
2
+ export const version = '8.32.0';