@memori.ai/memori-react 9.0.0-alpha.24 → 9.0.0-alpha.25
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 +28 -0
- package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
- package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
- package/dist/components/Auth/Auth.js +1 -3
- package/dist/components/Auth/Auth.js.map +1 -1
- package/dist/components/Chat/Chat.css +10 -1
- package/dist/components/Chat/Chat.js +1 -3
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/ChatBubble/ChatBubble.css +103 -5
- package/dist/components/ChatBubble/ChatBubble.js +48 -8
- package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
- package/dist/components/ChatHistoryDrawer/ChatHistory.js +1 -3
- package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +2 -4
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
- package/dist/components/ChatInputs/ChatInputs.css +17 -52
- package/dist/components/ChatInputs/ChatInputs.js +1 -3
- package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
- package/dist/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
- package/dist/components/ContentPreviewModal/ContentPreviewModal.js +1 -3
- package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
- package/dist/components/DateSelector/DateSelector.css +66 -3
- package/dist/components/DateSelector/DateSelector.js +5 -1
- package/dist/components/DateSelector/DateSelector.js.map +1 -1
- package/dist/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
- package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
- package/dist/components/FilePreview/FilePreview.css +94 -220
- package/dist/components/FilePreview/FilePreview.js +25 -71
- package/dist/components/FilePreview/FilePreview.js.map +1 -1
- package/dist/components/IconButton/IconButton.css +2 -11
- package/dist/components/KnownFacts/KnownFacts.css +3 -4
- package/dist/components/KnownFacts/KnownFacts.js +3 -5
- package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
- package/dist/components/LoginDrawer/LoginDrawer.css +3 -7
- package/dist/components/LoginDrawer/LoginDrawer.js +51 -9
- package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
- package/dist/components/MediaWidget/MediaItemWidget.css +77 -57
- package/dist/components/MediaWidget/MediaItemWidget.js +4 -4
- package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -5
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.css +0 -55
- package/dist/components/MemoriWidget/MemoriWidget.js +115 -117
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
- package/dist/components/MobileSessionPanel/MobileSessionPanel.js +77 -117
- package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
- package/dist/components/PositionPopover/PositionPopover.css +1 -1
- package/dist/components/SettingsDrawer/SettingsDrawer.js +1 -3
- package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
- package/dist/components/StartPanel/StartPanel.css +12 -1
- package/dist/components/StartPanel/StartPanel.js +30 -7
- package/dist/components/StartPanel/StartPanel.js.map +1 -1
- package/dist/components/UploadButton/UploadButton.css +7 -7
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +1 -3
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/dist/components/UploadButton/UploadImages/UploadImages.js +1 -3
- package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js +1 -3
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/dist/components/layouts/HiddenChat.js +9 -1
- package/dist/components/layouts/HiddenChat.js.map +1 -1
- package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +84 -5
- package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
- package/dist/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
- package/dist/components/layouts/fullpage.css +1 -0
- package/dist/components/layouts/hidden-chat.css +29 -5
- package/dist/helpers/error.js +2 -1
- package/dist/helpers/error.js.map +1 -1
- package/dist/helpers/positionPopover.d.ts +1 -0
- package/dist/helpers/positionPopover.js +7 -0
- package/dist/helpers/positionPopover.js.map +1 -1
- package/dist/helpers/usePressTooltip.d.ts +6 -1
- package/dist/helpers/usePressTooltip.js +16 -1
- package/dist/helpers/usePressTooltip.js.map +1 -1
- package/dist/locales/de.json +8 -2
- package/dist/locales/en.json +6 -3
- package/dist/locales/es.json +6 -3
- package/dist/locales/fr.json +6 -3
- package/dist/locales/it.json +6 -3
- package/dist/styles.css +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
- package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
- package/esm/components/Auth/Auth.js +1 -3
- package/esm/components/Auth/Auth.js.map +1 -1
- package/esm/components/Chat/Chat.css +10 -1
- package/esm/components/Chat/Chat.js +1 -3
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/ChatBubble/ChatBubble.css +103 -5
- package/esm/components/ChatBubble/ChatBubble.js +48 -8
- package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
- package/esm/components/ChatHistoryDrawer/ChatHistory.js +1 -3
- package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
- package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
- package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +2 -4
- package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
- package/esm/components/ChatInputs/ChatInputs.css +17 -52
- package/esm/components/ChatInputs/ChatInputs.js +1 -3
- package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
- package/esm/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
- package/esm/components/ContentPreviewModal/ContentPreviewModal.js +1 -3
- package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
- package/esm/components/DateSelector/DateSelector.css +66 -3
- package/esm/components/DateSelector/DateSelector.js +5 -1
- package/esm/components/DateSelector/DateSelector.js.map +1 -1
- package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
- package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
- package/esm/components/FilePreview/FilePreview.css +94 -220
- package/esm/components/FilePreview/FilePreview.js +25 -71
- package/esm/components/FilePreview/FilePreview.js.map +1 -1
- package/esm/components/IconButton/IconButton.css +2 -11
- package/esm/components/KnownFacts/KnownFacts.css +3 -4
- package/esm/components/KnownFacts/KnownFacts.js +3 -5
- package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
- package/esm/components/LoginDrawer/LoginDrawer.css +3 -7
- package/esm/components/LoginDrawer/LoginDrawer.js +51 -9
- package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
- package/esm/components/MediaWidget/MediaItemWidget.css +77 -57
- package/esm/components/MediaWidget/MediaItemWidget.js +5 -5
- package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -5
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.css +0 -55
- package/esm/components/MemoriWidget/MemoriWidget.js +115 -117
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
- package/esm/components/MobileSessionPanel/MobileSessionPanel.js +78 -118
- package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
- package/esm/components/PositionPopover/PositionPopover.css +1 -1
- package/esm/components/SettingsDrawer/SettingsDrawer.js +1 -3
- package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
- package/esm/components/StartPanel/StartPanel.css +12 -1
- package/esm/components/StartPanel/StartPanel.js +30 -7
- package/esm/components/StartPanel/StartPanel.js.map +1 -1
- package/esm/components/UploadButton/UploadButton.css +7 -7
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +1 -3
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/esm/components/UploadButton/UploadImages/UploadImages.js +1 -3
- package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js +1 -3
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/esm/components/layouts/HiddenChat.js +9 -1
- package/esm/components/layouts/HiddenChat.js.map +1 -1
- package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +85 -6
- package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
- package/esm/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
- package/esm/components/layouts/fullpage.css +1 -0
- package/esm/components/layouts/hidden-chat.css +29 -5
- package/esm/helpers/error.js +2 -1
- package/esm/helpers/error.js.map +1 -1
- package/esm/helpers/positionPopover.d.ts +1 -0
- package/esm/helpers/positionPopover.js +6 -0
- package/esm/helpers/positionPopover.js.map +1 -1
- package/esm/helpers/usePressTooltip.d.ts +6 -1
- package/esm/helpers/usePressTooltip.js +17 -2
- package/esm/helpers/usePressTooltip.js.map +1 -1
- package/esm/locales/de.json +8 -2
- package/esm/locales/en.json +6 -3
- package/esm/locales/es.json +6 -3
- package/esm/locales/fr.json +6 -3
- package/esm/locales/it.json +6 -3
- package/esm/styles.css +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/package.json +4 -3
- package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +0 -3
- package/src/components/Auth/Auth.tsx +0 -3
- package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +1 -0
- package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +5 -0
- package/src/components/Chat/Chat.css +10 -1
- package/src/components/Chat/Chat.tsx +0 -3
- package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +1735 -1765
- package/src/components/ChatBubble/ChatBubble.css +103 -5
- package/src/components/ChatBubble/ChatBubble.test.tsx +33 -0
- package/src/components/ChatBubble/ChatBubble.tsx +524 -273
- package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +655 -684
- package/src/components/ChatHistoryDrawer/ChatHistory.tsx +0 -3
- package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
- package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +3 -6
- package/src/components/ChatInputs/ChatInputs.css +17 -52
- package/src/components/ChatInputs/ChatInputs.tsx +2 -4
- package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +3 -0
- package/src/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
- package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +0 -3
- package/src/components/DateSelector/DateSelector.css +66 -3
- package/src/components/DateSelector/DateSelector.test.tsx +33 -4
- package/src/components/DateSelector/DateSelector.tsx +37 -11
- package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +0 -3
- package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +2 -1
- package/src/components/FilePreview/FilePreview.css +94 -220
- package/src/components/FilePreview/FilePreview.tsx +77 -124
- package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +33 -81
- package/src/components/Header/ChatConsumptionDropdown.test.tsx +53 -86
- package/src/components/Header/__snapshots__/Header.test.tsx.snap +60 -44
- package/src/components/IconButton/IconButton.css +2 -11
- package/src/components/KnownFacts/KnownFacts.css +3 -4
- package/src/components/KnownFacts/KnownFacts.tsx +0 -5
- package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +2 -6
- package/src/components/LoginDrawer/LoginDrawer.css +3 -7
- package/src/components/LoginDrawer/LoginDrawer.tsx +101 -54
- package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +11 -33
- package/src/components/MediaWidget/MediaItemWidget.css +77 -57
- package/src/components/MediaWidget/MediaItemWidget.test.tsx +33 -0
- package/src/components/MediaWidget/MediaItemWidget.tsx +6 -12
- package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +2 -0
- package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +1 -1
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +0 -5
- package/src/components/MemoriWidget/MemoriUIProvider.contract.test.tsx +25 -7
- package/src/components/MemoriWidget/MemoriWidget.css +0 -55
- package/src/components/MemoriWidget/MemoriWidget.tsx +18 -12
- package/src/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
- package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +29 -68
- package/src/components/PositionPopover/PositionPopover.css +1 -1
- package/src/components/SettingsDrawer/SettingsDrawer.tsx +0 -3
- package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +9 -9
- package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +8 -0
- package/src/components/StartPanel/StartPanel.css +12 -1
- package/src/components/StartPanel/StartPanel.test.tsx +57 -0
- package/src/components/StartPanel/StartPanel.tsx +41 -4
- package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +41 -6
- package/src/components/UploadButton/UploadButton.css +7 -7
- package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +0 -3
- package/src/components/UploadButton/UploadImages/UploadImages.tsx +0 -3
- package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +8 -10
- package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +0 -3
- package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +3 -9
- package/src/components/layouts/HiddenChat.tsx +9 -1
- package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +103 -6
- package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +63 -57
- package/src/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
- package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +7 -4
- package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +12 -8
- package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +7 -4
- package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +10 -5
- package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +6 -4
- package/src/components/layouts/fullpage.css +1 -0
- package/src/components/layouts/hidden-chat.css +29 -5
- package/src/components/layouts/layouts.stories.tsx +2 -2
- package/src/helpers/error.ts +2 -1
- package/src/helpers/positionPopover.test.ts +15 -0
- package/src/helpers/positionPopover.ts +16 -0
- package/src/helpers/usePressTooltip.test.ts +30 -0
- package/src/helpers/usePressTooltip.ts +31 -1
- package/src/index.tsx +1 -1
- package/src/locales/de.json +8 -2
- package/src/locales/en.json +6 -3
- package/src/locales/es.json +6 -3
- package/src/locales/fr.json +6 -3
- package/src/locales/it.json +6 -3
- package/src/styles.brandTokens.test.js +52 -0
- package/src/styles.css +27 -2
- package/src/version.ts +1 -1
- package/dist/context/widgetSurfaceContext.d.ts +0 -3
- package/dist/context/widgetSurfaceContext.js +0 -11
- package/dist/context/widgetSurfaceContext.js.map +0 -1
- package/esm/context/widgetSurfaceContext.d.ts +0 -3
- package/esm/context/widgetSurfaceContext.js +0 -7
- package/esm/context/widgetSurfaceContext.js.map +0 -1
- package/src/context/widgetSurfaceContext.tsx +0 -14
|
@@ -43,7 +43,7 @@ exports[`renders MediaWidget with links unchanged 1`] = `
|
|
|
43
43
|
class="memori-media-items"
|
|
44
44
|
>
|
|
45
45
|
<div
|
|
46
|
-
class="memori-media-items--grid memori-chat-scroll-item memori-media-items--agent"
|
|
46
|
+
class="memori-media-items--grid memori-chat-scroll-item memori-media-items--agent memori-media-items--single"
|
|
47
47
|
>
|
|
48
48
|
<div
|
|
49
49
|
class="memori-media-item"
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
import React, { useState, useCallback, useMemo, useEffect } from 'react';
|
|
8
8
|
import { useTranslation } from 'react-i18next';
|
|
9
9
|
import { Button, Dropdown, Drawer } from '@memori.ai/ui';
|
|
10
|
-
import { useWidgetSurfaceEl } from '../../../../context/widgetSurfaceContext';
|
|
11
10
|
import {
|
|
12
11
|
X,
|
|
13
12
|
Maximize,
|
|
@@ -34,7 +33,6 @@ const ArtifactDrawer: React.FC<{
|
|
|
34
33
|
* component falls back to the Drawer overlay regardless of this flag. */
|
|
35
34
|
isLayoutColumn?: boolean;
|
|
36
35
|
}> = ({ isChatLogPanel = false, isLayoutColumn = false }) => {
|
|
37
|
-
const surfaceEl = useWidgetSurfaceEl();
|
|
38
36
|
const { state, closeArtifact, toggleFullscreen } = useArtifact();
|
|
39
37
|
const { t } = useTranslation();
|
|
40
38
|
const [isMobile, setIsMobile] = useState(false);
|
|
@@ -148,7 +146,6 @@ const ArtifactDrawer: React.FC<{
|
|
|
148
146
|
// Mobile or legacy: floating Drawer overlay
|
|
149
147
|
return (
|
|
150
148
|
<Drawer
|
|
151
|
-
container={surfaceEl ?? undefined}
|
|
152
149
|
open={state.isDrawerOpen}
|
|
153
150
|
onClose={handleClose}
|
|
154
151
|
anchor="right"
|
|
@@ -172,7 +169,6 @@ const ArtifactDrawer: React.FC<{
|
|
|
172
169
|
state.isDrawerOpen,
|
|
173
170
|
state.isFullscreen,
|
|
174
171
|
isMobile,
|
|
175
|
-
surfaceEl,
|
|
176
172
|
]
|
|
177
173
|
);
|
|
178
174
|
|
|
@@ -321,7 +317,6 @@ const ArtifactDrawer: React.FC<{
|
|
|
321
317
|
placement="bottom"
|
|
322
318
|
align="end"
|
|
323
319
|
sideOffset={8}
|
|
324
|
-
container={surfaceEl ?? undefined}
|
|
325
320
|
>
|
|
326
321
|
<Dropdown.Item
|
|
327
322
|
className="memori-artifact-action-btn"
|
|
@@ -7,14 +7,21 @@ import {
|
|
|
7
7
|
} from '@memori.ai/ui';
|
|
8
8
|
|
|
9
9
|
function Probe() {
|
|
10
|
-
const
|
|
10
|
+
const escapePortal = usePortalContainer(undefined, 'escape');
|
|
11
|
+
const clipPortal = usePortalContainer(undefined, 'clip');
|
|
11
12
|
const theme = useMemoriTheme();
|
|
12
13
|
return (
|
|
13
14
|
<div
|
|
14
15
|
data-testid="probe"
|
|
15
|
-
data-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
data-escape-is-root={
|
|
17
|
+
escapePortal instanceof HTMLElement &&
|
|
18
|
+
escapePortal.getAttribute('data-memori-probe-root') === '1'
|
|
19
|
+
? 'yes'
|
|
20
|
+
: 'no'
|
|
21
|
+
}
|
|
22
|
+
data-clip-is-surface={
|
|
23
|
+
clipPortal instanceof HTMLElement &&
|
|
24
|
+
clipPortal.getAttribute('data-memori-probe-surface') === '1'
|
|
18
25
|
? 'yes'
|
|
19
26
|
: 'no'
|
|
20
27
|
}
|
|
@@ -25,6 +32,7 @@ function Probe() {
|
|
|
25
32
|
|
|
26
33
|
function Harness({ theme }: { theme: 'light' | 'dark' }) {
|
|
27
34
|
const [root, setRoot] = useState<HTMLDivElement | null>(null);
|
|
35
|
+
const [surface, setSurface] = useState<HTMLDivElement | null>(null);
|
|
28
36
|
return (
|
|
29
37
|
<div
|
|
30
38
|
ref={setRoot}
|
|
@@ -32,7 +40,16 @@ function Harness({ theme }: { theme: 'light' | 'dark' }) {
|
|
|
32
40
|
data-memori-probe-root="1"
|
|
33
41
|
data-testid="widget-root"
|
|
34
42
|
>
|
|
35
|
-
<
|
|
43
|
+
<div
|
|
44
|
+
ref={setSurface}
|
|
45
|
+
data-memori-probe-surface="1"
|
|
46
|
+
data-testid="widget-surface"
|
|
47
|
+
/>
|
|
48
|
+
<MemoriUIProvider
|
|
49
|
+
container={root}
|
|
50
|
+
clipContainer={surface}
|
|
51
|
+
theme={theme}
|
|
52
|
+
>
|
|
36
53
|
<Probe />
|
|
37
54
|
</MemoriUIProvider>
|
|
38
55
|
</div>
|
|
@@ -40,7 +57,7 @@ function Harness({ theme }: { theme: 'light' | 'dark' }) {
|
|
|
40
57
|
}
|
|
41
58
|
|
|
42
59
|
describe('MemoriUIProvider embed contract', () => {
|
|
43
|
-
it('keeps portal
|
|
60
|
+
it('keeps escape portal on widget root, clip on surface, theme in sync', async () => {
|
|
44
61
|
render(<Harness theme="dark" />);
|
|
45
62
|
|
|
46
63
|
const root = screen.getByTestId('widget-root');
|
|
@@ -48,7 +65,8 @@ describe('MemoriUIProvider embed contract', () => {
|
|
|
48
65
|
|
|
49
66
|
await waitFor(() => {
|
|
50
67
|
const probe = screen.getByTestId('probe');
|
|
51
|
-
expect(probe).toHaveAttribute('data-
|
|
68
|
+
expect(probe).toHaveAttribute('data-escape-is-root', 'yes');
|
|
69
|
+
expect(probe).toHaveAttribute('data-clip-is-surface', 'yes');
|
|
52
70
|
expect(probe).toHaveAttribute('data-theme-context', 'dark');
|
|
53
71
|
});
|
|
54
72
|
});
|
|
@@ -165,61 +165,6 @@
|
|
|
165
165
|
display: none;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
/* Close buttons (modals, drawers, popovers) — same square bordered chrome
|
|
169
|
-
as header / website-assistant / artifact-drawer IconButton.
|
|
170
|
-
@memori.ai/ui defaults these to borderless / circular. */
|
|
171
|
-
.memori-modal__close,
|
|
172
|
-
.memori-drawer__close,
|
|
173
|
-
.memori-popover__close {
|
|
174
|
-
display: inline-flex;
|
|
175
|
-
width: var(--memori-icon-button-size, 40px);
|
|
176
|
-
min-width: var(--memori-icon-button-size, 40px);
|
|
177
|
-
height: var(--memori-icon-button-size, 40px);
|
|
178
|
-
min-height: var(--memori-icon-button-size, 40px);
|
|
179
|
-
box-sizing: border-box;
|
|
180
|
-
flex-shrink: 0;
|
|
181
|
-
align-items: center;
|
|
182
|
-
justify-content: center;
|
|
183
|
-
padding: 0;
|
|
184
|
-
border: var(--memori-border, 1px) solid color-mix(in srgb, var(--memori-text-color, #111827) 18%, transparent);
|
|
185
|
-
border-radius: var(--memori-radius-box);
|
|
186
|
-
margin: 0;
|
|
187
|
-
background: transparent;
|
|
188
|
-
box-shadow: none;
|
|
189
|
-
color: var(--memori-icon-button-icon, color-mix(in oklch, var(--memori-text-color, #111827) 72%, transparent));
|
|
190
|
-
transform: none;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
.memori-popover__close {
|
|
194
|
-
block-size: var(--memori-icon-button-size, 40px);
|
|
195
|
-
inline-size: var(--memori-icon-button-size, 40px);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
.memori-modal__close:hover,
|
|
199
|
-
.memori-drawer__close:hover,
|
|
200
|
-
.memori-popover__close:hover {
|
|
201
|
-
border-color: color-mix(in srgb, var(--memori-text-color, #111827) 18%, transparent);
|
|
202
|
-
background: color-mix(in srgb, var(--memori-text-color, #111827) 6%, transparent);
|
|
203
|
-
box-shadow: none;
|
|
204
|
-
color: var(--memori-text-color, #111827);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
.memori-modal__close:focus-visible,
|
|
208
|
-
.memori-drawer__close:focus-visible,
|
|
209
|
-
.memori-popover__close:focus-visible {
|
|
210
|
-
border-color: var(--memori-primary);
|
|
211
|
-
box-shadow: var(--memori-focus-ring, 0 0 0 3px color-mix(in oklch, var(--memori-primary) 18%, transparent));
|
|
212
|
-
outline: 2px solid var(--memori-primary);
|
|
213
|
-
outline-offset: var(--memori-focus-ring-offset, 2px);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
.memori-modal__close svg,
|
|
217
|
-
.memori-drawer__close svg,
|
|
218
|
-
.memori-popover__close svg {
|
|
219
|
-
width: var(--memori-icon-button-icon-size, 20px);
|
|
220
|
-
height: var(--memori-icon-button-icon-size, 20px);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
168
|
.memori-drawer__header {
|
|
224
169
|
align-items: center;
|
|
225
170
|
}
|
|
@@ -49,8 +49,6 @@ import {
|
|
|
49
49
|
MemoriUIProvider,
|
|
50
50
|
AlertViewport,
|
|
51
51
|
} from '@memori.ai/ui';
|
|
52
|
-
import { WidgetSurfaceProvider } from '../../context/widgetSurfaceContext';
|
|
53
|
-
|
|
54
52
|
// Components
|
|
55
53
|
import MemoriAuth from '../Auth/Auth';
|
|
56
54
|
import Chat, { Props as ChatProps } from '../Chat/Chat';
|
|
@@ -444,7 +442,8 @@ export interface LayoutProps {
|
|
|
444
442
|
loading?: boolean;
|
|
445
443
|
autoStart?: boolean;
|
|
446
444
|
onSidebarToggle?: (isOpen: boolean) => void;
|
|
447
|
-
/** When true or "true" (e.g. from integrationConfig or web component attribute), hide the 3D avatar.
|
|
445
|
+
/** When true or "true" (e.g. from integrationConfig or web component attribute), hide the 3D avatar.
|
|
446
|
+
* WEBSITE_ASSISTANT defaults to hidden when this is unset. */
|
|
448
447
|
avatar3dHidden?: boolean | string;
|
|
449
448
|
/** TOTEM only: max-width of the shared content axis (avatar + panel + status).
|
|
450
449
|
* Accepts a number (px) or a CSS length string; enables vertical-kiosk widths. */
|
|
@@ -482,7 +481,7 @@ export interface Props {
|
|
|
482
481
|
showUpload?: boolean;
|
|
483
482
|
showChatHistory?: boolean;
|
|
484
483
|
showReasoning?: boolean;
|
|
485
|
-
/** When true
|
|
484
|
+
/** When true (default for WEBSITE_ASSISTANT), hide the 3D avatar in the expanded panel. Set false to show it. */
|
|
486
485
|
avatar3dHidden?: boolean;
|
|
487
486
|
preview?: boolean;
|
|
488
487
|
embed?: boolean;
|
|
@@ -530,8 +529,9 @@ type ChatStylesConfig = {
|
|
|
530
529
|
|
|
531
530
|
/**
|
|
532
531
|
* Returns CSS custom properties for the chat container when a brand primary is set.
|
|
533
|
-
* Sets the UI brand hook (`--memori-primary-color`); hover/active/subtle
|
|
534
|
-
*
|
|
532
|
+
* Sets the UI brand hook (`--memori-primary-color`); hover/active/disabled/subtle
|
|
533
|
+
* are rebound from that hook in `styles.css` on widget scopes (CSS derives only
|
|
534
|
+
* when computed on the same element as the override). Widget-only icon soft fills stay here.
|
|
535
535
|
*/
|
|
536
536
|
export function getChatStyles(
|
|
537
537
|
config: ChatStylesConfig | null | undefined
|
|
@@ -3647,7 +3647,8 @@ const MemoriWidget = ({
|
|
|
3647
3647
|
position: position,
|
|
3648
3648
|
setVenue: setPosition,
|
|
3649
3649
|
openPositionPopover: () => {
|
|
3650
|
-
|
|
3650
|
+
// StartPanel starts geolocation in its click handler (mobile Header does
|
|
3651
|
+
// not mount PositionPopover). This only opens the desktop popover UI.
|
|
3651
3652
|
setPositionPopoverOpen(true);
|
|
3652
3653
|
},
|
|
3653
3654
|
integrationConfig: integrationConfig,
|
|
@@ -3828,11 +3829,17 @@ const MemoriWidget = ({
|
|
|
3828
3829
|
})}
|
|
3829
3830
|
style={{ height }}
|
|
3830
3831
|
>
|
|
3831
|
-
<MemoriUIProvider
|
|
3832
|
+
<MemoriUIProvider
|
|
3833
|
+
container={widgetRootEl}
|
|
3834
|
+
clipContainer={widgetSurfaceEl}
|
|
3835
|
+
theme={widgetTheme}
|
|
3836
|
+
zIndexBase={
|
|
3837
|
+
selectedLayout === 'WEBSITE_ASSISTANT' ? 10000 : 0
|
|
3838
|
+
}
|
|
3839
|
+
>
|
|
3832
3840
|
{/* Inside themed root so alert text uses dark-theme tokens (white). */}
|
|
3833
|
-
<AlertViewport placement="top-end"
|
|
3834
|
-
<
|
|
3835
|
-
<div ref={setWidgetSurfaceEl} className="memori-widget__surface">
|
|
3841
|
+
<AlertViewport placement="top-end" />
|
|
3842
|
+
<div ref={setWidgetSurfaceEl} className="memori-widget__surface">
|
|
3836
3843
|
<Layout
|
|
3837
3844
|
Header={Header}
|
|
3838
3845
|
headerProps={headerProps}
|
|
@@ -4148,7 +4155,6 @@ const MemoriWidget = ({
|
|
|
4148
4155
|
/>
|
|
4149
4156
|
)}
|
|
4150
4157
|
</div>
|
|
4151
|
-
</WidgetSurfaceProvider>
|
|
4152
4158
|
</MemoriUIProvider>
|
|
4153
4159
|
</div>
|
|
4154
4160
|
);
|
|
@@ -457,3 +457,23 @@
|
|
|
457
457
|
justify-content: flex-end;
|
|
458
458
|
}
|
|
459
459
|
}
|
|
460
|
+
|
|
461
|
+
.memori-mobile-session-panel-drawer.memori-drawer--bottom {
|
|
462
|
+
width: 100%;
|
|
463
|
+
max-width: 100%;
|
|
464
|
+
height: auto;
|
|
465
|
+
max-height: 90vh;
|
|
466
|
+
padding: 0;
|
|
467
|
+
border-radius: 20px 20px 0 0;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
.memori-mobile-session-panel-drawer .memori-drawer__body {
|
|
471
|
+
overflow: auto;
|
|
472
|
+
padding: 0;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
.memori-mobile-session-panel-drawer .memori-mobile-session-panel {
|
|
476
|
+
max-height: none;
|
|
477
|
+
border-radius: 0;
|
|
478
|
+
}
|
|
479
|
+
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
LogIn,
|
|
8
8
|
LogOut,
|
|
9
9
|
} from 'lucide-react';
|
|
10
|
-
import { Button, createAlertOptions, useAlertManager } from '@memori.ai/ui';
|
|
10
|
+
import { Button, Drawer, createAlertOptions, useAlertManager } from '@memori.ai/ui';
|
|
11
11
|
import { useTranslation } from 'react-i18next';
|
|
12
12
|
import { Message, User, Venue } from '@memori.ai/memori-api-client/dist/types';
|
|
13
13
|
import { getErrori18nKey } from '../../helpers/error';
|
|
@@ -194,7 +194,6 @@ const MobileSessionPanel: React.FC<MobileSessionPanelProps> = ({
|
|
|
194
194
|
const showAuthControls = showLogin;
|
|
195
195
|
const showProfileControls = showAuthControls && isLoggedIn;
|
|
196
196
|
const panelRef = useRef<HTMLElement>(null);
|
|
197
|
-
const dialogRef = useRef<HTMLDivElement>(null);
|
|
198
197
|
const panelTitleId = 'mobile-session-panel-title';
|
|
199
198
|
const touchStartYRef = useRef(0);
|
|
200
199
|
const [dragOffset, setDragOffset] = useState(0);
|
|
@@ -261,58 +260,11 @@ const MobileSessionPanel: React.FC<MobileSessionPanelProps> = ({
|
|
|
261
260
|
knownFactsHint || t('widget.knownFactsHint') || 'What I remember about you';
|
|
262
261
|
const resolvedAiUsageTitle =
|
|
263
262
|
aiUsageTitle || t('widget.aiConsumption') || 'AI usage';
|
|
264
|
-
useEffect(() => {
|
|
265
|
-
if (!open) return;
|
|
266
|
-
const onEscape = (event: KeyboardEvent) => {
|
|
267
|
-
if (event.key === 'Escape') onClose();
|
|
268
|
-
};
|
|
269
|
-
document.addEventListener('keydown', onEscape);
|
|
270
|
-
return () => document.removeEventListener('keydown', onEscape);
|
|
271
|
-
}, [open, onClose]);
|
|
272
|
-
|
|
273
|
-
useEffect(() => {
|
|
274
|
-
if (!open) return;
|
|
275
|
-
|
|
276
|
-
const previouslyFocused = document.activeElement as HTMLElement | null;
|
|
277
|
-
const root = dialogRef.current;
|
|
278
|
-
if (!root) return;
|
|
279
|
-
|
|
280
|
-
const handleKeyDown = (event: KeyboardEvent) => {
|
|
281
|
-
if (event.key !== 'Tab') return;
|
|
282
|
-
|
|
283
|
-
const focusableElements = root.querySelectorAll<HTMLElement>(
|
|
284
|
-
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
285
|
-
);
|
|
286
|
-
if (!focusableElements.length) return;
|
|
287
|
-
|
|
288
|
-
const first = focusableElements[0];
|
|
289
|
-
const last = focusableElements[focusableElements.length - 1];
|
|
290
|
-
const active = document.activeElement as HTMLElement | null;
|
|
291
|
-
|
|
292
|
-
if (event.shiftKey && active === first) {
|
|
293
|
-
event.preventDefault();
|
|
294
|
-
last.focus();
|
|
295
|
-
} else if (!event.shiftKey && active === last) {
|
|
296
|
-
event.preventDefault();
|
|
297
|
-
first.focus();
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
|
|
301
|
-
document.addEventListener('keydown', handleKeyDown);
|
|
302
|
-
panelRef.current?.focus();
|
|
303
|
-
|
|
304
|
-
return () => {
|
|
305
|
-
document.removeEventListener('keydown', handleKeyDown);
|
|
306
|
-
previouslyFocused?.focus();
|
|
307
|
-
};
|
|
308
|
-
}, [open]);
|
|
309
263
|
|
|
310
264
|
useEffect(() => {
|
|
311
265
|
if (open) setActiveView('session');
|
|
312
266
|
}, [open]);
|
|
313
267
|
|
|
314
|
-
if (!open) return null;
|
|
315
|
-
|
|
316
268
|
const updateAvatar = async (avatar: any) => {
|
|
317
269
|
if (!uploadAsset || !pwlUpdateUser) {
|
|
318
270
|
add(
|
|
@@ -415,30 +367,15 @@ const MobileSessionPanel: React.FC<MobileSessionPanelProps> = ({
|
|
|
415
367
|
return !isKnownFactsAction && !isAudioAction;
|
|
416
368
|
});
|
|
417
369
|
|
|
418
|
-
|
|
419
|
-
<div
|
|
420
|
-
ref={dialogRef}
|
|
421
|
-
className={`memori-mobile-session-panel--overlay ${
|
|
422
|
-
isPopover ? 'memori-mobile-session-panel--overlay-popover' : ''
|
|
423
|
-
}`}
|
|
424
|
-
role="presentation"
|
|
425
|
-
>
|
|
426
|
-
{!isPopover && (
|
|
427
|
-
<button
|
|
428
|
-
type="button"
|
|
429
|
-
className="memori-mobile-session-panel--backdrop"
|
|
430
|
-
aria-label={String(t('close', { defaultValue: 'Close' }))}
|
|
431
|
-
onClick={onClose}
|
|
432
|
-
/>
|
|
433
|
-
)}
|
|
370
|
+
const panel = (
|
|
434
371
|
<section
|
|
435
372
|
ref={panelRef}
|
|
436
373
|
tabIndex={-1}
|
|
437
374
|
className={`memori-mobile-session-panel ${
|
|
438
375
|
isPopover ? 'memori-mobile-session-panel--popover' : ''
|
|
439
376
|
}`}
|
|
440
|
-
role=
|
|
441
|
-
aria-modal=
|
|
377
|
+
role={isPopover ? 'dialog' : undefined}
|
|
378
|
+
aria-modal={isPopover ? true : undefined}
|
|
442
379
|
aria-labelledby={panelTitleId}
|
|
443
380
|
onClick={event => event.stopPropagation()}
|
|
444
381
|
onTouchStart={
|
|
@@ -809,7 +746,31 @@ const MobileSessionPanel: React.FC<MobileSessionPanelProps> = ({
|
|
|
809
746
|
</div>
|
|
810
747
|
)}
|
|
811
748
|
</section>
|
|
812
|
-
|
|
749
|
+
);
|
|
750
|
+
|
|
751
|
+
if (isPopover) {
|
|
752
|
+
if (!open) return null;
|
|
753
|
+
return (
|
|
754
|
+
<div
|
|
755
|
+
className="memori-mobile-session-panel--overlay memori-mobile-session-panel--overlay-popover"
|
|
756
|
+
role="presentation"
|
|
757
|
+
>
|
|
758
|
+
{panel}
|
|
759
|
+
</div>
|
|
760
|
+
);
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
return (
|
|
764
|
+
<Drawer
|
|
765
|
+
open={open}
|
|
766
|
+
onClose={onClose}
|
|
767
|
+
anchor="bottom"
|
|
768
|
+
size="lg"
|
|
769
|
+
className="memori-mobile-session-panel-drawer"
|
|
770
|
+
closable={false}
|
|
771
|
+
>
|
|
772
|
+
{panel}
|
|
773
|
+
</Drawer>
|
|
813
774
|
);
|
|
814
775
|
};
|
|
815
776
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Drawer, Checkbox, Button, Slider, Tooltip } from '@memori.ai/ui';
|
|
2
|
-
import { useWidgetSurfaceEl } from '../../context/widgetSurfaceContext';
|
|
3
2
|
import { useTranslation } from 'react-i18next';
|
|
4
3
|
import { setLocalConfig } from '../../helpers/configuration';
|
|
5
4
|
import { Props as WidgetProps } from '../MemoriWidget/MemoriWidget';
|
|
@@ -47,11 +46,9 @@ const SettingsDrawer = ({
|
|
|
47
46
|
isAvatar3d,
|
|
48
47
|
}: Props) => {
|
|
49
48
|
const { t } = useTranslation();
|
|
50
|
-
const surfaceEl = useWidgetSurfaceEl();
|
|
51
49
|
|
|
52
50
|
return (
|
|
53
51
|
<Drawer
|
|
54
|
-
container={surfaceEl ?? undefined}
|
|
55
52
|
className="memori-settings-drawer"
|
|
56
53
|
open={open}
|
|
57
54
|
onClose={onClose}
|
|
@@ -27,7 +27,7 @@ exports[`renders ShareButton aligned left unchanged 1`] = `
|
|
|
27
27
|
>
|
|
28
28
|
<svg
|
|
29
29
|
aria-hidden="true"
|
|
30
|
-
class="lucide lucide-share2"
|
|
30
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
31
31
|
fill="none"
|
|
32
32
|
height="24"
|
|
33
33
|
stroke="currentColor"
|
|
@@ -110,7 +110,7 @@ exports[`renders ShareButton unchanged 1`] = `
|
|
|
110
110
|
>
|
|
111
111
|
<svg
|
|
112
112
|
aria-hidden="true"
|
|
113
|
-
class="lucide lucide-share2"
|
|
113
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
114
114
|
fill="none"
|
|
115
115
|
height="24"
|
|
116
116
|
stroke="currentColor"
|
|
@@ -193,7 +193,7 @@ exports[`renders ShareButton with button not primary unchanged 1`] = `
|
|
|
193
193
|
>
|
|
194
194
|
<svg
|
|
195
195
|
aria-hidden="true"
|
|
196
|
-
class="lucide lucide-share2"
|
|
196
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
197
197
|
fill="none"
|
|
198
198
|
height="24"
|
|
199
199
|
stroke="currentColor"
|
|
@@ -276,7 +276,7 @@ exports[`renders ShareButton with other tenant img set unchanged 1`] = `
|
|
|
276
276
|
>
|
|
277
277
|
<svg
|
|
278
278
|
aria-hidden="true"
|
|
279
|
-
class="lucide lucide-share2"
|
|
279
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
280
280
|
fill="none"
|
|
281
281
|
height="24"
|
|
282
282
|
stroke="currentColor"
|
|
@@ -359,7 +359,7 @@ exports[`renders ShareButton with share chat unchanged 1`] = `
|
|
|
359
359
|
>
|
|
360
360
|
<svg
|
|
361
361
|
aria-hidden="true"
|
|
362
|
-
class="lucide lucide-share2"
|
|
362
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
363
363
|
fill="none"
|
|
364
364
|
height="24"
|
|
365
365
|
stroke="currentColor"
|
|
@@ -442,7 +442,7 @@ exports[`renders ShareButton with tenant img set unchanged 1`] = `
|
|
|
442
442
|
>
|
|
443
443
|
<svg
|
|
444
444
|
aria-hidden="true"
|
|
445
|
-
class="lucide lucide-share2"
|
|
445
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
446
446
|
fill="none"
|
|
447
447
|
height="24"
|
|
448
448
|
stroke="currentColor"
|
|
@@ -525,7 +525,7 @@ exports[`renders ShareButton with title unchanged 1`] = `
|
|
|
525
525
|
>
|
|
526
526
|
<svg
|
|
527
527
|
aria-hidden="true"
|
|
528
|
-
class="lucide lucide-share2"
|
|
528
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
529
529
|
fill="none"
|
|
530
530
|
height="24"
|
|
531
531
|
stroke="currentColor"
|
|
@@ -608,7 +608,7 @@ exports[`renders ShareButton with url unchanged 1`] = `
|
|
|
608
608
|
>
|
|
609
609
|
<svg
|
|
610
610
|
aria-hidden="true"
|
|
611
|
-
class="lucide lucide-share2"
|
|
611
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
612
612
|
fill="none"
|
|
613
613
|
height="24"
|
|
614
614
|
stroke="currentColor"
|
|
@@ -691,7 +691,7 @@ exports[`renders ShareButton without qr code unchanged 1`] = `
|
|
|
691
691
|
>
|
|
692
692
|
<svg
|
|
693
693
|
aria-hidden="true"
|
|
694
|
-
class="lucide lucide-share2"
|
|
694
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
695
695
|
fill="none"
|
|
696
696
|
height="24"
|
|
697
697
|
stroke="currentColor"
|
|
@@ -34,6 +34,7 @@ exports[`renders SnippetUpload with css code 1`] = `
|
|
|
34
34
|
class="memori-button__icon"
|
|
35
35
|
>
|
|
36
36
|
<svg
|
|
37
|
+
aria-hidden="true"
|
|
37
38
|
class="lucide lucide-copy"
|
|
38
39
|
fill="none"
|
|
39
40
|
height="24"
|
|
@@ -97,6 +98,7 @@ exports[`renders SnippetUpload with html code 1`] = `
|
|
|
97
98
|
class="memori-button__icon"
|
|
98
99
|
>
|
|
99
100
|
<svg
|
|
101
|
+
aria-hidden="true"
|
|
100
102
|
class="lucide lucide-copy"
|
|
101
103
|
fill="none"
|
|
102
104
|
height="24"
|
|
@@ -160,6 +162,7 @@ exports[`renders SnippetUpload with js code 1`] = `
|
|
|
160
162
|
class="memori-button__icon"
|
|
161
163
|
>
|
|
162
164
|
<svg
|
|
165
|
+
aria-hidden="true"
|
|
163
166
|
class="lucide lucide-copy"
|
|
164
167
|
fill="none"
|
|
165
168
|
height="24"
|
|
@@ -247,6 +250,7 @@ exports[`renders SnippetUpload with js code without line numbers 1`] = `
|
|
|
247
250
|
class="memori-button__icon"
|
|
248
251
|
>
|
|
249
252
|
<svg
|
|
253
|
+
aria-hidden="true"
|
|
250
254
|
class="lucide lucide-copy"
|
|
251
255
|
fill="none"
|
|
252
256
|
height="24"
|
|
@@ -354,6 +358,7 @@ export default Snippet;
|
|
|
354
358
|
class="memori-button__icon"
|
|
355
359
|
>
|
|
356
360
|
<svg
|
|
361
|
+
aria-hidden="true"
|
|
357
362
|
class="lucide lucide-copy"
|
|
358
363
|
fill="none"
|
|
359
364
|
height="24"
|
|
@@ -461,6 +466,7 @@ export default Snippet;
|
|
|
461
466
|
class="memori-button__icon"
|
|
462
467
|
>
|
|
463
468
|
<svg
|
|
469
|
+
aria-hidden="true"
|
|
464
470
|
class="lucide lucide-copy"
|
|
465
471
|
fill="none"
|
|
466
472
|
height="24"
|
|
@@ -524,6 +530,7 @@ exports[`renders SnippetUpload with text 1`] = `
|
|
|
524
530
|
class="memori-button__icon"
|
|
525
531
|
>
|
|
526
532
|
<svg
|
|
533
|
+
aria-hidden="true"
|
|
527
534
|
class="lucide lucide-copy"
|
|
528
535
|
fill="none"
|
|
529
536
|
height="24"
|
|
@@ -587,6 +594,7 @@ exports[`renders SnippetUpload with text as fallback 1`] = `
|
|
|
587
594
|
class="memori-button__icon"
|
|
588
595
|
>
|
|
589
596
|
<svg
|
|
597
|
+
aria-hidden="true"
|
|
590
598
|
class="lucide lucide-copy"
|
|
591
599
|
fill="none"
|
|
592
600
|
height="24"
|
|
@@ -961,12 +961,23 @@
|
|
|
961
961
|
outline-offset: var(--memori-focus-ring-offset);
|
|
962
962
|
}
|
|
963
963
|
|
|
964
|
-
/* Portal on widget root; tooltip/popover library z-index is 1300.
|
|
964
|
+
/* Portal on widget root; tooltip/popover library z-index is 1300.
|
|
965
|
+
Hide while Floating UI is still applying coordinates so click-open
|
|
966
|
+
never flashes at viewport 0,0 (same pattern as ChatBubble addon tooltips). */
|
|
965
967
|
.memori--privacy-popover-positioner,
|
|
966
968
|
.memori--deep-thought-helper-tooltip-positioner {
|
|
967
969
|
z-index: 1300;
|
|
968
970
|
}
|
|
969
971
|
|
|
972
|
+
.memori--privacy-popover-positioner[data-starting-style],
|
|
973
|
+
.memori--privacy-popover-positioner[data-ending-style],
|
|
974
|
+
.memori--deep-thought-helper-tooltip-positioner[data-starting-style],
|
|
975
|
+
.memori--deep-thought-helper-tooltip-positioner[data-ending-style] {
|
|
976
|
+
opacity: 0 !important;
|
|
977
|
+
pointer-events: none;
|
|
978
|
+
visibility: hidden;
|
|
979
|
+
}
|
|
980
|
+
|
|
970
981
|
.memori--privacy-popover-popup {
|
|
971
982
|
max-width: min(20rem, calc(100vw - 2 * var(--memori-spacing-md)));
|
|
972
983
|
max-height: min(50vh, 18rem);
|