+ {
+ colors.map((row, rowIndex) => {
+ return (
+
+ {
+ colors[rowIndex].map((color, colorIndex) => {
+ return ;
+ })
+ }
+
+ );
+ })
+ }
+
+ );
+};
+
+ColorPickerGridBase.displayName = 'ColorPickerGridBase';
+
+ColorPickerGridBase.propTypes = {/** @lends sandstone/ColorPicker.ColorPickerGridBase.prototype */
+ /**
+ * Applies a disabled style and prevents interacting with the component.
+ *
+ * @type {Boolean}
+ * @default false
+ * @private
+ */
+ disabled: PropTypes.bool,
+
+ /**
+ * A function to run when the current color changes.
+ *
+ * @type {Function}
+ * @private
+ */
+ selectedColorHandler: PropTypes.func
+};
+
+/**
+ * A color picker component, ready to use in Sandstone applications.
+ *
+ * @class ColorPickerGrid
+ * @memberof sandstone/ColorPicker
+ * @extends sandstone/ColorPicker.ColorPickerGridBase
+ * @ui
+ * @private
+ */
+const ColorPickerGrid = Skinnable(ColorPickerGridBase);
+
+export default ColorPickerGrid;
+export {
+ ColorPickerGrid,
+ ColorPickerGridBase
+};
diff --git a/ColorPicker/ColorPickerGrid.module.less b/ColorPicker/ColorPickerGrid.module.less
new file mode 100644
index 0000000000..8ff91059fb
--- /dev/null
+++ b/ColorPicker/ColorPickerGrid.module.less
@@ -0,0 +1,20 @@
+// ColorPickerGrid.module.less
+//
+@import "../styles/colors.less";
+@import "../styles/mixins.less";
+@import "../styles/variables.less";
+
+.colorPicker {
+ display: flex;
+
+ .colorBlock {
+ border: @sand-colorpicker-border-large solid @sand-colorpicker-colorblock-border-color;
+ height: @sand-colorpicker-grid-colorblock-size;
+ width: @sand-colorpicker-grid-colorblock-size;
+
+ .focus({
+ border-color: var(--sand-colorpicker-grid-focus-border-color);
+ box-shadow: 0 0 12px 3px inset;
+ })
+ }
+}
diff --git a/ColorPicker/ColorPickerSlider.js b/ColorPicker/ColorPickerSlider.js
new file mode 100644
index 0000000000..5349c3799e
--- /dev/null
+++ b/ColorPicker/ColorPickerSlider.js
@@ -0,0 +1,525 @@
+/**
+ * Sandstone component that allows the user to choose a color by using an RGB or an HSL color slider.
+ *
+ * @example
+ *