1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,73799,(e,t,a)=>{t.exports=e.r(13505)},31166,e=>{"use strict";var t=e.i(64827),a=e.i(52734),i=e.i(98603);class n extends Error{constructor(e,t){e instanceof Error?super(void 0,{cause:{err:e,...e.cause,...t}}):"string"==typeof e?(t instanceof Error&&(t={err:t,...t.cause}),super(e,t)):super(void 0,e),this.name=this.constructor.name,this.type=this.constructor.type??"AuthError",this.kind=this.constructor.kind??"error",Error.captureStackTrace?.(this,this.constructor);const a=`https://errors.authjs.dev#${this.type.toLowerCase()}`;this.message+=`${this.message?". ":""}Read more at ${a}`}}class o extends n{}class r extends n{}async function s(e,t,a,i={}){let n=`${d(t)}/${e}`;try{let e={headers:{"Content-Type":"application/json",...i?.headers?.cookie?{cookie:i.headers.cookie}:{}}};i?.body&&(e.body=JSON.stringify(i.body),e.method="POST");let t=await fetch(n,e),a=await t.json();if(!t.ok)throw a;return a}catch(e){return a.error(new o(e.message,e)),null}}function d(e){return"u"<typeof window?`${e.baseUrlServer}${e.basePathServer}`:e.basePath}function l(){return Math.floor(Date.now()/1e3)}function c(e){let t=new URL("http://localhost:3000/api/auth");e&&!e.startsWith("http")&&(e=`https://${e}`);let a=new URL(e||t),i=("/"===a.pathname?t.pathname:a.pathname).replace(/\/$/,""),n=`${a.origin}${i}`;return{origin:a.origin,host:a.host,path:i,base:n,toString:()=>n}}let u={baseUrl:c(t.default.env.NEXTAUTH_URL??t.default.env.VERCEL_URL).origin,basePath:c(t.default.env.NEXTAUTH_URL).path,baseUrlServer:c(t.default.env.NEXTAUTH_URL_INTERNAL??t.default.env.NEXTAUTH_URL??t.default.env.VERCEL_URL).origin,basePathServer:c(t.default.env.NEXTAUTH_URL_INTERNAL??t.default.env.NEXTAUTH_URL).path,_lastSync:0,_session:void 0,_getSession:()=>{}},h=null;function m(){return"u"<typeof BroadcastChannel?{postMessage:()=>{},addEventListener:()=>{},removeEventListener:()=>{},name:"next-auth",onmessage:null,onmessageerror:null,close:()=>{},dispatchEvent:()=>!1}:new BroadcastChannel("next-auth")}function p(){return null===h&&(h=m()),h}let g={debug:console.debug,error:console.error,warn:console.warn},w=i.createContext?.(void 0);async function f(e){let t=await s("session",u,g,e);return(e?.broadcast??!0)&&m().postMessage({event:"session",data:{trigger:"getSession"}}),t}async function y(){let e=await s("csrf",u,g);return e?.csrfToken??""}async function b(){return s("providers",u,g)}async function k(e,t,a){let{callbackUrl:i,...n}=t??{},{redirect:o=!0,redirectTo:r=i??window.location.href,...s}=n,l=d(u),c=await b();if(!c){let e=`${l}/error`;window.location.href=e;return}if(!e||!c[e]){let e=`${l}/signin?${new URLSearchParams({callbackUrl:r})}`;window.location.href=e;return}let h=c[e].type;if("webauthn"===h)throw TypeError(`Provider id "${e}" refers to a WebAuthn provider. 2Please use \`import { signIn } from "next-auth/webauthn"\` instead.`);let m=`${l}/${"credentials"===h?"callback":"signin"}/${e}`,p=await y(),g=await fetch(`${m}?${new URLSearchParams(a)}`,{method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Auth-Return-Redirect":"1"},body:new URLSearchParams({...s,csrfToken:p,callbackUrl:r})}),w=await g.json();if(o){let e=w.url??r;window.location.href=e,e.includes("#")&&window.location.reload();return}let f=new URL(w.url).searchParams.get("error")??void 0,k=new URL(w.url).searchParams.get("code")??void 0;return g.ok&&await u._getSession({event:"storage"}),{error:f,code:k,status:g.status,ok:g.ok,url:f?null:w.url}}async function v(e){let{redirect:t=!0,redirectTo:a=e?.callbackUrl??window.location.href}=e??{},i=d(u),n=await y(),o=await fetch(`${i}/signout`,{method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Auth-Return-Redirect":"1"},body:new URLSearchParams({csrfToken:n,callbackUrl:a})}),r=await o.json();if(p().postMessage({event:"session",data:{trigger:"signout"}}),t){let e=r.url??a;window.location.href=e,e.includes("#")&&window.location.reload();return}return await u._getSession({event:"storage"}),r}e.s(["SessionProvider",0,function(e){if(!w)throw Error("React Context is unavailable in Server Components");let{children:t,basePath:n,refetchInterval:o,refetchWhenOffline:d}=e;n&&(u.basePath=n);let c=void 0!==e.session;u._lastSync=c?l():0;let[h,m]=i.useState(()=>(c&&(u._session=e.session),e.session)),[b,k]=i.useState(!c);i.useEffect(()=>(u._getSession=async({event:e}={})=>{try{let t="storage"===e;if(t||void 0===u._session){u._lastSync=l(),u._session=await f({broadcast:!t}),m(u._session);return}if(!e||null===u._session||l()<u._lastSync)return;u._lastSync=l(),u._session=await f(),m(u._session)}catch(e){g.error(new r(e.message,e))}finally{k(!1)}},u._getSession(),()=>{u._lastSync=0,u._session=void 0,u._getSession=()=>{}}),[]),i.useEffect(()=>{let e=()=>u._getSession({event:"storage"});return p().addEventListener("message",e),()=>p().removeEventListener("message",e)},[]),i.useEffect(()=>{let{refetchOnWindowFocus:t=!0}=e,a=()=>{t&&"visible"===document.visibilityState&&u._getSession({event:"visibilitychange"})};return document.addEventListener("visibilitychange",a,!1),()=>document.removeEventListener("visibilitychange",a,!1)},[e.refetchOnWindowFocus]);let v=function(){let[e,t]=i.useState("u">typeof navigator&&navigator.onLine),a=()=>t(!0),n=()=>t(!1);return i.useEffect(()=>(window.addEventListener("online",a),window.addEventListener("offline",n
2),()=>{window.removeEventListener("online",a),window.removeEventListener("offline",n)}),[]),e}(),x=!1!==d||v;i.useEffect(()=>{if(o&&x){let e=setInterval(()=>{u._session&&u._getSession({event:"poll"})},1e3*o);return()=>clearInterval(e)}},[o,x]);let S=i.useMemo(()=>({data:h,status:b?"loading":h?"authenticated":"unauthenticated",async update(e){if(b)return;k(!0);let t=await s("session",u,g,void 0===e?void 0:{body:{csrfToken:await y(),data:e}});return k(!1),t&&(m(t),p().postMessage({event:"session",data:{trigger:"getSession"}})),t}}),[h,b]);return(0,a.jsx)(w.Provider,{value:S,children:t})},"signIn",0,k,"signOut",0,v,"useSession",0,function(e){if(!w)throw Error("React Context is unavailable in Server Components");let t=i.useContext(w),{required:a,onUnauthenticated:n}=e??{},o=a&&"unauthenticated"===t.status;return(i.useEffect(()=>{if(o){let e=`${u.basePath}/signin?${new URLSearchParams({error:"SessionRequired",callbackUrl:window.location.href})}`;n?n():window.location.href=e}},[o,n]),o)?{data:t.data,update:t.update,status:"loading"}:t}],31166)},75679,e=>{"use strict";e.s(["track",0,function(e,t){let a=window.gtag;if("function"!=typeof a)return;let i={};for(let[e,a]of Object.entries(t??{}))null!=a&&(i[e]=a);try{a("event",e,i)}catch{}}])},61885,63009,49222,e=>{"use strict";var t=e.i(52734),a=e.i(98603),i=e.i(73799),n=e.i(31166),o=e.i(75679);function r({open:e,onClose:i,auth:d,callbackUrl:l,source:c}){return((0,a.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&i()};document.addEventListener("keydown",t);let a=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",t),document.body.style.overflow=a}},[e,i]),e)?(0,t.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":"signin-modal-title",className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[(0,t.jsx)("button",{type:"button","aria-label":"Close",onClick:i,className:"absolute inset-0 bg-black/40 backdrop-blur-sm"}),(0,t.jsxs)("div",{className:"relative w-full max-w-md rounded-2xl border border-zinc-200 bg-white p-6 shadow-2xl dark:border-zinc-800 dark:bg-zinc-950",children:[(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":"Close",className:"absolute right-3 top-3 grid h-8 w-8 place-items-center rounded-md text-zinc-500 hover:bg-zinc-100 hover:text-zinc-800 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M18 6 6 18M6 6l12 12"})})}),(0,t.jsx)("h1",{id:"signin-modal-title",className:"text-xl font-semibold text-zinc-900 dark:text-zinc-100",children:d.signInPageTitle}),(0,t.jsx)("p",{className:"mt-1 text-sm text-zinc-500 dark:text-zinc-400",children:d.signInPageSubtitle}),(0,t.jsx)("div",{className:"mt-6 flex flex-col gap-2.5",children:(0,t.jsxs)("button",{type:"button",onClick:()=>{(0,o.track)("sign_in_google_click",{source:c??"unknown"}),(0,n.signIn)("google",l?{callbackUrl:l}:void 0)},className:"flex items-center justify-center gap-3 rounded-lg border border-zinc-200 bg-white px-4 py-2.5 text-sm font-medium text-zinc-800 shadow-sm transition-colors hover:bg-zinc-50 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-violet-500 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100 dark:hover:bg-zinc-800",children:[(0,t.jsx)(s,{}),d.signInWithGoogle]})})]})]}):null}function s(){return(0,t.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 48 48","aria-hidden":"true",children:[(0,t.jsx)("path",{fill:"#EA4335",d:"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"}),(0,t.jsx)("path",{fill:"#4285F4",d:"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"}),(0,t.jsx)("path",{fill:"#FBBC05",d:"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"}),(0,t.jsx)("path",{fill:"#34A853",d:"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"})]})}let d={nav:{diagramTypes:"Diagram types",diagramTypesShort:"Types",language:"Language",templates:"Templates"},quota:{label:"points today",low:"Running low",empty:"Daily limit reached"},hero:{title:"AI Diagram Generator â from Prompt or Chat",subtitle:"AI diagram generator with two modes: Quick (one prompt, no signup) or Chat (multi-turn, AI clarifies before drawing). Edit and export SVG / PNG / Markdown.",aiBadge:"AI-powered · No syntax to learn",tryLabel:"Try:",examples:[{title:"Product launch mindmap",icon:"Rocket",diagramType:"mindmap",prompt:"Mindmap for a product launch: Marketing (SEO, ads, social, PR), Engineering (backend, frontend, infra), Ops (support, billing, legal), Analytics (dashboards, funnels)."},{title:"Login flow with 2FA",icon:"Lock",diagramType:"flowchart",prompt:"Login flow with two-factor authentication: user enters credentials, backend validates, if valid send SMS code, user enters code, on match grant session token"},{title:"OAuth handshake",icon:"GitBranch",diagramType:"sequence",prompt:"OAuth 2.0 authorization code flow between browser, auth server, and resource server"},{title:"Blog schema ERD",icon:"Database",diagramType:"erd",prompt:"Blog database schema: users write posts, posts have many comments, users can leave comments. Each has
2id, timestamps, and its own columns."},{title:"CI/CD pipeline",icon:"Workflow",diagramType:"flowchart",prompt:"CI/CD pipeline: push to main runs lint and tests in parallel, if pass build docker image, push to registry, deploy to staging, smoke test, promote to production on success"}],typePickerLabel:"Diagram type",typeNames:{auto:"Auto-detect",flowchart:"Flowchart",sequence:"Sequence",erd:"ERD",state:"State",class:"Class",mindmap:"Mindmap",gantt:"Gantt",arch:"Arch"},typeMindmapHint:"Opens the interactive mindmap tool â",typePickerCollapse:"Hide â´",typePickerExpand:"Change â¾",typeArchHint:"System architecture diagrams â services, DBs, external APIs",autoDetectOn:"Auto-detect on",autoDetectOff:"Auto-detect off"},onboarding:{steps:[{title:"Describe it",desc:"Plain English. No diagram syntax, no type to pick first."},{title:"Get the diagram",desc:"Editable code on the left, live preview on the right â tweak either."},{title:"Export",desc:"SVG, PNG, or copy the Mermaid code into your docs."}]},promptBar:{placeholder:"Describe a diagram â e.g. 'login flow with 2FA' or 'ERD for blog with users and posts'.",typeHint:"No need to pick a type first â just write, we detect it.",generate:"Generate",generating:"Generatingâ¦",hint:"â/Ctrl + Enter to generate",hintMobile:"Tap Generate â",collapse:"â´ Collapse",expand:"â¾ Expand",promptHidden:"Prompt hidden â click Expand to write",promptLabel:"Prompt:",viewMode:{text:"Text",split:"Split",preview:"Preview",textDesc:"Editor only",splitDesc:"Editor + Preview",previewDesc:"Preview only"},rateLimitBase:"Daily limit reached.",rateLimitResetIn:"Resets in"},preview:{label:"Preview",fullscreenLabel:"Preview (Full screen · ESC to close)",copy:"Copy code",copied:"Copied â",copyImage:"Copy image",copyImageUnsupported:"This browser can't copy images â use Export PNG instead.",exportSvg:"Export SVG",exportPng:"Export PNG",exporting:"Exportingâ¦",watermarkHint:"Exports are watermarked · Sign in to remove",zoomIn:"Zoom in (or scroll wheel up)",zoomOut:"Zoom out (or scroll wheel down)",resetView:"Reset view",fullscreen:"Full screen",exitFullscreen:"Exit full screen (ESC)",savedLabel:"Auto-saved",nodesLabel:"nodes",edgesLabel:"edges",paletteHint:"Press ? for commands",untitled:"Untitled diagram",renderError:"Preview failed to render. The diagram code may have a syntax issue. Try regenerating.",renderErrorRetry:"Reload preview"},palette:{title:"Keyboard shortcuts",close:"Close"},landing:{ctaOpenTool:"Open the generator â",ctaOpenFullTool:"Or open the full generator â",heroPromptHint:"Enter to generate · Shift + Enter for a new line",heroPromptHintChat:"Enter to start a chat · Shift + Enter for a new line",heroSubmitQuick:"Generate",heroSubmitChat:"Refine in chat â",examplesHeading:"Try one of these â click to open in the generator",useCaseHeading:"When to use this",relatedHeading:"Related tools",madeWith:"Made with",breadcrumbHome:"Home",breadcrumbTypes:"Diagram Types",whenToUseHeading:"When to use",deepDiveHeading:"Deep dive",faqHeading:"Frequently asked questions",walkthroughCtaButton:"Start this conversation â",walkthroughCtaHint:"Opens the generator in chat mode with the first message already filled in.",chatCtaHeading:"Prefer a conversation?",chatCtaBody:"Not sure how to phrase your prompt? Chat mode lets AI ask 2-3 clarifying questions about actors, events, and edge cases â then draws.",chatCtaButton:"Try Chat to Diagram",guideCtaHeading:"Want to draw better diagrams?",guideCtaBody:"Read our in-depth tutorials â symbols, structures, 9 rules, and copy-paste prompt templates for real-world flows.",guideCtaButton:"Read the tutorials",midCtaHeading:"Ready to try it yourself?",footerProductHeading:"Product",footerDiagramTypesHeading:"Diagram Types",footerLegalHeading:"Legal",footerCopyright:"© 2026 VizText. All rights reserved.",footerPrivacy:"Privacy",footerTerms:"Terms",footerContact:"Contact",footerHome:"Home",footerGenerator:"Generator"},changelog:{metaTitle:"Changelog â What's New in VizText",metaDescription:"Release notes for VizText. Chat mode, new diagram types, SEO improvements, Chrome extension updates.",pageTitle:"Changelog",pageSubtitle:"Track what's new, what's better, and what got fixed. Latest releases first.",kindLabels:{feature:"New",improvement:"Better",fix:"Fixed"},relatedHeading:"Related",ctaHeading:"Try the latest version",ctaButton:"Open the tool",tryLabel:"Where to use it:"},blog:{metaTitle:"Diagram Tutorials â How to Draw Flowcharts, ER & Sequence Diagrams",metaDescription:"Step-by-step tutorials on drawing flowcharts, ER diagrams, sequence diagrams, and architecture diagrams with AI. Prompt templates, methodology (arc42 · C4), real cases.",pageTitle:"Diagram Tutorials",pageSubtitle:"Step-by-step guides to drawing diagrams with AI. Prompt templates, methodology, and real cases.",breadcrumbLabel:"Tutorials",publishedOn:"Published on",updatedOn:"Updated on",readMinutes:"min read",tagLabel:"Topics",faqHeading:"FAQ",relatedPostsHeading:"Continue reading",ctaHeading:"Try VizText now",ctaButton:"Open the tool",backToList:"â Back to all tutorials",navLabel:"Tutorials"},share:{button:"Share",menuTitle:"Share this diagram",toX:"Share on X",toLinkedIn:"Share on LinkedIn",toReddit:"Share on Reddit",copyLink:"Copy link",copied:"Link copied",tweetText:"Made this diagram from a sentence with VizText",preparing:"Getting your link readyâ¦",tooLong:"This diagram is too big to share as a link. Export it as a PNG instead.",invalid:"Draw a diagram first, then share it.",unavailable:"We couldn't create a link just now. Try again in a moment.",pageTitle:"A diagram made with VizText",pageSubtitle:"Open it in the editor and change anything you want â free, no signup.",diagramAlt:"The shared diagram",openInEditor:"Open in the editor â",makeYourOwn:"Make your own",viewSource:"View the Mermaid source"},markmap:{placeholder:"Enter a topic to mindmap â e.g. 'Renaissance art movements' or 'How to prepare for a product launch'.",promptLabel:"Topic",generate:"Generate mindmap",generating:"Generatingâ¦",hint:"â/Ctrl + Enter to generate",hintMobile:"Tap Generate â",fit:"Fit",exportMarkdown:"Export MD",exportOpml:"Export OPML",emptyHint:"Your mindmap will appear here",heroTitle:"AI Mindmap Generator",heroSubtitle:"Type any topic â AI builds an interactive mindmap. Click nodes to fold. Export as PNG, SVG, Markdown, or OPML for XMind.",heroBadge:"Interactive · Foldable · Free",tryLabel:"Try:",viewMindmap:"Mindmap",editMode:"Edit",editModeDesc:"Show markdown editor alongside the mindmap for direct editing",examples:[{title:"Renaissance art movements",prompt:"Renaissance art movements"},{title:"Product-market fit signals",prompt:"Product-market fit â signals, measurement, common pitfalls"},{title:"Deep learning fundamentals",prompt:"Deep learning fundamentals â architectures, training, tools"},{title:"Launching a SaaS",prompt:"How to launch a SaaS product â from idea to first customer"}]},homeSeo:{howItWorks:{heading:"How the AI diagram generator works",steps:[{icon:"Type",title:"1. Describe your diagram â one sentence or a chat",body:"Write what you want in one or tw
2o sentences â a login flow with 2FA, a database schema for a blog, a product launch mindmap. Or switch to Chat mode and let AI ask a few clarifying questions first. English works. Chinese works. You do not need to know Mermaid, PlantUML, or Graphviz syntax."},{icon:"Wand2",title:"2. AI clarifies intent â then picks the right diagram type",body:"In Quick mode, auto-detect classifies your prompt into flowchart, sequence diagram, ERD, class diagram, state diagram, mindmap, or Gantt in about 300ms. In Chat mode, AI asks 2-3 questions to firm up actors, events, and edge cases before picking a type â better for complex flows."},{icon:"Sparkles",title:"3. Get a rendered diagram â review and adjust",body:"The AI returns valid Mermaid or markmap source, the preview canvas renders it live. In Chat mode, if AI made an assumption you disagree with, reject it in one click and the diagram redraws without that element. Zoom, pan, and reset view work on desktop and mobile."},{icon:"Download",title:"4. Edit and export",body:"Open the split view to tweak the generated Mermaid source directly. Every edit re-renders instantly. Export as SVG for lossless scaling, PNG for slides and docs, Markdown or OPML for mindmaps you want to import into XMind or Obsidian."}]},useCases:{heading:"What people use the diagram generator for",intro:"The AI diagram generator covers the seven diagram types most engineers, PMs, and technical writers reach for every week. Pick Quick mode for one-shot generation, or Chat mode when you want AI to ask questions before drawing. Each use case links to a focused landing page with its own examples and prompts.",cases:[{icon:"GitBranch",slug:"flowchart-from-text",title:"Flowcharts from plain English",body:"Turn a written process â user signup, order fulfilment, deploy pipeline, incident response â into a top-down or left-to-right flowchart. Nodes, decision diamonds, and edge labels are inferred from the wording. Best for onboarding docs, runbooks, and RFCs."},{icon:"ArrowLeftRight",slug:"sequence-diagram-from-text",title:"Sequence diagrams for API interactions",body:"Describe who calls whom â client, gateway, auth service, database, third-party API â and get a lifeline diagram with request and response arrows. The AI adds notes for async callbacks and error paths when the prompt implies them. Great for API design reviews and integration handoffs."},{icon:"Database",slug:"erd-from-text",title:"ERD for database schema design",body:"Sketch a data model in natural language â users write posts, posts have many comments, comments belong to users â and get an entity-relationship diagram with primary keys, foreign keys, and cardinality. Fastest way to align on a schema before writing a migration."},{icon:"Network",slug:"mindmap-from-text",title:"Mindmaps for planning and study notes",body:"Feed the generator a topic â Renaissance art movements, product-market fit signals, launch checklist â and get an interactive markmap you can fold, expand, and export as OPML for XMind. Not just for engineering: writers, students, and PMs use it for outlines."},{icon:"CircleDot",slug:"state-diagram-from-text",title:"State diagrams for lifecycle modeling",body:"Model a state machine â order status, subscription lifecycle, deployment stages â with transitions labeled by triggering event. Cleaner than trying to describe state in prose, and catches missing transitions before you code them."},{icon:"Box",slug:"class-diagram-from-text",title:"Class diagrams for OO design",body:"Turn a domain description into a UML class diagram with attributes, methods, inheritance, and associations. Useful for code review, refactoring proposals, and teaching object-oriented design without hand-drawing boxes."},{icon:"Workflow",slug:"gantt-from-text",title:"Gantt charts for project timelines",body:"Describe milestones and dependencies â design done by week 2, backend by week 5, launch week 8 â and get a Gantt chart with tasks, durations, and critical path. Lighter than Jira for anything that fits in a single sprint plan."}]},faq:{heading:"Frequently asked questions",intro:"Common questions about the AI diagram generator. Quick mode has no signup wall; Chat mode requires sign-in so it can keep the conversation context.",items:[{q:"Is VizText really free?",a:"Yes. Quick mode supports every diagram type without signup, watermark, or credit card. Chat mode is also free but requires sign-in so it can keep conversation context. Both modes have a generous daily rate limit that resets every 24 hours."},{q:"What diagram types does the AI generator support?",a:"Seven diagram types: flowchart, sequence diagram, ERD (entity-relationship diagram), class diagram, state diagram, mindmap, and Gantt chart. The first six are rendered with Mermaid; mindmaps are rendered with markmap for interactive folding and OPML export. Auto-detect picks the right type from your prompt, or you can pin it with the diagram type picker."},{q:"Do I need to know Mermaid syntax?",a:"No. You write in plain English (or Chinese). The AI generates valid Mermaid source behind the scenes, but you never need to touch it unless you want to. If you do know Mermaid, the split view lets you edit the source directly and see the change render live â good for last-mile tweaks."},{q:"What is the difference between Quick mode and Chat mode?",a:"Quick mode generates a diagram from one prompt â fastest, best for straightforward flows.
2Chat mode lets AI ask 2-3 clarifying questions about actors, events, and edge cases before drawing â better when you're not sure of every detail. You can switch between tabs at any time and keep the same diagram type selection."},{q:"How many questions does Chat mode ask before drawing?",a:"Typically 2-3, sometimes 4-5 for complex flows. There's a built-in budget so it will not ask forever. Once AI has enough context, it produces the diagram and shows any assumptions it made â you can reject any of them in one click."},{q:"Can I skip the questions and just generate?",a:"Yes. In Chat mode, type 'just draw it' or 'skip questions' to jump straight to generation. AI will use whatever context it has and note its assumptions. If any assumption looks wrong, reject it and the diagram redraws."},{q:"What if AI adds elements I did not ask for?",a:"After Chat mode generates a diagram, it shows a confirmation card listing anything it inferred â a return arrow you did not describe, an actor you did not mention. Click 'Reject' and the AI redraws without that element. Click 'Accept' and it's added to the diagram spec for the next iteration."},{q:"Can I edit the generated diagram?",a:"Yes, in two ways. First, edit the underlying Mermaid source in the split view â every change re-renders in the preview instantly. Second, rerun the prompt with more detail, or add a follow-up sentence, and the AI regenerates the diagram from the new description. Mindmaps have a dedicated markdown editor with the same split behavior."},{q:"How do I export the diagram?",a:"Every diagram type exports as SVG (lossless, scales to any size) and PNG (raster, drop into slides and docs). Mindmaps additionally export as Markdown and OPML â OPML imports cleanly into XMind, Obsidian, and most outline tools. Export buttons live in the preview status bar."},{q:"Does it support Chinese input?",a:"Yes. Type your prompt in Chinese and the generator returns a Chinese-labeled diagram. Language is passed through the entire pipeline â from the UI locale, into the API request body, into the LLM directive â so the model does not default back to English on you. Mixed Chinese-English prompts also work."},{q:"Is there a rate limit?",a:"Yes. A daily per-IP limit caps generation requests to keep the free tier sustainable. The exact number is generous enough that normal drafting will not hit it. If you do hit the limit, the UI shows the remaining reset time. The rate limit is enforced with Upstash Redis and is consistent across all Vercel edge instances."},{q:"Is my prompt data stored?",a:"Quick mode prompts and generated code are not stored in our application database, though they may exist briefly in in-memory caches and are sent to a third-party large language model for generation. Chat mode stores messages, AI replies, diagram specifications, and generated code under your signed-in account so multi-turn context works. Production logs omit prompt content. See the privacy page for retention and deletion details."}]}},auth:{signIn:"Sign in",signOut:"Sign out",signInWithGoogle:"Continue with Google",signInWithGithub:"Continue with GitHub",signInWithEmail:"Continue with email",signInPageTitle:"Sign in to VizText",signInPageSubtitle:"Pick how you'd like to sign in.",comingSoonBadge:"Coming soon",proBadge:"Pro",upgradePrompt:"Sign in to unlock Chat mode.",accountMenu:"Account"},planMode:{title:"Diagram type",subtitle:"Choose a type and how to describe it.",typePickerLabel:"Diagram type",quickTab:"Quick",planTab:"Chat",planTabProBadge:"Limited free",planTabSubtitle:"Answer a few questions â AI will draw it",botIntro:"I'll help you create this diagram. Let me ask a few questions first.\n\nWhat kind of flow or system are you describing?",inputPlaceholder:"Type a reply...",generateButton:"Generate Diagram",stubSignIn:"Sign in to use Chat mode.",stubUpgrade:"Chat mode requires sign-in. Contact us if this message persists.",alreadyGenerated:"This chat already produced a diagram. Start a new chat to iterate.",thinking:"Thinking...",navEntry:"Chat",generatedNotice:"â Diagram ready",needMessageFirst:"Describe what you want first, then click Generate.",generateForceMessage:"Please generate the diagram now."},agent:{tabSubtitle:"Agent â reflects, clarifies, verifies",botIntro:"Describe the diagram you want. I'll ask what I need to know.",inputPlaceholder:"Type your answer or new requirementâ¦",thinking:"Thinkingâ¦",thinkingSlow:"Still working, this is taking longer than usualâ¦",generatingDrawing:"Drawing diagram · this takes a moment",ask:{header:"AskUserQuestion",other:"Other â free input",otherPlaceholder:"Type hereâ¦",submit:"Send",recommend:"Recommended"},ready:{header:"Ready confirmation",formatLabel:"format"},system:{reset:"Conversation reset",expire:"Session expired"},reset:{tooltip:"Reset conversation",confirmTitle:"Reset conversation?",confirmBody:"This will clear the current chat and start a fresh session.",cancel:"Cancel",confirm:"Reset"},questionActors:"Who are the participants in this flow? (e.g. User, Server, DB)",questionEvents:"What interactions happen between them? (each step: who does what to whom)",questionSync:"Are these calls synchronous (waiting for a response) or asynchronous?",questionNodes:"What are the main steps or decision points? (e.g. Login page, Check password, Redirect home)",questionEdges:"How do these steps connect? Which flows into which, and what conditions branch?",questionDirection:"Top-to-bottom (TD) or left-to-right (LR) layout?",questionEntities:"What entities (tables) are involved? What are their key fields? (e.g. User: id, name, email)",questionRelationships:"How are these entities related? (e.g. User has many Order · one-to-many)",questionStates:"What states exist? (e.g. Pending, Paid, Completed)",questionTransitions:"How do states transition? What triggers each transition?",questionInitialState:"Which one is the initial state?",questionClasses:"What classes exist? Fields and methods of each? (e.g. Animal
2: name/age · eat())",questionRelations:"How are the classes related? (extends / implements / aggregation / composition / association / dependency)",questionComponents:"What components are in the system? (client · service · database · cache · queue etc)",questionConnections:"How are the components connected? What protocols?",questionRootId:"What is the central topic?",questionTasks:"What tasks in the project? Timing of each? (e.g. Design: Feb 1, 3 days)",questionDiagramType:"Which kind of diagram do you want? Sequence / Flowchart / ERD / State / Class / Mindmap / Gantt / Arch. You can also pick from the button row above.",questionFallback:"Could you clarify?",errorRateLimit:"Daily limit reached. Try again after reset.",errorStale:"This confirmation is no longer active. Please continue.",errorInternal:"Server busy, please try again.",generatedNotice:"â Diagram generated",anonNextTurnHint:"Sign in to keep going â follow-ups, questions and confirmations all live in chat mode",confirmedNotice:"â Confirmed",answerAllLabel:"Yes to all remaining",answerAllEcho:"Yes to all remaining",assumptionsTitle:"I filled in a few things you didn't mention",assumptionsHint:"Ignore this and just keep going",assumptionsRemove:"Remove {n}",assumptionsKeep:"Looks good",assumptionsRemoveEcho:"Removed {n} of them",stubSignIn:"Sign in to use Agent mode.",switchConfirm:{title:"Switch diagram type?",body:"This will clear the current conversation. Sure to switch?",cancel:"Cancel",confirm:"Switch"},badge:{locked:"Locked",auto:"Auto",detecting:"Detectingâ¦"}}};e.s(["en",0,d],63009);let l={nav:{diagramTypes:"å¾è¡¨ç±»å",diagramTypesShort:"å¾è¡¨",language:"è¯è¨",templates:"模æ¿"},quota:{label:"仿¥é¢åº¦",low:"å¿«ç¨å®äº",empty:"仿¥å·²ç¨å®"},hero:{title:"AI å¾è¡¨çæå¨ ââ ä¸å¥è¯åºå¾,æå
èæ¸
æ¥ååºå¾",subtitle:"ä¸¤ç§æ¨¡å¼:å¿«éæ¨¡å¼ä¸å¥è¯ç´æ¥åºå¾,ä¸ç¨æ³¨å;å¯¹è¯æ¨¡å¼é AI å
é®å 个é®é¢ ââ è°åä¸ãåªå æ¥ãå¼å¸¸æä¹èµ° ââ 鮿¸
æ¥äºåç»ãç»å®è½æ¹,å¯å¯¼åº SVGãPNGãMarkdownã",aiBadge:"AI çæ Â· ä¸ç¨è®°è¯æ³",tryLabel:"è¯è¯:",examples:[{title:"产ååå¸æç»´å¯¼å¾",icon:"Rocket",diagramType:"mindmap",prompt:"产ååå¸æç»´å¯¼å¾:å¸åº(SEOã广åã社åªãPR),å·¥ç¨(å端ãå端ãåºç¡è®¾æ½),è¿è¥(客æãè´¦åãæ³å¡),åæ(dashboardãæ¼æ)ã"},{title:"带两æ¥éªè¯çç»å½æµç¨",icon:"Lock",diagramType:"flowchart",prompt:"Login flow with two-factor authentication: user enters credentials, backend validates, if valid send SMS code, user enters code, on match grant session token"},{title:"OAuth æ¡æè¿ç¨",icon:"GitBranch",diagramType:"sequence",prompt:"OAuth 2.0 authorization code flow between browser, auth server, and resource server"},{title:"åå®¢è¡¨ç»æ ER å¾",icon:"Database",diagramType:"erd",prompt:"Blog database schema: users write posts, posts have many comments, users can leave comments. Each has id, timestamps, and its own columns."},{title:"CI/CD æµæ°´çº¿",icon:"Workflow",diagramType:"flowchart",prompt:"CI/CD pipeline: push to main runs lint and tests in parallel, if pass build docker image, push to registry, deploy to staging, smoke test, promote to production on success"}],typePickerLabel:"å¾è¡¨ç±»å",typeNames:{auto:"èªå¨è¯å«",flowchart:"æµç¨å¾",sequence:"æ¶åºå¾",erd:"ER å¾",state:"ç¶æå¾",class:"ç±»å¾",mindmap:"æç»´å¯¼å¾",gantt:"çç¹å¾",arch:"æ¶æå¾"},typeMindmapHint:"æå¼æç»´å¯¼å¾å·¥å
· â",typePickerCollapse:"æ¶èµ· â´",typePickerExpand:"æ´æ¹ â¾",typeArchHint:"ç³»ç»æ¶æå¾ ââ æå¡ãæ°æ®åºãå¤é¨æ¥å£",autoDetectOn:"èªå¨è¯å«:å¼",autoDetectOff:"èªå¨è¯å«:å
³"},onboarding:{steps:[{title:"ç¨å¤§ç½è¯æè¿°",desc:"ä¸ç¨å¦è¯æ³,ä¹ä¸ç¨å
æå¾åã"},{title:"æ¿å°å¾",desc:"左边æ¯å¯æ¹ç代ç ,å³è¾¹å®æ¶é¢è§,两边æ¹åªè¾¹é½è¡ã"},{title:"导åº",desc:"å SVG / PNG,æè
å¤å¶ Mermaid 代ç è´´è¿ææ¡£ã"}]},promptBar:{placeholder:"è¯´è¯´ä½ æ³ç»ä»ä¹ ââ æ¯å¦ã带两æ¥éªè¯çç»å½æµç¨ã,æãå客çç¨æ·ãæç« ãè¯è®ºè¡¨å
³ç³»ã",typeHint:"ä¸ç¨å
éå¾å,ç´æ¥å,æä»¬ä¼èªå¨è¯å«ã",generate:"çæ",generating:"çæä¸â¦",hint:"â/Ctrl + å车 çæ",hintMobile:"ç¹ä¸é¢ççæ â",collapse:"â´ æ¶èµ·",expand:"â¾ å±å¼",promptHidden:"è¾å
¥æ¡æ¶èµ·æ¥äº ââ ç¹ãå±å¼ãç»§ç»å",promptLabel:"æè¿°:",viewMode:{text:"代ç ",split:"åå±",preview:"é¢è§",textDesc:"åªçç¼è¾å¨",splitDesc:"ç¼è¾å¨ + é¢è§",previewDesc:"åªçé¢è§"},rateLimitBase:"ä»å¤©ç次æ°ç¨å®äºã",rateLimitResetIn:"è·éç½®è¿æ"},preview:{label:"é¢è§",fullscreenLabel:"é¢è§(å
¨å± · æ ESC éåº)",copy:"å¤å¶ä»£ç ",copied:"å·²å¤å¶ â",copyImage:"å¤å¶å¾ç",copyImageUnsupported:"è¿ä¸ªæµè§å¨ä¸æ¯æå¤å¶å¾ç,请æ¹ç¨ãå¯¼åº PNGã",exportSvg:"å¯¼åº SVG",exportPng:"å¯¼åº PNG",exporting:"导åºä¸â¦",watermarkHint:"导åºå¾çå¸¦æ°´å° Â· ç»å½å»æ",zoomIn:"æ¾å¤§(æå䏿»è½®)",zoomOut:"缩å°(æå䏿»è½®)",resetView:"å¤ä
2½",fullscreen:"å
¨å±",exitFullscreen:"éåºå
¨å±(ESC)",savedLabel:"å·²èªå¨ä¿å",nodesLabel:"个èç¹",edgesLabel:"æ¡è¿çº¿",paletteHint:"æ ? çå¿«æ·é®",untitled:"æªå½åå¾è¡¨",renderError:"é¢è§æ²¡æ¸²æåºæ¥,å¤åæ¯å¾è¡¨ä»£ç æè¯æ³é®é¢ãéæ°çæä¸æ¬¡è¯è¯ã",renderErrorRetry:"éæ°å è½½é¢è§"},palette:{title:"é®çå¿«æ·é®",close:"å
³é"},landing:{ctaOpenTool:"æå¼çæå¨ â",ctaOpenFullTool:"æè
æå¼å®æ´çæå¨ â",heroPromptHint:"åè½¦çæ Â· Shift + å车æ¢è¡",heroPromptHintChat:"å车å¼å§å¯¹è¯ · Shift + å车æ¢è¡",heroSubmitQuick:"ç´æ¥çæ",heroSubmitChat:"èå¤©ä¿®æ¹ â",examplesHeading:"ç¹ä¸ä¸ªè¯è¯ ââ ä¼ç´æ¥å¸¦è¿çæå¨",useCaseHeading:"ä»ä¹æ¶åç¨",relatedHeading:"ç¸å
³å·¥å
·",madeWith:"å·¥å
·ç±",breadcrumbHome:"é¦é¡µ",breadcrumbTypes:"å¾è¡¨ç±»å",whenToUseHeading:"éç¨åºæ¯",deepDiveHeading:"详ç»è¯´æ",faqHeading:"常è§é®é¢",walkthroughCtaButton:"ç¨è¿æ®µå¯¹è¯å¼å§ â",walkthroughCtaHint:"æå¼å¯¹è¯æ¨¡å¼,ä¸é¢é£å¥è¯å·²ç»æ¿ä½ 填好äºã",chatCtaHeading:"ä¸ç¥éæä¹æè¿°?",chatCtaBody:"å¯¹è¯æ¨¡å¼é AI ä¼å
é®ä½ 两ä¸ä¸ªé®é¢ ââ è°åä¸ãåçä»ä¹ãå¼å¸¸åæ¯æä¹èµ° ââ 弿¸
æ¥äºåå¨ç¬ã",chatCtaButton:"è¯è¯å¯¹è¯æ¨¡å¼",guideCtaHeading:"æ³ç»å¾æ´è§è?",guideCtaBody:"æç¨é讲äºå¸¸ç¨ç¬¦å·ãå ç§åºæ¬ç»æã乿¡ç»æ³è§è,è¿æå¯ä»¥ç´æ¥æ¿å»ç¨ç prompt 模æ¿åçå®ä¸å¡ä¾åã",guideCtaButton:"çæç¨",midCtaHeading:"èªå·±è¯ä¸ä¸?",footerProductHeading:"产å",footerDiagramTypesHeading:"å¾è¡¨ç±»å",footerLegalHeading:"æ³å¾",footerCopyright:"© 2026 VizText. ä¿çæææå©ã",footerPrivacy:"éç§æ¿ç",footerTerms:"æå¡æ¡æ¬¾",footerContact:"èç³»æä»¬",footerHome:"é¦é¡µ",footerGenerator:"çæå¨"},changelog:{metaTitle:"æ´æ°æ¥å¿ â VizText æ´æ°äºä»ä¹",metaDescription:"VizText çæ´æ°è®°å½:å¯¹è¯æ¨¡å¼ãæ°å¢å¾è¡¨ç±»åã页é¢ä¼åãChrome æä»¶ã",pageTitle:"æ´æ°æ¥å¿",pageSubtitle:"å äºä»ä¹ãæ¹å¥½äºä»ä¹ãä¿®äºä»ä¹ãææ°ç卿ä¸é¢ã",kindLabels:{feature:"æ°å¢",improvement:"æ¹è¿",fix:"ä¿®å¤"},relatedHeading:"ç¸å
³",ctaHeading:"å»è¯è¯ææ°ç",ctaButton:"æå¼å·¥å
·",tryLabel:"å¨åªè½ç¨ä¸:"},blog:{metaTitle:"ç»å¾æç¨ â æµç¨å¾ / ER å¾ / æ¶åºå¾ / æ¶æå¾æä¹ç»",metaDescription:"讲æä¹ç¨ AI ç»æµç¨å¾ãER å¾ãæ¶åºå¾ãæ¶æå¾çé¿ææç¨ãå« prompt 模æ¿ãarc42 ä¸ C4 æ¹æ³è®ºãçå®é¡¹ç®æ¡ä¾ã",pageTitle:"ç»å¾æç¨",pageSubtitle:"䏿¥æ¥æä½ ç¨ AI ç»å¾:prompt 模æ¿ãå¸¸ç¨æ¹æ³è®ºãçå®é¡¹ç®æ¡ä¾ã",breadcrumbLabel:"æç¨",publishedOn:"åå¸äº",updatedOn:"æ´æ°äº",readMinutes:"åéé
读",tagLabel:"è¯é¢",faqHeading:"常è§é®é¢",relatedPostsHeading:"æ¥ç读",ctaHeading:"å»è¯è¯ VizText",ctaButton:"æå¼å·¥å
·",backToList:"â åå°å
¨é¨æç¨",navLabel:"æç¨"},share:{button:"å享",menuTitle:"å享è¿å¼ å¾",toX:"åäº«å° X",toLinkedIn:"åäº«å° LinkedIn",toReddit:"åäº«å° Reddit",copyLink:"å¤å¶é¾æ¥",copied:"龿¥å·²å¤å¶",tweetText:"ç¨ VizText ä¸å¥è¯ç»åºæ¥çå¾",preparing:"æ£å¨çæé¾æ¥â¦",tooLong:"è¿å¼ å¾å¤ªå¤§äº,å䏿åäº«é¾æ¥ãå¯¼åº PNG å§ã",invalid:"å
ç»ä¸å¼ å¾,åå享ã",unavailable:"龿¥ææ¶çæä¸äº,è¿ä¸ä¼å¿åè¯è¯ã",pageTitle:"ä¸å¼ ç¨ VizText ç»çå¾",pageSubtitle:"å¨ç¼è¾å¨éæå¼,æ³æä¹æ¹é½è¡ ââ å
è´¹,ä¸ç¨æ³¨åã",diagramAlt:"被å享çå¾",openInEditor:"å¨ç¼è¾å¨éæå¼ â",makeYourOwn:"èªå·±ç»ä¸å¼ ",viewSource:"ç Mermaid æºç "},markmap:{placeholder:"åä¸ªæ³æ¢³ççè¯é¢ ââ æ¯å¦ãæèºå¤å
´çèºæ¯æµæ´¾ã,æã产ååå¸åè¦åå¤ä»ä¹ãã",promptLabel:"è¯é¢",generate:"çæèå¾",generating:"çæä¸â¦",hint:"â/Ctrl + å车 çæ",hintMobile:"ç¹ä¸é¢ççæ â",fit:"éé
",exportMarkdown:"å¯¼åº MD",exportOpml:"å¯¼åº OPML",emptyHint:"çæçèå¾ä¼åºç°å¨è¿é",heroTitle:"AI æç»´å¯¼å¾çæå¨",heroSubtitle:"ç»ä¸ä¸ªè¯é¢,AI ç´æ¥çæå¯äº¤äºçèå¾ãç¹èç¹è½æå ãå¯å¯¼åº PNGãSVGãMarkdown,æå¯¼åº OPML ä¸¢è¿ XMindã",heroBadge:"å¯äº¤äº · è½æå · å
è´¹",tryLabel:"è¯è¯:",viewMindmap:"èå¾",editMode:"ç¼è¾",editModeDesc:"å¨èå¾æè¾¹æå¼ markdown ç¼è¾å¨,ç´æ¥æ¹å
容",examples:[{title:"æèºå¤å
´æ¶æçèºæ¯",prompt:"æèºå¤å
´æ¶æçèºæ¯"},{title:"产åå¸åºå¥å度信å·",prompt:"产åå¸åºå¥å度 ââ ä¿¡å·ãå¦ä½æµéã常è§è¯¯åº"},{title:"深度å¦ä¹ å
¥é¨",prompt:"深度å¦ä¹ å
¥é¨ ââ åºç¡æ¦å¿µãæ ¸å¿æ¶æã常ç¨å·¥å
·"},{title:"SaaS 产åä¸çº¿å
¨æµç¨",prompt:"SaaS 产åä¸çº¿å
¨æµç¨ ââ 仿³æ³å°ç¬¬ä¸ä¸ªä»è´¹ç¨æ·"}]},homeSeo:{howItWorks:{heading:"AI å¾è¡¨çæå¨æä¹ç¨",steps:[{icon:"Type",title:"1. 说æ¸
æ¥è¦ç»ä»ä¹ ââ ä¸å¥è¯,æè
èå å¥",body:"ä¸ä¸¤å¥è¯åæ¸
æ¥è¦ç»çä¸è¥¿:带两æ¥éªè¯çç»å½æµç¨ãå客çåºè¡¨å
³ç³»ã产ååå¸çå夿¸
åãè¦æ¯èªå·±ä¹æ²¡å®å
¨æ³æç½,åå°å¯¹è¯æ¨¡å¼,让 AI å
é®å 个é®é¢ãä¸æè±æé½è½å,MermaidãPlantUMLãGraphviz çè¯æ³ä¸ä¸ªé½ä¸ç¨ä¼ã"},{icon:"Wand2",title:"2. å
弿¸
æå¾,åå³å®ç»æåªç§å¾",body:"å¿«éæ¨¡å¼ä¸,èªå¨è¯å«ä¼å¨ 300 毫ç§å·¦å³å¤æä½ è¦çæ¯æµç¨å¾ãæ¶åºå¾ãER å¾ãç±»å¾ãç¶æå¾ãæç»´å¯¼å¾è¿æ¯çç¹å¾ãå¯¹è¯æ¨¡å¼ä¸,AI ä¼å
é®ä¸¤ä¸ä¸ªé®é¢,æè§è²ãæ¥éª¤ãå¼å¸¸åæ¯é®æç½åå®ç±»å ââ æµç¨
2ä¸å¤æ,è¿æ ·åºå¾æ´ç¨³ã"},{icon:"Sparkles",title:"3. å ç§éæ¿å°å¾ ââ çä¸ç¼,ä¸å¯¹å°±æ¹",body:"AI ååºæ¥çæ¯åæ³ç Mermaid æ markmap æºç ,é¢è§åºå®æ¶æ¸²æãå¯¹è¯æ¨¡å¼ä¸,妿 AI èªå·±èè¡¥äºä½ 没说çä¸è¥¿,ç¹ä¸ä¸æç»,å¾ç«å»éç»ä¸ç廿å®ã缩æ¾ãæå¨ãå¤ä½å¨çµèåææºä¸é½è½ç¨ã"},{icon:"Download",title:"4. æ¹ä¸æ¹,导åºå»ç¨",body:"åå°åå±å°±è½ç´æ¥æ¹ Mermaid æºç ,æ¹ä¸ä¸ªåé¢è§ç«å»è·çåãSVG æ¯ç¢é,æ¾å¤å¤§é½ä¸ç³;PNG ç´æ¥è´´è¿ PPT åææ¡£;æç»´å¯¼å¾è¿è½å¯¼åº Markdown å OPML,ä¸¢è¿ XMindãObsidian è¿ç±»å¤§çº²å·¥å
·ã"}]},useCases:{heading:"大家齿¿å®ç»ä»ä¹å¾",intro:"å·¥ç¨å¸ã产åç»çãåææ¯ææ¡£ç人æ¯å¨è¦ç»çå¾,åºæ¬å°±æ¯ä¸é¢è¿ä¸ç§ãæ³ä¸æ¥åºå¾å°±ç¨å¿«é模å¼,æ³è®© AI å
鮿¸
æ¥åç»å°±ç¨å¯¹è¯æ¨¡å¼ãæ¯ä¸ç±»é½æåç¬ç页é¢,é颿æ´å¤ä¾ååå¯ä»¥ç
§æç promptã",cases:[{icon:"GitBranch",slug:"flowchart-from-text",title:"æä¸æ®µæååææµç¨å¾",body:"æåææåçæµç¨ ââ ç¨æ·æ³¨åã订åä»ä¸åå°åè´§ãåå¸ä¸çº¿ãçº¿ä¸æ
éå¤ç ââ åæä»ä¸å°ä¸æä»å·¦å°å³çæµç¨å¾ãåªäºæ¯æ¥éª¤ãåªéè¦å¤æã忝䏿 ä»ä¹æ¡ä»¶,é½ä»ä½ çæªè¾éæ¨åºæ¥ãéååæ°äººææ¡£ãå¼çæååææ¯æ¹æ¡ã"},{icon:"ArrowLeftRight",slug:"sequence-diagram-from-text",title:"ç»æ¥å£è°ç¨ç»æ¶åºå¾",body:"忏
æ¥è°è°è° ââ 客æ·ç«¯ãç½å
³ãé´ææå¡ãæ°æ®åºãç¬¬ä¸æ¹æ¥å£ ââ å°±è½å¾å°ä¸å¼ 带请æ±åè¿åç®å¤´çæ¶åºå¾ãæè¿°éæå°å¼æ¥åè°æå¤±è´¥åæ¯æ¶,AI ä¼èªå·±è¡¥ä¸æ³¨éãé忥å£è¯å®¡åèè°å¯¹é½ã"},{icon:"Database",slug:"erd-from-text",title:"设计åºè¡¨ç»ææ¶ç» ER å¾",body:"ç¨å¤§ç½è¯æè¿°æ°æ®æ¨¡å ââ ç¨æ·åæç« ãæç« ä¸é¢æè¯è®ºãè¯è®ºå±äºç¨æ· ââ ç´æ¥çæå¸¦ä¸»é®ãå¤é®åä¸å¯¹å¤å
³ç³»ç ER å¾ãå migration ä¹å对é½è¡¨ç»æ,è¿æ¯æå¿«çæ¹å¼ã"},{icon:"Network",slug:"mindmap-from-text",title:"åè§åå读书ç¬è®°ç¨çæç»´å¯¼å¾",body:"ç»ä¸ä¸ªé¢ç® ââ æèºå¤å
´çèºæ¯æµæ´¾ãå¤æäº§åæ¯å¦è·éçä¿¡å·ãä¸çº¿åçæ£æ¥æ¸
å ââ çæè½æå å±å¼çæç»´å¯¼å¾,è¿è½å¯¼åº OPML ä¸¢è¿ XMindãä¸åªå·¥ç¨å¸å¨ç¨,åä¸è¥¿ç人ãå¦çã产åç»çæ¿å®åæçº²ä¹é¡ºæã"},{icon:"CircleDot",slug:"state-diagram-from-text",title:"ç»çå½å¨æå»ºæ¨¡ç»ç¶æå¾",body:"æç¶ææºç»åºæ¥ ââ 订åç¶æã订é
ççå½å¨æãåå¸çåä¸ªé¶æ®µ ââ æ¯æ¡ç¶æè½¬ç§»ä¸æ æ¸
æ¥æ¯ä»ä¹å¨ä½è§¦åçãæ¯ç¨æåæè¿°ç¶ææ¸
æ¥å¾å¤,èä¸ç»å¸¸è½å¨å代ç ä¹åå°±åç°æ¼æç转移ã"},{icon:"Box",slug:"class-diagram-from-text",title:"é¢å对象设计ç»ç±»å¾",body:"æé¢åæè¿°åæ UML ç±»å¾,带ä¸å±æ§ãæ¹æ³ãç»§æ¿åå
³èå
³ç³»ã代ç è¯å®¡ãéææ¹æ¡ã讲é¢åå¯¹è±¡è®¾è®¡çæ¶å,è½ç䏿ç»ä¸å æ¹æ¡ç工夫ã"},{icon:"Workflow",slug:"gantt-from-text",title:"æé¡¹ç®è¿åº¦ç»çç¹å¾",body:"æè¿°éç¨ç¢åå
åä¾èµ ââ 第 2 å¨è®¾è®¡å®ç¨¿ã第 5 å¨åç«¯å®æã第 8 å¨ä¸çº¿ ââ çæå¸¦ä»»å¡ãå·¥æåå
³é®è·¯å¾ççç¹å¾ãä¸ä¸ªè¿ä»£æå¾å®çäº,ç¨å®æ¯å¼ Jira è½»ã"}]},faq:{heading:"常è§é®é¢",intro:"å
³äºè¿ä¸ªå·¥å
·ç常è§é®é¢ãå¿«éæ¨¡å¼ä¸ç¨æ³¨åå°±è½ç¨;å¯¹è¯æ¨¡å¼è¦ç»å½,å 为å¤è½®å¯¹è¯çä¸ä¸æå¾å䏿¥ã",items:[{q:"VizText ççå
è´¹å?",a:"å
è´¹ãå¿«éæ¨¡å¼ä¸ç§å¾é½è½ç»,ä¸ç¨æ³¨å,导åºçå¾ä¸æ²¡ææ°´å°ãå¯¹è¯æ¨¡å¼ä¹å
è´¹,ä½è¦ç»å½ ââ å¤è½®å¯¹è¯çä¸ä¸æå¾è·è´¦å·ç»å¨ä¸èµ·ãä¸¤ç§æ¨¡å¼åæä¸ä¸ªæ¯æ¥æ¬¡æ°ä¸é,24 å°æ¶åèªå¨éç½®ã"},{q:"æ¯æåªäºå¾è¡¨ç±»å?",a:"ä¸ç§:æµç¨å¾ãæ¶åºå¾ãER å¾ãç±»å¾ãç¶æå¾ãæç»´å¯¼å¾ãçç¹å¾ãåå
ç§ç¨ Mermaid 渲æ;æç»´å¯¼å¾ç¨ markmap 渲æ,è½ç¹èç¹æå ,ä¹è½å¯¼åº OPMLãé»è®¤èªå¨è¯å«ä½ è¦åªä¸ç§,ä¹å¯ä»¥å¨å·¦è¾¹çå¾è¡¨ç±»åéæå¨å®æ»ã"},{q:"è¦å
å¦ Mermaid è¯æ³å?",a:"ä¸ç¨ãä½ å䏿æè±æå°±è¡,Mermaid æºç æ¯ AI å¨èåçæç,ä½ å¯ä»¥ä¸ç¼é½ä¸çãå¦æä½ æ¬æ¥å°±ä¼ Mermaid,å屿¨¡å¼ä¸å¯ä»¥ç´æ¥æ¹æºç ,æ¹å®ç«å»éæ°æ¸²æ ââ æ¶å°¾å¾®è°çæ¶å徿¹ä¾¿ã"},{q:"å¿«éæ¨¡å¼åå¯¹è¯æ¨¡å¼å·®å¨åª?",a:"å¿«éæ¨¡å¼ä¸å¥è¯ç´æ¥åºå¾,æå¿«,æµç¨æ¬æ¥å°±æ¸
æ¥çæ¶åç¨å®ãå¯¹è¯æ¨¡å¼ä¼å
é®ä¸¤ä¸ä¸ªé®é¢,æè§è²ãæ¥éª¤ãå¼å¸¸åæ¯ç¡®è®¤ä¸éåç»,éåä½ èªå·±ä¹è¿æ²¡æ³å
¨çæ
åµã两个 tab éæ¶è½å,åè¿å»é好çå¾è¡¨ç±»åä¸ä¼ä¸¢ã"},{q:"å¯¹è¯æ¨¡å¼è¦é®å 个é®é¢æç»?",a:"ä¸è¬ä¸¤ä¸ä¸ª,æµç¨
2å¤æçæ¶åå¯è½å°åäºä¸ªãç³»ç»éç»æé®æ¬¡æ°è®¾äºé¢ç®,ä¸ä¼æ²¡å®æ²¡äºå°è¿½é®ãä¸ä¸æå¤äºå®å°±åºå¾,åæ¶æèªå·±è¡¥çå
容ååºæ¥,ä½ å¯ä»¥éæ¡å¦æã"},{q:"è½ä¸è½è·³è¿æé®ç´æ¥ç»?",a:"è½ãå¨å¯¹è¯é说ãç´æ¥ç»ãæè
ãå«é®äºã,AI å°±ç¨æå¤´å·²æçä¿¡æ¯åºå¾,å¹¶æå®åçå设æ åºæ¥ãåªæ¡å设ä¸å¯¹,ç¹æ,å¾ç«å»éç»ã"},{q:"AI å äºææ²¡è¯´çä¸è¥¿æä¹å?",a:"å¯¹è¯æ¨¡å¼ç»å®ä¼å¼¹ä¸å¼ 确认å¡,æå®èªå·±æ¨æåºæ¥çä¸è¥¿åæ¸
æ¥ ââ ä½ æ²¡æç䏿¡è¿åç®å¤´ãä½ æ²¡è¯´çä¸ä¸ªè§è²ãç¹ãå æãå°±éç»ä¸ç廿å®;ç¹ãä¿çãå®å°±è¿å
¥è¿å¼ å¾çå®ä¹,å颿¥çæ¹ä¹ä¸ç´å¨ã"},{q:"çæçå¾è½æ¹å?",a:"è½,两æ¡è·¯ã䏿¯å¨å屿¨¡å¼éç´æ¥æ¹ Mermaid æºç ,æ¹ä¸å¤é¢è§å°±è·çåä¸å¤ãäºæ¯ææè¿°å徿´ç»,æè
追å ä¸å¥è¯è®© AI éæ°çæãæç»´å¯¼å¾æèªå·±ç markdown ç¼è¾å¨,åæ ·æ¯åå±ã"},{q:"æä¹å¯¼åº?",a:"ææå¾é½è½å¯¼åº SVG å PNG:SVG æ¯ç¢é,æ¾å¤å¤§é½ä¸ç³;PNG ç´æ¥è´´è¿ PPT åææ¡£ãæç»´å¯¼å¾å¦å¤è¿è½å¯¼åº Markdown å OPML,OPML å¯ä»¥è¢« XMindãObsidian 以å大é¨å大纲工å
·ç´æ¥è¯»è¿å»ãå¯¼åºæé®å¨é¢è§åºçç¶ææ ä¸ã"},{q:"æ¯æä¸æå?",a:"æ¯æãç¨ä¸æå,åºæ¥çå¾ä¸æ ç¾ä¹æ¯ä¸æãè¯è¨æ¯ä»çé¢è¯è¨ä¸è·¯éä¼ å°æ¥å£è¯·æ±ãåä¼ è¿ç»æ¨¡åçæä»¤éç,æä»¥æ¨¡åä¸ä¼ç»çç»çèªå·±ååè±æãä¸è±ææ··çå乿²¡é®é¢ã"},{q:"ææ¬¡æ°éå¶å?",a:"æ,æ IP éå¶æ¯å¤©ççææ¬¡æ° ââ å
è´¹ç»ææäººç¨,æ»å¾æä¸ªä¸éãè¿ä¸ªæ°å¯¹æ£å¸¸ç»å¾æ¥è¯´å¤å®½,ä¸è¬ç¢°ä¸å°ãç触åäº,çé¢ä¼åè¯ä½ è¿æå¤ä¹
éç½®ãéæµèµ°çæ¯ Upstash Redis,ææèç¹ä¸ç计æ°ä¸è´ã"},{q:"æåçä¸è¥¿ä¼è¢«å䏿¥å?",a:"å¿«éæ¨¡å¼çæè¿°åçæç代ç ä¸åè¿æä»¬çæ°æ®åº,ä½ä¼çæçå¨å
åç¼åé,å¹¶ä¸è¦åç»ç¬¬ä¸æ¹å¤§æ¨¡åæè½çæãå¯¹è¯æ¨¡å¼ä¼ææ¶æ¯ãAI çåå¤ãå¾çå®ä¹å代ç åå¨ä½ çè´¦å·ä¸,ä¸ç¶å¤è½®å¯¹è¯æ¥ä¸ä¸ãçº¿ä¸æ¥å¿éä¸è®°å½ä½ åçå
容ãåå¤ä¹
ãæä¹å ,éç§æ¿ç页åäºã"}]}},auth:{signIn:"ç»å½",signOut:"éåºç»å½",signInWithGoogle:"ç¨ Google ç»å½",signInWithGithub:"ç¨ GitHub ç»å½",signInWithEmail:"ç¨é®ç®±ç»å½",signInPageTitle:"ç»å½ VizText",signInPageSubtitle:"æä¸ç§ç»å½æ¹å¼ã",comingSoonBadge:"è¿æ²¡ä¸çº¿",proBadge:"Pro",upgradePrompt:"ç»å½åå¯ä»¥ç¨å¯¹è¯æ¨¡å¼ã",accountMenu:"è´¦æ·"},planMode:{title:"å¾è¡¨ç±»å",subtitle:"å
éç±»å,åæ³æä¹æè¿°ã",typePickerLabel:"å¾è¡¨ç±»å",quickTab:"å¿«é",planTab:"对è¯",planTabProBadge:"éå
",planTabSubtitle:"åçå 个é®é¢,AI æ¥ç»",botIntro:"è¿å¼ 徿æ¥å¸®ä½ çãå
é®ä¸ä¸ª:\n\nä½ è¦æè¿°çæ¯ä»ä¹æµç¨,æè
ä»ä¹ç³»ç»?",inputPlaceholder:"åä¸ä½ çåçâ¦â¦",generateButton:"çæå¾è¡¨",stubSignIn:"ç»å½å使ç¨å¯¹è¯æ¨¡å¼ã",stubUpgrade:"å¯¹è¯æ¨¡å¼éè¦ç»å½ã妿ç»å½äºè¿çå°è¿å¥,èç³»æä»¬ã",alreadyGenerated:"è¿è½®å¯¹è¯å·²ç»åºè¿å¾äºãæ³æ¥çæ¹,å¼ä¸è½®æ°å¯¹è¯ã",thinking:"æèä¸â¦â¦",navEntry:"对è¯",generatedNotice:"â å¾å·²çæ",needMessageFirst:"å
è¯´è¯´ä½ æ³ç»ä»ä¹,åç¹çæã",generateForceMessage:"ç°å¨å°±åºå¾å§ã"},agent:{tabSubtitle:"Agent ââ ä¼åé®ãä¼ç¡®è®¤ãä¼èªæ£",botIntro:"è¯´è¯´ä½ æ³ç»ä»ä¹,缺ä»ä¹ä¿¡æ¯æä¼é®ä½ ã",inputPlaceholder:"ååç,æè
ææ°çè¦æ±â¦â¦",thinking:"æèä¸â¦â¦",thinkingSlow:"è¿å¨ç®,è¿æ¬¡æ¯å¹³å¸¸ä¹
ä¸ç¹â¦â¦",generatingDrawing:"ç»å¾ä¸,ç¨çâ¦â¦",ask:{header:"åé®",other:"å
¶å® ââ èªå·±å",otherPlaceholder:"åå¨è¿éâ¦â¦",submit:"åé",recommend:"æ¨è"},ready:{header:"ä¿¡æ¯å·²é½",formatLabel:"æ ¼å¼"},system:{reset:"对è¯å·²éç½®",expire:"ä¼è¯è¿æäº"},reset:{tooltip:"é置对è¯",confirmTitle:"é置对è¯?",confirmBody:"å½å对è¯ä¼æ¸
空,éæ°å¼ä¸è½®ã",cancel:"åæ¶",confirm:"éç½®"},questionActors:"è¿ä¸ªæµç¨éæåªäºè§è²?(æ¯å¦ç¨æ·ãæå¡ç«¯ãæ°æ®åº)",questionEvents:"ä»ä»¬ä¹é´é½åçä»ä¹?(æ¯ä¸æ¥è°å¯¹è°åäºä»ä¹)",questionSync:"è¿äºè°ç¨æ¯çç»æç,è¿æ¯ååºå»å°±ä¸ç®¡äº?",questionNodes:"æµç¨éæåªå æ¥,åªéè¦å夿?(æ¯å¦ç»å½é¡µãæ ¡éªå¯ç ãè·³é¦é¡µ)",questionEdges:"è¿äºæ¥éª¤æä¹è¿?åªä¸æ¥èµ°å°åªä¸æ¥,ååçæ¡ä»¶æ¯ä»ä¹?",questionDirection:"å¾ä»ä¸å¾ä¸ç»,è¿æ¯ä»å·¦å¾å³ç»?",questionEntities:"æ
2¶ååªäºè¡¨?æ¯å¼ 表çå
³é®å段æ¯ä»ä¹?(æ¯å¦ User:idãnameãemail)",questionRelationships:"è¿äºè¡¨ä¹é´æ¯ä»ä¹å
³ç³»?(æ¯å¦ä¸ä¸ªç¨æ·å¯¹åºå¤ä¸ªè®¢å)",questionStates:"æåªäºç¶æ?(æ¯å¦å¾
æ¯ä»ãå·²æ¯ä»ã已宿)",questionTransitions:"ç¶æä¹é´æä¹è½¬?æ¯æ¬¡è½¬æ¢æ¯ä»ä¹è§¦åç?",questionInitialState:"ä»åªä¸ªç¶æå¼å§?",questionClasses:"æåªäºç±»?æ¯ä¸ªç±»çåæ®µåæ¹æ³æ¯ä»ä¹?(æ¯å¦ Animal:nameãageãeat())",questionRelations:"ç±»ä¹é´æ¯ä»ä¹å
³ç³»?(ç»§æ¿ãå®ç°ãèåãç»åãå
³èãä¾èµ)",questionComponents:"ç³»ç»éæåªäºç»ä»¶?(å端ãå端æå¡ãæ°æ®åºãç¼åãæ¶æ¯éåç)",questionConnections:"è¿äºç»ä»¶ä¹é´æä¹è¿ç,èµ°ä»ä¹åè®®?",questionRootId:"è¿å¼ èå¾çä¸å¿ä¸»é¢æ¯ä»ä¹?",questionTasks:"æåªäºä»»å¡?æ¯ä¸ªæå¨ä»ä¹æ¶å?(æ¯å¦ 设计:2 æ 1 å·èµ·,3 天)",questionDiagramType:"ä½ æ³è¦åªç§å¾?æ¶åºå¾ãæµç¨å¾ãER å¾ãç¶æå¾ãç±»å¾ãæç»´å¯¼å¾ãçç¹å¾ãæ¶æå¾ãä¹å¯ä»¥ç´æ¥ç¹ä¸é¢çæé®éã",questionFallback:"è¿åè½å说ç»ä¸ç¹å?",errorRateLimit:"ä»å¤©ç次æ°ç¨å®äº,çéç½®å忥ã",errorStale:"è¿æ¡ç¡®è®¤å·²ç»è¿æäº,æ¥ç说就è¡ã",errorInternal:"æå¡å¨å¿,è¿ä¸ä¼å¿åè¯ã",generatedNotice:"â å¾å·²çæ",anonNextTurnHint:"ç»å½åæ¥çè ââ 追é®ãè¡¥å
ã确认é½å¨å¯¹è¯æ¨¡å¼é",confirmedNotice:"â 已确认",answerAllLabel:"å©ä¸çé½åæ",answerAllEcho:"å©ä¸çé½åæ",assumptionsTitle:"æå å¤ä½ 没æ,æå
æå¸¸è§åæ³è¡¥ä¸äº",assumptionsHint:"ä¸ç¨ç®¡ä¹è¡,æ¥ç说就æ¯äº",assumptionsRemove:"å æå¾ä¸ç {n} 项",assumptionsKeep:"å°±è¿æ ·",assumptionsRemoveEcho:"å æäºå
¶ä¸ {n} 项",stubSignIn:"ç»å½åä½¿ç¨ Agent 模å¼ã",switchConfirm:{title:"æ¢ä¸ç§å¾?",body:"å½å对è¯ä¼æ¸
空ãç¡®å®è¦æ¢å?",cancel:"åæ¶",confirm:"忢"},badge:{locked:"éå®",auto:"èªå¨",detecting:"è¯å«ä¸â¦"}}};e.s(["zh",0,l],49222);let c=(0,a.createContext)(null);e.s(["SignInModalProvider",0,function({children:e}){let[n,s]=(0,a.useState)(!1),[u,h]=(0,a.useState)(void 0),[m,p]=(0,a.useState)(void 0),g=(0,i.usePathname)(),w=g?.startsWith("/zh")?l.auth:d.auth,f=(0,a.useCallback)(e=>{let t="string"==typeof e?.callbackUrl?e.callbackUrl:void 0,a="string"==typeof e?.source?e.source:void 0;h(t),p(a),(0,o.track)("sign_in_prompt",{source:a??"unknown",has_callback:!!t}),s(!0)},[]),y=(0,a.useCallback)(()=>s(!1),[]);return(0,t.jsxs)(c.Provider,{value:{open:f,close:y,isOpen:n},children:[e,(0,t.jsx)(r,{open:n,onClose:y,auth:w,callbackUrl:u,source:m})]})},"useSignInModal",0,function(){let e=(0,a.useContext)(c);if(!e)throw Error("useSignInModal must be used inside <SignInModalProvider>");return e}],61885)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.