{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/brand/**",
              "components/core/**",
              "components/display/**",
              "components/forms/**",
              "components/navigation/**",
              "ui_kits/chat/**",
              "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))/i]",
        "message": "Font not provided by the design system. Available: Newsreader."
      },
      {
        "selector": "JSXOpeningElement[name.name='Avatar'] > JSXAttribute > JSXIdentifier[name!=/^(?:initials|color|size|square|key|ref|className|style|children)$/]",
        "message": "<Avatar> doesn't accept that prop. Declared props: initials, color, size, square."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute > JSXIdentifier[name!=/^(?:tone|dot|key|ref|className|style|children)$/]",
        "message": "<Badge> doesn't accept that prop. Declared props: tone, dot."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:neutral|accent|success|warning|danger|info)$/]",
        "message": "<Badge> tone must be one of 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|size|icon|iconRight|block|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: variant, size, icon, iconRight, block."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:primary|secondary|ghost|danger)$/]",
        "message": "<Button> variant must be one of 'primary' | 'secondary' | 'ghost' | 'danger'."
      },
      {
        "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!=/^(?:interactive|pad|as|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: interactive, pad, as."
      },
      {
        "selector": "JSXOpeningElement[name.name='Chip'] > JSXAttribute > JSXIdentifier[name!=/^(?:selected|icon|count|key|ref|className|style|children)$/]",
        "message": "<Chip> doesn't accept that prop. Declared props: selected, icon, count."
      },
      {
        "selector": "JSXOpeningElement[name.name='Icon'] > JSXAttribute > JSXIdentifier[name!=/^(?:name|size|stroke|key|ref|className|style|children)$/]",
        "message": "<Icon> doesn't accept that prop. Declared props: name, size, stroke."
      },
      {
        "selector": "JSXOpeningElement[name.name='IconButton'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|size|label|key|ref|className|style|children)$/]",
        "message": "<IconButton> doesn't accept that prop. Declared props: icon, size, label."
      },
      {
        "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!=/^(?:icon|kbd|as|size|key|ref|className|style|children)$/]",
        "message": "<Input> doesn't accept that prop. Declared props: icon, kbd, as, size."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute[name.name='as'] > Literal[value!=/^(?:input|textarea)$/]",
        "message": "<Input> as must be one of 'input' | 'textarea'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md)$/]",
        "message": "<Input> size must be one of 'sm' | 'md'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Logo'] > JSXAttribute > JSXIdentifier[name!=/^(?:size|track|className|key|ref|className|style|children)$/]",
        "message": "<Logo> doesn't accept that prop. Declared props: size, track, className."
      },
      {
        "selector": "JSXOpeningElement[name.name='ProductChip'] > JSXAttribute > JSXIdentifier[name!=/^(?:product|color|icon|size|radius|key|ref|className|style|children)$/]",
        "message": "<ProductChip> doesn't accept that prop. Declared props: product, color, icon, size, radius."
      },
      {
        "selector": "JSXOpeningElement[name.name='ProductChip'] > JSXAttribute[name.name='product'] > Literal[value!=/^(?:chat|pilot|team)$/]",
        "message": "<ProductChip> product must be one of 'chat' | 'pilot' | 'team'."
      },
      {
        "selector": "JSXOpeningElement[name.name='ProgressBar'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|tone|height|key|ref|className|style|children)$/]",
        "message": "<ProgressBar> doesn't accept that prop. Declared props: value, tone, height."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatusBadge'] > JSXAttribute > JSXIdentifier[name!=/^(?:status|label|key|ref|className|style|children)$/]",
        "message": "<StatusBadge> doesn't accept that prop. Declared props: status, label."
      },
      {
        "selector": "JSXOpeningElement[name.name='StatusBadge'] > JSXAttribute[name.name='status'] > Literal[value!=/^(?:active|design|hold|done)$/]",
        "message": "<StatusBadge> status must be one of 'active' | 'design' | 'hold' | 'done'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Switch'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|onChange|label|disabled|key|ref|className|style|children)$/]",
        "message": "<Switch> doesn't accept that prop. Declared props: checked, onChange, label, disabled."
      },
      {
        "selector": "JSXOpeningElement[name.name='TabItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:id|label|count|key|ref|className|style|children)$/]",
        "message": "<TabItem> doesn't accept that prop. Declared props: id, label, count."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tooltip'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|side|className|children|key|ref|className|style|children)$/]",
        "message": "<Tooltip> doesn't accept that prop. Declared props: label, side, className, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tooltip'] > JSXAttribute[name.name='side'] > Literal[value!=/^(?:top|right|bottom|left)$/]",
        "message": "<Tooltip> side must be one of 'top' | 'right' | 'bottom' | 'left'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Wordmark'] > JSXAttribute > JSXIdentifier[name!=/^(?:size|label|track|className|key|ref|className|style|children)$/]",
        "message": "<Wordmark> doesn't accept that prop. Declared props: size, label, track, className."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "Avatar": {
        "replaces": []
      },
      "Badge": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "Chip": {
        "replaces": []
      },
      "Icon": {
        "replaces": []
      },
      "IconButton": {
        "replaces": []
      },
      "Input": {
        "replaces": []
      },
      "Kbd": {
        "replaces": []
      },
      "Logo": {
        "replaces": []
      },
      "ProductChip": {
        "replaces": []
      },
      "ProgressBar": {
        "replaces": []
      },
      "StatusBadge": {
        "replaces": []
      },
      "Switch": {
        "replaces": []
      },
      "TabItem": {
        "replaces": []
      },
      "Tooltip": {
        "replaces": []
      },
      "Wordmark": {
        "replaces": []
      }
    },
    "tokens": [
      "--accent",
      "--accent-chat",
      "--accent-foreground",
      "--accent-pilot",
      "--accent-pilot-fg",
      "--accent-pilot-tint",
      "--accent-team",
      "--accent-team-fg",
      "--accent-team-tint",
      "--background",
      "--border",
      "--border-strong",
      "--border-width",
      "--brand-logo-bg",
      "--brand-logo-eye",
      "--card",
      "--card-foreground",
      "--chip-chat",
      "--chip-pilot",
      "--chip-team",
      "--danger",
      "--danger-tint",
      "--destructive",
      "--display-lg",
      "--display-md",
      "--display-sm",
      "--dur-base",
      "--dur-fast",
      "--dur-slow",
      "--ease-out",
      "--ease-spring",
      "--font-mono",
      "--font-sans",
      "--font-serif",
      "--foreground",
      "--info",
      "--info-tint",
      "--ink",
      "--input",
      "--leading-body",
      "--leading-normal",
      "--leading-relaxed",
      "--leading-snug",
      "--leading-tight",
      "--muted",
      "--muted-foreground",
      "--oat-100",
      "--oat-150",
      "--oat-200",
      "--oat-300",
      "--oat-400",
      "--oat-50",
      "--oat-500",
      "--oat-600",
      "--oat-700",
      "--oat-900",
      "--paper",
      "--popover",
      "--popover-foreground",
      "--primary",
      "--primary-foreground",
      "--primary-hover",
      "--radius",
      "--radius-2xl",
      "--radius-3xl",
      "--radius-lg",
      "--radius-md",
      "--radius-pill",
      "--radius-sm",
      "--radius-xl",
      "--radius-xs",
      "--ring",
      "--secondary",
      "--secondary-foreground",
      "--shadow-card",
      "--shadow-focus",
      "--shadow-menu",
      "--shadow-modal",
      "--shadow-panel",
      "--shadow-sm",
      "--shadow-xs",
      "--sidebar",
      "--sidebar-accent-tint",
      "--sidebar-border",
      "--sidebar-foreground",
      "--sidebar-item-active",
      "--sidebar-item-hover",
      "--sidebar-muted",
      "--space-0",
      "--space-1",
      "--space-10",
      "--space-12",
      "--space-16",
      "--space-2",
      "--space-20",
      "--space-3",
      "--space-4",
      "--space-5",
      "--space-6",
      "--space-7",
      "--space-8",
      "--success",
      "--success-tint",
      "--terracotta-400",
      "--terracotta-500",
      "--terracotta-600",
      "--terracotta-700",
      "--terracotta-tint",
      "--text-2xs",
      "--text-base",
      "--text-body",
      "--text-caption",
      "--text-label",
      "--text-lg",
      "--text-md",
      "--text-sm",
      "--text-xl",
      "--text-xs",
      "--tracking-label",
      "--tracking-tight",
      "--unread",
      "--warning",
      "--warning-tint",
      "--weight-bold",
      "--weight-medium",
      "--weight-normal",
      "--weight-semibold",
      "--white"
    ],
    "tokenKinds": {
      "--paper": "color",
      "--ink": "color",
      "--white": "color",
      "--oat-50": "color",
      "--oat-100": "color",
      "--oat-150": "color",
      "--oat-200": "color",
      "--oat-300": "color",
      "--oat-400": "color",
      "--oat-500": "color",
      "--oat-600": "color",
      "--oat-700": "color",
      "--oat-900": "color",
      "--terracotta-400": "color",
      "--terracotta-500": "color",
      "--terracotta-600": "color",
      "--terracotta-700": "color",
      "--terracotta-tint": "color",
      "--accent-chat": "color",
      "--accent-pilot": "color",
      "--accent-pilot-fg": "color",
      "--accent-pilot-tint": "color",
      "--accent-team": "color",
      "--accent-team-fg": "color",
      "--accent-team-tint": "color",
      "--chip-chat": "color",
      "--chip-pilot": "color",
      "--chip-team": "color",
      "--success": "color",
      "--success-tint": "color",
      "--warning": "color",
      "--warning-tint": "color",
      "--danger": "color",
      "--danger-tint": "color",
      "--info": "color",
      "--info-tint": "color",
      "--unread": "color",
      "--brand-logo-bg": "color",
      "--brand-logo-eye": "color",
      "--radius": "radius",
      "--background": "color",
      "--foreground": "color",
      "--card": "color",
      "--card-foreground": "color",
      "--popover": "color",
      "--popover-foreground": "color",
      "--primary": "color",
      "--primary-hover": "color",
      "--primary-foreground": "color",
      "--secondary": "color",
      "--secondary-foreground": "color",
      "--muted": "color",
      "--muted-foreground": "color",
      "--accent": "color",
      "--accent-foreground": "color",
      "--destructive": "color",
      "--border": "color",
      "--border-strong": "color",
      "--input": "color",
      "--ring": "color",
      "--sidebar": "color",
      "--sidebar-foreground": "color",
      "--sidebar-muted": "color",
      "--sidebar-border": "color",
      "--sidebar-item-hover": "color",
      "--sidebar-item-active": "color",
      "--sidebar-accent-tint": "color",
      "--font-sans": "font",
      "--font-serif": "font",
      "--font-mono": "font",
      "--text-2xs": "font",
      "--text-xs": "font",
      "--text-sm": "font",
      "--text-base": "font",
      "--text-md": "font",
      "--text-lg": "font",
      "--text-xl": "font",
      "--display-sm": "spacing",
      "--display-md": "spacing",
      "--display-lg": "spacing",
      "--weight-normal": "font",
      "--weight-medium": "font",
      "--weight-semibold": "font",
      "--weight-bold": "font",
      "--leading-tight": "font",
      "--leading-snug": "font",
      "--leading-normal": "font",
      "--leading-relaxed": "font",
      "--tracking-label": "font",
      "--tracking-tight": "font",
      "--text-body": "font",
      "--text-label": "font",
      "--text-caption": "font",
      "--leading-body": "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-10": "spacing",
      "--space-12": "spacing",
      "--space-16": "spacing",
      "--space-20": "spacing",
      "--radius-xs": "radius",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-xl": "radius",
      "--radius-2xl": "radius",
      "--radius-3xl": "radius",
      "--radius-pill": "radius",
      "--shadow-xs": "shadow",
      "--shadow-sm": "shadow",
      "--shadow-card": "shadow",
      "--shadow-panel": "shadow",
      "--shadow-menu": "shadow",
      "--shadow-modal": "shadow",
      "--shadow-focus": "shadow",
      "--border-width": "spacing",
      "--ease-out": "other",
      "--ease-spring": "other",
      "--dur-fast": "other",
      "--dur-base": "other",
      "--dur-slow": "other"
    },
    "fontFamilies": [
      "Newsreader"
    ]
  }
}