{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/core/**",
              "components/data/**",
              "components/forms/**",
              "components/media/**",
              "ui_kits/landing/**",
              "ui_kits/slides/**"
            ],
            "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*(?!['\\\"]?(?:Archivo|Hanken Grotesk|IBM Plex Mono))/i]",
        "message": "Font not provided by the design system. Available: Archivo, Hanken Grotesk, IBM Plex Mono."
      },
      {
        "selector": "JSXOpeningElement[name.name='AccentHeading'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|eyebrow|bars|size|onDark|barColor|style|key|ref|className|style|children)$/]",
        "message": "<AccentHeading> doesn't accept that prop. Declared props: children, eyebrow, bars, size, onDark, barColor, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='AccentHeading'] > JSXAttribute[name.name='bars'] > Literal[value!=/^(?:left|both)$/]",
        "message": "<AccentHeading> bars must be one of 'left' | 'both'."
      },
      {
        "selector": "JSXOpeningElement[name.name='AccentHeading'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:md|lg|xl)$/]",
        "message": "<AccentHeading> size must be one of 'md' | 'lg' | 'xl'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|tone|variant|size|style|key|ref|className|style|children)$/]",
        "message": "<Badge> doesn't accept that prop. Declared props: children, tone, variant, size, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md)$/]",
        "message": "<Badge> size must be one of 'sm' | 'md'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|variant|size|iconLeft|iconRight|disabled|fullWidth|type|onClick|style|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: children, variant, size, iconLeft, iconRight, disabled, fullWidth, type, onClick, style."
      },
      {
        "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='Callout'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|tone|title|icon|style|key|ref|className|style|children)$/]",
        "message": "<Callout> doesn't accept that prop. Declared props: children, tone, title, icon, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Callout'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:brand|navy|success|warning)$/]",
        "message": "<Callout> tone must be one of 'brand' | 'navy' | 'success' | 'warning'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|padding|elevation|accent|onDark|style|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: children, padding, elevation, accent, onDark, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute[name.name='elevation'] > Literal[value!=/^(?:none|sm|md|lg)$/]",
        "message": "<Card> elevation must be one of 'none' | 'sm' | 'md' | 'lg'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Eyebrow'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|color|style|key|ref|className|style|children)$/]",
        "message": "<Eyebrow> doesn't accept that prop. Declared props: children, color, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='InfluenceTag'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|level|tone|block|style|key|ref|className|style|children)$/]",
        "message": "<InfluenceTag> doesn't accept that prop. Declared props: children, level, tone, block, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='InfluenceTag'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:navy|orange)$/]",
        "message": "<InfluenceTag> tone must be one of 'navy' | 'orange'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|helper|error|prefix|style|key|ref|className|style|children)$/]",
        "message": "<Input> doesn't accept that prop. Declared props: label, helper, error, prefix, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='MediaBand'] > JSXAttribute > JSXIdentifier[name!=/^(?:src|alt|eyebrow|heading|children|scrim|height|position|align|style|key|ref|className|style|children)$/]",
        "message": "<MediaBand> doesn't accept that prop. Declared props: src, alt, eyebrow, heading, children, scrim, height, position, align, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='MediaBand'] > JSXAttribute[name.name='scrim'] > Literal[value!=/^(?:left|bottom|full)$/]",
        "message": "<MediaBand> scrim must be one of 'left' | 'bottom' | 'full'."
      },
      {
        "selector": "JSXOpeningElement[name.name='MediaBand'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center)$/]",
        "message": "<MediaBand> align must be one of 'left' | 'center'."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatBlock'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|caption|trend|trendTone|align|onDark|accent|size|style|key|ref|className|style|children)$/]",
        "message": "<StatBlock> doesn't accept that prop. Declared props: value, label, caption, trend, trendTone, align, onDark, accent, size, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatBlock'] > JSXAttribute[name.name='trendTone'] > Literal[value!=/^(?:success|danger|neutral)$/]",
        "message": "<StatBlock> trendTone must be one of 'success' | 'danger' | 'neutral'."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatBlock'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center)$/]",
        "message": "<StatBlock> align must be one of 'left' | 'center'."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatBlock'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
        "message": "<StatBlock> size must be one of 'sm' | 'md' | 'lg'."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "AccentHeading": {
        "replaces": []
      },
      "Badge": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "Callout": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "Eyebrow": {
        "replaces": []
      },
      "InfluenceTag": {
        "replaces": []
      },
      "Input": {
        "replaces": []
      },
      "MediaBand": {
        "replaces": []
      },
      "StatBlock": {
        "replaces": []
      }
    },
    "tokens": [
      "--accent-bar",
      "--accent-bar-w",
      "--action-primary-bg",
      "--action-primary-bg-hover",
      "--action-primary-bg-press",
      "--action-primary-fg",
      "--action-secondary-bg",
      "--action-secondary-bg-hover",
      "--action-secondary-bg-press",
      "--action-secondary-fg",
      "--border-brand",
      "--border-default",
      "--border-on-dark",
      "--border-strong",
      "--border-subtle",
      "--bw-hairline",
      "--bw-thick",
      "--bw-thin",
      "--container-max",
      "--container-narrow",
      "--dur-base",
      "--dur-fast",
      "--dur-slow",
      "--ease-out",
      "--ease-standard",
      "--focus-ring",
      "--font-body",
      "--font-display",
      "--font-mono",
      "--fs-body",
      "--fs-body-l",
      "--fs-body-s",
      "--fs-caption",
      "--fs-display-l",
      "--fs-display-m",
      "--fs-display-xl",
      "--fs-eyebrow",
      "--fs-h1",
      "--fs-h2",
      "--fs-h3",
      "--fs-h4",
      "--fw-black",
      "--fw-bold",
      "--fw-medium",
      "--fw-regular",
      "--fw-semibold",
      "--grey-100",
      "--grey-200",
      "--grey-300",
      "--grey-400",
      "--grey-50",
      "--grey-500",
      "--grey-600",
      "--grey-700",
      "--grey-800",
      "--grey-900",
      "--impady-navy",
      "--impady-orange",
      "--impady-white",
      "--lh-normal",
      "--lh-relaxed",
      "--lh-snug",
      "--lh-tight",
      "--ls-body",
      "--ls-display",
      "--ls-eyebrow",
      "--ls-heading",
      "--ls-label",
      "--navy-100",
      "--navy-200",
      "--navy-300",
      "--navy-400",
      "--navy-50",
      "--navy-500",
      "--navy-600",
      "--navy-700",
      "--navy-800",
      "--navy-900",
      "--navy-950",
      "--orange-100",
      "--orange-200",
      "--orange-300",
      "--orange-400",
      "--orange-50",
      "--orange-500",
      "--orange-600",
      "--orange-700",
      "--orange-800",
      "--orange-900",
      "--radius-lg",
      "--radius-md",
      "--radius-none",
      "--radius-pill",
      "--radius-sm",
      "--radius-xl",
      "--radius-xs",
      "--shadow-brand",
      "--shadow-lg",
      "--shadow-md",
      "--shadow-sm",
      "--shadow-xl",
      "--shadow-xs",
      "--space-0",
      "--space-1",
      "--space-10",
      "--space-12",
      "--space-16",
      "--space-2",
      "--space-20",
      "--space-24",
      "--space-3",
      "--space-32",
      "--space-4",
      "--space-5",
      "--space-6",
      "--space-8",
      "--status-danger",
      "--status-danger-soft",
      "--status-info",
      "--status-info-soft",
      "--status-success",
      "--status-success-soft",
      "--status-warning",
      "--status-warning-soft",
      "--surface-brand",
      "--surface-card",
      "--surface-inverse",
      "--surface-inverse-2",
      "--surface-page",
      "--surface-raised",
      "--surface-subtle",
      "--text-accent",
      "--text-link",
      "--text-muted",
      "--text-on-brand",
      "--text-on-dark",
      "--text-on-dark-2",
      "--text-primary",
      "--text-secondary"
    ],
    "tokenKinds": {
      "--impady-orange": "color",
      "--impady-navy": "color",
      "--impady-white": "color",
      "--orange-50": "color",
      "--orange-100": "color",
      "--orange-200": "color",
      "--orange-300": "color",
      "--orange-400": "color",
      "--orange-500": "color",
      "--orange-600": "color",
      "--orange-700": "color",
      "--orange-800": "color",
      "--orange-900": "color",
      "--navy-50": "color",
      "--navy-100": "color",
      "--navy-200": "color",
      "--navy-300": "color",
      "--navy-400": "color",
      "--navy-500": "color",
      "--navy-600": "color",
      "--navy-700": "color",
      "--navy-800": "color",
      "--navy-900": "color",
      "--navy-950": "color",
      "--grey-50": "color",
      "--grey-100": "color",
      "--grey-200": "color",
      "--grey-300": "color",
      "--grey-400": "color",
      "--grey-500": "color",
      "--grey-600": "color",
      "--grey-700": "color",
      "--grey-800": "color",
      "--grey-900": "color",
      "--status-success": "color",
      "--status-success-soft": "color",
      "--status-warning": "color",
      "--status-warning-soft": "color",
      "--status-danger": "color",
      "--status-danger-soft": "color",
      "--status-info": "color",
      "--status-info-soft": "color",
      "--surface-page": "color",
      "--surface-subtle": "color",
      "--surface-card": "color",
      "--surface-raised": "color",
      "--surface-inverse": "color",
      "--surface-inverse-2": "color",
      "--surface-brand": "color",
      "--text-primary": "font",
      "--text-secondary": "font",
      "--text-muted": "font",
      "--text-on-brand": "font",
      "--text-on-dark": "font",
      "--text-on-dark-2": "font",
      "--text-accent": "font",
      "--text-link": "font",
      "--border-subtle": "color",
      "--border-default": "color",
      "--border-strong": "color",
      "--border-brand": "color",
      "--border-on-dark": "color",
      "--action-primary-bg": "color",
      "--action-primary-bg-hover": "color",
      "--action-primary-bg-press": "color",
      "--action-primary-fg": "color",
      "--action-secondary-bg": "color",
      "--action-secondary-bg-hover": "color",
      "--action-secondary-bg-press": "color",
      "--action-secondary-fg": "color",
      "--accent-bar": "color",
      "--focus-ring": "color",
      "--font-display": "font",
      "--font-body": "font",
      "--font-mono": "font",
      "--fw-regular": "font",
      "--fw-medium": "font",
      "--fw-semibold": "font",
      "--fw-bold": "font",
      "--fw-black": "font",
      "--fs-display-xl": "spacing",
      "--fs-display-l": "spacing",
      "--fs-display-m": "spacing",
      "--fs-h1": "spacing",
      "--fs-h2": "spacing",
      "--fs-h3": "spacing",
      "--fs-h4": "spacing",
      "--fs-body-l": "spacing",
      "--fs-body": "spacing",
      "--fs-body-s": "spacing",
      "--fs-caption": "spacing",
      "--fs-eyebrow": "spacing",
      "--lh-tight": "font",
      "--lh-snug": "font",
      "--lh-normal": "font",
      "--lh-relaxed": "font",
      "--ls-display": "font",
      "--ls-heading": "font",
      "--ls-body": "font",
      "--ls-eyebrow": "font",
      "--ls-label": "font",
      "--space-0": "spacing",
      "--space-1": "spacing",
      "--space-2": "spacing",
      "--space-3": "spacing",
      "--space-4": "spacing",
      "--space-5": "spacing",
      "--space-6": "spacing",
      "--space-8": "spacing",
      "--space-10": "spacing",
      "--space-12": "spacing",
      "--space-16": "spacing",
      "--space-20": "spacing",
      "--space-24": "spacing",
      "--space-32": "spacing",
      "--radius-none": "radius",
      "--radius-xs": "radius",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-xl": "radius",
      "--radius-pill": "radius",
      "--bw-hairline": "spacing",
      "--bw-thin": "spacing",
      "--bw-thick": "spacing",
      "--accent-bar-w": "spacing",
      "--shadow-xs": "shadow",
      "--shadow-sm": "shadow",
      "--shadow-md": "shadow",
      "--shadow-lg": "shadow",
      "--shadow-xl": "shadow",
      "--shadow-brand": "shadow",
      "--ease-standard": "other",
      "--ease-out": "other",
      "--dur-fast": "other",
      "--dur-base": "other",
      "--dur-slow": "other",
      "--container-max": "spacing",
      "--container-narrow": "spacing"
    },
    "fontFamilies": [
      "Archivo",
      "Hanken Grotesk",
      "IBM Plex Mono"
    ]
  }
}