Theming & Time Zones

Set a dashboard's drawing style, palette, accent and light or dark look, turn handwritten callouts on or off, and choose the time zone that dates and 'this month' totals are read in.

11 min read

On this page

This page covers how a dashboard looks (drawing style, palette, accent, light or dark) and how it reads dates (the time zone that drives "by month" axes, date columns, and "this month" comparisons). Both decide what a viewer actually sees, and both can be set at more than one level.

If you are new to dashboards, start with Dashboards overview and Bind a widget to your data first, then come back here to polish the look.

The two things this page controls#

Appearance

The drawing style, the chart palette, an accent color, and whether the dashboard reads as light or dark. This is purely visual: it never changes the numbers.

Time zone

The time zone that date fields are read in. It decides which day a late-night transaction lands on, where month and week boundaries fall, and what "this month" means in a comparison. This can change the numbers, so it is worth getting right.

Open Dashboard settings#

The dashboard-wide look lives in Dashboard settings. Open the dashboard, choose Edit, then select the gear (Dashboard settings) in the editor toolbar. The panel opens beside the canvas and every change saves as you make it.

The panel has these appearance controls, top to bottom:

ControlChoicesWhat it does
AppearanceMatch app (default), Always light, Always dark, Auto (system)Light or dark. Match app follows your BankSync setting.
Accent colorA color, or Clear to go back to the theme defaultThe highlight color, for example a KPI's target bar.
Chart paletteBankSync, Classic, Cool, Warm, Forest, Sunset, Ocean, Mono, ColorblindThe colors every chart on the dashboard draws with.
Drawing styleClean, Sketch, DoodleHow lines and shapes are drawn. See below.
Handwritten calloutsOn or offWhether charts label their highest or lowest point by hand.
Widget frameCard, FramelessThe default border for widgets. A widget's own setting wins.
DensityComfortable, CompactSpacing between and inside widgets.
Corner radiusSubtle, Medium, Round (default)How rounded widget corners are.

The same panel also holds the dashboard's Name, Description, and the Home dashboard setting.

Theme changes the look, not the data

Changing the drawing style, palette, accent, or light and dark never alters a single figure. It only repaints what is already there. The one setting on this page that can move numbers is the time zone, covered below.

Drawing style: Clean, Sketch, or Doodle#

Charts can be drawn crisp or by hand. Each option in Drawing style shows a small preview in your accent color.

StyleWhat you see
CleanCrisp geometric marks with no outline or wobble.
SketchHand-drawn lines with a light wobble. The default for dashboards you build.
DoodleLooser strokes with hatched fills.

The style only changes how marks are drawn. Every bar, point, and slice stays exactly where its value puts it, so a Sketch chart reads the same numbers as a Clean one. Dashboards that never chose a style use Sketch, except dashboards made from a template: those use Clean, which suits money figures, unless the template or you pick another style.

A single chart can use a different style from the rest of the dashboard: select it, open the Style tab, and set Drawing style under Card to Clean, Sketch, or Doodle. Dashboard (the default) follows the dashboard setting. See Layout & composition widgets for the rest of the Style tab.

Handwritten callouts#

With Handwritten callouts on (the default), a chart can write a short note such as "highest" next to its most notable point. Callouts are drawn only in the Sketch and Doodle styles, only on single-series line, area, and column charts, and only when the chart has room: at least three points, a point that clearly stands out, and space to write without covering a mark.

Turn the switch off to remove callouts from every chart on the dashboard. To change one chart instead, use Handwritten callout on its Style tab (Auto, Highest, Lowest, or Off) and, if you like, replace the word with your own Callout text of up to 24 characters.

Chart palettes#

A palette is the ordered set of colors a chart cycles through for its series, slices, or bars. The dashboard's Chart palette applies to every chart on it. BankSync is the default: eight colors chosen to stay readable on the card in both light and dark, and to stay distinct for colorblind viewers. Classic is the earlier indigo-led palette, kept for dashboards that want the old look.

The swatches under the dropdown show the first eight colors of the palette you picked.

A different palette for one chart#

Each chart also has a Palette section at the top of its Style tab. It offers the same named palettes plus Custom (hex list), which swaps in a text box where you type comma-separated hex values, for example #3b82f6,#10b981,#f59e0b. The chart cycles through your colors in order.

A chart that never picked a palette follows the dashboard's Chart palette. If a chart was saved with a palette name that no longer exists, the dropdown shows it with "(renders as BankSync)", and it draws with the BankSync colors.

The first color in the palette is used for a single-series chart; extra colors come into play as soon as a chart splits into several series, slices, or stacked segments. If your data has more series than the palette has colors, the colors repeat.

To change just the first color of one widget, set Accent colour under Card on its Style tab. It replaces the palette's first color for that widget only.

Category colours: one colour per category, on every chart#

Palette order colours categories by the order they first appear, so "Groceries" can be blue on one chart and green on the next, or change colour from one month to the next. A colour map fixes it: each category value gets its own colour, and every chart kind honours it — bars and stacks, pie and donut slices, treemap tiles and sunburst rings, sankey nodes, line and area series, scatter points and table chips.

There are three levels, and the most specific wins:

  1. A widget's own colorMap.
  2. The dashboard's colour map (theme.colorMap, and theme.colorSource below).
  3. Palette order, for any category neither map names.

Keys match the category value exactly first, then ignoring case and extra spaces. A map holds at most 200 keys.

JSON
{  "kind": "bar",  "colorMap": {    "Groceries": "slot:2",    "Rent": "slot:4",    "Eating out": "#c15272"  }}

Colour values#

A colour in a map (and in reference lines, conditional colours and waterfall bars) can be written four ways:

FormExampleLight and dark
Palette slot"slot:3"The third palette colour, with its own step for dark mode.
Status token"good", "bad", "muted", "ink", "accent", "other"Follows the theme in both modes.
Light and dark{ "light": "#3c7bb8", "dark": "#5b90c7" }Each mode uses its own colour.
Hex or CSS colour"#3c7bb8"Used as written. A BankSync palette hex switches to its dark step.

Prefer slots and tokens. A bare hex picked on a light card can be too dark to read on a dark one; a slot or token is chosen for each mode.

Colours from a Categories table#

The dashboard can read its colour map from data: the rows of one widget on the dashboard, usually a table over your Categories table, one row per category. Set theme.colorSource:

JSON
{  "theme": {    "preset": "workspace",    "colorSource": {      "widget": "categories-table",      "keyField": "name",      "colorField": "colour",      "emojiField": "emoji",      "groupField": "group",      "orderField": "group_order"    }  }}
  • widget names the pinned widget whose rows carry the categories. keyField is the column holding the value charts show; the other fields name columns of that widget's result, so alias them in its query if needed.
  • colorField is optional. Each group takes the colour most of its rows name, or the next palette slot, with groups in orderField order.
  • Categories in a group are lightness steps of the group colour, stepped in name order, so the colours do not change when rows arrive in a different order. A row whose colour differs from its group's keeps its own.
  • Group names are mapped too, so a sunburst's inner ring matches its categories.
  • Entries in theme.colorMap win over the source. At most 500 category rows are read.

Colour is never the only signal: legends, labels and tooltips still name each category.

Fine-tuning a single chart's style#

Beyond the palette, each chart's Style tab has the options its kind supports: legend, axes, grid, value labels, the Categories and labels section (Show top, Order, Tidy labels, Handwritten callout), and a section of options specific to the kind, such as line steps or bar stacking. Every option is optional: leave it untouched and the chart uses its default. The inspector only shows a control when changing it changes that kind of chart. See The chart kind catalog for the per-kind options.

Non-chart widgets set their look elsewhere. A KPI's colors, a gauge's color bands, and a table's per-column formatting live on the Data tab next to the content they affect. See KPI, table & gauge widgets for those.

Time zone: the one setting that can change your numbers#

A time zone is the local clock a date is read against, written in standard form like Australia/Sydney or America/New_York. It matters because the same instant can fall on different calendar days depending on where you read it from. A purchase made at 11pm on the 31st in New York is already the 1st of the next month in London. So the time zone decides:

  • Which day, week, or month a dated row belongs to when a chart groups "by month" or "by week".
  • Where the cut-off sits for a "this month" or "previous month" comparison on a KPI.
  • How a Date or Time column reads when it shows a timestamp.

Where the time zone comes from (precedence)#

There are three places a time zone can be set, and the most specific one wins:

LevelSet whereApplies to
WidgetA single widget's settingsJust that one widget
DashboardThe dashboard's settingsEvery widget on the dashboard that has no widget-level override
WorkspaceWorkspace settingsEvery dashboard in the workspace that has no dashboard-level override

If none of the three is set, BankSync falls back to UTC (Coordinated Universal Time, the zero-offset reference clock).

So the resolution order, from highest priority to lowest, is:

Widget time zone, then Dashboard time zone, then Workspace time zone, then UTC.

Set it once at the workspace level

For most teams the right move is to set the workspace time zone to your business's local zone and leave the dashboard and widget overrides blank. Then every dashboard reads dates the way your business thinks about them, and you only reach for a per-dashboard or per-widget override in the rare case where one report needs a different zone (for example a report built for an office in another country).

Worked example: which month does a late purchase land in?#

Suppose your workspace time zone is America/New_York and you have a Spending-by-month bar chart that groups transactions by month.

  1. A card purchase is recorded at 2026-01-31T23:30 New York time.
  2. Read in New York, that is still 31 January, so it counts toward January's bar.
  3. If you had instead pinned that dashboard's time zone to Europe/London, the same instant is already 1 February there, so it would count toward February's bar.
  4. Nothing about the transaction changed. Only the time zone the chart reads it in changed, and that moved it from one bar to the next.

This is exactly why the time zone is the one appearance-adjacent setting that can shift totals. When two dashboards disagree by a small amount near a month boundary, a mismatched time zone is a common cause.

Date display formatting is separate from bucketing

A Date or Time column also has its own optional display time zone in the column's format settings, which only affects how the timestamp is shown, not which group it falls into. If a column shows a time that looks 'off by a few hours' but the totals are correct, check that column's display format rather than the dashboard time zone.

Publishing carries your choices#

When you publish a dashboard, the theme, palettes, and time zone you set are part of what gets shared. How they are served depends on the publish mode:

  • Frozen (the default): a snapshot is captured at publish time and served as a fixed copy. Viewers see exactly the look and the data as of that moment. New syncs do not show up until you re-publish. This is fast and predictable.
  • Live: each viewer's request reads current data, so the dashboard reflects the latest syncs.

Either way, the appearance you chose travels with the published copy. For who can see a dashboard and how the link or embed works, see Publishing & sharing.

Quick checklist#

  • To change the look of the whole dashboard, open Dashboard settings (the gear in edit mode): drawing style, palette, accent, light or dark.
  • To change one chart, use its Style tab: palette, accent colour, drawing style, and callout. None of these change the numbers.
  • For one-off branding, use a Custom (hex list) palette.
  • To keep a category on the same colour everywhere, set a dashboard colour map or a colour source, using slot:N or tokens rather than bare hexes.
  • To control which day or month a date counts toward, set the time zone, ideally once at the workspace level.
  • Remember the order: widget beats dashboard beats workspace beats UTC.
  • If totals near a month boundary look off, suspect the time zone before anything else.

Use this page with your AI assistant

Every BankSync doc is available as plain Markdown for agents and LLMs.