{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/brand/**",
              "components/buttons/**",
              "components/data/**",
              "components/forms/**",
              "ui_kits/app/**",
              "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*(?!['\\\"]?(?:Space Grotesk|Cormorant Garamond))/i]",
        "message": "Font not provided by the design system. Available: Space Grotesk, Cormorant Garamond."
      },
      {
        "selector": "JSXOpeningElement[name.name='Avatar'] > JSXAttribute > JSXIdentifier[name!=/^(?:src|alt|initials|size|ring|style|key|ref|className|style|children)$/]",
        "message": "<Avatar> doesn't accept that prop. Declared props: src, alt, initials, size, ring, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Avatar'] > JSXAttribute[name.name='size'] > Literal[value!=/^(?:sm|md|lg|xl)$/]",
        "message": "<Avatar> size must be one of 'sm' | 'md' | 'lg' | 'xl'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|tone|style|key|ref|className|style|children)$/]",
        "message": "<Badge> doesn't accept that prop. Declared props: children, tone, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:ocean|gold|sand|sage|sky|outline)$/]",
        "message": "<Badge> tone must be one of 'ocean' | 'gold' | 'sand' | 'sage' | 'sky' | 'outline'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|variant|size|fullWidth|disabled|iconLeft|iconRight|type|onClick|style|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: children, variant, size, fullWidth, disabled, iconLeft, iconRight, type, onClick, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:primary|accent|secondary|ghost)$/]",
        "message": "<Button> variant must be one of 'primary' | 'accent' | 'secondary' | '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='type'] > Literal[value!=/^(?:button|submit|reset)$/]",
        "message": "<Button> type must be one of 'button' | 'submit' | 'reset'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|tone|image|imageAlt|eyebrow|title|interactive|onClick|style|key|ref|className|style|children)$/]",
        "message": "<Card> doesn't accept that prop. Declared props: children, tone, image, imageAlt, eyebrow, title, interactive, onClick, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Card'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:light|sand|dark)$/]",
        "message": "<Card> tone must be one of 'light' | 'sand' | 'dark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Checkbox'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|disabled|onChange|label|id|style|key|ref|className|style|children)$/]",
        "message": "<Checkbox> doesn't accept that prop. Declared props: checked, disabled, onChange, label, id, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Eyebrow'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|color|as|style|key|ref|className|style|children)$/]",
        "message": "<Eyebrow> doesn't accept that prop. Declared props: children, color, as, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='IconButton'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|variant|size|disabled|ariaLabel|onClick|style|key|ref|className|style|children)$/]",
        "message": "<IconButton> doesn't accept that prop. Declared props: children, variant, size, disabled, ariaLabel, onClick, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='IconButton'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:primary|accent|secondary|ghost)$/]",
        "message": "<IconButton> variant must be one of 'primary' | 'accent' | 'secondary' | 'ghost'."
      },
      {
        "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!=/^(?:label|hint|error|type|placeholder|value|defaultValue|disabled|iconLeft|id|onChange|style|key|ref|className|style|children)$/]",
        "message": "<Input> doesn't accept that prop. Declared props: label, hint, error, type, placeholder, value, defaultValue, disabled, iconLeft, id, onChange, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionHeader'] > JSXAttribute > JSXIdentifier[name!=/^(?:eyebrow|title|lead|tone|align|maxWidth|style|key|ref|className|style|children)$/]",
        "message": "<SectionHeader> doesn't accept that prop. Declared props: eyebrow, title, lead, tone, align, maxWidth, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionHeader'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:light|dark)$/]",
        "message": "<SectionHeader> tone must be one of 'light' | 'dark'."
      },
      {
        "selector": "JSXOpeningElement[name.name='SectionHeader'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center)$/]",
        "message": "<SectionHeader> align must be one of 'left' | 'center'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Star'] > JSXAttribute > JSXIdentifier[name!=/^(?:size|variant|color|strokeWidth|style|key|ref|className|style|children)$/]",
        "message": "<Star> doesn't accept that prop. Declared props: size, variant, color, strokeWidth, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Star'] > JSXAttribute[name.name='variant'] > Literal[value!=/^(?:outline|solid)$/]",
        "message": "<Star> variant must be one of 'outline' | 'solid'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Stat'] > JSXAttribute > JSXIdentifier[name!=/^(?:value|label|suffix|tone|align|style|key|ref|className|style|children)$/]",
        "message": "<Stat> doesn't accept that prop. Declared props: value, label, suffix, tone, align, style."
      },
      {
        "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='Stat'] > JSXAttribute[name.name='align'] > Literal[value!=/^(?:left|center)$/]",
        "message": "<Stat> align must be one of 'left' | 'center'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Switch'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|disabled|accent|onChange|label|id|style|key|ref|className|style|children)$/]",
        "message": "<Switch> doesn't accept that prop. Declared props: checked, disabled, accent, onChange, label, id, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Tag'] > JSXAttribute > JSXIdentifier[name!=/^(?:children|active|onClick|iconLeft|style|key|ref|className|style|children)$/]",
        "message": "<Tag> doesn't accept that prop. Declared props: children, active, onClick, iconLeft, style."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "Avatar": {
        "replaces": []
      },
      "Badge": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "Card": {
        "replaces": []
      },
      "Checkbox": {
        "replaces": []
      },
      "Eyebrow": {
        "replaces": []
      },
      "IconButton": {
        "replaces": []
      },
      "Input": {
        "replaces": []
      },
      "SectionHeader": {
        "replaces": []
      },
      "Star": {
        "replaces": []
      },
      "Stat": {
        "replaces": []
      },
      "Switch": {
        "replaces": []
      },
      "Tag": {
        "replaces": []
      }
    },
    "tokens": [
      "--alpha-branco-10",
      "--alpha-branco-16",
      "--alpha-branco-70",
      "--alpha-oceano-08",
      "--alpha-oceano-16",
      "--alpha-oceano-40",
      "--alpha-oceano-70",
      "--beat-areia",
      "--beat-areia-100",
      "--beat-areia-200",
      "--beat-areia-300",
      "--beat-branco",
      "--beat-ceu",
      "--beat-dourado",
      "--beat-dourado-400",
      "--beat-dourado-600",
      "--beat-floresta",
      "--beat-oceano",
      "--beat-oceano-300",
      "--beat-oceano-500",
      "--beat-oceano-700",
      "--beat-oceano-900",
      "--beat-preto",
      "--beat-salvia",
      "--blur-glass",
      "--border-hairline",
      "--border-hairline-dark",
      "--border-width",
      "--color-accent",
      "--color-accent-hover",
      "--color-accent-press",
      "--color-bg",
      "--color-bg-alt",
      "--color-bg-light",
      "--color-border",
      "--color-border-dark",
      "--color-danger",
      "--color-esg",
      "--color-fresh",
      "--color-info",
      "--color-success",
      "--color-surface",
      "--color-surface-dark",
      "--color-surface-sand",
      "--color-text",
      "--color-text-invert",
      "--color-text-invert-muted",
      "--color-text-muted",
      "--color-warning",
      "--container-lg",
      "--container-md",
      "--container-sm",
      "--container-xl",
      "--dur-base",
      "--dur-fast",
      "--dur-slow",
      "--dur-slower",
      "--ease-emphasis",
      "--ease-inout",
      "--ease-standard",
      "--font-body",
      "--font-display",
      "--font-editorial",
      "--font-sans",
      "--font-serif",
      "--fs-2xl",
      "--fs-3xl",
      "--fs-4xl",
      "--fs-5xl",
      "--fs-base",
      "--fs-lg",
      "--fs-md",
      "--fs-sm",
      "--fs-xl",
      "--fs-xs",
      "--fw-bold",
      "--fw-light",
      "--fw-medium",
      "--fw-regular",
      "--fw-semibold",
      "--glass-dark",
      "--glass-light",
      "--gutter",
      "--lh-base",
      "--lh-loose",
      "--lh-snug",
      "--lh-tight",
      "--logo-clearspace",
      "--radius-full",
      "--radius-lg",
      "--radius-md",
      "--radius-sm",
      "--radius-xl",
      "--radius-xs",
      "--scrim-bottom",
      "--scrim-top",
      "--section-y",
      "--shadow-card",
      "--shadow-focus",
      "--shadow-lift",
      "--shadow-soft",
      "--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",
      "--tracking-normal",
      "--tracking-tight",
      "--tracking-wide",
      "--tracking-wider",
      "--z-base",
      "--z-modal",
      "--z-overlay",
      "--z-raised",
      "--z-sticky",
      "--z-toast"
    ],
    "tokenKinds": {
      "--beat-branco": "color",
      "--beat-oceano": "color",
      "--beat-dourado": "color",
      "--beat-floresta": "color",
      "--beat-preto": "color",
      "--beat-ceu": "color",
      "--beat-areia": "color",
      "--beat-salvia": "color",
      "--beat-oceano-900": "color",
      "--beat-oceano-700": "color",
      "--beat-oceano-500": "color",
      "--beat-oceano-300": "color",
      "--beat-areia-100": "color",
      "--beat-areia-200": "color",
      "--beat-areia-300": "color",
      "--beat-dourado-600": "color",
      "--beat-dourado-400": "color",
      "--alpha-oceano-08": "color",
      "--alpha-oceano-16": "color",
      "--alpha-oceano-40": "color",
      "--alpha-oceano-70": "color",
      "--alpha-branco-10": "color",
      "--alpha-branco-16": "color",
      "--alpha-branco-70": "color",
      "--color-bg": "color",
      "--color-bg-alt": "color",
      "--color-bg-light": "color",
      "--color-surface": "color",
      "--color-surface-sand": "color",
      "--color-surface-dark": "color",
      "--color-text": "font",
      "--color-text-muted": "font",
      "--color-text-invert": "font",
      "--color-text-invert-muted": "font",
      "--color-accent": "color",
      "--color-accent-hover": "color",
      "--color-accent-press": "color",
      "--color-esg": "color",
      "--color-fresh": "color",
      "--color-border": "color",
      "--color-border-dark": "color",
      "--color-success": "color",
      "--color-info": "color",
      "--color-warning": "color",
      "--color-danger": "color",
      "--font-sans": "font",
      "--font-serif": "font",
      "--font-display": "font",
      "--font-editorial": "font",
      "--font-body": "font",
      "--fw-light": "font",
      "--fw-regular": "font",
      "--fw-medium": "font",
      "--fw-semibold": "font",
      "--fw-bold": "font",
      "--fs-xs": "spacing",
      "--fs-sm": "spacing",
      "--fs-base": "spacing",
      "--fs-md": "spacing",
      "--fs-lg": "spacing",
      "--fs-xl": "spacing",
      "--fs-2xl": "spacing",
      "--fs-3xl": "spacing",
      "--fs-4xl": "spacing",
      "--fs-5xl": "spacing",
      "--lh-tight": "font",
      "--lh-snug": "font",
      "--lh-base": "font",
      "--lh-loose": "font",
      "--tracking-tight": "font",
      "--tracking-normal": "font",
      "--tracking-wide": "font",
      "--tracking-wider": "font",
      "--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",
      "--container-sm": "spacing",
      "--container-md": "spacing",
      "--container-lg": "spacing",
      "--container-xl": "spacing",
      "--gutter": "spacing",
      "--section-y": "color",
      "--logo-clearspace": "spacing",
      "--radius-xs": "radius",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-xl": "radius",
      "--radius-full": "radius",
      "--border-width": "other",
      "--border-hairline": "color",
      "--border-hairline-dark": "color",
      "--shadow-card": "shadow",
      "--shadow-soft": "shadow",
      "--shadow-lift": "shadow",
      "--shadow-focus": "shadow",
      "--blur-glass": "other",
      "--glass-light": "color",
      "--glass-dark": "color",
      "--scrim-bottom": "other",
      "--scrim-top": "other",
      "--ease-standard": "other",
      "--ease-emphasis": "other",
      "--ease-inout": "other",
      "--dur-fast": "other",
      "--dur-base": "other",
      "--dur-slow": "other",
      "--dur-slower": "other",
      "--z-base": "other",
      "--z-raised": "other",
      "--z-sticky": "other",
      "--z-overlay": "other",
      "--z-modal": "other",
      "--z-toast": "other"
    },
    "fontFamilies": [
      "Cormorant Garamond",
      "Space Grotesk"
    ]
  }
}