storybook-addon-data-theme-switcher
Version:
A Storybook addon to switch the data-theme attribute on the html element
80 lines (71 loc) • 1.88 kB
JavaScript
import js from "@eslint/js";
import eslintConfigPrettier from "eslint-config-prettier";
import tseslint from "typescript-eslint";
import onlyWarn from "eslint-plugin-only-warn";
import pluginImport from "eslint-plugin-import";
import pluginReactHooks from "eslint-plugin-react-hooks";
import pluginReact from "eslint-plugin-react";
import pluginStorybook from "eslint-plugin-storybook";
/**
* @type {import("eslint").Linter.FlatConfig[]}
*/
const config = [
// Base recommended configurations
js.configs.recommended,
eslintConfigPrettier,
...tseslint.configs.recommended,
pluginReact.configs.flat.recommended,
pluginImport.flatConfigs.recommended,
// Additional customizations
{
plugins: {
onlyWarn,
pluginStorybook,
"react-hooks": pluginReactHooks,
},
settings: {
react: { version: "detect" },
"import/resolver": {
typescript: true,
},
},
rules: {
// React hooks rules
...pluginReactHooks.configs.recommended.rules,
// Import rules
"import/order": [
"warn",
{
groups: [
"external",
"builtin",
"internal",
"sibling",
"parent",
"index",
],
"newlines-between": "always",
},
],
// Sort imports
"sort-imports": [
"error",
{
allowSeparatedGroups: true,
ignoreCase: true,
ignoreDeclarationSort: true,
},
],
// Disable React-in-JSX-scope rule for new JSX transform
"react/react-in-jsx-scope": "off",
},
languageOptions: {
...pluginReact.configs.flat.recommended.languageOptions,
},
},
// Ignore certain files and directories
{
ignores: ["dist/**", "**.config.js", "manager.js", "preview.js"],
},
];
export default config;