{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/content/**",
              "components/core/**",
              "components/feedback/**",
              "components/forms/**",
              "components/navigation/**",
              "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*(?!['\\\"]?(?:Newsreader|Mulish))/i]",
        "message": "Font not provided by the design system. Available: Newsreader, Mulish."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute > JSXIdentifier[name!=/^(?:tone|children|key|ref|className|style|children)$/]",
        "message": "<Badge> doesn't accept that prop. Declared props: tone, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:neutral|sea|sage|brass|critical)$/]",
        "message": "<Badge> tone must be one of 'neutral' | 'sea' | 'sage' | 'brass' | 'critical'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|size|href|disabled|fullWidth|iconLeft|iconRight|onClick|type|children|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: variant, size, href, disabled, fullWidth, iconLeft, iconRight, onClick, type, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:primary|secondary|ghost|onDark)$/]",
        "message": "<Button> variant must be one of 'primary' | 'secondary' | 'ghost' | 'onDark'."
      },
      {
        "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!=/^(?:tone|interactive|padding|accent|href|children|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: tone, interactive, padding, accent, href, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:card|raised|tint|sage|deep)$/]",
        "message": "<Card> tone must be one of 'card' | 'raised' | 'tint' | 'sage' | 'deep'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Checkbox'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|defaultChecked|label|disabled|onChange|key|ref|className|style|children)$/]",
        "message": "<Checkbox> doesn't accept that prop. Declared props: checked, defaultChecked, label, disabled, onChange."
      },
      {
        "selector": "JSXOpeningElement[name.name='Dialog'] > JSXAttribute > JSXIdentifier[name!=/^(?:open|title|description|footer|onClose|width|children|key|ref|className|style|children)$/]",
        "message": "<Dialog> doesn't accept that prop. Declared props: open, title, description, footer, onClose, width, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Field'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|hint|error|required|htmlFor|children|key|ref|className|style|children)$/]",
        "message": "<Field> doesn't accept that prop. Declared props: label, hint, error, required, htmlFor, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='IconButton'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|variant|size|disabled|onClick|children|key|ref|className|style|children)$/]",
        "message": "<IconButton> doesn't accept that prop. Declared props: label, variant, size, disabled, onClick, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='IconButton'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:quiet|outline|onDark)$/]",
        "message": "<IconButton> variant must be one of 'quiet' | 'outline' | 'onDark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='IconButton'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg)$/]",
        "message": "<IconButton> size must be one of 'sm' | 'md' | 'lg'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:type|value|defaultValue|placeholder|disabled|error|onChange|id|key|ref|className|style|children)$/]",
        "message": "<Input> doesn't accept that prop. Declared props: type, value, defaultValue, placeholder, disabled, error, onChange, id."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute[name.name='type'] > Literal[value!=/^(?:text|email|tel|search|password)$/]",
        "message": "<Input> type must be one of 'text' | 'email' | 'tel' | 'search' | 'password'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Quote'] > JSXAttribute > JSXIdentifier[name!=/^(?:quote|author|role|tone|key|ref|className|style|children)$/]",
        "message": "<Quote> doesn't accept that prop. Declared props: quote, author, role, tone."
      },
      {
        "selector": "JSXOpeningElement[name.name='Quote'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:light|dark)$/]",
        "message": "<Quote> tone must be one of 'light' | 'dark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Radio'] > JSXAttribute > JSXIdentifier[name!=/^(?:name|value|checked|defaultChecked|label|disabled|onChange|key|ref|className|style|children)$/]",
        "message": "<Radio> doesn't accept that prop. Declared props: name, value, checked, defaultChecked, label, disabled, onChange."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionHeading'] > JSXAttribute > JSXIdentifier[name!=/^(?:eyebrow|title|lead|align|tone|level|key|ref|className|style|children)$/]",
        "message": "<SectionHeading> doesn't accept that prop. Declared props: eyebrow, title, lead, align, tone, level."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionHeading'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center)$/]",
        "message": "<SectionHeading> align must be one of 'left' | 'center'."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionHeading'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:light|dark)$/]",
        "message": "<SectionHeading> tone must be one of 'light' | 'dark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionHeading'] > JSXAttribute[name.name='level'] > Literal[value!=/^(?:h1|h2)$/]",
        "message": "<SectionHeading> level must be one of 'h1' | 'h2'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Select'] > JSXAttribute > JSXIdentifier[name!=/^(?:options|value|defaultValue|placeholder|disabled|error|onChange|id|key|ref|className|style|children)$/]",
        "message": "<Select> doesn't accept that prop. Declared props: options, value, defaultValue, placeholder, disabled, error, onChange, id."
      },
      {
        "selector": "JSXOpeningElement[name.name='Stat'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|tone|key|ref|className|style|children)$/]",
        "message": "<Stat> doesn't accept that prop. Declared props: value, label, tone."
      },
      {
        "selector": "JSXOpeningElement[name.name='Stat'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:light|dark)$/]",
        "message": "<Stat> tone must be one of 'light' | 'dark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Switch'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|label|disabled|onChange|key|ref|className|style|children)$/]",
        "message": "<Switch> doesn't accept that prop. Declared props: checked, label, disabled, onChange."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tabs'] > JSXAttribute > JSXIdentifier[name!=/^(?:items|value|onChange|tone|key|ref|className|style|children)$/]",
        "message": "<Tabs> doesn't accept that prop. Declared props: items, value, onChange, tone."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tabs'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:light|dark)$/]",
        "message": "<Tabs> tone must be one of 'light' | 'dark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute > JSXIdentifier[name!=/^(?:selected|tone|onClick|onRemove|children|key|ref|className|style|children)$/]",
        "message": "<Tag> doesn't accept that prop. Declared props: selected, tone, onClick, onRemove, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:light|dark)$/]",
        "message": "<Tag> tone must be one of 'light' | 'dark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Textarea'] > JSXAttribute > JSXIdentifier[name!=/^(?:rows|value|defaultValue|placeholder|disabled|error|onChange|id|key|ref|className|style|children)$/]",
        "message": "<Textarea> doesn't accept that prop. Declared props: rows, value, defaultValue, placeholder, disabled, error, onChange, id."
      },
      {
        "selector": "JSXOpeningElement[name.name='Toast'] > JSXAttribute > JSXIdentifier[name!=/^(?:tone|message|action|onDismiss|key|ref|className|style|children)$/]",
        "message": "<Toast> doesn't accept that prop. Declared props: tone, message, action, onDismiss."
      },
      {
        "selector": "JSXOpeningElement[name.name='Toast'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:neutral|positive|caution|critical)$/]",
        "message": "<Toast> tone must be one of 'neutral' | 'positive' | 'caution' | 'critical'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tooltip'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|placement|children|key|ref|className|style|children)$/]",
        "message": "<Tooltip> doesn't accept that prop. Declared props: label, placement, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tooltip'] > JSXAttribute[name.name='placement'] > Literal[value!=/^(?:top|bottom)$/]",
        "message": "<Tooltip> placement must be one of 'top' | 'bottom'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Wordmark'] > JSXAttribute > JSXIdentifier[name!=/^(?:size|tone|tagline|key|ref|className|style|children)$/]",
        "message": "<Wordmark> doesn't accept that prop. Declared props: size, tone, tagline."
      },
      {
        "selector": "JSXOpeningElement[name.name='Wordmark'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:dark|light)$/]",
        "message": "<Wordmark> tone must be one of 'dark' | 'light'."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "Badge": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "Checkbox": {
        "replaces": []
      },
      "Dialog": {
        "replaces": []
      },
      "Field": {
        "replaces": []
      },
      "IconButton": {
        "replaces": []
      },
      "Input": {
        "replaces": []
      },
      "Quote": {
        "replaces": []
      },
      "Radio": {
        "replaces": []
      },
      "SectionHeading": {
        "replaces": []
      },
      "Select": {
        "replaces": []
      },
      "Stat": {
        "replaces": []
      },
      "Switch": {
        "replaces": []
      },
      "Tabs": {
        "replaces": []
      },
      "Tag": {
        "replaces": []
      },
      "Textarea": {
        "replaces": []
      },
      "Toast": {
        "replaces": []
      },
      "Tooltip": {
        "replaces": []
      },
      "Wordmark": {
        "replaces": []
      }
    },
    "tokens": [
      "--accent-line",
      "--accent-wash",
      "--action-primary",
      "--action-primary-hover",
      "--action-primary-press",
      "--action-primary-text",
      "--action-secondary-border",
      "--action-secondary-hover",
      "--blur-veil",
      "--border-focus",
      "--border-hairline",
      "--border-on-dark",
      "--border-strong",
      "--border-width",
      "--border-width-accent",
      "--brass-100",
      "--brass-200",
      "--brass-300",
      "--brass-400",
      "--brass-500",
      "--brass-600",
      "--caution",
      "--caution-soft",
      "--container",
      "--container-narrow",
      "--critical",
      "--critical-soft",
      "--duration-base",
      "--duration-fast",
      "--duration-instant",
      "--duration-slow",
      "--ease-calm",
      "--ease-in-out",
      "--ease-out",
      "--focus-ring",
      "--font-body",
      "--font-display",
      "--font-sans",
      "--grey-100",
      "--grey-200",
      "--grey-300",
      "--grey-400",
      "--grey-50",
      "--grey-500",
      "--grey-600",
      "--grey-700",
      "--gutter",
      "--informative",
      "--informative-soft",
      "--leading-loose",
      "--leading-normal",
      "--leading-relaxed",
      "--leading-snug",
      "--leading-tight",
      "--measure",
      "--measure-narrow",
      "--measure-wide",
      "--positive",
      "--positive-soft",
      "--radius-card",
      "--radius-control",
      "--radius-lg",
      "--radius-md",
      "--radius-media",
      "--radius-none",
      "--radius-pill",
      "--radius-sm",
      "--radius-xl",
      "--radius-xs",
      "--sage-100",
      "--sage-200",
      "--sage-300",
      "--sage-400",
      "--sage-500",
      "--sage-600",
      "--sand-100",
      "--sand-200",
      "--sand-300",
      "--sand-400",
      "--sand-50",
      "--sand-500",
      "--scrim-deep",
      "--sea-100",
      "--sea-200",
      "--sea-300",
      "--sea-400",
      "--sea-500",
      "--sea-600",
      "--sea-700",
      "--sea-800",
      "--sea-900",
      "--section-y",
      "--section-y-lg",
      "--shadow-focus",
      "--shadow-inset-hairline",
      "--shadow-lg",
      "--shadow-md",
      "--shadow-none",
      "--shadow-sm",
      "--shadow-xs",
      "--space-0",
      "--space-1",
      "--space-10",
      "--space-11",
      "--space-2",
      "--space-3",
      "--space-4",
      "--space-5",
      "--space-6",
      "--space-7",
      "--space-8",
      "--space-9",
      "--surface-card",
      "--surface-deep",
      "--surface-deep-alt",
      "--surface-page",
      "--surface-raised",
      "--surface-sage",
      "--surface-sunken",
      "--surface-tint",
      "--text-2xl",
      "--text-2xs",
      "--text-3xl",
      "--text-4xl",
      "--text-5xl",
      "--text-6xl",
      "--text-accent",
      "--text-body",
      "--text-lg",
      "--text-md",
      "--text-muted",
      "--text-on-dark",
      "--text-on-dark-muted",
      "--text-sm",
      "--text-strong",
      "--text-subtle",
      "--text-xl",
      "--text-xs",
      "--tracking-eyebrow",
      "--tracking-normal",
      "--tracking-tight",
      "--tracking-wide",
      "--transition-control",
      "--transition-surface",
      "--type-body",
      "--type-body-sm",
      "--type-display",
      "--type-eyebrow",
      "--type-h1",
      "--type-h2",
      "--type-h3",
      "--type-label",
      "--type-lead",
      "--type-quote",
      "--wash-deep",
      "--wash-horizon",
      "--weight-bold",
      "--weight-light",
      "--weight-medium",
      "--weight-regular",
      "--weight-semibold"
    ],
    "tokenKinds": {
      "--font-display": "font",
      "--font-sans": "font",
      "--font-body": "font",
      "--sea-900": "color",
      "--sea-800": "color",
      "--sea-700": "color",
      "--sea-600": "color",
      "--sea-500": "color",
      "--sea-400": "color",
      "--sea-300": "color",
      "--sea-200": "color",
      "--sea-100": "color",
      "--sand-50": "color",
      "--sand-100": "color",
      "--sand-200": "color",
      "--sand-300": "color",
      "--sand-400": "color",
      "--sand-500": "color",
      "--brass-100": "color",
      "--brass-200": "color",
      "--brass-300": "color",
      "--brass-400": "color",
      "--brass-500": "color",
      "--brass-600": "color",
      "--sage-100": "color",
      "--sage-200": "color",
      "--sage-300": "color",
      "--sage-400": "color",
      "--sage-500": "color",
      "--sage-600": "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",
      "--positive": "color",
      "--positive-soft": "color",
      "--caution": "color",
      "--caution-soft": "color",
      "--critical": "color",
      "--critical-soft": "color",
      "--informative": "color",
      "--informative-soft": "color",
      "--text-strong": "font",
      "--text-body": "font",
      "--text-muted": "font",
      "--text-subtle": "font",
      "--text-on-dark": "font",
      "--text-on-dark-muted": "font",
      "--text-accent": "font",
      "--surface-page": "color",
      "--surface-card": "color",
      "--surface-raised": "color",
      "--surface-sunken": "color",
      "--surface-deep": "color",
      "--surface-deep-alt": "color",
      "--surface-tint": "color",
      "--surface-sage": "color",
      "--border-hairline": "color",
      "--border-strong": "color",
      "--border-on-dark": "color",
      "--border-focus": "color",
      "--action-primary": "color",
      "--action-primary-hover": "color",
      "--action-primary-press": "color",
      "--action-primary-text": "font",
      "--action-secondary-border": "color",
      "--action-secondary-hover": "color",
      "--accent-line": "color",
      "--accent-wash": "color",
      "--focus-ring": "color",
      "--wash-horizon": "color",
      "--wash-deep": "color",
      "--text-2xs": "font",
      "--text-xs": "font",
      "--text-sm": "font",
      "--text-md": "font",
      "--text-lg": "font",
      "--text-xl": "font",
      "--text-2xl": "font",
      "--text-3xl": "font",
      "--text-4xl": "font",
      "--text-5xl": "font",
      "--text-6xl": "font",
      "--leading-tight": "font",
      "--leading-snug": "font",
      "--leading-normal": "font",
      "--leading-relaxed": "font",
      "--leading-loose": "font",
      "--weight-light": "font",
      "--weight-regular": "font",
      "--weight-medium": "font",
      "--weight-semibold": "font",
      "--weight-bold": "font",
      "--tracking-tight": "font",
      "--tracking-normal": "font",
      "--tracking-wide": "font",
      "--tracking-eyebrow": "font",
      "--type-display": "font",
      "--type-h1": "font",
      "--type-h2": "font",
      "--type-h3": "font",
      "--type-lead": "font",
      "--type-body": "font",
      "--type-body-sm": "font",
      "--type-label": "font",
      "--type-eyebrow": "font",
      "--type-quote": "font",
      "--space-0": "spacing",
      "--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",
      "--gutter": "color",
      "--section-y": "color",
      "--section-y-lg": "color",
      "--measure-narrow": "spacing",
      "--measure": "spacing",
      "--measure-wide": "spacing",
      "--container": "spacing",
      "--container-narrow": "spacing",
      "--radius-none": "radius",
      "--radius-xs": "radius",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-xl": "radius",
      "--radius-pill": "radius",
      "--radius-card": "radius",
      "--radius-control": "radius",
      "--radius-media": "radius",
      "--border-width": "spacing",
      "--border-width-accent": "spacing",
      "--shadow-none": "shadow",
      "--shadow-xs": "shadow",
      "--shadow-sm": "shadow",
      "--shadow-md": "shadow",
      "--shadow-lg": "shadow",
      "--shadow-inset-hairline": "shadow",
      "--shadow-focus": "shadow",
      "--scrim-deep": "color",
      "--blur-veil": "other",
      "--duration-instant": "other",
      "--duration-fast": "other",
      "--duration-base": "other",
      "--duration-slow": "other",
      "--ease-calm": "other",
      "--ease-out": "other",
      "--ease-in-out": "other",
      "--transition-control": "color",
      "--transition-surface": "color"
    },
    "fontFamilies": [
      "Mulish",
      "Newsreader"
    ]
  }
}