# @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