Documentation

Custom branding reference

Change Unity Dashboard appearance with custom branding options.
Read time 7 minutesLast updated 3 hours ago

Explore asset and color slots you can control with the
shared-assets
ConfigMap. To deploy the ConfigMap, refer to Enable custom branding.

Customizable assets

The
shared-assets
ConfigMap holds the following assets:

Asset

Where it appears in Unity Dashboard

Required

logo.svg
Primary logo in the application header.No
label-logo.svg
Compact logo in the sidebar footer when the navigation pane is collapsed.No
favicon.ico
Browser tab icon.No
palette.json
Color palette for the light and dark themes. Applies to both Unity Dashboard and the embedded Asset Manager.No
overrides.css
Stylesheet for fine-tuning logo dimensions, spacing, or other styling that the palette can't reach.No
If an asset is missing from the ConfigMap, Unity Dashboard uses the bundled default for that item. Use the boilerplate
shared-assets
ConfigMap
as a starting point.

CSS overrides

Use
overrides.css
to style elements the palette can't express, such as logo dimensions, brand mark spacing, or detailed data table tweaks. Unity Dashboard loads
overrides.css
after its bundled stylesheet, so any rule you provide takes effect without
!important
.

CSS hooks for logos

The following table lists the CSS classes you can target:

Class

Element

.vpc-logo
Primary logo in the application header.
.vpc-label-logo
Compact logo in the sidebar footer when the navigation pane is collapsed.
The default bundled stylesheet contains the following settings:
.vpc-logo { height: 24px;}.vpc-label-logo { width: 51px; height: 24px;}

Example
overrides.css
snippets

/* Taller header logo with extra right-side spacing. */.vpc-logo { height: 32px; margin-right: 12px;}/* Square compact mark for the collapsed sidebar. */.vpc-label-logo { width: 32px; height: 32px; object-fit: contain;}/* Tint a monochrome SVG to match the brand accent. Works only if the SVG uses fill="currentColor" or its paths are unstyled. */.vpc-logo { color: #0a6ec8;}.vpc-logo path { fill: currentColor;}/* Reach a region the palette can't recolor: the data table pinned column shadow. */.MuiDataGrid-pinnedColumns { box-shadow: -2px 0 4px rgba(0, 0, 0, 0.08);}

CSS override tips

  • Keep the header logo height between 24 and 36 pixels. Larger values increase the header height and break the vertical alignment with the navigation icons.
  • The compact logo (
    .vpc-label-logo
    ) is only visible when the sidebar is collapsed. Verify both the expanded and collapsed states after editing.
  • Prefer SVGs that use
    fill="currentColor"
    or unstyled paths, so a single CSS rule can recolor them and they respect the active light or dark scheme.
  • For data table tweaks beyond what the palette allows, target
    .MuiDataGrid-*
    selectors.

Theme palette structure

The
palette.json
file defines two color schemes,
light
and
dark
. End users switch between them from the Theme option in the user menu. Both schemes accept the same set of keys.
The default palette file has the following contents:
{ "colorSchemes": { "dark": { "palette": { "primary": { "main": "#0A6EC8", "dark": "#1361AD", "lighter": "#012348", "contrastText": "#C6E4FF" }, "common": { "black": "#000000", "white": "#FFFFFF" }, "divider": "rgba(255, 255, 255, 0.08)", "dividerElevation0": "#3a3a3a", "action": { "hover": "rgba(255, 255, 255, 0.071)", "selected": "#313131", "disabled": "#3a3a3a" }, "error": { "main": "#e5484d" }, "warning": { "main": "#ffc53d" }, "success": { "main": "#30a46c" }, "background": { "default": "#131313", "paper": "#191919", "paperElevation0": "#222222", "modalElevation": "#2a2a2a", "datagridHeader": "#222222" }, "text": { "primary": "#eeeeee", "secondary": "#b4b4b4" }, "grey": { "50": "#111111", "100": "#191919", "200": "#222222", "300": "#2a2a2a", "400": "#313131", "500": "#3a3a3a", "600": "#484848", "700": "#606060", "800": "#6e6e6e", "900": "#7b7b7b" } } }, "light": { "palette": { "primary": { "main": "#0A6EC8", "dark": "#0060B8", "lighter": "#ECF5FF", "contrastText": "#0E345B" }, "common": { "black": "#000000", "white": "#FFFFFF" }, "divider": "rgba(0, 0, 0, 0.1)", "dividerElevation0": "#e8e8e8", "action": { "hover": "rgba(0, 0, 0, 0.059)", "selected": "#e8e8e8", "disabled": "#e0e0e0" }, "error": { "main": "#e5484d" }, "warning": { "main": "#ffc53d" }, "success": { "main": "#30a46c" }, "background": { "default": "#FFFFFF", "paper": "#fcfcfc", "paperElevation0": "#f9f9f9", "modalElevation": "#FFFFFF", "datagridHeader": "#f9f9f9" }, "text": { "primary": "#202020", "secondary": "#646464" }, "grey": { "50": "#fcfcfc", "100": "#f9f9f9", "200": "#f0f0f0", "300": "#e8e8e8", "400": "#e0e0e0", "500": "#d9d9d9", "600": "#cecece", "700": "#bbbbbb", "800": "#8d8d8d", "900": "#838383" } } } }}
You don't need to provide every key. If you omit a key, Unity Dashboard uses the bundled default. A minimal palette can override only
primary.main
,
primary.contrastText
,
background.paper
, and
background.datagridHeader
and inherit the rest.

Palette keys

The following keys are read from the palette and applied to Unity Dashboard.

Brand and accent

Key

Effect

primary.main
Brand accent for calls to action, avatars, links, and the selected-tab underline.
primary.dark
Hover and active state of contained primary buttons.
primary.contrastText
Text color on contained primary buttons.
primary.lighter
Background of the selected row in data tables.
common.black
,
common.white
Initials text on avatars and certain icon fills.

Backgrounds and surfaces

Key

Effect

background.default
Application canvas behind page content.
background.paper
Cards, panels, headers, sidebars, popovers, modals, table body cells, and side panels. The most-visible surface.
background.paperElevation0
Background of a table row under the cursor.
background.modalElevation
Dialogs and modals, including the table column menu and filter panel.
background.datagridHeader
Table column header row, pagination footer, and pinned header background.

Text

Key

Effect

text.primary
Page titles, body text, primary navigation labels, and table content.
text.secondary
Section labels, captions, email addresses, and descriptive copy.

Dividers and overlays

Key

Effect

divider
Borders between elements, plus the chip background in tables.
dividerElevation0
Border of elevated popovers and table menus.
action.hover
Translucent hover tint on icon buttons.
action.selected
Background tint on the selected secondary navigation item.
action.disabled
Disabled control affordance.

Status colors

Key

Effect

error.main
Notification badge, error states, and the In review status.
warning.main
Warning states and the Draft status.
success.main
Success states, the organization icon, and the Approved status.

Neutral ramp

The
grey.50
through
grey.900
keys define the neutral color ramp for components that read
grey.*
directly. Provide all 10 steps to keep the ramp continuous.

Palette tips

  • Choose
    background.paper
    first, because it paints the most-visible surface (header, sidebars, popovers, table cells, side panels).
  • Set
    background.default
    and
    background.paper
    to slightly different values (a 5–10% lightness step) so the page reads as elevated. Identical values look flat.
  • Set
    background.datagridHeader
    to a value that differs from
    background.paper
    , so the table header doesn't disappear into the table body.
  • primary.main
    controls more than buttons. It also paints avatars, links, and the selected-tab underline. Avoid pure-saturated brand reds because they collide with
    error.main
    .
  • primary.lighter
    is the selected-row background. Keep it visibly tinted but soft enough that the text on top stays readable.
  • divider
    doubles as the chip background in tables, so don't make it strongly chromatic.

Where each palette key paints

The following screenshots show every region that each
palette.json
slot paints. They were captured with a demonstration palette where each slot has a unique color, so each region is visually distinct. In a real palette, regions that share a slot share the same color.
The demonstration palette uses these colors:
  • background.paper
    : light amber
    #fff8e1
    , dark deep purple
    #4a148c
  • background.default
    : light blue
    #e3f2fd
    , dark navy
    #1a237e
  • background.datagridHeader
    : light lavender
    #e1bee7
    , dark deep red
    #b71c1c
  • background.paperElevation0
    (row hover): light peach
    #ffccbc
    , dark teal-green
    #00695c
  • background.modalElevation
    : light mint
    #c8e6c9
    , dark dark cyan
    #006064
  • primary.main
    : hot pink
    #ff007f
    in both schemes
  • primary.lighter
    (selected row): light very-light pink
    #fce4ec
    , dark deep magenta
    #5a0030
  • divider
    : orange
    #ff9800
    in both schemes
  • dividerElevation0
    : amber
    #ffd54f
    in both schemes
  • text.primary
    : light navy
    #1a237e
    , dark yellow
    #ffeb3b
  • text.secondary
    : light teal
    #00695c
    , dark light-teal
    #80cbc4
  • action.selected
    : orange
    #ff9800
    translucent in both schemes
  • action.hover
    : yellow
    #ffeb3b
    translucent in both schemes
  • error.main
    : red
    #f44336
    .
    warning.main
    : amber
    #ffc107
    .
    success.main
    : green
    #4caf50

Unity Dashboard shell

The standard signed-in view: top bar, primary navigation, secondary navigation, and content area.
Unity Dashboard shell, light theme.
Unity Dashboard shell, dark theme.
The numbered regions in the screenshots use these palette keys:
  1. Top bar:
    background.paper
  2. Main content canvas behind cards and panels:
    background.default
  3. Primary and secondary navigation sidebars:
    background.paper
  4. Background of the selected primary navigation item:
    action.selected
    , applied as a translucent tint over
    background.paper
  5. Section labels in the sidebars (such as Administration, Organization, and Licensing):
    text.secondary
  6. Primary navigation labels:
    text.primary
  7. Outlined call-to-action button text and border:
    primary.main
  8. Borders between rows in the info card:
    divider
  9. Organization icon background:
    success.main
  10. Notification unread badge:
    error.main

User menu popover

The popover that opens from the user avatar in the upper-right corner.
User menu popover, light theme.
User menu popover, dark theme.
The numbered regions in the screenshots use these palette keys:
  1. Popover surface:
    background.paper
  2. Popover outer border:
    divider
  3. Avatar circle when no photo is set:
    primary.main
    . Initials text:
    common.white
  4. User display name:
    text.primary
  5. Email address:
    text.secondary
  6. Menu item labels:
    text.primary
  7. Backdrop dim behind the popover: a semi-transparent overlay that doesn't come from
    palette.json

Members table

The Members tab under Administration > Settings. This table uses the shared application table component.
Members table, light theme.
Members table, dark theme.
The numbered regions in the screenshots use these palette keys:
  1. Selected tab indicator (the Members underline):
    primary.main
  2. Toolbar above the table (filter and search):
    background.paper
  3. Column header row:
    background.datagridHeader
  4. Body cells:
    background.paper
  5. Border between rows:
    divider
  6. Member avatar in the cell:
    primary.main
  7. Member name:
    text.primary
  8. Email address:
    text.secondary
  9. Role and type chip background (such as User and Owner):
    divider
  10. Roles list text:
    text.primary

Groups table

The Groups tab under Administration > Settings.
Groups table, light theme.
Groups table, dark theme.
The numbered regions in the screenshots use these palette keys:
  1. Contained primary call-to-action button (Create Group):
    primary.main
    background,
    primary.contrastText
    text
  2. Toolbar above the table (search field):
    background.paper
  3. Column header row:
    background.datagridHeader
  4. Body cells:
    background.paper
  5. Pagination footer:
    background.datagridHeader
  6. Borders between cells and rows:
    divider
  7. Cell text:
    text.primary

Asset Manager list view

The list view of All assets in Asset Manager. This view is rendered by the embedded Asset Manager submodule, which inherits the Unity Dashboard palette.
Asset Manager list view, light theme.
Asset Manager list view, dark theme.
The numbered regions in the screenshots use these palette keys:
  1. Contained primary call-to-action button (+ Add):
    primary.main
  2. Toolbar (search, filters, view switcher):
    background.paper
  3. Column header row:
    background.datagridHeader
  4. Row under the cursor:
    background.paperElevation0
  5. Pagination footer:
    background.datagridHeader
  6. Right context panel (summary and recent activity):
    background.paper
  7. Body cell:
    background.paper
  8. Row borders:
    divider

Selected row and side panel

The state when a row is selected in the asset list, which opens the side panel and the selection toolbar.
Selected row and side panel, light theme.
Selected row and side panel, dark theme.
The numbered regions in the screenshots use these palette keys:
  1. Selected row background:
    primary.lighter
  2. Selected row checkbox:
    primary.main
  3. Selection toolbar (1 selected, Link, Download, and so on):
    background.paper
  4. Contained primary call-to-action button in the toolbar (Open):
    primary.main
  5. Side panel surface:
    background.paper
  6. Section labels in the side panel (Description, Status, Projects):
    text.secondary
  7. Asset name:
    text.primary
  8. Project chip background:
    divider