{
  "plugins": [
    "react",
    "import"
  ],
  "rules": {
    "react/forbid-elements": [
      "warn",
      {
        "forbid": []
      }
    ],
    "no-restricted-imports": [
      "warn",
      {
        "patterns": [
          {
            "group": [
              "components/core/**",
              "components/os/**",
              "ui_kits/fieldhouse-os/**"
            ],
            "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": "JSXOpeningElement[name.name='Badge'] > JSXAttribute > JSXIdentifier[name!=/^(?:tone|pill|children|style|key|ref|className|style|children)$/]",
        "message": "<Badge> doesn't accept that prop. Declared props: tone, pill, children, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Badge'] > JSXAttribute[name.name='tone'] > Literal[value!=/^(?:accent|neutral|danger|success|warning|outline)$/]",
        "message": "<Badge> tone must be one of 'accent' | 'neutral' | 'danger' | 'success' | 'warning' | 'outline'."
      },
      {
        "selector": "JSXOpeningElement[name.name='Button'] > JSXAttribute > JSXIdentifier[name!=/^(?:variant|size|disabled|icon|children|onClick|style|key|ref|className|style|children)$/]",
        "message": "<Button> doesn't accept that prop. Declared props: variant, size, disabled, icon, children, onClick, style."
      },
      {
        "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='DesktopIcon'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|label|selected|onOpen|onSelect|style|key|ref|className|style|children)$/]",
        "message": "<DesktopIcon> doesn't accept that prop. Declared props: icon, label, selected, onOpen, onSelect, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Dialog'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|title|message|buttons|onAction|style|key|ref|className|style|children)$/]",
        "message": "<Dialog> doesn't accept that prop. Declared props: icon, title, message, buttons, onAction, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Input'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|hint|invalid|placeholder|type|value|onChange|style|key|ref|className|style|children)$/]",
        "message": "<Input> doesn't accept that prop. Declared props: label, hint, invalid, placeholder, type, value, onChange, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Select'] > JSXAttribute > JSXIdentifier[name!=/^(?:label|options|value|onChange|style|key|ref|className|style|children)$/]",
        "message": "<Select> doesn't accept that prop. Declared props: label, options, value, onChange, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='StartMenu'] > JSXAttribute > JSXIdentifier[name!=/^(?:apps|user|onLaunch|onSignOut|style|key|ref|className|style|children)$/]",
        "message": "<StartMenu> doesn't accept that prop. Declared props: apps, user, onLaunch, onSignOut, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Taskbar'] > JSXAttribute > JSXIdentifier[name!=/^(?:apps|onAppClick|onStartClick|startActive|clock|tray|style|key|ref|className|style|children)$/]",
        "message": "<Taskbar> doesn't accept that prop. Declared props: apps, onAppClick, onStartClick, startActive, clock, tray, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Toast'] > JSXAttribute > JSXIdentifier[name!=/^(?:icon|app|title|message|actions|onDismiss|style|key|ref|className|style|children)$/]",
        "message": "<Toast> doesn't accept that prop. Declared props: icon, app, title, message, actions, onDismiss, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Toggle'] > JSXAttribute > JSXIdentifier[name!=/^(?:checked|onChange|label|disabled|style|key|ref|className|style|children)$/]",
        "message": "<Toggle> doesn't accept that prop. Declared props: checked, onChange, label, disabled, style."
      },
      {
        "selector": "JSXOpeningElement[name.name='Window'] > JSXAttribute > JSXIdentifier[name!=/^(?:title|icon|active|width|height|onClose|onMinimize|onMaximize|toolbar|children|style|contentStyle|key|ref|className|style|children)$/]",
        "message": "<Window> doesn't accept that prop. Declared props: title, icon, active, width, height, onClose, onMinimize, onMaximize, toolbar, children, style, contentStyle."
      }
    ]
  },
  "overrides": [
    {
      "files": [
        "**/index.js"
      ],
      "rules": {
        "no-restricted-imports": "off"
      }
    }
  ],
  "x-omelette": {
    "components": {
      "Badge": {
        "replaces": []
      },
      "Button": {
        "replaces": []
      },
      "DesktopIcon": {
        "replaces": []
      },
      "Dialog": {
        "replaces": []
      },
      "Input": {
        "replaces": []
      },
      "Select": {
        "replaces": []
      },
      "StartMenu": {
        "replaces": []
      },
      "Taskbar": {
        "replaces": []
      },
      "Toast": {
        "replaces": []
      },
      "Toggle": {
        "replaces": []
      },
      "Window": {
        "replaces": []
      }
    },
    "tokens": [
      "--accent",
      "--blur-acrylic",
      "--blur-acrylic-light",
      "--danger",
      "--danger-deep",
      "--desktop-icon",
      "--dur-fast",
      "--dur-med",
      "--dur-slow",
      "--ease-os",
      "--focus-ring",
      "--font-editorial",
      "--font-mono",
      "--font-ui",
      "--hit-target",
      "--info",
      "--leading-loose",
      "--leading-normal",
      "--leading-tight",
      "--on-accent",
      "--os-acrylic",
      "--os-acrylic-heavy",
      "--os-bg-0",
      "--os-bg-1",
      "--os-stroke",
      "--os-stroke-faint",
      "--os-stroke-strong",
      "--os-surface",
      "--os-surface-2",
      "--os-surface-3",
      "--radius-lg",
      "--radius-md",
      "--radius-pill",
      "--radius-sm",
      "--school-accent",
      "--school-accent-deep",
      "--school-on-accent",
      "--school-on-primary",
      "--school-primary",
      "--school-primary-bright",
      "--school-primary-deep",
      "--shadow-menu",
      "--shadow-subtle",
      "--shadow-toast",
      "--shadow-window",
      "--space-1",
      "--space-2",
      "--space-3",
      "--space-4",
      "--space-5",
      "--space-6",
      "--space-8",
      "--success",
      "--surface-active",
      "--surface-chrome",
      "--surface-hover",
      "--surface-window",
      "--taskbar-height",
      "--text-1",
      "--text-2",
      "--text-2xl",
      "--text-3",
      "--text-3xl",
      "--text-faint",
      "--text-lg",
      "--text-md",
      "--text-muted",
      "--text-sm",
      "--text-xl",
      "--text-xs",
      "--titlebar-height",
      "--tracking-caps",
      "--wallpaper",
      "--warning",
      "--weight-black",
      "--weight-bold",
      "--weight-medium",
      "--weight-regular"
    ],
    "tokenKinds": {
      "--school-primary": "color",
      "--school-primary-bright": "color",
      "--school-primary-deep": "color",
      "--school-accent": "color",
      "--school-accent-deep": "color",
      "--school-on-primary": "color",
      "--school-on-accent": "color",
      "--os-bg-0": "color",
      "--os-bg-1": "color",
      "--os-surface": "color",
      "--os-surface-2": "color",
      "--os-surface-3": "color",
      "--os-acrylic": "color",
      "--os-acrylic-heavy": "color",
      "--os-stroke": "color",
      "--os-stroke-strong": "color",
      "--os-stroke-faint": "color",
      "--text-1": "font",
      "--text-2": "font",
      "--text-3": "font",
      "--text-muted": "font",
      "--text-faint": "font",
      "--danger": "color",
      "--danger-deep": "color",
      "--success": "color",
      "--warning": "color",
      "--info": "color",
      "--accent": "color",
      "--on-accent": "color",
      "--surface-window": "color",
      "--surface-chrome": "color",
      "--surface-hover": "color",
      "--surface-active": "color",
      "--focus-ring": "color",
      "--wallpaper": "color",
      "--font-ui": "font",
      "--font-editorial": "font",
      "--font-mono": "font",
      "--text-xs": "font",
      "--text-sm": "font",
      "--text-md": "font",
      "--text-lg": "font",
      "--text-xl": "font",
      "--text-2xl": "font",
      "--text-3xl": "font",
      "--weight-regular": "font",
      "--weight-medium": "font",
      "--weight-bold": "font",
      "--weight-black": "font",
      "--leading-tight": "font",
      "--leading-normal": "font",
      "--leading-loose": "font",
      "--tracking-caps": "font",
      "--space-1": "spacing",
      "--space-2": "spacing",
      "--space-3": "spacing",
      "--space-4": "spacing",
      "--space-5": "spacing",
      "--space-6": "spacing",
      "--space-8": "spacing",
      "--radius-sm": "radius",
      "--radius-md": "radius",
      "--radius-lg": "radius",
      "--radius-pill": "radius",
      "--taskbar-height": "spacing",
      "--titlebar-height": "spacing",
      "--desktop-icon": "spacing",
      "--hit-target": "spacing",
      "--shadow-window": "shadow",
      "--shadow-toast": "shadow",
      "--shadow-menu": "shadow",
      "--shadow-subtle": "shadow",
      "--blur-acrylic": "other",
      "--blur-acrylic-light": "other",
      "--ease-os": "other",
      "--dur-fast": "other",
      "--dur-med": "other",
      "--dur-slow": "other"
    },
    "fontFamilies": []
  }
}