{
  "overrides": [
    {
      "files": [
        "src/**/*-vm.ts"
      ],
      "rules": {
        "react-hooks/rules-of-hooks": "off"
      }
    },
    {
      "files": [
        "src/app/**/*.stories.tsx"
      ],
      "rules": {
        "react/jsx-props-no-spreading": "off"
      }      
    }
  ],
    "settings": {
    "react": {
      "version": "detect"
    },
    "import/resolver": {
      "alias": {
        "map": [
          [
            "~",
            "./src"
          ]
        ],
        "extensions": [
          ".js",
          ".ts",
          ".tsx",
          ".d.ts",
          ".test.ts",
          ".json"
        ]
      }
    }
  },
  "plugins": [
    "prettier"
  ],
  "extends": [
    "airbnb",
    "next/core-web-vitals",
    "next/typescript",
    "prettier",
    "plugin:storybook/recommended"
  ],
  "rules": {
    "no-use-before-define": "off",
    "class-methods-use-this": "off",
    "import/prefer-default-export": "off",
    "import/no-cycle": "off",
    "no-promise-executor-return": "off",
    "@typescript-eslint/no-shadow": "off",
    "react/require-default-props": "off",
    "import/order": [
      "error",
      {
        "pathGroups": [
          {
            "pattern": "@/**",
            "group": "external"
          }
        ]
      } 
    ],
    "no-shadow": "off",
    "prettier/prettier": [
      "warn",
      {
        "printWidth": 80,
        "tabWidth": 2,
        "endOfLine": "auto",
        "useTabs": false,
        "semi": true,
        "singleQuote": false,
        "quoteProps": "as-needed",
        "jsxSingleQuote": false,
        "trailingComma": "all",
        "bracketSpacing": true,
        "arrowParens": "always"
      }
    ],
    "import/extensions": [
      "error",
      "ignorePackages",
      {
        "js": "never",
        "jsx": "never",
        "ts": "never",
        "tsx": "never"
      }
    ],
    "react/jsx-filename-extension": [
      1,
      {
        "extensions": [
          ".ts",
          ".tsx"
        ]
      }
    ],
    "import/no-extraneous-dependencies": [
      "error",
      {
        "devDependencies": true
      }
    ]
  }
}