📄 dark-mode.md

← Vault

Excalidraw Dark Mode Diagrams

To create a dark-themed diagram, use a massive dark background rectangle as the first element in the array. Make it large enough to cover any viewport:

`json

{

"type": "rectangle", "id": "darkbg",

"x": -4000, "y": -3000, "width": 10000, "height": 7500,

"backgroundColor": "#1e1e2e", "fillStyle": "solid",

"strokeColor": "transparent", "strokeWidth": 0

}

`

Then use the following color palettes for elements on the dark background.

Text Colors (on dark)

Shape Fills (on dark)

ColorHexUse
-----------------
White#e5e5e5Primary text, titles
Muted#a0a0a0Secondary text, annotations
NEVER#555 or darkerInvisible on dark bg!
ColorHexGood For
----------------------
Dark Blue#1e3a5fPrimary nodes
Dark Green#1a4d2eSuccess, output
Dark Purple#2d1b69Processing, special
Dark Orange#5c3d1aWarning, pending
Dark Red#5c1a1aError, critical
Dark Teal#1a4d4dStorage, data

Stroke and Arrow Colors (on dark)

Use the standard Primary Colors from the main color palette -- they're bright enough on dark backgrounds:

For subtle shape borders, use #555555.

Example: Dark mode labeled rectangle

Use container binding (NOT the "label" property, which doesn't work). On dark backgrounds, set text strokeColor to "#e5e5e5" so it's visible:

`json

[

{

"type": "rectangle", "id": "r1",

"x": 100, "y": 100, "width": 200, "height": 80,

"backgroundColor": "#1e3a5f", "fillStyle": "solid",

"strokeColor": "#4a9eed", "strokeWidth": 2,

"roundness": { "type": 3 },

"boundElements": [{ "id": "t_r1", "type": "text" }]

},

{

"type": "text", "id": "t_r1",

"x": 105, "y": 120, "width": 190, "height": 25,

"text": "Dark Node", "fontSize": 20, "fontFamily": 1,

"strokeColor": "#e5e5e5",

"textAlign": "center", "verticalAlign": "middle",

"containerId": "r1", "originalText": "Dark Node", "autoResize": true

}

]

`

Note: For standalone text elements on dark backgrounds, always set "strokeColor": "#e5e5e5" explicitly. The default #1e1e1e is invisible on dark.