{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/buttons/**",
              "components/content/**",
              "components/forms/**",
              "ui_kits/website/**"
            ],
            "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*(?!['\\\"]?(?:Bebas Neue|Poppins))/i]",
        "message": "Font not provided by the design system. Available: Bebas Neue, Poppins."
      },
      {
        "selector": "JSXOpeningElement[name.name='AccordionItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:q|a|key|ref|className|style|children)$/]",
        "message": "<AccordionItem> doesn't accept that prop. Declared props: q, a."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|variant|size|href|icon|disabled|type|onClick|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: children, variant, size, href, icon, disabled, type, onClick."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:primary|secondary|outline|ghost|text)$/]",
        "message": "<Button> variant must be one of 'primary' | 'secondary' | 'outline' | 'ghost' | 'text'."
      },
      {
        "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='Button'] > JSXAttribute[name.name='type'] > Literal[value!=/^(?:button|submit|reset)$/]",
        "message": "<Button> type must be one of 'button' | 'submit' | 'reset'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|title|eyebrow|interactive|style|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: children, title, eyebrow, interactive, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='CaseStudyPreview'] > JSXAttribute > JSXIdentifier[name!=/^(?:client|title|tags|metric|image|href|dark|key|ref|className|style|children)$/]",
        "message": "<CaseStudyPreview> doesn't accept that prop. Declared props: client, title, tags, metric, image, href, dark."
      },
      {
        "selector": "JSXOpeningElement[name.name='Eyebrow'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|color|dot|dark|key|ref|className|style|children)$/]",
        "message": "<Eyebrow> doesn't accept that prop. Declared props: children, color, dot, dark."
      },
      {
        "selector": "JSXOpeningElement[name.name='Eyebrow'] > JSXAttribute[name.name='color'] > Literal[value!=/^(?:accent|brand|muted|inverse)$/]",
        "message": "<Eyebrow> color must be one of 'accent' | 'brand' | 'muted' | 'inverse'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|type|placeholder|value|onChange|required|error|id|key|ref|className|style|children)$/]",
        "message": "<Input> doesn't accept that prop. Declared props: label, type, placeholder, value, onChange, required, error, id."
      },
      {
        "selector": "JSXOpeningElement[name.name='ScrollIndicator'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|dark|key|ref|className|style|children)$/]",
        "message": "<ScrollIndicator> doesn't accept that prop. Declared props: label, dark."
      },
      {
        "selector": "JSXOpeningElement[name.name='ServiceLink'] > JSXAttribute > JSXIdentifier[name!=/^(?:index|title|description|href|key|ref|className|style|children)$/]",
        "message": "<ServiceLink> doesn't accept that prop. Declared props: index, title, description, href."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatBlock'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|dark|accent|key|ref|className|style|children)$/]",
        "message": "<StatBlock> doesn't accept that prop. Declared props: value, label, dark, accent."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatBlock'] > JSXAttribute[name.name='accent'] > Literal[value!=/^(?:green|cobalt|orange)$/]",
        "message": "<StatBlock> accent must be one of 'green' | 'cobalt' | 'orange'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|tone|key|ref|className|style|children)$/]",
        "message": "<Tag> doesn't accept that prop. Declared props: children, tone."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:neutral|brand|green|warm)$/]",
        "message": "<Tag> tone must be one of 'neutral' | 'brand' | 'green' | 'warm'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Testimonial'] > JSXAttribute > JSXIdentifier[name!=/^(?:quote|name|role|company|key|ref|className|style|children)$/]",
        "message": "<Testimonial> doesn't accept that prop. Declared props: quote, name, role, company."
      },
      {
        "selector": "JSXOpeningElement[name.name='Textarea'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|placeholder|value|onChange|rows|required|id|key|ref|className|style|children)$/]",
        "message": "<Textarea> doesn't accept that prop. Declared props: label, placeholder, value, onChange, rows, required, id."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "AccordionItem": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "CaseStudyPreview": {
        "replaces": []
      },
      "Eyebrow": {
        "replaces": []
      },
      "Input": {
        "replaces": []
      },
      "ScrollIndicator": {
        "replaces": []
      },
      "ServiceLink": {
        "replaces": []
      },
      "StatBlock": {
        "replaces": []
      },
      "Tag": {
        "replaces": []
      },
      "Testimonial": {
        "replaces": []
      },
      "Textarea": {
        "replaces": []
      }
    },
    "tokens": [
      "--accent-gold",
      "--accent-primary",
      "--accent-secondary",
      "--accent-warm",
      "--body-lg",
      "--body-lh",
      "--body-lh-tight",
      "--body-md",
      "--body-sm",
      "--body-xl",
      "--body-xs",
      "--border-brand",
      "--border-strong",
      "--border-subtle",
      "--content-max",
      "--content-wide",
      "--display-2xl",
      "--display-lg",
      "--display-lh",
      "--display-md",
      "--display-tracking",
      "--display-xl",
      "--dur-base",
      "--dur-fast",
      "--dur-reveal",
      "--dur-slow",
      "--ease-in-out",
      "--ease-out",
      "--ease-standard",
      "--focus-ring",
      "--fold-pad-y",
      "--font-body",
      "--font-display",
      "--fw-bold",
      "--fw-light",
      "--fw-medium",
      "--fw-regular",
      "--fw-semibold",
      "--gutter",
      "--heading-lg",
      "--heading-lh",
      "--heading-md",
      "--heading-sm",
      "--heading-xl",
      "--label-md",
      "--label-sm",
      "--label-tracking",
      "--label-weight",
      "--radius-lg",
      "--radius-md",
      "--radius-pill",
      "--radius-sm",
      "--radius-xl",
      "--shadow-brand",
      "--shadow-focus",
      "--shadow-lg",
      "--shadow-md",
      "--shadow-sm",
      "--space-1",
      "--space-10",
      "--space-11",
      "--space-12",
      "--space-2",
      "--space-3",
      "--space-4",
      "--space-5",
      "--space-6",
      "--space-7",
      "--space-8",
      "--space-9",
      "--state-danger",
      "--state-info",
      "--state-success",
      "--state-warning",
      "--surface-alt",
      "--surface-brand",
      "--surface-card",
      "--surface-ink",
      "--surface-muted",
      "--surface-page",
      "--text-accent",
      "--text-body",
      "--text-brand",
      "--text-heading",
      "--text-inverse",
      "--text-muted",
      "--text-on-brand",
      "--tw-apple-green",
      "--tw-baltic-sea",
      "--tw-cobalt",
      "--tw-cobalt-100",
      "--tw-cobalt-200",
      "--tw-cobalt-500",
      "--tw-cobalt-600",
      "--tw-cobalt-700",
      "--tw-cobalt-800",
      "--tw-cobalt-900",
      "--tw-dark-sky-blue",
      "--tw-grass-green",
      "--tw-green",
      "--tw-green-100",
      "--tw-green-300",
      "--tw-green-500",
      "--tw-green-600",
      "--tw-green-700",
      "--tw-halloween-orange",
      "--tw-ink-100",
      "--tw-ink-200",
      "--tw-ink-300",
      "--tw-ink-400",
      "--tw-ink-500",
      "--tw-ink-600",
      "--tw-ink-800",
      "--tw-ink-900",
      "--tw-lavender-mist",
      "--tw-leaf-green",
      "--tw-mango-tango",
      "--tw-white",
      "--tw-white-smoke",
      "--tw-yellow-orange",
      "--tw-zircon",
      "--z-modal",
      "--z-nav",
      "--z-overlay"
    ],
    "tokenKinds": {
      "--tw-cobalt": "color",
      "--tw-green": "color",
      "--tw-dark-sky-blue": "color",
      "--tw-grass-green": "color",
      "--tw-baltic-sea": "color",
      "--tw-halloween-orange": "color",
      "--tw-lavender-mist": "color",
      "--tw-leaf-green": "color",
      "--tw-white-smoke": "color",
      "--tw-mango-tango": "color",
      "--tw-zircon": "color",
      "--tw-apple-green": "color",
      "--tw-white": "color",
      "--tw-yellow-orange": "color",
      "--tw-cobalt-900": "color",
      "--tw-cobalt-800": "color",
      "--tw-cobalt-700": "color",
      "--tw-cobalt-600": "color",
      "--tw-cobalt-500": "color",
      "--tw-cobalt-200": "color",
      "--tw-cobalt-100": "color",
      "--tw-green-700": "color",
      "--tw-green-600": "color",
      "--tw-green-500": "color",
      "--tw-green-300": "color",
      "--tw-green-100": "color",
      "--tw-ink-900": "color",
      "--tw-ink-800": "color",
      "--tw-ink-600": "color",
      "--tw-ink-500": "color",
      "--tw-ink-400": "color",
      "--tw-ink-300": "color",
      "--tw-ink-200": "color",
      "--tw-ink-100": "color",
      "--surface-page": "color",
      "--surface-alt": "color",
      "--surface-muted": "color",
      "--surface-ink": "color",
      "--surface-brand": "color",
      "--surface-card": "color",
      "--text-heading": "font",
      "--text-body": "font",
      "--text-muted": "font",
      "--text-inverse": "font",
      "--text-on-brand": "font",
      "--text-brand": "font",
      "--text-accent": "font",
      "--border-subtle": "color",
      "--border-strong": "color",
      "--border-brand": "color",
      "--accent-primary": "color",
      "--accent-secondary": "color",
      "--accent-warm": "color",
      "--accent-gold": "color",
      "--focus-ring": "color",
      "--state-success": "color",
      "--state-warning": "color",
      "--state-danger": "color",
      "--state-info": "color",
      "--font-display": "font",
      "--font-body": "font",
      "--fw-light": "font",
      "--fw-regular": "font",
      "--fw-medium": "font",
      "--fw-semibold": "font",
      "--fw-bold": "font",
      "--display-2xl": "font",
      "--display-xl": "font",
      "--display-lg": "font",
      "--display-md": "font",
      "--display-lh": "font",
      "--display-tracking": "font",
      "--heading-xl": "font",
      "--heading-lg": "font",
      "--heading-md": "font",
      "--heading-sm": "font",
      "--heading-lh": "font",
      "--body-xl": "font",
      "--body-lg": "font",
      "--body-md": "font",
      "--body-sm": "font",
      "--body-xs": "font",
      "--body-lh": "font",
      "--body-lh-tight": "font",
      "--label-md": "font",
      "--label-sm": "font",
      "--label-tracking": "font",
      "--label-weight": "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",
      "--space-10": "spacing",
      "--space-11": "spacing",
      "--space-12": "spacing",
      "--fold-pad-y": "spacing",
      "--gutter": "other",
      "--content-max": "spacing",
      "--content-wide": "spacing",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-xl": "radius",
      "--radius-pill": "radius",
      "--shadow-sm": "shadow",
      "--shadow-md": "shadow",
      "--shadow-lg": "shadow",
      "--shadow-brand": "shadow",
      "--shadow-focus": "shadow",
      "--ease-out": "other",
      "--ease-in-out": "other",
      "--ease-standard": "other",
      "--dur-fast": "other",
      "--dur-base": "other",
      "--dur-slow": "other",
      "--dur-reveal": "other",
      "--z-nav": "other",
      "--z-overlay": "other",
      "--z-modal": "other"
    },
    "fontFamilies": [
      "Bebas Neue",
      "Poppins"
    ]
  }
}