@mozaic-ds/vue
Version:
Mozaic-Vue is the Vue.js implementation of ADEO Design system
2,349 lines (2,315 loc) • 89.8 kB
text/mdx
import { Meta } from '@storybook/addon-docs/blocks';
<Meta title="Migration Guide" />
# Migration guide
### Components
This document summarizes all component changes between the ADS Vue V1 and V2 design system libraries — including renames, splits, merges, removals, and new additions.
#### Mapping Table
<table>
<thead>
<tr>
<th>V1 Component</th>
<th>V2 Component</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>MAccordion</code>
</td>
<td>
<code>MAccordionList</code> + <code>MAccordionListItem</code>
</td>
<td>🔀 Split</td>
</tr>
<tr>
<td>
<code>MActionBar</code> + <code>MBottomBar</code>
</td>
<td>
<code>MActionBottomBar</code>
</td>
<td>🔗 Merged</td>
</tr>
<tr>
<td>
<code>MListBoxActions</code>
</td>
<td>
<code>MActionListBox</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MAvatar</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MBreadcrumb</code>
</td>
<td>
<code>MBreadcrumb</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MMenu</code>
</td>
<td>
<code>MBuiltInMenu</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>
<code>MButton</code>
</td>
<td>
<code>MButton</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MCallout</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MCarousel</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MCheckbox</code>
</td>
<td>
<code>MCheckbox</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MCheckboxGroup</code>
</td>
<td>
<code>MCheckboxGroup</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MChecklistMenu</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MCircularProgressBar</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MAutocomplete</code> + <code>MDropdown</code>
</td>
<td>
<code>MCombobox</code>
</td>
<td>🔗 Merged</td>
</tr>
<tr>
<td>
<code>MContainer</code>
</td>
<td>
<code>MContainer</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MDatePicker</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MDivider</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MLayer</code>
</td>
<td>
<code>MDrawer</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>
<code>MField</code>
</td>
<td>
<code>MField</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MFieldGroup</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MFileUploader</code>
</td>
<td>
<code>MFileUploader</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MFileUploaderItem</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MFlag</code>
</td>
<td>
<code>MFlag</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MIcon</code>
</td>
<td>
<em>removed</em>
</td>
<td>🗑️ Removed</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MIconButton</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MKpiItem</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MProgress</code>
</td>
<td>
<code>MLinearProgressBarBuffer</code> +{' '}
<code>MLinearProgressBarPercentage</code>
</td>
<td>🔀 Split</td>
</tr>
<tr>
<td>
<code>MLink</code>
</td>
<td>
<code>MLink</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MLoader</code>
</td>
<td>
<code>MLoader</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MLoadingOverlay</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MModal</code>
</td>
<td>
<code>MModal</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MNavigationIndicator</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MNotification</code>
</td>
<td>
<code>MStatusNotification</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MNumberBadge</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MListbox</code>
</td>
<td>
<code>MOptionListBox</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>
<code>MOverlay</code>
</td>
<td>
<code>MOverlay</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MPageHeader</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MPagination</code>
</td>
<td>
<code>MPagination</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MPasswordInput</code>
</td>
<td>
<code>MPasswordInput</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MPhoneNumber</code>
</td>
<td>
<code>MPhoneNumber</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MPinCode</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MPopover</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MQuantitySelector</code>
</td>
<td>
<code>MQuantitySelector</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MRadio</code>
</td>
<td>
<code>MRadio</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MRadioGroup</code>
</td>
<td>
<code>MRadioGroup</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MSegmentedControl</code>
</td>
<td>
<code>MSegmentedControl</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MSelect</code>
</td>
<td>
<code>MSelect</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MSidebar</code>
</td>
<td>
<code>MSidebar</code> + 6 sub-components
</td>
<td>🔀 Split</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MSidebarExpandableItem</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MSidebarFooter</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MSidebarHeader</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MSidebarNavItem</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MSidebarShortcutItem</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MSidebarShortcuts</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MStarRating</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MBadge</code>
</td>
<td>
<code>MStatusBadge</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MStatusDot</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MStatusMessage</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MStepper</code> (<code>compact: false</code>)
</td>
<td>
<code>MStepperInline</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>
<code>MStepper</code> (<code>compact: true</code>)
</td>
<td>
<code>MStepperCompact</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MStepperBottomBar</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MStepperStacked</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MTab</code> / <code>MTabsV2</code>
</td>
<td>
<code>MTabs</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>
<code>MTag</code>
</td>
<td>
<code>MTag</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MTextArea</code>
</td>
<td>
<code>MTextArea</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>
<code>MTextInput</code>
</td>
<td>
<code>MTextInput</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MTile</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MTileClickable</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MTileExpandable</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MOptionCard</code>
</td>
<td>
<code>MTileSelectable</code>
</td>
<td>🔄 Renamed</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MToaster</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>
<code>MToggle</code>
</td>
<td>
<code>MToggle</code>
</td>
<td>✅ Same name</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MToggleGroup</code>
</td>
<td>✨ New</td>
</tr>
<tr>
<td>—</td>
<td>
<code>MTooltip</code>
</td>
<td>✨ New</td>
</tr>
</tbody>
</table>
### Tokens
> V1 used **primitive tokens** — raw color values at each step of a palette scale. V2 uses **semantic/functional tokens** — purpose-driven names that describe the _role_ of a color, not its value. V2 primitives are private and not meant to be used directly.
This table maps V1 primitives to their V2 functional equivalents per usage context.
**How to read this table:**
- **Brand** — which brand(s) the V1 token belongs to. `All` = shared across all brands.
- **Text / Icon** — V2 token to use when the V1 color was applied to text or an icon. Note: `$color-icon-*` tokens alias `$color-text-*` — they resolve to the same value. Use `$color-icon-*` for icon-specific targets when your tool distinguishes them.
- **Background** — V2 token to use when the V1 color was the fill of a surface or container. `~` indicates a proximity recommendation — the nearest available V2 background token, not an exact color match.
- **Border** — V2 token to use when the V1 color defined a stroke or outline.
- **—** — no direct V2 functional equivalent; this shade was intermediate or state-specific (hover, pressed) and is now managed at the component interaction token level.
> All V2 tokens support **light and dark mode**. The values listed below are the light mode defaults. Dark mode is resolved automatically when the correct theme is applied — no manual override needed.
---
#### Brand colors
The accent / brand color palette. **Token name and role differ per brand** — for LM and ADEO, the brand color is `primary-01`. For M Brand, it is `primary-02` (orange). V2 mapping is identical across all brands.
<table>
<thead>
<tr>
<th>V1 Token</th>
<th>Brand</th>
<th>Value</th>
<th>Text / Icon</th>
<th>Background</th>
<th>Border</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>$color-primary-01-100</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#EBF5DE</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-200</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#C5E39E</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-300</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#9ED05F</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-400</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#78BE20</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-500</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#46A610</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-600</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#188803</code>
</td>
<td>
<code>$color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-700</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#006902</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-800</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#035010</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-900</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#023618</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-100</code>
</td>
<td>ADEO</td>
<td>
<code>#D9F0F3</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-200</code>
</td>
<td>ADEO</td>
<td>
<code>#91D5DB</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-300</code>
</td>
<td>ADEO</td>
<td>
<code>#48BAC4</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-400</code>
</td>
<td>ADEO</td>
<td>
<code>#009EAC</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-500</code>
</td>
<td>ADEO</td>
<td>
<code>#00919F</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-600</code>
</td>
<td>ADEO</td>
<td>
<code>#007F8C</code>
</td>
<td>
<code>$color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-700</code>
</td>
<td>ADEO</td>
<td>
<code>#006974</code>
</td>
<td>
<code>~ $color-icon-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-800</code>
</td>
<td>ADEO</td>
<td>
<code>#004E57</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-900</code>
</td>
<td>ADEO</td>
<td>
<code>#002E33</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-100</code>
</td>
<td>M Brand</td>
<td>
<code>#FFE2BD</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-200</code>
</td>
<td>M Brand</td>
<td>
<code>#FFBF6B</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-300</code>
</td>
<td>M Brand</td>
<td>
<code>#FF941A</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>$color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-400</code>
</td>
<td>M Brand</td>
<td>
<code>#EF7F00</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-500</code>
</td>
<td>M Brand</td>
<td>
<code>#E05A00</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-600</code>
</td>
<td>M Brand</td>
<td>
<code>#C34400</code>
</td>
<td>
<code>$color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-700</code>
</td>
<td>M Brand</td>
<td>
<code>#943300</code>
</td>
<td>
<code>~ $color-text-accent</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-800</code>
</td>
<td>M Brand</td>
<td>
<code>#702700</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-900</code>
</td>
<td>M Brand</td>
<td>
<code>#421700</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
</tbody>
</table>
**Notes:**
- `$color-brand` — the reference brand color. Use when expressing the brand without implying a specific usage context (logo tint, illustration element, etc.).
- `$color-text-accent` / `$color-icon-accent` — slightly darker, calibrated for contrast as foreground on white.
- `$color-background-accent` — light tint for subtle branded surfaces (badge background, tinted container). Exact match for LM `100`, ADEO `100`, M Brand `100`.
- `$color-background-accent-inverse` — filled accent surface for primary CTAs. For LM and ADEO, resolves to the dark end of the scale (800). For **M Brand, resolves to `orange.300`** = `#FF941A` — a mid-orange, not a dark shade. This is an intentional brand difference.
- `300`, `500`, `700`, `900` (LM / ADEO) and `500`, `700–900` (M Brand) — no V2 equivalent; hover/pressed variations now managed at component interaction token level.
---
#### Secondary colors
Palettes used to complement the brand color — structural surfaces, text hierarchy, borders, and secondary brand expression. Token names differ per brand. For purple and sandgrey, there is no direct V2 functional equivalent — mappings will be handled manually.
<table>
<thead>
<tr>
<th>V1 Token</th>
<th>Brand</th>
<th>Value</th>
<th>Text / Icon</th>
<th>Background</th>
<th>Border</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>$color-primary-02-100</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#EEEFF1</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-200</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#CFD2D8</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>$color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-300</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#B3B7C1</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-400</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#8F94A3</code>
</td>
<td>
<code>$color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-500</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#6A7081</code>
</td>
<td>
<code>$color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-600</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#494F60</code>
</td>
<td>
<code>$color-text-secondary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-700</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#343B4C</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-800</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#242938</code>
</td>
<td>
<code>$color-text-primary</code>
</td>
<td>
<code>$color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-02-900</code>
</td>
<td>Leroy Merlin</td>
<td>
<code>#171B26</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>$color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-100</code>
</td>
<td>ADEO</td>
<td>
<code>#EAEDEF</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-200</code>
</td>
<td>ADEO</td>
<td>
<code>#CDD4D8</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>$color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-300</code>
</td>
<td>ADEO</td>
<td>
<code>#B0BBC0</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-400</code>
</td>
<td>ADEO</td>
<td>
<code>#92A2A9</code>
</td>
<td>
<code>$color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-500</code>
</td>
<td>ADEO</td>
<td>
<code>#758992</code>
</td>
<td>
<code>$color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-600</code>
</td>
<td>ADEO</td>
<td>
<code>#5B737D</code>
</td>
<td>
<code>$color-text-secondary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-700</code>
</td>
<td>ADEO</td>
<td>
<code>#405D68</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-800</code>
</td>
<td>ADEO</td>
<td>
<code>#264653</code>
</td>
<td>
<code>$color-text-primary</code>
</td>
<td>
<code>$color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-blue-900</code>
</td>
<td>ADEO</td>
<td>
<code>#082435</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>$color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-100</code>
</td>
<td>ADEO</td>
<td>
<code>#E7E7F0</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-200</code>
</td>
<td>ADEO</td>
<td>
<code>#C5C5DC</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-300</code>
</td>
<td>ADEO</td>
<td>
<code>#A4A3C7</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-accent</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-400</code>
</td>
<td>ADEO</td>
<td>
<code>#8281B2</code>
</td>
<td>
<code>~ $color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-500</code>
</td>
<td>ADEO</td>
<td>
<code>#605F9D</code>
</td>
<td>
<code>~ $color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-600</code>
</td>
<td>ADEO</td>
<td>
<code>#4B4A8C</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-700</code>
</td>
<td>ADEO</td>
<td>
<code>#393879</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-800</code>
</td>
<td>ADEO</td>
<td>
<code>#282863</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-purple-900</code>
</td>
<td>ADEO</td>
<td>
<code>#1A1A4B</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-accent-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-100</code>
</td>
<td>ADEO</td>
<td>
<code>#EEEDEA</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-200</code>
</td>
<td>ADEO</td>
<td>
<code>#DDDCD5</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-300</code>
</td>
<td>ADEO</td>
<td>
<code>#C2C1BA</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-400</code>
</td>
<td>ADEO</td>
<td>
<code>#A7A6A0</code>
</td>
<td>
<code>~ $color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-500</code>
</td>
<td>ADEO</td>
<td>
<code>#8C8B85</code>
</td>
<td>
<code>~ $color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-600</code>
</td>
<td>ADEO</td>
<td>
<code>#71706B</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-700</code>
</td>
<td>ADEO</td>
<td>
<code>#555550</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-800</code>
</td>
<td>ADEO</td>
<td>
<code>#3A3936</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-secondary-sandgrey-900</code>
</td>
<td>ADEO</td>
<td>
<code>#1E1E1C</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-100</code>
</td>
<td>M Brand</td>
<td>
<code>#E5EFFF</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-200</code>
</td>
<td>M Brand</td>
<td>
<code>#B8D3FF</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>$color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-300</code>
</td>
<td>M Brand</td>
<td>
<code>#8AB7FF</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-400</code>
</td>
<td>M Brand</td>
<td>
<code>#5797FF</code>
</td>
<td>
<code>~ $color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-500</code>
</td>
<td>M Brand</td>
<td>
<code>#1A6EFF</code>
</td>
<td>
<code>~ $color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-600</code>
</td>
<td>M Brand</td>
<td>
<code>#0058DB</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-700</code>
</td>
<td>M Brand</td>
<td>
<code>#004EA8</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-800</code>
</td>
<td>M Brand</td>
<td>
<code>#00387A</code>
</td>
<td>
<code>$color-text-primary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-primary-01-900</code>
</td>
<td>M Brand</td>
<td>
<code>#002A5B</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
</tbody>
</table>
**Notes:**
- `$color-background-secondary` — page backgrounds, alternate rows, section zones. `200` and `300` are proximity recommendations.
- `$color-border-primary` — default borders for inputs, cards, dividers.
- `$color-border-secondary` — stronger separation.
- `$color-border-tertiary` — maximum contrast border, highest elevation edge.
- `400–500` → `$color-text-tertiary` — captions, metadata, placeholder text, disabled labels.
- `600` → `$color-text-secondary` — body text, descriptions, supporting content.
- `700–800` → `$color-text-primary` — headings, primary labels, key content.
- `$color-background-secondary-inverse` — dark surface for Sidebar, dark panels, inverse zones. For M Brand, the V2 token resolves to `blue.900` = `#001A3D`, darker than V1 `primary-01-900` (`#002A5B`) — `800` and `900` are proximity recommendations.
- `secondary-purple` and `secondary-sandgrey` — no V2 functional equivalent. To be handled manually.
---
#### Grey scale
<table>
<thead>
<tr>
<th>V1 Token</th>
<th>Brand</th>
<th>Value</th>
<th>Text / Icon</th>
<th>Background</th>
<th>Border</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>$color-grey-000</code>
</td>
<td>All</td>
<td>
<code>#FFFFFF</code>
</td>
<td>
<code>$color-text-primary-inverse</code>
</td>
<td>
<code>$color-background-primary</code>
</td>
<td>
<code>$color-border-inverse</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-100</code>
</td>
<td>All</td>
<td>
<code>#E6E6E6</code>
</td>
<td>
<code>$color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-200</code>
</td>
<td>All</td>
<td>
<code>#CCCCCC</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-secondary</code>
</td>
<td>
<code>$color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-300</code>
</td>
<td>All</td>
<td>
<code>#B3B3B3</code>
</td>
<td>
<code>~ $color-text-secondary-inverse</code>
</td>
<td>
<code>$color-background-secondary</code>
</td>
<td>
<code>~ $color-border-primary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-400</code>
</td>
<td>All</td>
<td>
<code>#999999</code>
</td>
<td>
<code>~ $color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary</code>
</td>
<td>
<code>$color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-500</code>
</td>
<td>All</td>
<td>
<code>#808080</code>
</td>
<td>
<code>~ $color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-600</code>
</td>
<td>All</td>
<td>
<code>#666666</code>
</td>
<td>
<code>$color-text-tertiary</code>
</td>
<td>
<code>~ $color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-secondary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-700</code>
</td>
<td>All</td>
<td>
<code>#4D4D4D</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>$color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-800</code>
</td>
<td>All</td>
<td>
<code>#333333</code>
</td>
<td>
<code>~ $color-text-secondary</code>
</td>
<td>
<code>$color-background-secondary-inverse</code>
</td>
<td>
<code>$color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-900</code>
</td>
<td>All</td>
<td>
<code>#191919</code>
</td>
<td>
<code>~ $color-text-primary</code>
</td>
<td>
<code>$color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
<tr>
<td>
<code>$color-grey-999</code>
</td>
<td>All</td>
<td>
<code>#000000</code>
</td>
<td>
<code>$color-text-primary</code>
</td>
<td>
<code>$color-background-secondary-inverse</code>
</td>
<td>
<code>~ $color-border-tertiary</code>
</td>
</tr>
</tbody>
</table>
**Notes:**
- `$color-background-primary` — pure white surface. Exact match to `grey-000`.
- `$color-background-disabled` = `neutral.grey.150` — lighter than `grey-100` and `grey-200`. Closest available V2 background for light grey fills; primarily intended for disabled component surfaces.
- `$color-text-primary-inverse` / `$color-icon-primary-inverse` — white text on dark surfaces. Exact match to `grey-000`.
- `$color-text-secondary-inverse` / `$color-icon-secondary-inverse` — close to `grey-100`. Text on dark inverse backgrounds.
- `$color-text-disabled` / `$color-icon-disabled` — between `grey-500` and `grey-600`. Closest V2 token for mid-grey disabled content.
- `$color-text-tertiary` / `$color-icon-tertiary` — exact match to `grey-600` (#666).
- `$color-text-secondary` / `$color-icon-secondary` ≈ `#404040` — darker than `grey-700` (#4D4D4D) and `grey-800` (#333). Both map here as the nearest available.
- `$color-text-primary` / `$color-icon-primary` ≈ near-black. Exact match to `grey-999` (#000). `grey-900` (#191919) maps here as the nearest available.
---
#### Status colors
> **Naming change:** V1 used `danger` — V2 uses `error`. All other status names are unchanged (info, warning, success).
<table>
<thead>
<tr>
<th>V1 Token</th>
<th>Brand</th>
<th>Value</th>
<th>Text / Icon</th>
<th>Background</th>
<th>Border</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>$color-danger-100</code>
</td>
<td>All</td>
<td>
<code>#FDEAEA</code>
</td>
<td>
<code>~ $color-status-text-error</code>
</td>
<td>
<code>$color-status-background-error</code>
</td>
<td>
<code>~ $color-status-border-error</code>
</td>
</tr>
<tr>
<td>
<code>$color-danger-200</code>
</td>
<td>All</td>
<td>
<code>#F8BCBB</code>
</td>
<td>
<code>~ $color-status-text-error</code>
</td>
<td>
<code>~ $color-status-background-error</code>
</td>
<td>
<code>~ $color-status-border-error</code>
</td>
</tr>
<tr>
<td>
<code>$color-danger-300</code>
</td>
<td>All</td>
<td>
<code>#F38D8C</code>
</td>
<td>
<code>~ $color-status-text-error</code>
</td>
<td>
<code>~ $color-status-background-error</code>
</td>
<td>
<code>~ $color-status-border-error</code>
</td>
</tr>
<tr>
<td>
<code>$color-danger-400</code>
</td>
<td>All</td>
<td>
<code>#EF5F5C</code>
</td>
<td>
<code>~ $color-status-text-error</code>
</td>
<td>
<code>~ $color-status-background-error</code>
</td>
<td>
<code>$color-status-border-error</code>
</td>
</tr>
<tr>
<td>
<code>$color-danger-500</code>
</td>
<td>All</td>
<td>
<code>#EA302D</code>
</td>
<td>
<code>~ $color-status-text-error</code>
</td>
<td>
<code>~ $color-status-background-error</code>
</td>
<td>
<code>~ $color-status-border-error</code>
</td>
</tr>
<tr>
<td>
<code>$color-danger-600</code>
</td>
<td>All</td>
<td>
<code>#C61112</code>
</td>
<td>
<code>$color-status-text-error</code>
</td>
<td>
<code>~ $color-status-background-error</code>
</td>
<td>