@memori.ai/memori-react 8.45.4 → 8.45.5

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 (225) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/components/Chat/Chat.d.ts +1 -0
  3. package/dist/components/Chat/Chat.js +2 -2
  4. package/dist/components/Chat/Chat.js.map +1 -1
  5. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +78 -0
  6. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -3
  7. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +5 -28
  8. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  9. package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
  10. package/dist/components/ChatInputs/ChatInputs.js +2 -2
  11. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  12. package/dist/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  13. package/dist/components/ContentPreviewModal/DocumentMarkdown.js +31 -0
  14. package/dist/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  15. package/dist/components/DrawerFooter/DrawerFooter.css +62 -0
  16. package/dist/components/IconButton/IconButton.css +135 -0
  17. package/dist/components/IconButton/IconButton.d.ts +1 -1
  18. package/dist/components/LoginModal/LoginModal.css +270 -0
  19. package/dist/components/LoginModal/LoginModal.d.ts +19 -0
  20. package/dist/components/LoginModal/LoginModal.js +355 -0
  21. package/dist/components/LoginModal/LoginModal.js.map +1 -0
  22. package/dist/components/MemoriWidget/MemoriWidget.d.ts +1 -1
  23. package/dist/components/MemoriWidget/MemoriWidget.js +11 -20
  24. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  25. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +540 -0
  26. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +72 -112
  27. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  28. package/dist/components/PositionPopover/PositionPopover.css +218 -0
  29. package/dist/components/ReasoningBlock/ReasoningBlock.css +156 -0
  30. package/dist/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  31. package/dist/components/ReasoningBlock/ReasoningBlock.js +61 -0
  32. package/dist/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  33. package/dist/components/SideDrawer/SideDrawer.css +112 -0
  34. package/dist/components/SideDrawer/SideDrawer.d.ts +22 -0
  35. package/dist/components/SideDrawer/SideDrawer.js +17 -0
  36. package/dist/components/SideDrawer/SideDrawer.js.map +1 -0
  37. package/dist/components/UploadButton/UploadButton.d.ts +2 -0
  38. package/dist/components/UploadButton/UploadButton.js +2 -2
  39. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  40. package/dist/components/UploadButton/UploadImages/UploadImages.d.ts +2 -0
  41. package/dist/components/UploadButton/UploadImages/UploadImages.js +7 -1
  42. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  43. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +87 -7
  44. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  45. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +889 -0
  46. package/dist/components/layouts/fullpage.css +628 -0
  47. package/dist/helpers/artifactPanel.d.ts +6 -0
  48. package/dist/helpers/artifactPanel.js +42 -0
  49. package/dist/helpers/artifactPanel.js.map +1 -0
  50. package/dist/helpers/chatScroll.d.ts +12 -0
  51. package/dist/helpers/chatScroll.js +14 -0
  52. package/dist/helpers/chatScroll.js.map +1 -0
  53. package/dist/helpers/conversationHistory.d.ts +16 -0
  54. package/dist/helpers/conversationHistory.js +89 -0
  55. package/dist/helpers/conversationHistory.js.map +1 -0
  56. package/dist/helpers/conversationTitle.d.ts +8 -0
  57. package/dist/helpers/conversationTitle.js +27 -0
  58. package/dist/helpers/conversationTitle.js.map +1 -0
  59. package/dist/helpers/enhanceBubbleCodeBlocks.d.ts +5 -0
  60. package/dist/helpers/enhanceBubbleCodeBlocks.js +97 -0
  61. package/dist/helpers/enhanceBubbleCodeBlocks.js.map +1 -0
  62. package/dist/helpers/highlightMatches.d.ts +2 -0
  63. package/dist/helpers/highlightMatches.js +54 -0
  64. package/dist/helpers/highlightMatches.js.map +1 -0
  65. package/dist/helpers/nats/dialogStateCatchUp.d.ts +3 -0
  66. package/dist/helpers/nats/dialogStateCatchUp.js +40 -0
  67. package/dist/helpers/nats/dialogStateCatchUp.js.map +1 -0
  68. package/dist/helpers/positionPopover.d.ts +1 -0
  69. package/dist/helpers/positionPopover.js +9 -3
  70. package/dist/helpers/positionPopover.js.map +1 -1
  71. package/dist/helpers/prism.d.ts +16 -0
  72. package/dist/helpers/prism.js +78 -0
  73. package/dist/helpers/prism.js.map +1 -0
  74. package/dist/helpers/reasoning.d.ts +7 -0
  75. package/dist/helpers/reasoning.js +43 -0
  76. package/dist/helpers/reasoning.js.map +1 -0
  77. package/dist/helpers/relativeTime.d.ts +3 -0
  78. package/dist/helpers/relativeTime.js +56 -0
  79. package/dist/helpers/relativeTime.js.map +1 -0
  80. package/dist/helpers/sourcesCount.d.ts +2 -0
  81. package/dist/helpers/sourcesCount.js +22 -0
  82. package/dist/helpers/sourcesCount.js.map +1 -0
  83. package/dist/helpers/tts/muteSpeaker.js +3 -4
  84. package/dist/helpers/tts/muteSpeaker.js.map +1 -1
  85. package/dist/helpers/usePressTooltip.d.ts +6 -1
  86. package/dist/helpers/usePressTooltip.js +17 -3
  87. package/dist/helpers/usePressTooltip.js.map +1 -1
  88. package/dist/styles/motion.css +25 -0
  89. package/dist/version.d.ts +1 -1
  90. package/dist/version.js +1 -1
  91. package/esm/components/Chat/Chat.d.ts +1 -0
  92. package/esm/components/Chat/Chat.js +2 -2
  93. package/esm/components/Chat/Chat.js.map +1 -1
  94. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +39 -0
  95. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +40 -0
  96. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -0
  97. package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
  98. package/esm/components/ChatInputs/ChatInputs.js +2 -2
  99. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  100. package/esm/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  101. package/esm/components/ContentPreviewModal/DocumentMarkdown.js +28 -0
  102. package/esm/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  103. package/esm/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  104. package/esm/components/DrawerFooter/DrawerFooter.js +8 -0
  105. package/esm/components/DrawerFooter/DrawerFooter.js.map +1 -0
  106. package/esm/components/IconButton/IconButton.d.ts +9 -0
  107. package/esm/components/IconButton/IconButton.js +33 -0
  108. package/esm/components/IconButton/IconButton.js.map +1 -0
  109. package/esm/components/LoginModal/LoginModal.d.ts +19 -0
  110. package/esm/components/LoginModal/LoginModal.js +352 -0
  111. package/esm/components/LoginModal/LoginModal.js.map +1 -0
  112. package/esm/components/MemoriWidget/MemoriWidget.d.ts +1 -1
  113. package/esm/components/MemoriWidget/MemoriWidget.js +6 -16
  114. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  115. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +65 -0
  116. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +251 -0
  117. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -0
  118. package/esm/components/PositionPopover/PositionPopover.d.ts +22 -0
  119. package/esm/components/PositionPopover/PositionPopover.js +203 -0
  120. package/esm/components/PositionPopover/PositionPopover.js.map +1 -0
  121. package/esm/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  122. package/esm/components/ReasoningBlock/ReasoningBlock.js +58 -0
  123. package/esm/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  124. package/esm/components/SideDrawer/SideDrawer.d.ts +22 -0
  125. package/esm/components/SideDrawer/SideDrawer.js +12 -0
  126. package/esm/components/SideDrawer/SideDrawer.js.map +1 -0
  127. package/esm/components/UploadButton/UploadButton.d.ts +2 -0
  128. package/esm/components/UploadButton/UploadButton.js +2 -2
  129. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  130. package/esm/components/UploadButton/UploadImages/UploadImages.d.ts +2 -0
  131. package/esm/components/UploadButton/UploadImages/UploadImages.js +7 -1
  132. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  133. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  134. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +141 -0
  135. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  136. package/esm/helpers/artifactPanel.d.ts +6 -0
  137. package/esm/helpers/artifactPanel.js +37 -0
  138. package/esm/helpers/artifactPanel.js.map +1 -0
  139. package/esm/helpers/chatScroll.d.ts +12 -0
  140. package/esm/helpers/chatScroll.js +9 -0
  141. package/esm/helpers/chatScroll.js.map +1 -0
  142. package/esm/helpers/conversationHistory.d.ts +16 -0
  143. package/esm/helpers/conversationHistory.js +82 -0
  144. package/esm/helpers/conversationHistory.js.map +1 -0
  145. package/esm/helpers/conversationTitle.d.ts +8 -0
  146. package/esm/helpers/conversationTitle.js +23 -0
  147. package/esm/helpers/conversationTitle.js.map +1 -0
  148. package/esm/helpers/enhanceBubbleCodeBlocks.d.ts +5 -0
  149. package/esm/helpers/enhanceBubbleCodeBlocks.js +94 -0
  150. package/esm/helpers/enhanceBubbleCodeBlocks.js.map +1 -0
  151. package/esm/helpers/highlightMatches.d.ts +2 -0
  152. package/esm/helpers/highlightMatches.js +49 -0
  153. package/esm/helpers/highlightMatches.js.map +1 -0
  154. package/esm/helpers/nats/dialogStateCatchUp.d.ts +3 -0
  155. package/esm/helpers/nats/dialogStateCatchUp.js +35 -0
  156. package/esm/helpers/nats/dialogStateCatchUp.js.map +1 -0
  157. package/esm/helpers/positionPopover.d.ts +3 -0
  158. package/esm/helpers/positionPopover.js +17 -0
  159. package/esm/helpers/positionPopover.js.map +1 -0
  160. package/esm/helpers/prism.d.ts +16 -0
  161. package/esm/helpers/prism.js +74 -0
  162. package/esm/helpers/prism.js.map +1 -0
  163. package/esm/helpers/reasoning.d.ts +7 -0
  164. package/esm/helpers/reasoning.js +39 -0
  165. package/esm/helpers/reasoning.js.map +1 -0
  166. package/esm/helpers/relativeTime.d.ts +3 -0
  167. package/esm/helpers/relativeTime.js +50 -0
  168. package/esm/helpers/relativeTime.js.map +1 -0
  169. package/esm/helpers/sourcesCount.d.ts +2 -0
  170. package/esm/helpers/sourcesCount.js +18 -0
  171. package/esm/helpers/sourcesCount.js.map +1 -0
  172. package/esm/helpers/tts/muteSpeaker.d.ts +13 -0
  173. package/esm/helpers/tts/muteSpeaker.js +21 -0
  174. package/esm/helpers/tts/muteSpeaker.js.map +1 -0
  175. package/esm/helpers/usePressTooltip.d.ts +18 -0
  176. package/esm/helpers/usePressTooltip.js +35 -0
  177. package/esm/helpers/usePressTooltip.js.map +1 -0
  178. package/esm/icons/FacebookIcon.d.ts +3 -0
  179. package/esm/icons/FacebookIcon.js +4 -0
  180. package/esm/icons/FacebookIcon.js.map +1 -0
  181. package/esm/icons/LinkedinIcon.d.ts +3 -0
  182. package/esm/icons/LinkedinIcon.js +4 -0
  183. package/esm/icons/LinkedinIcon.js.map +1 -0
  184. package/esm/icons/MemoriIcon.d.ts +3 -0
  185. package/esm/icons/MemoriIcon.js +6 -0
  186. package/esm/icons/MemoriIcon.js.map +1 -0
  187. package/esm/icons/TelegramIcon.d.ts +3 -0
  188. package/esm/icons/TelegramIcon.js +4 -0
  189. package/esm/icons/TelegramIcon.js.map +1 -0
  190. package/esm/icons/TwitterIcon.d.ts +3 -0
  191. package/esm/icons/TwitterIcon.js +4 -0
  192. package/esm/icons/TwitterIcon.js.map +1 -0
  193. package/esm/icons/WhatsappIcon.d.ts +3 -0
  194. package/esm/icons/WhatsappIcon.js +4 -0
  195. package/esm/icons/WhatsappIcon.js.map +1 -0
  196. package/esm/icons/artifacts/DocumentIcon.d.ts +3 -0
  197. package/esm/icons/artifacts/DocumentIcon.js +4 -0
  198. package/esm/icons/artifacts/DocumentIcon.js.map +1 -0
  199. package/esm/icons/artifacts/HtmlIcon.d.ts +3 -0
  200. package/esm/icons/artifacts/HtmlIcon.js +4 -0
  201. package/esm/icons/artifacts/HtmlIcon.js.map +1 -0
  202. package/esm/icons/artifacts/JavascriptIcon.d.ts +3 -0
  203. package/esm/icons/artifacts/JavascriptIcon.js +4 -0
  204. package/esm/icons/artifacts/JavascriptIcon.js.map +1 -0
  205. package/esm/icons/artifacts/MarkdownIcon.d.ts +3 -0
  206. package/esm/icons/artifacts/MarkdownIcon.js +4 -0
  207. package/esm/icons/artifacts/MarkdownIcon.js.map +1 -0
  208. package/esm/icons/artifacts/PythonIcon.d.ts +3 -0
  209. package/esm/icons/artifacts/PythonIcon.js +4 -0
  210. package/esm/icons/artifacts/PythonIcon.js.map +1 -0
  211. package/esm/icons/artifacts/SvgIcon.d.ts +3 -0
  212. package/esm/icons/artifacts/SvgIcon.js +4 -0
  213. package/esm/icons/artifacts/SvgIcon.js.map +1 -0
  214. package/esm/icons/artifacts/XmlIcon.d.ts +3 -0
  215. package/esm/icons/artifacts/XmlIcon.js +4 -0
  216. package/esm/icons/artifacts/XmlIcon.js.map +1 -0
  217. package/esm/icons/artifacts/cssIcon.d.ts +3 -0
  218. package/esm/icons/artifacts/cssIcon.js +4 -0
  219. package/esm/icons/artifacts/cssIcon.js.map +1 -0
  220. package/esm/version.d.ts +1 -1
  221. package/esm/version.js +1 -1
  222. package/package.json +2 -1
  223. package/dist/context/widgetSurfaceContext.d.ts +0 -3
  224. package/dist/context/widgetSurfaceContext.js +0 -11
  225. package/dist/context/widgetSurfaceContext.js.map +0 -1
@@ -0,0 +1,135 @@
1
+ /* Shared secondary icon-button chrome (header + chat input bar).
2
+ CTA primary (Accedi / send) must NOT use this class.
3
+ Size / border / icon tokens come from @memori.ai/ui. */
4
+
5
+ .memori-widget .memori-icon-button.memori-button {
6
+ display: inline-flex;
7
+ width: var(--memori-icon-button-size);
8
+ min-width: var(--memori-icon-button-size);
9
+ height: var(--memori-icon-button-size);
10
+ min-height: var(--memori-icon-button-size);
11
+ box-sizing: border-box;
12
+ align-items: center;
13
+ justify-content: center;
14
+ padding: 0;
15
+ border: 1px solid var(--memori-border-color, #ddd);
16
+ border-radius: var(--memori-radius-control);
17
+ background: transparent;
18
+ box-shadow: none;
19
+ color: var(--memori-icon-button-icon);
20
+ transform: none;
21
+ }
22
+
23
+ /* Icon + text (Cronologia, Esci, Share con label, …) — grow past the square */
24
+ .memori-widget .memori-icon-button.memori-icon-button--labeled.memori-button,
25
+ .memori-widget .memori-icon-button.memori-button:has(.memori-header--action-label),
26
+ .memori-widget .memori-icon-button.memori-button:has(.memori-button__content) {
27
+ overflow: visible;
28
+ width: auto;
29
+ min-width: var(--memori-icon-button-size);
30
+ max-width: none;
31
+ height: var(--memori-icon-button-size);
32
+ min-height: var(--memori-icon-button-size);
33
+ flex-wrap: nowrap;
34
+ justify-content: center;
35
+ padding: 0 12px;
36
+ gap: 0.4rem;
37
+ white-space: nowrap;
38
+ }
39
+
40
+ .memori-widget .memori-icon-button.memori-icon-button--labeled.memori-button .memori-button__content,
41
+ .memori-widget .memori-icon-button.memori-button:has(.memori-button__content) .memori-button__content,
42
+ .memori-widget .memori-icon-button.memori-button .memori-header--action-label {
43
+ display: inline-flex;
44
+ overflow: visible;
45
+ align-items: center;
46
+ font-size: var(--memori-text-size-sm);
47
+ font-weight: var(--memori-text-weight-medium, 500);
48
+ line-height: 1.2;
49
+ white-space: nowrap;
50
+ }
51
+
52
+ .memori-widget .memori-icon-button.memori-button svg,
53
+ .memori-widget .memori-icon-button.memori-button .icon {
54
+ width: var(--memori-icon-button-icon-size, 20px);
55
+ height: var(--memori-icon-button-icon-size, 20px);
56
+ flex-shrink: 0;
57
+ color: inherit;
58
+ }
59
+
60
+ .memori-widget .memori-icon-button.memori-button svg.lucide-volume-x {
61
+ width: calc(var(--memori-icon-button-icon-size, 20px) + 1px);
62
+ height: calc(var(--memori-icon-button-icon-size, 20px) + 1px);
63
+ stroke-width: 2.35;
64
+ }
65
+
66
+ .memori-widget .memori-icon-button.memori-button:disabled,
67
+ .memori-widget .memori-icon-button.memori-button.memori-button--disabled {
68
+ cursor: not-allowed;
69
+ opacity: 0.35;
70
+ }
71
+
72
+ .memori-widget .memori-icon-button.memori-button:focus {
73
+ outline: none;
74
+ }
75
+
76
+ .memori-widget .memori-icon-button.memori-button:focus-visible {
77
+ border-color: var(--memori-primary);
78
+ box-shadow: var(--memori-focus-ring, 0 0 0 3px color-mix(in oklch, var(--memori-primary) 18%, transparent));
79
+ outline: 2px solid var(--memori-primary);
80
+ outline-offset: var(--memori-focus-ring-offset, 2px);
81
+ }
82
+
83
+ .memori-widget .memori-icon-button.memori-button:hover:not(:disabled, .memori-button--disabled) {
84
+ border-color: color-mix(in oklch, var(--memori-text-color, #111827) 28%, transparent);
85
+ background: color-mix(in oklch, var(--memori-text-color, #111827) 6%, transparent);
86
+ box-shadow: none;
87
+ color: var(--memori-text-color, #111827);
88
+ transform: none;
89
+ }
90
+
91
+ /* Active / popover open — soft primary, never solid CTA fill */
92
+ .memori-widget .memori-icon-button.memori-button.memori-icon-button--active,
93
+ .memori-widget .memori-icon-button.memori-button.memori-button--active,
94
+ .memori-widget
95
+ .memori-icon-button.memori-button--outline.memori-button--active:not(:disabled, .memori-button--disabled),
96
+ .memori-widget
97
+ .memori-icon-button.memori-button--toolbar.memori-button--active:not(:disabled, .memori-button--disabled),
98
+ .memori-widget .memori-icon-button.memori-button--ghost.memori-button--active:not(:disabled, .memori-button--disabled) {
99
+ border-color: var(--memori-primary);
100
+ background: var(--memori-icon-active-bg);
101
+ box-shadow: none;
102
+ color: var(--memori-primary);
103
+ }
104
+
105
+ .memori-widget
106
+ .memori-icon-button.memori-button.memori-icon-button--active:hover:not(:disabled, .memori-button--disabled),
107
+ .memori-widget .memori-icon-button.memori-button.memori-button--active:hover:not(:disabled, .memori-button--disabled) {
108
+ border-color: var(--memori-primary);
109
+ background: color-mix(in oklch, var(--memori-primary) 18%, transparent);
110
+ color: var(--memori-primary);
111
+ }
112
+
113
+ /* Mic recording — soft error, not primary */
114
+ .memori-widget .memori-icon-button.memori-button.memori-icon-button--recording {
115
+ border-color: var(--memori-error, #dc2626);
116
+ background: var(--memori-icon-recording-bg);
117
+ box-shadow: none;
118
+ color: var(--memori-error, #dc2626);
119
+ transform: none;
120
+ }
121
+
122
+ .memori-widget .memori-icon-button.memori-button.memori-icon-button--recording:focus-visible {
123
+ border-color: var(--memori-error, #dc2626);
124
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--memori-error, #dc2626) 22%, transparent);
125
+ outline-color: var(--memori-error, #dc2626);
126
+ }
127
+
128
+ .memori-widget
129
+ .memori-icon-button.memori-button.memori-icon-button--recording:hover:not(:disabled, .memori-button--disabled) {
130
+ border-color: var(--memori-error, #dc2626);
131
+ background: var(--memori-icon-recording-bg);
132
+ box-shadow: none;
133
+ color: var(--memori-error, #dc2626);
134
+ transform: none;
135
+ }
@@ -5,5 +5,5 @@ export type IconButtonProps = Omit<React.ComponentProps<typeof Button>, 'variant
5
5
  recording?: boolean;
6
6
  variant?: React.ComponentProps<typeof Button>['variant'];
7
7
  };
8
- declare const IconButton: React.ForwardRefExoticComponent<Pick<IconButtonProps, string | number | symbol> & React.RefAttributes<HTMLButtonElement>>;
8
+ declare const IconButton: React.ForwardRefExoticComponent<Pick<IconButtonProps, "children" | "form" | "slot" | "style" | "title" | "shape" | "value" | "className" | "name" | "onSubmit" | "role" | "key" | "autoFocus" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "type" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "focusableWhenDisabled" | "nativeButton" | "render" | "danger" | "variant" | "loading" | "icon" | "size" | "active" | "fullWidth" | "iconPosition" | "shadow" | "ariaLabel" | "recording"> & React.RefAttributes<HTMLButtonElement>>;
9
9
  export default IconButton;
@@ -0,0 +1,270 @@
1
+ /* Login gate modal — content-sized, radii: control 12 / box 20 / modal 28 */
2
+
3
+ .memori--login-modal.memori-modal,
4
+ .memori--login-modal {
5
+ --memori-login-modal-radius: var(--memori-radius-overlay, 1.75rem);
6
+ --memori-login-control-radius: var(--memori-radius-control, 0.75rem);
7
+ --memori-login-box-radius: var(--memori-radius-surface, 1.25rem);
8
+ }
9
+
10
+ .memori--login-modal--content,
11
+ .memori--login-modal .memori-modal__popup {
12
+ max-width: min(420px, calc(100vw - 2rem));
13
+ padding: 1.5rem 1.5rem 1.25rem;
14
+ border-radius: var(--memori-login-modal-radius) !important;
15
+ }
16
+
17
+ .memori--login-modal .memori-modal__content {
18
+ overflow: visible;
19
+ }
20
+
21
+ .memori--login-modal--missing.memori--login-modal .memori-modal__popup {
22
+ display: flex;
23
+ max-width: min(480px, calc(100vw - 2rem));
24
+ max-height: min(90vh, 40rem);
25
+ flex-direction: column;
26
+ }
27
+
28
+ .memori--login-modal--missing .memori-modal__content {
29
+ display: flex;
30
+ overflow: hidden;
31
+ min-height: 0;
32
+ max-height: none;
33
+ flex: 1 1 auto;
34
+ flex-direction: column;
35
+ }
36
+
37
+ .memori--login-modal--title,
38
+ .memori--login-modal .memori-modal__title {
39
+ margin: 0;
40
+ color: var(--memori-text-color, #1a1a2e);
41
+ font-size: 1.625rem;
42
+ font-weight: var(--memori-text-weight-bold, 700);
43
+ line-height: 1.25;
44
+ text-align: left;
45
+ }
46
+
47
+ .memori--login-modal--step {
48
+ display: flex;
49
+ flex-direction: column;
50
+ margin-top: 0.25rem;
51
+ gap: 1rem;
52
+ }
53
+
54
+ .memori--login-modal--benefit,
55
+ .memori--login-modal--sent-copy,
56
+ .memori--login-modal--footnote,
57
+ .memori--login-modal--resend {
58
+ margin: 0;
59
+ color: color-mix(in oklch, var(--memori-text-color, #1a1a2e), transparent 35%);
60
+ font-size: 0.9375rem;
61
+ line-height: 1.45;
62
+ }
63
+
64
+ .memori--login-modal--footnote,
65
+ .memori--login-modal--resend {
66
+ font-size: 0.8125rem;
67
+ text-align: center;
68
+ }
69
+
70
+ .memori--login-modal--email-row {
71
+ margin: -0.35rem 0 0;
72
+ color: var(--memori-text-color, #1a1a2e);
73
+ font-size: 0.9375rem;
74
+ line-height: 1.4;
75
+ }
76
+
77
+ .memori--login-modal--email-value {
78
+ font-weight: var(--memori-text-weight-bold, 700);
79
+ overflow-wrap: anywhere;
80
+ }
81
+
82
+ .memori--login-modal--edit-link {
83
+ padding: 0;
84
+ border: none;
85
+ margin: 0;
86
+ background: none;
87
+ color: var(--memori-primary, #6b2d5c);
88
+ cursor: pointer;
89
+ font: inherit;
90
+ font-weight: var(--memori-text-weight-semibold, 600);
91
+ text-decoration: underline;
92
+ text-underline-offset: 2px;
93
+ }
94
+
95
+ .memori--login-modal--edit-link:disabled {
96
+ cursor: not-allowed;
97
+ opacity: 0.55;
98
+ }
99
+
100
+ .memori--login-modal .memori-field.memori--login-modal--field {
101
+ display: flex;
102
+ width: calc(100% - 0.75rem);
103
+ max-width: calc(100% - 0.75rem);
104
+ box-sizing: border-box;
105
+ flex-direction: column;
106
+ margin-right: auto;
107
+ margin-left: auto;
108
+ gap: 0.375rem;
109
+ }
110
+
111
+ .memori--login-modal--email-input,
112
+ .memori--login-modal--form input {
113
+ width: 100%;
114
+ box-sizing: border-box;
115
+ border-radius: var(--memori-login-control-radius) !important;
116
+ }
117
+
118
+ .memori--login-modal--email-input.error,
119
+ .memori--login-modal--otp-digit.error {
120
+ border-color: var(--memori-error, #ef4444) !important;
121
+ }
122
+
123
+ .memori--login-modal .memori-button.memori--login-modal--primary {
124
+ width: calc(100% - 0.75rem);
125
+ max-width: calc(100% - 0.75rem);
126
+ min-height: 2.75rem;
127
+ box-sizing: border-box;
128
+ border-radius: var(--memori-login-control-radius) !important;
129
+ margin-right: auto;
130
+ margin-left: auto;
131
+ }
132
+
133
+ .memori--login-modal--otp-fieldset {
134
+ display: flex;
135
+ flex-direction: column;
136
+ padding: 0;
137
+ border: none;
138
+ margin: 0;
139
+ gap: 0.5rem;
140
+ }
141
+
142
+ .memori--login-modal--otp-label {
143
+ padding: 0;
144
+ color: var(--memori-text-color, #1a1a2e);
145
+ font-size: 0.875rem;
146
+ font-weight: var(--memori-text-weight-semibold, 600);
147
+ }
148
+
149
+ .memori--login-modal--otp-digits {
150
+ display: grid;
151
+ width: 100%;
152
+ max-width: 16rem;
153
+ gap: 0.625rem;
154
+ grid-template-columns: repeat(4, minmax(0, 1fr));
155
+ }
156
+
157
+ .memori--login-modal--otp-digit {
158
+ width: 100%;
159
+ height: 3.25rem;
160
+ border-radius: var(--memori-login-box-radius) !important;
161
+ font-size: 1.375rem;
162
+ font-weight: var(--memori-text-weight-bold, 700);
163
+ text-align: center;
164
+ }
165
+
166
+ .memori--login-modal--otp-digit.active,
167
+ .memori--login-modal--otp-digit:focus {
168
+ border-color: var(--memori-primary, #6b2d5c) !important;
169
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--memori-primary, #6b2d5c), transparent 84%);
170
+ outline: none;
171
+ }
172
+
173
+ .memori--login-modal--inline-error {
174
+ margin: 0;
175
+ color: var(--memori-error, #b91c1c);
176
+ font-size: 0.875rem;
177
+ line-height: 1.35;
178
+ }
179
+
180
+ .memori--login-modal--missing-data {
181
+ display: flex;
182
+ min-height: 0;
183
+ flex: 1 1 auto;
184
+ flex-direction: column;
185
+ gap: 0.75rem;
186
+ }
187
+
188
+ .memori--login-modal--missing-helper {
189
+ margin: 0;
190
+ color: color-mix(in oklch, var(--memori-text-color, #1a1a2e), transparent 30%);
191
+ font-size: 0.9375rem;
192
+ line-height: 1.45;
193
+ }
194
+
195
+ form.memori--login-modal--form {
196
+ display: flex;
197
+ flex-direction: column;
198
+ gap: 0.75rem;
199
+ }
200
+
201
+ form.memori--login-modal--form--missing {
202
+ min-height: 0;
203
+ flex: 1 1 auto;
204
+ gap: 0;
205
+ }
206
+
207
+ .memori--login-modal--form-body {
208
+ display: flex;
209
+ min-height: 0;
210
+ flex: 1 1 auto;
211
+ flex-direction: column;
212
+ padding: 0.25rem 0.375rem 0.75rem;
213
+ gap: 0.875rem;
214
+ -webkit-overflow-scrolling: touch;
215
+ overflow-x: hidden;
216
+ overflow-y: auto;
217
+ }
218
+
219
+ .memori--login-modal--form-footer {
220
+ flex-shrink: 0;
221
+ padding: 0.75rem 0.375rem 0.125rem;
222
+ }
223
+
224
+ .memori--login-modal--consent-block {
225
+ display: flex;
226
+ flex-direction: column;
227
+ gap: 0.75rem;
228
+ }
229
+
230
+ .memori-login-modal--consent {
231
+ width: 100%;
232
+ margin: 0;
233
+ }
234
+
235
+ .memori--login-modal--consent-note {
236
+ margin: 0;
237
+ color: color-mix(in oklch, var(--memori-text-color, #1a1a2e), transparent 35%);
238
+ font-size: 0.8125rem;
239
+ line-height: 1.45;
240
+ }
241
+
242
+ .memori--login-modal--deep-thought {
243
+ padding: 0.625rem 0.75rem;
244
+ border-radius: var(--memori-login-box-radius);
245
+ background: color-mix(in oklch, var(--memori-text-color, #1a1a2e), transparent 96%);
246
+ }
247
+
248
+ @media (max-width: 480px) {
249
+ .memori--login-modal--content,
250
+ .memori--login-modal .memori-modal__popup {
251
+ padding: 1.25rem 1rem 1rem;
252
+ }
253
+
254
+ .memori--login-modal--title,
255
+ .memori--login-modal .memori-modal__title {
256
+ font-size: 1.5rem;
257
+ }
258
+
259
+ .memori--login-modal--otp-digits {
260
+ max-width: 100%;
261
+ }
262
+ }
263
+
264
+ @media (prefers-reduced-motion: reduce) {
265
+ .memori--login-modal * {
266
+ animation-duration: 0.01ms !important;
267
+ animation-iteration-count: 1 !important;
268
+ transition-duration: 0.01ms !important;
269
+ }
270
+ }
@@ -0,0 +1,19 @@
1
+ import { User, Tenant } from '@memori.ai/memori-api-client/dist/types';
2
+ import memoriApiClient from '@memori.ai/memori-api-client';
3
+ export interface Props {
4
+ open?: boolean;
5
+ onClose: () => void;
6
+ user?: User;
7
+ loginToken?: string;
8
+ onLogin: (user: User, token: string) => void;
9
+ onLogout: () => void;
10
+ tenant: Tenant;
11
+ apiClient: ReturnType<typeof memoriApiClient>;
12
+ __TEST__signup?: boolean;
13
+ __TEST__needMissingData?: boolean;
14
+ setUser: (user: User) => void;
15
+ modalClassName?: string;
16
+ memoriName?: string;
17
+ }
18
+ declare const LoginModal: ({ open, onClose, onLogin, user, loginToken: _loginToken, setUser, tenant, apiClient, __TEST__signup: _signup, __TEST__needMissingData, modalClassName, memoriName, onLogout: _onLogout, }: Props) => JSX.Element;
19
+ export default LoginModal;