Full Color Panel
Pick a color in a saturation area with hue and transparency sliders, or type any CSS color straight into the input.
Newed UI - Component Library
NWD Color Picker (HEX/RGB/HSL) is the color input Bubble was always missing. Built as a native-like input, it brings a full color panel, transparency, presets, an eyedropper and typed colors together in one polished component, and it can publish a truly empty value when no color is chosen. Fully customizable through 30+ properties, giving you complete control over every visual and behavioral detail.
No data collected This plugin does not collect user data.
Pick a color in a saturation area with hue and transparency sliders, or type any CSS color straight into the input.
Grab any color on screen with the eyedropper, or offer a row of preset colors for the picks people make most.
Over 30 properties covering three input layouts, the swatch shape from square chip to circle, and the floating panel with glass effects.
Publishes an empty value when no color is chosen, so an optional color field in your database can really stay empty.
Reach every control with Tab, Enter, Space, Escape and the arrow keys, with an accessible label, screen reader support and reduced motion respected.
Read the color in five formats plus every channel as a number, set it from any workflow, and react to value changed.
Place the plugin element wherever you need it.
Choose the layout, the output format and the colors, and set a default value if the field should start filled.
Use the value changed event to react to a new color, and read the exposed states to use it anywhere in your app. For Bubble's own color fields, use value (rgba).
For basic styling of the input, use Bubble's native properties such as font, background, border, border radius, padding and box shadow. The properties in this section cover what is specific to the color picker.
Text displayed in the input while it has no value.
defaultPick a color
Color of the placeholder text.
default#AAAAAA
Format of the value and of the text shown in the input.
hexreturns the color as a hex code. With transparency enabled it has 8 digits, which Bubble's own color fields do not read.rgbreturns the color as rgb() or rgba().hslreturns the color as hsl() or hsla().defaulthex
Which parts the input shows: compact is the color swatch alone, standard adds the color code next to it, and full adds the opacity field as well. Enabling transparency inside the panel is a separate setting.
compactthe color swatch alone, filling the whole input.standardthe swatch next to the color code.fullthe swatch, the color code and the opacity field.defaultstandard
Corner radius of the input swatch, in pixels. Use 0 for a square swatch, and a value equal to or greater than half its size for a circle. It is independent of the element's native roundness, and applies in both layouts. The preset swatches and the swatch inside the panel are not affected.
default6
Outline drawn over the swatch, always on all four sides so it stays visible against any background. Line is a thin outline, shadow is a drop shadow under the swatch, and veil is an inner relief shaded from top to bottom. The tone of line and veil follows the chosen color: dark over light colors, light over dark ones.
linea thin outline around the swatch.shadowa drop shadow under the swatch.veilan inner relief, shaded from top to bottom.defaultveil
Shows the color code on hover, over the input swatch and over each preset.
defaultno
Time (in milliseconds) before the tooltip appears after hover.
default400
Color applied on load and on reset (hex, rgb or hsl).
defaultno default
optionalAdds the opacity slider.
defaultyes
Shows the selected color inside the panel, in a field that switches between hex, rgb and hsl with each click, next to a button that copies it. The format chosen here changes only what the panel shows, never the value the input publishes.
defaultno
Turns the color preview inside the panel into an eyedropper, to pick a color from anywhere on the screen. Only Chrome and Edge support it; elsewhere the preview stays a preview.
defaultno
Preferred or forced opening direction of the floating panel relative to the input.
auto-topopens above the input, and flips below when there is not enough room.auto-bottomopens below the input, and flips above when there is not enough room.topalways opens above the input.bottomalways opens below the input.defaultauto-bottom
Opening animation of the floating panel.
nonethe panel simply appears.dropfalls into place from above.elasticovershoots slightly and settles.expandgrows from the edge of the input.fadefades in.popscales up quickly from the centre.slideslides in from the resolved direction.zoomzooms in from a smaller size.defaultfade
Background color of the floating panel.
default#FFFFFF
Sets the border color of the floating panel.
default#DEDEDE
Intensity of the glassmorphism effect on the floating panel.
nonesolid panel background.subtlebarely visible blur behind the panel.lightlight blur.mediumbalanced blur, the most common choice.strongheavy blur.intensemaximum blur, for panels over busy backgrounds.defaultnone
Color of the divider line above the presets. Leave it empty to follow the panel background.
defaultno default
optionalShows the preset swatches inside the panel. Turning it off hides them even when the list is filled.
defaultyes
Title shown above the preset colors. Leave it empty to show the presets without a title.
defaultPreset colors
Color of the title above the preset colors. Leave it empty to follow the element's font color.
defaultno default
optionalColors shown as quick picks in the panel. One color per line, and it accepts a dynamic list, so the palette can come from your data.
defaultno default
optionalDisables the component, preventing any interaction.
defaultno
Input background color when disabled.
default#F4F4F4
Input border color when disabled.
default#CACACA
Input font color when disabled.
default#CACACA
Marks the field as required and enables input validation.
defaultno
Input background color when invalid (required with no value).
default#FFDEDE
Input border color when invalid (required with no value).
default#FF6666
Input background color when focused.
default#FFFFFF
Input border color when focused.
default#30B3FE
Name read by screen readers. When empty, uses the placeholder or the visible label.
defaultno default
optionalHint read by screen readers after the name. Empty for none.
defaultno default
optionalValues the element exposes for the rest of the page to read.
The color is published in five formats at the same time, plus every channel as a separate number. Use value (rgba) for Bubble's own color fields, and contrast color when text has to stay readable on top of the chosen color.
Selected color in the chosen format. Empty when no color is selected.
Selected color as hex (#RRGGBB or #RRGGBBAA).
Selected color as rgba().
Selected color as hsla(), always with the alpha channel.
Selected color as oklch(), for custom CSS. Bubble's own color fields do not read this format; use value (rgba) for those.
Red channel of the selected color, from 0 to 255.
Green channel of the selected color, from 0 to 255.
Blue channel of the selected color, from 0 to 255.
Hue of the selected color, from 0 to 360.
Saturation of the selected color, from 0 to 100.
Lightness of the selected color, from 0 to 100.
Opacity from 0 to 1.
Black or white, whichever reads better on top of the selected color. Transparency is ignored, because what shows through is the background behind the element.
Yes when the selected color is dark enough to need light text on top of it. Empty color reads as not dark.
True when the component is not disabled.
True when the input is marked as required.
True when the field is not required, or when it is required and has a valid value.
True while the input has focus.
Where a workflow can start.
Triggered when a different color is confirmed: closing the panel, picking a preset or resetting.
What a workflow can tell the element to do.
The actions can be triggered from any workflow event. The plugin also responds to Bubble's native reset actions (Reset a group/popup).
Restores the default color, or clears it.
Focuses the input and opens the color panel.
Sets the color from a workflow, in any CSS format the input accepts. An empty value clears the color and a value that is not a color is ignored.
Yes applies the value even while the element is disabled. No makes the action do nothing in that state.
defaultno default
New color. Accepts any CSS color the input accepts when typed, in any format. An empty value clears the color, and an unrecognized value is ignored.
defaultno default
optionalBubble has no native color input, so apps usually fall back on a plain text field where the user types a hex code by hand. This plugin gives a real picker with a saturation area, hue and transparency sliders, presets and an eyedropper, and it publishes the chosen color in several formats at once.
No. Place the element on the page, configure the properties in the editor, and read the exposed states in your workflows. Nothing needs to be installed and no external service is involved.
Anything the browser understands as a CSS color: named colors such as tomato, hex with 3, 4, 6 or 8 digits, rgb, hsl and hwb, and the modern formats lab, lch, oklab, oklch, color() in any color space and color-mix(). The output format chosen in the properties does not restrict what can be typed; it only decides how the value comes back.
Yes, and that is unusual: the element publishes an empty value when no color is chosen, so an optional color field in your database can really stay empty instead of defaulting to black or white. The Set value action clears the color when it receives an empty value.
Use value (rgba). With transparency enabled, the hex output has 8 digits, and Bubble's own color fields do not read that format. The value (rgba) state always works, with or without transparency.
The editor preview only shows values typed as literals. If the default value comes from a dynamic expression, the canvas shows the empty pattern while the app shows the color normally. This is a limitation of the Bubble editor, not of the element.