diff --git a/src/Avalonia.Controls.ColorPicker/ColorPalette/SixteenColorPalette.cs b/src/Avalonia.Controls.ColorPicker/ColorPalette/SixteenColorPalette.cs
new file mode 100644
index 0000000000..f3abfdfd7f
--- /dev/null
+++ b/src/Avalonia.Controls.ColorPicker/ColorPalette/SixteenColorPalette.cs
@@ -0,0 +1,302 @@
+using Avalonia.Media;
+using Avalonia.Utilities;
+
+namespace Avalonia.Controls
+{
+ ///
+ /// Implements the standard sixteen color palette from the HTML 4.01 specification.
+ ///
+ ///
+ /// See https://en.wikipedia.org/wiki/Web_colors#HTML_color_names.
+ ///
+ public class SixteenColorPalette : IColorPalette
+ {
+ // The 16 standard colors from HTML and early Windows computers
+ // https://en.wikipedia.org/wiki/List_of_software_palettes
+ // https://en.wikipedia.org/wiki/Web_colors#HTML_color_names
+ private static Color[,] colorChart = new Color[,]
+ {
+ {
+ Colors.White,
+ Colors.Silver
+ },
+ {
+ Colors.Gray,
+ Colors.Black
+ },
+ {
+ Colors.Red,
+ Colors.Maroon
+ },
+ {
+ Colors.Yellow,
+ Colors.Olive
+ },
+ {
+ Colors.Lime,
+ Colors.Green
+ },
+ {
+ Colors.Aqua,
+ Colors.Teal
+ },
+ {
+ Colors.Blue,
+ Colors.Navy
+ },
+ {
+ Colors.Fuchsia,
+ Colors.Purple
+ }
+ };
+
+ ///
+ /// Gets the index of the default shade of colors in this palette.
+ ///
+ public const int DefaultShadeIndex = 0;
+
+ ///
+ /// The index in the color palette of the 'White' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int WhiteIndex = 0;
+
+ ///
+ /// The index in the color palette of the 'Silver' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int SilverIndex = 1;
+
+ ///
+ /// The index in the color palette of the 'Gray' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int GrayIndex = 2;
+
+ ///
+ /// The index in the color palette of the 'Black' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int BlackIndex = 3;
+
+ ///
+ /// The index in the color palette of the 'Red' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int RedIndex = 4;
+
+ ///
+ /// The index in the color palette of the 'Maroon' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int MaroonIndex = 5;
+
+ ///
+ /// The index in the color palette of the 'Yellow' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int YellowIndex = 6;
+
+ ///
+ /// The index in the color palette of the 'Olive' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int OliveIndex = 7;
+
+ ///
+ /// The index in the color palette of the 'Lime' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int LimeIndex = 8;
+
+ ///
+ /// The index in the color palette of the 'Green' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int GreenIndex = 9;
+
+ ///
+ /// The index in the color palette of the 'Aqua' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int AquaIndex = 10;
+
+ ///
+ /// The index in the color palette of the 'Teal' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int TealIndex = 11;
+
+ ///
+ /// The index in the color palette of the 'Blue' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int BlueIndex = 12;
+
+ ///
+ /// The index in the color palette of the 'Navy' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int NavyIndex = 13;
+
+ ///
+ /// The index in the color palette of the 'Fuchsia' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int FuchsiaIndex = 14;
+
+ ///
+ /// The index in the color palette of the 'Purple' color.
+ /// This index can correspond to multiple color shades.
+ ///
+ public const int PurpleIndex = 15;
+
+ ///
+ public int ColorCount
+ {
+ get => colorChart.GetLength(0);
+ }
+
+ ///
+ public int ShadeCount
+ {
+ get => colorChart.GetLength(1);
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FFFFFFFF.
+ ///
+ public static Color White
+ {
+ get => colorChart[WhiteIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FFC0C0C0.
+ ///
+ public static Color Silver
+ {
+ get => colorChart[SilverIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF808080.
+ ///
+ public static Color Gray
+ {
+ get => colorChart[GrayIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF000000.
+ ///
+ public static Color Black
+ {
+ get => colorChart[BlackIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FFFF0000.
+ ///
+ public static Color Red
+ {
+ get => colorChart[RedIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF800000.
+ ///
+ public static Color Maroon
+ {
+ get => colorChart[MaroonIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FFFFFF00.
+ ///
+ public static Color Yellow
+ {
+ get => colorChart[YellowIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF808000.
+ ///
+ public static Color Olive
+ {
+ get => colorChart[OliveIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF00FF00.
+ ///
+ public static Color Lime
+ {
+ get => colorChart[LimeIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF008000.
+ ///
+ public static Color Green
+ {
+ get => colorChart[GreenIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF00FFFF.
+ ///
+ public static Color Aqua
+ {
+ get => colorChart[AquaIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF008080.
+ ///
+ public static Color Teal
+ {
+ get => colorChart[TealIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF0000FF.
+ ///
+ public static Color Blue
+ {
+ get => colorChart[BlueIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF000080.
+ ///
+ public static Color Navy
+ {
+ get => colorChart[NavyIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FFFF00FF.
+ ///
+ public static Color Fuchsia
+ {
+ get => colorChart[FuchsiaIndex, DefaultShadeIndex];
+ }
+
+ ///
+ /// Gets the palette defined color that has an ARGB value of #FF800080.
+ ///
+ public static Color Purple
+ {
+ get => colorChart[PurpleIndex, DefaultShadeIndex];
+ }
+
+ ///
+ public Color GetColor(int colorIndex, int shadeIndex)
+ {
+ return colorChart[
+ MathUtilities.Clamp(colorIndex, 0, colorChart.GetLength(0) - 1),
+ MathUtilities.Clamp(shadeIndex, 0, colorChart.GetLength(1) - 1)];
+ }
+ }
+}