Adds LiteGraph Theming Support
diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js
index e54bc2a380..a08d466840 100644
--- a/web/extensions/core/colorPalette.js
+++ b/web/extensions/core/colorPalette.js
@@ -21,28 +21,74 @@ const colorPalettes = {
 				"MODEL": "#B39DDB", // light lavender-purple
 				"STYLE_MODEL": "#C2FFAE", // light green-yellow
 				"VAE": "#FF6E6E", // bright red
-			}
-		}
+			},
+			"litegraph_base": {
+				"NODE_TITLE_COLOR": "#999",
+				"NODE_SELECTED_TITLE_COLOR": "#FFF",
+				"NODE_TEXT_SIZE": 14,
+				"NODE_TEXT_COLOR": "#AAA",
+				"NODE_SUBTEXT_SIZE": 12,
+				"NODE_DEFAULT_COLOR": "#333",
+				"NODE_DEFAULT_BGCOLOR": "#353535",
+				"NODE_DEFAULT_BOXCOLOR": "#666",
+				"NODE_DEFAULT_SHAPE": "box",
+				"NODE_BOX_OUTLINE_COLOR": "#FFF",
+				"DEFAULT_SHADOW_COLOR": "rgba(0,0,0,0.5)",
+				"DEFAULT_GROUP_FONT": 24,
+
+				"WIDGET_BGCOLOR": "#222",
+				"WIDGET_OUTLINE_COLOR": "#666",
+				"WIDGET_TEXT_COLOR": "#DDD",
+				"WIDGET_SECONDARY_TEXT_COLOR": "#999",
+
+				"LINK_COLOR": "#9A9",
+				"EVENT_LINK_COLOR": "#A86",
+				"CONNECTING_LINK_COLOR": "#AFA",
+			},
+		},
 	},
-	"palette_2": {
-		"id": "palette_2",
-		"name": "Palette 2",
+	"solarized": {
+		"id": "solarized",
+		"name": "Solarized",
 		"colors": {
 			"node_slot": {
-				"CLIP": "#556B2F", // Dark Olive Green
-				"CLIP_VISION": "#4B0082", // Indigo
-				"CLIP_VISION_OUTPUT": "#006400", // Green
-				"CONDITIONING": "#FF1493", // Deep Pink
-				"CONTROL_NET": "#8B4513", // Saddle Brown
-				"IMAGE": "#8B0000", // Dark Red
-				"LATENT": "#00008B", // Dark Blue
-				"MASK": "#2F4F4F", // Dark Slate Grey
-				"MODEL": "#FF8C00", // Dark Orange
-				"STYLE_MODEL": "#004A4A", // Sherpa Blue
-				"UPSCALE_MODEL": "#4A004A", // Tyrian Purple
-				"VAE": "#4F394F", // Loulou
-			}
-		}
+				"CLIP": "#859900", // Green
+				"CLIP_VISION": "#6c71c4", // Indigo
+				"CLIP_VISION_OUTPUT": "#859900", // Green
+				"CONDITIONING": "#d33682", // Magenta
+				"CONTROL_NET": "#cb4b16", // Orange
+				"IMAGE": "#dc322f", // Red
+				"LATENT": "#268bd2", // Blue
+				"MASK": "#073642", // Base02
+				"MODEL": "#cb4b16", // Orange
+				"STYLE_MODEL": "#073642", // Base02
+				"UPSCALE_MODEL": "#6c71c4", // Indigo
+				"VAE": "#586e75", // Base1
+			},
+			"litegraph_base": {
+				"NODE_TITLE_COLOR": "#fdf6e3",
+				"NODE_SELECTED_TITLE_COLOR": "#b58900",
+				"NODE_TEXT_SIZE": 14,
+				"NODE_TEXT_COLOR": "#657b83",
+				"NODE_SUBTEXT_SIZE": 12,
+				"NODE_DEFAULT_COLOR": "#586e75",
+				"NODE_DEFAULT_BGCOLOR": "#073642",
+				"NODE_DEFAULT_BOXCOLOR": "#839496",
+				"NODE_DEFAULT_SHAPE": "box",
+				"NODE_BOX_OUTLINE_COLOR": "#fdf6e3",
+				"DEFAULT_SHADOW_COLOR": "rgba(0,0,0,0.5)",
+				"DEFAULT_GROUP_FONT": 24,
+
+				"WIDGET_BGCOLOR": "#002b36",
+				"WIDGET_OUTLINE_COLOR": "#839496",
+				"WIDGET_TEXT_COLOR": "#fdf6e3",
+				"WIDGET_SECONDARY_TEXT_COLOR": "#93a1a1",
+
+				"LINK_COLOR": "#2aa198",
+				"EVENT_LINK_COLOR": "#268bd2",
+				"CONNECTING_LINK_COLOR": "#859900",
+			},
+		},
 	}
 };
 
@@ -192,8 +238,20 @@ app.registerExtension({
 			if (colorPalette.colors) {
 				if (colorPalette.colors.node_slot) {
 					Object.assign(app.canvas.default_connection_color_byType, colorPalette.colors.node_slot);
-					app.canvas.draw(true, true);
+					Object.assign(LGraphCanvas.link_type_colors, colorPalette.colors.node_slot);
+				}
+				if (colorPalette.colors.litegraph_base) {
+					// Everything updates correctly in the loop, except the Node Title and Link Color for some reason
+					app.canvas.node_title_color = colorPalette.colors.litegraph_base.NODE_TITLE_COLOR;
+					app.canvas.default_link_color = colorPalette.colors.litegraph_base.LINK_COLOR;
+
+					for (const key in colorPalette.colors.litegraph_base) {
+						if (colorPalette.colors.litegraph_base.hasOwnProperty(key) && LiteGraph.hasOwnProperty(key)) {
+							LiteGraph[key] = colorPalette.colors.litegraph_base[key];
+						}
+					}
 				}
+				app.canvas.draw(true, true);
 			}
 		};
 

Adds support to theme LiteGraph Nodes. This is done by setting some of the global `LiteGraph` object's attributes. Node links are now also colored based on the node slot labels.

The image below is the example theme applied. 

![image](https://user-images.githubusercontent.com/23466035/230728293-56e7478f-0c69-4cb1-9e07-1c94a408cfb8.png)

To accomplish this:
- Most of it is relatively simple, just copying properties from the theme object into into the LiteGraph Base object.
- However, `NODE_TITLE_COLOR` and `LINK_COLOR` need to be assigned to the canvas manually. I could not figure out why as they should be being set from LiteGraph, and printing out the LiteGraph objects shows that they have been set correctly.
- `renderLink` is overriden. This allows to set the link colors the same as the node_slot colors.

Themes are loaded in settings via changing the color palette.