sirena 0.1.0
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.
- checksums.yaml +7 -0
- data/.github/workflows/build_deploy.yml +59 -0
- data/.github/workflows/links.yml +85 -0
- data/.github/workflows/rake.yml +15 -0
- data/.github/workflows/release.yml +27 -0
- data/.gitignore +68 -0
- data/.rspec +3 -0
- data/.rubocop.yml +14 -0
- data/.rubocop_todo.yml +70 -0
- data/ARCHITECTURE.md +744 -0
- data/Gemfile +12 -0
- data/LICENSE +25 -0
- data/README.adoc +357 -0
- data/Rakefile +11 -0
- data/docs/.gitignore +1 -0
- data/docs/Gemfile +13 -0
- data/docs/_config.yml +182 -0
- data/docs/_diagram_types/architecture-diagram.adoc +314 -0
- data/docs/_diagram_types/block-diagram.adoc +345 -0
- data/docs/_diagram_types/c4-diagram.adoc +559 -0
- data/docs/_diagram_types/class-diagram.adoc +816 -0
- data/docs/_diagram_types/er-diagram.adoc +719 -0
- data/docs/_diagram_types/error-diagram.adoc +114 -0
- data/docs/_diagram_types/examples/flowchart-examples.adoc +29 -0
- data/docs/_diagram_types/flowchart.adoc +488 -0
- data/docs/_diagram_types/gantt-chart.adoc +502 -0
- data/docs/_diagram_types/git-graph.adoc +600 -0
- data/docs/_diagram_types/index.adoc +192 -0
- data/docs/_diagram_types/info-diagram.adoc +103 -0
- data/docs/_diagram_types/kanban-diagram.adoc +262 -0
- data/docs/_diagram_types/mindmap.adoc +603 -0
- data/docs/_diagram_types/packet-diagram.adoc +378 -0
- data/docs/_diagram_types/pie-chart.adoc +335 -0
- data/docs/_diagram_types/quadrant-chart.adoc +406 -0
- data/docs/_diagram_types/radar-chart.adoc +528 -0
- data/docs/_diagram_types/requirement-diagram.adoc +416 -0
- data/docs/_diagram_types/sankey-diagram.adoc +357 -0
- data/docs/_diagram_types/sequence-diagram.adoc +664 -0
- data/docs/_diagram_types/state-diagram.adoc +658 -0
- data/docs/_diagram_types/timeline.adoc +352 -0
- data/docs/_diagram_types/treemap-diagram.adoc +462 -0
- data/docs/_diagram_types/user-journey.adoc +602 -0
- data/docs/_features/index.adoc +129 -0
- data/docs/_guides/cli-reference.adoc +203 -0
- data/docs/_guides/index.adoc +56 -0
- data/docs/_guides/installation.adoc +100 -0
- data/docs/_guides/quick-start.adoc +132 -0
- data/docs/_pages/comparison.adoc +441 -0
- data/docs/_pages/compatibility.adoc +300 -0
- data/docs/_pages/index.adoc +39 -0
- data/docs/_references/index.adoc +103 -0
- data/docs/_tutorials/index.adoc +57 -0
- data/docs/index.adoc +166 -0
- data/docs/lychee.toml +54 -0
- data/examples/.gitignore +10 -0
- data/examples/README.adoc +196 -0
- data/examples/README.md +64 -0
- data/examples/architecture/01-basic-services.mmd +9 -0
- data/examples/architecture/01-basic-services.svg +37 -0
- data/examples/architecture/02-service-groups.mmd +16 -0
- data/examples/architecture/02-service-groups.svg +55 -0
- data/examples/architecture/README.adoc +79 -0
- data/examples/block/01-basic-blocks.mmd +13 -0
- data/examples/block/01-basic-blocks.svg +44 -0
- data/examples/block/02-block-shapes.mmd +13 -0
- data/examples/block/02-block-shapes.svg +47 -0
- data/examples/block/README.adoc +85 -0
- data/examples/c4/01-context-diagram.mmd +10 -0
- data/examples/c4/01-context-diagram.svg +45 -0
- data/examples/c4/02-container-diagram.mmd +24 -0
- data/examples/c4/02-container-diagram.svg +105 -0
- data/examples/c4/README.adoc +92 -0
- data/examples/class_diagram/01-basic-classes.mmd +61 -0
- data/examples/class_diagram/01-basic-classes.svg +117 -0
- data/examples/class_diagram/02-relationships.mmd +61 -0
- data/examples/class_diagram/02-relationships.svg +129 -0
- data/examples/class_diagram/README.adoc +93 -0
- data/examples/er_diagram/01-basic-entities.mmd +64 -0
- data/examples/er_diagram/01-basic-entities.svg +5 -0
- data/examples/er_diagram/02-cardinality.mmd +57 -0
- data/examples/er_diagram/02-cardinality.svg +125 -0
- data/examples/er_diagram/README.adoc +88 -0
- data/examples/error/01-basic-error.mmd +1 -0
- data/examples/error/01-basic-error.svg +13 -0
- data/examples/error/02-error-display.mmd +1 -0
- data/examples/error/02-error-display.svg +13 -0
- data/examples/error/README.adoc +71 -0
- data/examples/error_message_example.svg +13 -0
- data/examples/flowchart/00-original.mmd +13 -0
- data/examples/flowchart/00-original.svg +5 -0
- data/examples/flowchart/01-basic-flow.mmd +7 -0
- data/examples/flowchart/01-basic-flow.svg +52 -0
- data/examples/flowchart/01-basic-flow.yml +13 -0
- data/examples/flowchart/02*.svg +87 -0
- data/examples/flowchart/02-node-shapes.mmd +9 -0
- data/examples/flowchart/02-node-shapes.svg +33 -0
- data/examples/flowchart/03-edge-types.mmd +7 -0
- data/examples/flowchart/03-edge-types.svg +53 -0
- data/examples/flowchart/04-subgraphs.mmd +9 -0
- data/examples/flowchart/04-subgraphs.svg +33 -0
- data/examples/flowchart/05-styling.mmd +9 -0
- data/examples/flowchart/05-styling.svg +33 -0
- data/examples/flowchart/06-complex-flow.mmd +8 -0
- data/examples/flowchart/06-complex-flow.svg +59 -0
- data/examples/flowchart/README.adoc +167 -0
- data/examples/gantt/01-simple-timeline.* +14 -0
- data/examples/gantt/01-simple-timeline.mmd +6 -0
- data/examples/gantt/01-simple-timeline.svg +26 -0
- data/examples/gantt/02-task-dependencies.mmd +6 -0
- data/examples/gantt/02-task-dependencies.svg +26 -0
- data/examples/gantt/README.adoc +86 -0
- data/examples/git_graph/01-linear-history.mmd +12 -0
- data/examples/git_graph/01-linear-history.svg +26 -0
- data/examples/git_graph/02-branching.mmd +12 -0
- data/examples/git_graph/02-branching.svg +26 -0
- data/examples/git_graph/README.adoc +73 -0
- data/examples/info/02-showinfo.mmd +1 -0
- data/examples/info/02-showinfo.svg +10 -0
- data/examples/info/README.adoc +58 -0
- data/examples/info_showinfo_example.svg +10 -0
- data/examples/kanban/01-simple-board.mmd +8 -0
- data/examples/kanban/01-simple-board.svg +43 -0
- data/examples/kanban/02-workflow.mmd +8 -0
- data/examples/kanban/02-workflow.svg +43 -0
- data/examples/kanban/README.adoc +79 -0
- data/examples/mindmap/01-simple-tree.mmd +19 -0
- data/examples/mindmap/01-simple-tree.svg +61 -0
- data/examples/mindmap/02-knowledge-map.mmd +19 -0
- data/examples/mindmap/02-knowledge-map.svg +61 -0
- data/examples/mindmap/README.adoc +77 -0
- data/examples/packet/01-basic-packet.* +17 -0
- data/examples/packet/01-basic-packet.mmd +4 -0
- data/examples/packet/01-basic-packet.svg +82 -0
- data/examples/packet/README.adoc +58 -0
- data/examples/pie/01-simple-chart.mmd +5 -0
- data/examples/pie/01-simple-chart.svg +17 -0
- data/examples/pie/02-labeled-slices.mmd +6 -0
- data/examples/pie/02-labeled-slices.svg +19 -0
- data/examples/pie/README.adoc +75 -0
- data/examples/quadrant/01-basic-quadrant.mmd +13 -0
- data/examples/quadrant/01-basic-quadrant.svg +33 -0
- data/examples/quadrant/02-positioned-items.mmd +14 -0
- data/examples/quadrant/02-positioned-items.svg +35 -0
- data/examples/quadrant/README.adoc +84 -0
- data/examples/radar/01-simple-radar.* +5 -0
- data/examples/radar/01-simple-radar.mmd +3 -0
- data/examples/radar/01-simple-radar.svg +25 -0
- data/examples/radar/02-multiple-curves.mmd +4 -0
- data/examples/radar/02-multiple-curves.svg +43 -0
- data/examples/radar/README.adoc +75 -0
- data/examples/requirement/01-basic-requirements.mmd +23 -0
- data/examples/requirement/01-basic-requirements.svg +49 -0
- data/examples/requirement/02-risk-levels.mmd +23 -0
- data/examples/requirement/02-risk-levels.svg +49 -0
- data/examples/requirement/README.adoc +85 -0
- data/examples/sankey/01-simple-flow.mmd +7 -0
- data/examples/sankey/01-simple-flow.svg +34 -0
- data/examples/sankey/02-multi-stage.mmd +11 -0
- data/examples/sankey/02-multi-stage.svg +44 -0
- data/examples/sankey/README.adoc +74 -0
- data/examples/sequence/01-basic-sequence.mmd +27 -0
- data/examples/sequence/01-basic-sequence.svg +5 -0
- data/examples/sequence/02-activations.mmd +17 -0
- data/examples/sequence/02-activations.svg +78 -0
- data/examples/sequence/README.adoc +86 -0
- data/examples/state_diagram/01-simple-states.mmd +29 -0
- data/examples/state_diagram/01-simple-states.svg +5 -0
- data/examples/state_diagram/02-composite.mmd +19 -0
- data/examples/state_diagram/02-composite.svg +81 -0
- data/examples/state_diagram/README.adoc +90 -0
- data/examples/timeline/01-simple-timeline.mmd +11 -0
- data/examples/timeline/01-simple-timeline.svg +36 -0
- data/examples/timeline/02-periods.mmd +15 -0
- data/examples/timeline/02-periods.svg +47 -0
- data/examples/timeline/README.adoc +78 -0
- data/examples/treemap/01-basic-treemap.mmd +12 -0
- data/examples/treemap/01-basic-treemap.svg +59 -0
- data/examples/treemap/README.adoc +59 -0
- data/examples/user_journey/01-simple-journey.mmd +23 -0
- data/examples/user_journey/01-simple-journey.svg +5 -0
- data/examples/user_journey/02-multi-actor.mmd +18 -0
- data/examples/user_journey/02-multi-actor.svg +129 -0
- data/examples/user_journey/README.adoc +81 -0
- data/examples/xychart/01-line-chart.mmd +5 -0
- data/examples/xychart/01-line-chart.svg +43 -0
- data/examples/xychart/02-bar-chart.mmd +7 -0
- data/examples/xychart/02-bar-chart.svg +48 -0
- data/examples/xychart/README.adoc +80 -0
- data/exe/sirena +7 -0
- data/lib/sirena/cli.rb +138 -0
- data/lib/sirena/commands/batch.rb +117 -0
- data/lib/sirena/commands/render.rb +80 -0
- data/lib/sirena/commands/types.rb +29 -0
- data/lib/sirena/commands/version.rb +24 -0
- data/lib/sirena/diagram/architecture.rb +46 -0
- data/lib/sirena/diagram/base.rb +61 -0
- data/lib/sirena/diagram/block.rb +81 -0
- data/lib/sirena/diagram/c4.rb +328 -0
- data/lib/sirena/diagram/class_diagram.rb +385 -0
- data/lib/sirena/diagram/er_diagram.rb +238 -0
- data/lib/sirena/diagram/error.rb +38 -0
- data/lib/sirena/diagram/flowchart.rb +160 -0
- data/lib/sirena/diagram/gantt.rb +71 -0
- data/lib/sirena/diagram/git_graph.rb +36 -0
- data/lib/sirena/diagram/info.rb +38 -0
- data/lib/sirena/diagram/kanban.rb +178 -0
- data/lib/sirena/diagram/mindmap.rb +54 -0
- data/lib/sirena/diagram/packet.rb +79 -0
- data/lib/sirena/diagram/pie.rb +115 -0
- data/lib/sirena/diagram/quadrant.rb +138 -0
- data/lib/sirena/diagram/radar.rb +52 -0
- data/lib/sirena/diagram/requirement.rb +133 -0
- data/lib/sirena/diagram/sankey.rb +217 -0
- data/lib/sirena/diagram/sequence.rb +242 -0
- data/lib/sirena/diagram/state_diagram.rb +237 -0
- data/lib/sirena/diagram/timeline.rb +171 -0
- data/lib/sirena/diagram/treemap.rb +84 -0
- data/lib/sirena/diagram/user_journey.rb +149 -0
- data/lib/sirena/diagram/xy_chart.rb +76 -0
- data/lib/sirena/diagram.rb +8 -0
- data/lib/sirena/diagram_registry.rb +101 -0
- data/lib/sirena/engine.rb +292 -0
- data/lib/sirena/parser/architecture.rb +41 -0
- data/lib/sirena/parser/base.rb +41 -0
- data/lib/sirena/parser/block.rb +72 -0
- data/lib/sirena/parser/c4.rb +53 -0
- data/lib/sirena/parser/class_diagram.rb +63 -0
- data/lib/sirena/parser/er_diagram.rb +40 -0
- data/lib/sirena/parser/error.rb +49 -0
- data/lib/sirena/parser/flowchart.rb +71 -0
- data/lib/sirena/parser/gantt.rb +60 -0
- data/lib/sirena/parser/git_graph.rb +95 -0
- data/lib/sirena/parser/grammars/architecture.rb +145 -0
- data/lib/sirena/parser/grammars/block.rb +190 -0
- data/lib/sirena/parser/grammars/c4.rb +226 -0
- data/lib/sirena/parser/grammars/class_diagram.rb +284 -0
- data/lib/sirena/parser/grammars/common.rb +84 -0
- data/lib/sirena/parser/grammars/er_diagram.rb +114 -0
- data/lib/sirena/parser/grammars/error.rb +40 -0
- data/lib/sirena/parser/grammars/flowchart.rb +298 -0
- data/lib/sirena/parser/grammars/gantt.rb +252 -0
- data/lib/sirena/parser/grammars/git_graph.rb +167 -0
- data/lib/sirena/parser/grammars/info.rb +58 -0
- data/lib/sirena/parser/grammars/kanban.rb +83 -0
- data/lib/sirena/parser/grammars/mindmap.rb +115 -0
- data/lib/sirena/parser/grammars/packet.rb +73 -0
- data/lib/sirena/parser/grammars/pie.rb +128 -0
- data/lib/sirena/parser/grammars/quadrant.rb +199 -0
- data/lib/sirena/parser/grammars/radar.rb +150 -0
- data/lib/sirena/parser/grammars/requirement.rb +188 -0
- data/lib/sirena/parser/grammars/sankey.rb +104 -0
- data/lib/sirena/parser/grammars/sequence.rb +247 -0
- data/lib/sirena/parser/grammars/state_diagram.rb +172 -0
- data/lib/sirena/parser/grammars/timeline.rb +142 -0
- data/lib/sirena/parser/grammars/treemap.rb +120 -0
- data/lib/sirena/parser/grammars/xy_chart.rb +120 -0
- data/lib/sirena/parser/info.rb +49 -0
- data/lib/sirena/parser/kanban.rb +97 -0
- data/lib/sirena/parser/mindmap.rb +106 -0
- data/lib/sirena/parser/packet.rb +76 -0
- data/lib/sirena/parser/pie.rb +49 -0
- data/lib/sirena/parser/quadrant.rb +57 -0
- data/lib/sirena/parser/radar.rb +104 -0
- data/lib/sirena/parser/requirement.rb +70 -0
- data/lib/sirena/parser/sankey.rb +64 -0
- data/lib/sirena/parser/sequence.rb +51 -0
- data/lib/sirena/parser/state_diagram.rb +69 -0
- data/lib/sirena/parser/timeline.rb +57 -0
- data/lib/sirena/parser/transforms/architecture.rb +97 -0
- data/lib/sirena/parser/transforms/block.rb +254 -0
- data/lib/sirena/parser/transforms/c4.rb +347 -0
- data/lib/sirena/parser/transforms/class_diagram.rb +352 -0
- data/lib/sirena/parser/transforms/er_diagram.rb +169 -0
- data/lib/sirena/parser/transforms/error.rb +58 -0
- data/lib/sirena/parser/transforms/flowchart.rb +293 -0
- data/lib/sirena/parser/transforms/gantt.rb +215 -0
- data/lib/sirena/parser/transforms/git_graph.rb +160 -0
- data/lib/sirena/parser/transforms/info.rb +58 -0
- data/lib/sirena/parser/transforms/kanban.rb +176 -0
- data/lib/sirena/parser/transforms/mindmap.rb +227 -0
- data/lib/sirena/parser/transforms/packet.rb +63 -0
- data/lib/sirena/parser/transforms/pie.rb +143 -0
- data/lib/sirena/parser/transforms/quadrant.rb +177 -0
- data/lib/sirena/parser/transforms/radar.rb +126 -0
- data/lib/sirena/parser/transforms/requirement.rb +272 -0
- data/lib/sirena/parser/transforms/sankey.rb +122 -0
- data/lib/sirena/parser/transforms/sequence.rb +342 -0
- data/lib/sirena/parser/transforms/state_diagram.rb +292 -0
- data/lib/sirena/parser/transforms/timeline.rb +177 -0
- data/lib/sirena/parser/transforms/treemap.rb +81 -0
- data/lib/sirena/parser/transforms/xy_chart.rb +132 -0
- data/lib/sirena/parser/treemap.rb +98 -0
- data/lib/sirena/parser/user_journey.rb +120 -0
- data/lib/sirena/parser/xy_chart.rb +114 -0
- data/lib/sirena/parser.rb +8 -0
- data/lib/sirena/renderer/architecture.rb +251 -0
- data/lib/sirena/renderer/base.rb +251 -0
- data/lib/sirena/renderer/block.rb +286 -0
- data/lib/sirena/renderer/c4.rb +490 -0
- data/lib/sirena/renderer/class_diagram.rb +499 -0
- data/lib/sirena/renderer/er_diagram.rb +417 -0
- data/lib/sirena/renderer/error.rb +131 -0
- data/lib/sirena/renderer/flowchart.rb +301 -0
- data/lib/sirena/renderer/gantt.rb +331 -0
- data/lib/sirena/renderer/git_graph.rb +368 -0
- data/lib/sirena/renderer/info.rb +93 -0
- data/lib/sirena/renderer/kanban.rb +295 -0
- data/lib/sirena/renderer/mindmap.rb +396 -0
- data/lib/sirena/renderer/packet.rb +239 -0
- data/lib/sirena/renderer/pie.rb +235 -0
- data/lib/sirena/renderer/quadrant.rb +292 -0
- data/lib/sirena/renderer/radar.rb +323 -0
- data/lib/sirena/renderer/requirement.rb +371 -0
- data/lib/sirena/renderer/sankey.rb +255 -0
- data/lib/sirena/renderer/sequence.rb +424 -0
- data/lib/sirena/renderer/state_diagram.rb +328 -0
- data/lib/sirena/renderer/timeline.rb +304 -0
- data/lib/sirena/renderer/treemap.rb +152 -0
- data/lib/sirena/renderer/user_journey.rb +331 -0
- data/lib/sirena/renderer/xy_chart.rb +452 -0
- data/lib/sirena/renderer.rb +8 -0
- data/lib/sirena/svg/circle.rb +41 -0
- data/lib/sirena/svg/document.rb +103 -0
- data/lib/sirena/svg/element.rb +65 -0
- data/lib/sirena/svg/ellipse.rb +33 -0
- data/lib/sirena/svg/group.rb +71 -0
- data/lib/sirena/svg/line.rb +49 -0
- data/lib/sirena/svg/path.rb +76 -0
- data/lib/sirena/svg/polygon.rb +43 -0
- data/lib/sirena/svg/polyline.rb +35 -0
- data/lib/sirena/svg/rect.rb +57 -0
- data/lib/sirena/svg/style.rb +44 -0
- data/lib/sirena/svg/text.rb +72 -0
- data/lib/sirena/svg.rb +19 -0
- data/lib/sirena/text_measurement.rb +71 -0
- data/lib/sirena/theme/builtin/dark.yml +70 -0
- data/lib/sirena/theme/builtin/default.yml +80 -0
- data/lib/sirena/theme/builtin/high_contrast.yml +70 -0
- data/lib/sirena/theme/builtin/light.yml +70 -0
- data/lib/sirena/theme/color_palette.rb +48 -0
- data/lib/sirena/theme/effect_styles.rb +28 -0
- data/lib/sirena/theme/registry.rb +41 -0
- data/lib/sirena/theme/shape_styles.rb +28 -0
- data/lib/sirena/theme/spacing_config.rb +24 -0
- data/lib/sirena/theme/typography.rb +30 -0
- data/lib/sirena/theme.rb +69 -0
- data/lib/sirena/transform/architecture.rb +273 -0
- data/lib/sirena/transform/base.rb +199 -0
- data/lib/sirena/transform/block.rb +215 -0
- data/lib/sirena/transform/c4.rb +288 -0
- data/lib/sirena/transform/class_diagram.rb +296 -0
- data/lib/sirena/transform/er_diagram.rb +204 -0
- data/lib/sirena/transform/error.rb +39 -0
- data/lib/sirena/transform/flowchart.rb +161 -0
- data/lib/sirena/transform/gantt.rb +253 -0
- data/lib/sirena/transform/git_graph.rb +283 -0
- data/lib/sirena/transform/info.rb +39 -0
- data/lib/sirena/transform/kanban.rb +180 -0
- data/lib/sirena/transform/mindmap.rb +251 -0
- data/lib/sirena/transform/packet.rb +185 -0
- data/lib/sirena/transform/pie.rb +62 -0
- data/lib/sirena/transform/quadrant.rb +167 -0
- data/lib/sirena/transform/radar.rb +227 -0
- data/lib/sirena/transform/requirement.rb +233 -0
- data/lib/sirena/transform/sankey.rb +212 -0
- data/lib/sirena/transform/sequence.rb +143 -0
- data/lib/sirena/transform/state_diagram.rb +228 -0
- data/lib/sirena/transform/timeline.rb +139 -0
- data/lib/sirena/transform/treemap.rb +120 -0
- data/lib/sirena/transform/user_journey.rb +207 -0
- data/lib/sirena/transform/xy_chart.rb +273 -0
- data/lib/sirena/transform.rb +8 -0
- data/lib/sirena/version.rb +5 -0
- data/lib/sirena.rb +328 -0
- data/lib/tasks/benchmark.rake +532 -0
- data/lib/tasks/examples.rake +468 -0
- data/lib/tasks/generate_mermaid_fixtures.rake +363 -0
- data/lib/tasks/mermaid_fixtures.rake +46 -0
- data/scripts/extract_mermaid_tests.rb +493 -0
- data/scripts/rename_to_sirena.rb +73 -0
- data/sirena.gemspec +47 -0
- metadata +529 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
= Error Diagram
|
|
2
|
+
:toc:
|
|
3
|
+
:toclevels: 3
|
|
4
|
+
|
|
5
|
+
== Purpose
|
|
6
|
+
|
|
7
|
+
Error diagrams display error messages or error states in Mermaid syntax. They are utility diagrams used to show parsing errors, syntax errors, or system failure states.
|
|
8
|
+
|
|
9
|
+
== Syntax
|
|
10
|
+
|
|
11
|
+
=== Basic error diagram
|
|
12
|
+
|
|
13
|
+
The simplest form displays just an error indicator:
|
|
14
|
+
|
|
15
|
+
[source,mermaid]
|
|
16
|
+
----
|
|
17
|
+
error
|
|
18
|
+
----
|
|
19
|
+
|
|
20
|
+
=== Error with message
|
|
21
|
+
|
|
22
|
+
You can include an error message after the keyword:
|
|
23
|
+
|
|
24
|
+
[source,mermaid]
|
|
25
|
+
----
|
|
26
|
+
Error Diagrams
|
|
27
|
+
----
|
|
28
|
+
|
|
29
|
+
The keyword can be lowercase or capitalized:
|
|
30
|
+
|
|
31
|
+
[source,mermaid]
|
|
32
|
+
----
|
|
33
|
+
error
|
|
34
|
+
----
|
|
35
|
+
|
|
36
|
+
[source,mermaid]
|
|
37
|
+
----
|
|
38
|
+
Error
|
|
39
|
+
----
|
|
40
|
+
|
|
41
|
+
== Features
|
|
42
|
+
|
|
43
|
+
=== Visual representation
|
|
44
|
+
|
|
45
|
+
Error diagrams render as:
|
|
46
|
+
|
|
47
|
+
* A centered box with error styling (light red background, red border)
|
|
48
|
+
* An error icon (red circle with exclamation mark)
|
|
49
|
+
* Error message text next to the icon
|
|
50
|
+
* Visual design emphasizing the error state
|
|
51
|
+
|
|
52
|
+
=== Theme integration
|
|
53
|
+
|
|
54
|
+
Error diagrams use fixed error colors but integrate with theme typography:
|
|
55
|
+
|
|
56
|
+
* Background: Light red (#FFEBEE)
|
|
57
|
+
* Border: Red (#D32F2F)
|
|
58
|
+
* Icon: Red circle with white exclamation mark
|
|
59
|
+
* Text: Dark red (#C62828)
|
|
60
|
+
* Typography settings for font family and size from theme
|
|
61
|
+
|
|
62
|
+
== Implementation details
|
|
63
|
+
|
|
64
|
+
=== Parser
|
|
65
|
+
|
|
66
|
+
The error diagram parser (`Sirena::Parser::ErrorParser`) uses Parslet grammar to handle:
|
|
67
|
+
|
|
68
|
+
* Basic `error` or `Error` keyword
|
|
69
|
+
* Optional error message text after the keyword
|
|
70
|
+
|
|
71
|
+
=== Model
|
|
72
|
+
|
|
73
|
+
The error diagram model (`Sirena::Diagram::Error`) contains:
|
|
74
|
+
|
|
75
|
+
* `message`: Optional error message string
|
|
76
|
+
|
|
77
|
+
=== Renderer
|
|
78
|
+
|
|
79
|
+
The error renderer (`Sirena::Renderer::ErrorRenderer`) creates:
|
|
80
|
+
|
|
81
|
+
* A rounded rectangle box (400x120 pixels)
|
|
82
|
+
* An error icon (red circle with exclamation mark) on the left
|
|
83
|
+
* Error message text on the right
|
|
84
|
+
* Fixed error color scheme for immediate recognition
|
|
85
|
+
|
|
86
|
+
== Examples
|
|
87
|
+
|
|
88
|
+
=== Simple error
|
|
89
|
+
|
|
90
|
+
[source,mermaid]
|
|
91
|
+
----
|
|
92
|
+
error
|
|
93
|
+
----
|
|
94
|
+
|
|
95
|
+
Renders "Error" in an error box with icon.
|
|
96
|
+
|
|
97
|
+
=== Error with message
|
|
98
|
+
|
|
99
|
+
[source,mermaid]
|
|
100
|
+
----
|
|
101
|
+
Error Diagrams
|
|
102
|
+
----
|
|
103
|
+
|
|
104
|
+
Renders "Diagrams" as the error message.
|
|
105
|
+
|
|
106
|
+
== Use cases
|
|
107
|
+
|
|
108
|
+
Error diagrams are useful for:
|
|
109
|
+
|
|
110
|
+
* Displaying parsing or syntax errors
|
|
111
|
+
* Showing system failure states
|
|
112
|
+
* Indicating error conditions in workflows
|
|
113
|
+
* Testing error handling in diagram rendering
|
|
114
|
+
* Documentation of error states
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Auto-generated examples for flowchart
|
|
2
|
+
// Generated: 2025-10-29 15:06:35
|
|
3
|
+
|
|
4
|
+
==== Example 1: Basic Flowchart
|
|
5
|
+
|
|
6
|
+
.Simple flowchart showing start, process, decision, and end nodes with conditional branching
|
|
7
|
+
[NOTE]
|
|
8
|
+
====
|
|
9
|
+
Complexity: Basic
|
|
10
|
+
+
|
|
11
|
+
Use Cases: Getting started with flowcharts, Simple process documentation, Decision tree visualization
|
|
12
|
+
====
|
|
13
|
+
|
|
14
|
+
.Source Code
|
|
15
|
+
[source,mermaid]
|
|
16
|
+
----
|
|
17
|
+
flowchart TD
|
|
18
|
+
Start([Start]) --> Process[Process Data]
|
|
19
|
+
Process --> Decision{Valid?}
|
|
20
|
+
Decision -->|Yes| Success[Success]
|
|
21
|
+
Decision -->|No| Error[Error]
|
|
22
|
+
Success --> End([End])
|
|
23
|
+
Error --> End
|
|
24
|
+
----
|
|
25
|
+
|
|
26
|
+
.Rendered Output
|
|
27
|
+
image::../../assets/examples/flowchart/01-basic-flow.svg[Basic Flowchart,600]
|
|
28
|
+
|
|
29
|
+
'''
|
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: default
|
|
3
|
+
title: Flowchart Diagrams
|
|
4
|
+
parent: Diagram Types
|
|
5
|
+
nav_order: 7
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
== Flowchart diagrams
|
|
9
|
+
|
|
10
|
+
=== Overview
|
|
11
|
+
|
|
12
|
+
Flowchart diagrams in Sirena represent directed graphs showing process flows, decision trees, and relationships between nodes. Flowcharts are one of the most versatile diagram types, supporting various node shapes, edge types, and layout directions.
|
|
13
|
+
|
|
14
|
+
Flowcharts are useful for:
|
|
15
|
+
|
|
16
|
+
* Documenting business processes and workflows
|
|
17
|
+
* Visualizing algorithms and decision logic
|
|
18
|
+
* Creating system architecture diagrams
|
|
19
|
+
* Showing data flow between components
|
|
20
|
+
* Mapping user interaction flows
|
|
21
|
+
|
|
22
|
+
=== Syntax specification
|
|
23
|
+
|
|
24
|
+
==== Diagram declaration
|
|
25
|
+
|
|
26
|
+
Flowcharts can be declared using either `graph` or `flowchart` keywords:
|
|
27
|
+
|
|
28
|
+
[source,mermaid]
|
|
29
|
+
----
|
|
30
|
+
graph <direction>
|
|
31
|
+
<diagram-content>
|
|
32
|
+
----
|
|
33
|
+
|
|
34
|
+
Or:
|
|
35
|
+
|
|
36
|
+
[source,mermaid]
|
|
37
|
+
----
|
|
38
|
+
flowchart <direction>
|
|
39
|
+
<diagram-content>
|
|
40
|
+
----
|
|
41
|
+
|
|
42
|
+
Where `<direction>` specifies the layout direction:
|
|
43
|
+
|
|
44
|
+
* `TD` or `TB` - Top to bottom (default)
|
|
45
|
+
* `BT` - Bottom to top
|
|
46
|
+
* `LR` - Left to right
|
|
47
|
+
* `RL` - Right to left
|
|
48
|
+
|
|
49
|
+
==== Node definitions
|
|
50
|
+
|
|
51
|
+
Nodes can be defined with various shapes using different bracket styles:
|
|
52
|
+
|
|
53
|
+
[cols="2,2,3"]
|
|
54
|
+
|===
|
|
55
|
+
|Syntax |Shape |Description
|
|
56
|
+
|
|
57
|
+
|`id[text]`
|
|
58
|
+
|Rectangle
|
|
59
|
+
|Standard rectangular node
|
|
60
|
+
|
|
61
|
+
|`id(text)`
|
|
62
|
+
|Rounded rectangle
|
|
63
|
+
|Rectangle with rounded corners
|
|
64
|
+
|
|
65
|
+
|`id([text])`
|
|
66
|
+
|Stadium
|
|
67
|
+
|Pill-shaped node
|
|
68
|
+
|
|
69
|
+
|`id[[text]]`
|
|
70
|
+
|Subroutine
|
|
71
|
+
|Rectangle with double vertical lines
|
|
72
|
+
|
|
73
|
+
|`id[(text)]`
|
|
74
|
+
|Cylindrical
|
|
75
|
+
|Database or storage shape
|
|
76
|
+
|
|
77
|
+
|`id((text))`
|
|
78
|
+
|Circle
|
|
79
|
+
|Circular node
|
|
80
|
+
|
|
81
|
+
|`id>text]`
|
|
82
|
+
|Asymmetric
|
|
83
|
+
|Flag or banner shape
|
|
84
|
+
|
|
85
|
+
|`id{text}`
|
|
86
|
+
|Diamond
|
|
87
|
+
|Decision or conditional node
|
|
88
|
+
|
|
89
|
+
|`id{{text}}`
|
|
90
|
+
|Hexagon
|
|
91
|
+
|Process or preparation node
|
|
92
|
+
|
|
93
|
+
|`id[/text/]`
|
|
94
|
+
|Parallelogram
|
|
95
|
+
|Input/output operation
|
|
96
|
+
|
|
97
|
+
|`id[\text\]`
|
|
98
|
+
|Parallelogram (alt)
|
|
99
|
+
|Alternative input/output syntax
|
|
100
|
+
|
|
101
|
+
|`id[/text\]`
|
|
102
|
+
|Trapezoid
|
|
103
|
+
|Manual operation
|
|
104
|
+
|
|
105
|
+
|`id[\text/]`
|
|
106
|
+
|Trapezoid (inverted)
|
|
107
|
+
|Inverted manual operation
|
|
108
|
+
|===
|
|
109
|
+
|
|
110
|
+
==== Edge definitions
|
|
111
|
+
|
|
112
|
+
Edges connect nodes and can have different styles:
|
|
113
|
+
|
|
114
|
+
[cols="2,3,3"]
|
|
115
|
+
|===
|
|
116
|
+
|Syntax |Style |Description
|
|
117
|
+
|
|
118
|
+
|`A --> B`
|
|
119
|
+
|Arrow
|
|
120
|
+
|Solid line with arrowhead
|
|
121
|
+
|
|
122
|
+
|`A --- B`
|
|
123
|
+
|Open link
|
|
124
|
+
|Solid line without arrowhead
|
|
125
|
+
|
|
126
|
+
|`A -.-> B`
|
|
127
|
+
|Dotted arrow
|
|
128
|
+
|Dotted line with arrowhead
|
|
129
|
+
|
|
130
|
+
|`A -.- B`
|
|
131
|
+
|Dotted link
|
|
132
|
+
|Dotted line without arrowhead
|
|
133
|
+
|
|
134
|
+
|`A ==> B`
|
|
135
|
+
|Thick arrow
|
|
136
|
+
|Thick solid line with arrowhead
|
|
137
|
+
|
|
138
|
+
|`A === B`
|
|
139
|
+
|Thick link
|
|
140
|
+
|Thick solid line without arrowhead
|
|
141
|
+
|
|
142
|
+
|`A --o B`
|
|
143
|
+
|Circle edge
|
|
144
|
+
|Line ending with a circle
|
|
145
|
+
|
|
146
|
+
|`A --x B`
|
|
147
|
+
|Cross edge
|
|
148
|
+
|Line ending with a cross
|
|
149
|
+
|
|
150
|
+
|`A <--> B`
|
|
151
|
+
|Bidirectional arrow
|
|
152
|
+
|Arrow pointing both ways
|
|
153
|
+
|
|
154
|
+
|`A o--o B`
|
|
155
|
+
|Bidirectional circle
|
|
156
|
+
|Circles on both ends
|
|
157
|
+
|
|
158
|
+
|`A x--x B`
|
|
159
|
+
|Bidirectional cross
|
|
160
|
+
|Crosses on both ends
|
|
161
|
+
|===
|
|
162
|
+
|
|
163
|
+
==== Edge labels
|
|
164
|
+
|
|
165
|
+
Edges can have labels using the pipe `|` character:
|
|
166
|
+
|
|
167
|
+
[source,mermaid]
|
|
168
|
+
----
|
|
169
|
+
A -->|label text| B
|
|
170
|
+
A -- label text --> B
|
|
171
|
+
----
|
|
172
|
+
|
|
173
|
+
Both syntaxes are equivalent.
|
|
174
|
+
|
|
175
|
+
==== Subgraphs
|
|
176
|
+
|
|
177
|
+
Subgraphs group related nodes together:
|
|
178
|
+
|
|
179
|
+
[source,mermaid]
|
|
180
|
+
----
|
|
181
|
+
subgraph title
|
|
182
|
+
A --> B
|
|
183
|
+
end
|
|
184
|
+
----
|
|
185
|
+
|
|
186
|
+
Subgraphs can be nested:
|
|
187
|
+
|
|
188
|
+
[source,mermaid]
|
|
189
|
+
----
|
|
190
|
+
subgraph outer
|
|
191
|
+
subgraph inner
|
|
192
|
+
A --> B
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
----
|
|
196
|
+
|
|
197
|
+
=== Examples
|
|
198
|
+
|
|
199
|
+
==== Basic flowchart
|
|
200
|
+
|
|
201
|
+
.Simple top-to-bottom flowchart
|
|
202
|
+
[example]
|
|
203
|
+
====
|
|
204
|
+
[source,mermaid]
|
|
205
|
+
----
|
|
206
|
+
graph TD
|
|
207
|
+
Start --> End
|
|
208
|
+
----
|
|
209
|
+
|
|
210
|
+
This creates a simple flowchart with two rectangular nodes connected by an arrow.
|
|
211
|
+
====
|
|
212
|
+
|
|
213
|
+
==== Flowchart with different node shapes
|
|
214
|
+
|
|
215
|
+
.Various node shapes
|
|
216
|
+
[example]
|
|
217
|
+
====
|
|
218
|
+
[source,mermaid]
|
|
219
|
+
----
|
|
220
|
+
graph TD
|
|
221
|
+
Start[Start Process] --> Input[Receive Input]
|
|
222
|
+
Input --> Validate{Valid Input?}
|
|
223
|
+
Validate -->|Yes| Process[Process Data]
|
|
224
|
+
Validate -->|No| Error[Show Error]
|
|
225
|
+
Error --> Input
|
|
226
|
+
Process --> End[End Process]
|
|
227
|
+
----
|
|
228
|
+
|
|
229
|
+
This example demonstrates:
|
|
230
|
+
|
|
231
|
+
* Rectangle nodes for process steps
|
|
232
|
+
* Diamond node for decision points
|
|
233
|
+
* Labeled edges showing decision outcomes
|
|
234
|
+
* Loop back from error to input
|
|
235
|
+
====
|
|
236
|
+
|
|
237
|
+
==== Complex workflow with subgraphs and multiple shapes
|
|
238
|
+
|
|
239
|
+
.Advanced flowchart with various features
|
|
240
|
+
[example]
|
|
241
|
+
====
|
|
242
|
+
[source,mermaid]
|
|
243
|
+
----
|
|
244
|
+
graph TD
|
|
245
|
+
Start[Start Process] --> Input[Receive Input]
|
|
246
|
+
Input --> Validate{Valid Input?}
|
|
247
|
+
Validate -->|Yes| Process[Process Data]
|
|
248
|
+
Validate -->|No| Error[Show Error]
|
|
249
|
+
Error --> Input
|
|
250
|
+
Process --> Calculate[Calculate Result]
|
|
251
|
+
Calculate --> Output[Generate Output]
|
|
252
|
+
Output --> Save{Save to Database?}
|
|
253
|
+
Save -->|Yes| DB[(Database)]
|
|
254
|
+
Save -->|No| Display[Display Result]
|
|
255
|
+
DB --> Display
|
|
256
|
+
Display --> End[End Process]
|
|
257
|
+
----
|
|
258
|
+
|
|
259
|
+
This example shows:
|
|
260
|
+
|
|
261
|
+
* Multiple decision points (diamond nodes)
|
|
262
|
+
* Database node using cylindrical shape `[(Database)]`
|
|
263
|
+
* Branching and merging flows
|
|
264
|
+
* Conditional paths with labels
|
|
265
|
+
====
|
|
266
|
+
|
|
267
|
+
==== Left-to-right flowchart
|
|
268
|
+
|
|
269
|
+
.Horizontal layout
|
|
270
|
+
[example]
|
|
271
|
+
====
|
|
272
|
+
[source,mermaid]
|
|
273
|
+
----
|
|
274
|
+
graph LR
|
|
275
|
+
A[Client] --> B[Load Balancer]
|
|
276
|
+
B --> C[Server 1]
|
|
277
|
+
B --> D[Server 2]
|
|
278
|
+
B --> E[Server 3]
|
|
279
|
+
C --> F[(Database)]
|
|
280
|
+
D --> F
|
|
281
|
+
E --> F
|
|
282
|
+
----
|
|
283
|
+
|
|
284
|
+
This demonstrates:
|
|
285
|
+
|
|
286
|
+
* Left-to-right layout using `LR` direction
|
|
287
|
+
* Multiple parallel paths from one node
|
|
288
|
+
* Convergence of multiple paths to a single node
|
|
289
|
+
* Database representation
|
|
290
|
+
====
|
|
291
|
+
|
|
292
|
+
==== Flowchart with various edge styles
|
|
293
|
+
|
|
294
|
+
.Different edge types
|
|
295
|
+
[example]
|
|
296
|
+
====
|
|
297
|
+
[source,mermaid]
|
|
298
|
+
----
|
|
299
|
+
graph TD
|
|
300
|
+
A[Start] --> B[Process]
|
|
301
|
+
B -.-> C[Optional Step]
|
|
302
|
+
C ==> D[Important Step]
|
|
303
|
+
D --> E{Decision}
|
|
304
|
+
E -->|Yes| F[Action 1]
|
|
305
|
+
E -->|No| G[Action 2]
|
|
306
|
+
F --> H[End]
|
|
307
|
+
G --> H
|
|
308
|
+
----
|
|
309
|
+
|
|
310
|
+
This shows:
|
|
311
|
+
|
|
312
|
+
* Solid arrow for normal flow
|
|
313
|
+
* Dotted arrow for optional or conditional flow
|
|
314
|
+
* Thick arrow for emphasized flow
|
|
315
|
+
* Labeled decision branches
|
|
316
|
+
====
|
|
317
|
+
|
|
318
|
+
==== Subgraph example
|
|
319
|
+
|
|
320
|
+
.Grouping with subgraphs
|
|
321
|
+
[example]
|
|
322
|
+
====
|
|
323
|
+
[source,mermaid]
|
|
324
|
+
----
|
|
325
|
+
graph TB
|
|
326
|
+
A[Start] --> B[Authenticate]
|
|
327
|
+
|
|
328
|
+
subgraph Authentication
|
|
329
|
+
B --> C{Valid Credentials?}
|
|
330
|
+
C -->|Yes| D[Grant Access]
|
|
331
|
+
C -->|No| E[Deny Access]
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
D --> F[Main Application]
|
|
335
|
+
E --> G[Login Screen]
|
|
336
|
+
G --> B
|
|
337
|
+
F --> H[End]
|
|
338
|
+
----
|
|
339
|
+
|
|
340
|
+
This demonstrates:
|
|
341
|
+
|
|
342
|
+
* Grouping related nodes in a subgraph
|
|
343
|
+
* Connections between nodes inside and outside subgraphs
|
|
344
|
+
* Clear visual organization of workflow sections
|
|
345
|
+
====
|
|
346
|
+
|
|
347
|
+
=== Features
|
|
348
|
+
|
|
349
|
+
==== Node identifiers
|
|
350
|
+
|
|
351
|
+
Node identifiers can contain letters, numbers, and underscores:
|
|
352
|
+
|
|
353
|
+
[source,mermaid]
|
|
354
|
+
----
|
|
355
|
+
graph TD
|
|
356
|
+
node_1[First Node]
|
|
357
|
+
node_2[Second Node]
|
|
358
|
+
node_1 --> node_2
|
|
359
|
+
----
|
|
360
|
+
|
|
361
|
+
==== Multi-word labels
|
|
362
|
+
|
|
363
|
+
Labels can contain spaces and special characters:
|
|
364
|
+
|
|
365
|
+
[source,mermaid]
|
|
366
|
+
----
|
|
367
|
+
graph TD
|
|
368
|
+
A[This is a multi-word label!]
|
|
369
|
+
B[Special chars: @#$%]
|
|
370
|
+
A --> B
|
|
371
|
+
----
|
|
372
|
+
|
|
373
|
+
==== Long text in nodes
|
|
374
|
+
|
|
375
|
+
Text in nodes automatically wraps:
|
|
376
|
+
|
|
377
|
+
[source,mermaid]
|
|
378
|
+
----
|
|
379
|
+
graph TD
|
|
380
|
+
A[This is a very long text that will be wrapped automatically to fit within the node boundaries]
|
|
381
|
+
----
|
|
382
|
+
|
|
383
|
+
==== Multiple edges from one node
|
|
384
|
+
|
|
385
|
+
A single node can have multiple outgoing edges:
|
|
386
|
+
|
|
387
|
+
[source,mermaid]
|
|
388
|
+
----
|
|
389
|
+
graph TD
|
|
390
|
+
A --> B
|
|
391
|
+
A --> C
|
|
392
|
+
A --> D
|
|
393
|
+
----
|
|
394
|
+
|
|
395
|
+
This can also be written as:
|
|
396
|
+
|
|
397
|
+
[source,mermaid]
|
|
398
|
+
----
|
|
399
|
+
graph TD
|
|
400
|
+
A --> B & C & D
|
|
401
|
+
----
|
|
402
|
+
|
|
403
|
+
==== Chained connections
|
|
404
|
+
|
|
405
|
+
Multiple connections can be chained:
|
|
406
|
+
|
|
407
|
+
[source,mermaid]
|
|
408
|
+
----
|
|
409
|
+
graph TD
|
|
410
|
+
A --> B --> C --> D
|
|
411
|
+
----
|
|
412
|
+
|
|
413
|
+
==== Unicode support
|
|
414
|
+
|
|
415
|
+
Unicode characters are supported in labels:
|
|
416
|
+
|
|
417
|
+
[source,mermaid]
|
|
418
|
+
----
|
|
419
|
+
graph TD
|
|
420
|
+
A[Hello δΈη]
|
|
421
|
+
B[Bonjour π]
|
|
422
|
+
A --> B
|
|
423
|
+
----
|
|
424
|
+
|
|
425
|
+
=== Limitations
|
|
426
|
+
|
|
427
|
+
==== Currently not supported
|
|
428
|
+
|
|
429
|
+
The following Mermaid flowchart features are not yet supported in Sirena:
|
|
430
|
+
|
|
431
|
+
* Styling individual nodes or edges with `style` or `class` directives
|
|
432
|
+
* Click events and interactions
|
|
433
|
+
* Comments using `%%`
|
|
434
|
+
* Font Awesome icons
|
|
435
|
+
* Markdown formatting in node text
|
|
436
|
+
|
|
437
|
+
==== Known issues
|
|
438
|
+
|
|
439
|
+
* Very long labels may overflow node boundaries in some cases
|
|
440
|
+
* Circular dependencies may cause layout issues
|
|
441
|
+
* Complex nested subgraphs may not render optimally
|
|
442
|
+
|
|
443
|
+
=== Best practices
|
|
444
|
+
|
|
445
|
+
==== Keep it simple
|
|
446
|
+
|
|
447
|
+
Avoid creating overly complex diagrams. If a flowchart becomes too large:
|
|
448
|
+
|
|
449
|
+
* Split into multiple diagrams
|
|
450
|
+
* Use subgraphs to organize related sections
|
|
451
|
+
* Consider using different diagram types for different aspects
|
|
452
|
+
|
|
453
|
+
==== Use meaningful labels
|
|
454
|
+
|
|
455
|
+
Use clear, descriptive labels for nodes and edges:
|
|
456
|
+
|
|
457
|
+
[source,mermaid]
|
|
458
|
+
----
|
|
459
|
+
graph TD
|
|
460
|
+
%% Good
|
|
461
|
+
ValidateInput{Input Valid?} -->|Yes| ProcessData[Process Data]
|
|
462
|
+
|
|
463
|
+
%% Less clear
|
|
464
|
+
A{?} --> B
|
|
465
|
+
----
|
|
466
|
+
|
|
467
|
+
==== Consistent node shapes
|
|
468
|
+
|
|
469
|
+
Use consistent node shapes for similar types of operations:
|
|
470
|
+
|
|
471
|
+
* Rectangles for processes
|
|
472
|
+
* Diamonds for decisions
|
|
473
|
+
* Cylinders for databases
|
|
474
|
+
* Parallelograms for I/O operations
|
|
475
|
+
|
|
476
|
+
==== Direction choice
|
|
477
|
+
|
|
478
|
+
Choose the layout direction that best fits your content:
|
|
479
|
+
|
|
480
|
+
* `TD` (top-down) for sequential processes
|
|
481
|
+
* `LR` (left-right) for timelines or horizontal flows
|
|
482
|
+
* Consider your display medium (wide vs. tall screens)
|
|
483
|
+
|
|
484
|
+
=== Related documentation
|
|
485
|
+
|
|
486
|
+
* <<index.adoc#,Diagram types overview>>
|
|
487
|
+
* <<sequence-diagram.adoc#,Sequence diagrams>>
|
|
488
|
+
* link:https://mermaid.js.org/syntax/flowchart.html[Official Mermaid flowchart documentation]
|