Mermaid
Mermaid is a popular Javascript library creating SVG diagrams from text and code descriptions.
The Mermaid site offers Tutorials and good documentation.
Syntax
```mermaid
%%{init: {
"theme": "forest",
"fontFamily": "ibm plex sans"
}}%%
stateDiagram-v2
[*] --> Still
Still --> [*]
Still --> Moving
Moving --> Still
Moving --> Crash
Crash --> [*]
```
The diagram descriptions are formatted as code blocks with the language identifier mermaid
. The example shows the code for the state diagram below.
Mermaid diagrams can change their color theme and also some attributes can be configured in a JSON preamble enclosed by %%
.
Not all themes or configurable attributes are available with every type of diagram for now. We have to test our diagrams before we publish them. One good way is the official Mermaid live editor.
Layout
The following diagrams are only a few examples to give an impression of the layout. More diagram types exist and their number is growing.
State diagram
%%{init: { "theme": "forest", "fontFamily": "ibm plex sans" } }%% stateDiagram-v2 [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*]
Vexed nymphs go for quick waltz job. All questions asked by five watched experts amaze the judge. Jumping hay dwarves flock quartz box. Schwarzkopf vexed Iraq big-time in July. Bawds jog, flick quartz, vex nymphs.
Just poets wax boldly as kings and queens march over fuzz. Fat hag dwarves quickly zap jinx mob. Few black taxis drive up major roads on quiet hazy nights. Show mangled quartz flip vibe exactly. As quirky joke, chefs won’t pay devil magic zebra tax. “Who am taking the ebonics quiz?”, the prof jovially axed. Jumping hay dwarves flock quartz box.
Jack quietly moved up front and seized the big ball of wax. Jacky can now give six big tips from the old quiz. DJs flock by when MTV ax quiz prog. A very big box sailed up then whizzed quickly from Japan. As quirky joke, chefs won’t pay devil magic zebra tax. Blowzy red vixens fight for a quick jump.
Flow chart
%%{init: { "theme": "base", "fontFamily": "ibm plex sans" } }%% flowchart LR A(Start) -->|Show edges| B[Hard Edge] B -->|Link text| C(Round edge) C -->|Show decision| D{Decision} D -->|One| E[Result one] D -->|Two| F[Result two]
Entity relation
%%{init: { "theme": "base", "fontFamily": "ibm plex sans" } }%% erDiagram CUSTOMER }|..|{ DELIVERY-ADDRESS : has CUSTOMER ||--o{ ORDER : places CUSTOMER ||--o{ INVOICE : "liable for" DELIVERY-ADDRESS ||--o{ ORDER : receives INVOICE ||--|{ ORDER : covers ORDER ||--|{ ORDER-ITEM : includes PRODUCT-CATEGORY ||--|{ PRODUCT : contains PRODUCT ||--o{ ORDER-ITEM : "ordered in"