1.0.0 • Published 9 months ago

@build0.ai/eslint-rules v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

@build0.ai/eslint-rules

npm version

Shared ESLint rules for Build0 projects. Prevents common React/Radix UI pitfalls and enforces best practices.

Installation

npm install --save-dev @build0.ai/eslint-rules
# or
pnpm add -D @build0.ai/eslint-rules
# or
yarn add --dev @build0.ai/eslint-rules

Usage

Add the plugin to your ESLint configuration:

// eslint.config.mjs
import { dirname } from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";
import build0Rules from "@build0.ai/eslint-rules";

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const compat = new FlatCompat({
  baseDirectory: __dirname,
});

const eslintConfig = [
  ...compat.extends("next/core-web-vitals", "next/typescript"),
  {
    rules: {
      // Enable Build0 rules
      "build0/no-empty-select-item-value": "error",
    },
    plugins: {
      "build0": build0Rules,
    },
  },
];

export default eslintConfig;

Available Rules

build0/no-empty-select-item-value

Prevents empty string values in SelectItem components, which causes runtime errors with Radix UI Select components.

❌ Incorrect:

<SelectItem value="">Clear All</SelectItem>
<SelectItem value={""}>Clear All</SelectItem>
<SelectItem value={emptyVar}>Clear All</SelectItem> // where emptyVar = ""

✅ Correct:

<SelectItem value="clear">Clear All</SelectItem>
<SelectItem value="all">All Items</SelectItem>
<SelectItem value="none">No Selection</SelectItem>

Error Message:

SelectItem cannot have an empty string value. Use a placeholder like 'all', 'none', or 'clear' instead. Empty strings are reserved by Radix UI for clearing selections.

Local Development

To test the package locally before publishing:

# In the eslint-rules directory
npm pack

# In your project directory  
npm install ../path/to/build0-eslint-rules-1.0.0.tgz

Publishing

# Build and test the package
npm pack
npm publish

# Or publish with specific tag
npm publish --tag beta

Contributing

  1. Add new rules to the rules/ directory
  2. Export them in index.js
  3. Update this README with documentation
  4. Test locally before publishing
  5. Follow semantic versioning for releases

License

MIT