Aller au contenu
Plume Visuals
← Retour
Gamme de base

Graphique en rayons de soleil pour Power BI Sunburst Plume

Une hiérarchie en anneaux : un clic ouvre le niveau en dessous, ou tous les niveaux sont affichés d'un coup.

Tutoriels ↓
Installer depuis Microsoft MarketplacePage officielle du visuel chez Microsoft · installation gratuite

Démo interactive

Le vrai visuel Power BI, exécuté dans votre navigateur avec les données fictives du rapport d'exemple. Changez de scénario, de style ou d'année : le visuel se met à jour comme dans Power BI. Fonctions premium ★ montrées ici sans filigrane ; dans Power BI, sans licence, elles affichent « Plume Visuals · Aperçu premium ».

Power BI n'a pas de graphique en rayons de soleil. Sunburst Plume dessine 1 à 8 niveaux d'une hiérarchie en anneaux, du centre vers le bord : région, ville, catégorie ; service, poste, fournisseur. Deux modes : Exploration, où un clic ouvre le secteur (zoom animé, fil d'Ariane, retour par le centre), et Tous les niveaux, où tout est affiché et un clic filtre la page. Les noms suivent les arcs, le total est au centre, les pourcentages du parent ou du total se lisent sans DAX, les petits secteurs se regroupent dans « Autres » et les hiérarchies irrégulières s'arrêtent proprement. En premium : l'axe de lecture (les anneaux grandissent ou rétrécissent d'une année à l'autre, sans changer de couleur), bande de comparaison avec l'an dernier, couleurs selon l'écart au budget ou selon une mesure, vues icicle et demi-cercle, anneaux résumés des niveaux masqués, mise en avant de secteurs, une couleur par niveau, anneaux à aires comparables et regroupement sous un % du parent.

Cas d'usage

  • Ventes par région, ville et catégorie, avec la part de chacun dans son parent
  • Dépenses par service, poste et fournisseur, comparées au budget
  • Effectifs par site, équipe et métier ; stocks par entrepôt, famille et article
  • Évolution des parts par rapport à l'an dernier, branche par branche
  • Parts de marché année par année, rejouées avec l'axe de lecture ★

GratuitInclus gratuitement

  • 1 à 8 niveaux en anneaux ; mode Exploration (un clic ouvre le niveau en dessous, zoom animé, fil d'Ariane, centre = remonter) ou Tous les niveaux
  • Niveaux visibles à la fois réglables, repère des secteurs qui s'ouvrent ; clic = ouvrir, ouvrir et filtrer, ou sélectionner
  • Étiquettes le long des arcs, rayonnantes ou tangentielles, jamais à l'envers ; nom, valeur, % du parent, du total ou du secteur ouvert
  • Total au centre, secteur ouvert ou survolé avec sa part du parent
  • « Autres » automatique (nombre maximal de secteurs par parent), tri, hiérarchies irrégulières
  • Couleurs par branche (plus claires vers l'extérieur) ou unique ; infobulles, filtre croisé, surbrillance, clavier, menu contextuel
  • Formats dynamiques : bouton fx sur les couleurs et les textes, tout réglage piloté en DAX

PremiumFonctions premium

  • Axe de lecture : lecture ▶, curseur, vitesse, boucle, transitions animées des arcs, couleurs stables
  • Bande de comparaison avec une autre période (favorable / défavorable) et ▲▼ dans les étiquettes
  • Couleurs selon l'écart à l'objectif (une baisse peut être favorable) ou selon une mesure
  • Vues icicle (rectangles) et demi-cercle, avec la même exploration au clic
  • Anneaux résumés des niveaux masqués, mise en avant de secteurs par leur nom
  • Une couleur par niveau, anneaux à aires comparables ou premier anneau plus épais, regroupement sous un % du parent
  • Styles communs au catalogue (Néon, Journal, Nordique…), palettes, thème JSON

Utilisables sans clé pour les essayer, avec un filigrane.

Tutoriels

Commencez par la prise en main, puis piochez dans les cas pratiques. La page « Champs et réglages » décrit chaque option du volet Format.

  1. Prise en mainDébutant6 min de lectureUn graphique en rayons de soleil qui s'ouvre d'un clic dans Power BIPrise en main de Sunburst Plume : préparer une hiérarchie Région, Ville, Catégorie, insérer le visuel, ouvrir un secteur d'un clic, revenir, filtrer la page et lire les pourcentages.
  2. Cas pratiquesIntermédiaire5 min de lectureSunburst Plume : 10 cas pratiquesPas à pas : ouvrir et filtrer d'un même clic, afficher les % du parent, regrouper les petits secteurs, voir les parts évoluer année par année, comparer avec l'an dernier, suivre un budget, passer en icicle.
  3. Champs et réglagesAvancé12 min de lectureSunburst Plume : tous les champs et réglages du volet FormatRéférence complète de Sunburst Plume : les sept champs, chaque réglage des cartes Couleurs des données, Disposition, Secteurs et niveaux, Étiquettes, Centre, Fil d'Ariane, Comparaison et Lecture (axe de lecture).
  4. Bases communesBien démarrer avec les visuels PlumeInstallation, licence, styles et réglages communs à tous les visuels.

Champs à glisser dans le visuel

ChampContenu
Groupes (du centre vers le bord)1 à 8 colonnes : un anneau par champObligatoire
TailleMesure qui donne la taille des secteurs (sans elle : lignes comptées)Facultatif
Couleur (mesure)Taux de marge, satisfaction : dégradé de couleursFacultatifPremium
ObjectifBudget, objectif : couleur selon l'écartFacultatifPremium
ComparaisonAnnée précédente : bande d'écart et ▲▼FacultatifPremium
Axe de lectureAnnée, mois ou date : les anneaux s'animentFacultatifPremium
InfobullesMesures supplémentairesFacultatif
Format dynamiqueMesures renommées carte.réglage (ex. title.text) : le volet Format piloté en DAXFacultatif

Il vous manque une fonction ? Nous adaptons nos visuels ou en créons sur mesure. Demander un visuel sur mesure

Un bug dans Sunburst Plume, ou une idée pour l'améliorer ? Signaler un bug · Proposer une idée

Référence technique pour assistants IA

Section destinée aux assistants IA (ChatGPT, Claude, Copilot…) : tous les champs, toutes les options du volet Format avec leurs noms internes, le format des données et des exemples DAX. Générée depuis le code du visuel, version 1.1.0.0. Vous pouvez la copier dans votre assistant pour qu'il vous guide.

Version Markdown brute (/ai/visuals/sunburst.md)
# Sunburst Plume: technical reference for AI assistants

> Power BI custom visual by Plume Studio (Plume Visuals). Visual version **1.1.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 Sunburst 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/sunburst (French: https://plumevisuals.com/fr/visuels/sunburst)
- Summary: A hierarchy in rings: a click opens the level beneath, or every level is shown at once.
- Power BI visual GUID (`visualType`): `plumeSunburstE157D96C0C32496286BD12E747C8F76F`
- 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

Sunburst Plume (identifier `sunburst`) is a Power BI custom visual (version 1.1.0.0, installed from its `.pbiviz` file; not yet on AppSource) that draws **sunburst charts**: 1 to 8 levels of a hierarchy as concentric rings, from the center (first level) to the edge (last level). Power BI Desktop has no native sunburst chart.

**New in version 1.1.0.0 (30/10/2026):** Format pane reorganized to the shared v2 order (Tooltips, Title, Source note, Frame, Language and numbers); no new feature (native parity was already complete).

- **Two modes** (`layout.mode`): `explore` (default) shows `layout.depth` rings at once (2 by default); a click on a sector **opens the level beneath** with an animated zoom (the sector takes the whole circle), the **breadcrumb** (`nav`) and a click on the **center** go back; `all` shows every ring and a click selects (cross-filter).
- `interaction.click` (explore mode): `zoom` (open; Ctrl + click selects), `zoomSelect` (open and filter the other visuals; going back to the top clears the filter), `select` (never open). A sector with no level beneath is always selected.
- **Labels** follow the arcs when they fit (`labels.orientation` = `auto`), otherwise turn radial, otherwise are shortened with "…" or hidden (never upside down, never one letter, numbers never cut); content: name, value, % of the parent, of the total or of the opened sector.
- **Center**: total, opened sector or hovered sector, with its share of the parent.
- **Others**: at most `rings.maxChildren` sectors per parent (12 by default) and, ★, sectors under `rings.minShare` % of their parent are grouped in one "Others" sector (tooltip lists their names; a click selects them all).
- **Ragged hierarchies**: a blank value stops the branch (`rings.blanks` = `hide`) or shows "(Blank)" (`show`).
- In explore mode, a thin line (`rings.cue`) marks the sectors that can be opened.
- **Play axis ★** (`play` role, premium since the 22/10/2026 rebalancing; usable with the watermark, never blocked): one value of a year, date or ordered text column at a time, with a play bar (▶, start, end, slider, speed ×0.5–×4) and the current value in large type; arcs grow and shrink from one frame to the next (animated transitions), branch colors and the opened sector stay the same. Same shared player and same `play` settings as Scatter Plume.

## 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 are **free**; every other `style.preset`, the other gradient palettes (`style.palette`) and `style.themeJson` ("Theme JSON ★") are **premium**.
- Free in Sunburst Plume: both modes, levels shown at once, the breadcrumb, the center, labels and their orientations, % of parent / total / opened sector, Others by maximum count, sorting, blank handling, equal rings, gaps, corners, start angle, colors by branch or single, the legend, tooltips, cross-filtering, highlighting, keyboard.
- Premium features of Sunburst Plume:
  - `layout.view` = `half` (half circle) or `icicle` (rectangular partition);
  - coloring `dataColors.mode` = `measure` (gradient by the Color field or by the size) or `target` (variance to target); the `auto` mode becomes premium when the Color or Target field is filled;
  - the Comparison field with `compare.band` or `compare.arrows` on (variance band on each sector's outer edge, ▲▼ in labels and center);
  - `rings.summary` (hidden levels drawn as thin rings, explore mode);
  - `interaction.highlight` (sector names that keep their color, the rest dimmed);
  - since the 22/10/2026 rebalancing: the Play axis field with at least one value (« Axe de lecture ★ », card « Lecture ★ » / « Playback ★ »); `dataColors.mode` = `level` (one color per level); `layout.ringSizing` = `area` or `inner` with at least two rings shown (not in icicle); `rings.minShare` when at least one sector is actually grouped by it.
- Without a valid key, a premium feature in use shows, in edit mode, a "Premium preview" note in the footer; in reading view, **"Plume Visuals · Premium preview"** (French « Plume Visuals · Aperçu premium ») is repeated lightly across the whole visual, without catching the mouse. It disappears once a key is pasted in **Format › Plume Studio License › License key** (`license.key`), the **first card** of the Format pane. 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 `sunburst` 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). Prices: 39 € personal, 99 € SME, 299 € enterprise per year, or the catalog pack (199 € / 399 € / 1,199 € per year; tiers by number of users: personal 1–10, SME 11–200, enterprise more than 200).

## Expected data shape

One row per combination of the finest level, one column per level, and measures.

| Region (`groups`) | City (`groups`) | Category (`groups`) | Revenue (`value`) | Revenue LY (`comparison` ★) |
|---|---|---|---|---|
| London | Westminster | Furniture | 41,000 | 37,500 |
| London | Camden | Decor | 32,000 | 34,100 |

- **Groups (center to edge)** (`groups`, « Groupes (du centre vers le bord) », 1 to 8 columns, required): the first field is the center ring. Text, numbers (years shown without a thousands separator) and dates (formatted with the column format).
- **Size** (`value`, « Taille », one measure): sector size; only positive values count (negative rows are left out with a warning icon, blank rows ignored). Without it, rows are counted (title "Count by …"). Use an additive measure.
- **Color (measure) ★** (`colorBy`, « Couleur (mesure) »): gradient on the style's gradient palette; a parent gets the size-weighted average of its rows.
- **Target ★** (`target`, « Objectif »): color by variance to target (summed for parents).
- **Comparison ★** (`comparison`, « Comparaison »): value to compare with (e.g. previous year), summed for parents.
- **Play axis ★** (`play`, « Axe de lecture ★ », one column, optional, premium): each value is a frame showing only its rows. Numbers and dates in ascending order (years without a thousands separator, dates with the column format), texts in Power BI's order ("Sort by column" included), blanks last. One value only: no play bar. The tooltip gets a line with the field name and the current frame.
- **Tooltips** (`tooltips`, up to 5 measures, summed for parents) and **Dynamic format** (`format`, see below).
- Volume of data: windows of 30,000 rows, more fetched with `fetchMoreData` up to 1,000,000 rows; Others keeps the number of sectors drawn low (at most 6,000 drawn). 100,004 rows render in well under 3 s.

## DAX recipes

```dax
Revenue = SUM ( Sales[Amount] )
Revenue LY = CALCULATE ( [Revenue], SAMEPERIODLASTYEAR ( Calendar[Date] ) )   // Comparison ★
Margin rate = DIVIDE ( [Margin], [Revenue] )                                    // Color (measure) ★
Planned budget = SUM ( Expenses[Budget] )                                       // Target ★ (with compare.lowerIsBetter = true for costs)
```

## Interactions with the report

- Click: open (explore) or select; the selection ID of a sector combines its path (Region, then City…), so a city selects Region + City. Ctrl for several; click an empty area to clear. A selected sector keeps its parents and children bright.
- Cross-highlighting from other visuals: sectors step back and the highlighted part is drawn in full color.
- Hover: tooltip (path, value, share of parent, share of total, share of the opened sector, Others members, comparison and change, target and variance, color measure, Tooltips measures); report-page tooltips supported; with `interaction.trace` the hovered sector's parents and children stay bright; the center shows the hovered sector.
- Play bar: Space or Enter plays or pauses, arrows step one frame, Page Up / Page Down a tenth, Home / End; the frame is announced to screen readers. On a dashboard tile: opening frame, no autoplay, no transition.
- Keyboard: Tab, arrows to browse sectors, Enter to open (explore) or select, Backspace to go up one level, Esc to clear. High contrast, ARIA labels, French and English.
- Context menu everywhere (sector, empty area, center, breadcrumb, landing page). The opened sector is session state: it is kept after a filter (back to the top if it disappears) but never saved in the report.

## Dynamic formats

- **fx button** (Power BI conditional formatting) on colors and texts of the Format pane; per-category fx on the first-level colors.
- **"Dynamic format" well** (`format`): measures renamed `card.setting` (e.g. `layout.mode`, `title.text`, `center.text`) drive any setting and win over the fixed value. Driving a ★ setting by DAX still shows the watermark without a key.

```dax
// renamed title.text
Dynamic title = "Revenue by channel · 2025 vs 2024: " & FORMAT ( CALCULATE ( DIVIDE ( [Revenue], [Revenue LY] ) - 1, ALLSELECTED () ), "+0.0 %;-0.0 %" )
```

## Format pane: option IDs

- Card order: `license`, `style`, `dataColors`, `layout`, `rings`, `labels`, `center`, `nav`, `compare`, `play`, `legend`, `interaction`, then `title`, `source`, `container`, `texts`. Format pane in version 1.1.0.0 (30/10/2026), top to bottom: `license`, `style`, `dataColors`, `layout`, `rings`, `labels`, `center`, `nav`, `compare`, `play`, `legend`, `interaction`, `tooltip`, `title`, `source`, `container`, `texts`. Settings moved or renamed in this version keep working in older reports (the old names are still read).
- `dataColors`: `mode` (`auto` | `branch` | `level` ★ | `single` | `measure` ★ | `target` ★), `single`, `shade` (0–60, 22), `fill` per first-level category.
- `layout`: `mode` (`explore` | `all`), `depth` (1–8, 2), `view` (`sunburst` | `half` ★ | `icicle` ★), `innerRadius` (0–80 %, 30), `ringSizing` (`equal` | `area` ★ | `inner` ★), `ringGap` (0–10, 1.5), `padding` (0–6, 1), `cornerRadius` (0–16, 3), `startAngle` (−180–180, 0).
- `rings`: `sort` (`value` | `valueAsc` | `alpha` | `data`), `maxChildren` (0–200, 12), `minShare` ★ (0–25 %, 0), `othersLabel`, `blanks` (`hide` | `show`), `cue`, `summary` ★.
- `labels`: `show`, `content` (`name` | `nameValue` | `namePct` | `value` | `pct`), `pctOf` (`parent` | `total` | `view`), `orientation` (`auto` | `curved` | `radial` | `tangential`), `fontSize` (10), `color`, `bold`, `units`, `decimals`, `prefix`, `suffix`.
- `center`: `show`, `content` (`auto` | `view` | `total`), `text`, `valueSize` (22), `labelSize` (11), `color`, `back`.
- `nav`: `show`, `rootLabel`, `hint`, `position` (`top` | `bottom`).
- `compare`: `band` ★, `bandWidth` (2–12, 4), `arrows`, `lowerIsBetter`, `neutral` (0–50 %, 2), `scale` (2–200 %, 25), `compareLabel`.
- `play` ★ (card « Lecture ★ », shown with the Play axis field): `start` (`last` | `first`), `speed` (100–10,000 ms per frame, 1000), `loop` (false), `autoPlay` (false; never when animations are reduced), `transition` (true; off as well when `style.animate` is false or the system reduces motion), `controls` (true), `position` (`bottom` | `top`), `ticks` (`auto` | `all` | `none`), `tickLabels`, `stepButtons`, `speedButton` (true), `showLabel` (true), `labelSize` (12–160, 44), `labelPosition` (`bottomRight` | `topRight` | `topLeft` | `bottomLeft` | `center`).
- `legend`: off by default (`show`, `position` = `right`…). `interaction`: `hover`, `dim` (5–80, 25), `click` (`zoom` | `zoomSelect` | `select`), `trace`, `highlight` ★.

## Editing a PBIP report (visual.json)

`visualType` is the visual GUID, `queryState` keys are the data role names, `objects` keys are the option IDs. Booleans `true` / `false`, numbers suffixed with `D`, strings and enumeration values in single quotes.

```json
{
  "visualType": "plumeSunburstE157D96C0C32496286BD12E747C8F76F",
  "query": {
    "queryState": {
      "groups": { "projections": [
        { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Region" } }, "queryRef": "Sales.Region", "nativeQueryRef": "Region" },
        { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "City" } }, "queryRef": "Sales.City", "nativeQueryRef": "City" } ] },
      "value": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Revenue" } }, "queryRef": "Sales.Revenue", "nativeQueryRef": "Revenue" } ] }
    }
  },
  "objects": {
    "layout": [ { "properties": { "mode": { "expr": { "Literal": { "Value": "'all'" } } } } } ],
    "labels": [ { "properties": { "content": { "expr": { "Literal": { "Value": "'namePct'" } } } } } ],
    "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).

## 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`. Branch colors come from the style's categorical palette (or custom series 1–8); `minimal` removes corner rounding, the style's `fill` token (hatch, outlined, glass…) paints the sectors.
- `style.themeJson` (Theme JSON ★): a JSON theme as plain text (format v2 with optional `extends` and groups `colors`, `palettes`, `typography`, `shape`, `table`, `marks`, `effects`). Full reference: https://plumevisuals.com/ai/tutorials/en/themes-json.md.

## Common pitfalls

- A single ring although several fields are in Groups: explore mode shows `layout.depth` rings; click a sector or raise the depth, or use `layout.mode` = `all`.
- "Count by …" title: no measure in Size.
- Warning "Negative values ignored": negative rows cannot be ring shares.
- Many gray "Others" sectors: raise `rings.maxChildren` or set 0.
- A click does not filter the page: explore mode opens sectors; use Ctrl + click or `interaction.click` = `zoomSelect`.
- Names missing: sectors too small for their text; enlarge the visual, lower `labels.fontSize`, read the tooltip.
- Watermark visible: a Play axis field, one color per level, comparable-area or first-ring-thicker rings, grouping below a % of the parent, half circle, icicle, measure or target coloring (including `auto` with the Color or Target field), comparison band or arrows, summary rings, highlight, a ★ style or a theme JSON, without a valid key.
- The visual makes no network request: data and license key stay in the report.

## Features that do NOT exist (do not suggest them)

Small multiples, images or icons in the center, labels outside the circle with leader lines, saving the opened sector in the report or in bookmarks, Power BI's native drill buttons (the visual zooms by itself), values computed from non-additive measures at parent level (parents add up their rows; the Color measure is a size-weighted average).

## 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 |
|---|---|---|---|---|---|
| `groups` | Groups (center to edge) | Groupes (du centre vers le bord) | column | 8 | 1 to 8 fields, from the center ring to the outer ring (e.g. Region, Country, City). |
| `value` | Size | Taille | measure | 1 | Measure that sizes each sector (without it, rows are counted). |
| `colorBy` | Color (measure) ★ | Couleur (mesure) ★ | measure | 1 | Premium: colors the sectors on the gradient palette (margin rate, satisfaction…). |
| `target` | Target ★ | Objectif ★ | measure | 1 | Premium: colors each sector by its variance to target (favorable / unfavorable). |
| `comparison` | Comparison ★ | Comparaison ★ | measure | 1 | Premium: value to compare with (e.g. last year), shown as a band on the edge of each sector with ▲▼. |
| `play` | Play axis ★ | Axe de lecture ★ | column | 1 | Premium: a date, a year or an ordered category: the sectors grow and shrink from one value to the next (play button). |
| `tooltips` | Tooltips | Infobulles | measure | 5 |  |
| `format` | Dynamic format | Format dynamique | measure | several | Measures named card.setting (e.g. title.fontSize): drive any Format option with DAX |

Data view: categorical, categories = `groups` + `play` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `value`, `colorBy`, `target`, `comparison`, `tooltips`, `format`.
Capabilities: supportsHighlight, supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView.
Network access: none (no privileges requested, no external request).

## Format pane options (145)

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. |

### Layout / Disposition (`layout`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.mode` | Mode | Mode | dropdown | enumeration | `explore` | `explore` Explore: a click opens the level beneath; `all` All levels always shown | Explore: click a sector to zoom into it (animated), the breadcrumb or the center goes back. All levels: every ring is shown and a click selects (cross-filter). |
| `layout.depth` | Levels shown at once | Niveaux visibles à la fois | number | integer | `2` | 1 to 8 | Visible when `layout.mode` = `explore`. Number of rings shown from the opened sector. The deeper levels open with a click. |
| `layout.view` | Shape | Forme | dropdown | enumeration | `sunburst` | `sunburst` Sunburst (circle); `half` Half circle ★; `icicle` Rectangular partition (icicle) ★ | Icicle: the same hierarchy as nested bars, from left to right; long names stay readable. |
| `layout.innerRadius` | Center hole (% of radius) | Trou central (% du rayon) | number | integer | `30` | 0 to 80 |  |
| `layout.ringSizing` | Ring thickness | Épaisseur des anneaux | dropdown | enumeration | `equal` | `equal` Equal; `area` Comparable areas (outer rings thinner) ★; `inner` First ring thicker ★ | With at least two rings shown. |
| `layout.ringGap` | Space between rings (px) | Espace entre les anneaux (px) | number | numeric | `1.5` | 0 to 10 |  |
| `layout.padding` | Space between sectors (px) | Espace entre les secteurs (px) | number | numeric | `1` | 0 to 6 |  |
| `layout.cornerRadius` | Sector corner radius (px) | Arrondi des secteurs (px) | number | integer | `3` | 0 to 16 |  |
| `layout.startAngle` | Start angle (°) | Angle de départ (°) | number | integer | `0` | -180 to 180 | Visible when `layout.view` = `sunburst` |

### Data colors / Couleurs des données (`dataColors`, 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.dataColors` 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 |
|---|---|---|---|---|---|---|---|
| `dataColors.mode` | Coloring | Coloration | dropdown | enumeration | `auto` | `auto` Automatic (by branch; by the Color or Target field when filled); `branch` By branch (first-level color, lighter outward); `level` One color per level ★; `single` Single color; `measure` Gradient by the Color field (or the size) ★; `target` Variance to target (favorable / unfavorable) ★ |  |
| `dataColors.single` | Color | Couleur | color | fill | (empty) | hex color |  |
| `dataColors.fill` | Color | Couleur | color | fill | (empty) | hex color |  |
| `dataColors.shade` | Lighten at each level (%) | Éclaircir à chaque niveau (%) | number | integer | `22` | 0 to 60 | By branch and single color: each ring is lighter than the one inside it, so the levels stay readable. |

### Sectors and levels / Secteurs et niveaux (`rings`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `rings.sort` | Sector order | Ordre des secteurs | dropdown | enumeration | `value` | `value` Largest first; `valueAsc` Smallest first; `alpha` Alphabetical; `data` Data order (Sort by column) |  |
| `rings.maxChildren` | Sectors per parent at most (0 = all) | Secteurs par parent au plus (0 = tous) | number | integer | `12` | 0 to 200 | The smallest sectors of a parent beyond this number are grouped in « Others ». |
| `rings.minShare` | Group below (% of parent) ★ | Regrouper sous (% du parent) ★ | number | numeric | `0` | 0 to 25 | Sectors smaller than this share of their parent join « Others » (in addition to the maximum number). |
| `rings.othersLabel` | Grouping label | Libellé du regroupement | text | text | (empty) |  |  |
| `rings.blanks` | Blank values of a level | Valeurs vides d'un niveau | dropdown | enumeration | `hide` | `hide` Stop the branch (ragged hierarchy); `show` Show « (Blank) » | Stop: a country without regions keeps its sector, with nothing outside it. |
| `rings.cue` | Hidden levels cue | Repère des niveaux masqués | toggle | bool | `true` | true / false | Exploration: a thin line outside the sectors that can be opened. |
| `rings.summary` | Summarize hidden levels (thin rings) ★ | Résumer les niveaux masqués (anneaux fins) ★ | toggle | bool | `false` | true / false | Exploration: the levels beyond « Levels shown at once » are drawn as thin rings, so the whole depth stays visible. |

### Data labels / Étiquettes de données (`labels`, Format pane)

The card header toggle is `labels.show`.

**Labels / Étiquettes**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `labels.content` | Content | Contenu | dropdown | enumeration | `name` | `name` Name; `nameValue` Name and value; `namePct` Name and percentage; `value` Value; `pct` Percentage |  |
| `labels.pctOf` | Percentage of | Pourcentage calculé sur | dropdown | enumeration | `parent` | `parent` The parent; `total` The total; `view` The opened sector (center) |  |
| `labels.orientation` | Orientation | Orientation | dropdown | enumeration | `auto` | `auto` Automatic (along the arc, else radial); `curved` Along the arc (curved); `radial` Radial; `tangential` Tangential (straight) | A label that does not fit its sector is shortened (…) or hidden: it stays in the tooltip. |
| `labels.fontSize` | Text size | Taille du texte | number | formatting | `10` | 6 to 24 |  |
| `labels.color` | Color (empty = automatic) | Couleur (vide = automatique) | color | fill | (empty) | hex color | Automatic: white or dark depending on the sector color. |
| `labels.bold` | Bold | Gras | toggle | bool | `false` | true / false |  |

**Numbers / Nombres**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `labels.units` | Display units | Unités d'affichage | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions |  |
| `labels.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 |  |
| `labels.prefix` | Prefix | Préfixe | text | text | (empty) |  |  |
| `labels.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) |  |  |

### Center / Centre (`center`, Format pane)

The card header toggle is `center.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `center.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `center.content` | Content | Contenu | dropdown | enumeration | `auto` | `auto` Opened sector, or hovered one; `view` Opened sector only; `total` Always the total |  |
| `center.text` | Total label | Libellé du total | text | text | (empty) |  |  |
| `center.valueSize` | Value size | Taille de la valeur | number | formatting | `22` | 8 to 72 | Shrinks automatically when the center is small. |
| `center.labelSize` | Label size | Taille du libellé | number | formatting | `11` | 6 to 30 |  |
| `center.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color |  |
| `center.back` | Click the center = go up one level | Clic au centre = remonter d'un niveau | toggle | bool | `true` | true / false |  |

### Breadcrumb / Fil d'Ariane (`nav`, Format pane)

The card header toggle is `nav.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `nav.show` | Show (explore mode) | Afficher (exploration) | toggle | bool | `true` | true / false |  |
| `nav.rootLabel` | First item label | Libellé du premier élément | text | text | (empty) |  |  |
| `nav.hint` | « Click to open » hint | Aide « cliquez pour ouvrir » | toggle | bool | `true` | true / false |  |
| `nav.position` | Position | Position | dropdown | enumeration | `top` | `top` Top; `bottom` Bottom |  |

### Legend / Légende (`legend`, Format pane)

The card header toggle is `legend.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `legend.show` | Show | Afficher | toggle | bool | `false` | true / false | Shown when the chart has several series. |
| `legend.position` | Position | Position | dropdown | enumeration | `right` | `top` Top; `bottom` Bottom; `right` Right; `left` Left |  |
| `legend.align` | Alignment | Alignement | dropdown | enumeration | `left` | `left` Start; `center` Center; `right` End | Visible when `legend.position` = `top` or `bottom` |
| `legend.showTitle` | Legend title | Titre de la légende | toggle | bool | `false` | true / false |  |
| `legend.titleText` | Title text | Texte du titre | text | text | (empty) |  | Visible when `legend.showTitle` = `true` |
| `legend.fontSize` | Size | Taille | number | formatting | `9` | 6 to 24 |  |
| `legend.color` | Color (empty = secondary text) | Couleur (vide = texte secondaire) | color | fill | (empty) | hex color |  |
| `legend.interactive` | Click = select the series | Clic = sélectionner la série | toggle | bool | `true` | true / false |  |

### Comparison and target / Comparaison et objectif (`compare`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `compare.band` | Variance band on the sector edge ★ | Bande d'écart au bord des secteurs ★ | toggle | bool | `true` | true / false | With the Comparison field: a thin band on the outer edge of each sector, favorable or unfavorable, darker when the change is larger. |
| `compare.bandWidth` | Band width (px) | Épaisseur de la bande (px) | number | integer | `4` | 2 to 12 |  |
| `compare.arrows` | ▲▼ and change in labels | ▲▼ et écart dans les étiquettes | toggle | bool | `true` | true / false |  |
| `compare.lowerIsBetter` | A decrease is favorable | Une baisse est favorable | toggle | bool | `false` | true / false | Costs, delays, returns: below the comparison or the target is good. |
| `compare.neutral` | Neutral zone (± %) | Zone neutre (± %) | number | numeric | `2` | 0 to 50 |  |
| `compare.scale` | Change for the strongest color (%) | Écart pour la couleur la plus forte (%) | number | integer | `25` | 2 to 200 |  |
| `compare.compareLabel` | Comparison name | Nom de la comparaison | text | text | (empty) |  |  |

### Playback ★ / Lecture ★ (`play`, Format pane)

This card controls premium features (★): they work without a license key but show the watermark while in use.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `play.start` | Frame shown on opening | Image affichée à l'ouverture | dropdown | enumeration | `last` | `last` The last one (most recent); `first` The first one |  |
| `play.speed` | Duration of a frame (ms) | Durée d'une image (ms) | number | integer | `1000` | 100 to 10000 | At speed ×1; the speed button of the play bar multiplies it (×0.5 to ×4) for the session. |
| `play.loop` | Loop | Lecture en boucle | toggle | bool | `false` | true / false |  |
| `play.autoPlay` | Play automatically on opening | Lecture automatique à l'ouverture | toggle | bool | `false` | true / false | Once, from the first frame. Not when animations are reduced (Style › Animations or the system) nor on a dashboard tile. |
| `play.transition` | Animated transitions | Transitions animées | toggle | bool | `true` | true / false | Values, positions and colors move smoothly from one frame to the next. |
| `play.controls` | Play bar | Barre de lecture | toggle | bool | `true` | true / false |  |
| `play.position` | Bar position | Position de la barre | dropdown | enumeration | `bottom` | `bottom` Bottom; `top` Top | Visible when `play.controls` = `true` |
| `play.ticks` | Tick marks | Graduations | dropdown | enumeration | `auto` | `auto` Automatic; `all` Every frame; `none` None | Visible when `play.controls` = `true` |
| `play.tickLabels` | Tick labels | Étiquettes des graduations | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.stepButtons` | Start and end buttons | Boutons début et fin | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.speedButton` | Speed button | Bouton de vitesse | toggle | bool | `true` | true / false | Visible when `play.controls` = `true` |
| `play.showLabel` | Current value in large type | Valeur en cours en grand | toggle | bool | `true` | true / false |  |
| `play.labelSize` | Large value size | Taille de la valeur en grand | number | formatting | `44` | 12 to 160 | Visible when `play.showLabel` = `true` |
| `play.labelPosition` | Large value position | Position de la valeur en grand | dropdown | enumeration | `bottomRight` | `bottomRight` Bottom right; `topRight` Top right; `topLeft` Top left; `bottomLeft` Bottom left; `center` Center | Visible when `play.showLabel` = `true` |

### Interactions (`interaction`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `interaction.hover` | Highlight on hover | Mettre en avant au survol | toggle | bool | `true` | true / false |  |
| `interaction.dim` | Dimmed items opacity (%) | Opacité des éléments estompés (%) | number | integer | `25` | 5 to 80 |  |
| `interaction.click` | Click on a sector (explore mode) | Clic sur un secteur (exploration) | dropdown | enumeration | `zoom` | `zoom` Open the sector (Ctrl + click: select); `zoomSelect` Open and filter the other visuals; `select` Select only | A sector without a level beneath is always selected. |
| `interaction.trace` | Trace the path on hover | Suivre le chemin au survol | toggle | bool | `true` | true / false | Hovering a sector keeps its parents and its children bright; the rest steps back. |
| `interaction.highlight` | Highlight ★ | Mettre en avant ★ | text | text | (empty) |  | Only these sectors (any level, separated by ;), their parents and their children keep their color. Stays on the page, in PDF exports too. |

### 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). |

### 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. |