@memori.ai/memori-react 9.0.0-alpha.16 → 9.0.0-alpha.17
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.
- package/CHANGELOG.md +3 -6945
- package/dist/components/Chat/Chat.css +11 -15
- package/dist/components/Chat/Chat.js +11 -3
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/ChatInputs/ChatInputs.css +59 -147
- package/dist/components/ChatInputs/ChatInputs.js +3 -4
- package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
- package/dist/components/Header/ChatConsumptionDropdown.js +2 -1
- package/dist/components/Header/ChatConsumptionDropdown.js.map +1 -1
- package/dist/components/Header/Header.css +192 -22
- package/dist/components/Header/Header.d.ts +1 -0
- package/dist/components/Header/Header.js +26 -24
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/IconButton/IconButton.css +144 -0
- package/dist/components/IconButton/IconButton.d.ts +9 -0
- package/dist/components/IconButton/IconButton.js +36 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/KnownFacts/KnownFacts.css +19 -10
- package/dist/components/KnownFacts/KnownFacts.js +13 -3
- package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +29 -44
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +3 -2
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.css +2 -1
- package/dist/components/MemoriWidget/MemoriWidget.js +24 -28
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/MicrophoneButton/MicrophoneButton.css +2 -183
- package/dist/components/MicrophoneButton/MicrophoneButton.js +3 -1
- package/dist/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
- package/dist/components/MobileSessionPanel/MobileSessionPanel.css +22 -7
- package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +1 -0
- package/dist/components/MobileSessionPanel/MobileSessionPanel.js +5 -3
- package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
- package/dist/components/PositionPopover/PositionPopover.d.ts +2 -0
- package/dist/components/PositionPopover/PositionPopover.js +18 -4
- package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
- package/dist/components/ShareButton/ShareButton.css +3 -2
- package/dist/components/ShareButton/ShareButton.js +3 -2
- package/dist/components/ShareButton/ShareButton.js.map +1 -1
- package/dist/components/UploadButton/UploadButton.css +2 -20
- package/dist/components/UploadButton/UploadButton.js +2 -1
- package/dist/components/UploadButton/UploadButton.js.map +1 -1
- package/dist/components/layouts/Chat.js +73 -55
- package/dist/components/layouts/Chat.js.map +1 -1
- package/dist/components/layouts/FullPage.js +53 -34
- package/dist/components/layouts/FullPage.js.map +1 -1
- package/dist/components/layouts/HiddenChat.js +3 -3
- package/dist/components/layouts/HiddenChat.js.map +1 -1
- package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +3 -3
- package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
- package/dist/components/layouts/WebsiteAssistant/website-assistant.css +28 -15
- package/dist/components/layouts/ZoomedFullBody.js +53 -34
- package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
- package/dist/components/layouts/chat.css +52 -22
- package/dist/components/layouts/hidden-chat.css +33 -68
- package/dist/components/layouts/zoomed-full-body.css +5 -4
- package/dist/styles.css +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/esm/components/Chat/Chat.css +11 -15
- package/esm/components/Chat/Chat.js +11 -3
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/ChatInputs/ChatInputs.css +59 -147
- package/esm/components/ChatInputs/ChatInputs.js +3 -4
- package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
- package/esm/components/Header/ChatConsumptionDropdown.js +3 -2
- package/esm/components/Header/ChatConsumptionDropdown.js.map +1 -1
- package/esm/components/Header/Header.css +192 -22
- package/esm/components/Header/Header.d.ts +1 -0
- package/esm/components/Header/Header.js +26 -24
- package/esm/components/Header/Header.js.map +1 -1
- package/esm/components/IconButton/IconButton.css +144 -0
- package/esm/components/IconButton/IconButton.d.ts +9 -0
- package/esm/components/IconButton/IconButton.js +33 -0
- package/esm/components/IconButton/IconButton.js.map +1 -0
- package/esm/components/KnownFacts/KnownFacts.css +19 -10
- package/esm/components/KnownFacts/KnownFacts.js +13 -3
- package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +29 -44
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +3 -2
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.css +2 -1
- package/esm/components/MemoriWidget/MemoriWidget.js +24 -28
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/MicrophoneButton/MicrophoneButton.css +2 -183
- package/esm/components/MicrophoneButton/MicrophoneButton.js +3 -2
- package/esm/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
- package/esm/components/MobileSessionPanel/MobileSessionPanel.css +22 -7
- package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +1 -0
- package/esm/components/MobileSessionPanel/MobileSessionPanel.js +5 -3
- package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
- package/esm/components/PositionPopover/PositionPopover.d.ts +2 -0
- package/esm/components/PositionPopover/PositionPopover.js +18 -4
- package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
- package/esm/components/ShareButton/ShareButton.css +3 -2
- package/esm/components/ShareButton/ShareButton.js +4 -3
- package/esm/components/ShareButton/ShareButton.js.map +1 -1
- package/esm/components/UploadButton/UploadButton.css +2 -20
- package/esm/components/UploadButton/UploadButton.js +2 -1
- package/esm/components/UploadButton/UploadButton.js.map +1 -1
- package/esm/components/layouts/Chat.js +74 -56
- package/esm/components/layouts/Chat.js.map +1 -1
- package/esm/components/layouts/FullPage.js +54 -35
- package/esm/components/layouts/FullPage.js.map +1 -1
- package/esm/components/layouts/HiddenChat.js +3 -3
- package/esm/components/layouts/HiddenChat.js.map +1 -1
- package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +3 -3
- package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
- package/esm/components/layouts/WebsiteAssistant/website-assistant.css +28 -15
- package/esm/components/layouts/ZoomedFullBody.js +54 -35
- package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
- package/esm/components/layouts/chat.css +52 -22
- package/esm/components/layouts/hidden-chat.css +33 -68
- package/esm/components/layouts/zoomed-full-body.css +5 -4
- package/esm/styles.css +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/components/Chat/Chat.css +11 -15
- package/src/components/Chat/Chat.tsx +11 -2
- package/src/components/ChatInputs/ChatInputs.css +59 -147
- package/src/components/ChatInputs/ChatInputs.tsx +7 -7
- package/src/components/Header/ChatConsumptionDropdown.tsx +3 -2
- package/src/components/Header/Header.css +192 -22
- package/src/components/Header/Header.tsx +62 -55
- package/src/components/Header/__snapshots__/Header.test.tsx.snap +90 -57
- package/src/components/IconButton/IconButton.css +144 -0
- package/src/components/IconButton/IconButton.tsx +89 -0
- package/src/components/KnownFacts/KnownFacts.css +19 -10
- package/src/components/KnownFacts/KnownFacts.tsx +13 -2
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +29 -44
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +11 -20
- package/src/components/MemoriWidget/MemoriWidget.css +2 -1
- package/src/components/MemoriWidget/MemoriWidget.tsx +30 -29
- package/src/components/MicrophoneButton/MicrophoneButton.css +2 -183
- package/src/components/MicrophoneButton/MicrophoneButton.tsx +5 -5
- package/src/components/MobileSessionPanel/MobileSessionPanel.css +22 -7
- package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +8 -3
- package/src/components/PositionPopover/PositionPopover.tsx +30 -4
- package/src/components/ShareButton/ShareButton.css +3 -2
- package/src/components/ShareButton/ShareButton.tsx +8 -9
- package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +9 -9
- package/src/components/StartPanel/StartPanel.stories.tsx +1 -1
- package/src/components/UploadButton/UploadButton.css +2 -20
- package/src/components/UploadButton/UploadButton.tsx +3 -5
- package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +29 -25
- package/src/components/layouts/Chat.tsx +224 -208
- package/src/components/layouts/FullPage.tsx +61 -40
- package/src/components/layouts/HiddenChat.tsx +5 -6
- package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +2 -2
- package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +2 -0
- package/src/components/layouts/WebsiteAssistant/website-assistant.css +28 -15
- package/src/components/layouts/ZoomedFullBody.tsx +61 -40
- package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +145 -143
- package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +22 -18
- package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +10 -145
- package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +12 -10
- package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +11 -9
- package/src/components/layouts/chat.css +52 -22
- package/src/components/layouts/hidden-chat.css +33 -68
- package/src/components/layouts/layouts.stories.tsx +1 -1
- package/src/components/layouts/zoomed-full-body.css +5 -4
- package/src/styles.css +1 -0
- package/src/version.ts +1 -1
|
@@ -186,10 +186,16 @@
|
|
|
186
186
|
opacity: 0.6;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
/* Logout action */
|
|
190
|
-
.memori-dropdown--action-button.memori-dropdown--action-button--logout
|
|
189
|
+
/* Logout action — full-width labeled control inside user menu */
|
|
190
|
+
.memori-dropdown--action-button.memori-dropdown--action-button--logout,
|
|
191
|
+
.memori-widget
|
|
192
|
+
.memori-icon-button.memori-icon-button--labeled.memori-dropdown--action-button--logout.memori-button {
|
|
191
193
|
display: flex;
|
|
192
194
|
width: 100%;
|
|
195
|
+
min-width: 0;
|
|
196
|
+
max-width: none;
|
|
197
|
+
height: auto;
|
|
198
|
+
min-height: var(--memori-icon-button-size, 36px);
|
|
193
199
|
box-sizing: border-box;
|
|
194
200
|
align-items: center;
|
|
195
201
|
justify-content: center;
|
|
@@ -240,8 +246,8 @@
|
|
|
240
246
|
}
|
|
241
247
|
|
|
242
248
|
.memori-header--button svg {
|
|
243
|
-
width:
|
|
244
|
-
height:
|
|
249
|
+
width: 1.25em;
|
|
250
|
+
height: 1.25em;
|
|
245
251
|
font-size: 1em;
|
|
246
252
|
line-height: 1;
|
|
247
253
|
}
|
|
@@ -250,6 +256,19 @@
|
|
|
250
256
|
fill: currentColor;
|
|
251
257
|
}
|
|
252
258
|
|
|
259
|
+
/* Accedi / login CTA — ~1.8:1 horizontal:vertical padding, height aligned to icon tools */
|
|
260
|
+
.memori-header .memori-header--button-login.memori-button {
|
|
261
|
+
height: var(--memori-icon-button-size, 40px);
|
|
262
|
+
min-height: var(--memori-icon-button-size, 40px);
|
|
263
|
+
padding: 0.5rem 0.9rem;
|
|
264
|
+
gap: 0.4rem;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.memori-header .memori-header--button-login.memori-button svg {
|
|
268
|
+
width: var(--memori-icon-button-icon-size, 20px);
|
|
269
|
+
height: var(--memori-icon-button-icon-size, 20px);
|
|
270
|
+
}
|
|
271
|
+
|
|
253
272
|
.memori-header--position {
|
|
254
273
|
display: inline-flex;
|
|
255
274
|
align-items: center;
|
|
@@ -302,10 +321,175 @@
|
|
|
302
321
|
pointer-events: none;
|
|
303
322
|
}
|
|
304
323
|
|
|
305
|
-
.memori-header .memori-button.memori-button--active:not(:disabled):not(.memori-button--disabled),
|
|
324
|
+
.memori-header .memori-icon-button.memori-button.memori-icon-button--active:not(:disabled):not(.memori-button--disabled),
|
|
306
325
|
.memori-header
|
|
307
|
-
.memori-dropdown--user-trigger-button.memori-button--active:not(:disabled):not(.memori-button--disabled) {
|
|
308
|
-
|
|
326
|
+
.memori-dropdown--user-trigger-button.memori-icon-button.memori-button--active:not(:disabled):not(.memori-button--disabled) {
|
|
327
|
+
/* Soft active owned by IconButton.css — do not use CTA ring/fill here */
|
|
328
|
+
box-shadow: none;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* Header (+ mobile overflow) icon tools: primary icon on hover (not logout / recording) */
|
|
332
|
+
.memori-widget
|
|
333
|
+
.memori-header
|
|
334
|
+
.memori-icon-button.memori-button:hover:not(
|
|
335
|
+
:disabled,
|
|
336
|
+
.memori-button--disabled,
|
|
337
|
+
.memori-icon-button--recording,
|
|
338
|
+
.memori-dropdown--action-button--logout
|
|
339
|
+
),
|
|
340
|
+
.memori-widget
|
|
341
|
+
.memori-fullpage-header-row
|
|
342
|
+
.memori-icon-button.memori-button:hover:not(
|
|
343
|
+
:disabled,
|
|
344
|
+
.memori-button--disabled,
|
|
345
|
+
.memori-icon-button--recording
|
|
346
|
+
),
|
|
347
|
+
.memori-widget
|
|
348
|
+
.memori-chat-layout--header
|
|
349
|
+
.memori-icon-button.memori-button:hover:not(
|
|
350
|
+
:disabled,
|
|
351
|
+
.memori-button--disabled,
|
|
352
|
+
.memori-icon-button--recording
|
|
353
|
+
),
|
|
354
|
+
.memori-widget
|
|
355
|
+
.memori-chat-layout--overflow-trigger.memori-icon-button.memori-button:hover:not(
|
|
356
|
+
:disabled,
|
|
357
|
+
.memori-button--disabled
|
|
358
|
+
) {
|
|
359
|
+
color: var(--memori-primary);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.memori-widget
|
|
363
|
+
.memori-header
|
|
364
|
+
.memori-icon-button.memori-button:hover:not(
|
|
365
|
+
:disabled,
|
|
366
|
+
.memori-button--disabled,
|
|
367
|
+
.memori-icon-button--recording,
|
|
368
|
+
.memori-dropdown--action-button--logout
|
|
369
|
+
)
|
|
370
|
+
svg,
|
|
371
|
+
.memori-widget
|
|
372
|
+
.memori-fullpage-header-row
|
|
373
|
+
.memori-icon-button.memori-button:hover:not(
|
|
374
|
+
:disabled,
|
|
375
|
+
.memori-button--disabled,
|
|
376
|
+
.memori-icon-button--recording
|
|
377
|
+
)
|
|
378
|
+
svg,
|
|
379
|
+
.memori-widget
|
|
380
|
+
.memori-chat-layout--header
|
|
381
|
+
.memori-icon-button.memori-button:hover:not(
|
|
382
|
+
:disabled,
|
|
383
|
+
.memori-button--disabled,
|
|
384
|
+
.memori-icon-button--recording
|
|
385
|
+
)
|
|
386
|
+
svg,
|
|
387
|
+
.memori-widget
|
|
388
|
+
.memori-chat-layout--overflow-trigger.memori-icon-button.memori-button:hover:not(
|
|
389
|
+
:disabled,
|
|
390
|
+
.memori-button--disabled
|
|
391
|
+
)
|
|
392
|
+
svg {
|
|
393
|
+
color: var(--memori-primary);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/* Dark: keep white at rest, but still use primary on hover for icon tools */
|
|
397
|
+
.memori-widget[data-theme='dark']
|
|
398
|
+
.memori-header
|
|
399
|
+
.memori-icon-button.memori-button:hover:not(
|
|
400
|
+
:disabled,
|
|
401
|
+
.memori-button--disabled,
|
|
402
|
+
.memori-icon-button--recording,
|
|
403
|
+
.memori-dropdown--action-button--logout
|
|
404
|
+
),
|
|
405
|
+
[data-theme='dark']
|
|
406
|
+
.memori-widget
|
|
407
|
+
.memori-header
|
|
408
|
+
.memori-icon-button.memori-button:hover:not(
|
|
409
|
+
:disabled,
|
|
410
|
+
.memori-button--disabled,
|
|
411
|
+
.memori-icon-button--recording,
|
|
412
|
+
.memori-dropdown--action-button--logout
|
|
413
|
+
),
|
|
414
|
+
.memori-widget[data-theme='dark']
|
|
415
|
+
.memori-fullpage-header-row
|
|
416
|
+
.memori-icon-button.memori-button:hover:not(
|
|
417
|
+
:disabled,
|
|
418
|
+
.memori-button--disabled,
|
|
419
|
+
.memori-icon-button--recording
|
|
420
|
+
),
|
|
421
|
+
[data-theme='dark']
|
|
422
|
+
.memori-widget
|
|
423
|
+
.memori-fullpage-header-row
|
|
424
|
+
.memori-icon-button.memori-button:hover:not(
|
|
425
|
+
:disabled,
|
|
426
|
+
.memori-button--disabled,
|
|
427
|
+
.memori-icon-button--recording
|
|
428
|
+
),
|
|
429
|
+
.memori-widget[data-theme='dark']
|
|
430
|
+
.memori-chat-layout--overflow-trigger.memori-icon-button.memori-button:hover:not(
|
|
431
|
+
:disabled,
|
|
432
|
+
.memori-button--disabled
|
|
433
|
+
),
|
|
434
|
+
[data-theme='dark']
|
|
435
|
+
.memori-widget
|
|
436
|
+
.memori-chat-layout--overflow-trigger.memori-icon-button.memori-button:hover:not(
|
|
437
|
+
:disabled,
|
|
438
|
+
.memori-button--disabled
|
|
439
|
+
) {
|
|
440
|
+
color: var(--memori-primary);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
.memori-widget[data-theme='dark']
|
|
444
|
+
.memori-header
|
|
445
|
+
.memori-icon-button.memori-button:hover:not(
|
|
446
|
+
:disabled,
|
|
447
|
+
.memori-button--disabled,
|
|
448
|
+
.memori-icon-button--recording,
|
|
449
|
+
.memori-dropdown--action-button--logout
|
|
450
|
+
)
|
|
451
|
+
svg,
|
|
452
|
+
[data-theme='dark']
|
|
453
|
+
.memori-widget
|
|
454
|
+
.memori-header
|
|
455
|
+
.memori-icon-button.memori-button:hover:not(
|
|
456
|
+
:disabled,
|
|
457
|
+
.memori-button--disabled,
|
|
458
|
+
.memori-icon-button--recording,
|
|
459
|
+
.memori-dropdown--action-button--logout
|
|
460
|
+
)
|
|
461
|
+
svg,
|
|
462
|
+
.memori-widget[data-theme='dark']
|
|
463
|
+
.memori-fullpage-header-row
|
|
464
|
+
.memori-icon-button.memori-button:hover:not(
|
|
465
|
+
:disabled,
|
|
466
|
+
.memori-button--disabled,
|
|
467
|
+
.memori-icon-button--recording
|
|
468
|
+
)
|
|
469
|
+
svg,
|
|
470
|
+
[data-theme='dark']
|
|
471
|
+
.memori-widget
|
|
472
|
+
.memori-fullpage-header-row
|
|
473
|
+
.memori-icon-button.memori-button:hover:not(
|
|
474
|
+
:disabled,
|
|
475
|
+
.memori-button--disabled,
|
|
476
|
+
.memori-icon-button--recording
|
|
477
|
+
)
|
|
478
|
+
svg,
|
|
479
|
+
.memori-widget[data-theme='dark']
|
|
480
|
+
.memori-chat-layout--overflow-trigger.memori-icon-button.memori-button:hover:not(
|
|
481
|
+
:disabled,
|
|
482
|
+
.memori-button--disabled
|
|
483
|
+
)
|
|
484
|
+
svg,
|
|
485
|
+
[data-theme='dark']
|
|
486
|
+
.memori-widget
|
|
487
|
+
.memori-chat-layout--overflow-trigger.memori-icon-button.memori-button:hover:not(
|
|
488
|
+
:disabled,
|
|
489
|
+
.memori-button--disabled
|
|
490
|
+
)
|
|
491
|
+
svg {
|
|
492
|
+
color: var(--memori-primary);
|
|
309
493
|
}
|
|
310
494
|
|
|
311
495
|
.memori-dropdown--avatar-input {
|
|
@@ -576,19 +760,9 @@
|
|
|
576
760
|
gap: 0.5rem;
|
|
577
761
|
}
|
|
578
762
|
|
|
579
|
-
.memori-header--auth-icon-button {
|
|
580
|
-
width: 38px;
|
|
581
|
-
min-width: 38px;
|
|
582
|
-
height: 38px;
|
|
583
|
-
min-height: 38px;
|
|
584
|
-
padding: 8px;
|
|
585
|
-
border: 1px solid color-mix(in srgb, var(--memori-text-color, #111827) 16%, transparent);
|
|
586
|
-
background: transparent;
|
|
587
|
-
}
|
|
588
|
-
|
|
589
763
|
.memori-header--auth-icon-button:has(.memori-header--action-label) {
|
|
590
764
|
width: auto;
|
|
591
|
-
min-width:
|
|
765
|
+
min-width: var(--memori-icon-button-size, 36px);
|
|
592
766
|
gap: 0.35rem;
|
|
593
767
|
padding-inline: 10px;
|
|
594
768
|
}
|
|
@@ -600,10 +774,6 @@
|
|
|
600
774
|
white-space: nowrap;
|
|
601
775
|
}
|
|
602
776
|
|
|
603
|
-
.memori-header--auth-icon-button:hover {
|
|
604
|
-
background: color-mix(in srgb, var(--memori-text-color, #111827) 8%, transparent);
|
|
605
|
-
}
|
|
606
|
-
|
|
607
777
|
.memori-dropdown--auth-menu {
|
|
608
778
|
min-width: 320px;
|
|
609
779
|
padding: 0.45rem;
|
|
@@ -44,6 +44,7 @@ import memoriApiClient from '@memori.ai/memori-api-client';
|
|
|
44
44
|
import { Props as WidgetProps } from '../MemoriWidget/MemoriWidget';
|
|
45
45
|
import { BADGE_EMOJI } from '../../helpers/llmUsage';
|
|
46
46
|
import ChatConsumptionDropdown from './ChatConsumptionDropdown';
|
|
47
|
+
import IconButton from '../IconButton/IconButton';
|
|
47
48
|
import { imgMimeTypes } from '../../helpers/utils';
|
|
48
49
|
import { getResourceUrl } from '../../helpers/media';
|
|
49
50
|
|
|
@@ -58,6 +59,8 @@ export interface Props {
|
|
|
58
59
|
setVenue: (venue?: Venue) => void;
|
|
59
60
|
positionPopoverOpen: boolean;
|
|
60
61
|
setPositionPopoverOpen: (open: boolean) => void;
|
|
62
|
+
/** Start geolocation automatically when the position popover opens (StartPanel CTA). */
|
|
63
|
+
autoStartPositionGeolocation?: boolean;
|
|
61
64
|
setShowSettingsDrawer: (show: boolean) => void;
|
|
62
65
|
setShowChatHistoryDrawer: (show: boolean) => void;
|
|
63
66
|
setShowKnownFactsDrawer: (show: boolean) => void;
|
|
@@ -98,6 +101,7 @@ const Header: React.FC<Props> = ({
|
|
|
98
101
|
setVenue,
|
|
99
102
|
positionPopoverOpen,
|
|
100
103
|
setPositionPopoverOpen,
|
|
104
|
+
autoStartPositionGeolocation = false,
|
|
101
105
|
setShowSettingsDrawer,
|
|
102
106
|
setShowChatHistoryDrawer,
|
|
103
107
|
setShowKnownFactsDrawer,
|
|
@@ -419,7 +423,7 @@ const Header: React.FC<Props> = ({
|
|
|
419
423
|
const fullscreenLabel = fullScreen
|
|
420
424
|
? t('fullscreenExit') || 'Exit fullscreen'
|
|
421
425
|
: t('fullscreenEnter') || 'Full screen';
|
|
422
|
-
const isAuthenticated = !!loginToken && !!user;
|
|
426
|
+
const isAuthenticated = !!loginToken && !!user?.userID;
|
|
423
427
|
const isConversationStarted = Boolean(sessionID && hasUserActivatedSpeak);
|
|
424
428
|
|
|
425
429
|
const brandTitle = memori?.name?.trim() || '';
|
|
@@ -479,7 +483,7 @@ const Header: React.FC<Props> = ({
|
|
|
479
483
|
placement="bottom"
|
|
480
484
|
>
|
|
481
485
|
<span style={{ display: 'inline-flex' }}>
|
|
482
|
-
<
|
|
486
|
+
<IconButton
|
|
483
487
|
variant={buttonVariant}
|
|
484
488
|
className="memori-header--chat-history-button"
|
|
485
489
|
disabled={!loginToken}
|
|
@@ -487,15 +491,19 @@ const Header: React.FC<Props> = ({
|
|
|
487
491
|
icon={<MessageCircle />}
|
|
488
492
|
onClick={() => setShowChatHistoryDrawer(true)}
|
|
489
493
|
>
|
|
490
|
-
{chatHistoryButtonLabel
|
|
491
|
-
|
|
494
|
+
{chatHistoryButtonLabel ? (
|
|
495
|
+
<span className="memori-header--action-label">
|
|
496
|
+
{chatHistoryButtonLabel}
|
|
497
|
+
</span>
|
|
498
|
+
) : null}
|
|
499
|
+
</IconButton>
|
|
492
500
|
</span>
|
|
493
501
|
</Tooltip>
|
|
494
502
|
);
|
|
495
503
|
|
|
496
504
|
const loginNode = showLogin && (
|
|
497
505
|
<>
|
|
498
|
-
{loginToken && user ? (
|
|
506
|
+
{loginToken && user?.userID ? (
|
|
499
507
|
<Popover
|
|
500
508
|
className="memori-header--dropdown"
|
|
501
509
|
open={userPopoverOpen}
|
|
@@ -519,13 +527,11 @@ const Header: React.FC<Props> = ({
|
|
|
519
527
|
render: (props: React.ComponentProps<typeof Button>) => (
|
|
520
528
|
<Tooltip title={t('login.user') || 'User'} placement="bottom">
|
|
521
529
|
<span style={{ display: 'inline-flex' }}>
|
|
522
|
-
<
|
|
530
|
+
<IconButton
|
|
523
531
|
{...props}
|
|
532
|
+
active={userPopoverOpen}
|
|
524
533
|
variant={buttonVariant}
|
|
525
|
-
className=
|
|
526
|
-
'memori-dropdown--user-trigger-button',
|
|
527
|
-
userPopoverOpen && 'memori-button--active'
|
|
528
|
-
)}
|
|
534
|
+
className="memori-dropdown--user-trigger-button"
|
|
529
535
|
aria-label={t('login.user') || 'User'}
|
|
530
536
|
icon={<UserIcon />}
|
|
531
537
|
/>
|
|
@@ -615,15 +621,17 @@ const Header: React.FC<Props> = ({
|
|
|
615
621
|
</div>
|
|
616
622
|
</div>
|
|
617
623
|
<div className="memori-dropdown--separator" />
|
|
618
|
-
<
|
|
624
|
+
<IconButton
|
|
619
625
|
type="button"
|
|
620
626
|
variant={buttonVariant}
|
|
621
627
|
onClick={onLogout}
|
|
622
628
|
className="memori-dropdown--action-button memori-dropdown--action-button--logout"
|
|
623
629
|
icon={<LogOut size={18} strokeWidth={2} aria-hidden />}
|
|
624
630
|
>
|
|
625
|
-
|
|
626
|
-
|
|
631
|
+
<span className="memori-header--action-label">
|
|
632
|
+
{t('login.logout') || 'Logout'}
|
|
633
|
+
</span>
|
|
634
|
+
</IconButton>
|
|
627
635
|
</div>
|
|
628
636
|
}
|
|
629
637
|
>
|
|
@@ -661,6 +669,7 @@ const Header: React.FC<Props> = ({
|
|
|
661
669
|
venue={position}
|
|
662
670
|
setVenue={setVenue}
|
|
663
671
|
open={positionPopoverOpen}
|
|
672
|
+
autoStartGeolocation={autoStartPositionGeolocation}
|
|
664
673
|
onOpenChange={open => {
|
|
665
674
|
setPositionPopoverOpen(open);
|
|
666
675
|
if (open) {
|
|
@@ -683,7 +692,7 @@ const Header: React.FC<Props> = ({
|
|
|
683
692
|
{showReload && (
|
|
684
693
|
<Tooltip title={t('reload') || 'Reload'} placement="bottom">
|
|
685
694
|
<span style={{ display: 'inline-flex' }}>
|
|
686
|
-
<
|
|
695
|
+
<IconButton
|
|
687
696
|
variant={buttonVariant}
|
|
688
697
|
aria-label={t('reload') || 'Reload'}
|
|
689
698
|
icon={<RefreshCw />}
|
|
@@ -697,7 +706,7 @@ const Header: React.FC<Props> = ({
|
|
|
697
706
|
{showClear && (
|
|
698
707
|
<Tooltip title={t('clearHistory') || 'Clear chat'} placement="bottom">
|
|
699
708
|
<span style={{ display: 'inline-flex' }}>
|
|
700
|
-
<
|
|
709
|
+
<IconButton
|
|
701
710
|
variant={buttonVariant}
|
|
702
711
|
aria-label={t('clearHistory') || 'Clear chat'}
|
|
703
712
|
icon={<Trash2 />}
|
|
@@ -728,7 +737,7 @@ const Header: React.FC<Props> = ({
|
|
|
728
737
|
{showFullscreen && fullScreenAvailable && (
|
|
729
738
|
<Tooltip title={fullscreenLabel} placement="bottom">
|
|
730
739
|
<span style={{ display: 'inline-flex' }}>
|
|
731
|
-
<
|
|
740
|
+
<IconButton
|
|
732
741
|
variant={buttonVariant}
|
|
733
742
|
title={fullscreenLabel}
|
|
734
743
|
aria-label={fullscreenLabel}
|
|
@@ -807,7 +816,7 @@ const Header: React.FC<Props> = ({
|
|
|
807
816
|
placement="bottom"
|
|
808
817
|
>
|
|
809
818
|
<span style={{ display: 'inline-flex' }}>
|
|
810
|
-
<
|
|
819
|
+
<IconButton
|
|
811
820
|
variant={buttonVariant}
|
|
812
821
|
icon={<Brain />}
|
|
813
822
|
aria-label={t('knownFacts.title') || 'Known facts'}
|
|
@@ -822,7 +831,7 @@ const Header: React.FC<Props> = ({
|
|
|
822
831
|
placement="bottom"
|
|
823
832
|
>
|
|
824
833
|
<span style={{ display: 'inline-flex' }}>
|
|
825
|
-
<
|
|
834
|
+
<IconButton
|
|
826
835
|
variant={buttonVariant}
|
|
827
836
|
icon={<Users />}
|
|
828
837
|
disabled={!hasUserActivatedSpeak || !sessionID}
|
|
@@ -837,9 +846,9 @@ const Header: React.FC<Props> = ({
|
|
|
837
846
|
{enableAudio && (
|
|
838
847
|
<Tooltip title={soundLabel} placement="bottom">
|
|
839
848
|
<span style={{ display: 'inline-flex' }}>
|
|
840
|
-
<
|
|
849
|
+
<IconButton
|
|
841
850
|
variant={buttonVariant}
|
|
842
|
-
icon={speakerMuted ? <VolumeX /> : <Volume2 />}
|
|
851
|
+
icon={speakerMuted ? <VolumeX size={20} strokeWidth={2.35} aria-hidden /> : <Volume2 size={20} strokeWidth={2} aria-hidden />}
|
|
843
852
|
title={soundLabel}
|
|
844
853
|
aria-label={soundLabel}
|
|
845
854
|
onClick={() => setSpeakerMuted(!speakerMuted)}
|
|
@@ -856,7 +865,7 @@ const Header: React.FC<Props> = ({
|
|
|
856
865
|
{showSettings && hasSettingsContent(layout, additionalSettings) && (
|
|
857
866
|
<Tooltip title={t('widget.settings') || 'Settings'} placement="bottom">
|
|
858
867
|
<span style={{ display: 'inline-flex' }}>
|
|
859
|
-
<
|
|
868
|
+
<IconButton
|
|
860
869
|
variant={buttonVariant}
|
|
861
870
|
icon={<Settings />}
|
|
862
871
|
aria-label={t('widget.settings') || 'Settings'}
|
|
@@ -915,13 +924,11 @@ const Header: React.FC<Props> = ({
|
|
|
915
924
|
render: (props: React.ComponentProps<typeof Button>) => (
|
|
916
925
|
<Tooltip title="Info sessione" placement="bottom">
|
|
917
926
|
<span style={{ display: 'inline-flex' }}>
|
|
918
|
-
<
|
|
927
|
+
<IconButton
|
|
919
928
|
{...props}
|
|
929
|
+
active={infoPopoverOpen}
|
|
920
930
|
variant={buttonVariant}
|
|
921
|
-
className=
|
|
922
|
-
'memori-header--auth-icon-button',
|
|
923
|
-
infoPopoverOpen && 'memori-button--active'
|
|
924
|
-
)}
|
|
931
|
+
className="memori-header--auth-icon-button"
|
|
925
932
|
aria-label="Info sessione"
|
|
926
933
|
icon={<MoreVertical />}
|
|
927
934
|
/>
|
|
@@ -1017,7 +1024,7 @@ const Header: React.FC<Props> = ({
|
|
|
1017
1024
|
{showFullscreen && fullScreenAvailable && (
|
|
1018
1025
|
<Tooltip title={fullscreenLabel} placement="bottom">
|
|
1019
1026
|
<span style={{ display: 'inline-flex' }}>
|
|
1020
|
-
<
|
|
1027
|
+
<IconButton
|
|
1021
1028
|
variant={buttonVariant}
|
|
1022
1029
|
className="memori-header--auth-icon-button"
|
|
1023
1030
|
title={fullscreenLabel}
|
|
@@ -1085,12 +1092,12 @@ const Header: React.FC<Props> = ({
|
|
|
1085
1092
|
{enableAudio && (
|
|
1086
1093
|
<Tooltip title={soundLabel} placement="bottom">
|
|
1087
1094
|
<span style={{ display: 'inline-flex' }}>
|
|
1088
|
-
<
|
|
1095
|
+
<IconButton
|
|
1089
1096
|
variant={buttonVariant}
|
|
1090
1097
|
className="memori-header--auth-icon-button"
|
|
1091
1098
|
title={soundLabel}
|
|
1092
1099
|
aria-label={soundLabel}
|
|
1093
|
-
icon={speakerMuted ? <VolumeX /> : <Volume2 />}
|
|
1100
|
+
icon={speakerMuted ? <VolumeX size={20} strokeWidth={2.35} aria-hidden /> : <Volume2 size={20} strokeWidth={2} aria-hidden />}
|
|
1094
1101
|
onClick={() => setSpeakerMuted(!speakerMuted)}
|
|
1095
1102
|
/>
|
|
1096
1103
|
</span>
|
|
@@ -1103,6 +1110,7 @@ const Header: React.FC<Props> = ({
|
|
|
1103
1110
|
venue={position}
|
|
1104
1111
|
setVenue={setVenue}
|
|
1105
1112
|
open={positionPopoverOpen}
|
|
1113
|
+
autoStartGeolocation={autoStartPositionGeolocation}
|
|
1106
1114
|
onOpenChange={open => {
|
|
1107
1115
|
setPositionPopoverOpen(open);
|
|
1108
1116
|
if (open) {
|
|
@@ -1190,10 +1198,10 @@ const Header: React.FC<Props> = ({
|
|
|
1190
1198
|
{enableAudio && (
|
|
1191
1199
|
<Tooltip title={soundLabel} placement="left">
|
|
1192
1200
|
<span style={{ display: 'inline-flex' }}>
|
|
1193
|
-
<
|
|
1201
|
+
<IconButton
|
|
1194
1202
|
variant={buttonVariant}
|
|
1195
1203
|
className="memori-totem-rail--button"
|
|
1196
|
-
icon={speakerMuted ? <VolumeX /> : <Volume2 />}
|
|
1204
|
+
icon={speakerMuted ? <VolumeX size={20} strokeWidth={2.35} aria-hidden /> : <Volume2 size={20} strokeWidth={2} aria-hidden />}
|
|
1197
1205
|
title={soundLabel}
|
|
1198
1206
|
aria-label={soundLabel}
|
|
1199
1207
|
aria-pressed={speakerMuted}
|
|
@@ -1205,7 +1213,7 @@ const Header: React.FC<Props> = ({
|
|
|
1205
1213
|
{showFullscreen && fullScreenAvailable && (
|
|
1206
1214
|
<Tooltip title={fullscreenLabel} placement="left">
|
|
1207
1215
|
<span style={{ display: 'inline-flex' }}>
|
|
1208
|
-
<
|
|
1216
|
+
<IconButton
|
|
1209
1217
|
variant={buttonVariant}
|
|
1210
1218
|
className="memori-totem-rail--button"
|
|
1211
1219
|
icon={fullScreen ? <Minimize /> : <Maximize />}
|
|
@@ -1255,13 +1263,13 @@ const Header: React.FC<Props> = ({
|
|
|
1255
1263
|
render: (props: React.ComponentProps<typeof Button>) => (
|
|
1256
1264
|
<Tooltip title={totemAccountLabel} placement="left">
|
|
1257
1265
|
<span style={{ display: 'inline-flex' }}>
|
|
1258
|
-
<
|
|
1266
|
+
<IconButton
|
|
1259
1267
|
{...props}
|
|
1268
|
+
active={userPopoverOpen}
|
|
1260
1269
|
variant={buttonVariant}
|
|
1261
1270
|
className={cx(
|
|
1262
1271
|
'memori-totem-rail--button',
|
|
1263
|
-
'memori-totem-rail--account-trigger'
|
|
1264
|
-
userPopoverOpen && 'memori-button--active'
|
|
1272
|
+
'memori-totem-rail--account-trigger'
|
|
1265
1273
|
)}
|
|
1266
1274
|
title={totemAccountLabel}
|
|
1267
1275
|
aria-label={totemAccountLabel}
|
|
@@ -1274,7 +1282,7 @@ const Header: React.FC<Props> = ({
|
|
|
1274
1282
|
}}
|
|
1275
1283
|
content={
|
|
1276
1284
|
<div className="memori-totem-rail--menu-content">
|
|
1277
|
-
{isAuthenticated && (
|
|
1285
|
+
{showLogin && isAuthenticated && (
|
|
1278
1286
|
<div className="memori-totem-rail--menu-identity">
|
|
1279
1287
|
<span className="memori-totem-rail--menu-identity-name">
|
|
1280
1288
|
{user?.userName || t('login.welcomeUser')}
|
|
@@ -1334,23 +1342,23 @@ const Header: React.FC<Props> = ({
|
|
|
1334
1342
|
{totemKnownFactsLabel}
|
|
1335
1343
|
</Button>
|
|
1336
1344
|
)}
|
|
1337
|
-
{
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1345
|
+
{showLogin &&
|
|
1346
|
+
(isAuthenticated ? (
|
|
1347
|
+
<Button
|
|
1348
|
+
type="button"
|
|
1349
|
+
variant="ghost"
|
|
1350
|
+
className="memori-totem-rail--menu-item memori-totem-rail--menu-item--logout"
|
|
1351
|
+
icon={<LogOut size={18} aria-hidden />}
|
|
1352
|
+
title={t('login.logout') || 'Logout'}
|
|
1353
|
+
aria-label={t('login.logout') || 'Logout'}
|
|
1354
|
+
onClick={() => {
|
|
1355
|
+
setUserPopoverOpen(false);
|
|
1356
|
+
onLogout?.();
|
|
1357
|
+
}}
|
|
1358
|
+
>
|
|
1359
|
+
{t('login.logout') || 'Logout'}
|
|
1360
|
+
</Button>
|
|
1361
|
+
) : (
|
|
1354
1362
|
<Button
|
|
1355
1363
|
type="button"
|
|
1356
1364
|
variant="ghost"
|
|
@@ -1365,8 +1373,7 @@ const Header: React.FC<Props> = ({
|
|
|
1365
1373
|
>
|
|
1366
1374
|
{t('login.login') || 'Login'}
|
|
1367
1375
|
</Button>
|
|
1368
|
-
)
|
|
1369
|
-
)}
|
|
1376
|
+
))}
|
|
1370
1377
|
</div>
|
|
1371
1378
|
}
|
|
1372
1379
|
>
|