UPDATE: Thanks to JM's comment I decided to update this post. I had updated the code a while ago but never updated here. The updates include labeled opacity sliders (red circle) and labels for the position sliders (green circle) so all slider positions can be input by value. I also copy to clip board instead of writing directly to the notebook. The attached file has the latest code or you can find it on my github or on PackageData[]

I've been in the process of creating some GUIs for Mathematica plots. This is an ongoing project, but it's been suggested to me that I break the project up into smaller independent pieces. This is my first completed piece: the so-called color blender.
It is a GUI for creating color gradients. It takes either no input, an integer, or a list (of lists) of location/color pairs. If given no input, then a random gradient is created, made up of 4 colors. If an integer n>=2 is input, then a random gradient is created, made up of n colors. You can move around where the colors are positioned, add and remove specific colors, change current colors with the color slider, or choose a pre-existing gradient from the ColorData data paclets via an action menu. Moreover, you can output the existing state of the gradient to use elsewhere with a button.
Last, though the gif below cuts off the upper part of the action menu, the first entry is "Custom 1". Said differently, any input gradient or list of gradients are added to the top of the action menu and labeled as "Custom 1", "Custom 2", etc. so you can start off from a previously created custom gradient. Also, the gif has been down-converted so the colors look slightly off, but don't let that discourage you from using it.

Attachments: