diff --git a/src/lib/components/AIPromptPopup.svelte b/src/lib/components/AIPromptPopup.svelte
new file mode 100644
index 00000000..ded983f1
--- /dev/null
+++ b/src/lib/components/AIPromptPopup.svelte
@@ -0,0 +1,174 @@
+
+
+
+
+{#if show}
+
+
+
+
+
+
+
+ Sign Up at Mermaid.ai to try AI
+
+
+
+{/if}
+
+
diff --git a/src/lib/components/DesktopEditor.svelte b/src/lib/components/DesktopEditor.svelte
index cb54ac5b..ea7b4868 100644
--- a/src/lib/components/DesktopEditor.svelte
+++ b/src/lib/components/DesktopEditor.svelte
@@ -1,7 +1,8 @@
-
diff --git a/src/lib/util/state.ts b/src/lib/util/state.ts
index 06ffb259..b52cd78a 100644
--- a/src/lib/util/state.ts
+++ b/src/lib/util/state.ts
@@ -1,4 +1,3 @@
-import { C } from '$/constants';
import type { ErrorHash, MarkerData, State, ValidatedState } from '$/types';
import { debounce } from 'lodash-es';
import type { MermaidConfig } from 'mermaid';
@@ -12,7 +11,7 @@ import {
import { parse } from './mermaid';
import { localStorage, persist } from './persist';
import { deserializeState, pakoSerde, serializeState } from './serde';
-import { errorDebug, formatJSON, MCBaseURL } from './util';
+import { errorDebug, formatJSON, getUTMSource, MCBaseURL } from './util';
export const defaultState: State = {
code: `flowchart TD
@@ -140,10 +139,11 @@ export const urlsStore = derived([stateStore], ([{ code, serialized }]) => {
mermaidChart: ({
medium
}: {
- medium: 'ai_repair' | 'main_menu' | 'save_diagram' | 'share';
+ medium: 'ai_repair' | 'main_menu' | 'save_diagram' | 'share' | 'vibe_diagramming';
}) => {
+ const utmSource = getUTMSource();
const params = new URLSearchParams({
- utm_source: C.utmSource,
+ utm_source: utmSource,
utm_medium: medium
}).toString();
return {
diff --git a/src/lib/util/util.ts b/src/lib/util/util.ts
index 08552c55..8eb5e2be 100644
--- a/src/lib/util/util.ts
+++ b/src/lib/util/util.ts
@@ -1,3 +1,4 @@
+import { C } from '$/constants';
import { env } from './env';
import { loadDataFromUrl } from './fileLoaders/loader';
import { initLoading } from './loading';
@@ -88,3 +89,10 @@ function fallbackCopyToClipboard(text: string) {
textArea.remove();
}
}
+
+export const getUTMSource = (): string => {
+ if (typeof window !== 'undefined' && window.location.host.includes('mermaid.ai')) {
+ return C.aiLiveEditor;
+ }
+ return C.utmSource;
+};
diff --git a/static/icons/use-chat-dark.svg b/static/icons/use-chat-dark.svg
new file mode 100644
index 00000000..b24e7143
--- /dev/null
+++ b/static/icons/use-chat-dark.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/static/icons/use-chat.svg b/static/icons/use-chat.svg
new file mode 100644
index 00000000..5f4d7e45
--- /dev/null
+++ b/static/icons/use-chat.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file