{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/core/**",
              "ui_kits/print/**",
              "ui_kits/slides/**",
              "uploads/Archive/script/**",
              "uploads/Plaquette_Presentation_Divi_2026 copie/publication-web-resources/script/**",
              "uploads/Plaquette_Presentation_Divi_2026/publication-web-resources/script/**"
            ],
            "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*(?!['\\\"]?(?:Instrument Serif|DM Sans))/i]",
        "message": "Font not provided by the design system. Available: Instrument Serif, DM Sans."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:color|size|outline|style|onClick|children|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: color, size, outline, style, onClick, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='color'] > Literal[value!=/^(?:vert-olive|vert-pesto|orange|rose|jaune|creme)$/]",
        "message": "<Button> color must be one of 'vert-olive' | 'vert-pesto' | 'orange' | 'rose' | 'jaune' | 'creme'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
        "message": "<Button> size must be one of 'sm' | 'md' | 'lg'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute > JSXIdentifier[name!=/^(?:color|radius|pad|style|children|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: color, radius, pad, style, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute[name.name='color'] > Literal[value!=/^(?:vert-olive|vert-pesto|orange|rose|jaune|creme)$/]",
        "message": "<Card> color must be one of 'vert-olive' | 'vert-pesto' | 'orange' | 'rose' | 'jaune' | 'creme'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute[name.name='radius'] > Literal[value!=/^(?:sm|md|lg)$/]",
        "message": "<Card> radius must be one of 'sm' | 'md' | 'lg'."
      },
      {
        "selector": "JSXOpeningElement[name.name='CaseStudySlide'] > JSXAttribute > JSXIdentifier[name!=/^(?:tags|quote|body|stats|photo|credit|key|ref|className|style|children)$/]",
        "message": "<CaseStudySlide> doesn't accept that prop. Declared props: tags, quote, body, stats, photo, credit."
      },
      {
        "selector": "JSXOpeningElement[name.name='ChapterSlide'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|overline|body|kicker|color|photo|flip|credit|key|ref|className|style|children)$/]",
        "message": "<ChapterSlide> doesn't accept that prop. Declared props: title, overline, body, kicker, color, photo, flip, credit."
      },
      {
        "selector": "JSXOpeningElement[name.name='ChapterSlide'] > JSXAttribute[name.name='color'] > Literal[value!=/^(?:orange|vert-pesto|rose|vert-olive)$/]",
        "message": "<ChapterSlide> color must be one of 'orange' | 'vert-pesto' | 'rose' | 'vert-olive'."
      },
      {
        "selector": "JSXOpeningElement[name.name='ClosingSlide'] > JSXAttribute > JSXIdentifier[name!=/^(?:baseline|contact|base|key|ref|className|style|children)$/]",
        "message": "<ClosingSlide> doesn't accept that prop. Declared props: baseline, contact, base."
      },
      {
        "selector": "JSXOpeningElement[name.name='CoverSlide'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|tag|footer|base|key|ref|className|style|children)$/]",
        "message": "<CoverSlide> doesn't accept that prop. Declared props: title, tag, footer, base."
      },
      {
        "selector": "JSXOpeningElement[name.name='EmailSignature'] > JSXAttribute > JSXIdentifier[name!=/^(?:name|role|email|phone|website|key|ref|className|style|children)$/]",
        "message": "<EmailSignature> doesn't accept that prop. Declared props: name, role, email, phone, website."
      },
      {
        "selector": "JSXOpeningElement[name.name='EncartPub'] > JSXAttribute > JSXIdentifier[name!=/^(?:photo|title|base|width|key|ref|className|style|children)$/]",
        "message": "<EncartPub> doesn't accept that prop. Declared props: photo, title, base, width."
      },
      {
        "selector": "JSXOpeningElement[name.name='Heading'] > JSXAttribute > JSXIdentifier[name!=/^(?:level|overline|italic|caps|style|children|key|ref|className|style|children)$/]",
        "message": "<Heading> doesn't accept that prop. Declared props: level, overline, italic, caps, style, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Heading'] > JSXAttribute[name.name='level'] > Literal[value!=/^(?:mega|h1|h2|h3)$/]",
        "message": "<Heading> level must be one of 'mega' | 'h1' | 'h2' | 'h3'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Logo'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|mono|monoIndex|width|base|style|key|ref|className|style|children)$/]",
        "message": "<Logo> doesn't accept that prop. Declared props: variant, mono, monoIndex, width, base, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Logo'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:blanc|creme|vert)$/]",
        "message": "<Logo> variant must be one of 'blanc' | 'creme' | 'vert'."
      },
      {
        "selector": "JSXOpeningElement[name.name='MethodSlideStep'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|color|bg|key|ref|className|style|children)$/]",
        "message": "<MethodSlideStep> doesn't accept that prop. Declared props: title, color, bg."
      },
      {
        "selector": "JSXOpeningElement[name.name='MissionSlide'] > JSXAttribute > JSXIdentifier[name!=/^(?:overline|text|photo|credit|key|ref|className|style|children)$/]",
        "message": "<MissionSlide> doesn't accept that prop. Declared props: overline, text, photo, credit."
      },
      {
        "selector": "JSXOpeningElement[name.name='OffersSlideOffer'] > JSXAttribute > JSXIdentifier[name!=/^(?:name|desc|key|ref|className|style|children)$/]",
        "message": "<OffersSlideOffer> doesn't accept that prop. Declared props: name, desc."
      },
      {
        "selector": "JSXOpeningElement[name.name='Pastille'] > JSXAttribute > JSXIdentifier[name!=/^(?:color|outline|style|children|key|ref|className|style|children)$/]",
        "message": "<Pastille> doesn't accept that prop. Declared props: color, outline, style, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Pastille'] > JSXAttribute[name.name='color'] > Literal[value!=/^(?:vert-olive|vert-pesto|orange|rose|jaune|creme)$/]",
        "message": "<Pastille> color must be one of 'vert-olive' | 'vert-pesto' | 'orange' | 'rose' | 'jaune' | 'creme'."
      },
      {
        "selector": "JSXOpeningElement[name.name='PhotoCard'] > JSXAttribute > JSXIdentifier[name!=/^(?:src|alt|radius|height|credit|children|style|key|ref|className|style|children)$/]",
        "message": "<PhotoCard> doesn't accept that prop. Declared props: src, alt, radius, height, credit, children, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='PhotoCard'] > JSXAttribute[name.name='radius'] > Literal[value!=/^(?:sm|md|lg)$/]",
        "message": "<PhotoCard> radius must be one of 'sm' | 'md' | 'lg'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Quote'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|attribution|style|key|ref|className|style|children)$/]",
        "message": "<Quote> doesn't accept that prop. Declared props: children, attribution, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionSlide'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|overline|subtitle|color|base|key|ref|className|style|children)$/]",
        "message": "<SectionSlide> doesn't accept that prop. Declared props: title, overline, subtitle, color, base."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionSlide'] > JSXAttribute[name.name='color'] > Literal[value!=/^(?:vert-olive|vert-pesto|orange|rose)$/]",
        "message": "<SectionSlide> color must be one of 'vert-olive' | 'vert-pesto' | 'orange' | 'rose'."
      },
      {
        "selector": "JSXOpeningElement[name.name='ServicesSlide'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|services|key|ref|className|style|children)$/]",
        "message": "<ServicesSlide> doesn't accept that prop. Declared props: title, services."
      },
      {
        "selector": "JSXOpeningElement[name.name='Stat'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|align|style|key|ref|className|style|children)$/]",
        "message": "<Stat> doesn't accept that prop. Declared props: value, label, align, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Stat'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center|right)$/]",
        "message": "<Stat> align must be one of 'left' | 'center' | 'right'."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatementSlide'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|photo|bg|flip|credit|key|ref|className|style|children)$/]",
        "message": "<StatementSlide> doesn't accept that prop. Declared props: children, photo, bg, flip, credit."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "Button": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "CaseStudySlide": {
        "replaces": []
      },
      "ChapterSlide": {
        "replaces": []
      },
      "ClosingSlide": {
        "replaces": []
      },
      "CoverSlide": {
        "replaces": []
      },
      "EmailSignature": {
        "replaces": []
      },
      "EncartPub": {
        "replaces": []
      },
      "Heading": {
        "replaces": []
      },
      "Logo": {
        "replaces": []
      },
      "MethodSlideStep": {
        "replaces": []
      },
      "MissionSlide": {
        "replaces": []
      },
      "OffersSlideOffer": {
        "replaces": []
      },
      "Pastille": {
        "replaces": []
      },
      "PhotoCard": {
        "replaces": []
      },
      "Quote": {
        "replaces": []
      },
      "SectionSlide": {
        "replaces": []
      },
      "ServicesSlide": {
        "replaces": []
      },
      "Stat": {
        "replaces": []
      },
      "StatementSlide": {
        "replaces": []
      }
    },
    "tokens": [
      "--blanc",
      "--blanc-amande",
      "--blanc-amande-100",
      "--blanc-amande-20",
      "--blanc-amande-40",
      "--blanc-amande-5",
      "--blanc-amande-60",
      "--blanc-amande-80",
      "--blanc-casse",
      "--border-hairline",
      "--card-pad-lg",
      "--card-pad-md",
      "--card-pad-sm",
      "--font-display",
      "--font-text",
      "--fuchsia",
      "--jaune-mousse",
      "--jaune-mousse-100",
      "--jaune-mousse-20",
      "--jaune-mousse-40",
      "--jaune-mousse-5",
      "--jaune-mousse-60",
      "--jaune-mousse-80",
      "--leading-body",
      "--leading-display",
      "--leading-title",
      "--link",
      "--noir",
      "--orange-patate",
      "--orange-patate-100",
      "--orange-patate-20",
      "--orange-patate-40",
      "--orange-patate-5",
      "--orange-patate-60",
      "--orange-patate-80",
      "--radius-lg",
      "--radius-md",
      "--radius-pill",
      "--radius-sm",
      "--rose-sorbet",
      "--rose-sorbet-100",
      "--rose-sorbet-20",
      "--rose-sorbet-40",
      "--rose-sorbet-5",
      "--rose-sorbet-60",
      "--rose-sorbet-80",
      "--shadow-none",
      "--space-1",
      "--space-2",
      "--space-3",
      "--space-4",
      "--space-5",
      "--space-6",
      "--space-7",
      "--space-8",
      "--space-9",
      "--surface-card-dark",
      "--surface-card-jaune",
      "--surface-card-orange",
      "--surface-card-pesto",
      "--surface-card-rose",
      "--surface-page",
      "--text-accent-on-dark",
      "--text-body",
      "--text-caption",
      "--text-h1",
      "--text-h2",
      "--text-h3",
      "--text-headline",
      "--text-mega",
      "--text-on-dark",
      "--text-on-jaune",
      "--text-on-orange",
      "--text-on-pesto",
      "--text-on-rose",
      "--text-on-rose-accent",
      "--text-pastille",
      "--text-small",
      "--tracking-caps",
      "--tracking-display",
      "--vert-olive",
      "--vert-olive-100",
      "--vert-olive-20",
      "--vert-olive-40",
      "--vert-olive-5",
      "--vert-olive-60",
      "--vert-olive-80",
      "--vert-pesto",
      "--vert-pesto-100",
      "--vert-pesto-20",
      "--vert-pesto-40",
      "--vert-pesto-5",
      "--vert-pesto-60",
      "--vert-pesto-80",
      "--vin-rouge",
      "--weight-black",
      "--weight-bold",
      "--weight-light",
      "--weight-medium",
      "--weight-regular",
      "--weight-semibold"
    ],
    "tokenKinds": {
      "--vert-olive": "color",
      "--rose-sorbet": "color",
      "--vert-pesto": "color",
      "--jaune-mousse": "color",
      "--orange-patate": "color",
      "--blanc-amande": "color",
      "--noir": "color",
      "--blanc": "color",
      "--vin-rouge": "color",
      "--fuchsia": "color",
      "--blanc-casse": "color",
      "--vert-olive-100": "color",
      "--vert-olive-80": "color",
      "--vert-olive-60": "color",
      "--vert-olive-40": "color",
      "--vert-olive-20": "color",
      "--vert-olive-5": "color",
      "--rose-sorbet-100": "color",
      "--rose-sorbet-80": "color",
      "--rose-sorbet-60": "color",
      "--rose-sorbet-40": "color",
      "--rose-sorbet-20": "color",
      "--rose-sorbet-5": "color",
      "--vert-pesto-100": "color",
      "--vert-pesto-80": "color",
      "--vert-pesto-60": "color",
      "--vert-pesto-40": "color",
      "--vert-pesto-20": "color",
      "--vert-pesto-5": "color",
      "--jaune-mousse-100": "color",
      "--jaune-mousse-80": "color",
      "--jaune-mousse-60": "color",
      "--jaune-mousse-40": "color",
      "--jaune-mousse-20": "color",
      "--jaune-mousse-5": "color",
      "--orange-patate-100": "color",
      "--orange-patate-80": "color",
      "--orange-patate-60": "color",
      "--orange-patate-40": "color",
      "--orange-patate-20": "color",
      "--orange-patate-5": "color",
      "--blanc-amande-100": "color",
      "--blanc-amande-80": "color",
      "--blanc-amande-60": "color",
      "--blanc-amande-40": "color",
      "--blanc-amande-20": "color",
      "--blanc-amande-5": "color",
      "--surface-page": "color",
      "--surface-card-dark": "color",
      "--surface-card-pesto": "color",
      "--surface-card-orange": "color",
      "--surface-card-rose": "color",
      "--surface-card-jaune": "color",
      "--text-body": "font",
      "--text-on-dark": "font",
      "--text-accent-on-dark": "font",
      "--text-on-pesto": "font",
      "--text-on-orange": "font",
      "--text-on-rose": "font",
      "--text-on-rose-accent": "font",
      "--text-on-jaune": "font",
      "--link": "color",
      "--font-display": "font",
      "--font-text": "font",
      "--weight-light": "font",
      "--weight-regular": "font",
      "--weight-medium": "font",
      "--weight-semibold": "font",
      "--weight-bold": "font",
      "--weight-black": "font",
      "--text-mega": "font",
      "--text-h1": "font",
      "--text-h2": "font",
      "--text-h3": "font",
      "--text-headline": "font",
      "--text-small": "font",
      "--text-caption": "font",
      "--text-pastille": "font",
      "--leading-display": "font",
      "--leading-title": "font",
      "--leading-body": "font",
      "--tracking-caps": "font",
      "--tracking-display": "font",
      "--space-1": "spacing",
      "--space-2": "spacing",
      "--space-3": "spacing",
      "--space-4": "spacing",
      "--space-5": "spacing",
      "--space-6": "spacing",
      "--space-7": "spacing",
      "--space-8": "spacing",
      "--space-9": "spacing",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-pill": "radius",
      "--card-pad-sm": "spacing",
      "--card-pad-md": "spacing",
      "--card-pad-lg": "spacing",
      "--shadow-none": "shadow",
      "--border-hairline": "color"
    },
    "fontFamilies": [
      "DM Sans",
      "Instrument Serif"
    ]
  }
}