{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/brand/**",
              "components/core/**",
              "components/feedback/**",
              "components/forms/**",
              "components/navigation/**",
              "ui_kits/site-web/**"
            ],
            "message": "Import design-system components from 'index.js', not component internals."
          }
        ]
      }
    ],
    "no-restricted-syntax": [
      "warn",
      {
        "selector": "Literal[value=/#[0-9a-fA-F]{3,8}\\b/]",
        "message": "Raw hex color — use a design-system color token via var()."
      },
      {
        "selector": "Literal[value=/\\b\\d+px\\b/]",
        "message": "Raw px value — use a design-system spacing token via var()."
      },
      {
        "selector": "Literal[value=/font-family\\s*:\\s*(?!['\\\"]?(?:Barlow Condensed 44|Barlow|Barlow Semi Condensed|Barlow Condensed))/i]",
        "message": "Font not provided by the design system. Available: Barlow Condensed 44, Barlow, Barlow Semi Condensed, Barlow Condensed."
      },
      {
        "selector": "JSXOpeningElement[name.name='Alert'] > JSXAttribute > JSXIdentifier[name!=/^(?:tone|title|children|onClose|style|key|ref|className|style|children)$/]",
        "message": "<Alert> doesn't accept that prop. Declared props: tone, title, children, onClose, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Alert'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:info|succes|attention|erreur)$/]",
        "message": "<Alert> tone must be one of 'info' | 'succes' | 'attention' | 'erreur'."
      },
      {
        "selector": "JSXOpeningElement[name.name='BreadcrumbItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|href|key|ref|className|style|children)$/]",
        "message": "<BreadcrumbItem> doesn't accept that prop. Declared props: label, href."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|size|disabled|full|as|href|iconBefore|iconAfter|children|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: variant, size, disabled, full, as, href, iconBefore, iconAfter, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:primaire|secondaire|contour|texte|blanc)$/]",
        "message": "<Button> variant must be one of 'primaire' | 'secondaire' | 'contour' | 'texte' | 'blanc'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:s|m|l)$/]",
        "message": "<Button> size must be one of 's' | 'm' | 'l'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute > JSXIdentifier[name!=/^(?:theme|themeColor|title|date|excerpt|image|href|ratio|accent|children|style|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: theme, themeColor, title, date, excerpt, image, href, ratio, accent, children, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Checkbox'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|key|ref|className|style|children)$/]",
        "message": "<Checkbox> doesn't accept that prop. Declared props: label."
      },
      {
        "selector": "JSXOpeningElement[name.name='CoverElement'] > JSXAttribute > JSXIdentifier[name!=/^(?:color|image|label|key|ref|className|style|children)$/]",
        "message": "<CoverElement> doesn't accept that prop. Declared props: color, image, label."
      },
      {
        "selector": "JSXOpeningElement[name.name='Dialog'] > JSXAttribute > JSXIdentifier[name!=/^(?:open|title|themeColor|onClose|footer|children|width|style|key|ref|className|style|children)$/]",
        "message": "<Dialog> doesn't accept that prop. Declared props: open, title, themeColor, onClose, footer, children, width, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Field'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|hint|error|required|htmlFor|children|style|key|ref|className|style|children)$/]",
        "message": "<Field> doesn't accept that prop. Declared props: label, hint, error, required, htmlFor, children, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Icon'] > JSXAttribute > JSXIdentifier[name!=/^(?:name|size|color|strokeWidth|style|key|ref|className|style|children)$/]",
        "message": "<Icon> doesn't accept that prop. Declared props: name, size, color, strokeWidth, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:invalid|disabled|key|ref|className|style|children)$/]",
        "message": "<Input> doesn't accept that prop. Declared props: invalid, disabled."
      },
      {
        "selector": "JSXOpeningElement[name.name='Logo'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|width|assetsBase|protectionZone|className|style|key|ref|className|style|children)$/]",
        "message": "<Logo> doesn't accept that prop. Declared props: variant, width, assetsBase, protectionZone, className, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Radio'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|key|ref|className|style|children)$/]",
        "message": "<Radio> doesn't accept that prop. Declared props: label."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionTitle'] > JSXAttribute > JSXIdentifier[name!=/^(?:kicker|title|align|accent|rule|style|key|ref|className|style|children)$/]",
        "message": "<SectionTitle> doesn't accept that prop. Declared props: kicker, title, align, accent, rule, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionTitle'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center|right)$/]",
        "message": "<SectionTitle> align must be one of 'left' | 'center' | 'right'."
      },
      {
        "selector": "JSXOpeningElement[name.name='SelectOption'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|key|ref|className|style|children)$/]",
        "message": "<SelectOption> doesn't accept that prop. Declared props: value, label."
      },
      {
        "selector": "JSXOpeningElement[name.name='Shape'] > JSXAttribute > JSXIdentifier[name!=/^(?:shape|color|width|height|children|style|key|ref|className|style|children)$/]",
        "message": "<Shape> doesn't accept that prop. Declared props: shape, color, width, height, children, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Shape'] > JSXAttribute[name.name='shape'] > Literal[value!=/^(?:rectangle|triangle|trapeze|coin-symbole)$/]",
        "message": "<Shape> shape must be one of 'rectangle' | 'triangle' | 'trapeze' | 'coin-symbole'."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatFigure'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|suffix|color|align|size|style|key|ref|className|style|children)$/]",
        "message": "<StatFigure> doesn't accept that prop. Declared props: value, label, suffix, color, align, size, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatFigure'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center)$/]",
        "message": "<StatFigure> align must be one of 'left' | 'center'."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatFigure'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:s|m|l)$/]",
        "message": "<StatFigure> size must be one of 's' | 'm' | 'l'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Switch'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|checked|onChange|disabled|style|key|ref|className|style|children)$/]",
        "message": "<Switch> doesn't accept that prop. Declared props: label, checked, onChange, disabled, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='TabItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|key|ref|className|style|children)$/]",
        "message": "<TabItem> doesn't accept that prop. Declared props: value, label."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|color|variant|size|style|key|ref|className|style|children)$/]",
        "message": "<Tag> doesn't accept that prop. Declared props: children, color, variant, size, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:plein|contour|nu)$/]",
        "message": "<Tag> variant must be one of 'plein' | 'contour' | 'nu'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:s|m)$/]",
        "message": "<Tag> size must be one of 's' | 'm'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Textarea'] > JSXAttribute > JSXIdentifier[name!=/^(?:invalid|rows|key|ref|className|style|children)$/]",
        "message": "<Textarea> doesn't accept that prop. Declared props: invalid, rows."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tooltip'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|placement|children|style|key|ref|className|style|children)$/]",
        "message": "<Tooltip> doesn't accept that prop. Declared props: label, placement, children, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tooltip'] > JSXAttribute[name.name='placement'] > Literal[value!=/^(?:top|bottom|left|right)$/]",
        "message": "<Tooltip> placement must be one of 'top' | 'bottom' | 'left' | 'right'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Triangle'] > JSXAttribute > JSXIdentifier[name!=/^(?:color|size|corner|style|key|ref|className|style|children)$/]",
        "message": "<Triangle> doesn't accept that prop. Declared props: color, size, corner, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Triangle'] > JSXAttribute[name.name='corner'] > Literal[value!=/^(?:top-right|top-left|bottom-right|bottom-left)$/]",
        "message": "<Triangle> corner must be one of 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "Alert": {
        "replaces": []
      },
      "BreadcrumbItem": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "Checkbox": {
        "replaces": []
      },
      "CoverElement": {
        "replaces": []
      },
      "Dialog": {
        "replaces": []
      },
      "Field": {
        "replaces": []
      },
      "Icon": {
        "replaces": []
      },
      "Input": {
        "replaces": []
      },
      "Logo": {
        "replaces": []
      },
      "Radio": {
        "replaces": []
      },
      "SectionTitle": {
        "replaces": []
      },
      "SelectOption": {
        "replaces": []
      },
      "Shape": {
        "replaces": []
      },
      "StatFigure": {
        "replaces": []
      },
      "Switch": {
        "replaces": []
      },
      "TabItem": {
        "replaces": []
      },
      "Tag": {
        "replaces": []
      },
      "Textarea": {
        "replaces": []
      },
      "Tooltip": {
        "replaces": []
      },
      "Triangle": {
        "replaces": []
      }
    },
    "tokens": [
      "--acc-bleu-clair",
      "--acc-cyan",
      "--acc-jaune",
      "--acc-orange",
      "--acc-rose",
      "--acc-rouge-clair",
      "--acc-vert",
      "--acc-vert-anis",
      "--acc-violet-clair",
      "--action-disabled",
      "--action-disabled-text",
      "--action-primary",
      "--action-primary-hover",
      "--action-primary-text",
      "--action-secondary",
      "--action-secondary-hover",
      "--approche-corps",
      "--approche-kicker",
      "--approche-nom",
      "--approche-titre",
      "--border-hairline",
      "--border-on-inverse",
      "--border-strong",
      "--duree-courte",
      "--duree-instant",
      "--duree-longue",
      "--duree-moyenne",
      "--easing-entree",
      "--easing-sortie",
      "--easing-standard",
      "--esp-1",
      "--esp-10",
      "--esp-12",
      "--esp-16",
      "--esp-2",
      "--esp-20",
      "--esp-24",
      "--esp-3",
      "--esp-4",
      "--esp-5",
      "--esp-6",
      "--esp-8",
      "--feedback-error",
      "--feedback-info",
      "--feedback-success",
      "--feedback-warning",
      "--filet-epais",
      "--filet-fin",
      "--filet-moyen",
      "--filet-titre",
      "--focus-ring",
      "--font-intertitre",
      "--font-texte",
      "--font-titrage",
      "--forme-coin-symbole",
      "--forme-trapeze",
      "--forme-triangle",
      "--gouttiere",
      "--grille-modules",
      "--interligne-corps",
      "--interligne-serre",
      "--interligne-titre",
      "--interligne-titre-large",
      "--largeur-contenu",
      "--largeur-texte",
      "--logo-blocmarque-min",
      "--logo-largeur-affiche",
      "--logo-largeur-min",
      "--logo-largeur-standard",
      "--logo-zone-protection",
      "--marge-page",
      "--marge-page-large",
      "--medef-bleu",
      "--medef-degrade",
      "--medef-degrade-h",
      "--medef-rouge",
      "--medef-violet",
      "--neutre-0",
      "--neutre-100",
      "--neutre-200",
      "--neutre-400",
      "--neutre-50",
      "--neutre-600",
      "--neutre-900",
      "--neutre-noir",
      "--ombre-0",
      "--ombre-carte",
      "--ombre-carte-survol",
      "--ombre-modale",
      "--poids-bold",
      "--poids-extrabold",
      "--poids-medium",
      "--poids-regular",
      "--poids-semibold",
      "--rayon-0",
      "--rayon-carte",
      "--rayon-controle",
      "--rayon-pastille",
      "--surface-card",
      "--surface-inverse",
      "--surface-inverse-alt",
      "--surface-page",
      "--surface-subtle",
      "--taille-affiche",
      "--taille-chapeau",
      "--taille-corps",
      "--taille-corps-s",
      "--taille-kicker",
      "--taille-legende",
      "--taille-mention",
      "--taille-titre-1",
      "--taille-titre-2",
      "--taille-titre-3",
      "--taille-titre-4",
      "--text-accent",
      "--text-body",
      "--text-muted",
      "--text-on-inverse",
      "--text-on-inverse-muted",
      "--text-title",
      "--theme-adherents",
      "--theme-autres-1",
      "--theme-autres-2",
      "--theme-developpement-durable",
      "--theme-economie",
      "--theme-education-formation",
      "--theme-europe-international",
      "--theme-influence",
      "--theme-juridique",
      "--theme-mandats",
      "--theme-numerique",
      "--theme-presidence",
      "--theme-social",
      "--theme-sujets-societaux",
      "--transition-controle",
      "--triangle-largeur"
    ],
    "tokenKinds": {
      "--medef-bleu": "color",
      "--medef-violet": "color",
      "--medef-rouge": "color",
      "--medef-degrade": "color",
      "--medef-degrade-h": "color",
      "--acc-bleu-clair": "color",
      "--acc-jaune": "color",
      "--acc-orange": "color",
      "--acc-violet-clair": "color",
      "--acc-vert-anis": "color",
      "--acc-cyan": "color",
      "--acc-rouge-clair": "color",
      "--acc-vert": "color",
      "--acc-rose": "color",
      "--theme-economie": "color",
      "--theme-social": "color",
      "--theme-numerique": "color",
      "--theme-juridique": "color",
      "--theme-mandats": "color",
      "--theme-adherents": "color",
      "--theme-europe-international": "color",
      "--theme-developpement-durable": "color",
      "--theme-education-formation": "color",
      "--theme-influence": "color",
      "--theme-presidence": "color",
      "--theme-sujets-societaux": "color",
      "--theme-autres-1": "color",
      "--theme-autres-2": "color",
      "--neutre-0": "color",
      "--neutre-50": "color",
      "--neutre-100": "color",
      "--neutre-200": "color",
      "--neutre-400": "color",
      "--neutre-600": "color",
      "--neutre-900": "color",
      "--neutre-noir": "color",
      "--surface-page": "color",
      "--surface-subtle": "color",
      "--surface-card": "color",
      "--surface-inverse": "color",
      "--surface-inverse-alt": "color",
      "--text-title": "font",
      "--text-body": "font",
      "--text-muted": "font",
      "--text-accent": "font",
      "--text-on-inverse": "font",
      "--text-on-inverse-muted": "font",
      "--border-hairline": "color",
      "--border-strong": "color",
      "--border-on-inverse": "color",
      "--action-primary": "color",
      "--action-primary-hover": "color",
      "--action-primary-text": "font",
      "--action-secondary": "color",
      "--action-secondary-hover": "color",
      "--action-disabled": "color",
      "--action-disabled-text": "font",
      "--focus-ring": "color",
      "--feedback-success": "color",
      "--feedback-warning": "color",
      "--feedback-error": "color",
      "--feedback-info": "color",
      "--font-titrage": "font",
      "--font-intertitre": "font",
      "--font-texte": "font",
      "--poids-regular": "font",
      "--poids-medium": "font",
      "--poids-semibold": "font",
      "--poids-bold": "font",
      "--poids-extrabold": "font",
      "--taille-affiche": "font",
      "--taille-titre-1": "font",
      "--taille-titre-2": "font",
      "--taille-titre-3": "font",
      "--taille-titre-4": "font",
      "--taille-kicker": "font",
      "--taille-chapeau": "font",
      "--taille-corps": "font",
      "--taille-corps-s": "font",
      "--taille-legende": "font",
      "--taille-mention": "font",
      "--interligne-titre": "font",
      "--interligne-titre-large": "font",
      "--interligne-corps": "font",
      "--interligne-serre": "font",
      "--approche-titre": "font",
      "--approche-kicker": "font",
      "--approche-nom": "font",
      "--approche-corps": "font",
      "--esp-1": "spacing",
      "--esp-2": "spacing",
      "--esp-3": "spacing",
      "--esp-4": "spacing",
      "--esp-5": "spacing",
      "--esp-6": "spacing",
      "--esp-8": "spacing",
      "--esp-10": "spacing",
      "--esp-12": "spacing",
      "--esp-16": "spacing",
      "--esp-20": "spacing",
      "--esp-24": "spacing",
      "--marge-page": "color",
      "--marge-page-large": "color",
      "--gouttiere": "color",
      "--largeur-contenu": "spacing",
      "--largeur-texte": "spacing",
      "--logo-zone-protection": "spacing",
      "--logo-largeur-min": "spacing",
      "--logo-blocmarque-min": "spacing",
      "--grille-modules": "other",
      "--triangle-largeur": "spacing",
      "--logo-largeur-standard": "spacing",
      "--logo-largeur-affiche": "spacing",
      "--rayon-0": "spacing",
      "--rayon-controle": "spacing",
      "--rayon-carte": "spacing",
      "--rayon-pastille": "spacing",
      "--filet-fin": "spacing",
      "--filet-moyen": "spacing",
      "--filet-epais": "spacing",
      "--filet-titre": "spacing",
      "--ombre-0": "shadow",
      "--ombre-carte": "color",
      "--ombre-carte-survol": "color",
      "--ombre-modale": "shadow",
      "--forme-triangle": "other",
      "--forme-trapeze": "other",
      "--forme-coin-symbole": "other",
      "--duree-instant": "other",
      "--duree-courte": "other",
      "--duree-moyenne": "other",
      "--duree-longue": "other",
      "--easing-standard": "other",
      "--easing-sortie": "other",
      "--easing-entree": "other",
      "--transition-controle": "other"
    },
    "fontFamilies": [
      "Barlow",
      "Barlow Condensed",
      "Barlow Condensed 44",
      "Barlow Semi Condensed"
    ]
  }
}