{
  "$id": "https://mermaid.js.org/schemas/config.schema.json",
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "title": "Mermaid Config",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "fontFamily",
    "logLevel",
    "securityLevel",
    "startOnLoad",
    "arrowMarkerAbsolute",
    "flowchart",
    "sequence",
    "gantt",
    "journey",
    "class",
    "state",
    "er",
    "pie",
    "quadrantChart",
    "xyChart",
    "requirement",
    "architecture",
    "mindmap",
    "kanban",
    "gitGraph",
    "c4",
    "sankey",
    "packet",
    "block",
    "treeView",
    "look",
    "eventmodeling",
    "radar",
    "venn"
  ],
  "properties": {
    "theme": {
      "description": "Theme, the CSS style sheet.\nYou may also use `themeCSS` to override this value.\n",
      "type": "string",
      "enum": [
        "default",
        "base",
        "dark",
        "forest",
        "neutral",
        "neo",
        "neo-dark",
        "redux",
        "redux-dark",
        "redux-color",
        "redux-dark-color",
        "null"
      ],
      "meta:enum": {
        "null": "Can be set to disable any pre-defined mermaid theme"
      },
      "default": "default"
    },
    "themeVariables": {
      "tsType": "any"
    },
    "themeCSS": {
      "type": "string"
    },
    "look": {
      "description": "Defines which main look to use for the diagram.\n",
      "type": "string",
      "enum": [
        "classic",
        "handDrawn",
        "neo"
      ],
      "default": "classic"
    },
    "handDrawnSeed": {
      "description": "Defines the seed to be used when using handDrawn look. This is important for the automated tests as they will always find differences without the seed. The default value is 0 which gives a random seed.\n",
      "type": "number",
      "default": 0
    },
    "layout": {
      "description": "Defines which layout algorithm to use for rendering the diagram.\n",
      "type": "string",
      "default": "dagre"
    },
    "maxTextSize": {
      "description": "The maximum allowed size of the users text diagram",
      "type": "number",
      "default": 50000
    },
    "maxEdges": {
      "description": "Defines the maximum number of edges that can be drawn in a graph.\n",
      "type": "integer",
      "default": 500,
      "minimum": 0
    },
    "elk": {
      "type": "object",
      "properties": {
        "mergeEdges": {
          "description": "Elk specific option that allows edges to share path where it convenient. It can make for pretty diagrams but can also make it harder to read the diagram.\n",
          "type": "boolean",
          "default": false
        },
        "nodePlacementStrategy": {
          "description": "Elk specific option affecting how nodes are placed.\n",
          "type": "string",
          "enum": [
            "SIMPLE",
            "NETWORK_SIMPLEX",
            "LINEAR_SEGMENTS",
            "BRANDES_KOEPF"
          ],
          "default": "BRANDES_KOEPF"
        },
        "cycleBreakingStrategy": {
          "description": "This strategy decides how to find cycles in the graph and deciding which edges need adjustment to break loops.\n",
          "type": "string",
          "enum": [
            "GREEDY",
            "DEPTH_FIRST",
            "INTERACTIVE",
            "MODEL_ORDER",
            "GREEDY_MODEL_ORDER"
          ],
          "default": "GREEDY_MODEL_ORDER"
        },
        "forceNodeModelOrder": {
          "description": "The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES.\n",
          "type": "boolean",
          "default": false
        },
        "considerModelOrder": {
          "description": "Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting.\n",
          "type": "string",
          "enum": [
            "NONE",
            "NODES_AND_EDGES",
            "PREFER_EDGES",
            "PREFER_NODES"
          ],
          "default": "NODES_AND_EDGES"
        }
      }
    },
    "darkMode": {
      "type": "boolean",
      "default": false
    },
    "htmlLabels": {
      "description": "Flag for setting whether or not a html tag should be used for rendering labels on nodes and edges.\n**Note:** Diagram-specific `htmlLabels` settings (e.g., `flowchart.htmlLabels`) are deprecated.\nUse this root-level `htmlLabels` setting instead. The root-level `htmlLabels` takes precedence\nover any diagram-specific settings.\n",
      "type": "boolean"
    },
    "fontFamily": {
      "description": "Specifies the font to be used in the rendered diagrams.\nCan be any possible CSS `font-family`.\nSee https://developer.mozilla.org/en-US/docs/Web/CSS/font-family\n",
      "type": "string",
      "default": "\"trebuchet ms\", verdana, arial, sans-serif;"
    },
    "altFontFamily": {
      "type": "string"
    },
    "logLevel": {
      "description": "This option decides the amount of logging to be used by mermaid.\n",
      "type": [
        "string",
        "number"
      ],
      "enum": [
        "trace",
        0,
        "debug",
        1,
        "info",
        2,
        "warn",
        3,
        "error",
        4,
        "fatal",
        5
      ],
      "meta:enum": {
        "trace": "Equivalent to 0",
        "debug": "Equivalent to 1",
        "info": "Equivalent to 2",
        "warn": "Equivalent to 3",
        "error": "Equivalent to 4",
        "fatal": "Equivalent to 5 (default)"
      },
      "default": 5
    },
    "securityLevel": {
      "description": "Level of trust for parsed diagram",
      "type": "string",
      "enum": [
        "strict",
        "loose",
        "antiscript",
        "sandbox"
      ],
      "meta:enum": {
        "strict": "(**default**) HTML tags in the text are encoded and click functionality is disabled.",
        "antiscript": "HTML tags in text are allowed (only script elements are removed), and click functionality is enabled.",
        "loose": "HTML tags in text are allowed and click functionality is enabled.",
        "sandbox": "With this security level, all rendering takes place in a sandboxed iframe.\nThis prevent any JavaScript from running in the context.\nThis may hinder interactive functionality of the diagram, like scripts, popups in the sequence diagram, or links to other tabs or targets, etc.\n"
      },
      "default": "strict"
    },
    "startOnLoad": {
      "description": "Dictates whether mermaid starts on Page load",
      "type": "boolean",
      "default": true
    },
    "arrowMarkerAbsolute": {
      "description": "Controls whether or arrow markers in html code are absolute paths or anchors.\nThis matters if you are using base tag settings.\n",
      "type": "boolean",
      "default": false
    },
    "secure": {
      "description": "This option controls which `currentConfig` keys are considered secure and\ncan only be changed via call to `mermaid.initialize`.\nThis prevents malicious graph directives from overriding a site's default security.\n",
      "default": [
        "secure",
        "securityLevel",
        "startOnLoad",
        "maxTextSize",
        "suppressErrorRendering",
        "maxEdges"
      ],
      "type": "array",
      "items": {
        "type": "string"
      },
      "uniqueItems": false
    },
    "legacyMathML": {
      "description": "This option specifies if Mermaid can expect the dependent to include KaTeX stylesheets for browsers\nwithout their own MathML implementation. If this option is disabled and MathML is not supported, the math\nequations are replaced with a warning. If this option is enabled and MathML is not supported, Mermaid will\nfall back to legacy rendering for KaTeX.\n",
      "type": "boolean",
      "default": false
    },
    "forceLegacyMathML": {
      "description": "This option forces Mermaid to rely on KaTeX's own stylesheet for rendering MathML. Due to differences between OS\nfonts and browser's MathML implementation, this option is recommended if consistent rendering is important.\nIf set to true, ignores legacyMathML.\n",
      "type": "boolean",
      "default": false
    },
    "deterministicIds": {
      "description": "This option controls if the generated ids of nodes in the SVG are\ngenerated randomly or based on a seed.\nIf set to `false`, the IDs are generated based on the current date and\nthus are not deterministic. This is the default behavior.\n\nThis matters if your files are checked into source control e.g. git and\nshould not change unless content is changed.\n",
      "type": "boolean",
      "default": false
    },
    "deterministicIDSeed": {
      "description": "This option is the optional seed for deterministic ids.\nIf set to `undefined` but deterministicIds is `true`, a simple number iterator is used.\nYou can set this attribute to base the seed on a static string.\n",
      "type": "string"
    },
    "flowchart": {
      "$ref": "#/$defs/FlowchartDiagramConfig"
    },
    "swimlane": {
      "$ref": "#/$defs/SwimlaneDiagramConfig"
    },
    "sequence": {
      "$ref": "#/$defs/SequenceDiagramConfig"
    },
    "gantt": {
      "$ref": "#/$defs/GanttDiagramConfig"
    },
    "journey": {
      "$ref": "#/$defs/JourneyDiagramConfig"
    },
    "timeline": {
      "$ref": "#/$defs/TimelineDiagramConfig"
    },
    "class": {
      "$ref": "#/$defs/ClassDiagramConfig"
    },
    "state": {
      "$ref": "#/$defs/StateDiagramConfig"
    },
    "er": {
      "$ref": "#/$defs/ErDiagramConfig"
    },
    "pie": {
      "$ref": "#/$defs/PieDiagramConfig"
    },
    "quadrantChart": {
      "$ref": "#/$defs/QuadrantChartConfig"
    },
    "xyChart": {
      "$ref": "#/$defs/XYChartConfig"
    },
    "requirement": {
      "$ref": "#/$defs/RequirementDiagramConfig"
    },
    "architecture": {
      "$ref": "#/$defs/ArchitectureDiagramConfig"
    },
    "mindmap": {
      "$ref": "#/$defs/MindmapDiagramConfig"
    },
    "ishikawa": {
      "$ref": "#/$defs/IshikawaDiagramConfig"
    },
    "kanban": {
      "$ref": "#/$defs/KanbanDiagramConfig"
    },
    "gitGraph": {
      "$ref": "#/$defs/GitGraphDiagramConfig"
    },
    "c4": {
      "$ref": "#/$defs/C4DiagramConfig"
    },
    "sankey": {
      "$ref": "#/$defs/SankeyDiagramConfig"
    },
    "packet": {
      "$ref": "#/$defs/PacketDiagramConfig"
    },
    "block": {
      "$ref": "#/$defs/BlockDiagramConfig"
    },
    "eventmodeling": {
      "$ref": "#/$defs/EventModelingDiagramConfig"
    },
    "treeView": {
      "$ref": "#/$defs/TreeViewDiagramConfig"
    },
    "radar": {
      "$ref": "#/$defs/RadarDiagramConfig"
    },
    "venn": {
      "$ref": "#/$defs/VennDiagramConfig"
    },
    "wardley-beta": {
      "$ref": "#/$defs/WardleyDiagramConfig"
    },
    "cynefin": {
      "$ref": "#/$defs/CynefinDiagramConfig"
    },
    "railroad": {
      "$ref": "#/$defs/RailroadDiagramConfig"
    },
    "dompurifyConfig": {
      "title": "DOM Purify Configuration",
      "description": "Configuration options to pass to the `dompurify` library.",
      "type": "object",
      "tsType": "import('dompurify').Config"
    },
    "wrap": {
      "type": "boolean"
    },
    "fontSize": {
      "type": "number",
      "default": 16
    },
    "markdownAutoWrap": {
      "type": "boolean",
      "default": true
    },
    "suppressErrorRendering": {
      "type": "boolean",
      "default": false,
      "description": "Suppresses inserting 'Syntax error' diagram in the DOM.\nThis is useful when you want to control how to handle syntax errors in your application.\n"
    }
  },
  "$defs": {
    "BaseDiagramConfig": {
      "title": "Base Diagram Config",
      "type": "object",
      "properties": {
        "useWidth": {
          "type": "number"
        },
        "useMaxWidth": {
          "description": "When this flag is set to `true`, the height and width is set to 100%\nand is then scaled with the available space.\nIf set to `false`, the absolute space required is used.\n",
          "type": "boolean",
          "default": true
        }
      }
    },
    "C4DiagramConfig": {
      "title": "C4 Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for c4 diagrams",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "diagramMarginX",
        "diagramMarginY",
        "c4ShapeMargin",
        "c4ShapePadding",
        "width",
        "height",
        "boxMargin",
        "useMaxWidth",
        "c4ShapeInRow",
        "c4BoundaryInRow"
      ],
      "properties": {
        "diagramMarginX": {
          "description": "Margin to the right and left of the c4 diagram, must be a positive value.\n",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "diagramMarginY": {
          "description": "Margin to the over and under the c4 diagram, must be a positive value.\n",
          "type": "integer",
          "default": 10,
          "minimum": 0
        },
        "c4ShapeMargin": {
          "description": "Margin between shapes",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "c4ShapePadding": {
          "description": "Padding between shapes",
          "type": "integer",
          "default": 20,
          "minimum": 0
        },
        "width": {
          "description": "Width of person boxes",
          "type": "integer",
          "default": 216,
          "minimum": 0
        },
        "height": {
          "description": "Height of person boxes",
          "type": "integer",
          "default": 60,
          "minimum": 0
        },
        "boxMargin": {
          "description": "Margin around boxes",
          "type": "integer",
          "default": 10,
          "minimum": 0
        },
        "c4ShapeInRow": {
          "description": "How many shapes to place in each row.",
          "type": "integer",
          "default": 4,
          "minimum": 0
        },
        "nextLinePaddingX": {
          "type": "number",
          "default": 0
        },
        "c4BoundaryInRow": {
          "description": "How many boundaries to place in each row.",
          "type": "integer",
          "default": 2,
          "minimum": 0
        },
        "personFontSize": {
          "description": "This sets the font size of Person shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "personFontFamily": {
          "description": "This sets the font weight of Person shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "personFontWeight": {
          "description": "This sets the font weight of Person shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_personFontSize": {
          "description": "This sets the font size of External Person shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_personFontFamily": {
          "description": "This sets the font family of External Person shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_personFontWeight": {
          "description": "This sets the font weight of External Person shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "systemFontSize": {
          "description": "This sets the font size of System shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "systemFontFamily": {
          "description": "This sets the font family of System shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "systemFontWeight": {
          "description": "This sets the font weight of System shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_systemFontSize": {
          "description": "This sets the font size of External System shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_systemFontFamily": {
          "description": "This sets the font family of External System shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_systemFontWeight": {
          "description": "This sets the font weight of External System shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "system_dbFontSize": {
          "description": "This sets the font size of System DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "system_dbFontFamily": {
          "description": "This sets the font family of System DB shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "system_dbFontWeight": {
          "description": "This sets the font weight of System DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_system_dbFontSize": {
          "description": "This sets the font size of External System DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_system_dbFontFamily": {
          "description": "This sets the font family of External System DB shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_system_dbFontWeight": {
          "description": "This sets the font weight of External System DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "system_queueFontSize": {
          "description": "This sets the font size of System Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "system_queueFontFamily": {
          "description": "This sets the font family of System Queue shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "system_queueFontWeight": {
          "description": "This sets the font weight of System Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_system_queueFontSize": {
          "description": "This sets the font size of External System Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_system_queueFontFamily": {
          "description": "This sets the font family of External System Queue shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_system_queueFontWeight": {
          "description": "This sets the font weight of External System Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "boundaryFontSize": {
          "description": "This sets the font size of Boundary shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "boundaryFontFamily": {
          "description": "This sets the font family of Boundary shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "boundaryFontWeight": {
          "description": "This sets the font weight of Boundary shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "messageFontSize": {
          "description": "This sets the font size of Message shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 12
        },
        "messageFontFamily": {
          "description": "This sets the font family of Message shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "messageFontWeight": {
          "description": "This sets the font weight of Message shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "containerFontSize": {
          "description": "This sets the font size of Container shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "containerFontFamily": {
          "description": "This sets the font family of Container shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "containerFontWeight": {
          "description": "This sets the font weight of Container shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_containerFontSize": {
          "description": "This sets the font size of External Container shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_containerFontFamily": {
          "description": "This sets the font family of External Container shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_containerFontWeight": {
          "description": "This sets the font weight of External Container shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "container_dbFontSize": {
          "description": "This sets the font size of Container DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "container_dbFontFamily": {
          "description": "This sets the font family of Container DB shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "container_dbFontWeight": {
          "description": "This sets the font weight of Container DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_container_dbFontSize": {
          "description": "This sets the font size of External Container DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_container_dbFontFamily": {
          "description": "This sets the font family of External Container DB shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_container_dbFontWeight": {
          "description": "This sets the font weight of External Container DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "container_queueFontSize": {
          "description": "This sets the font size of Container Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "container_queueFontFamily": {
          "description": "This sets the font family of Container Queue shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "container_queueFontWeight": {
          "description": "This sets the font weight of Container Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_container_queueFontSize": {
          "description": "This sets the font size of External Container Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_container_queueFontFamily": {
          "description": "This sets the font family of External Container Queue shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_container_queueFontWeight": {
          "description": "This sets the font weight of External Container Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "componentFontSize": {
          "description": "This sets the font size of Component shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "componentFontFamily": {
          "description": "This sets the font family of Component shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "componentFontWeight": {
          "description": "This sets the font weight of Component shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_componentFontSize": {
          "description": "This sets the font size of External Component shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_componentFontFamily": {
          "description": "This sets the font family of External Component shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_componentFontWeight": {
          "description": "This sets the font weight of External Component shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "component_dbFontSize": {
          "description": "This sets the font size of Component DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "component_dbFontFamily": {
          "description": "This sets the font family of Component DB shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "component_dbFontWeight": {
          "description": "This sets the font weight of Component DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_component_dbFontSize": {
          "description": "This sets the font size of External Component DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_component_dbFontFamily": {
          "description": "This sets the font family of External Component DB shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_component_dbFontWeight": {
          "description": "This sets the font weight of External Component DB shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "component_queueFontSize": {
          "description": "This sets the font size of Component Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "component_queueFontFamily": {
          "description": "This sets the font family of Component Queue shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "component_queueFontWeight": {
          "description": "This sets the font weight of Component Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "external_component_queueFontSize": {
          "description": "This sets the font size of External Component Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "external_component_queueFontFamily": {
          "description": "This sets the font family of External Component Queue shape for the diagram",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "external_component_queueFontWeight": {
          "description": "This sets the font weight of External Component Queue shape for the diagram",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        },
        "wrap": {
          "description": "This sets the auto-wrap state for the diagram",
          "type": "boolean",
          "default": true
        },
        "wrapPadding": {
          "description": "This sets the auto-wrap padding for the diagram (sides only)",
          "type": "number",
          "default": 10
        },
        "person_bg_color": {
          "type": "string",
          "default": "#08427B"
        },
        "person_border_color": {
          "type": "string",
          "default": "#073B6F"
        },
        "external_person_bg_color": {
          "type": "string",
          "default": "#686868"
        },
        "external_person_border_color": {
          "type": "string",
          "default": "#8A8A8A"
        },
        "system_bg_color": {
          "type": "string",
          "default": "#1168BD"
        },
        "system_border_color": {
          "type": "string",
          "default": "#3C7FC0"
        },
        "system_db_bg_color": {
          "type": "string",
          "default": "#1168BD"
        },
        "system_db_border_color": {
          "type": "string",
          "default": "#3C7FC0"
        },
        "system_queue_bg_color": {
          "type": "string",
          "default": "#1168BD"
        },
        "system_queue_border_color": {
          "type": "string",
          "default": "#3C7FC0"
        },
        "external_system_bg_color": {
          "type": "string",
          "default": "#999999"
        },
        "external_system_border_color": {
          "type": "string",
          "default": "#8A8A8A"
        },
        "external_system_db_bg_color": {
          "type": "string",
          "default": "#999999"
        },
        "external_system_db_border_color": {
          "type": "string",
          "default": "#8A8A8A"
        },
        "external_system_queue_bg_color": {
          "type": "string",
          "default": "#999999"
        },
        "external_system_queue_border_color": {
          "type": "string",
          "default": "#8A8A8A"
        },
        "container_bg_color": {
          "type": "string",
          "default": "#438DD5"
        },
        "container_border_color": {
          "type": "string",
          "default": "#3C7FC0"
        },
        "container_db_bg_color": {
          "type": "string",
          "default": "#438DD5"
        },
        "container_db_border_color": {
          "type": "string",
          "default": "#3C7FC0"
        },
        "container_queue_bg_color": {
          "type": "string",
          "default": "#438DD5"
        },
        "container_queue_border_color": {
          "type": "string",
          "default": "#3C7FC0"
        },
        "external_container_bg_color": {
          "type": "string",
          "default": "#B3B3B3"
        },
        "external_container_border_color": {
          "type": "string",
          "default": "#A6A6A6"
        },
        "external_container_db_bg_color": {
          "type": "string",
          "default": "#B3B3B3"
        },
        "external_container_db_border_color": {
          "type": "string",
          "default": "#A6A6A6"
        },
        "external_container_queue_bg_color": {
          "type": "string",
          "default": "#B3B3B3"
        },
        "external_container_queue_border_color": {
          "type": "string",
          "default": "#A6A6A6"
        },
        "component_bg_color": {
          "type": "string",
          "default": "#85BBF0"
        },
        "component_border_color": {
          "type": "string",
          "default": "#78A8D8"
        },
        "component_db_bg_color": {
          "type": "string",
          "default": "#85BBF0"
        },
        "component_db_border_color": {
          "type": "string",
          "default": "#78A8D8"
        },
        "component_queue_bg_color": {
          "type": "string",
          "default": "#85BBF0"
        },
        "component_queue_border_color": {
          "type": "string",
          "default": "#78A8D8"
        },
        "external_component_bg_color": {
          "type": "string",
          "default": "#CCCCCC"
        },
        "external_component_border_color": {
          "type": "string",
          "default": "#BFBFBF"
        },
        "external_component_db_bg_color": {
          "type": "string",
          "default": "#CCCCCC"
        },
        "external_component_db_border_color": {
          "type": "string",
          "default": "#BFBFBF"
        },
        "external_component_queue_bg_color": {
          "type": "string",
          "default": "#CCCCCC"
        },
        "external_component_queue_border_color": {
          "type": "string",
          "default": "#BFBFBF"
        },
        "personFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_personFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "systemFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_systemFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "system_dbFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_system_dbFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "system_queueFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_system_queueFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "containerFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_containerFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "container_dbFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_container_dbFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "container_queueFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_container_queueFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "componentFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_componentFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "component_dbFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_component_dbFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "component_queueFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "external_component_queueFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "boundaryFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "messageFont": {
          "$ref": "#/$defs/FontCalculator"
        }
      }
    },
    "GitGraphDiagramConfig": {
      "title": "Git Graph Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "titleTopMargin"
      ],
      "properties": {
        "titleTopMargin": {
          "description": "Margin top for the text over the diagram",
          "type": "integer",
          "default": 25,
          "minimum": 0
        },
        "diagramPadding": {
          "type": "number",
          "default": 8
        },
        "nodeLabel": {
          "allOf": [
            {
              "$ref": "#/$defs/NodeLabel"
            }
          ],
          "type": "object",
          "default": {
            "width": 75,
            "height": 100,
            "x": -25,
            "y": 0
          }
        },
        "mainBranchName": {
          "type": "string",
          "default": "main"
        },
        "mainBranchOrder": {
          "type": "number",
          "default": 0
        },
        "showCommitLabel": {
          "type": "boolean",
          "default": true
        },
        "showBranches": {
          "type": "boolean",
          "default": true
        },
        "rotateCommitLabel": {
          "type": "boolean",
          "default": true
        },
        "parallelCommits": {
          "type": "boolean",
          "default": false
        },
        "arrowMarkerAbsolute": {
          "description": "Controls whether or arrow markers in html code are absolute paths or anchors.\nThis matters if you are using base tag settings.\n",
          "type": "boolean",
          "default": false
        }
      }
    },
    "NodeLabel": {
      "title": "Node Label",
      "type": "object",
      "properties": {
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "x": {
          "type": "number"
        },
        "y": {
          "type": "number"
        }
      }
    },
    "RequirementDiagramConfig": {
      "title": "Requirement Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for req diagrams",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "useMaxWidth"
      ],
      "properties": {
        "rect_fill": {
          "type": "string",
          "default": "#f9f9f9"
        },
        "text_color": {
          "type": "string",
          "default": "#333"
        },
        "rect_border_size": {
          "type": "string",
          "default": "0.5px"
        },
        "rect_border_color": {
          "type": "string",
          "default": "#bbb"
        },
        "rect_min_width": {
          "type": "number",
          "default": 200
        },
        "rect_min_height": {
          "type": "number",
          "default": 200
        },
        "fontSize": {
          "type": "number",
          "default": 14
        },
        "rect_padding": {
          "type": "number",
          "default": 10
        },
        "line_height": {
          "type": "number",
          "default": 20
        }
      }
    },
    "ArchitectureDiagramConfig": {
      "title": "Architecture Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for architecture diagrams",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "useMaxWidth",
        "padding",
        "iconSize",
        "fontSize",
        "randomize",
        "nodeSeparation",
        "idealEdgeLengthMultiplier",
        "edgeElasticity",
        "numIter",
        "seed"
      ],
      "properties": {
        "padding": {
          "type": "number",
          "default": 40
        },
        "iconSize": {
          "type": "number",
          "default": 80
        },
        "fontSize": {
          "type": "number",
          "default": 16
        },
        "randomize": {
          "description": "Whether to randomize initial node positions before running the layout algorithm.\nWhen false (default), nodes start at deterministic seed positions. When true, nodes\nstart at random positions, which may produce varied but potentially better-spaced\nlayouts. Note: `randomize: false` alone does NOT guarantee identical renders, because\nthe underlying fcose layout still uses `Math.random()` internally during its\nconstraint solver — use the `seed` option for full determinism.\n",
          "type": "boolean",
          "default": false
        },
        "nodeSeparation": {
          "description": "Minimum separation (in pixels) between sibling nodes in the same group, passed through to the\nunderlying fcose layout. Increase to spread overlapping siblings apart when many edges share the\nsame port direction.\n",
          "type": "number",
          "default": 75
        },
        "idealEdgeLengthMultiplier": {
          "description": "Multiplier applied to `iconSize` to compute the ideal length of edges between nodes within the\nsame group. Increase to add breathing room; decrease to pack the diagram tighter. Edges crossing\ngroup boundaries are unaffected and use a fixed shorter length.\n",
          "type": "number",
          "default": 1.5
        },
        "edgeElasticity": {
          "description": "Spring elasticity (0–1) applied to edges between nodes within the same group, passed through to\nfcose. Higher values pull connected nodes closer together; lower values let the layout spread them\nout. Edges crossing group boundaries are unaffected.\n",
          "type": "number",
          "default": 0.45
        },
        "numIter": {
          "description": "Maximum number of iterations the fcose layout algorithm runs before stopping. Increase for higher\nquality on large or densely-connected diagrams at the cost of render time.\n",
          "type": "number",
          "default": 2500
        },
        "seed": {
          "description": "Deterministic seed for the fcose layout. Defaults to 1, which makes every render of the\nsame diagram produce the same layout — required for visual regression tests to be stable.\nSet to 0 to opt out and use the unstubbed Math.random (the layout will still differ\nslightly between renders, matching pre-fix behavior). Any other number selects a\ndifferent reproducible layout variant.\n",
          "type": "number",
          "default": 1
        }
      }
    },
    "MindmapDiagramConfig": {
      "title": "Mindmap Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for mindmap diagrams",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "useMaxWidth",
        "padding",
        "maxNodeWidth",
        "layoutAlgorithm"
      ],
      "properties": {
        "padding": {
          "type": "number",
          "default": 10
        },
        "maxNodeWidth": {
          "type": "number",
          "default": 200
        },
        "layoutAlgorithm": {
          "description": "Layout algorithm to use for positioning mindmap nodes",
          "type": "string",
          "default": "cose-bilkent"
        }
      }
    },
    "IshikawaDiagramConfig": {
      "title": "Ishikawa Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for ishikawa diagrams",
      "type": "object",
      "properties": {
        "diagramPadding": {
          "description": "The amount of padding around the diagram as a whole so that embedded\ndiagrams have margins, expressed in pixels.\n",
          "type": "integer",
          "default": 20,
          "minimum": 0
        },
        "useMaxWidth": {
          "type": "boolean",
          "default": false
        }
      }
    },
    "KanbanDiagramConfig": {
      "title": "Kanban Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for kanban diagrams",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "padding": {
          "type": "number",
          "default": 8
        },
        "sectionWidth": {
          "type": "number",
          "default": 200
        },
        "ticketBaseUrl": {
          "type": "string",
          "default": ""
        }
      }
    },
    "PieDiagramConfig": {
      "title": "Pie Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "textPosition": {
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "description": "Axial position of slice's label from zero at the center to 1 at the outside edges.\n",
          "default": 0.75
        },
        "donutHole": {
          "type": "number",
          "minimum": 0,
          "maximum": 0.9,
          "description": "Donut hole ratio. Valid value are from 0 to 0.9. Default to 0.\n",
          "default": 0
        },
        "legendPosition": {
          "type": "string",
          "enum": [
            "top",
            "bottom",
            "left",
            "right",
            "center"
          ],
          "description": "Legend's position relative to the chart. Default to right.\n",
          "default": "right"
        },
        "highlightSlice": {
          "type": "string",
          "description": "Highlight specific slice with matching label. Set to 'hover' to highlight hovered slice.\n",
          "default": ""
        }
      }
    },
    "QuadrantChartConfig": {
      "title": "Quadrant Chart Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "chartWidth",
        "chartHeight",
        "titleFontSize",
        "titlePadding",
        "quadrantPadding",
        "xAxisLabelPadding",
        "yAxisLabelPadding",
        "xAxisLabelFontSize",
        "yAxisLabelFontSize",
        "quadrantLabelFontSize",
        "quadrantTextTopPadding",
        "pointTextPadding",
        "pointLabelFontSize",
        "pointRadius",
        "xAxisPosition",
        "yAxisPosition",
        "quadrantInternalBorderStrokeWidth",
        "quadrantExternalBorderStrokeWidth",
        "useMaxWidth"
      ],
      "properties": {
        "chartWidth": {
          "description": "Width of the chart",
          "type": "number",
          "minimum": 0,
          "default": 500
        },
        "chartHeight": {
          "description": "Height of the chart",
          "type": "number",
          "minimum": 0,
          "default": 500
        },
        "titleFontSize": {
          "description": "Chart title top and bottom padding",
          "type": "number",
          "minimum": 0,
          "default": 20
        },
        "titlePadding": {
          "description": "Padding around the quadrant square",
          "type": "number",
          "minimum": 0,
          "default": 10
        },
        "quadrantPadding": {
          "description": "quadrant title padding from top if the quadrant is rendered on top",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "xAxisLabelPadding": {
          "description": "Padding around x-axis labels",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "yAxisLabelPadding": {
          "description": "Padding around y-axis labels",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "xAxisLabelFontSize": {
          "description": "x-axis label font size",
          "type": "number",
          "minimum": 0,
          "default": 16
        },
        "yAxisLabelFontSize": {
          "description": "y-axis label font size",
          "type": "number",
          "minimum": 0,
          "default": 16
        },
        "quadrantLabelFontSize": {
          "description": "quadrant title font size",
          "type": "number",
          "minimum": 0,
          "default": 16
        },
        "quadrantTextTopPadding": {
          "description": "quadrant title padding from top if the quadrant is rendered on top",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "pointTextPadding": {
          "description": "padding between point and point label",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "pointLabelFontSize": {
          "description": "point title font size",
          "type": "number",
          "minimum": 0,
          "default": 12
        },
        "pointRadius": {
          "description": "radius of the point to be drawn",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "xAxisPosition": {
          "description": "position of x-axis labels",
          "type": "string",
          "enum": [
            "top",
            "bottom"
          ],
          "default": "top"
        },
        "yAxisPosition": {
          "description": "position of y-axis labels",
          "type": "string",
          "enum": [
            "left",
            "right"
          ],
          "default": "left"
        },
        "quadrantInternalBorderStrokeWidth": {
          "description": "stroke width of edges of the box that are inside the quadrant",
          "type": "number",
          "minimum": 0,
          "default": 1
        },
        "quadrantExternalBorderStrokeWidth": {
          "description": "stroke width of edges of the box that are outside the quadrant",
          "type": "number",
          "minimum": 0,
          "default": 2
        }
      }
    },
    "XYChartAxisConfig": {
      "title": "XYChart axis config",
      "description": "This object contains configuration for XYChart axis config",
      "type": "object",
      "unevaluatedProperties": true,
      "required": [
        "showLabel",
        "labelFontSize",
        "labelPadding",
        "showTitle",
        "titleFontSize",
        "titlePadding",
        "showTick",
        "tickLength",
        "tickWidth",
        "showAxisLine",
        "axisLineWidth",
        "labelRotation"
      ],
      "properties": {
        "showLabel": {
          "description": "Should show the axis labels (tick text)",
          "type": "boolean",
          "default": true
        },
        "labelFontSize": {
          "description": "font size of the axis labels (tick text)",
          "type": "number",
          "default": 14,
          "minimum": 1
        },
        "labelPadding": {
          "description": "top and bottom space from axis label (tick text)",
          "type": "number",
          "default": 5,
          "minimum": 0
        },
        "showTitle": {
          "description": "Should show the axis title",
          "type": "boolean",
          "default": true
        },
        "titleFontSize": {
          "description": "font size of the axis title",
          "type": "number",
          "default": 16,
          "minimum": 1
        },
        "titlePadding": {
          "description": "top and bottom space from axis title",
          "type": "number",
          "default": 5,
          "minimum": 0
        },
        "showTick": {
          "description": "Should show the axis tick lines",
          "type": "boolean",
          "default": true
        },
        "tickLength": {
          "description": "length of the axis tick lines",
          "type": "number",
          "default": 5,
          "minimum": 1
        },
        "tickWidth": {
          "description": "width of the axis tick lines",
          "type": "number",
          "default": 2,
          "minimum": 1
        },
        "showAxisLine": {
          "description": "Show line across the axis",
          "type": "boolean",
          "default": true
        },
        "axisLineWidth": {
          "description": "Width of the axis line",
          "type": "number",
          "default": 2,
          "minimum": 1
        },
        "labelRotation": {
          "description": "Label rotation in degrees",
          "type": "number",
          "default": 0,
          "minimum": -90,
          "maximum": 90
        }
      }
    },
    "XYChartConfig": {
      "title": "XYChart Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "This object contains configuration specific to XYCharts",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "width",
        "height",
        "titleFontSize",
        "titlePadding",
        "xAxis",
        "yAxis",
        "showTitle",
        "chartOrientation",
        "plotReservedSpacePercent"
      ],
      "properties": {
        "width": {
          "description": "width of the chart",
          "type": "number",
          "default": 700,
          "minimum": 1
        },
        "height": {
          "description": "height of the chart",
          "type": "number",
          "default": 500,
          "minimum": 1
        },
        "titleFontSize": {
          "description": "Font size of the chart title",
          "type": "number",
          "default": 20,
          "minimum": 1
        },
        "titlePadding": {
          "description": "Top and bottom space from the chart title",
          "type": "number",
          "default": 10,
          "minimum": 0
        },
        "showDataLabel": {
          "description": "Should show the value corresponding to the bar within the bar",
          "type": "boolean",
          "default": false
        },
        "showDataLabelOutsideBar": {
          "description": "If showing data label then show it outside the bar",
          "type": "boolean",
          "default": false
        },
        "showTitle": {
          "description": "Should show the chart title",
          "type": "boolean",
          "default": true
        },
        "xAxis": {
          "$ref": "#/$defs/XYChartAxisConfig",
          "default": {
            "$ref": "#/$defs/XYChartAxisConfig"
          }
        },
        "yAxis": {
          "$ref": "#/$defs/XYChartAxisConfig",
          "default": {
            "$ref": "#/$defs/XYChartAxisConfig"
          }
        },
        "chartOrientation": {
          "description": "How to plot will be drawn horizontal or vertical",
          "tsType": "\"vertical\" | \"horizontal\"",
          "default": "vertical"
        },
        "plotReservedSpacePercent": {
          "description": "Minimum percent of space plots of the chart will take",
          "type": "number",
          "default": 50,
          "minimum": 30
        }
      }
    },
    "ErDiagramConfig": {
      "title": "Er Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for entity relationship diagrams",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "titleTopMargin",
        "diagramPadding",
        "layoutDirection",
        "minEntityWidth",
        "minEntityHeight",
        "entityPadding",
        "stroke",
        "fill",
        "useMaxWidth"
      ],
      "properties": {
        "titleTopMargin": {
          "$ref": "#/$defs/GitGraphDiagramConfig/properties/titleTopMargin",
          "default": 25
        },
        "diagramPadding": {
          "description": "The amount of padding around the diagram as a whole so that embedded\ndiagrams have margins, expressed in pixels.\n",
          "type": "integer",
          "default": 20,
          "minimum": 0
        },
        "layoutDirection": {
          "description": "Directional bias for layout of entities",
          "type": "string",
          "enum": [
            "TB",
            "BT",
            "LR",
            "RL"
          ],
          "meta:enum": {
            "TB": "Top-Bottom",
            "BT": "Bottom-Top",
            "LR": "Left-Right",
            "RL": "Right to Left"
          },
          "default": "TB"
        },
        "minEntityWidth": {
          "description": "The minimum width of an entity box. Expressed in pixels.",
          "type": "integer",
          "default": 100,
          "minimum": 0
        },
        "minEntityHeight": {
          "description": "The minimum height of an entity box. Expressed in pixels.",
          "type": "integer",
          "default": 75,
          "minimum": 0
        },
        "entityPadding": {
          "description": "The minimum internal padding between text in an entity box and the enclosing box borders.\nExpressed in pixels.\n",
          "type": "integer",
          "default": 15,
          "minimum": 0
        },
        "nodeSpacing": {
          "type": "integer",
          "default": 140,
          "minimum": 0
        },
        "rankSpacing": {
          "type": "integer",
          "default": 80,
          "minimum": 0
        },
        "stroke": {
          "description": "Stroke color of box edges and lines.",
          "type": "string",
          "default": "gray"
        },
        "fill": {
          "description": "Fill color of entity boxes",
          "type": "string",
          "default": "honeydew"
        },
        "fontSize": {
          "description": "Font size (expressed as an integer representing a number of pixels)",
          "type": "integer",
          "default": 12,
          "minimum": 0
        }
      }
    },
    "StateDiagramConfig": {
      "title": "State Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for entity relationship diagrams",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "titleTopMargin",
        "useMaxWidth",
        "defaultRenderer"
      ],
      "properties": {
        "titleTopMargin": {
          "$ref": "#/$defs/GitGraphDiagramConfig/properties/titleTopMargin",
          "default": 25
        },
        "arrowMarkerAbsolute": {
          "type": "boolean"
        },
        "dividerMargin": {
          "type": "number",
          "default": 10
        },
        "sizeUnit": {
          "type": "number",
          "default": 5
        },
        "padding": {
          "type": "number",
          "default": 8
        },
        "textHeight": {
          "type": "number",
          "default": 10
        },
        "titleShift": {
          "type": "number",
          "default": -15
        },
        "noteMargin": {
          "type": "number",
          "default": 10
        },
        "nodeSpacing": {
          "type": "integer",
          "minimum": 0
        },
        "rankSpacing": {
          "type": "integer",
          "minimum": 0
        },
        "forkWidth": {
          "type": "number",
          "default": 70
        },
        "forkHeight": {
          "type": "number",
          "default": 7
        },
        "miniPadding": {
          "type": "number",
          "default": 2
        },
        "fontSizeFactor": {
          "description": "Font size factor, this is used to guess the width of the edges labels\nbefore rendering by dagre layout.\nThis might need updating if/when switching font\n",
          "type": "number",
          "default": 5.02
        },
        "fontSize": {
          "type": "number",
          "default": 24
        },
        "labelHeight": {
          "type": "number",
          "default": 16
        },
        "edgeLengthFactor": {
          "type": "string",
          "default": "20"
        },
        "compositTitleSize": {
          "type": "number",
          "default": 35
        },
        "radius": {
          "type": "number",
          "default": 5
        },
        "defaultRenderer": {
          "description": "Decides which rendering engine that is to be used for the rendering.\n",
          "type": "string",
          "enum": [
            "dagre-d3",
            "dagre-wrapper",
            "elk"
          ],
          "default": "dagre-wrapper",
          "meta:enum": {
            "dagre-d3": "The [dagre-d3-es](https://www.npmjs.com/package/dagre-d3-es) library.",
            "dagre-wrapper": "wrapper for dagre implemented in mermaid",
            "elk": "Layout using [elkjs](https://github.com/kieler/elkjs)"
          }
        }
      }
    },
    "ClassDiagramConfig": {
      "title": "Class Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "titleTopMargin",
        "useMaxWidth",
        "defaultRenderer"
      ],
      "properties": {
        "titleTopMargin": {
          "$ref": "#/$defs/GitGraphDiagramConfig/properties/titleTopMargin",
          "default": 25
        },
        "arrowMarkerAbsolute": {
          "description": "Controls whether or arrow markers in html code are absolute paths or anchors.\nThis matters if you are using base tag settings.\n",
          "type": "boolean",
          "default": false
        },
        "dividerMargin": {
          "type": "number",
          "default": 10
        },
        "padding": {
          "type": "number",
          "default": 5
        },
        "textHeight": {
          "type": "number",
          "default": 10
        },
        "defaultRenderer": {
          "$ref": "#/$defs/StateDiagramConfig/properties/defaultRenderer",
          "default": "dagre-wrapper"
        },
        "nodeSpacing": {
          "type": "integer",
          "minimum": 0
        },
        "rankSpacing": {
          "type": "integer",
          "minimum": 0
        },
        "diagramPadding": {
          "$ref": "#/$defs/ErDiagramConfig/properties/diagramPadding"
        },
        "htmlLabels": {
          "type": "boolean",
          "default": false
        },
        "hideEmptyMembersBox": {
          "type": "boolean",
          "default": false
        },
        "hierarchicalNamespaces": {
          "type": "boolean",
          "default": true,
          "description": "When true (default), nested namespaces render as hierarchical clusters,\nwith each segment of a dotted name (e.g. `A.B.C`) becoming its own nested\nbox. When false, namespaces render in compact mode: only explicitly\ndeclared namespaces are emitted and their full qualified name is used as\na single flat label.\n"
        }
      }
    },
    "JourneyDiagramConfig": {
      "title": "Journey Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for journey diagrams\n",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "diagramMarginX",
        "diagramMarginY",
        "leftMargin",
        "width",
        "height",
        "boxMargin",
        "boxTextMargin",
        "noteMargin",
        "messageMargin",
        "messageAlign",
        "bottomMarginAdj",
        "useMaxWidth",
        "rightAngles",
        "titleColor",
        "titleFontFamily",
        "titleFontSize"
      ],
      "properties": {
        "diagramMarginX": {
          "$ref": "#/$defs/C4DiagramConfig/properties/diagramMarginX",
          "default": 50
        },
        "diagramMarginY": {
          "$ref": "#/$defs/C4DiagramConfig/properties/diagramMarginY",
          "default": 10
        },
        "leftMargin": {
          "description": "Margin between actors",
          "type": "integer",
          "default": 150,
          "minimum": 0
        },
        "maxLabelWidth": {
          "description": "Maximum width of actor labels",
          "type": "integer",
          "default": 360
        },
        "width": {
          "description": "Width of actor boxes",
          "type": "integer",
          "default": 150,
          "minimum": 0
        },
        "height": {
          "description": "Height of actor boxes",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "boxMargin": {
          "description": "Margin around loop boxes",
          "type": "integer",
          "default": 10,
          "minimum": 0
        },
        "boxTextMargin": {
          "description": "Margin around the text in loop/alt/opt boxes",
          "type": "integer",
          "default": 5,
          "minimum": 0
        },
        "noteMargin": {
          "description": "Margin around notes",
          "type": "integer",
          "default": 10,
          "minimum": 0
        },
        "messageMargin": {
          "description": "Space between messages.",
          "type": "integer",
          "default": 35,
          "minimum": 0
        },
        "messageAlign": {
          "description": "Multiline message alignment",
          "type": "string",
          "enum": [
            "left",
            "center",
            "right"
          ],
          "default": "center"
        },
        "bottomMarginAdj": {
          "description": "Prolongs the edge of the diagram downwards.\n\nDepending on css styling this might need adjustment.\n",
          "type": "integer",
          "default": 1,
          "minimum": 0
        },
        "rightAngles": {
          "description": "Curved Arrows become Right Angles\n\nThis will display arrows that start and begin at the same node as\nright angles, rather than as curves.\n",
          "type": "boolean",
          "default": false
        },
        "taskFontSize": {
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "taskFontFamily": {
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "taskMargin": {
          "type": "number",
          "default": 50
        },
        "activationWidth": {
          "description": "Width of activation box",
          "type": "number",
          "default": 10
        },
        "textPlacement": {
          "description": "text placement as: tspan | fo | old only text as before\n",
          "type": "string",
          "default": "fo"
        },
        "actorColours": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [
            "#8FBC8F",
            "#7CFC00",
            "#00FFFF",
            "#20B2AA",
            "#B0E0E6",
            "#FFFFE0"
          ]
        },
        "sectionFills": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [
            "#191970",
            "#8B008B",
            "#4B0082",
            "#2F4F4F",
            "#800000",
            "#8B4513",
            "#00008B"
          ]
        },
        "sectionColours": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [
            "#fff"
          ]
        },
        "titleColor": {
          "description": "Color of the title text in Journey Diagrams",
          "type": "string",
          "default": ""
        },
        "titleFontFamily": {
          "description": "Font family to be used for the title text in Journey Diagrams",
          "type": "string",
          "default": "\"trebuchet ms\", verdana, arial, sans-serif"
        },
        "titleFontSize": {
          "description": "Font size to be used for the title text in Journey Diagrams",
          "type": "string",
          "default": "4ex"
        }
      }
    },
    "TimelineDiagramConfig": {
      "title": "Timeline Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "diagramMarginX",
        "diagramMarginY",
        "leftMargin",
        "width",
        "height",
        "boxMargin",
        "boxTextMargin",
        "noteMargin",
        "messageMargin",
        "messageAlign",
        "bottomMarginAdj",
        "useMaxWidth"
      ],
      "properties": {
        "diagramMarginX": {
          "$ref": "#/$defs/C4DiagramConfig/properties/diagramMarginX",
          "default": 50
        },
        "diagramMarginY": {
          "$ref": "#/$defs/C4DiagramConfig/properties/diagramMarginY",
          "default": 10
        },
        "leftMargin": {
          "description": "Margin between actors",
          "type": "integer",
          "default": 150,
          "minimum": 0
        },
        "width": {
          "description": "Width of actor boxes",
          "type": "integer",
          "default": 150,
          "minimum": 0
        },
        "height": {
          "description": "Height of actor boxes",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "padding": {
          "type": "number"
        },
        "boxMargin": {
          "description": "Margin around loop boxes",
          "type": "integer",
          "default": 10,
          "minimum": 0
        },
        "boxTextMargin": {
          "description": "Margin around the text in loop/alt/opt boxes",
          "type": "integer",
          "default": 5,
          "minimum": 0
        },
        "noteMargin": {
          "description": "Margin around notes",
          "type": "integer",
          "default": 10,
          "minimum": 0
        },
        "messageMargin": {
          "description": "Space between messages.",
          "type": "integer",
          "default": 35,
          "minimum": 0
        },
        "messageAlign": {
          "description": "Multiline message alignment",
          "type": "string",
          "enum": [
            "left",
            "center",
            "right"
          ],
          "default": "center"
        },
        "bottomMarginAdj": {
          "description": "Prolongs the edge of the diagram downwards.\n\nDepending on css styling this might need adjustment.\n",
          "type": "integer",
          "default": 1,
          "minimum": 0
        },
        "rightAngles": {
          "description": "Curved Arrows become Right Angles\n\nThis will display arrows that start and begin at the same node as\nright angles, rather than as curves.\n",
          "type": "boolean",
          "default": false
        },
        "taskFontSize": {
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "taskFontFamily": {
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "taskMargin": {
          "type": "number",
          "default": 50
        },
        "activationWidth": {
          "description": "Width of activation box",
          "type": "number",
          "default": 10
        },
        "textPlacement": {
          "description": "text placement as: tspan | fo | old only text as before\n",
          "type": "string",
          "default": "fo"
        },
        "actorColours": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [
            "#8FBC8F",
            "#7CFC00",
            "#00FFFF",
            "#20B2AA",
            "#B0E0E6",
            "#FFFFE0"
          ]
        },
        "sectionFills": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [
            "#191970",
            "#8B008B",
            "#4B0082",
            "#2F4F4F",
            "#800000",
            "#8B4513",
            "#00008B"
          ]
        },
        "sectionColours": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [
            "#fff"
          ]
        },
        "disableMulticolor": {
          "type": "boolean",
          "default": false
        }
      }
    },
    "GanttDiagramConfig": {
      "title": "Gantt Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for gantt diagrams\n",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "titleTopMargin",
        "barHeight",
        "topPadding",
        "rightPadding",
        "leftPadding",
        "gridLineStartPadding",
        "fontSize",
        "sectionFontSize",
        "numberSectionStyles",
        "axisFormat",
        "useMaxWidth",
        "topAxis",
        "weekday"
      ],
      "properties": {
        "titleTopMargin": {
          "$ref": "#/$defs/GitGraphDiagramConfig/properties/titleTopMargin",
          "default": 25
        },
        "barHeight": {
          "description": "The height of the bars in the graph",
          "type": "integer",
          "default": 20,
          "minimum": 0
        },
        "barGap": {
          "description": "The margin between the different activities in the gantt diagram",
          "type": "integer",
          "default": 4,
          "minimum": 0
        },
        "topPadding": {
          "description": "Margin between title and gantt diagram and between axis and gantt diagram.\n",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "rightPadding": {
          "description": "The space allocated for the section name to the right of the activities\n",
          "type": "integer",
          "default": 75,
          "minimum": 0
        },
        "leftPadding": {
          "description": "The space allocated for the section name to the left of the activities\n",
          "type": "integer",
          "default": 75,
          "minimum": 0
        },
        "gridLineStartPadding": {
          "description": "Vertical starting position of the grid lines",
          "type": "integer",
          "default": 35,
          "minimum": 0
        },
        "fontSize": {
          "description": "Font size",
          "type": "integer",
          "default": 11,
          "minimum": 0
        },
        "sectionFontSize": {
          "description": "Font size for sections",
          "type": "integer",
          "tsType": "string | number",
          "default": 11,
          "minimum": 0
        },
        "numberSectionStyles": {
          "description": "The number of alternating section styles",
          "type": "integer",
          "default": 4,
          "minimum": 0
        },
        "axisFormat": {
          "description": "Date/time format of the axis\n\nThis might need adjustment to match your locale and preferences.\n",
          "type": "string",
          "default": "%Y-%m-%d"
        },
        "tickInterval": {
          "description": "axis ticks\n\nPattern is:\n\n```javascript\n/^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$/\n```\n",
          "type": "string",
          "pattern": "^([1-9][0-9]*)(millisecond|second|minute|hour|day|week|month)$"
        },
        "topAxis": {
          "description": "When this flag is set, date labels will be added to the top of the chart\n",
          "type": "boolean",
          "default": false
        },
        "displayMode": {
          "description": "Controls the display mode.\n",
          "type": "string",
          "enum": [
            "",
            "compact"
          ],
          "meta:enum": {
            "compact": "Enables displaying multiple tasks on the same row."
          },
          "default": ""
        },
        "weekday": {
          "description": "On which day a week-based interval should start\n",
          "type": "string",
          "enum": [
            "monday",
            "tuesday",
            "wednesday",
            "thursday",
            "friday",
            "saturday",
            "sunday"
          ],
          "default": "sunday"
        }
      }
    },
    "SequenceDiagramConfig": {
      "title": "Sequence Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for sequence diagrams",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "activationWidth",
        "diagramMarginX",
        "diagramMarginY",
        "actorMargin",
        "width",
        "height",
        "boxMargin",
        "boxTextMargin",
        "noteMargin",
        "messageMargin",
        "messageAlign",
        "mirrorActors",
        "forceMenus",
        "bottomMarginAdj",
        "useMaxWidth",
        "rightAngles",
        "showSequenceNumbers",
        "actorFontSize",
        "actorFontFamily",
        "actorFontWeight",
        "noteFontSize",
        "noteFontFamily",
        "noteFontWeight",
        "noteAlign",
        "messageFontSize",
        "messageFontFamily",
        "messageFontWeight"
      ],
      "properties": {
        "arrowMarkerAbsolute": {
          "type": "boolean"
        },
        "hideUnusedParticipants": {
          "type": "boolean",
          "default": false
        },
        "activationWidth": {
          "description": "Width of the activation rect",
          "type": "integer",
          "default": 10,
          "minimum": 0
        },
        "diagramMarginX": {
          "description": "Margin to the right and left of the sequence diagram",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "diagramMarginY": {
          "description": "Margin to the over and under the sequence diagram",
          "type": "integer",
          "default": 10,
          "minimum": 0
        },
        "actorMargin": {
          "description": "Margin between actors",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "width": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/width",
          "default": 150
        },
        "height": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/height",
          "default": 65
        },
        "boxMargin": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/boxMargin",
          "default": 10
        },
        "boxTextMargin": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/boxTextMargin",
          "default": 5
        },
        "noteMargin": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/noteMargin",
          "default": 10
        },
        "messageMargin": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/messageMargin",
          "default": 35
        },
        "messageAlign": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/messageAlign",
          "default": "center"
        },
        "mirrorActors": {
          "description": "Mirror actors under diagram\n",
          "type": "boolean",
          "default": true
        },
        "forceMenus": {
          "description": "forces actor popup menus to always be visible (to support E2E testing).\n",
          "type": "boolean",
          "default": false
        },
        "bottomMarginAdj": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/bottomMarginAdj",
          "default": 1
        },
        "rightAngles": {
          "$ref": "#/$defs/JourneyDiagramConfig/properties/rightAngles",
          "default": false
        },
        "showSequenceNumbers": {
          "description": "This will show the node numbers",
          "type": "boolean",
          "default": false
        },
        "actorFontSize": {
          "description": "This sets the font size of the actor's description",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "actorFontFamily": {
          "description": "This sets the font family of the actor's description",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "actorFontWeight": {
          "description": "This sets the font weight of the actor's description",
          "type": [
            "string",
            "number"
          ],
          "default": 400
        },
        "noteFontSize": {
          "description": "This sets the font size of actor-attached notes",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "noteFontFamily": {
          "description": "This sets the font family of actor-attached notes",
          "type": "string",
          "default": "\"trebuchet ms\", verdana, arial, sans-serif"
        },
        "noteFontWeight": {
          "description": "This sets the font weight of actor-attached notes",
          "type": [
            "string",
            "number"
          ],
          "default": 400
        },
        "noteAlign": {
          "description": "This sets the text alignment of actor-attached notes",
          "type": "string",
          "enum": [
            "left",
            "center",
            "right"
          ],
          "default": "center"
        },
        "messageFontSize": {
          "description": "This sets the font size of actor messages",
          "type": [
            "string",
            "number"
          ],
          "default": 16
        },
        "messageFontFamily": {
          "description": "This sets the font family of actor messages",
          "type": "string",
          "default": "\"trebuchet ms\", verdana, arial, sans-serif"
        },
        "messageFontWeight": {
          "description": "This sets the font weight of actor messages",
          "type": [
            "string",
            "number"
          ],
          "default": 400
        },
        "wrap": {
          "description": "This sets the auto-wrap state for the diagram",
          "type": "boolean",
          "default": false
        },
        "wrapPadding": {
          "$ref": "#/$defs/C4DiagramConfig/properties/wrapPadding",
          "default": 10
        },
        "labelBoxWidth": {
          "description": "This sets the width of the loop-box (loop, alt, opt, par)",
          "type": "number",
          "default": 50
        },
        "labelBoxHeight": {
          "description": "This sets the height of the loop-box (loop, alt, opt, par)",
          "type": "number",
          "default": 20
        },
        "messageFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "noteFont": {
          "$ref": "#/$defs/FontCalculator"
        },
        "actorFont": {
          "$ref": "#/$defs/FontCalculator"
        }
      }
    },
    "SwimlaneDiagramConfig": {
      "title": "Swimlane Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for the swimlanes diagram type.\n\nSwimlanes reuses the flowchart renderer and flowchart config for shared\noptions (curve, htmlLabels, spacing, …); this block holds the knobs that\nonly affect the swimlanes layout pipeline.\n",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "lineHops": {
          "description": "Renders edge crossings as small arcs (\"hops\") or visible gaps so that\noverlapping edges are easier to read. Set to `false` to disable. Edges\nrendered as curves are skipped to avoid corrupting the geometry.\n",
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string",
              "enum": [
                "arc",
                "gap"
              ]
            }
          ],
          "default": "arc"
        },
        "ignoreCrossLaneEdges": {
          "description": "Ignores edges that cross swimlane boundaries during swimlane layer\nassignment. This can improve rank quality for diagrams with many\ncross-lane links.\n",
          "type": "boolean",
          "default": true
        },
        "optimizeRanksByCrossings": {
          "description": "Enables a crossing-aware rank optimization pass for swimlane layouts.\n",
          "type": "boolean",
          "default": true
        },
        "automaticLaneOrdering": {
          "description": "Automatically reorders top-level swimlanes with a deterministic\nweighted-linear-arrangement heuristic. Disabled by default because\nsource swimlane order can carry semantic meaning.\n",
          "type": "boolean",
          "default": false
        }
      }
    },
    "FlowchartDiagramConfig": {
      "title": "Flowchart Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for flowcharts",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "titleTopMargin",
        "subGraphTitleMargin",
        "diagramPadding",
        "nodeSpacing",
        "rankSpacing",
        "curve",
        "useMaxWidth",
        "defaultRenderer",
        "wrappingWidth"
      ],
      "properties": {
        "titleTopMargin": {
          "$ref": "#/$defs/GitGraphDiagramConfig/properties/titleTopMargin",
          "default": 25
        },
        "subGraphTitleMargin": {
          "description": "Defines a top/bottom margin for subgraph titles\n",
          "type": "object",
          "properties": {
            "top": {
              "type": "integer",
              "minimum": 0
            },
            "bottom": {
              "type": "integer",
              "minimum": 0
            }
          },
          "default": {
            "top": 0,
            "bottom": 0
          }
        },
        "arrowMarkerAbsolute": {
          "type": "boolean"
        },
        "diagramPadding": {
          "$ref": "#/$defs/ErDiagramConfig/properties/diagramPadding",
          "default": 8
        },
        "htmlLabels": {
          "description": "**DEPRECATED: Use global `htmlLabels` instead.**\n\nFlag for setting whether or not a html tag should be used for rendering labels on nodes and edges.\nThis property is deprecated.\nPlease use the global `htmlLabels` configuration instead.\n",
          "type": [
            "boolean",
            "null"
          ],
          "deprecated": true,
          "default": null
        },
        "nodeSpacing": {
          "description": "Defines the spacing between nodes on the same level\n\nPertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs,\nand the vertical spacing for LR as well as RL graphs.\n",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "rankSpacing": {
          "description": "Defines the spacing between nodes on different levels\n\nPertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs,\nand the vertical spacing for LR as well as RL graphs.\n",
          "type": "integer",
          "default": 50,
          "minimum": 0
        },
        "curve": {
          "description": "Defines how mermaid renders curves for flowcharts.\n",
          "type": "string",
          "enum": [
            "basis",
            "bumpX",
            "bumpY",
            "cardinal",
            "catmullRom",
            "linear",
            "monotoneX",
            "monotoneY",
            "natural",
            "step",
            "stepAfter",
            "stepBefore",
            "rounded"
          ],
          "default": "basis"
        },
        "padding": {
          "description": "Represents the padding between the labels and the shape\n\n**Only used in new experimental rendering.**\n",
          "type": "number",
          "default": 15
        },
        "defaultRenderer": {
          "$ref": "#/$defs/StateDiagramConfig/properties/defaultRenderer",
          "default": "dagre-wrapper"
        },
        "wrappingWidth": {
          "description": "Width of nodes where text is wrapped.\n\nWhen using markdown strings the text is wrapped automatically, this\nvalue sets the max width of a text before it continues on a new line.\n",
          "type": "number",
          "default": 200
        },
        "inheritDir": {
          "type": "boolean",
          "default": false,
          "description": "If true, subgraphs without explicit direction will inherit the global graph direction\n(e.g., LR, TB, RL, BT). Defaults to false to preserve legacy layout behavior.\n"
        }
      }
    },
    "SankeyLinkColor": {
      "description": "Picks the color of the sankey diagram links, using the colors of the source and/or target of the links.\n",
      "type": "string",
      "enum": [
        "source",
        "target",
        "gradient"
      ],
      "meta:enum": {
        "source": "Use the source of sankey link for the color of the link.",
        "target": "Use the target of sankey link for the color of the link.",
        "gradient": "Use a gradient of the source and target for the color of the link."
      },
      "default": "gradient"
    },
    "SankeyLabelStyle": {
      "description": "The style of labels in the sankey diagram.\n",
      "type": "string",
      "enum": [
        "legacy",
        "outlined"
      ],
      "meta:enum": {
        "legacy": "Plain text labels (original style).",
        "outlined": "Labels with a white outline for better readability against colored backgrounds."
      },
      "default": "legacy"
    },
    "SankeyNodeAlignment": {
      "description": "Controls the alignment of the Sankey diagrams.\n\nSee <https://github.com/d3/d3-sankey#alignments>.\n",
      "type": "string",
      "enum": [
        "left",
        "right",
        "center",
        "justify"
      ],
      "meta:enum": {
        "left": "Align all inputs to the left.",
        "right": "Align all outputs to the right.",
        "center": "Like `left`, except that nodes without any incoming links are moved as right as possible.",
        "justify": "Like `left`, except that nodes without any outgoing links are moved to the far right."
      },
      "default": "justify"
    },
    "SankeyDiagramConfig": {
      "title": "Sankey Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for sankey diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "width": {
          "type": "number",
          "default": 600
        },
        "height": {
          "type": "number",
          "default": 400
        },
        "linkColor": {
          "description": "The color of the links in the sankey diagram.\n",
          "anyOf": [
            {
              "$ref": "#/$defs/SankeyLinkColor"
            },
            {
              "description": "An arbitrary [CSS color](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value)",
              "type": "string"
            }
          ],
          "default": "gradient"
        },
        "nodeAlignment": {
          "$ref": "#/$defs/SankeyNodeAlignment",
          "default": "justify"
        },
        "useMaxWidth": {
          "type": "boolean",
          "default": false
        },
        "showValues": {
          "description": "Toggle to display or hide values along with title.\n",
          "type": "boolean",
          "default": true
        },
        "prefix": {
          "description": "The prefix to use for values\n",
          "type": "string",
          "default": ""
        },
        "suffix": {
          "description": "The suffix to use for values\n",
          "type": "string",
          "default": ""
        },
        "nodeWidth": {
          "description": "The width of the nodes in the sankey diagram.\n",
          "type": "number",
          "default": 10
        },
        "nodePadding": {
          "description": "The padding between nodes in the sankey diagram.\n",
          "type": "number",
          "default": 12
        },
        "labelStyle": {
          "description": "The style of labels in the sankey diagram. 'outlined' provides better readability with a white stroke behind the text.\n",
          "$ref": "#/$defs/SankeyLabelStyle",
          "default": "legacy"
        },
        "nodeColors": {
          "description": "A mapping of node IDs to their colors. Nodes not specified will use the default color scheme.\n",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "PacketDiagramConfig": {
      "title": "Packet Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for packet diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "rowHeight": {
          "description": "The height of each row in the packet diagram.",
          "type": "number",
          "minimum": 1,
          "default": 32
        },
        "bitWidth": {
          "description": "The width of each bit in the packet diagram.",
          "type": "number",
          "minimum": 1,
          "default": 32
        },
        "bitsPerRow": {
          "description": "The number of bits to display per row.",
          "type": "number",
          "minimum": 1,
          "default": 32
        },
        "showBits": {
          "description": "Toggle to display or hide bit numbers.",
          "type": "boolean",
          "default": true
        },
        "paddingX": {
          "description": "The horizontal padding between the blocks in a row.",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "paddingY": {
          "description": "The vertical padding between the rows.",
          "type": "number",
          "minimum": 0,
          "default": 5
        }
      }
    },
    "BlockDiagramConfig": {
      "title": "Block Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for block diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "padding": {
          "type": "number",
          "minimum": 0,
          "default": 8
        }
      }
    },
    "EventModelingDiagramConfig": {
      "title": "Event Modeling Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for Event Modeling diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "padding": {
          "description": "The padding around the Event Modeling diagram.",
          "type": "number",
          "default": 30
        },
        "rowHeight": {
          "description": "The height of each row in the Event Modeling diagram.",
          "type": "number",
          "minimum": 1,
          "default": 32
        }
      }
    },
    "TreeViewDiagramConfig": {
      "title": "TreeView Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for treeView diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "rowIndent": {
          "description": "Horizontal distance between rows differing by one level",
          "type": "number",
          "minimum": 0,
          "default": 10
        },
        "paddingX": {
          "description": "Horizontal padding of label",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "paddingY": {
          "description": "Vertical padding of label",
          "type": "number",
          "minimum": 0,
          "default": 5
        },
        "lineThickness": {
          "description": "Thickness of the line",
          "type": "number",
          "minimum": 0,
          "default": 1
        },
        "showIcons": {
          "description": "Whether to show the default file/folder icons next to labels.\nExplicit `icon()` annotations always render, regardless of this setting.\n",
          "type": "boolean",
          "default": false
        },
        "defaultIconPack": {
          "description": "Name of a registered iconify pack used to resolve unprefixed icon\nreferences — `icon(name)` annotations and `filenameIcons`/\n`extensionIcons` values without a `pack:` prefix. The pack must be\nregistered with `registerIconPacks`. When empty, unprefixed names\nresolve to the built-in file/folder icons.\n",
          "type": "string",
          "default": ""
        },
        "filenameIcons": {
          "description": "Exact-filename → icon map used to pick a file's icon when\n`showIcons` is enabled, e.g.\n`{ \"Dockerfile\": \"material-icon-theme:docker\" }`.\nValues are resolved like `icon()` references: `pack:name` is used\nas-is, unprefixed names resolve via `defaultIconPack`, and `none`\nhides the icon for matching files.\n",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "default": {}
        },
        "extensionIcons": {
          "description": "File-extension → icon map used to pick a file's icon when\n`showIcons` is enabled, e.g.\n`{ \".ts\": \"material-icon-theme:typescript\" }`. Keys are\nlowercase and may include or omit the leading dot.\nValues are resolved like `icon()` references: `pack:name` is used\nas-is, unprefixed names resolve via `defaultIconPack`, and `none`\nhides the icon for matching files.\n",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "default": {}
        }
      }
    },
    "RadarDiagramConfig": {
      "title": "Radar Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for radar diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "width": {
          "description": "The size of the radar diagram.",
          "type": "number",
          "minimum": 1,
          "default": 600
        },
        "height": {
          "description": "The size of the radar diagram.",
          "type": "number",
          "minimum": 1,
          "default": 600
        },
        "marginTop": {
          "description": "The margin from the top of the radar diagram.",
          "type": "number",
          "minimum": 0,
          "default": 50
        },
        "marginRight": {
          "description": "The margin from the right of the radar diagram.",
          "type": "number",
          "minimum": 0,
          "default": 50
        },
        "marginBottom": {
          "description": "The margin from the bottom of the radar diagram.",
          "type": "number",
          "minimum": 0,
          "default": 50
        },
        "marginLeft": {
          "description": "The margin from the left of the radar diagram.",
          "type": "number",
          "minimum": 0,
          "default": 50
        },
        "axisScaleFactor": {
          "description": "The scale factor of the axis.",
          "type": "number",
          "minimum": 0,
          "default": 1
        },
        "axisLabelFactor": {
          "description": "The scale factor of the axis label.",
          "type": "number",
          "minimum": 0,
          "default": 1.05
        },
        "curveTension": {
          "description": "The tension factor for the Catmull-Rom spline conversion to cubic Bézier curves.",
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "default": 0.17
        }
      }
    },
    "VennDiagramConfig": {
      "title": "Venn Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for Venn diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "width": {
          "description": "The width of the Venn diagram.",
          "type": "number",
          "minimum": 1,
          "default": 800
        },
        "height": {
          "description": "The height of the Venn diagram.",
          "type": "number",
          "minimum": 1,
          "default": 450
        },
        "padding": {
          "type": "number",
          "minimum": 0,
          "default": 8
        },
        "useDebugLayout": {
          "type": "boolean",
          "default": false
        }
      }
    },
    "WardleyDiagramConfig": {
      "title": "Wardley Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "The object containing configurations specific for Wardley Maps diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "required": [
        "width",
        "height",
        "padding",
        "nodeRadius",
        "labelFontSize",
        "axisFontSize"
      ],
      "properties": {
        "width": {
          "description": "The width of the Wardley diagram canvas.",
          "type": "number",
          "minimum": 1,
          "default": 900
        },
        "height": {
          "description": "The height of the Wardley diagram canvas.",
          "type": "number",
          "minimum": 1,
          "default": 600
        },
        "padding": {
          "description": "The padding around the Wardley diagram.",
          "type": "number",
          "minimum": 0,
          "default": 48
        },
        "nodeRadius": {
          "description": "The radius of component nodes.",
          "type": "number",
          "minimum": 0,
          "default": 6
        },
        "nodeLabelOffset": {
          "description": "The offset distance for node labels.",
          "type": "number",
          "minimum": 0,
          "default": 8
        },
        "axisFontSize": {
          "description": "The font size for axis labels.",
          "type": "number",
          "minimum": 0,
          "default": 12
        },
        "labelFontSize": {
          "description": "The font size for component labels.",
          "type": "number",
          "minimum": 0,
          "default": 10
        },
        "showGrid": {
          "description": "Whether to display a background grid.",
          "type": "boolean",
          "default": false
        }
      }
    },
    "CynefinDiagramConfig": {
      "title": "Cynefin Diagram Config",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "description": "Configuration for Cynefin framework diagrams.",
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "width": {
          "description": "The width of the Cynefin diagram.",
          "type": "number",
          "minimum": 1,
          "default": 800
        },
        "height": {
          "description": "The height of the Cynefin diagram.",
          "type": "number",
          "minimum": 1,
          "default": 600
        },
        "padding": {
          "description": "Padding around the diagram.",
          "type": "number",
          "minimum": 0,
          "default": 40
        },
        "showDomainDescriptions": {
          "description": "Show decision model and practice type labels.",
          "type": "boolean",
          "default": true
        },
        "boundaryAmplitude": {
          "description": "Waviness amplitude of domain boundaries (0 for straight).",
          "type": "number",
          "minimum": 0,
          "maximum": 50,
          "default": 8
        },
        "seed": {
          "description": "Deterministic seed for boundary waviness. When 0 (default) the seed is derived\nfrom the diagram's SVG element id, which varies per render. Set any non-zero\nnumber to produce identical boundaries on every render — required for visual\nregression tests to be stable.\n",
          "type": "number",
          "default": 0
        }
      }
    },
    "RailroadDiagramConfig": {
      "title": "Railroad Diagram Config",
      "description": "Configuration for Railroad (Syntax) Diagrams",
      "allOf": [
        {
          "$ref": "#/$defs/BaseDiagramConfig"
        }
      ],
      "type": "object",
      "unevaluatedProperties": false,
      "properties": {
        "compactMode": {
          "description": "Use compact layout mode",
          "type": "boolean",
          "default": false
        },
        "padding": {
          "description": "Padding around elements",
          "type": "number",
          "minimum": 0,
          "default": 10
        },
        "verticalSeparation": {
          "description": "Vertical separation between elements",
          "type": "number",
          "minimum": 0,
          "default": 8
        },
        "horizontalSeparation": {
          "description": "Horizontal separation between elements",
          "type": "number",
          "minimum": 0,
          "default": 10
        },
        "arcRadius": {
          "description": "Radius for curved paths",
          "type": "number",
          "minimum": 0,
          "default": 10
        },
        "fontSize": {
          "description": "Font size for text",
          "type": "number",
          "minimum": 0,
          "default": 14
        },
        "fontFamily": {
          "description": "Font family for text",
          "type": "string",
          "default": "monospace"
        },
        "terminalFill": {
          "description": "Fill color for terminal elements",
          "type": "string",
          "default": "#FFFFC0"
        },
        "terminalStroke": {
          "description": "Stroke color for terminal elements",
          "type": "string",
          "default": "#000000"
        },
        "terminalTextColor": {
          "description": "Text color for terminal elements",
          "type": "string",
          "default": "#000000"
        },
        "nonTerminalFill": {
          "description": "Fill color for non-terminal elements",
          "type": "string",
          "default": "#FFFFFF"
        },
        "nonTerminalStroke": {
          "description": "Stroke color for non-terminal elements",
          "type": "string",
          "default": "#000000"
        },
        "nonTerminalTextColor": {
          "description": "Text color for non-terminal elements",
          "type": "string",
          "default": "#000000"
        },
        "lineColor": {
          "description": "Color for connection lines",
          "type": "string",
          "default": "#000000"
        },
        "strokeWidth": {
          "description": "Width of strokes",
          "type": "number",
          "minimum": 0,
          "default": 2
        },
        "markerFill": {
          "description": "Fill color for start/end markers",
          "type": "string",
          "default": "#000000"
        },
        "commentFill": {
          "description": "Fill color for comments",
          "type": "string",
          "default": "#E8E8E8"
        },
        "commentStroke": {
          "description": "Stroke color for comments",
          "type": "string",
          "default": "#888888"
        },
        "commentTextColor": {
          "description": "Text color for comments",
          "type": "string",
          "default": "#666666"
        },
        "specialFill": {
          "description": "Fill color for special sequences",
          "type": "string",
          "default": "#F0E0FF"
        },
        "specialStroke": {
          "description": "Stroke color for special sequences",
          "type": "string",
          "default": "#8800CC"
        },
        "ruleNameColor": {
          "description": "Color for rule names",
          "type": "string",
          "default": "#000066"
        },
        "showMarkers": {
          "description": "Show start/end markers",
          "type": "boolean",
          "default": true
        },
        "markerRadius": {
          "description": "Radius of start/end markers",
          "type": "number",
          "minimum": 0,
          "default": 5
        }
      }
    },
    "FontCalculator": {
      "title": "Font Calculator",
      "description": "JavaScript function that returns a `FontConfig`.\n\nBy default, these return the appropriate `*FontSize`, `*FontFamily`, `*FontWeight`\nvalues.\n\nFor example, the font calculator called `boundaryFont` might be defined as:\n\n```javascript\nboundaryFont: function () {\n  return {\n    fontFamily: this.boundaryFontFamily,\n    fontSize: this.boundaryFontSize,\n    fontWeight: this.boundaryFontWeight,\n  };\n}\n```\n",
      "tsType": "() => Partial<FontConfig>"
    },
    "FontConfig": {
      "title": "Font Config",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "fontSize": {
          "title": "CSS Font Size",
          "description": "The font size to use",
          "type": [
            "string",
            "number"
          ],
          "default": 14
        },
        "fontFamily": {
          "description": "The CSS [`font-family`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-family) to use.",
          "type": "string",
          "default": "\"Open Sans\", sans-serif"
        },
        "fontWeight": {
          "description": "The font weight to use.",
          "type": [
            "string",
            "number"
          ],
          "default": "normal"
        }
      }
    }
  }
}