Size and Theme
Deephaven theme
The Deephaven Web IDE theme can be changed in the Settings menu. The Default Dark and Default Light themes are provided, but you can also create a custom theme.
Color palette
deephaven.ui uses the same color convention as Adobe Spectrum. A color is specified with a name and an index number. For example, blue-100 or red-600. In a dark theme, blue-100 will be a dark blue and blue-1000 will be a light blue. In a light theme, they will be reversed. The example component below displays a color palette for a selected color. Try changing the theme to see the difference in colors.
from deephaven import ui
def generate_colors(color):
colors = []
for i in range(100, 1401, 100):
colors.append(f"{color}-{i}")
return colors
@ui.component
def color_palette():
color, set_color = ui.use_state("blue")
colors = ui.use_memo(lambda: generate_colors(color), [color])
return [
ui.picker(
ui.item("red"),
ui.item("orange"),
ui.item("yellow"),
ui.item("chartreuse"),
ui.item("celery"),
ui.item("green"),
ui.item("seafoam"),
ui.item("cyan"),
ui.item("blue"),
ui.item("indigo"),
ui.item("purple"),
ui.item("fuchsia"),
ui.item("magenta"),
selected_key=color,
on_selection_change=set_color,
label="Pick a color",
),
ui.grid(
[ui.view(ui.text(color), background_color=color) for color in colors],
columns="repeat(5, 1fr)",
auto_rows="size-800",
justify_content="center",
gap="size-100",
),
]
color_palette_example = color_palette()
Dark theme palette

Light theme palette

For a full list of colors, see the Adobe Spectrum color values.
Semantic color
In addition to the color palette, deephaven.ui uses semantic colors which assign color based on meanings. This means that a negative UI element will have the same color throughout the UI rather than various elements having a different shade of red.
For example, the button component uses variant to apply semantic color.
from deephaven import ui
@ui.component
def button_variants():
return [
ui.button(
"Accent",
variant="accent",
),
ui.button("Primary", variant="primary"),
ui.button("Secondary", variant="secondary"),
ui.button("Negative", variant="negative"),
]
button_variants_example = button_variants()
Dark theme buttons

Light theme example

In this example, the toast component uses variant to apply semantic color.
from deephaven import ui
variants = ["neutral", "positive", "negative", "info"]
ui_toast_variants_example = ui.picker(
[ui.item(option) for option in variants],
on_selection_change=lambda variant: ui.toast(variant, variant=variant),
)
Dark theme toast

Light theme toast

Size
deephaven.ui components will be sized automatically based on layout. You can also specify the size using the sizing props:
These props accept normal CSS values like 100px, 50% or 20em. Additionally, they use an Adobe Spectrum dimension value.
When absolute sizing is required, using dimension values help promote consistent sizing of your layout across components.
from deephaven import ui
sizes = [
"size-0",
"size-10",
"size-25",
"size-40",
"size-50",
"size-65",
"size-75",
"size-85",
"size-100",
"size-115",
"size-125",
"size-130",
"size-150",
"size-160",
"size-175",
"size-200",
"size-225",
"size-250",
"size-275",
"size-300",
"size-325",
"size-350",
"size-400",
"size-450",
"size-500",
"size-550",
"size-600",
"size-675",
"size-700",
"size-800",
"size-900",
"size-1000",
"size-1200",
"size-1250",
"size-1600",
"size-1700",
"size-2000",
"size-2400",
"size-3000",
"size-3400",
"size-3600",
"size-4600",
"size-5000",
"size-6000",
]
@ui.component
def size_bar(size):
return ui.flex(ui.view(background_color="blue-500", width=size), ui.text(size))
@ui.component
def ui_sizes():
return [size_bar(size) for size in sizes]
ui_sizes_example = ui_sizes()
