{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/core/**",
              "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*(?!['\\\"]?(?:Cormorant Garamond|Mulish))/i]",
        "message": "Font not provided by the design system. Available: Cormorant Garamond, Mulish."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|tone|key|ref|className|style|children)$/]",
        "message": "<Badge> doesn't accept that prop. Declared props: children, tone."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:gold|plum|soft|outline)$/]",
        "message": "<Badge> tone must be one of 'gold' | 'plum' | 'soft' | 'outline'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|size|arrow|full|as|children|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: variant, size, arrow, full, as, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:primary|secondary|outline|outline-light|ghost)$/]",
        "message": "<Button> variant must be one of 'primary' | 'secondary' | 'outline' | 'outline-light' | 'ghost'."
      },
      {
        "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='as'] > Literal[value!=/^(?:button|a)$/]",
        "message": "<Button> as must be one of 'button' | 'a'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|interactive|padded|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: children, interactive, padded."
      },
      {
        "selector": "JSXOpeningElement[name.name='EventCard'] > JSXAttribute > JSXIdentifier[name!=/^(?:image|month|day|title|date|location|action|href|key|ref|className|style|children)$/]",
        "message": "<EventCard> doesn't accept that prop. Declared props: image, month, day, title, date, location, action, href."
      },
      {
        "selector": "JSXOpeningElement[name.name='Eyebrow'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|rule|align|onDark|key|ref|className|style|children)$/]",
        "message": "<Eyebrow> doesn't accept that prop. Declared props: children, rule, align, onDark."
      },
      {
        "selector": "JSXOpeningElement[name.name='Eyebrow'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center)$/]",
        "message": "<Eyebrow> align must be one of 'left' | 'center'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|hint|inline|onDark|key|ref|className|style|children)$/]",
        "message": "<Input> doesn't accept that prop. Declared props: label, hint, inline, onDark."
      },
      {
        "selector": "JSXOpeningElement[name.name='Logo'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|height|base|alt|key|ref|className|style|children)$/]",
        "message": "<Logo> doesn't accept that prop. Declared props: variant, height, base, alt."
      },
      {
        "selector": "JSXOpeningElement[name.name='Logo'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:horizontal|stacked|round|mark)$/]",
        "message": "<Logo> variant must be one of 'horizontal' | 'stacked' | 'round' | 'mark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='IconBadge'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|size|onDark|key|ref|className|style|children)$/]",
        "message": "<IconBadge> doesn't accept that prop. Declared props: icon, size, onDark."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatBlock'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|value|label|onDark|key|ref|className|style|children)$/]",
        "message": "<StatBlock> doesn't accept that prop. Declared props: icon, value, label, onDark."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "Badge": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "EventCard": {
        "replaces": []
      },
      "Eyebrow": {
        "replaces": []
      },
      "Input": {
        "replaces": []
      },
      "Logo": {
        "replaces": []
      },
      "IconBadge": {
        "replaces": []
      },
      "StatBlock": {
        "replaces": []
      }
    },
    "tokens": [
      "--bg-canvas",
      "--bg-inverse",
      "--bg-page",
      "--bg-soft",
      "--black",
      "--blush-100",
      "--blush-200",
      "--border-accent",
      "--border-hairline",
      "--border-strong",
      "--border-subtle",
      "--border-thick",
      "--brand-accent",
      "--brand-primary",
      "--container-max",
      "--container-pad",
      "--cream-100",
      "--cream-200",
      "--cream-50",
      "--dur-base",
      "--dur-fast",
      "--dur-slow",
      "--ease-out",
      "--ease-standard",
      "--error",
      "--focus-ring",
      "--font-body",
      "--font-display",
      "--fs-body",
      "--fs-display-1",
      "--fs-display-2",
      "--fs-eyebrow",
      "--fs-h1",
      "--fs-h2",
      "--fs-h3",
      "--fs-lead",
      "--fs-sm",
      "--fs-xs",
      "--fw-bold",
      "--fw-extrabold",
      "--fw-medium",
      "--fw-regular",
      "--fw-semibold",
      "--gold-100",
      "--gold-300",
      "--gold-400",
      "--gold-500",
      "--gold-600",
      "--gold-700",
      "--gold-800",
      "--info",
      "--ink-400",
      "--ink-500",
      "--ink-700",
      "--ink-900",
      "--lh-normal",
      "--lh-relaxed",
      "--lh-snug",
      "--lh-tight",
      "--line-200",
      "--line-300",
      "--ls-display",
      "--ls-eyebrow",
      "--ls-normal",
      "--ls-tight",
      "--ls-wide",
      "--plum-100",
      "--plum-300",
      "--plum-500",
      "--plum-600",
      "--plum-700",
      "--plum-800",
      "--plum-900",
      "--plum-950",
      "--radius-circle",
      "--radius-lg",
      "--radius-md",
      "--radius-pill",
      "--radius-sm",
      "--radius-xs",
      "--section-y",
      "--shadow-focus",
      "--shadow-lg",
      "--shadow-md",
      "--shadow-sm",
      "--shadow-xs",
      "--space-1",
      "--space-10",
      "--space-2",
      "--space-3",
      "--space-4",
      "--space-5",
      "--space-6",
      "--space-7",
      "--space-8",
      "--space-9",
      "--success",
      "--surface-card",
      "--surface-raised",
      "--text-accent",
      "--text-body",
      "--text-heading",
      "--text-muted",
      "--text-on-dark",
      "--text-on-dark-muted",
      "--text-strong",
      "--type-body-family",
      "--type-eyebrow-family",
      "--type-eyebrow-weight",
      "--type-heading-family",
      "--type-heading-weight",
      "--warning",
      "--white"
    ],
    "tokenKinds": {
      "--plum-950": "color",
      "--plum-900": "color",
      "--plum-800": "color",
      "--plum-700": "color",
      "--plum-600": "color",
      "--plum-500": "color",
      "--plum-300": "color",
      "--plum-100": "color",
      "--gold-800": "color",
      "--gold-700": "color",
      "--gold-600": "color",
      "--gold-500": "color",
      "--gold-400": "color",
      "--gold-300": "color",
      "--gold-100": "color",
      "--cream-50": "color",
      "--cream-100": "color",
      "--cream-200": "color",
      "--blush-100": "color",
      "--blush-200": "color",
      "--ink-900": "color",
      "--ink-700": "color",
      "--ink-500": "color",
      "--ink-400": "color",
      "--line-200": "color",
      "--line-300": "color",
      "--white": "color",
      "--black": "color",
      "--success": "color",
      "--warning": "color",
      "--error": "color",
      "--info": "color",
      "--bg-page": "color",
      "--bg-canvas": "color",
      "--bg-inverse": "color",
      "--bg-soft": "color",
      "--surface-card": "color",
      "--surface-raised": "color",
      "--text-heading": "font",
      "--text-body": "font",
      "--text-strong": "font",
      "--text-muted": "font",
      "--text-on-dark": "font",
      "--text-on-dark-muted": "font",
      "--text-accent": "font",
      "--brand-primary": "color",
      "--brand-accent": "color",
      "--border-subtle": "color",
      "--border-strong": "color",
      "--border-accent": "color",
      "--focus-ring": "color",
      "--font-display": "font",
      "--font-body": "font",
      "--fw-regular": "font",
      "--fw-medium": "font",
      "--fw-semibold": "font",
      "--fw-bold": "font",
      "--fw-extrabold": "font",
      "--fs-display-1": "font",
      "--fs-display-2": "font",
      "--fs-h1": "font",
      "--fs-h2": "font",
      "--fs-h3": "font",
      "--fs-lead": "font",
      "--fs-body": "font",
      "--fs-sm": "font",
      "--fs-xs": "font",
      "--fs-eyebrow": "font",
      "--lh-tight": "font",
      "--lh-snug": "font",
      "--lh-normal": "font",
      "--lh-relaxed": "font",
      "--ls-display": "font",
      "--ls-tight": "font",
      "--ls-normal": "font",
      "--ls-wide": "font",
      "--ls-eyebrow": "font",
      "--type-eyebrow-family": "font",
      "--type-eyebrow-weight": "font",
      "--type-heading-family": "font",
      "--type-heading-weight": "font",
      "--type-body-family": "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",
      "--section-y": "spacing",
      "--container-max": "spacing",
      "--container-pad": "spacing",
      "--radius-xs": "radius",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-pill": "radius",
      "--radius-circle": "radius",
      "--border-hairline": "spacing",
      "--border-thick": "spacing",
      "--shadow-xs": "shadow",
      "--shadow-sm": "shadow",
      "--shadow-md": "shadow",
      "--shadow-lg": "shadow",
      "--shadow-focus": "shadow",
      "--ease-standard": "other",
      "--ease-out": "other",
      "--dur-fast": "other",
      "--dur-base": "other",
      "--dur-slow": "other"
    },
    "fontFamilies": [
      "Cormorant Garamond",
      "Mulish"
    ]
  }
}