{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/buttons/**",
              "components/cards/**",
              "components/forms/**",
              "components/navigation/**",
              "components/signature/**",
              "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*(?!['\\\"]?(?:Manrope))/i]",
        "message": "Font not provided by the design system. Available: Manrope."
      },
      {
        "selector": "JSXOpeningElement[name.name='ArticleTile'] > JSXAttribute > JSXIdentifier[name!=/^(?:image|date|title|href|style|key|ref|className|style|children)$/]",
        "message": "<ArticleTile> doesn't accept that prop. Declared props: image, date, title, href, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|children|key|ref|className|style|children)$/]",
        "message": "<Badge> doesn't accept that prop. Declared props: variant, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|size|disabled|pressed|href|children|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: variant, size, disabled, pressed, href, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute > JSXIdentifier[name!=/^(?:elevation|padding|surface|radius|children|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: elevation, padding, surface, radius, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='CategoryIconCard'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|label|href|style|key|ref|className|style|children)$/]",
        "message": "<CategoryIconCard> doesn't accept that prop. Declared props: icon, label, href, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='CategoryTab'] > JSXAttribute > JSXIdentifier[name!=/^(?:active|children|key|ref|className|style|children)$/]",
        "message": "<CategoryTab> doesn't accept that prop. Declared props: active, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='ChevronDecoration'] > JSXAttribute > JSXIdentifier[name!=/^(?:side|width|height|color|style|key|ref|className|style|children)$/]",
        "message": "<ChevronDecoration> doesn't accept that prop. Declared props: side, width, height, color, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='ChevronDecoration'] > JSXAttribute[name.name='side'] > Literal[value!=/^(?:left|right)$/]",
        "message": "<ChevronDecoration> side must be one of 'left' | 'right'."
      },
      {
        "selector": "JSXOpeningElement[name.name='CustomerStoryCard'] > JSXAttribute > JSXIdentifier[name!=/^(?:image|quote|name|role|style|key|ref|className|style|children)$/]",
        "message": "<CustomerStoryCard> doesn't accept that prop. Declared props: image, quote, name, role, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='FaqRow'] > JSXAttribute > JSXIdentifier[name!=/^(?:question|answer|defaultOpen|style|key|ref|className|style|children)$/]",
        "message": "<FaqRow> doesn't accept that prop. Declared props: question, answer, defaultOpen, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='FooterColumn'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|links|key|ref|className|style|children)$/]",
        "message": "<FooterColumn> doesn't accept that prop. Declared props: title, links."
      },
      {
        "selector": "JSXOpeningElement[name.name='HelpBand'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|tabs|image|style|key|ref|className|style|children)$/]",
        "message": "<HelpBand> doesn't accept that prop. Declared props: title, tabs, image, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='HeroPromoCard'] > JSXAttribute > JSXIdentifier[name!=/^(?:image|eyebrow|headline|price|saleTag|primaryCta|secondaryCta|chevrons|style|key|ref|className|style|children)$/]",
        "message": "<HeroPromoCard> doesn't accept that prop. Declared props: image, eyebrow, headline, price, saleTag, primaryCta, secondaryCta, chevrons, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='NavItem'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|href|key|ref|className|style|children)$/]",
        "message": "<NavItem> doesn't accept that prop. Declared props: label, href."
      },
      {
        "selector": "JSXOpeningElement[name.name='NavLink'] > JSXAttribute > JSXIdentifier[name!=/^(?:active|children|key|ref|className|style|children)$/]",
        "message": "<NavLink> doesn't accept that prop. Declared props: active, children."
      },
      {
        "selector": "JSXOpeningElement[name.name='PricingTier'] > JSXAttribute > JSXIdentifier[name!=/^(?:name|price|cadence|note|features|cta|featured|onCta|style|key|ref|className|style|children)$/]",
        "message": "<PricingTier> doesn't accept that prop. Declared props: name, price, cadence, note, features, cta, featured, onCta, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='ProductCard'] > JSXAttribute > JSXIdentifier[name!=/^(?:image|title|badge|specs|price|priceNote|cta|ctaVariant|onCta|style|key|ref|className|style|children)$/]",
        "message": "<ProductCard> doesn't accept that prop. Declared props: image, title, badge, specs, price, priceNote, cta, ctaVariant, onCta, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='ProductCard'] > JSXAttribute[name.name='ctaVariant'] > Literal[value!=/^(?:primary|ink|outline|outline-ink)$/]",
        "message": "<ProductCard> ctaVariant must be one of 'primary' | 'ink' | 'outline' | 'outline-ink'."
      },
      {
        "selector": "JSXOpeningElement[name.name='PromoStrip'] > JSXAttribute > JSXIdentifier[name!=/^(?:eyebrow|title|body|align|children|style|key|ref|className|style|children)$/]",
        "message": "<PromoStrip> doesn't accept that prop. Declared props: eyebrow, title, body, align, children, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='PromoStrip'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center)$/]",
        "message": "<PromoStrip> align must be one of 'left' | 'center'."
      },
      {
        "selector": "JSXOpeningElement[name.name='TextInput'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|icon|key|ref|className|style|children)$/]",
        "message": "<TextInput> doesn't accept that prop. Declared props: variant, icon."
      },
      {
        "selector": "JSXOpeningElement[name.name='TextInput'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:default|search)$/]",
        "message": "<TextInput> variant must be one of 'default' | 'search'."
      },
      {
        "selector": "JSXOpeningElement[name.name='UtilityStrip'] > JSXAttribute > JSXIdentifier[name!=/^(?:left|right|style|key|ref|className|style|children)$/]",
        "message": "<UtilityStrip> doesn't accept that prop. Declared props: left, right, style."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "ArticleTile": {
        "replaces": []
      },
      "Badge": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "CategoryIconCard": {
        "replaces": []
      },
      "CategoryTab": {
        "replaces": []
      },
      "ChevronDecoration": {
        "replaces": []
      },
      "CustomerStoryCard": {
        "replaces": []
      },
      "FaqRow": {
        "replaces": []
      },
      "FooterColumn": {
        "replaces": []
      },
      "HelpBand": {
        "replaces": []
      },
      "HeroPromoCard": {
        "replaces": []
      },
      "NavItem": {
        "replaces": []
      },
      "NavLink": {
        "replaces": []
      },
      "PricingTier": {
        "replaces": []
      },
      "ProductCard": {
        "replaces": []
      },
      "PromoStrip": {
        "replaces": []
      },
      "TextInput": {
        "replaces": []
      },
      "UtilityStrip": {
        "replaces": []
      }
    },
    "tokens": [
      "--color-bloom-coral",
      "--color-bloom-deep",
      "--color-bloom-rose",
      "--color-bloom-wine",
      "--color-canvas",
      "--color-charcoal",
      "--color-cloud",
      "--color-error",
      "--color-error-strong",
      "--color-fog",
      "--color-graphite",
      "--color-hairline",
      "--color-ink",
      "--color-ink-deep",
      "--color-ink-soft",
      "--color-on-ink",
      "--color-on-primary",
      "--color-paper",
      "--color-primary",
      "--color-primary-bright",
      "--color-primary-deep",
      "--color-primary-soft",
      "--color-status-neutral",
      "--color-steel",
      "--color-storm-deep",
      "--color-storm-mist",
      "--color-storm-sea",
      "--container-max",
      "--font-sans",
      "--font-sans-stack",
      "--gutter",
      "--radius-lg",
      "--radius-md",
      "--radius-none",
      "--radius-pill",
      "--radius-sm",
      "--radius-xl",
      "--radius-xs",
      "--shadow-modal",
      "--shadow-soft-lift",
      "--space-lg",
      "--space-md",
      "--space-section",
      "--space-sm",
      "--space-xl",
      "--space-xs",
      "--space-xxl",
      "--space-xxs",
      "--text-default",
      "--type-body-emphasis",
      "--type-body-lg",
      "--type-body-md",
      "--type-button-md",
      "--type-button-md-tracking",
      "--type-button-sm",
      "--type-button-sm-tracking",
      "--type-caption-bold",
      "--type-caption-md",
      "--type-caption-sm",
      "--type-display-lg",
      "--type-display-md",
      "--type-display-sm",
      "--type-display-xl",
      "--type-display-xs",
      "--type-display-xxl",
      "--type-link-md",
      "--type-price-md",
      "--weight-bold",
      "--weight-medium",
      "--weight-regular",
      "--weight-semibold"
    ],
    "tokenKinds": {
      "--font-sans": "font",
      "--weight-regular": "font",
      "--weight-medium": "font",
      "--weight-semibold": "font",
      "--weight-bold": "font",
      "--color-primary": "color",
      "--color-primary-bright": "color",
      "--color-primary-deep": "color",
      "--color-primary-soft": "color",
      "--color-on-primary": "color",
      "--color-canvas": "color",
      "--color-paper": "color",
      "--color-cloud": "color",
      "--color-fog": "color",
      "--color-steel": "color",
      "--color-hairline": "color",
      "--color-bloom-coral": "color",
      "--color-bloom-rose": "color",
      "--color-storm-mist": "color",
      "--color-storm-sea": "color",
      "--color-storm-deep": "color",
      "--color-ink": "color",
      "--color-ink-deep": "color",
      "--color-ink-soft": "color",
      "--color-on-ink": "color",
      "--color-charcoal": "color",
      "--color-graphite": "color",
      "--color-error": "color",
      "--color-error-strong": "color",
      "--color-bloom-deep": "color",
      "--color-bloom-wine": "color",
      "--color-status-neutral": "color",
      "--shadow-soft-lift": "shadow",
      "--shadow-modal": "shadow",
      "--font-sans-stack": "font",
      "--type-display-xxl": "font",
      "--type-display-xl": "font",
      "--type-display-lg": "font",
      "--type-display-md": "font",
      "--type-display-sm": "font",
      "--type-display-xs": "font",
      "--type-body-lg": "font",
      "--type-body-md": "font",
      "--type-body-emphasis": "font",
      "--type-caption-md": "font",
      "--type-caption-bold": "font",
      "--type-caption-sm": "font",
      "--type-link-md": "font",
      "--type-price-md": "font",
      "--type-button-md": "font",
      "--type-button-md-tracking": "font",
      "--type-button-sm": "font",
      "--type-button-sm-tracking": "font",
      "--text-default": "font",
      "--space-xxs": "spacing",
      "--space-xs": "spacing",
      "--space-sm": "spacing",
      "--space-md": "spacing",
      "--space-lg": "spacing",
      "--space-xl": "spacing",
      "--space-xxl": "spacing",
      "--space-section": "spacing",
      "--container-max": "spacing",
      "--gutter": "spacing",
      "--radius-none": "radius",
      "--radius-xs": "radius",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-xl": "radius",
      "--radius-pill": "radius"
    },
    "fontFamilies": [
      "Manrope"
    ]
  }
}