The Dialog People Already Know
Opens the color picker the operating system provides, the same one they use everywhere else on their computer.
NWD Color Picker (Lightweight) is the color input Bubble never had, in its smallest possible form. It exposes the color dialog the operating system already provides, the same one people use everywhere else on their computer, so there is no panel to load and no library to ship.
No data collected This plugin does not collect user data.
Built for what Bubble does not cover.
Bubble has no native color input. The usual workaround is a text field where someone types a hex code, which works until the first typo, and the alternative is carrying a whole picker interface for what is, most of the time, a single swatch.
Opens the color picker the operating system provides, the same one they use everywhere else on their computer.
No library and no floating panel: the element is a native input, so it is ready the moment the page is.
The starting color takes a dynamic expression, and left empty the input really starts with no color.
Border, border radius and shadow come from the element's own style panel, and the color fills whatever box you give it.
Fully operable from the keyboard and announced to screen readers, with motion preferences respected.
Everything the input knows is available to your workflows, and every change is an event you can react to.
In detail
Place NWD Color Picker (Lightweight) wherever the color should be picked. The swatch fills the whole element, so sizing the element is sizing the color.
Border, border radius and shadow are the element's own, in Bubble's style panel. The plugin draws no frame of its own, which is what keeps a white color visible on a white page: give the element a border or a shadow and the swatch reads against any background.
Default value accepts hex (#rrggbb or #rgb) and rgb/rgba, and takes a dynamic expression, so the color of the record being edited can open the input already on it.
Leave it empty and the input starts with no color at all: it shows diagonal stripes and publishes an empty value, until someone picks one. It is the same thing an empty field in your database means, carried to the screen instead of turned into black.
This input is disabled? blocks the interaction, and Input opacity (disabled) says how faded it looks while blocked.
The value state carries the chosen color as hex, and the value changed event fires once per confirmed color. Reset, Focus and Set value drive the input from any workflow.
Color applied on load and on reset. Accepts hex (#rrggbb or #rgb) and rgb/rgba. Leave it empty and the input starts with no color at all: it shows diagonal stripes and the value state stays empty until someone picks one.
defaultrgba(77,190,255,1)
Accepts hex with 3 or 6 digits and rgb/rgba. A value the browser cannot read is ignored instead of clearing the color, and an empty value starts the input with no color.
Disables the component, preventing any interaction.
defaultno
Opacity applied to the swatch when disabled, from 0 to 1.
default0.5
Name read by screen readers. When empty, uses 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.
Selected color as hex (#rrggbb). Never empty: the system dialog always holds a color.
True when the component is not disabled.
True while the input has focus.
Where a workflow can start.
Triggered when a different color is confirmed in the system dialog, and on reset. It does not fire while the color is being dragged inside the dialog.
What a workflow can tell the element to do.
Restores the default value.
Focuses the input and opens the system color dialog. The dialog only opens when the action runs inside a user gesture, such as a button click with no asynchronous step before it; otherwise the input keeps the focus and Enter or Space opens it. Does nothing while the element is disabled.
Sets the color from a workflow. A color the browser cannot read 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, as hex (#rrggbb or #rgb) or rgb/rgba. Leave it empty to clear the color: the input goes back to showing no color and the value state becomes empty. A color the browser cannot read does nothing.
defaultno default
optionalThe one the operating system provides. It looks different on Windows, macOS, Android and iOS, and that is the point: people already know it, and nothing extra is downloaded to show it. If the picker must look the same everywhere and live inside the page, that is the NWD Color Picker (HEX/RGB/HSL).
This one is deliberately small: the system dialog, a default value, an empty state and the chosen color as hex. The full one draws its own panel inside the page, with transparency, typed colors in any CSS format, presets, an eyedropper and the color in five formats at once. Same family, two different jobs.
Yes. Leave Default value empty and the input starts with no color: diagonal stripes on the swatch and an empty value in your workflows. Picking a color leaves that state, the Set value action with an empty value returns to it, and Reset returns to it too when the default is empty. The system dialog itself always holds a color, so what it opens on is black, but black is never published as a choice nobody made.
No. The browser's color input has no alpha channel, so the color is always fully opaque. Transparency is in the full picker.
When the person confirms a color in the dialog, and on reset. It does not fire while the color is being dragged inside the dialog, so a workflow attached to it runs once per choice rather than hundreds of times. The value state does follow the drag, for anything that should react live.
Browsers only open the system dialog inside a gesture from the person. Triggered straight from a button click, Focus opens it; placed after an asynchronous step, such as a database action, the browser refuses and the input simply keeps the focus, where Enter or Space opens it.
Yes. The visual properties support Bubble's predefined styles, so a look can be saved once and applied to every input in the app. A few sizing fields are deliberately not dynamic, and that is what lets them travel inside the style instead of being set one input at a time.
The plugin was renamed and its contract was brought in line with the rest of the Newed UI library. Apps installed before this version keep working visually, but the workflows that read the element need one pass.
This plugin is part of Newed UI - Component Library, a growing library of advanced, highly customizable components for Bubble, inspired by a personal component library originally built for React. Each component is built from scratch, carefully designed, and tested in real applications to deliver the level of control, polish, and reliability that native Bubble elements often don’t provide. Look for other Newed plugins in the marketplace.
Because every component is built from scratch instead of wrapping a native element, they share the same look across the library and render the same way in every browser.