@build0.ai/eslint-rules
v1.0.0
Published
Shared ESLint rules for Build0 projects
Downloads
27
Maintainers
Readme
@build0.ai/eslint-rules
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-rulesUsage
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.tgzPublishing
# Build and test the package
npm pack
npm publish
# Or publish with specific tag
npm publish --tag betaContributing
- Add new rules to the
rules/directory - Export them in
index.js - Update this README with documentation
- Test locally before publishing
- Follow semantic versioning for releases
License
MIT
