Build Dashboards
Themes
A dashboard’s look — surfaces, text, chart detail and the data colours — comes from one place. Two words name it, the same way everywhere in DataSquares:
- a style is one of the six looks of the shared library, each in two colourways, offered wherever you choose a look (decks, dashboards, reports, stories);
- a theme is a saved set: one of the built-in dashboard themes, or one your workspace saved.
Light or dark for yourself
Section titled “Light or dark for yourself”Separately from a dashboard theme, each person chooses whether the app itself is light, dark or follows their device.
Open Settings, then Appearance. Choose Light, Dark or System, which follows your device.

The whole app changes as soon as you choose. The choice is remembered on this device.

Pick a style or a theme in the editor
Section titled “Pick a style or a theme in the editor”Style, on the rail, opens with Choose a style first, then the built-in and workspace Themes, then Customize…, Reset colours… and Page background and size….
Start from a style
Section titled “Start from a style”Style → Choose a style gives a dashboard a whole look in one choice: its colours, its fonts and the shape of its cards, from the same library of styles DataSquares uses wherever people choose a look.
- Your brand kit comes first. When your workspace has a brand kit that changes some look (its fonts, or a colour some style keeps), the first choice is the Use brand kit switch. Turning it on before any style lays your brand’s colours and fonts over the style that keeps most of the kit (where several keep as much, a light one, or a dark one when your brand’s background is dark), and the switch stays there once a style is in use. Its card says which of your colours the style shown replaces, before you turn it on. Then come the six styles, each with what it is like and its two colourways, each with a preview drawn in its own colours and fonts.
- Choosing is one step. The dashboard takes the style at once. Cards and their data stay exactly as they are: a chart, table or KPI coloured with theme colours takes the style’s colours, and a colour you typed as a hex stays as it is. Undo, beside the name of the look you chose, puts the theme from before back, one choice at a time, and stays there when you close the panel and open it again. A dashboard that had no theme of its own goes back to following the workspace default, or the app’s light or dark mode.
- Nothing changes until someone chooses. An existing dashboard keeps its theme; no style is marked as chosen until you pick one.
Once a style is in use, the same panel lets you keep the style and swap the rest:
- Colours — another palette from the library, light or dark, or your brand kit’s colours (when some style keeps them). A palette sets the canvas, cards, text, accent and the positive and negative colours, and the chart series: its six data colours, then two deeper shades of its first two, so a chart with eight series still tells them apart.
- Fonts — another font set, or your brand kit’s fonts. Card titles take the set’s title face, KPI values its number face, the card header strip and table headers its label face, and axis labels, legends and cells its caption face; everything else takes its body face. Sizes stay your dashboard’s own.
- Use brand kit — the same switch as before a style: turn it on or off over the style in use.
Every style and palette passes the same readability check as the built-in themes. So does a style with your brand kit over it: a colour of your kit that would be hard to read in that style is replaced by the style’s own there (see Brand kit).
The look is the dashboard’s theme like any other: you can still open Customize… and change a single colour, which keeps the style it started from. Picking a built-in or workspace theme afterwards replaces the style.
Workspace admins can start a custom theme from a style too (see below), so the look is saved once and picked by any dashboard or report.
Built-in themes
Section titled “Built-in themes”Eleven built-ins ship with DataSquares: Graphite Dark, Porcelain Light, Corporate Navy, Deep Ocean, Midnight Aurora, Paper & Ink, Emerald Executive, Sunset Warm, and three accessible themes — Okabe–Ito (colour-blind safe), High Contrast Light and High Contrast Dark. Pick one from the rail’s Style, under Themes — each shows a mini-dashboard preview, and your workspace’s custom themes appear right below the built-ins.
The accessible three are built for readers, not brands: Okabe–Ito is the reference colour-vision-deficiency palette (its orange, sky blue and yellow a step deeper so they read on white cards, and its black, which no reader can tell as a series colour, a plum), and the two high-contrast themes put every text token above 7:1 with series colours that stay separable on the card.
Every built-in’s series colours pass the same colour-blind and separation checks, every series reads at 3:1 or more on its cards, and every series stands clearly apart from the colours a good or bad change is drawn in, so a series never reads as good or bad news; a change always carries its arrow and sign too. In October 2026 the good and bad colours moved first, a visible step; the four darker themes’ series were stepped down from neon in their places; the light themes’ faintest series went a step deeper, to 3:1; the colour-blind safe theme and Paper & Ink trade black for a plum; and the high-contrast themes’ own red and green series were re-stepped. Diverging scales that take their ends from the good and bad colours shift with them. The release note lists each change.
Not quite right? Customize… docks a per-token editor beside the canvas, where Card settings docks (one of the two at a time; selecting a card closes it), and layers your overrides on the active theme (switching themes clears overrides). At its head, a preview of the look draws a card title, axis labels and a KPI with its change in the theme’s own fonts and colours, and follows every change. Its controls sit in three folds:
- Colours (open) — the data colours and Apply palette, the signal colours (accent, good and bad changes) and the chart detail (legends, axes, grid lines, data labels, tooltips).
- Text — the theme font, the text classes and the text colours.
- Cards and page — the card and page defaults (border, shadow, corners, header, legend, table style, page background) and the surfaces.
Each colour there is a tile with its swatch and code that opens the
colour panel under it:
In this theme (the theme’s colours, each with six shades), then your
brand kit’s colours, and each swatch’s contrast where that
colour sits. Its search takes a code as brand guides list it (#0F62FE or
0F62FE). A series colour’s panel opens with Palettes for every series.
The Theme font and each text class’s font are tiles that open the
font panel, your brand
kit’s fonts first, with Use the app default (or Use the theme font) at
its foot. From the keyboard, Tab reaches each tile and Enter opens its
panel; a screen reader names each one (Series colour 3).
Customize changes the theme itself, so it has no Change all: every card
that follows the theme follows each change. The Card background and
Page background defaults are tiles too (see
Visual and page defaults).
Custom themes
Section titled “Custom themes”Admins manage workspace themes under Admin → Settings, in the Dashboard themes section of that page. The editor covers every token group:
- Surfaces — canvas, card, and header backgrounds; card borders.
- Text — body, muted, card titles, header text.
- Chart detail — legends, axis labels and lines, grid lines, data labels, tooltip background/text.
- Signals — accent colour, positive/negative delta colours.
- Data colours — the eight-colour series palette. A chart of more series takes shades of the theme’s colours past them, made to read on its page and cards, never a colour twice. A file the server renders prints on white paper (Themes on paper), so on a dark theme series 9 and up print darker there than on screen.
- Font — the theme’s typeface.
In the editor each of these colours is a tile that shows the colour and its code (with how opaque it is, when it is see-through) and opens the colour panel under it: In this theme (the theme’s colours, each with six shades), your brand kit’s colours, and each swatch’s contrast where that colour sits, as the readability check reads it. A theme’s colours keep their opacity (every built-in’s grid lines are see-through), written as they were. A series colour’s panel opens with Palettes for every series: each curated palette as a strip of its colours, those tuned for the theme’s card colour first, applied to every series at once, and a box for codes pasted from a brand guide, Paste hex codes, in series order. The Theme font is a tile in its own face that opens the font panel, your brand kit’s fonts first; Use the app default, at its foot, clears it. On a touch screen the tiles and their panels are at least 44 px.
Every font field of a dashboard opens the font panel: a card’s Font (under Typography, or on the quick bar), the Theme font in a dashboard’s Customize… and the theme manager, and each text class’s font. It offers your brand kit’s fonts first, then the thirty open-licence families DataSquares bundles, by kind — Geist, Geist Mono, Newsreader, Fraunces, Bricolage Grotesque, Inter, Lora, Playfair Display, Montserrat, DM Sans, Space Grotesk, Source Serif 4, Merriweather, Work Sans, Plus Jakarta Sans, IBM Plex Sans, Manrope, Noto Sans Arabic, Noto Sans Hebrew, Roboto, Open Sans, Lato, Poppins, Source Sans 3, Nunito, Raleway, PT Serif, Fira Code, Source Code Pro and JetBrains Mono — and the fonts of your computer, each name in its own face. The old font lists are gone. The words of a text card keep their six fonts (see Colours and fonts).
Every one of them is a file DataSquares serves itself, under the SIL Open Font License: no font is fetched from another site, so the fonts show the same on every network, and a card set in Roboto or Playfair Display in its Typography draws and prints in that family too. A font is fetched only when a dashboard uses it, so a dashboard on a built-in theme loads nothing new. Charts redraw once their font has arrived, a card’s own font included, and a PNG, PDF or PowerPoint export from the dashboard waits for the fonts in use, so the file shows the same fonts and colours as the screen.
Start from a style (your brand kit first, then the styles, with their colours and fonts swappable before you save), any built-in or existing theme, a pasted brand hex, a generated brand theme, or an imported file — with a live mini-dashboard preview as you edit. A theme started from a style is named after it until you type a name of your own. Themes can be duplicated, exported, and deleted.
Walkthrough: create a workspace theme
Section titled “Walkthrough: create a workspace theme”Customise a built-in theme, generate a palette from a brand colour, then export or delete the result.
Open Admin, then Themes. The built-in themes are listed first. The star marks the workspace default, and the pencil makes an editable copy of a built-in theme.

Choose the pencil on a built-in theme to customize it. The editor opens with that theme's surfaces, data colors and typography, and a live preview beside them.

Or choose New theme, name it, and use Generate from a brand color: enter your brand color, pick light or dark surfaces, and choose Generate. A full set of surface and data colors is drafted for you, and you can adjust any of them.

Check the live preview. Saving is blocked while any text color is hard to read, and the editor warns you about weak contrast.

The theme joins the list under the built-in ones. Beside it: set as default, edit, duplicate, export as JSON or as a Power BI theme, and delete.

Choose the bin to delete a theme. Dashboards that used it fall back to the default theme, and it cannot be restored.

Workspace default theme
Section titled “Workspace default theme”Star a theme (built-in or custom) in Admin → Settings and it becomes the workspace default: dashboards that haven’t chosen their own theme inherit it. Deleting the starred theme simply clears the default.
A theme can name an opposite-mode partner (Graphite Dark and Porcelain Light are partners, as are the two High Contrast themes; a custom theme picks its partner in the editor). As the workspace default, such a theme follows the app’s light or dark mode across the pair, so a brand look stays on-mode for every reader. A dashboard that picks a theme directly keeps that exact theme in both modes.
Graphite Dark and Porcelain Light share one series palette — blue, orange, magenta, amber, indigo, coral, violet, olive — each colour stepped for its mode, so a chart keeps its colours when you switch between light and dark. The palette is checked for colour-blind separation, and AI charts use it too.
Text classes
Section titled “Text classes”Every theme carries Power BI’s four text classes — callout (KPI values), title (card and chart titles), header (the card header strip and table column headers) and label (axis labels, legends, data labels, table cells and KPI labels) — each a font face, a size in points and a colour. Set them under Text classes in the theme manager or in a dashboard’s customize panel; a part you leave blank follows the theme font and the surface’s own size and colour, so an untouched theme renders exactly as before. Per-card format options still win over the class, and a class colour is held to the same readability floor as every other text token.
Visual and page defaults
Section titled “Visual and page defaults”A theme can also carry visual defaults — card border, shadow, corner radius, background, padding, header preset, tooltip trigger, legend position, data labels and a table style — and page defaults: a backdrop colour, a wallpaper with its fit, and transparency. Set them under Visual defaults and Page defaults in the theme manager (the live preview shows the frame and page look) or in a dashboard’s customize panel.
The Card background and Page background defaults are colour tiles that open the colour panel: the theme’s colours with their shades, kept as the theme’s so a default follows the theme (follows the theme), and in the theme manager your brand kit’s, with an opacity, so a card can be see-through over a wallpaper. Not set clears one. In a dashboard’s Customize…, while your company locks its colours, the panel offers only Allowed colours: the look’s colours and the brand’s own.
Defaults only fill what a card or page leaves unset: a card’s own format options and a page’s own settings always win, field by field, and a theme with no defaults renders every existing dashboard exactly as before. In a card’s format panel the Use theme defaults action clears the card’s own frame, header, legend, label and tooltip choices so the theme’s apply again.
Table style presets
Section titled “Table style presets”Tables start from a named style — Default, Minimal, Bold header, Alternating rows, Contrast alternating rows, Condensed or Sparse — picked under Table style in the card’s format panel or set for the whole theme as a visual default. A preset maps onto the table’s own options (header style, density, borders, striping), so any part can still be overridden per card. Presets are theme-aware: the header rule and the filled header take the theme’s table accent, and stripes are a shade of the card.
Power BI theme files
Section titled “Power BI theme files”Import theme accepts DataSquares theme exports and Power BI theme
JSON — bring your existing PBI brand theme across as a starting point. The
import reads the data colours, the structural colours (foreground,
firstLevelElements … fourthLevelElements, secondaryBackground,
tableAccent), the sentiment colours (good / neutral / bad), the
divergent scale (maximum / center / minimum / null), the four
textClasses and the common visualStyles keys (page background, image and
transparency; visual background, border, drop shadow and title).
Every workspace theme exports two ways: as a DataSquares .theme.json, and
as a Power BI theme (.pbi-theme.json) that opens in Power BI Desktop
via View → Themes → Browse for themes and re-imports here with the same
tokens.
Brand generator
Section titled “Brand generator”Generate from a brand colour builds a complete theme from a single hex: choose light or dark, and it derives tinted surfaces, readable text tokens, and eight distinct series hues around your brand colour. Its Brand colour tile offers your brand kit’s colours first, then the theme’s series colours.
Draft with AI goes one step earlier: describe the look (“warm editorial, cream paper, one accent”) or paste a brand page URL, and the AI proposes the brand colour, the mode and eight series colours, which the generator turns into a full theme in the editor. A brand page is fetched server-side from public hosts only and reduced to a few hints (title, theme colour, the colours its markup uses most) — the page itself never reaches the AI. The readability gate still applies: an AI draft a reader could not make out cannot be saved. Each draft uses AI credits, as the editor says, and is refused with a clear message when AI is not configured.
Contrast guard
Section titled “Contrast guard”Both the customize panel and the admin editor run a live WCAG readability check — token pairs that would be unreadable (text on its background, labels on cards) get an amber warning before your users ever squint at them. The signal colours count as text too (KPI deltas, the flat-trend neutral).
The admin editor also refuses to save a theme whose text would be hard to read, at the WCAG lines: small text needs 4.5:1 (labels, legends, data labels, the KPI deltas); a KPI value 3:1 at its own size or at 14 pt or more, 4.5:1 when set smaller. Under the preview, each colour under its line is listed. A theme saved before these lines can still be renamed: its colours stay as they were saved, and Save is held back only once you change a colour and text still falls under its line. It offers a Colour-blind preview that shows the live preview as a reader with red–green colour blindness would see it, so series that merge for them are caught before the theme ships.
Every theme also carries a neutral colour (the flat-trend ink on KPI cards) and a table accent (the header rule, the totals rule and the sort marker in tables), both under Signals in the editors.
Theme colours in cards
Section titled “Theme colours in cards”A card’s colours are chosen in the colour panel (see Colours and fonts). Under the theme’s name, marked follows the theme, it lists the theme’s canvas, card, border, text, muted text and accent colours and its eight series colours, each with six shades (80, 60 and 40 % lighter, the base, 25 and 50 % darker).
- A theme colour is kept as the theme’s, not as a code. Its tile reads, for example, Series colour 3, 40 % lighter. When the dashboard’s theme or style changes — or, under Auto, when the app switches between light and dark — the colour follows the new theme. Nothing is repainted by hand.
- A code stays a code: one typed, pasted, taken with the eyedropper or set in Custom colour. Existing dashboards are untouched: a colour that was a hex yesterday is the same hex today.
- A field’s empty swatch (The theme’s title colour, No outline) returns it to the theme’s default.
- Contrast. A text colour’s swatches show their contrast on the card’s background, and one under 4.5:1 is hatched and called low contrast: a warning, never a block.
- The theme picker tells you the impact before you switch: how many cards reference theme colours (they will follow) and how many use custom colours (they will not change).
References render the same everywhere the card appears — the canvas, the viewer, shares and embeds, and the server-rendered PDF and Excel exports, which resolve them with the same rules against the dashboard’s theme (a dashboard on Auto exports on the light built-in, as paper is light). Shades are computed in OKLCH, so a tint of blue stays blue rather than turning neon.
For the API and ALM exports the grammar is plain text in any colour field:
theme:3, theme:3:+40, theme:fg, theme:muted:-25, theme:div:max.
Divergent scale and gradient formatting
Section titled “Divergent scale and gradient formatting”Every theme carries a divergent scale — a minimum, a centre and a maximum
colour (by default the theme’s negative signal, its card surface and its
positive signal), plus a no-data colour. A custom theme can set its own under
divergent in its tokens.
- Heatmaps and maps choose their Colour scale under Colors: Sequential (theme) runs from the muted tone to the card’s first data colour; Divergent (theme) uses the theme’s scale and follows a theme switch; Custom stops lets you pick a low, an optional middle and a high colour in the colour panel. A map’s Colour on the quick bar opens the same scale.
- Gradient rules in Conditional Formatting colour every value by where it sits between a minimum and a maximum, between a low end and a high end colour (Rule 1 low end and Rule 1 high end, the theme’s divergent ends by default). Table cells and KPI backgrounds take the gradient with readable text chosen automatically; bar, column and scatter marks take it as their fill. Threshold rules keep first-match precedence, so a gradient can sit under a highlight rule.
- Checked before you save. Two ends that read alike, or that collapse for a reader with red–green colour blindness, are flagged under the two ends. In-between colours are computed in OKLCH, so the middle of red and green is a real colour, not grey.
Themes on paper
Section titled “Themes on paper”A server-rendered PDF, Excel or HTML export is produced by the API, not by the browser, and it carries the theme the dashboard or report is authored in:
-
Colour references resolve with the same rules the canvas uses (a dashboard on Auto exports on the light built-in, as paper is light).
-
Text classes size and colour the exported chart titles, legends, axis labels and data labels, and a block’s heading in the PDF. Sizes are authored in points, which is what the page takes.
-
Visual defaults fill whatever a card left unset before the chart is drawn — legend position, data labels, the table style — the same fill-absent-only rule the canvas follows, so a card’s own choice still wins.
-
The dashboard’s own changes — a style chosen with Choose a style, or single colours changed under Customize… — lay over its theme on paper as on screen: series colours, the canvas and card colours that theme colour references resolve to, text classes, and card corners and outlines.
-
A card’s own font (its Typography) is drawn in the PDF from the same bundled files the screen uses, on the chart’s text, a KPI’s value and label and a table’s cells, over the theme’s; PowerPoint names it, Excel draws its chart pictures in it, and scheduled emails attach the same files.
-
A style’s fonts are drawn in the PDF from the same bundled fonts the screen uses: card titles in the title face, KPI values in the number face, and chart titles, legends, axis and data labels in their faces. A face with no bold of its own draws its heaviest weight. Excel and HTML files follow the style’s type as closely as each file type can (a serif title stays serif). A text class set to any bundled family draws in that family in the PDF, a classic stack’s too (Inter, Source Serif 4, Space Grotesk, Geist or JetBrains Mono); one that names a font of your computer first (Georgia, the system font) draws in the PDF’s own fonts, by its kind.
A theme part with nothing set changes nothing, so a dashboard that never picked a theme exports exactly as it did before. Interactive-only settings (tooltip trigger, hover behaviour) have no meaning on paper and are skipped.
Themes elsewhere
Section titled “Themes elsewhere”Reports use the same theme catalog to skin their pages, and a scheduled report is delivered with its theme applied.
