Skip to content
Plume Visuals
← Back

Bar Slicer Plume

The list slicer that shows the weight of each value: measure bars, search, Top N, paste a list.

Certified by MicrosoftMICROSOFT CERTIFIED • POWER BI •
Tutorials ↓
Get it on Microsoft MarketplaceThe visual's official Microsoft listing · free to install

Interactive demo

The real Power BI visual, running in your browser with the fictitious data of the sample report. Cards and bars react to the filter as in a report.

Bar Slicer Plume replaces Power BI's list slicer with a list that shows, next to each value, a bar and the figure of the measure of your choice. You see which categories matter before you filter. Accent-insensitive search, Top N, invert selection, paste a list from Excel, a “3 selected · 35% of total” summary: it's all in the visual.

Use cases

  • Filter product categories while seeing their revenue
  • Pick customers or stores among thousands (search, paste a list)
  • Select the top 10 of a ranking in one click
  • Replace several slicers and charts with a single visual

FreeIncluded for free

  • List with measure bars (inline, below the label or as background) and values or share of total
  • Accent-insensitive search, “Select results”, invert selection
  • Multiple, Ctrl-multiple or single selection; Alt + click, Shift + click, “Select all”
  • Sort by measure, label or a “Sort by” field, sort toggle in the visual
  • Smooth lists of thousands of values, report theme, keyboard, high contrast
  • Tooltips in each measure's own format; header with a divider and text wrap
  • Dynamic formats: fx button on colors and texts, any option driven by DAX
  • Minimal and Black & White styles, custom colors (background, text, secondary text, lines, bar track, accent)

PremiumPremium features

  • Top N in one click
  • Paste a list (Excel): matched and missing values
  • Tile grid and chips layouts
  • Custom summary text
  • Preselection when the report opens, from a DAX measure: one value or a list ("Paris;Lyon")
  • Catalog-wide styles (Neon, Newspaper, Graphite…), palettes and 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.

  1. Getting startedBeginner9 min readA list slicer that shows how much each value weighsGet started with Bar Slicer Plume: prepare your data, set up the slicer in 10 minutes, and read the measure bar shown next to each value in the list.
  2. How-to guidesIntermediate5 min readBar Slicer Plume: 9 how-to guides (Top N, Excel list, bookmarks…)Sync the slicer across pages, save a selection, keep the 5 biggest categories, paste a list from Excel, sort months in calendar order: step by step.
  3. Fields and settingsIntermediate15 min readBar Slicer Plume: every field and setting explainedEvery field well and every Format pane setting in Bar Slicer Plume: what it's for, the values it accepts and its default value, card by card, in order.
  4. BasicsGetting started with Plume visualsInstallation, license, styles and the settings shared by every visual.

Fields to drop into the visual

FieldContent
FieldThe column to filter: category, customer, store…Required
Measure (bars)Bar length and displayed valueOptional
Sort bySeparate sort measureOptional
TooltipsExtra measuresOptional
PreselectionMeasure: the value(s) selected when the report opens, e.g. "Paris;Lyon" (premium ★)OptionalPremium
Dynamic formatMeasures renamed card.setting (e.g. title.text): the Format pane driven by DAXOptional

Missing a feature? We adapt our visuals or build custom ones. Request a custom visual

Found a bug in Bar Slicer 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/bar-slicer.md)
# Bar Slicer 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 Bar Slicer 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/bar-slicer (French: https://plumevisuals.com/fr/visuels/bar-slicer)
- Summary: The list slicer that shows the weight of each value: measure bars, search, Top N, paste a list.
- Power BI visual GUID (`visualType`): `plumeBarSlicer7D3E91A64C2B4F0E9A15C8B2E6F4D701`
- 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

Bar Slicer Plume is a Power BI custom visual that works as a list slicer which also shows the weight of each value: next to every value, a bar and a figure for a measure (revenue, count…), plus its share of the total. Clicking values filters the rest of the report, like the native slicer. It adds accent-insensitive search, quick actions ("Top N ★", "Invert selection", "Paste a list ★" from Excel), sorting by the measure or by any other measure, a selection summary ("3 selected · 1.0M of 1.8M"; French « 3 sélectionné(s) · 1,0 M sur 1,8 M »), and three layouts: "List", "Tile grid ★" and "Chips ★".

**New in version 1.4.0.0 (30/10/2026):** Shared slicer cards (Preselection, Frame); tooltips use **each measure's own format** by default (`tooltip.format` = `model`), share of total can be hidden, fixed tile height; `items.*` layout settings moved to **Layout**.

## 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 Bar Slicer Plume:
  - the **"Top N ★"** button (`actions.topN`) and the **"Paste a list ★"** button (`actions.paste`): the buttons are shown by default, the watermark appears once one of them has been **clicked** and stays until the report is reopened;
  - `layout.mode` = `grid` ("Tile grid ★") or `chips` ("Chips ★");
  - a custom summary text in `summary.template` ("Text ★").
- In the Format pane, every premium option and premium list value has " ★" appended to its label and carries the description "Premium feature: usable for free with a « Premium preview » watermark…". The generated tables below star the same options.
- Accepted keys: only keys starting with `PLUM1.` shown in the buyer's account on plumevisuals.com. They are checked offline (Ed25519 signature) and must cover `bar-slicer` 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". `license.showOwner` displays "Licensed to <holder>".
- Licenses last one year (one-time payment, no automatic renewal, key accepted for 30 more days, reminders 30 and 7 days before the end), per segment: 19 € personal, 49 € SME, 149 € enterprise per year, or the full catalog pack. Renewing gives a new key to paste instead of the old one.

## Expected data shape

The visual reads **one row per distinct value of the Field**, with the measures evaluated for that value.

| Field (`category`) | Measure (bars) (`measure`) | Sort by (`sortBy`) |
|---|---|---|
| Lighting | 412 300 | 395 100 |
| Garden | 288 950 | 301 400 |
| … | … | … |

- **Field** (`category`, label "Field" / « Champ », grouping, exactly one column, required): the column to filter. Text, number and boolean columns work; a date column works too, but Period Plume is designed for dates.
- **Measure (bars)** (`measure`, « Mesure (barres) », one measure, optional): bar length, displayed value, share of total, and the ranking used by Top N. Without it the visual is a plain list (no bars, no Top N button). Share of total = value ÷ sum of the positive values of the list.
- **Sort by** (`sortBy`, « Trier par », one measure, optional): used only when `sort.by` = `sortDesc` / `sortAsc`.
- **Tooltips** (`tooltips`, « Infobulles », several measures, optional): added to the standard Power BI tooltip. Report-page tooltips are supported.
- Volume: 30,000 values per data window; more are fetched automatically up to a **fixed limit of 100,000 values**. Beyond that a warning icon is shown ("Only the first n values are loaded"; details: "The visual loads at most 100,000 values. Filter the page or use a less detailed column.") and the extra values are not listed. (There is no "Data" card any more since 1.0.1.0.)
- Values without data under the current filters are only received if **"Show items with no data"** is enabled on the field (right-click the field in the Field well). `layout.empty` then groups them at the bottom, dims them in place, or hides them.

## DAX recipes

```dax
// Measure (bars)
Revenue = SUM ( Sales[Amount] )
Orders = COUNTROWS ( Sales )

// Sort by: rank this year's list by last year's revenue
Revenue LY = CALCULATE ( [Revenue], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )

// Tooltips
Average basket = DIVIDE ( [Revenue], [Orders] )
Margin % = DIVIDE ( SUM ( Sales[Margin] ), [Revenue] )
```

Power BI never filters a slicer by its own selection: the bars always show the measure under the *other* filters of the page.

## Filter sent to the report

A `BasicFilter` with operator `In` on the Field column (table and column taken from the field), for example `{ "target": { "table": "Sales", "column": "Category" }, "operator": "In", "values": ["Lighting", "Garden"] }`. No selection = filter removed.

- **Invert** sends `In` with the complementary values (values without data are left out), never `NotIn`.
- **Top N** sends `In` with the N values that have the highest measure *at the moment of the click*: it is a static selection, not a dynamic Top N.
- **Paste a list** matches the pasted values (one per line, or separated by `;` or `,`) against the list, then replaces or adds to the selection.

## Interactions with the report

- Click = toggle (`selection.mode` = `multi`), Ctrl + click (`multiCtrl`), or one value only (`single`, with `selection.forceOne` to always keep one value; it then selects the first value when nothing is selected). Alt + click = only this value (`selection.altOnly`), Shift + click = range (`selection.shiftRange`).
- Keyboard: ↑ ↓ Home End to move, Space / Enter to toggle, Ctrl + A to select all visible values, Ctrl + F to jump to the search box (no on-screen hint since 1.0.1.0), Esc clears the search. ARIA `listbox` / `option` roles and screen-reader announcements.
- Context menu on each value, Power BI tooltips, high contrast mode, landing page when no field is set, read-only behavior on dashboards.
- **Bookmarks** and **Sync slicers** (View › Sync slicers) work: the visual declares `supportsSynchronizingFilterState` and re-reads the restored filter. Values that are filtered out by other slicers stay selected.
- Other visuals cross-filter Bar Slicer Plume (it does not support highlighting).

## Format pane: how to read the tables below

- Each option has an ID `card.option` (for example `bars.position`). The card is the capabilities.json **object name**, the option is the **property name**.
- Card order: `license` (always first), `style` (Style card shared by every Plume visual: `preset`, `themeJson`, `followTheme`, then `customColors`, the colors, `palette` (Gradient palette), font, size, density, radius, animations), `header`, then the visual's own cards (`selection`, `search`, `actions`, `sort`, `bars`, `values`, `layout`, `summary`), then `container` and `texts`. Format pane in version 1.4.0.0 (30/10/2026), top to bottom: `license`, `style`, `header`, `layout`, `selection`, `bars`, `values`, `sort`, `search`, `actions`, `summary`, `preselect`, `tooltip`, `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 (File › Options › Regional settings › Application language); `texts.language` can force French or English inside the visual. Data role labels are translated too.
- "Visible when" means the option only appears when another option has one of the listed values.
- `general.filter` is where Power BI stores the filter applied by the visual: never write it by hand.

## 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, colors wrapped in `solid.color`.

```json
{
  "visualType": "plumeBarSlicer7D3E91A64C2B4F0E9A15C8B2E6F4D701",
  "query": {
    "queryState": {
      "category": { "projections": [ { "field": { "Column":  { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Category" } }, "queryRef": "Sales.Category", "nativeQueryRef": "Category" } ] },
      "measure":  { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Revenue" } }, "queryRef": "Sales.Revenue", "nativeQueryRef": "Revenue" } ] },
      "tooltips": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Orders" } }, "queryRef": "Sales.Orders", "nativeQueryRef": "Orders" } ] }
    }
  },
  "objects": {
    "selection": [ { "properties": { "mode": { "expr": { "Literal": { "Value": "'single'" } } },
                                      "indicator": { "expr": { "Literal": { "Value": "'radio'" } } } } } ],
    "bars":      [ { "properties": { "position": { "expr": { "Literal": { "Value": "'background'" } } },
                                      "colorOn": { "solid": { "color": { "expr": { "Literal": { "Value": "'#b8462a'" } } } } } } } ],
    "actions":   [ { "properties": { "topNCount": { "expr": { "Literal": { "Value": "10D" } } } } } ],
    "values":    [ { "properties": { "suffix": { "expr": { "Literal": { "Value": "' €'" } } } } } ],
    "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 AppSource or 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`.
- `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.
- What this slicer uses from a theme JSON: `colors` (`background`, `foreground`, `muted`, `grid`, `accent`, `borderColor`, `glowColor`), `typography` (`fontFamily`, `titleFamily`, `headerCase`, `letterSpacing`), `shape` (`radius`, `border`, `borderWidth`, `borderStyle`, `shadow`) and `effects` (`glow`, `texture`). `fontFamily`, `radius`, `border`, `borderWidth` and `shadow` only apply while the matching Format pane options are left at their default. The `palettes`, `table` and `marks` groups and the other fields (`surface`, `background2`, `stroke`, `accent2`, `positive`, `negative`, `numberFamily`…) are accepted but have no visible effect on it.

## Common pitfalls

- No bars and no Top N button: no measure in Measure (bars), or `bars.show` / `actions.topN` is off.
- Some values disappear when the page is filtered: enable "Show items with no data" on the field, then choose `layout.empty`.
- Month names sorted by the measure: set `sort.by` = `data` (model order) and "Sort by column" on the month number in the model, or `labelAsc` with `sort.natural` for codes like "M2" / "M10".
- The visual selects a value on its own: `selection.forceOne` is on in single mode.
- Warning icon "Only the first n values are loaded" ("The visual loads at most 100,000 values. Filter the page or use a less detailed column."): more than 100,000 distinct values; filter the page or use a coarser column.
- Watermark visible: a ★ layout or summary text is set, or "Top N ★" / "Paste a list ★" was clicked, or a ★ style, palette or theme JSON, without a valid key. Free features never show it.
- The visual makes no network request: data and license key stay in the report.

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

Several fields or a hierarchy in one slicer (use Filter Bar Plume), tree / parent-child levels, dropdown or collapsed mode, images or icons per value, colors driven by a field or a measure (conditional formatting per value), dynamic Top N re-evaluated at each refresh, exclude mode (`NotIn`), filtering on a measure value, numeric range or date range selection (use Range Plume or Period Plume), saved selection lists, export of the list.

## 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 |
|---|---|---|---|---|---|
| `category` | Field | Champ | column | 1 |  |
| `measure` | Measure (bars) | Mesure (barres) | measure | 1 |  |
| `sortBy` | Sort by | Trier par | measure | 1 |  |
| `tooltips` | Tooltips | Infobulles | measure | several |  |
| `preselect` | Preselection | Présélection | measure | 1 | Optional measure returning the value(s) selected when the report opens, e.g. "Paris;Lyon" or "2026-01-01;2026-03-31" |
| `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 = `category` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `measure`, `sortBy`, `tooltips`, `preselect`, `format`.
Capabilities: supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView, supportsSynchronizingFilterState.
Network access: none (no privileges requested, no external request).

## Format pane options (125)

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

**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.colorTrack` | Bar track | Fond des barres | 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` |  |  |
| `style.fontSize` | Text size | Taille du texte | number | formatting | `12` | 8 to 28 |  |
| `style.density` | Density | Densité | dropdown | enumeration | `normal` | `compact` Compact; `normal` Normal; `comfortable` Comfortable |  |

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

### Header / En-tête (`header`, Format pane)

The card header toggle is `header.show`.

**Title / Titre**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `header.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `header.title` | Text | Texte | text | text | (empty) |  | Leave empty to use the field name. |
| `header.fontSize` | Size | Taille | number | formatting | `14` | 7 to 36 |  |
| `header.bold` | Bold | Gras | toggle | bool | `true` | true / false |  |
| `header.italic` | Italic | Italique | toggle | bool | `false` | true / false |  |
| `header.underline` | Underline | Souligné | toggle | bool | `false` | true / false |  |
| `header.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color |  |
| `header.bgColor` | Background color | Couleur d'arrière-plan | color | fill | (empty) | hex color |  |
| `header.align` | Horizontal alignment | Alignement horizontal | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right |  |
| `header.wrap` | Text wrap | Retour automatique à la ligne | toggle | bool | `true` | true / false | A long title goes on two lines instead of being cut. |

**Divider / Séparateur**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `header.divider` | Show divider | Afficher le séparateur | toggle | bool | `false` | true / false |  |
| `header.dividerColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `header.divider` = `true` |
| `header.dividerStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | Visible when `header.divider` = `true` |
| `header.dividerWidth` | Width | Épaisseur | number | integer | `1` | 1 to 6 | Visible when `header.divider` = `true` |

**Count and Clear button / Décompte et bouton Effacer**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `header.showCount` | Show value / selection count | Afficher le nombre de valeurs / sélection | toggle | bool | `true` | true / false |  |
| `header.showClear` | "Clear" button | Bouton « Effacer » | toggle | bool | `true` | true / false |  |
| `header.clearLabel` | Clear button label | Libellé du bouton Effacer | text | text | (empty) |  | Visible when `header.showClear` = `true` |

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

**Slicer style / Style du segment**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.mode` | Style | Style | dropdown | enumeration | `list` | `list` Vertical list; `grid` Tile grid ★; `chips` Chips (horizontal) ★ |  |
| `layout.columns` | Columns | Colonnes | number | integer | `2` | 1 to 8 | Visible when `layout.mode` = `grid` |
| `layout.tileHeight` | Fixed tile height (px, 0 = auto) | Hauteur fixe des tuiles (px, 0 = auto) | number | integer | `0` | 0 to 300 | Visible when `layout.mode` = `grid`. Like "Fixed size" in the button slicer: tiles keep their height, a scroll bar appears when needed. |

**Rows / Lignes**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.labelWidth` | Label width (%) | Largeur des libellés (%) | number | integer | `38` | 15 to 70 | Visible when `layout.mode` = `list` |
| `layout.wrap` | Wrap labels | Libellés sur plusieurs lignes | toggle | bool | `false` | true / false |  |
| `layout.alternate` | Alternate rows | Lignes alternées | toggle | bool | `false` | true / false | Visible when `layout.mode` = `list` |
| `layout.separators` | Separators | Séparateurs | toggle | bool | `false` | true / false | Visible when `layout.mode` = `list` |
| `layout.selectedBg` | Tinted background when selected | Fond coloré si sélectionné | toggle | bool | `true` | true / false |  |

**Blank values and items with no data / Valeurs vides et sans données**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `layout.blankLabel` | Blank label | Libellé des vides | text | text | (empty) |  |  |
| `layout.empty` | Values without data | Valeurs sans données | dropdown | enumeration | `group` | `group` Grouped at the bottom, dimmed; `inline` In place, dimmed; `hide` Hidden | Activate "Show items with no data" on the field to receive them. |
| `layout.emptyLabel` | Empty group title | Titre du groupe vide | text | text | (empty) |  | Visible when `layout.empty` = `group` |

### Selection / Sélection (`selection`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `selection.mode` | Mode | Mode | dropdown | enumeration | `multi` | `multi` Multiple (click = toggle); `multiCtrl` Multiple with Ctrl; `single` Single value |  |
| `selection.indicator` | Indicator | Indicateur | dropdown | enumeration | `auto` | `auto` Automatic; `checkbox` Checkbox; `radio` Radio button; `none` None (highlight) |  |
| `selection.forceOne` | Always keep one value selected | Toujours une valeur sélectionnée | toggle | bool | `false` | true / false | Visible when `selection.mode` = `single` |
| `selection.altOnly` | Alt + click: only this value | Alt + clic : seulement cette valeur | toggle | bool | `true` | true / false |  |
| `selection.shiftRange` | Shift + click: select a range | Maj + clic : sélectionner une plage | toggle | bool | `true` | true / false |  |
| `selection.selectAll` | "Select all" row | Ligne « Tout sélectionner » | toggle | bool | `false` | true / false | Visible when `selection.mode` = `multi` or `multiCtrl` |
| `selection.selectAllLabel` | "Select all" label | Libellé « Tout sélectionner » | text | text | (empty) |  | Visible when `selection.selectAll` = `true` |
| `selection.selectedFirst` | Move selection to the top | Remonter la sélection en tête | toggle | bool | `false` | true / false |  |

### Bars / Barres (`bars`, Format pane)

The card header toggle is `bars.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `bars.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `bars.position` | Position | Position | dropdown | enumeration | `inline` | `inline` Between label and value; `below` Below the label; `background` Row background |  |
| `bars.scale` | Scale | Échelle | dropdown | enumeration | `max` | `max` Relative to maximum; `total` Share of total |  |
| `bars.thickness` | Thickness | Épaisseur | number | integer | `8` | 2 to 30 | Visible when `bars.position` = `inline` or `below` |
| `bars.rounded` | Rounded ends | Bouts arrondis | toggle | bool | `true` | true / false |  |
| `bars.track` | Show track | Afficher le rail | toggle | bool | `true` | true / false |  |
| `bars.colorOn` | Selected color (empty = accent) | Couleur sélection (vide = accent) | color | fill | (empty) | hex color |  |
| `bars.colorOff` | Unselected color (empty = auto) | Couleur hors sélection (vide = auto) | color | fill | (empty) | hex color |  |
| `bars.colorNegative` | Negative values color | Couleur des valeurs négatives | color | fill | `#c0392b` | hex color |  |
| `bars.minWidth` | Minimum width (px) | Largeur minimale (px) | number | integer | `60` | 20 to 400 | Visible when `bars.position` = `inline` |

### Displayed values / Valeurs affichées (`values`, Format pane)

The card header toggle is `values.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `values.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `values.display` | Content | Contenu | dropdown | enumeration | `value` | `value` Value; `percent` Share of total; `both` Value and share |  |
| `values.units` | Display units | Unités | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions |  |
| `values.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 |  |
| `values.prefix` | Prefix | Préfixe | text | text | (empty) |  |  |
| `values.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) |  |  |
| `values.color` | Color (empty = secondary) | Couleur (vide = secondaire) | color | fill | (empty) | hex color |  |
| `values.mono` | Tabular figures | Chiffres alignés (tabulaires) | toggle | bool | `true` | true / false |  |

### Sort / Tri (`sort`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `sort.by` | Sort by | Trier par | dropdown | enumeration | `valueDesc` | `valueDesc` Measure, descending; `valueAsc` Measure, ascending; `labelAsc` Label A → Z; `labelDesc` Label Z → A; `sortDesc` "Sort by" field, descending; `sortAsc` "Sort by" field, ascending; `data` Model order |  |
| `sort.natural` | Natural sort (2 before 10) | Tri naturel (2 avant 10) | toggle | bool | `true` | true / false |  |
| `sort.userToggle` | Sort toggle in the visual | Bouton de tri dans le visuel | toggle | bool | `true` | true / false |  |

### Search / Recherche (`search`, Format pane)

The card header toggle is `search.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `search.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `search.placeholder` | Placeholder | Texte indicatif | text | text | (empty) |  |  |
| `search.match` | Matching | Correspondance | dropdown | enumeration | `contains` | `contains` Contains; `starts` Starts with; `words` Word start |  |
| `search.highlight` | Highlight matches | Surligner le texte trouvé | toggle | bool | `true` | true / false |  |
| `search.selectResults` | "Select results" button | Bouton « Sélectionner les résultats » | toggle | bool | `true` | true / false |  |

### Quick actions / Actions rapides (`actions`, Format pane)

The card header toggle is `actions.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `actions.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `actions.topN` | Top N ★ | Top N ★ | toggle | bool | `true` | true / false |  |
| `actions.topNCount` | N | N | number | integer | `5` | 1 to 100 | Visible when `actions.topN` = `true` |
| `actions.invert` | Invert selection | Inverser la sélection | toggle | bool | `true` | true / false |  |
| `actions.paste` | Paste a list ★ | Coller une liste ★ | toggle | bool | `true` | true / false |  |
| `actions.style` | Style | Style | dropdown | enumeration | `chips` | `chips` Text chips; `icons` Icons only |  |

### Selection summary / Résumé de la sélection (`summary`, Format pane)

The card header toggle is `summary.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `summary.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `summary.template` | Text ★ | Texte ★ | text | text | (empty) |  | Tokens: {n} selected count, {count} values, {sel} selected measure, {total} total measure, {pct} share. |
| `summary.showShare` | Share of total on the right | Part du total à droite | toggle | bool | `true` | true / false |  |
| `summary.hideWhenEmpty` | Hide when nothing selected | Masquer sans sélection | toggle | bool | `true` | true / false |  |

### Preselection / Présélection (`preselect`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `preselect.when` | Apply | Appliquer | dropdown | enumeration | `session` | `session` Once per session; `always` Reapply on every display | Drop in "Preselection" a measure that returns a value or a list ("Paris;Lyon"): the slicer selects it when the report opens. Premium feature ★. |
| `preselect.force` | Force | Forcer | toggle | bool | `false` | true / false | Replaces an existing selection: saved in the report, recalled by a bookmark or by persistent filters. Otherwise it is kept. |
| `preselect.separator` | Value separator | Séparateur des valeurs | text | text | `;` |  |  |
| `preselect.warn` | Report values not found (edit mode) | Signaler les valeurs introuvables (mode édition) | toggle | bool | `true` | true / false |  |

### 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). |
| `tooltip.format` | Measure format | Format des mesures | dropdown | enumeration | `model` | `model` Each measure's format (model); `visual` Visual format (Displayed values) | Each measure of the "Tooltips" well keeps its own format (%, €, decimals), as in native visuals. |
| `tooltip.share` | Share of total | Part du total | toggle | bool | `true` | true / false |  |

### 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` |
| `container.transparent` | Transparent background | Fond transparent | toggle | bool | `false` | true / false | The visual lets what is behind it show through (useful for a dropdown placed over another visual). |

**Border / Bordure**

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.border` | Border | Bordure | toggle | bool | `true` | 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 | `10` | 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)

- `items`: `items.layout` (enumeration), `items.columns` (integer), `items.labelWidth` (integer), `items.wrap` (bool), `items.alternate` (bool), `items.separators` (bool), `items.selectedBg` (bool), `items.blankLabel` (text), `items.empty` (enumeration), `items.emptyLabel` (text).
- `general`: `general.filter` (filter), used by Power BI to store the filter applied by the visual.