@memori.ai/memori-react 8.41.5 → 8.42.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 (186) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +4 -3
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  4. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +367 -0
  5. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +36 -0
  6. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +116 -0
  7. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -0
  8. package/dist/components/DateSelector/DateSelector.d.ts +2 -1
  9. package/dist/components/DateSelector/DateSelector.js +17 -7
  10. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  11. package/dist/components/DrawerFooter/DrawerFooter.css +62 -0
  12. package/dist/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  13. package/dist/components/DrawerFooter/DrawerFooter.js +10 -0
  14. package/dist/components/DrawerFooter/DrawerFooter.js.map +1 -0
  15. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +437 -0
  16. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +62 -0
  17. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +292 -0
  18. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -0
  19. package/dist/components/PositionPopover/PositionPopover.css +219 -0
  20. package/dist/components/PositionPopover/PositionPopover.d.ts +20 -0
  21. package/dist/components/PositionPopover/PositionPopover.js +187 -0
  22. package/dist/components/PositionPopover/PositionPopover.js.map +1 -0
  23. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  24. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +43 -0
  25. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  26. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +724 -0
  27. package/dist/components/layouts/fullpage.css +425 -0
  28. package/dist/context/widgetSurfaceContext.d.ts +3 -0
  29. package/dist/context/widgetSurfaceContext.js +11 -0
  30. package/dist/context/widgetSurfaceContext.js.map +1 -0
  31. package/dist/helpers/media.js +18 -3
  32. package/dist/helpers/media.js.map +1 -1
  33. package/dist/helpers/positionPopover.d.ts +1 -0
  34. package/dist/helpers/positionPopover.js +7 -0
  35. package/dist/helpers/positionPopover.js.map +1 -0
  36. package/dist/helpers/usePressTooltip.d.ts +13 -0
  37. package/dist/helpers/usePressTooltip.js +23 -0
  38. package/dist/helpers/usePressTooltip.js.map +1 -0
  39. package/dist/icons/FacebookIcon.d.ts +3 -0
  40. package/dist/icons/FacebookIcon.js +6 -0
  41. package/dist/icons/FacebookIcon.js.map +1 -0
  42. package/dist/icons/LinkedinIcon.d.ts +3 -0
  43. package/dist/icons/LinkedinIcon.js +6 -0
  44. package/dist/icons/LinkedinIcon.js.map +1 -0
  45. package/dist/icons/MemoriIcon.d.ts +3 -0
  46. package/dist/icons/MemoriIcon.js +8 -0
  47. package/dist/icons/MemoriIcon.js.map +1 -0
  48. package/dist/icons/TelegramIcon.d.ts +3 -0
  49. package/dist/icons/TelegramIcon.js +6 -0
  50. package/dist/icons/TelegramIcon.js.map +1 -0
  51. package/dist/icons/TwitterIcon.d.ts +3 -0
  52. package/dist/icons/TwitterIcon.js +6 -0
  53. package/dist/icons/TwitterIcon.js.map +1 -0
  54. package/dist/icons/WhatsappIcon.d.ts +3 -0
  55. package/dist/icons/WhatsappIcon.js +6 -0
  56. package/dist/icons/WhatsappIcon.js.map +1 -0
  57. package/dist/icons/artifacts/DocumentIcon.d.ts +3 -0
  58. package/dist/icons/artifacts/DocumentIcon.js +6 -0
  59. package/dist/icons/artifacts/DocumentIcon.js.map +1 -0
  60. package/dist/icons/artifacts/HtmlIcon.d.ts +3 -0
  61. package/dist/icons/artifacts/HtmlIcon.js +6 -0
  62. package/dist/icons/artifacts/HtmlIcon.js.map +1 -0
  63. package/dist/icons/artifacts/JavascriptIcon.d.ts +3 -0
  64. package/dist/icons/artifacts/JavascriptIcon.js +6 -0
  65. package/dist/icons/artifacts/JavascriptIcon.js.map +1 -0
  66. package/dist/icons/artifacts/MarkdownIcon.d.ts +3 -0
  67. package/dist/icons/artifacts/MarkdownIcon.js +6 -0
  68. package/dist/icons/artifacts/MarkdownIcon.js.map +1 -0
  69. package/dist/icons/artifacts/PythonIcon.d.ts +3 -0
  70. package/dist/icons/artifacts/PythonIcon.js +6 -0
  71. package/dist/icons/artifacts/PythonIcon.js.map +1 -0
  72. package/dist/icons/artifacts/SvgIcon.d.ts +3 -0
  73. package/dist/icons/artifacts/SvgIcon.js +6 -0
  74. package/dist/icons/artifacts/SvgIcon.js.map +1 -0
  75. package/dist/icons/artifacts/XmlIcon.d.ts +3 -0
  76. package/dist/icons/artifacts/XmlIcon.js +6 -0
  77. package/dist/icons/artifacts/XmlIcon.js.map +1 -0
  78. package/dist/icons/artifacts/cssIcon.d.ts +3 -0
  79. package/dist/icons/artifacts/cssIcon.js +6 -0
  80. package/dist/icons/artifacts/cssIcon.js.map +1 -0
  81. package/dist/testUtils.d.ts +5 -0
  82. package/dist/testUtils.js +18 -0
  83. package/dist/testUtils.js.map +1 -0
  84. package/dist/version.d.ts +1 -1
  85. package/dist/version.js +1 -1
  86. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +4 -3
  87. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  88. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +367 -0
  89. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +36 -0
  90. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +113 -0
  91. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -0
  92. package/esm/components/DateSelector/DateSelector.d.ts +2 -1
  93. package/esm/components/DateSelector/DateSelector.js +17 -7
  94. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  95. package/esm/components/DrawerFooter/DrawerFooter.css +62 -0
  96. package/esm/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  97. package/esm/components/DrawerFooter/DrawerFooter.js +8 -0
  98. package/esm/components/DrawerFooter/DrawerFooter.js.map +1 -0
  99. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +437 -0
  100. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +62 -0
  101. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +289 -0
  102. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -0
  103. package/esm/components/PositionPopover/PositionPopover.css +219 -0
  104. package/esm/components/PositionPopover/PositionPopover.d.ts +20 -0
  105. package/esm/components/PositionPopover/PositionPopover.js +182 -0
  106. package/esm/components/PositionPopover/PositionPopover.js.map +1 -0
  107. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  108. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +40 -0
  109. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  110. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +724 -0
  111. package/esm/components/layouts/fullpage.css +425 -0
  112. package/esm/context/widgetSurfaceContext.d.ts +3 -0
  113. package/esm/context/widgetSurfaceContext.js +7 -0
  114. package/esm/context/widgetSurfaceContext.js.map +1 -0
  115. package/esm/helpers/media.js +18 -3
  116. package/esm/helpers/media.js.map +1 -1
  117. package/esm/helpers/positionPopover.d.ts +1 -0
  118. package/esm/helpers/positionPopover.js +4 -0
  119. package/esm/helpers/positionPopover.js.map +1 -0
  120. package/esm/helpers/usePressTooltip.d.ts +13 -0
  121. package/esm/helpers/usePressTooltip.js +20 -0
  122. package/esm/helpers/usePressTooltip.js.map +1 -0
  123. package/esm/icons/FacebookIcon.d.ts +3 -0
  124. package/esm/icons/FacebookIcon.js +4 -0
  125. package/esm/icons/FacebookIcon.js.map +1 -0
  126. package/esm/icons/LinkedinIcon.d.ts +3 -0
  127. package/esm/icons/LinkedinIcon.js +4 -0
  128. package/esm/icons/LinkedinIcon.js.map +1 -0
  129. package/esm/icons/MemoriIcon.d.ts +3 -0
  130. package/esm/icons/MemoriIcon.js +6 -0
  131. package/esm/icons/MemoriIcon.js.map +1 -0
  132. package/esm/icons/TelegramIcon.d.ts +3 -0
  133. package/esm/icons/TelegramIcon.js +4 -0
  134. package/esm/icons/TelegramIcon.js.map +1 -0
  135. package/esm/icons/TwitterIcon.d.ts +3 -0
  136. package/esm/icons/TwitterIcon.js +4 -0
  137. package/esm/icons/TwitterIcon.js.map +1 -0
  138. package/esm/icons/WhatsappIcon.d.ts +3 -0
  139. package/esm/icons/WhatsappIcon.js +4 -0
  140. package/esm/icons/WhatsappIcon.js.map +1 -0
  141. package/esm/icons/artifacts/DocumentIcon.d.ts +3 -0
  142. package/esm/icons/artifacts/DocumentIcon.js +4 -0
  143. package/esm/icons/artifacts/DocumentIcon.js.map +1 -0
  144. package/esm/icons/artifacts/HtmlIcon.d.ts +3 -0
  145. package/esm/icons/artifacts/HtmlIcon.js +4 -0
  146. package/esm/icons/artifacts/HtmlIcon.js.map +1 -0
  147. package/esm/icons/artifacts/JavascriptIcon.d.ts +3 -0
  148. package/esm/icons/artifacts/JavascriptIcon.js +4 -0
  149. package/esm/icons/artifacts/JavascriptIcon.js.map +1 -0
  150. package/esm/icons/artifacts/MarkdownIcon.d.ts +3 -0
  151. package/esm/icons/artifacts/MarkdownIcon.js +4 -0
  152. package/esm/icons/artifacts/MarkdownIcon.js.map +1 -0
  153. package/esm/icons/artifacts/PythonIcon.d.ts +3 -0
  154. package/esm/icons/artifacts/PythonIcon.js +4 -0
  155. package/esm/icons/artifacts/PythonIcon.js.map +1 -0
  156. package/esm/icons/artifacts/SvgIcon.d.ts +3 -0
  157. package/esm/icons/artifacts/SvgIcon.js +4 -0
  158. package/esm/icons/artifacts/SvgIcon.js.map +1 -0
  159. package/esm/icons/artifacts/XmlIcon.d.ts +3 -0
  160. package/esm/icons/artifacts/XmlIcon.js +4 -0
  161. package/esm/icons/artifacts/XmlIcon.js.map +1 -0
  162. package/esm/icons/artifacts/cssIcon.d.ts +3 -0
  163. package/esm/icons/artifacts/cssIcon.js +4 -0
  164. package/esm/icons/artifacts/cssIcon.js.map +1 -0
  165. package/esm/testUtils.d.ts +5 -0
  166. package/esm/testUtils.js +15 -0
  167. package/esm/testUtils.js.map +1 -0
  168. package/esm/version.d.ts +1 -1
  169. package/esm/version.js +1 -1
  170. package/package.json +2 -2
  171. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +6 -4
  172. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +10 -10
  173. package/src/components/DateSelector/DateSelector.stories.tsx +11 -2
  174. package/src/components/DateSelector/DateSelector.tsx +28 -9
  175. package/src/components/layouts/layouts.stories.tsx +1 -1
  176. package/src/helpers/media.test.ts +36 -0
  177. package/src/helpers/media.ts +39 -12
  178. package/src/version.ts +1 -1
  179. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +0 -8
  180. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +0 -117
  181. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +0 -1
  182. package/dist/helpers/nats/natsBundled.js +0 -13224
  183. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +0 -8
  184. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +0 -112
  185. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +0 -1
  186. package/esm/helpers/nats/natsBundled.js +0 -13225
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
 
2
2
 
3
+ ## [8.42.0](https://github.com/memori-ai/memori-react/compare/v8.41.6...v8.42.0) (2026-08-03)
4
+
5
+
6
+ ### Features
7
+
8
+ * enhance resource URL handling by appending session ID for specific asset paths ([29fbc31](https://github.com/memori-ai/memori-react/commit/29fbc31769b82d3c6d4a1ca9ee2fd3d357f6bafd))
9
+
10
+
11
+ ### Changes
12
+
13
+ * clean up media URL handling ([a917b60](https://github.com/memori-ai/memori-react/commit/a917b60aa2324a7015d5655d19a0ec9a30c01453))
14
+
15
+ ## [8.41.6](https://github.com/memori-ai/memori-react/compare/v8.41.5...v8.41.6) (2026-07-24)
16
+
17
+
18
+ ### Maintenance
19
+
20
+ * update dompurify ([66aa725](https://github.com/memori-ai/memori-react/commit/66aa72599369c4f34773030bd3121f49b0f9610e))
21
+
22
+
23
+ ### Changes
24
+
25
+ * improve date handling in AgeVerificationModal ([76317ea](https://github.com/memori-ai/memori-react/commit/76317ea22c0f5a07f956341d772a6e4719822f8e))
26
+
3
27
  ## [8.41.5](https://github.com/memori-ai/memori-react/compare/v8.41.4...v8.41.5) (2026-07-21)
4
28
 
5
29
 
@@ -32,12 +32,13 @@ const AgeVerificationModal = ({ visible = false, onClose, minAge }) => {
32
32
  }
33
33
  onClose(birthDate.toJSDate().toISOString());
34
34
  }, [birthDate, minAge, onClose, t]);
35
+ const handleDateChange = (0, react_1.useCallback)((date) => {
36
+ setBirthDate(date);
37
+ }, []);
35
38
  return ((0, jsx_runtime_1.jsxs)(Modal_1.default, { open: visible, width: "600px", widthMd: "600px", title: t('ageVerification'), className: "age-verification-modal", closable: true, onClose: () => onClose(), children: [(0, jsx_runtime_1.jsx)("p", { children: t('ageVerificationText', { minAge }) }), (0, jsx_runtime_1.jsxs)("form", { className: "age-verification-form", onSubmit: e => {
36
39
  e.preventDefault();
37
40
  onSubmit();
38
- }, children: [(0, jsx_runtime_1.jsx)("div", { className: "form-item", children: (0, jsx_runtime_1.jsxs)("fieldset", { name: "birthDate", children: [(0, jsx_runtime_1.jsx)("legend", { className: "sr-only", children: t('birthDate') }), (0, jsx_runtime_1.jsx)(DateSelector_1.default, { onChange: date => {
39
- setBirthDate(date);
40
- } }), (0, jsx_runtime_1.jsx)("p", { className: "form-item-help", children: t('birthDateHelper') }), error && (0, jsx_runtime_1.jsx)("p", { className: "form-item-error", children: error })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "form-item form-submit", children: (0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, htmlType: "submit", className: "age-verification-submit", loading: submitting, disabled: !birthDate, children: t('confirm') }) })] })] }));
41
+ }, children: [(0, jsx_runtime_1.jsx)("div", { className: "form-item", children: (0, jsx_runtime_1.jsxs)("fieldset", { name: "birthDate", children: [(0, jsx_runtime_1.jsx)("legend", { className: "sr-only", children: t('birthDate') }), (0, jsx_runtime_1.jsx)(DateSelector_1.default, { minAge: minAge, onChange: handleDateChange }), (0, jsx_runtime_1.jsx)("p", { className: "form-item-help", children: t('birthDateHelper') }), error && (0, jsx_runtime_1.jsx)("p", { className: "form-item-error", children: error })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "form-item form-submit", children: (0, jsx_runtime_1.jsx)(Button_1.default, { primary: true, htmlType: "submit", className: "age-verification-submit", loading: submitting, disabled: !birthDate, children: t('confirm') }) })] })] }));
41
42
  };
42
43
  exports.default = AgeVerificationModal;
43
44
  //# sourceMappingURL=AgeVerificationModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgeVerificationModal.js","sourceRoot":"","sources":["../../../src/components/AgeVerificationModal/AgeVerificationModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgeVerificationModal.js","sourceRoot":"","sources":["../../../src/components/AgeVerificationModal/AgeVerificationModal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,367 @@
1
+ .memori-chat-resume-drawer {
2
+ position: fixed;
3
+ z-index: 1200;
4
+ inset: 0;
5
+ pointer-events: none;
6
+ }
7
+
8
+ .memori-chat-resume-drawer--backdrop {
9
+ position: absolute;
10
+ border: 0;
11
+ background: rgba(0, 0, 0, 0);
12
+ cursor: default;
13
+ inset: 0;
14
+ opacity: 0;
15
+ transition: opacity 280ms cubic-bezier(0.32, 0.72, 0, 1);
16
+ }
17
+
18
+ .memori-chat-resume-drawer--panel {
19
+ position: absolute;
20
+ top: 0;
21
+ right: 0;
22
+ display: flex;
23
+ width: min(100%, 430px);
24
+ height: 100%;
25
+ flex-direction: column;
26
+ /* background: var(--memori-main-background); */
27
+ box-shadow: -10px 0 30px rgba(0, 0, 0, 0.16);
28
+ transform: translateX(100%);
29
+ transition: transform 280ms cubic-bezier(0.32, 0.72, 0, 1);
30
+ }
31
+
32
+ .memori-chat-resume-drawer--embedded-shell {
33
+ display: flex;
34
+ height: 100%;
35
+ min-height: 0;
36
+ flex: 1;
37
+ }
38
+
39
+ .memori-chat-resume-drawer--panel-embedded {
40
+ position: relative;
41
+ width: 100%;
42
+ height: 100%;
43
+ box-shadow: none;
44
+ transform: none;
45
+ }
46
+
47
+ .memori-chat-resume-drawer--open {
48
+ pointer-events: auto;
49
+ }
50
+
51
+ .memori-chat-resume-drawer--open .memori-chat-resume-drawer--backdrop {
52
+ opacity: 0.4;
53
+ }
54
+
55
+ .memori-chat-resume-drawer--open .memori-chat-resume-drawer--panel {
56
+ transform: translateX(0);
57
+ }
58
+
59
+ .memori-chat-resume-drawer--header {
60
+ display: flex;
61
+ align-items: center;
62
+ padding: 14px 16px 12px;
63
+ /* border-bottom: 0.5px solid var(--color-border-tertiary, var(--memori-border-color, #e5e7eb)); */
64
+ gap: 8px;
65
+ }
66
+
67
+ .memori-chat-resume-drawer--header-icon-button {
68
+ display: inline-flex;
69
+ width: 28px;
70
+ min-width: 28px;
71
+ height: 28px;
72
+ align-items: center;
73
+ justify-content: center;
74
+ padding: 0;
75
+ border: none;
76
+ border-radius: 999px;
77
+ background: transparent;
78
+ color: var(--color-text-primary, var(--memori-text-color));
79
+ cursor: pointer;
80
+ }
81
+
82
+ .memori-chat-resume-drawer--header-main {
83
+ min-width: 0;
84
+ flex: 1;
85
+ }
86
+
87
+ .memori-chat-resume-drawer--title {
88
+ overflow: hidden;
89
+ margin: 0;
90
+ color: var(--color-text-primary, var(--memori-text-color));
91
+ font-size: 15px;
92
+ font-weight: 500;
93
+ text-overflow: ellipsis;
94
+ white-space: nowrap;
95
+ }
96
+
97
+ .memori-chat-resume-drawer--subtitle {
98
+ overflow: hidden;
99
+ margin: 2px 0 0;
100
+ color: color-mix(in oklch, var(--memori-text-color) 66%, transparent);
101
+ font-size: 12px;
102
+ text-overflow: ellipsis;
103
+ white-space: nowrap;
104
+ }
105
+
106
+ .memori-chat-resume-drawer--summary-banner {
107
+ display: flex;
108
+ align-items: flex-start;
109
+ padding: 10px 12px;
110
+ border: 1px solid var(--color-border-tertiary, var(--memori-border-color, #e5e7eb));
111
+ border-radius: 8px;
112
+ margin: 12px 16px 0;
113
+ background: var(--color-background-secondary, var(--memori-secondary-background));
114
+ gap: 8px;
115
+ }
116
+
117
+ .memori-chat-resume-drawer--summary-icon {
118
+ margin-top: 1px;
119
+ color: color-mix(in oklch, var(--memori-text-color) 68%, transparent);
120
+ }
121
+
122
+ .memori-chat-resume-drawer--summary-title {
123
+ margin: 0 0 2px;
124
+ color: var(--color-text-primary, var(--memori-text-color));
125
+ font-size: 14px;
126
+ font-weight: 600;
127
+ }
128
+
129
+ .memori-chat-resume-drawer--summary-text {
130
+ margin: 0;
131
+ color: color-mix(in oklch, var(--memori-text-color) 72%, transparent);
132
+ font-size: 14px;
133
+ line-height: 1.35;
134
+ }
135
+
136
+ .memori-chat-resume-drawer--thread {
137
+ display: flex;
138
+ overflow: hidden;
139
+ min-height: 0;
140
+ flex: 1;
141
+ flex-direction: column;
142
+ padding: var(--memori-spacing-lg);
143
+ }
144
+
145
+ .memori-chat-resume-drawer--embedded-chat {
146
+ min-height: 0;
147
+ flex: 1;
148
+ }
149
+
150
+ .memori-chat-resume-drawer--embedded-chat .memori-chat--wrapper {
151
+ height: 100%;
152
+ }
153
+
154
+ .memori-chat-resume-drawer--embedded-chat .memori-chat--history {
155
+ height: 100%;
156
+ border-radius: 0;
157
+ margin: 0;
158
+ background: transparent;
159
+ }
160
+
161
+ .memori-chat-resume-drawer--embedded-chat .memori-chat--content {
162
+ padding: 0;
163
+ }
164
+
165
+ .memori-chat-resume-drawer--embedded-chat .memori-chat--cover {
166
+ display: none;
167
+ }
168
+
169
+ .memori-chat-resume-drawer--embedded-chat .memori-chat--bubble-container {
170
+ padding-right: var(--memori-spacing-md);
171
+ padding-left: 0;
172
+ }
173
+
174
+ .memori-chat-resume-drawer--embedded-chat .memori-chat--bubble-message-row {
175
+ align-items: flex-start;
176
+ }
177
+
178
+ /* .memori-chat-resume-drawer--embedded-chat .memori-chat--bubble-container,
179
+ .memori-chat-resume-drawer--embedded-chat .memori-chat--timestamp,
180
+ .memori-chat-resume-drawer--embedded-chat .memori-media-widget,
181
+ .memori-chat-resume-drawer--embedded-chat .memori-chat--bubble-shell {
182
+ padding-right: 0;
183
+ padding-left: 0;
184
+ /* margin-top: var(--memori-spacing-sm);
185
+ } */
186
+
187
+ .memori-chat-resume-drawer--message-group {
188
+ display: flex;
189
+ width: 100%;
190
+ gap: 8px;
191
+ }
192
+
193
+ .memori-chat-resume-drawer--message-group-assistant {
194
+ justify-content: flex-start;
195
+ }
196
+
197
+ .memori-chat-resume-drawer--message-group-user {
198
+ justify-content: flex-end;
199
+ }
200
+
201
+ .memori-chat-resume-drawer--avatar {
202
+ display: inline-flex;
203
+ width: 28px;
204
+ min-width: 28px;
205
+ height: 28px;
206
+ align-items: center;
207
+ justify-content: center;
208
+ border-radius: 999px;
209
+ background: linear-gradient(135deg, #b5a2ff 0%, #8b72ff 100%);
210
+ color: #fff;
211
+ font-size: 11px;
212
+ font-weight: 600;
213
+ }
214
+
215
+ .memori-chat-resume-drawer--message-content {
216
+ display: flex;
217
+ max-width: 82%;
218
+ flex-direction: column;
219
+ gap: 6px;
220
+ }
221
+
222
+ .memori-chat-resume-drawer--message-group-user .memori-chat-resume-drawer--message-content {
223
+ align-items: flex-end;
224
+ }
225
+
226
+ .memori-chat-resume-drawer--timestamp {
227
+ color: color-mix(in oklch, var(--memori-text-color) 64%, transparent);
228
+ font-size: 12px;
229
+ line-height: 1;
230
+ }
231
+
232
+ .memori-chat-resume-drawer--attachment-pill {
233
+ display: flex;
234
+ align-items: center;
235
+ padding: 8px 10px;
236
+ border: 1px solid var(--color-border-tertiary, var(--memori-border-color, #e5e7eb));
237
+ border-radius: 8px;
238
+ background: var(--color-background-secondary, var(--memori-secondary-background));
239
+ gap: 8px;
240
+ }
241
+
242
+ .memori-chat-resume-drawer--attachment-ext {
243
+ display: inline-flex;
244
+ min-width: 34px;
245
+ align-items: center;
246
+ justify-content: center;
247
+ padding: 4px 8px;
248
+ border-radius: 6px;
249
+ background: #d9e8ff;
250
+ color: #2f5fa8;
251
+ font-size: 11px;
252
+ font-weight: 600;
253
+ }
254
+
255
+ .memori-chat-resume-drawer--attachment-meta {
256
+ display: flex;
257
+ min-width: 0;
258
+ flex-direction: column;
259
+ }
260
+
261
+ .memori-chat-resume-drawer--attachment-name {
262
+ overflow: hidden;
263
+ color: var(--color-text-primary, var(--memori-text-color));
264
+ font-size: 13px;
265
+ text-overflow: ellipsis;
266
+ white-space: nowrap;
267
+ }
268
+
269
+ .memori-chat-resume-drawer--attachment-info {
270
+ color: color-mix(in oklch, var(--memori-text-color) 70%, transparent);
271
+ font-size: 12px;
272
+ }
273
+
274
+ .memori-chat-resume-drawer--bubble {
275
+ padding: 10px 12px;
276
+ color: var(--color-text-primary, var(--memori-text-color));
277
+ font-size: 14px;
278
+ line-height: 1.4;
279
+ white-space: pre-wrap;
280
+ }
281
+
282
+ .memori-chat-resume-drawer--bubble-assistant {
283
+ border: 0.5px solid var(--color-border-tertiary, var(--memori-border-color, #e5e7eb));
284
+ border-radius: 4px 12px 12px 12px;
285
+ background: var(--color-background-secondary, var(--memori-secondary-background));
286
+ }
287
+
288
+ .memori-chat-resume-drawer--bubble-user {
289
+ border-radius: 12px 4px 12px 12px;
290
+ background: var(--memori-primary);
291
+ color: #fff;
292
+ }
293
+
294
+ .memori-chat-resume-drawer--interrupted {
295
+ display: inline-flex;
296
+ align-items: center;
297
+ color: color-mix(in oklch, var(--memori-text-color) 72%, transparent);
298
+ font-size: 14px;
299
+ gap: 6px;
300
+ }
301
+
302
+ .memori-chat-resume-drawer--actions {
303
+ display: flex;
304
+ flex-direction: column;
305
+ flex-shrink: 0;
306
+ padding: 16px 24px;
307
+ margin-bottom: 1rem;
308
+ /* border-top: 0.5px solid var(--color-border-tertiary, var(--memori-border-color, #e5e7eb)); */
309
+ /* background: var(--memori-main-background); */
310
+ gap: 12px;
311
+ }
312
+
313
+ .memori-chat-history-drawer--header-download-button {
314
+ display: flex;
315
+ align-self: baseline;
316
+ }
317
+
318
+ .memori-chat-resume-drawer--chips-row {
319
+ display: flex;
320
+ flex-wrap: wrap;
321
+ gap: 8px;
322
+ }
323
+
324
+ .memori-chat-resume-drawer--chip {
325
+ min-height: 32px;
326
+ padding: 0 14px;
327
+ border: 0.5px solid color-mix(in oklch, var(--memori-text-color) 20%, transparent);
328
+ border-radius: 20px;
329
+ background: transparent;
330
+ color: color-mix(in oklch, var(--memori-text-color) 85%, transparent);
331
+ cursor: pointer;
332
+ font-size: 12px;
333
+ font-weight: 500;
334
+ }
335
+
336
+ .memori-chat-resume-drawer--resume-cta {
337
+ width: 100%;
338
+ min-height: 44px;
339
+ border-radius: 10px;
340
+ font-size: 14px;
341
+ font-weight: 500;
342
+ }
343
+
344
+ .memori-chat-resume-drawer--skeletons {
345
+ display: flex;
346
+ flex-direction: column;
347
+ gap: 12px;
348
+ }
349
+
350
+ .memori-chat-resume-drawer--skeleton-bubble {
351
+ width: 72%;
352
+ height: 54px;
353
+ border-radius: 12px;
354
+ animation: memori-chat-resume-shimmer 1.2s infinite;
355
+ background: linear-gradient(90deg, rgba(0, 0, 0, 0.04) 0%, rgba(0, 0, 0, 0.08) 50%, rgba(0, 0, 0, 0.04) 100%);
356
+ background-size: 200% 100%;
357
+ }
358
+
359
+ @keyframes memori-chat-resume-shimmer {
360
+ from {
361
+ background-position: 200% 0;
362
+ }
363
+
364
+ to {
365
+ background-position: -200% 0;
366
+ }
367
+ }
@@ -0,0 +1,36 @@
1
+ import { Message } from '@memori.ai/memori-api-client/dist/types';
2
+ export interface ResumeDrawerMessage {
3
+ id: string;
4
+ role: 'user' | 'assistant';
5
+ content: string;
6
+ timestamp: string;
7
+ status?: 'completed' | 'interrupted';
8
+ media?: Message['media'];
9
+ attachment?: {
10
+ name: string;
11
+ type: string;
12
+ size: string;
13
+ ext: string;
14
+ };
15
+ }
16
+ export interface ChatResumeDrawerProps {
17
+ isOpen: boolean;
18
+ onClose: () => void;
19
+ onBack?: () => void;
20
+ onExportChat: () => void;
21
+ embedded?: boolean;
22
+ session: {
23
+ title: string;
24
+ subtitle: string;
25
+ summary: string;
26
+ messages: ResumeDrawerMessage[];
27
+ quickActions: {
28
+ label: string;
29
+ prompt: string;
30
+ }[];
31
+ };
32
+ onResume: (prompt?: string) => void;
33
+ isLoading?: boolean;
34
+ }
35
+ declare const ChatResumeDrawer: ({ isOpen, onClose, onBack, embedded, session, onResume, isLoading, onExportChat, }: ChatResumeDrawerProps) => JSX.Element | null;
36
+ export default ChatResumeDrawer;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const ui_1 = require("@memori.ai/ui");
7
+ const lucide_react_1 = require("lucide-react");
8
+ const react_i18next_1 = require("react-i18next");
9
+ const utils_1 = require("../../helpers/utils");
10
+ const Chat_1 = tslib_1.__importDefault(require("../Chat/Chat"));
11
+ const ANIMATION_DURATION_MS = 280;
12
+ const EMPTY_MEMORI = {
13
+ memoriID: 'chat-resume-drawer',
14
+ name: 'AI',
15
+ culture: 'it-IT',
16
+ coverURL: '',
17
+ avatarURL: '',
18
+ enableBoardOfExperts: false,
19
+ };
20
+ const NOOP = () => { };
21
+ const stripMarkdownChars = (value) => {
22
+ return value
23
+ .replace(/[#*_`~>\-[\]()]/g, ' ')
24
+ .replace(/\s+/g, ' ')
25
+ .trim();
26
+ };
27
+ const escapeAttachmentAttr = (value) => value.replaceAll('"', '"');
28
+ const ChatResumeDrawer = ({ isOpen, onClose, onBack, embedded = false, session, onResume, isLoading = false, onExportChat, }) => {
29
+ const { t } = (0, react_i18next_1.useTranslation)();
30
+ const dialogRef = (0, react_1.useRef)(null);
31
+ const panelRef = (0, react_1.useRef)(null);
32
+ const backButtonRef = (0, react_1.useRef)(null);
33
+ const titleId = 'chat-resume-drawer-title';
34
+ const [shouldRender, setShouldRender] = (0, react_1.useState)(isOpen);
35
+ const [isVisible, setIsVisible] = (0, react_1.useState)(isOpen);
36
+ (0, react_1.useEffect)(() => {
37
+ if (isOpen) {
38
+ setShouldRender(true);
39
+ requestAnimationFrame(() => setIsVisible(true));
40
+ return;
41
+ }
42
+ setIsVisible(false);
43
+ const timeout = window.setTimeout(() => {
44
+ setShouldRender(false);
45
+ }, ANIMATION_DURATION_MS);
46
+ return () => window.clearTimeout(timeout);
47
+ }, [isOpen]);
48
+ (0, react_1.useEffect)(() => {
49
+ var _a;
50
+ if (!isOpen)
51
+ return;
52
+ (_a = backButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
53
+ }, [isOpen]);
54
+ (0, react_1.useEffect)(() => {
55
+ if (!isOpen || embedded)
56
+ return;
57
+ const previouslyFocused = document.activeElement;
58
+ const root = dialogRef.current;
59
+ if (!root)
60
+ return;
61
+ const handleKeyDown = (event) => {
62
+ if (event.key === 'Escape') {
63
+ onClose();
64
+ return;
65
+ }
66
+ if (event.key !== 'Tab')
67
+ return;
68
+ const focusableElements = root.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
69
+ if (!focusableElements.length)
70
+ return;
71
+ const first = focusableElements[0];
72
+ const last = focusableElements[focusableElements.length - 1];
73
+ const active = document.activeElement;
74
+ if (event.shiftKey && active === first) {
75
+ event.preventDefault();
76
+ last.focus();
77
+ }
78
+ else if (!event.shiftKey && active === last) {
79
+ event.preventDefault();
80
+ first.focus();
81
+ }
82
+ };
83
+ document.addEventListener('keydown', handleKeyDown);
84
+ return () => {
85
+ document.removeEventListener('keydown', handleKeyDown);
86
+ previouslyFocused === null || previouslyFocused === void 0 ? void 0 : previouslyFocused.focus();
87
+ };
88
+ }, [embedded, isOpen, onClose]);
89
+ const safeTitle = (0, react_1.useMemo)(() => {
90
+ const cleaned = stripMarkdownChars((0, utils_1.stripHTML)(session.title || ''));
91
+ return cleaned || 'Conversazione';
92
+ }, [session.title]);
93
+ const history = (0, react_1.useMemo)(() => session.messages.map(message => {
94
+ const attachmentTag = message.attachment
95
+ ? `<document_attachment filename="${escapeAttachmentAttr(message.attachment.name)}" type="${escapeAttachmentAttr(message.attachment.type)}"></document_attachment>`
96
+ : '';
97
+ const interruptedText = message.role === 'assistant' && message.status === 'interrupted'
98
+ ? 'Risposta interrotta - sessione in pausa'
99
+ : message.content;
100
+ return {
101
+ fromUser: message.role === 'user',
102
+ text: `${interruptedText}${attachmentTag}`,
103
+ timestamp: message.timestamp,
104
+ media: message.media || [],
105
+ };
106
+ }), [session.messages]);
107
+ if (!embedded && !shouldRender)
108
+ return null;
109
+ const content = ((0, jsx_runtime_1.jsxs)("div", { ref: panelRef, className: `memori-chat-resume-drawer--panel ${embedded ? 'memori-chat-resume-drawer--panel-embedded' : ''}`, onClick: event => event.stopPropagation(), children: [(0, jsx_runtime_1.jsxs)("header", { className: "memori-chat-resume-drawer--header", children: [(0, jsx_runtime_1.jsx)(ui_1.Button, { ref: backButtonRef, variant: "ghost", type: "button", className: "memori-chat-resume-drawer--header-icon-button", onClick: onBack || onClose, "aria-label": String(t('back', { defaultValue: 'Back' })), children: (0, jsx_runtime_1.jsx)(lucide_react_1.ArrowLeft, { size: 16, "aria-hidden": true }) }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-chat-resume-drawer--header-main", children: [(0, jsx_runtime_1.jsx)("h2", { id: titleId, className: "memori-chat-resume-drawer--title", title: safeTitle, children: safeTitle }), (0, jsx_runtime_1.jsx)("p", { className: "memori-chat-resume-drawer--subtitle", children: session.subtitle })] }), (0, jsx_runtime_1.jsx)(ui_1.Button, { variant: "ghost", size: "sm", className: "memori-chat-history-drawer--header-download-button", "aria-label": String(t('download', { defaultValue: 'Download' })), title: String(t('download', { defaultValue: 'Download' })), icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Download, { "aria-hidden": true }), onClick: onExportChat })] }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-chat-resume-drawer--thread", children: [isLoading && ((0, jsx_runtime_1.jsx)("div", { className: "memori-chat-resume-drawer--skeletons", children: [0, 1, 2].map(item => ((0, jsx_runtime_1.jsx)("div", { className: "memori-chat-resume-drawer--skeleton-bubble" }, item))) })), !isLoading && ((0, jsx_runtime_1.jsx)("div", { className: "memori-chat-resume-drawer--embedded-chat", children: (0, jsx_runtime_1.jsx)(Chat_1.default, { memori: EMPTY_MEMORI, sessionID: "chat-resume-drawer", history: history, pushMessage: NOOP, simulateUserPrompt: NOOP, setSendOnEnter: NOOP, setAttachmentsMenuOpen: NOOP, onChangeUserMessage: NOOP, sendMessage: NOOP, setEnableFocusChatInput: NOOP, stopAudio: NOOP, startListening: NOOP, stopListening: NOOP, showInputs: false, showAIicon: true, showCopyButton: true, isHistoryView: true, isChatlogPanel: true }) }))] }), (0, jsx_runtime_1.jsx)("footer", { className: "memori-chat-resume-drawer--actions", children: (0, jsx_runtime_1.jsxs)(ui_1.Button, { className: "memori-chat-resume-drawer--resume-cta", variant: "primary", onClick: () => onResume(), children: [t('chatResume.resume', { defaultValue: 'Resume conversation' }), ' ', (0, jsx_runtime_1.jsx)(lucide_react_1.ArrowUpRight, { size: 16, "aria-hidden": true })] }) })] }));
110
+ if (embedded) {
111
+ return ((0, jsx_runtime_1.jsx)("div", { className: "memori-chat-resume-drawer--embedded-shell", children: content }));
112
+ }
113
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: dialogRef, className: `memori-chat-resume-drawer ${isVisible ? 'memori-chat-resume-drawer--open' : ''}`, role: "dialog", "aria-modal": "true", "aria-labelledby": titleId, children: [(0, jsx_runtime_1.jsx)(ui_1.Button, { className: "memori-chat-resume-drawer--backdrop", type: "button", "aria-label": String(t('close', { defaultValue: 'Close' })), onClick: onClose }), content] }));
114
+ };
115
+ exports.default = ChatResumeDrawer;
116
+ //# sourceMappingURL=ChatResumeDrawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatResumeDrawer.js","sourceRoot":"","sources":["../../../src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import { DateTime } from 'luxon';
3
3
  export interface Props {
4
4
  defaultDate?: string | Date;
5
5
  disabled?: boolean;
6
+ minAge?: number;
6
7
  onChange: (date: DateTime | undefined) => void;
7
8
  }
8
- declare const DateSelector: import("react").MemoExoticComponent<({ defaultDate, onChange, disabled }: Props) => JSX.Element>;
9
+ declare const DateSelector: import("react").MemoExoticComponent<({ defaultDate, onChange, disabled, minAge }: Props) => JSX.Element>;
9
10
  export default DateSelector;
@@ -4,9 +4,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
4
4
  const react_1 = require("react");
5
5
  const luxon_1 = require("luxon");
6
6
  const react_i18next_1 = require("react-i18next");
7
- const DateSelector = (0, react_1.memo)(({ defaultDate, onChange, disabled = false }) => {
7
+ const DateSelector = (0, react_1.memo)(({ defaultDate, onChange, disabled = false, minAge = 18 }) => {
8
8
  const { t } = (0, react_i18next_1.useTranslation)();
9
- const maxDate = (0, react_1.useMemo)(() => luxon_1.DateTime.now().minus({ years: 18 }), []);
9
+ const maxDate = (0, react_1.useMemo)(() => luxon_1.DateTime.now().minus({ years: minAge }).startOf('day'), [minAge]);
10
10
  const minDate = (0, react_1.useMemo)(() => luxon_1.DateTime.fromObject({ year: 1900, month: 1, day: 1 }), []);
11
11
  const [day, setDay] = (0, react_1.useState)('');
12
12
  const [month, setMonth] = (0, react_1.useState)('');
@@ -35,26 +35,36 @@ const DateSelector = (0, react_1.memo)(({ defaultDate, onChange, disabled = fals
35
35
  window.addEventListener('resize', checkMobile);
36
36
  return () => window.removeEventListener('resize', checkMobile);
37
37
  }, []);
38
+ const onChangeRef = (0, react_1.useRef)(onChange);
39
+ onChangeRef.current = onChange;
40
+ const lastEmittedRef = (0, react_1.useRef)(undefined);
38
41
  (0, react_1.useEffect)(() => {
42
+ const emit = (next) => {
43
+ const key = (next === null || next === void 0 ? void 0 : next.isValid) ? next.toISODate() : null;
44
+ if (key === lastEmittedRef.current)
45
+ return;
46
+ lastEmittedRef.current = key;
47
+ onChangeRef.current(next);
48
+ };
39
49
  if (!day || !month || !year) {
40
- onChange(undefined);
50
+ emit(undefined);
41
51
  return;
42
52
  }
43
53
  const d = parseInt(day);
44
54
  const m = parseInt(month);
45
55
  const y = parseInt(year);
46
56
  if (isNaN(d) || isNaN(m) || isNaN(y)) {
47
- onChange(undefined);
57
+ emit(undefined);
48
58
  return;
49
59
  }
50
60
  const newDate = luxon_1.DateTime.fromObject({ year: y, month: m, day: d });
51
61
  if (newDate.isValid && newDate >= minDate && newDate <= maxDate) {
52
- onChange(newDate);
62
+ emit(newDate);
53
63
  }
54
64
  else {
55
- onChange(undefined);
65
+ emit(undefined);
56
66
  }
57
- }, [day, month, year, onChange, minDate, maxDate]);
67
+ }, [day, month, year, minDate, maxDate]);
58
68
  const handleMobileChange = (e) => {
59
69
  const value = e.target.value;
60
70
  if (value) {