KPI Plume
KPI cards that flip: value, comparison, target, trend, icon, and on the back the definition and the figures you choose.
Interactive demo
The real Power BI visual, running in your browser with the sample report's fictitious data. Switch scenario, style or year: the visual updates as it does in Power BI. Premium ★ features are shown here without the watermark; in Power BI, without a license, they show “Plume Visuals · Premium preview”.
KPI Plume shows one card per measure, or one card per region, product or team with a “Total” card. Each card brings together the value (exact over the period, even for a rate), the change versus the previous period or last year, progress toward the target (a field or a target typed for the card), a trend line and an icon picked among 134. On hover, on click or on the ↻ icon, the card flips: a definition or a text with placeholders, and the figures chosen KPI by KPI, including measures shown only on the back. Cards always fit in the visual, with no scroll bar. With premium: a second comparison (budget and last year), green / amber / red status from the target and the comparison, circle, leaf and ticket shapes, target ring, first KPI shown large and door, curtain or cube animations.
Use cases
- A KPI strip at the top of a dashboard
- One KPI per region, with a “Total” card
- The definition of each indicator on the back of its card
- Monthly target tracking: green, amber or red from thresholds
FreeIncluded for free
- One card per measure or per category, “Total” card, automatic grid with no scroll bar
- Exact value over the period, automatic units (full value when it fits, otherwise €1.5M), animated counter, blank KPIs hidden
- Comparison with a field, the previous period or the first one: %, value, ▲▼ arrows, neutral zone
- Target per card (a field or a typed value), progress bar, status from thresholds
- 134 Lucide icons by theme, or an icon given by a measure; ↗ link per card
- Flip on hover, on click or on ↻; back chosen KPI by KPI: text, definition, back-only measures
- Click a per-category card: cross-filter; keyboard, screen readers, high contrast
- Title and note of each KPI from a text measure, reference labels, like the native card
- Distance to target, date of the last period, accent bar on the right or in a chosen color
- Dynamic formats: any Format pane option driven by a DAX measure
- Minimal and Black & White styles, custom colors
PremiumPremium features
- Second comparison (budget and last year on the same card)
- “Target and comparison” status: green, amber, red
- Circle, leaf, cut-corner and ticket shapes; target as a ring or a bullet
- Trend as columns or steps; first KPI shown large, on the left or at the top
- Slide, door, curtain, zoom and cube animations; “bounce” motion
- Catalog-wide styles (Neon, Newspaper, Nordic…), palettes, theme JSON
Usable without a key to try them, with a watermark.
Tutorials
Start with Getting started, then pick from the how-to guides. The Fields and settings page describes every option of the Format pane.
- Getting startedBeginner12 min readKPI Plume: Power BI KPI cards that flip over to explain the numberGet started with KPI Plume in Power BI: prepare your measures, build a strip of KPI cards with change, target and trend, then write the back that shows on click.
- How-to guidesIntermediate12 min readKPI Plume: 11 how-to guides (prior year, budget, targets, icons…)Step by step: compare with the prior year and budget, set a target per card, color cards green, amber or red, pick each KPI's icon and back content, add a link…
- Fields and settingsIntermediate37 min readKPI Plume: every field and Format pane setting explainedEvery field well and every setting in the KPI Plume Format pane: what each one does, its possible values, its default value and premium features.
- BasicsGetting started with Plume visualsInstallation, license, styles and the settings shared by every visual.
Fields to drop into the visual
| Field | Content | |
|---|---|---|
| Values (one KPI per measure) | Each measure is a card | Required |
| Comparison (previous year…) | Last year, previous period… (same rank as the value, or number chosen per KPI) | Optional |
| Comparison 2 (budget…) | Budget…: second change under the first one | OptionalPremium |
| Target | Progress bar (same rank, chosen number, or target typed per KPI) | Optional |
| Trend axis (date) | Month, week, year: draws the trend | Optional |
| One KPI per… (category) | Repeats the KPIs for each region, product… | Optional |
| Back of the card (text) | Text measure on the back: definition, comment | Optional |
| Back of the card: figures | Measures shown only on the back, chosen per KPI | Optional |
| Icon (text measure) | Icon name, emoji or inline SVG image | Optional |
| Title (text measure) | Each KPI's title computed in DAX, matched by rank | Optional |
| Note (text measure) | Each KPI's note computed in DAX, matched by rank | Optional |
| Reference labels | Measures written under the value or at the bottom of the card, like the native card | Optional |
| Reference labels: details | Detail shown next to each reference label | Optional |
| Tooltips | Extra measures | Optional |
| Dynamic format | Measures renamed card.setting (e.g. title.text): the Format pane driven by DAX | Optional |
Missing a feature? We adapt our visuals or build custom ones. Request a custom visual
Found a bug in KPI Plume, or have an idea to improve it? Report a bug · Suggest an idea
Technical reference for AI assistants
This section is meant for AI assistants (ChatGPT, Claude, Copilot…): every field, every Format pane option with its internal name, the expected data shape and DAX examples. Generated from the visual's code, version 1.4.0.0. Paste it into your assistant so it can guide you.
Raw Markdown version (/ai/visuals/kpi-card.md)# KPI Plume: technical reference for AI assistants
> Power BI custom visual by Plume Studio (Plume Visuals). Visual version **1.4.0.0**. This page is generated from the visual's source code at each site build: field names, option names and defaults are exact for this version.
Use it to help someone build a report with KPI Plume: which fields to drag, how to shape the data, which Format pane option to change, or how to write the visual's settings in a PBIP `visual.json` file.
- Product page: https://plumevisuals.com/en/visuals/kpi-card (French: https://plumevisuals.com/fr/visuels/kpi-card)
- Summary: KPI cards that flip: value, comparison, target, trend, icon, and on the back the definition and the figures you choose.
- Power BI visual GUID (`visualType`): `plumeKpiCardC478BD14F72F4580AC1F80652CEB51D7`
- Power BI visuals API: 5.11.1
- Support: https://plumevisuals.com/support · contact@plumevisuals.com
- Index of everything on the site for AI assistants: https://plumevisuals.com/llms.txt
## What the visual does
KPI Plume (formerly Plume KPI) is a Power BI custom visual (base range, version 1.4.0.0, installed from the `.pbiviz` file; AppSource submission in progress) that draws KPI cards: one card per measure, or, with a category field, one card per region / product / team (optionally plus a "Total" card). Cards always fit in the visual with no scroll bar (`layout.overflow` = `fit`, default; `scroll` keeps the minimum sizes and scrolls). Each card shows a title, an icon (134 built-in Lucide icons in 11 themes, chosen per KPI in `kpiFormat.icon` or picked automatically from the measure name: revenue → €, orders → cart, rate → %, customers → people…; or given by a text measure in the Icon field), an optional ↗ link button (`kpiFormat.link`), the value with automatic units per number (1.5M, 171K, 451), a comparison (change in % or value, ▲▼ arrows, badge, "vs …" label, neutral zone, good / bad / neutral colors), a target (a field, or a value typed per KPI in `kpiFormat.targetValue`; progress bar or text; ring and bullet ★), an optional second comparison ★ (Comparison 2 field) and a trend sparkline (line, area, smooth area; columns and step ★) placed at the bottom, in the background or on the right. The signature feature: cards **flip** (on hover, on click, or on the ↻ icon) to show their back: an information text with **bold**, line breaks and placeholders, plus key figures chosen KPI by KPI in the dynamic card "Back of the card: content per KPI" (`backItems`: comparison, change, comparison 2, target, achievement, period, last period, min, max, average, tooltip fields, and up to 8 measures of the "Back of the card: figures" field shown only on the back). At rest a card is drawn flat (no 3D transform) so its text stays sharp; 3D is only used during the flip. Trend-axis dates sent by Power BI Desktop as ISO text are read as dates ("Dec 2025 vs Nov 2025"; `sparkline.dateFormat` overrides the period format). The visual makes no network request.
**New in version 1.4.0.0 (30/10/2026):** Format pane reorganized (`compare` → `comparison`, `trend` → `sparkline`); free native-parity additions: **Title** and **Note** text-measure fields per KPI, **Reference labels** fields and card, accent bar on the right with its own color, KPI title position and italics, distance to target, date of the last period.
## Free vs premium (★)
- Every feature works without a key and nothing is ever blocked. Free features never show a watermark.
- Shared Style card (the same in every Plume visual): the styles `none`, `minimal` and `blackWhite`, the two Plume gradient palettes (`crest`, `crestDiverging`), "Follow report theme" and all custom colors (`style.customColors` and the colors under it) are **free**; every other `style.preset`, the other gradient palettes (`style.palette`) and `style.themeJson` ("Theme JSON ★") are **premium** (watermark without a key). See "Styles and theme JSON" below.
- Using a premium feature without a valid key shows **"Plume Visuals · Premium preview"** (French: « Plume Visuals · Aperçu premium ») in the footer of the visual, with an "Unlock →" link to the pricing page. It disappears once a key is pasted in **Format › Plume Studio License › License key** (`license.key`; French: « Licence Plume Studio › Clé de licence »), the **first card** of the Format pane.
- Premium features of KPI Plume:
- `card.shape` = `circle`, `leaf`, `chamfer` ("Cut corners ★") or `ticket`;
- `layout.arrange` = `heroLeft` / `heroTop` ("First one large, on the left / on top ★", size in `layout.heroSize`);
- `target.style` = `ring` or `bullet`: counts only when a Target field is present and `target.show` is on;
- `sparkline.type` = `columns` or `step`: counts only with a Trend axis field and `sparkline.show` on;
- `flip.animation` = `slide`, `door`, `curtain`, `zoom`, `cube`, and `flip.easing` = `bounce`: count only when `flip.trigger` is not `none`;
- the **Comparison 2** field (`reference2`): counts when it is filled and `comparison.show` and `comparison.show2` are on;
- `comparison.statusFrom` = `both` ("Target and comparison (green, amber, red) ★").
- Free in 1.3: per-KPI icons, the Icon field, fixed target and field numbers per KPI, the back content per KPI and the "Back of the card: figures" field, the link per card, `layout.hideBlank`, `layout.overflow`, `comparison.statusFrom` = `compare` / `compare2` / `target` (thresholds with `comparison.warnFrom`, amber `comparison.warnColor`).
- Premium options and list values have " ★" appended to their label. Accepted keys: only keys starting with `PLUM1.` shown in the buyer's account on plumevisuals.com, checked offline (Ed25519 signature), covering `kpi-card` or the whole catalog. In edit mode, a wrong key shows "Invalid license key", "License expired (date)" or "This key does not cover this visual".
- Licenses last one year (one-time payment, no automatic renewal, key accepted for 30 more days, reminders 30 and 7 days before the end), for this visual: 39 € personal, 99 € SME, 299 € enterprise per year, or the catalog packs (199 € / 399 € / 1,199 € per year; tiers by number of users, designers and viewers included: personal 1–10, SME 11–200, enterprise more than 200). Version 1.3.2.0, available on plumevisuals.com (`.pbiviz` file); AppSource submission in progress.
## Expected data shape
A **matrix** data view: trend periods on rows, category members on columns, measures in cells, plus the grand total that Power BI computes (hidden `subTotals` object, kept on).
- **Values (one KPI per measure)** (`values`, « Valeurs (un KPI par mesure) », measures, required): one card per measure.
- **Comparison (previous year…)** (`reference`, « Comparaison (année précédente…) », measures): compared with the value **of the same rank** (1st with 1st…), or the field number set per KPI in `kpiFormat.refField` (0 = same rank, -1 = none).
- **Comparison 2 (budget…)** ★ (`reference2`, « Comparaison 2 (budget…) », measures, same rank): second change under the first one (label `kpiFormat.refLabel2`).
- **Target** (`target`, « Objectif », measures): target of the KPI of the same rank, or the field number set in `kpiFormat.targetField`; `kpiFormat.targetValue` (non-zero) types a fixed target for one KPI instead.
- **Trend axis (date)** (`trend`, « Axe de tendance (date) », one column): month, week, year… draws the sparkline (data window of 2,000 periods).
- **One KPI per… (category)** (`category`, « Un KPI par… (catégorie) », one column): repeats the KPIs for each member.
- **Back of the card (text)** (`backText`, « Dos de la carte (texte) », measures): text measure shown on the back of the KPI of the same rank (a definition, a comment).
- **Back of the card: figures** (`backFields`, « Dos de la carte : chiffres », up to 8 measures): label + value rows shown only on the back, with the measure's own format; switched on or off per KPI with `backItems.f1` … `backItems.f8`.
- **Icon (text measure)** (`icon`, « Icône (mesure texte) », measures, same rank): an icon key (`trendUp`) or Lucide name (`trending-up`), an emoji or short symbol, or an inline image `data:image/svg+xml…` (also png, jpeg, gif, webp). Web addresses are never loaded.
- **Tooltips** (`tooltips`, « Infobulles », measures) and **Dynamic format** (`format`, « Format dynamique », measures named `card.setting`).
| Month (`trend`) | Revenue (`values`) | Target (`target`) |
|---|---|---|
| 2025-10-01 | 118 400 | 110 000 |
| 2025-11-01 | 151 900 | 110 000 |
| Total | 1 512 000 | 1 320 000 |
- With a trend axis, `value.aggregate` = `total` (default) shows the **total row computed by Power BI** (exact for rates and averages); if no total is available it falls back to the last period. Other values: `last`, `first`, `avg`, `max`, `min` of the periods.
- `comparison.source` = `auto` uses the Comparison field when filled, otherwise the previous period of the trend axis. With `previous` / `first`, the change compares the **last period** with the previous / first one (label like "Dec 2025 vs Nov 2025"), even when the displayed value is the total.
- Status (`comparison.statusFrom`): `auto` (default) = good / bad from the sign of the change (`kpiFormat.lowerIsBetter` reverses it, `comparison.neutral` = neutral band in %), without a comparison from the target being reached; `compare` / `compare2` = from one change; `target` = good from 100 %, warning (amber) from `comparison.warnFrom` % (default 90), bad below; `both` ★ = good when the target is reached, warning when only a comparison is favorable, bad otherwise. Each change badge keeps the color of its own direction.
## DAX recipes
```dax
Revenue = SUM ( Sales[Amount] )
Orders = COUNTROWS ( Sales )
Average basket = DIVIDE ( [Revenue], [Orders] )
Margin rate = DIVIDE ( SUM ( Sales[Margin] ), [Revenue] )
Target = 110000 * DISTINCTCOUNT ( Sales[Month] )
// Comparison field: needs a marked date table; take the trend axis from that table too
Revenue LY = CALCULATE ( [Revenue], SAMEPERIODLASTYEAR ( 'Calendar'[Date] ) )
// Back of the card (text)
Revenue back = "Top region: " & MAXX ( TOPN ( 1, VALUES ( Sales[Region] ), [Revenue] ), Sales[Region] )
```
Back text placeholders (`kpiFormat.backText`): `{name}`, `{value}`, `{ref}`, `{delta}`, `{deltaPct}`, `{ref2}`, `{delta2}`, `{deltaPct2}`, `{target}`, `{progress}`, `{min}`, `{max}`, `{avg}` are formatted values; `{first}`, `{last}`, `{period}` are period labels. `**…**` = bold; a line break or a literal `\n` = new paragraph. `kpiFormat.note` (note under the value) accepts `{value}`, `{ref}`, `{delta}`, `{target}`, `{progress}`, `{period}`. Back text priority: the text set for that measure, then the Back of the card measure, then the "All KPIs" text. `backItems.textAfter` puts it after the figures; `back.figLayout` (`auto` / `columns` / `stacked`) and `back.fit` (shrink to 75 % before scrolling, no visible scroll bar) keep the back readable.
## Interactions with the report
- With One KPI per…, clicking a card cross-filters the report (`interaction.select`), other cards are dimmed (`interaction.dim`), clicking the background clears. When `flip.trigger` = `click`, a click flips and **Ctrl + click** filters.
- Power BI tooltips on cards (value, comparison, change, target, tooltip fields) when `tooltip.show` is on and `flip.trigger` is not `hover`; per-period tooltip on the sparkline (`tooltip.periodTip`). Context menu on each card.
- Keyboard: Tab to reach the cards, ← → to move, Enter or Space flips, Esc flips back. The back is announced to screen readers. Reduced motion makes flips and the counter instant. High contrast uses host colors. Never flips on a dashboard tile. `flip.preview` shows the back in edit mode to format it.
## Dynamic formats
- **No fx button**: Power BI does not offer conditional formatting of Format pane options to table / matrix visuals (Table Plume, Matrix Plume, KPI Plume). Everything goes through the **Dynamic format** well (role `format`).
- Rename each measure for this visual `card.setting`, e.g. `flip.trigger`, `layout.arrange`, `title.text`, `kpiFormat.backText`. Case, accents and the separator are ignored. It wins over the fixed setting, the style and the JSON theme.
- KPI Plume reads the **grand total** value. Examples: `"Data as of " & FORMAT ( MAX ( Sales[Month] ), "mmmm yyyy" )` renamed `kpiFormat.backText`; `IF ( ISFILTERED ( Sales[Region] ), "none", "click" )` renamed `flip.trigger`.
- For the dynamic card **Per-KPI settings**, only the "All KPIs" level is driven (`kpiFormat.color`, `kpiFormat.backText`…); a value set for one specific measure in the pane stays first.
- Driving a setting with DAX is free; a ★ value set by DAX still shows the watermark without a key.
## Format pane: how to read the tables below
- Each option has an ID `card.option` (for example `flip.trigger`). The card is the capabilities.json **object name**, the option is the **property name**. Note that the visual has a Format card named `card` ("Card"), so its options read `card.shape`, `card.colorBy`…
- Card order: `license` (always first), `style` (shared Style card), `kpiFormat` (dynamic card "Per-KPI settings": a list at the top, "Apply settings to", picks "All KPIs" or one measure), then `layout`, `card`, `kpiTitle`, `value`, `icon`, `comparison`, `target`, `trend`, `flip`, `back`, `backItems` (dynamic card "Back of the card: content per KPI", same "Apply settings to" list, only when `flip.trigger` is not `none`), `interaction`, then `title`, `source`, `container` and `texts`. Format pane in version 1.4.0.0 (30/10/2026), top to bottom: `license`, `style`, `kpiFormat`, `backItems`, `layout`, `card`, `kpiTitle`, `value`, `refLabels`, `icon`, `comparison`, `target`, `sparkline`, `flip`, `back`, `interaction`, `tooltip`, `title`, `source`, `container`, `texts`. Settings moved or renamed in this version keep working in older reports (the old names are still read).
- Labels follow the language of Power BI Desktop; `texts.language` can force French or English inside the visual.
- "Visible when" means the option only appears when another option has one of the listed values (most `flip` options only when `flip.trigger` is not `none`).
## Editing a PBIP report (visual.json)
`visualType` is the visual GUID, `queryState` keys are the data role names, `objects` keys are the option IDs. Literal syntax: booleans `true` / `false`, numbers suffixed with `D`, strings and enumeration values in single quotes (double an apostrophe inside), colors wrapped in `solid.color`. Per-KPI settings are entries of `kpiFormat` with a `selector` on the measure's `queryRef`.
```json
{
"visualType": "plumeKpiCardC478BD14F72F4580AC1F80652CEB51D7",
"query": {
"queryState": {
"values": { "projections": [
{ "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Revenue" } }, "queryRef": "Sales.Revenue", "nativeQueryRef": "Revenue" },
{ "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Margin rate" } }, "queryRef": "Sales.Margin rate", "nativeQueryRef": "Margin rate" } ] },
"target": { "projections": [
{ "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Target" } }, "queryRef": "Sales.Target", "nativeQueryRef": "Target" } ] },
"trend": { "projections": [
{ "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Month" } }, "queryRef": "Sales.Month", "nativeQueryRef": "Month" } ] }
}
},
"objects": {
"layout": [ { "properties": { "arrange": { "expr": { "Literal": { "Value": "'row'" } } } } } ],
"card": [ { "properties": { "colorBy": { "expr": { "Literal": { "Value": "'status'" } } },
"statusBar": { "expr": { "Literal": { "Value": "'left'" } } } } } ],
"trend": [ { "properties": { "type": { "expr": { "Literal": { "Value": "'line'" } } } } } ],
"flip": [ { "properties": { "trigger": { "expr": { "Literal": { "Value": "'hover'" } } },
"animation": { "expr": { "Literal": { "Value": "'fade'" } } },
"duration": { "expr": { "Literal": { "Value": "400D" } } } } } ],
"kpiFormat": [
{ "properties": { "backText": { "expr": { "Literal": { "Value": "'**Revenue** for the period: {value}.\\nBest month: {max}.'" } } },
"color": { "solid": { "color": { "expr": { "Literal": { "Value": "'#b8462a'" } } } } } },
"selector": { "metadata": "Sales.Revenue" } },
{ "properties": { "icon": { "expr": { "Literal": { "Value": "'percent'" } } },
"decimals": { "expr": { "Literal": { "Value": "1D" } } } },
"selector": { "metadata": "Sales.Margin rate" } } ],
"license": [ { "properties": { "key": { "expr": { "Literal": { "Value": "'PLUM1.…'" } } } } } ]
}
}
```
The custom visual package must also be embedded in the report (Power BI does this when the visual is imported from the `.pbiviz` file). Do not turn off the hidden `subTotals` properties: the period total comes from them.
## Styles and theme JSON
- `style.preset` takes one of the 20 style IDs shared by every Plume visual: `none`, `minimal`, `blackWhite`, `press`, `vintage`, `earth`, `nordic`, `executive`, `accessible`, `pastel`, `bauhaus`, `climate`, `blueprint`, `unknownPleasures`, `dark`, `neon`, `terminal`, `infographic`, `cockpit`, `hologram`.
- `style.themeJson` (Format › Style › Theme JSON ★) takes a JSON theme as plain text. Format v2: an object with an optional `extends` (a style ID above) and optional groups `colors`, `palettes`, `typography`, `shape`, `table`, `marks`, `effects`; the v1 flat format (`style`, `palette`, `accent`, `background`…) is still read. Every field is optional. Colors are `#RRGGBB` (`#RGB` and `#RRGGBBAA` accepted, opacity ignored). Unknown fields and values outside the allowed lists are ignored, out-of-range numbers are clamped. Invalid JSON shows "Invalid theme JSON: ignored" in edit mode and the visual keeps its look.
- Full field list with allowed values, examples and troubleshooting: tutorial https://plumevisuals.com/ai/tutorials/en/themes-json.md (French: https://plumevisuals.com/ai/tutorials/fr/themes-json.md). The same JSON can be pasted in every Plume visual of a page.
- Priority (the last one wins): visual defaults → `style.preset` → `style.themeJson` → `style.palette` (if not "Style or theme palette") → `style.followTheme` → custom colors → options set by hand in the other cards → DAX formats (fx button, "Dynamic format" field) → Windows high contrast.
## Common pitfalls
- Target or comparison on the wrong card: pairing is by rank; keep the same order in Values, Comparison, Target and Back of the card, or set `kpiFormat.targetField` / `kpiFormat.refField` for that KPI, or type a fixed target (`kpiFormat.targetValue`).
- The change does not match the displayed value: with `comparison.source` = `auto` and no Comparison field, it compares the last two periods of the trend axis. Add a last-year measure.
- `Revenue LY` blank or wrong: time intelligence on a date table, but the trend axis comes from the fact table; take both from the date table.
- A click flips instead of filtering: `flip.trigger` = `click`; use Ctrl + click, or `hover` / `icon` (with `hover`, cards show no Power BI tooltip: the back replaces it).
- Watermark visible: a ★ shape, layout, target style, trend type, animation or easing, a filled Comparison 2 field, the "Target and comparison" status, or a ★ style / palette / Theme JSON, without a valid key.
- Choosing the icon of one card: Per-KPI settings, pick the measure in "Apply settings to", then Icon (the list reads "Theme · Icon").
## Features that do NOT exist (do not suggest them)
An fx button on any option, a needle gauge or speedometer, more than one target per KPI, a third comparison, a forecast on the sparkline, icons or images loaded from a web address (only built-in icons, symbols / emoji, or `data:image/…` from the Icon field), page navigation or drillthrough on click (only the context menu and the ↗ link), drill-down on the trend, a play / animation over time, write-back of targets, dynamic Top N of categories, highlighting from other visuals.
## Data fields (wells)
Internal name = data role name (PBIP `queryState` key). Labels as shown in Power BI (English / French). ★ = premium.
| Internal name | Label (EN) | Label (FR) | Kind | Max fields | Description |
|---|---|---|---|---|---|
| `values` | Values (one KPI per measure) | Valeurs (un KPI par mesure) | measure | several | Each measure is one KPI card. |
| `reference` | Comparison (previous year…) | Comparaison (année précédente…) | measure | several | Compared with the value of the same rank (1st with 1st…). |
| `reference2` | Comparison 2 (budget…) | Comparaison 2 (budget…) | measure | several | Second comparison of the KPI of the same rank, shown under the first one. |
| `target` | Target | Objectif | measure | several | Goal of the KPI of the same rank: progress bar or ring. |
| `trend` | Trend axis (date) | Axe de tendance (date) | column | 1 | Draws the sparkline (month, week, year…). |
| `category` | One KPI per… (category) | Un KPI par… (catégorie) | column | 1 | Repeats the KPIs for each value of the field (region, product…). |
| `backText` | Back of the card (text) | Dos de la carte (texte) | measure | several | Text measure shown on the back of the KPI of the same rank (a definition, a comment…). |
| `backFields` | Back of the card: figures | Dos de la carte : chiffres | measure | several | Measures shown only on the back (label and value). Choose them per KPI in “Back of the card: content per KPI”. |
| `icon` | Icon (text measure) | Icône (mesure texte) | measure | several | Icon name (trending-up, euro…), emoji or SVG image (data:image/svg+xml…) for the KPI of the same rank, for instance per category. |
| `titles` | Title (text measure) | Titre (mesure texte) | measure | several | Title of the KPI of the same rank, computed by DAX (for instance “Sales” & the selected year). Replaces Per-KPI settings › Title. |
| `notes` | Note (text measure) | Note (mesure texte) | measure | several | Note under the value of the KPI of the same rank, computed by DAX. Placeholders such as {delta} are filled. |
| `refLabels` | Reference labels | Libellés de référence | measure | several | Measures shown under the value (label and value), like the reference labels of the native card. |
| `refDetails` | Reference labels: details | Libellés de référence : détails | measure | several | Detail written under the reference label of the same rank (text or number). |
| `tooltips` | Tooltips | Infobulles | measure | several | |
| `format` | Dynamic format | Format dynamique | measure | several | Measures named card.setting (e.g. title.fontSize): drive any Format option with DAX |
Data view: matrix (like the native matrix visual, subtotals computed by Power BI), rows = `trend`, columns = `category`, 2,000 rows per data window (more fetched automatically); values = `values`, `reference`, `reference2`, `target`, `backText`, `backFields`, `icon`, `titles`, `notes`, `refLabels`, `refDetails`, `tooltips`, `format`.
Capabilities: supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).
## Format pane options (228)
Columns: option ID (`object.property`), labels EN / FR as shown in Power BI, control type, PBIP literal type, default value, allowed values, notes.
### Plume Studio License / Licence Plume Studio (`license`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `license.buy` | Get a license | Obtenir une licence | info | text | `plumevisuals.com` | | |
| `license.key` | License key | Clé de licence | text | text | (empty) | | Paste the key received after purchase on plumevisuals.com (starts with PLUM1.). Checked offline. |
| `license.showOwner` | Show license holder (edit mode) | Afficher le titulaire (mode édition) | toggle | bool | `true` | true / false | |
### Style (`style`, Format pane)
**Style**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.preset` | Style | Style | dropdown | enumeration | `none` | `none` None; `minimal` Minimal; `blackWhite` Black & White; `press` Newspaper ★; `vintage` Vintage (antique plate) ★; `earth` Earth ★; `nordic` Nordic ★; `executive` Executive ★; `accessible` Accessible (high legibility) ★; `pastel` Pastel ★; `bauhaus` Bauhaus (pop) ★; `climate` Climate ★; `blueprint` Blueprint ★; `unknownPleasures` Unknown Pleasures ★; `dark` Graphite (dark) ★; `neon` Neon ★; `terminal` Terminal (Matrix) ★; `infographic` Infographic ★; `cockpit` Cockpit (HUD) ★; `hologram` Hologram ★ | Complete look shared by all Plume visuals: colors, three palettes, fonts, frame, table header, marks and effects. Customize colors below. |
| `style.themeJson` | Theme JSON ★ | Thème JSON ★ | textarea | text | (empty) | | Paste a JSON theme: see the 'JSON themes' tutorial on plumevisuals.com |
| `style.followTheme` | Follow report theme | Suivre le thème du rapport | toggle | bool | `false` | true / false | Text, background, accent and data colors come from the Power BI report theme. |
| `style.reverse` | Reverse gradients | Inverser les dégradés | toggle | bool | `false` | true / false | |
**Custom colors / Couleurs personnalisées**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.customColors` | Customize colors | Personnaliser les couleurs | toggle | bool | `false` | true / false | Start from the style and pick your own colors. A color left empty keeps the style's color. |
| `style.colorBackground` | Background | Fond | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorText` | Text | Texte | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorMuted` | Secondary text | Texte secondaire | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorGrid` | Lines and grid | Traits et grille | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorAccent` | Accent | Accent | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorPositive` | Favorable | Favorable | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorNegative` | Unfavorable | Défavorable | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series1` | Series 1 | Série 1 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series2` | Series 2 | Série 2 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series3` | Series 3 | Série 3 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series4` | Series 4 | Série 4 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series5` | Series 5 | Série 5 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series6` | Series 6 | Série 6 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series7` | Series 7 | Série 7 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series8` | Series 8 | Série 8 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.palette` | Gradient palette | Palette du dégradé | dropdown | enumeration | `auto` | `auto` Style or theme palette; `crest` Plume (sequential); `crestDiverging` Plume (diverging); `viridis` Viridis ★; `magma` Magma ★; `inferno` Inferno ★; `cividis` Cividis (colorblind-safe) ★; `warmingStripes` Warming stripes ★; `rdYlBu` Red–Yellow–Blue ★; `brBG` Brown–Teal (drought) ★; `spectral` Spectral ★; `blues` Blues ★; `reds` Reds ★; `grays` Grays ★; `press` Press (ink and paper) ★; `nordic` Nordic ★; `earth` Earth (ochre to umber) ★; `pastel` Pastel ★; `okabeIto` Okabe-Ito (colorblind-safe) ★ | Visible when `style.customColors` = `true`. Gradient from the catalog (Viridis, Magma…). The start, middle and end colors below replace it. |
| `style.scaleLow` | Gradient: start | Dégradé : début | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.scaleMid` | Gradient: middle (diverging) | Dégradé : milieu (écarts) | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.scaleHigh` | Gradient: end | Dégradé : fin | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
**Text / Texte**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.fontFamily` | Font | Police | font | formatting | `Segoe UI, wf_segoe-ui_normal, helvetica, arial, sans-serif` | | Used by every text of the visual (title, axes, labels, cells). |
**Animations**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.animate` | Animations | Animations | toggle | bool | `true` | true / false | Smooth transitions when data changes. Automatically disabled when the system asks to reduce motion. |
### Per-KPI settings / Réglages par KPI (`kpiFormat`, Format pane)
Per-item card: Power BI shows it once per series, category, column or KPI (an "Apply settings to" list where relevant). In PBIP `visual.json`, each entry of `objects.kpiFormat` carries a `selector` (`metadata` = the field's queryRef, or `data` for a category value); an entry without a selector applies to all items.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `kpiFormat.title` | Title (empty = measure name) | Titre (vide = nom de la mesure) | text | text | (empty) | | |
| `kpiFormat.note` | Note under the value | Note sous la valeur | text | text | (empty) | | Short text such as “Year to date”. Placeholders: {value}, {ref}, {delta}, {target}, {progress}, {period}. |
| `kpiFormat.icon` | Icon | Icône | dropdown | enumeration | `auto` | `auto` Automatic (from the name); `none` None; `euro` Finance · Euro; `dollar` Finance · Dollar; `pound` Finance · Pound sterling; `coins` Finance · Coins; `banknote` Finance · Banknote; `wallet` Finance · Wallet; `piggyBank` Finance · Piggy bank (savings); `creditCard` Finance · Credit card; `receipt` Finance · Receipt; `landmark` Finance · Bank; `handCoins` Finance · Payment; `calculator` Finance · Calculator; `percent` Finance · Percent; `badgePercent` Finance · Discount; `cart` Sales · Cart; `bag` Sales · Shopping bag; `store` Sales · Store; `tag` Sales · Tag (price); `ticket` Sales · Ticket; `handshake` Sales · Handshake (deals); `briefcase` Sales · Briefcase; `gift` Sales · Gift; `megaphone` Sales · Megaphone (marketing); `users` People · People; `user` People · Person; `userPlus` People · New customer; `userCheck` People · Verified customer; `userMinus` People · Lost customer; `contact` People · Contact; `baby` People · Baby; `smile` People · Smile (satisfaction); `frown` People · Frown; `thumbsUp` People · Thumbs up; `messages` People · Messages; `target` Performance · Target; `trendUp` Performance · Rise; `trendDown` Performance · Fall; `bars` Performance · Column chart; `barsH` Performance · Bar chart; `line` Performance · Line chart; `pie` Performance · Pie chart; `gauge` Performance · Gauge; `activity` Performance · Activity; `award` Performance · Award; `trophy` Performance · Trophy; `medal` Performance · Medal; `flag` Performance · Flag (milestone); `rocket` Performance · Rocket (launch); `star` Performance · Star; `zapFast` Performance · Speedometer; `layers` Performance · Layers; `sigma` Performance · Sum; `clock` Time · Clock; `timer` Time · Timer; `hourglass` Time · Hourglass; `calendar` Time · Calendar; `calendarCheck` Time · Calendar check; `calendarDays` Time · Days; `history` Time · History; `truck` Operations · Truck (delivery); `box` Operations · Box (stock); `packageCheck` Operations · Package delivered; `boxes` Operations · Boxes; `warehouse` Operations · Warehouse; `factory` Operations · Factory; `wrench` Operations · Wrench (maintenance); `settings` Operations · Settings; `hardHat` Operations · Hard hat; `forklift` Operations · Forklift; `ship` Operations · Ship; `plane` Operations · Plane; `car` Operations · Car; `route` Operations · Route; `fuel` Operations · Fuel; `clipboard` Operations · Checklist; `check` Status · Check; `checkPlain` Status · Tick; `circleX` Status · Rejected; `alert` Status · Alert; `alertCircle` Status · Warning; `info` Status · Information; `shield` Status · Shield; `shieldCheck` Status · Security; `lock` Status · Lock; `bell` Status · Bell; `bug` Status · Bug; `eye` Status · Eye (views); `leaf` Energy and environment · Leaf; `sprout` Energy and environment · Sprout; `recycle` Energy and environment · Recycle; `bolt` Energy and environment · Bolt (energy); `battery` Energy and environment · Battery; `plug` Energy and environment · Plug; `sun` Energy and environment · Sun; `cloud` Energy and environment · Cloud; `cloudRain` Energy and environment · Rain; `wind` Energy and environment · Wind; `flame` Energy and environment · Flame; `drop` Energy and environment · Drop (water); `waves` Energy and environment · Waves; `thermometer` Energy and environment · Thermometer; `trees` Energy and environment · Trees; `globe` Energy and environment · Globe; `heart` Health and education · Heart; `heartPulse` Health and education · Heart pulse; `stethoscope` Health and education · Stethoscope; `pill` Health and education · Pill; `hospital` Health and education · Hospital; `graduation` Health and education · Graduation; `book` Health and education · Book; `school` Health and education · School; `dumbbell` Health and education · Dumbbell (sport); `utensils` Health and education · Utensils (meals); `coffee` Health and education · Coffee; `phone` Digital · Phone; `mail` Digital · Mail; `message` Digital · Message; `click` Digital · Click; `monitor` Digital · Monitor; `smartphone` Digital · Smartphone; `server` Digital · Server; `database` Digital · Database; `wifi` Digital · Wi-Fi; `download` Digital · Download; `upload` Digital · Upload; `share` Digital · Share; `search` Digital · Search; `link` Digital · Link; `fileText` Digital · Document; `home` Places · House; `building` Places · Building; `mapPin` Places · Location; `map` Places · Map; `hotel` Places · Hotel | Choose “All KPIs” or one measure in “Apply settings to” above, then its icon (134 Lucide icons, by theme). |
| `kpiFormat.symbol` | Or symbol / emoji (replaces the icon) | Ou symbole / emoji (remplace l'icône) | text | text | (empty) | | |
| `kpiFormat.color` | KPI color (empty = “Card” card) | Couleur du KPI (vide = carte « Carte ») | color | fill | (empty) | hex color | |
| `kpiFormat.units` | Display units | Unités d'affichage | dropdown | enumeration | `fit` | `fit` Automatic (full value when it fits); `auto` Abbreviated (K, M, bn); `none` None; `k` Thousands; `m` Millions; `b` Billions | Automatic: the full value with the format of the measure when it fits in the card, otherwise abbreviated (1.5M). |
| `kpiFormat.decimals` | Decimals (-1 = automatic) | Décimales (-1 = automatique) | number | integer | `-1` | -1 to 6 | |
| `kpiFormat.prefix` | Prefix | Préfixe | text | text | (empty) | | |
| `kpiFormat.suffix` | Suffix | Suffixe | text | text | (empty) | | |
| `kpiFormat.lowerIsBetter` | Lower is better | Plus bas = mieux | toggle | bool | `false` | true / false | A decrease is shown in the “good” color (costs, delays, incidents…). |
| `kpiFormat.refLabel` | Comparison label | Libellé de la comparaison | text | text | (empty) | | Empty: “vs” + name of the comparison measure (or of the previous period). |
| `kpiFormat.refLabel2` | Comparison 2 label | Libellé de la comparaison 2 | text | text | (empty) | | Second comparison (“Comparison 2” field). Empty: “vs” + name of the measure. |
| `kpiFormat.targetValue` | Fixed target (0 = “Target” field) | Objectif fixe (0 = champ « Objectif ») | number | numeric | `0` | | A target typed here for this KPI, without a measure. It replaces the “Target” field. |
| `kpiFormat.targetField` | “Target” field number (0 = same rank, -1 = none) | N° du champ « Objectif » (0 = même rang, -1 = aucun) | number | integer | `0` | -1 to 30 | By default the 1st target goes with the 1st value, the 2nd with the 2nd… Type 2 to use the 2nd measure of “Target” for this KPI. |
| `kpiFormat.refField` | “Comparison” field number (0 = same rank, -1 = none) | N° du champ « Comparaison » (0 = même rang, -1 = aucun) | number | integer | `0` | -1 to 30 | |
| `kpiFormat.link` | Link (web address) | Lien (adresse web) | text | text | (empty) | | Adds a ↗ button to the card that opens this address (https:// or mailto: only; Power BI opens secure links only). Power BI asks for confirmation. |
| `kpiFormat.backText` | Back of the card text | Texte du dos de la carte | textarea | text | (empty) | | Shown when the card flips (a definition, for instance). **bold**, line breaks and placeholders: {name}, {value}, {ref}, {delta}, {deltaPct}, {ref2}, {delta2}, {deltaPct2}, {target}, {progress}, {min}, {max}, {avg}, {first}, {last}, {period}. |
### Back of the card: content per KPI / Dos de la carte : contenu par KPI (`backItems`, Format pane)
Per-item card: Power BI shows it once per series, category, column or KPI (an "Apply settings to" list where relevant). In PBIP `visual.json`, each entry of `objects.backItems` carries a `selector` (`metadata` = the field's queryRef, or `data` for a category value); an entry without a selector applies to all items.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `backItems.text` | Text (Per-KPI settings or “Back of the card” field) | Texte (Réglages par KPI ou champ « Dos de la carte ») | toggle | bool | `true` | true / false | |
| `backItems.textAfter` | Text after the figures | Texte après les chiffres | toggle | bool | `false` | true / false | |
| `backItems.ref` | Comparison value | Valeur de comparaison | toggle | bool | `true` | true / false | |
| `backItems.delta` | Change | Écart | toggle | bool | `true` | true / false | |
| `backItems.ref2` | Comparison 2 and change | Comparaison 2 et écart | toggle | bool | `true` | true / false | |
| `backItems.target` | Target | Objectif | toggle | bool | `true` | true / false | |
| `backItems.progress` | Target achievement | Atteinte de l'objectif | toggle | bool | `true` | true / false | |
| `backItems.period` | Period | Période | toggle | bool | `true` | true / false | |
| `backItems.last` | Last period | Dernière période | toggle | bool | `true` | true / false | |
| `backItems.min` | Minimum | Minimum | toggle | bool | `true` | true / false | |
| `backItems.max` | Maximum | Maximum | toggle | bool | `true` | true / false | |
| `backItems.avg` | Average | Moyenne | toggle | bool | `true` | true / false | |
| `backItems.tooltips` | “Tooltips” fields | Champs « Infobulles » | toggle | bool | `true` | true / false | |
| `backItems.f1` | Back figure 1 | Chiffre 1 du dos | toggle | bool | `true` | true / false | |
| `backItems.f2` | Back figure 2 | Chiffre 2 du dos | toggle | bool | `true` | true / false | |
| `backItems.f3` | Back figure 3 | Chiffre 3 du dos | toggle | bool | `true` | true / false | |
| `backItems.f4` | Back figure 4 | Chiffre 4 du dos | toggle | bool | `true` | true / false | |
| `backItems.f5` | Back figure 5 | Chiffre 5 du dos | toggle | bool | `true` | true / false | |
| `backItems.f6` | Back figure 6 | Chiffre 6 du dos | toggle | bool | `true` | true / false | |
| `backItems.f7` | Back figure 7 | Chiffre 7 du dos | toggle | bool | `true` | true / false | |
| `backItems.f8` | Back figure 8 | Chiffre 8 du dos | toggle | bool | `true` | true / false | |
### Layout / Disposition (`layout`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.arrange` | Arrangement | Agencement | dropdown | enumeration | `auto` | `auto` Automatic grid; `row` One row; `column` One column; `grid` Grid (number of columns); `heroLeft` First one large, on the left ★; `heroTop` First one large, on top ★ | Automatic: the number of columns that gives the best card proportions. |
| `layout.columns` | Number of columns | Nombre de colonnes | number | integer | `3` | 1 to 12 | Visible when `layout.arrange` = `grid` |
| `layout.heroSize` | First KPI size (%) | Taille du premier KPI (%) | number | integer | `45` | 20 to 80 | Visible when `layout.arrange` = `heroLeft` or `heroTop` |
| `layout.gap` | Gap between cards | Espace entre les cartes | number | integer | `12` | 0 to 60 | |
| `layout.overflow` | When the cards do not fit | Quand les cartes ne tiennent pas | dropdown | enumeration | `fit` | `fit` Shrink them (never a scroll bar); `scroll` Keep the minimum sizes and scroll | Shrink: every card stays visible, the minimum sizes only choose the number of columns. |
| `layout.minWidth` | Minimum card width (px) | Largeur minimale d'une carte (px) | number | integer | `150` | 60 to 800 | Below this size, the cards wrap (and scroll if “Keep the minimum sizes” is chosen). |
| `layout.minHeight` | Minimum card height (px) | Hauteur minimale d'une carte (px) | number | integer | `96` | 40 to 600 | |
| `layout.lastRow` | Incomplete last row | Dernière ligne incomplète | dropdown | enumeration | `left` | `left` Aligned left; `center` Centered; `stretch` Stretched | |
| `layout.order` | KPI order | Ordre des KPI | dropdown | enumeration | `data` | `data` Field order; `valueDesc` Value, descending; `valueAsc` Value, ascending; `deltaDesc` Best change first; `nameAsc` Name A → Z | |
| `layout.hideBlank` | Hide blank KPIs | Masquer les KPI vides | toggle | bool | `false` | true / false | A card whose value is blank is not drawn (for instance a region without sales). |
| `layout.totalCard` | “Total” card (with “One KPI per…”) | Carte « Total » (avec « Un KPI par… ») | toggle | bool | `false` | true / false | Adds a card with the total over all categories, first. |
| `layout.totalLabel` | Total label | Libellé du total | text | text | (empty) | | Visible when `layout.totalCard` = `true` |
### Card / Carte (`card`, Format pane)
**Shape / Forme**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `card.shape` | Shape | Forme | dropdown | enumeration | `rounded` | `rect` Rectangle; `rounded` Rounded corners (Frame › Rounded corners); `pill` Pill; `circle` Circle ★; `leaf` Leaf (two rounded corners) ★; `chamfer` Cut corners ★; `ticket` Ticket (notches) ★; `underline` Underlined (no fill); `none` None (text only) | |
| `card.fill` | Fill (empty = automatic) | Fond (vide = automatique) | color | fill | (empty) | hex color | Automatic: the style background, slightly raised on dark backgrounds. |
| `card.fillOpacity` | Fill opacity (%) | Opacité du fond (%) | number | integer | `100` | 0 to 100 | |
| `card.tint` | KPI color tint in the fill (%) | Teinte de la couleur du KPI dans le fond (%) | number | integer | `0` | 0 to 40 | |
| `card.border` | Border | Bordure | toggle | bool | `true` | true / false | |
| `card.borderColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `card.border` = `true` |
| `card.borderWidth` | Width | Épaisseur | number | numeric | `1` | 0.5 to 6 | Visible when `card.border` = `true` |
| `card.shadow` | Soft shadow | Ombre douce | toggle | bool | `false` | true / false | |
**Colors and status / Couleurs et état**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `card.colorBy` | KPI color | Couleur des KPI | dropdown | enumeration | `accent` | `accent` Style accent (same for all); `palette` One color per KPI (palette); `status` By status (good / bad) | Used by the icon, the sparkline and the status bar. |
| `card.statusBar` | Accent bar (status) | Barre d'accent (état) | dropdown | enumeration | `none` | `none` None; `left` Left; `top` Top; `right` Right; `bottom` Bottom | Colored by the status of the card (good, warning, bad), otherwise the KPI color. |
| `card.statusWidth` | Accent bar width | Épaisseur de la barre d'accent | number | integer | `4` | 1 to 16 | Visible when `card.statusBar` = `left` or `top` or `right` or `bottom` |
| `card.accentColor` | Bar color (empty = status or KPI) | Couleur de la barre (vide = état ou KPI) | color | fill | (empty) | hex color | Visible when `card.statusBar` = `left` or `top` or `right` or `bottom` |
**Content / Contenu**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `card.layout` | Content layout | Disposition du contenu | dropdown | enumeration | `stack` | `stack` Stacked (title, value, details); `center` Centered; `split` Value left, trend right | |
| `card.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right | Visible when `card.layout` = `stack` or `split` |
| `card.vAlign` | Vertical position | Position verticale | dropdown | enumeration | `top` | `top` Top; `middle` Middle; `bottom` Bottom | |
| `card.padding` | Inner padding | Marge intérieure | number | integer | `14` | 0 to 48 | |
| `card.hover` | Hover effect | Effet au survol | dropdown | enumeration | `lift` | `none` None; `lift` Lift; `outline` Accent outline; `glow` Glow | |
### KPI titles / Titre des KPI (`kpiTitle`, Format pane)
The card header toggle is `kpiTitle.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `kpiTitle.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `kpiTitle.fontSize` | Size | Taille | number | formatting | `12` | 7 to 32 | |
| `kpiTitle.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `kpiTitle.bold` | Bold | Gras | toggle | bool | `false` | true / false | |
| `kpiTitle.italic` | Italic | Italique | toggle | bool | `false` | true / false | |
| `kpiTitle.caps` | Small caps | Petites majuscules | toggle | bool | `false` | true / false | |
| `kpiTitle.wrap` | Text wrap | Retour automatique à la ligne | toggle | bool | `true` | true / false | On a narrow card the title wraps (up to three lines) and gets slightly smaller before being cut. |
| `kpiTitle.position` | Position | Position | dropdown | enumeration | `above` | `above` Above the value; `below` Below the value | Below the value: like the category label of the native card. |
### Value / Valeur (`value`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `value.autoSize` | Automatic size | Taille automatique | toggle | bool | `true` | true / false | The value fills the room left in the card, up to the maximum size. |
| `value.fontSize` | Size (maximum if automatic) | Taille (maximale si automatique) | number | formatting | `36` | 10 to 160 | |
| `value.weight` | Weight | Graisse | dropdown | enumeration | `600` | `400` Regular; `600` Semibold; `700` Bold | |
| `value.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | |
| `value.statusColor` | Color by status (good / bad) | Couleur selon l'état (bon / mauvais) | toggle | bool | `false` | true / false | |
| `value.aggregate` | Displayed value (with a trend axis) | Valeur affichée (avec un axe de tendance) | dropdown | enumeration | `total` | `total` Period total (computed by the measure); `last` Last period; `first` First period; `avg` Average of the periods; `max` Maximum; `min` Minimum | Total: the measure evaluated over the whole filter context (exact for ratios and averages). |
| `value.countUp` | Animated counter | Compteur animé | toggle | bool | `true` | true / false | The value counts up when data changes (respects Style › Animations). |
| `value.blank` | Text when blank | Texte si vide | text | text | (empty) | | |
### Reference labels / Libellés de référence (`refLabels`, Format pane)
The card header toggle is `refLabels.show`.
**Content / Contenu**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `refLabels.show` | Show | Afficher | toggle | bool | `true` | true / false | Shown when measures are placed in “Reference labels” (label = measure name, value with its format; “Details” under it). |
| `refLabels.pairing` | KPIs concerned | KPI concernés | dropdown | enumeration | `all` | `all` Every label on each KPI; `rank` By rank (1st label with the 1st KPI…) | |
| `refLabels.max` | Maximum per card | Nombre maximal par carte | number | integer | `3` | 1 to 8 | |
**Layout / Disposition**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `refLabels.position` | Position | Position | dropdown | enumeration | `below` | `below` Below the value; `bottom` Bottom of the card | |
| `refLabels.arrange` | Arrangement | Agencement | dropdown | enumeration | `row` | `row` Side by side; `column` Stacked | |
| `refLabels.divider` | Divider | Séparateur | toggle | bool | `true` | true / false | |
| `refLabels.background` | Background | Arrière-plan | toggle | bool | `false` | true / false | |
| `refLabels.bgColor` | Background color (empty = KPI tint) | Couleur de l'arrière-plan (vide = teinte du KPI) | color | fill | (empty) | hex color | Visible when `refLabels.background` = `true` |
**Text / Texte**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `refLabels.titleSize` | Label size | Taille du libellé | number | formatting | `10` | 7 to 24 | |
| `refLabels.titleColor` | Label color (empty = secondary text) | Couleur du libellé (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `refLabels.valueSize` | Value size | Taille de la valeur | number | formatting | `13` | 7 to 32 | |
| `refLabels.valueColor` | Value color (empty = text) | Couleur de la valeur (vide = texte) | color | fill | (empty) | hex color | |
| `refLabels.detailSize` | Details size | Taille des détails | number | formatting | `10` | 7 to 24 | |
### Icon / Icône (`icon`, Format pane)
The card header toggle is `icon.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `icon.show` | Show | Afficher | toggle | bool | `true` | true / false | The icon of each KPI is chosen in Per-KPI settings › Icon, or by a text measure in the “Icon” field. |
| `icon.position` | Position | Position | dropdown | enumeration | `topRight` | `topRight` Top right; `topLeft` Before the title; `left` Left of the value; `above` Above (centered); `background` Watermark | |
| `icon.style` | Icon background | Fond de l'icône | dropdown | enumeration | `circle` | `plain` None; `circle` Round badge; `square` Square badge; `ring` Ring; `solid` Solid badge | |
| `icon.size` | Size | Taille | number | integer | `30` | 12 to 96 | |
| `icon.color` | Color (empty = KPI color) | Couleur (vide = couleur du KPI) | color | fill | (empty) | hex color | |
### Comparison / Comparaison (`comparison`, Format pane)
The card header toggle is `comparison.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `comparison.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `comparison.source` | Compare with | Comparer à | dropdown | enumeration | `auto` | `auto` Automatic; `reference` “Comparison” field; `previous` Previous period (trend axis); `first` First period (trend axis) | Automatic: the “Comparison” field if present, otherwise the previous period of the trend axis. |
| `comparison.mode` | Display | Afficher | dropdown | enumeration | `pct` | `pct` Change in %; `abs` Change in value; `both` Change in value and %; `ref` Comparison value | |
| `comparison.arrow` | Arrow | Flèche | dropdown | enumeration | `triangle` | `triangle` ▲ ▼; `arrow` ↑ ↓; `chevron` ⌃ ⌄; `none` None | |
| `comparison.badge` | As a badge | En pastille | toggle | bool | `true` | true / false | |
| `comparison.showLabel` | Label (“vs …”) | Libellé (« vs … ») | toggle | bool | `true` | true / false | |
| `comparison.fontSize` | Size | Taille | number | formatting | `12` | 7 to 30 | |
| `comparison.neutral` | Neutral zone (± %) | Zone neutre (± %) | number | numeric | `0` | 0 to 50 | A change smaller than this percentage is shown in the neutral color. |
| `comparison.show2` | Comparison 2 (“Comparison 2” field) | Comparaison 2 (champ « Comparaison 2 ») | toggle | bool | `true` | true / false | A second change under the first one, for instance vs budget and vs last year. |
| `comparison.statusFrom` | Card status (good, warning, bad) | État de la carte (bon, alerte, mauvais) | dropdown | enumeration | `auto` | `auto` Automatic (comparison, otherwise target); `compare` Comparison; `compare2` Comparison 2; `target` Target (thresholds); `both` Target and comparison (green, amber, red) ★ | Colors the status bar, the value and the cards “by status”. Target and comparison: good when the target is reached, warning when only the comparison is favorable, bad otherwise. |
| `comparison.warnFrom` | Warning from (% of target) | Alerte à partir de (% de l'objectif) | number | integer | `90` | 0 to 100 | Visible when `comparison.statusFrom` = `target`. With “Target”: good from 100 %, warning from this percentage, bad below. 0 = no warning level. |
| `comparison.goodColor` | “Good” color | Couleur « bon » | color | fill | `#2E7D4F` | hex color | |
| `comparison.warnColor` | “Warning” color | Couleur « alerte » | color | fill | `#C77C02` | hex color | Visible when `comparison.statusFrom` = `target` or `both` |
| `comparison.badColor` | “Bad” color | Couleur « mauvais » | color | fill | `#C0392B` | hex color | |
| `comparison.neutralColor` | Neutral color (empty = secondary text) | Couleur neutre (vide = texte secondaire) | color | fill | (empty) | hex color | |
### Target / Objectif (`target`, Format pane)
The card header toggle is `target.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `target.show` | Show | Afficher | toggle | bool | `true` | true / false | Drawn when a field is placed in “Target”. |
| `target.style` | Shape | Forme | dropdown | enumeration | `bar` | `bar` Progress bar; `ring` Ring ★; `bullet` Bullet (bar and marker) ★; `text` Text only | |
| `target.thickness` | Thickness | Épaisseur | number | integer | `6` | 2 to 24 | |
| `target.showPct` | Percentage reached | Pourcentage atteint | toggle | bool | `true` | true / false | |
| `target.label` | Label | Libellé | text | text | (empty) | | |
| `target.distance` | Distance to target | Distance à l'objectif | dropdown | enumeration | `none` | `none` Hidden; `pct` In %; `abs` As a value; `both` Value and % | Like the native KPI: “▲ +5.2% vs Target”, colored good / bad (“Lower is better” respected). |
| `target.color` | Color (empty = KPI color, “good” when reached) | Couleur (vide = couleur du KPI, « bon » si atteint) | color | fill | (empty) | hex color | |
| `target.trackColor` | Track color (empty = grid) | Couleur du rail (vide = grille) | color | fill | (empty) | hex color | |
### Sparkline / Courbe de tendance (`sparkline`, Format pane)
The card header toggle is `sparkline.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `sparkline.show` | Show | Afficher | toggle | bool | `true` | true / false | Drawn when a field is placed in “Trend axis”. |
| `sparkline.dateFormat` | Period format (empty = automatic) | Format des périodes (vide = automatique) | text | text | (empty) | | Dates of the trend axis in the comparison label, the back and the tooltips. Automatic: month and year for monthly dates (Dec 2025), the year for yearly dates. Examples: mmm yy, dd/mm/yyyy. |
| `sparkline.type` | Type | Type | dropdown | enumeration | `area` | `line` Line; `area` Area; `smooth` Smooth area; `columns` Columns ★; `step` Step ★ | |
| `sparkline.position` | Position | Position | dropdown | enumeration | `bottom` | `bottom` Bottom of the card; `background` Card background; `right` Right | |
| `sparkline.height` | Height (% of the card) | Hauteur (% de la carte) | number | integer | `32` | 10 to 70 | |
| `sparkline.color` | Color (empty = KPI color) | Couleur (vide = couleur du KPI) | color | fill | (empty) | hex color | |
| `sparkline.width` | Line width | Épaisseur du trait | number | numeric | `1.5` | 0.5 to 5 | |
| `sparkline.opacity` | Area opacity (%) | Opacité de l'aire (%) | number | integer | `22` | 0 to 100 | |
| `sparkline.lastDot` | Dot on the last value | Point sur la dernière valeur | toggle | bool | `true` | true / false | |
| `sparkline.minMax` | Minimum and maximum markers | Repères minimum et maximum | toggle | bool | `false` | true / false | |
| `sparkline.refLine` | Target line | Ligne de l'objectif | toggle | bool | `false` | true / false | Horizontal line at the target value (per period: target ÷ number of periods when “Displayed value” is the total). |
| `sparkline.zero` | Start at zero | Partir de zéro | toggle | bool | `false` | true / false | |
| `sparkline.showDate` | Date of the last period | Date de la dernière période | toggle | bool | `false` | true / false | Writes the last period of the trend axis under the value (like the “Date” option of the native KPI). |
### Flip / Retournement (`flip`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `flip.trigger` | Flip the card | Retourner la carte | dropdown | enumeration | `click` | `none` Never; `hover` On hover; `click` On click; `icon` On click on the ↻ icon | The back shows the information text (Per-KPI settings or “Back of the card” field) and key figures (card “Back of the card: content per KPI”). Keyboard: Enter. |
| `flip.animation` | Animation | Animation | dropdown | enumeration | `flipX` | `flipX` Horizontal flip; `flipY` Vertical flip; `fade` Fade; `slide` Sliding panel ★; `door` Door (swing) ★; `curtain` Curtain ★; `zoom` Zoom ★; `cube` Cube ★ | Visible when `flip.trigger` = `hover` or `click` or `icon` |
| `flip.direction` | Direction | Sens | dropdown | enumeration | `left` | `left` To the left; `right` To the right; `up` Upwards; `down` Downwards | Visible when `flip.trigger` = `hover` or `click` or `icon` |
| `flip.duration` | Duration (ms) | Durée (ms) | number | integer | `600` | 100 to 3000 | Visible when `flip.trigger` = `hover` or `click` or `icon` |
| `flip.easing` | Motion | Mouvement | dropdown | enumeration | `smooth` | `smooth` Smooth; `easeInOut` Ease in and out; `linear` Linear; `bounce` Bounce ★ | Visible when `flip.trigger` = `hover` or `click` or `icon` |
| `flip.autoBack` | Flip back after (s, 0 = never) | Revenir seule après (s, 0 = jamais) | number | integer | `0` | 0 to 120 | Visible when `flip.trigger` = `click` or `icon` |
| `flip.single` | One flipped card at a time | Une seule carte retournée à la fois | toggle | bool | `true` | true / false | Visible when `flip.trigger` = `click` or `icon` |
| `flip.hint` | ↻ indicator on the cards | Indicateur ↻ sur les cartes | toggle | bool | `true` | true / false | Visible when `flip.trigger` = `hover` or `click` or `icon` |
| `flip.preview` | Show the back (preview in edit mode) | Montrer le dos (aperçu en mode édition) | toggle | bool | `false` | true / false | Visible when `flip.trigger` = `hover` or `click` or `icon`. Shows every back while you format them. Ignored in reading view. |
### Back of the card / Dos de la carte (`back`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `back.content` | Content | Contenu | dropdown | enumeration | `both` | `both` Text and key figures; `text` Text only (figures if no text); `figures` Key figures only | |
| `back.figures` | Key figures | Chiffres clés | dropdown | enumeration | `all` | `all` All available; `compare` Comparison and target; `trend` Trend (min, max, average) | Visible when `back.content` = `both` or `figures` |
| `back.figLayout` | Figures layout | Disposition des chiffres | dropdown | enumeration | `auto` | `auto` Automatic (two columns, stacked when the card is narrow); `columns` Label left, value right; `stacked` Value under the label | Visible when `back.content` = `both` or `figures` |
| `back.fit` | Shrink the text to fit | Réduire le texte pour tout afficher | toggle | bool | `true` | true / false | The text gets smaller (down to 75 %) before the back scrolls. |
| `back.showTitle` | Repeat the title | Rappeler le titre | toggle | bool | `true` | true / false | |
| `back.fontSize` | Text size | Taille du texte | number | formatting | `12` | 7 to 32 | |
| `back.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Left; `center` Center | |
| `back.fill` | Fill (empty = KPI tint) | Fond (vide = teinte du KPI) | color | fill | (empty) | hex color | |
| `back.solid` | Solid KPI color fill | Fond plein à la couleur du KPI | toggle | bool | `false` | true / false | Text in white or black for contrast. |
| `back.textColor` | Text color (empty = automatic) | Couleur du texte (vide = automatique) | color | fill | (empty) | hex color | |
### Interactions (`interaction`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `interaction.select` | Click = filter the report (with “One KPI per…”) | Clic = filtrer le rapport (avec « Un KPI par… ») | toggle | bool | `true` | true / false | With “Flip on click”, use Ctrl + click to select. |
| `interaction.dim` | Opacity of unselected cards (%) | Opacité des cartes non sélectionnées (%) | number | integer | `35` | 5 to 90 | |
### Tooltips / Infobulles (`tooltip`, Format pane)
The card header toggle is `tooltip.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `tooltip.show` | Show | Afficher | toggle | bool | `true` | true / false | Tooltip on hover (with the fields of the "Tooltips" well and report page tooltips). Not on a card that flips on hover (the back gives the details). |
| `tooltip.periodTip` | Tooltip per period on the sparkline | Infobulle par période sur la courbe | toggle | bool | `true` | true / false | Visible when `tooltip.show` = `true` |
### Title / Titre (`title`, Format pane)
The card header toggle is `title.show`.
**Title / Titre**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `title.text` | Text | Texte | text | text | (empty) | | Leave empty for an automatic title built from the fields. |
| `title.fontSize` | Size | Taille | number | formatting | `14` | 7 to 40 | |
| `title.bold` | Bold | Gras | toggle | bool | `true` | true / false | |
| `title.italic` | Italic | Italique | toggle | bool | `false` | true / false | |
| `title.underline` | Underline | Souligné | toggle | bool | `false` | true / false | |
| `title.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | |
| `title.bgColor` | Background color | Couleur d'arrière-plan | color | fill | (empty) | hex color | |
| `title.align` | Horizontal alignment | Alignement horizontal | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right | |
| `title.wrap` | Text wrap | Retour automatique à la ligne | toggle | bool | `true` | true / false | |
**Subtitle / Sous-titre**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.subtitle` | Subtitle | Sous-titre | text | text | (empty) | | Several lines allowed: type \n to go to the next line. |
| `title.subFontSize` | Size | Taille | number | formatting | `11` | 7 to 30 | Visible when `title.subtitle` = |
| `title.subColor` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | Visible when `title.subtitle` = |
| `title.subItalic` | Italic | Italique | toggle | bool | `false` | true / false | Visible when `title.subtitle` = |
**Divider / Séparateur**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.divider` | Show divider | Afficher le séparateur | toggle | bool | `false` | true / false | |
| `title.dividerColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `title.divider` = `true` |
| `title.dividerStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | Visible when `title.divider` = `true` |
| `title.dividerWidth` | Width | Épaisseur | number | integer | `1` | 1 to 6 | Visible when `title.divider` = `true` |
**Spacing / Espacement**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `title.spaceBelow` | Space below the title (px) | Espace sous le titre (px) | number | integer | `4` | 0 to 40 | |
### Source note / Note de source (`source`, Format pane)
The card header toggle is `source.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `source.show` | Show | Afficher | toggle | bool | `false` | true / false | |
| `source.text` | Text | Texte | text | text | (empty) | | |
| `source.fontSize` | Size | Taille | number | formatting | `9` | 6 to 20 | |
| `source.italic` | Italic | Italique | toggle | bool | `false` | true / false | |
| `source.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color | |
| `source.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right | |
### Frame / Cadre (`container`, Format pane)
**Background / Arrière-plan**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.bgShow` | Background | Arrière-plan | toggle | bool | `false` | true / false | |
| `container.bgColor` | Color | Couleur | color | fill | `#FFFFFF` | hex color | Visible when `container.bgShow` = `true` |
| `container.bgColor2` | Gradient end (optional) | Fin du dégradé (optionnel) | color | fill | (empty) | hex color | Visible when `container.bgShow` = `true` |
| `container.bgTransparency` | Transparency (%) | Transparence (%) | slider | numeric | `0` | 0 to 100 | Visible when `container.bgShow` = `true` |
**Border / Bordure**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.border` | Border | Bordure | toggle | bool | `false` | true / false | |
| `container.borderColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `container.border` = `true` |
| `container.borderWidth` | Width | Épaisseur | number | integer | `1` | 0 to 6 | Visible when `container.border` = `true` |
| `container.radius` | Rounded corners | Coins arrondis | number | integer | `8` | 0 to 24 | |
**Shadow / Ombre**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.shadow` | Shadow | Ombre | toggle | bool | `false` | true / false | |
| `container.shadowColor` | Color (empty = soft) | Couleur (vide = douce) | color | fill | (empty) | hex color | Visible when `container.shadow` = `true` |
| `container.shadowSize` | Blur (px) | Flou (px) | number | integer | `12` | 0 to 40 | Visible when `container.shadow` = `true` |
**Spacing / Marges**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.padding` | Inner padding | Marge intérieure | number | integer | `8` | 0 to 40 | |
### Language and numbers / Langue et nombres (`texts`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `texts.language` | Interface language | Langue de l'interface | dropdown | enumeration | `auto` | `auto` Same as Power BI; `fr` French; `en` English | |
| `texts.numberLocale` | Number format locale (e.g. en-GB) | Format des nombres (ex. fr-FR) | text | text | (empty) | | Thousands and decimal separators. Empty: same as Power BI. |
### Other objects (not in the Format pane cards above)
- `subTotals`: `subTotals.rowSubtotals` (bool), `subTotals.perRowLevel` (bool), `subTotals.columnSubtotals` (bool), `subTotals.perColumnLevel` (bool), `subTotals.levelSubtotalEnabled` (bool), `subTotals.rowSubtotalsType` (enumeration), read by Power BI itself to compute the subtotals sent to the visual (not shown in the Format pane).
- `compare`: `compare.show` (bool), `compare.source` (enumeration), `compare.mode` (enumeration), `compare.arrow` (enumeration), `compare.badge` (bool), `compare.showLabel` (bool), `compare.fontSize` (formatting), `compare.neutral` (numeric), `compare.show2` (bool), `compare.statusFrom` (enumeration), `compare.warnFrom` (integer), `compare.goodColor` (fill), `compare.warnColor` (fill), `compare.badColor` (fill), `compare.neutralColor` (fill).
- `trend`: `trend.show` (bool), `trend.dateFormat` (text), `trend.type` (enumeration), `trend.position` (enumeration), `trend.height` (integer), `trend.color` (fill), `trend.width` (numeric), `trend.opacity` (integer), `trend.lastDot` (bool), `trend.minMax` (bool), `trend.refLine` (bool), `trend.zero` (bool), `trend.hoverTip` (bool).