diff --git a/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue b/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue index 927239661..787567091 100644 --- a/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue +++ b/packages/mermaid/src/docs/.vitepress/components/EditorSelectionModal.vue @@ -9,63 +9,136 @@ interface Feature { interface EditorColumn { title: string; description: string; - redirectUrl: string; - buttonText: string; + redBarText?: string; + redirectUrl?: string; + buttonText?: string; highlighted?: boolean; proTrialUrl?: string; + proTrialButtonText?: string; features: Feature[]; + isButtonMargined?: boolean; } -const editorColumns: EditorColumn[] = [ - { - title: 'Playground', - description: 'Basic features, no login', - redirectUrl: - 'https://www.mermaidchart.com/play?utm_source=mermaid_js&utm_medium=editor_selection&utm_campaign=playground', - buttonText: 'Start free', - features: [ - { iconUrl: '/icons/public.svg', featureName: 'Diagram stored in URL' }, - { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, - { iconUrl: '/icons/whiteboard.svg', featureName: 'Whiteboard' }, - ], - }, - { - title: 'Free or Pro', - description: 'Advanced features, Free or Pro account', - redirectUrl: - 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection&utm_campaign=mermaid_chart&redirect=%2Fapp%2Fdiagrams%2Fnew', - buttonText: 'Start Free', - highlighted: true, - proTrialUrl: - 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection&utm_campaign=mermaid_chart_trial&redirect=%2Fapp%2Fuser%2Fbilling%2Fcheckout%3FisFromMermaid%3Dtrue', - features: [ - { iconUrl: '/icons/folder.svg', featureName: 'Storage' }, - { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, - { iconUrl: '/icons/ai-diagram.svg', featureName: 'AI diagram generator' }, - { iconUrl: '/icons/whiteboard.svg', featureName: 'Whiteboard' }, - { iconUrl: '/icons/group.svg', featureName: 'Teams' }, - { iconUrl: '/icons/groups.svg', featureName: 'Multi-user editing' }, - { iconUrl: '/icons/ai-repair.svg', featureName: 'AI diagram repair' }, - { iconUrl: '/icons/version-history.svg', featureName: 'Version history' }, - { iconUrl: '/icons/comment.svg', featureName: 'Comments' }, - { iconUrl: '/icons/presentation.svg', featureName: 'Presentations' }, - { iconUrl: '/icons/plugins.svg', featureName: 'Advanced Plugins' }, - ], - }, - { - title: 'Open Source', - description: 'Code only, no login', - redirectUrl: 'https://mermaid.live/edit', - buttonText: 'Start free', - features: [ - { iconUrl: '/icons/public.svg', featureName: 'Diagram stored in URL' }, - { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, - { iconUrl: '/icons/open-source.svg', featureName: 'Open source' }, - { iconUrl: '/icons/version-history.svg', featureName: 'Version history' }, - ], - }, +const mermaidChartFeatures: Feature[] = [ + { iconUrl: '/icons/folder.svg', featureName: 'Storage' }, + { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, + { iconUrl: '/icons/ai-diagram.svg', featureName: 'AI diagram generator' }, + { iconUrl: '/icons/whiteboard.svg', featureName: 'Whiteboard' }, + { iconUrl: '/icons/group.svg', featureName: 'Teams' }, + { iconUrl: '/icons/groups.svg', featureName: 'Multi-user editing' }, + { iconUrl: '/icons/ai-repair.svg', featureName: 'AI diagram repair' }, + { iconUrl: '/icons/version-history.svg', featureName: 'Version history' }, + { iconUrl: '/icons/comment.svg', featureName: 'Comments' }, + { iconUrl: '/icons/presentation.svg', featureName: 'Presentations' }, + { iconUrl: '/icons/plugins.svg', featureName: 'Advanced Plugins' }, ]; +const openSourceFeatures: Feature[] = [ + { iconUrl: '/icons/public.svg', featureName: 'Diagram stored in URL' }, + { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, + { iconUrl: '/icons/open-source.svg', featureName: 'Open source' }, + { iconUrl: '/icons/version-history.svg', featureName: 'Version history' }, +]; + +const playgroundFeatures: Feature[] = [ + { iconUrl: '/icons/public.svg', featureName: 'Diagram stored in URL' }, + { iconUrl: '/icons/terminal.svg', featureName: 'Code editor' }, + { iconUrl: '/icons/whiteboard.svg', featureName: 'Whiteboard' }, +]; + +const editorColumnVariants: EditorColumn[][] = [ + [ + { + title: 'Playground', + description: 'Basic features, no login', + redirectUrl: + 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=3_editor_selection_A&utm_campaign=start_playground', + buttonText: 'Start free', + features: playgroundFeatures, + }, + { + title: 'Free or Pro', + description: 'Advanced features, Free or Pro account', + redirectUrl: + 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=3_editor_selection_A&utm_campaign=start_free', + buttonText: 'Start Free', + highlighted: true, + redBarText: 'Best for collaboration', + features: mermaidChartFeatures, + }, + { + title: 'Open Source', + description: 'Code only, no login', + redirectUrl: 'https://mermaid.live/edit', + buttonText: 'Start free', + features: openSourceFeatures, + }, + ], + [ + { + title: 'Mermaid Pro', + description: 'Unlock AI and real-time collaboration', + redirectUrl: + 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection_B&utm_campaign=start_free', + buttonText: 'Start Free', + highlighted: true, + redBarText: 'Recommended', + proTrialButtonText: 'Start Pro trial', + proTrialUrl: + 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection_B&utm_campaign=start_trial&redirect=%2Fapp%2Fuser%2Fbilling%2Fcheckout%3FisFromMermaid%3Dtrue', + features: mermaidChartFeatures, + }, + { + title: 'Open Source', + description: 'Code only, no login', + redirectUrl: 'https://mermaid.live/edit', + buttonText: 'Start free', + isButtonMargined: true, + features: openSourceFeatures, + }, + ], + [ + { + title: 'Mermaid Pro', + description: 'Unlock AI and real-time collaboration', + highlighted: true, + redBarText: 'Recommended', + proTrialButtonText: 'Start free trial', + proTrialUrl: + 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection_C&utm_campaign=start_trial&redirect=%2Fapp%2Fuser%2Fbilling%2Fcheckout%3FisFromMermaid%3Dtrue', + features: mermaidChartFeatures, + }, + { + title: 'Open Source', + description: 'Code only, no login', + redirectUrl: 'https://mermaid.live/edit', + buttonText: 'Start free', + features: openSourceFeatures, + }, + ], + [ + { + title: 'Mermaid Pro', + description: 'Unlock AI and real-time collaboration', + highlighted: true, + redBarText: 'Recommended', + redirectUrl: + 'https://www.mermaidchart.com/app/sign-up?utm_source=mermaid_js&utm_medium=editor_selection_D&utm_campaign=start_free', + buttonText: 'Start free', + features: mermaidChartFeatures, + }, + { + title: 'Open Source', + description: 'Code only, no login', + redirectUrl: 'https://mermaid.live/edit', + buttonText: 'Start free', + features: openSourceFeatures, + }, + ], +]; + +const editorColumns = editorColumnVariants[Math.floor(Math.random() * editorColumnVariants.length)]; + const isVisible = ref(false); const handleMouseDown = (e: MouseEvent) => { @@ -91,7 +164,7 @@ onUnmounted(() => {