Files
dss/packages/dss-rules/README.md
2025-12-11 08:03:47 -03:00

100 lines
2.1 KiB
Markdown

# @dss/rules
Versioned design system rules for enterprise DSS enforcement.
## Installation
```bash
npm install @dss/rules
```
## Usage
### In Your Project
```javascript
const rules = require('@dss/rules');
// Load all rules
const allRules = rules.loadRules();
// Get specific category
const colorRules = rules.getRulesByCategory('colors');
// Validate a value
const result = rules.validateValue('colors/no-hardcoded-colors', '#ff0000');
// { valid: false, violations: [...] }
// Get required tokens
const required = rules.getRequiredTokens();
// { colors: ['colors.primary', ...], spacing: [...] }
```
### In CI/CD Pipeline
```yaml
- name: Validate DSS Rules
run: |
npx @dss/rules validate src/**/*.tsx --json > dss-report.json
```
### Pre-commit Hook
```bash
#!/bin/bash
npx @dss/rules validate $(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(tsx?|jsx?|css|scss)$')
```
## Rule Categories
| Category | Description |
|----------|-------------|
| `colors` | Color token usage, semantic naming, contrast |
| `spacing` | Spacing scale compliance, consistent values |
| `typography` | Font size scale, semantic elements |
| `components` | Component usage, prop requirements |
| `accessibility` | WCAG 2.1 AA compliance |
## Rule Severities
- **error**: Blocks CI pipeline, must fix
- **warning**: Advisory, should fix
- **info**: Suggestion, optional
## Version Policy
Rules follow semantic versioning:
- **MAJOR**: Breaking changes (new errors that may fail existing code)
- **MINOR**: New rules added as warnings
- **PATCH**: Bug fixes, documentation
Projects should pin to minor version: `@dss/rules@^1.0.0`
## API Reference
### `loadRules()`
Returns all rule sets organized by category.
### `getRulesByCategory(category)`
Returns rules for a specific category.
### `getAllRuleIds()`
Returns array of all rule IDs in format `category/rule-id`.
### `getRule(ruleId)`
Returns a specific rule definition.
### `validateValue(ruleId, value)`
Validates a value against rule patterns.
### `getRequiredTokens()`
Returns required tokens organized by category.
### `getCIConfig()`
Returns configuration object for CI pipelines.
## License
MIT