{"_id":"@alexhayton/eslint-plugin-spectrum-web-components","_rev":"2-3b8737a957a98d2508e54ac7219ceebb","name":"@alexhayton/eslint-plugin-spectrum-web-components","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.2":{"name":"@alexhayton/eslint-plugin-spectrum-web-components","version":"0.0.2","author":"","license":"ISC","_id":"@alexhayton/eslint-plugin-spectrum-web-components@0.0.2","maintainers":[{"name":"alexhayton","email":"alex.hayton@gmail.com"}],"dist":{"shasum":"e6441d1cdccce711e2a99636a298d7d97fb7c962","tarball":"https://registry.npmjs.org/@alexhayton/eslint-plugin-spectrum-web-components/-/eslint-plugin-spectrum-web-components-0.0.2.tgz","fileCount":50,"integrity":"sha512-tVyXvHzFeVzvUrOX8O85OQ0qpRNERA5CZQdOwthO4FvHVPBv9Gek1EjOKePIH4GSM5e6GBPUOtGmLEi3s73BkA==","signatures":[{"sig":"MEUCIQChnaigMnjgN5GKVIEIbRfLziWdG2fCq+AUv8AWcMfIZgIgKcUhwrLhzyMJvJ/zXb0ncAl7tewCk+cuiFJDFZxpzQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64033},"main":"dist/index.js","type":"commonjs","types":"dist/index.d.ts","gitHead":"a3d66ede8685b61f8092667c1d129735bfbb7afb","scripts":{"test":"vitest run","build":"tsc","release":"release-it --ci --increment=patch","test:watch":"vitest","prepublishOnly":"npm run build","lint:fixtures:fail":"eslint -c tests/fixtures/eslint.config.mjs tests/fixtures/fail/","lint:fixtures:pass":"eslint -c tests/fixtures/eslint.config.mjs tests/fixtures/pass/"},"_npmUser":{"name":"alexhayton","email":"alex.hayton@gmail.com"},"overrides":{"vite":"^6.0.0"},"_npmVersion":"11.6.2","description":"ESLint plugin for Spectrum Web Components dev mode checks","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@typescript-eslint/utils":"^8.24.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.20.0","vitest":"^3.0.5","release-it":"^19.2.4","typescript":"^5.7.3","@types/node":"^22.13.4","@typescript-eslint/utils":"^8.24.1","@spectrum-web-components/bundle":"^1.8.0"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-spectrum-web-components_0.0.2_1771775266907_0.9782553354276686","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@alexhayton/eslint-plugin-spectrum-web-components","version":"0.0.4","description":"ESLint plugin for Spectrum Web Components dev mode checks","license":"ISC","author":"","type":"commonjs","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"scripts":{"build":"tsc","test":"vitest run","test:watch":"vitest","lint:fixtures:pass":"eslint -c tests/fixtures/eslint.config.mjs tests/fixtures/pass/","lint:fixtures:fail":"eslint -c tests/fixtures/eslint.config.mjs tests/fixtures/fail/","release":"release-it --ci --increment=patch","prepublishOnly":"npm run build"},"peerDependencies":{"eslint":">=8.0.0"},"devDependencies":{"@spectrum-web-components/bundle":"^1.8.0","@types/node":"^22.13.4","@typescript-eslint/utils":"^8.24.1","eslint":"^9.20.0","release-it":"^19.2.4","typescript":"^5.7.3","vitest":"^3.0.5"},"dependencies":{"@typescript-eslint/utils":"^8.24.1"},"overrides":{"vite":"^6.0.0"},"gitHead":"e39816a15e13655528f426789df83322ec8b9fc3","_id":"@alexhayton/eslint-plugin-spectrum-web-components@0.0.4","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-qVg2/qQJo37sE/t0zaEZjwsyM5WK+Bt0bHZ5JhYJxAJsCEZcv/9c7zNjuyC9PaUVlRbmCRNL8ZLSoIvtYI03iA==","shasum":"0732f746171abaa1e5cb4aefaeec3b4066b96743","tarball":"https://registry.npmjs.org/@alexhayton/eslint-plugin-spectrum-web-components/-/eslint-plugin-spectrum-web-components-0.0.4.tgz","fileCount":50,"unpackedSize":64432,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHlQmaJrLkQBbQOyfMarF/73bHce24kkGeBwyzb9lJUWAiEAihOdoPFuw5aFUqjzb4FSwSe10Ig9yqnv7PmV5NQFgCM="}]},"_npmUser":{"name":"alexhayton","email":"alex.hayton@gmail.com"},"directories":{},"maintainers":[{"name":"alexhayton","email":"alex.hayton@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin-spectrum-web-components_0.0.4_1771776770676_0.3101317262512753"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-22T15:47:46.833Z","modified":"2026-02-22T16:12:50.976Z","0.0.2":"2026-02-22T15:47:47.062Z","0.0.4":"2026-02-22T16:12:50.853Z"},"license":"ISC","description":"ESLint plugin for Spectrum Web Components dev mode checks","maintainers":[{"name":"alexhayton","email":"alex.hayton@gmail.com"}],"readme":"# eslint-plugin-spectrum-web-components\n\nESLint plugin for Spectrum Web Components dev mode checks.\n\n## Installation\n\nYou'll first need to install [ESLint](https://eslint.org/):\n\n```bash\nnpm i eslint --save-dev\n```\n\nNext, install `eslint-plugin-spectrum-web-components`:\n\n```bash\nnpm install @alexhayton/eslint-plugin-spectrum-web-components --save-dev\n```\n\n## Usage\n\n### Flat Config (ESLint 9+)\n\nAdd `@alexhayton/spectrum-web-components` to the plugins section of your `eslint.config.mjs` configuration file. You can omit the `eslint-plugin-` prefix:\n\n```javascript\nimport spectrumWebComponents from \"@alexhayton/eslint-plugin-spectrum-web-components\";\n\nexport default [\n    {\n        files: [\"**/*.js\", \"**/*.ts\"],\n        plugins: {\n            \"@alexhayton/spectrum-web-components\": spectrumWebComponents\n        },\n        rules: {\n            ...spectrumWebComponents.configs.recommended.rules\n        }\n    }\n];\n```\n\n### Legacy Config (ESLint 8)\n\nAdd `@alexhayton/spectrum-web-components` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:\n\n```json\n{\n    \"plugins\": [\n        \"@alexhayton/spectrum-web-components\"\n    ],\n    \"rules\": {\n        \"@alexhayton/spectrum-web-components/accessible-action-menu\": \"warn\",\n        \"@alexhayton/spectrum-web-components/accessible-avatar\": \"warn\",\n        \"@alexhayton/spectrum-web-components/accessible-clear-button\": \"warn\",\n        \"@alexhayton/spectrum-web-components/accessible-dialog-wrapper\": \"warn\",\n        \"@alexhayton/spectrum-web-components/accessible-picker\": \"warn\",\n        \"@alexhayton/spectrum-web-components/accessible-progress-bar\": \"warn\",\n        \"@alexhayton/spectrum-web-components/no-deprecated-options\": \"warn\",\n        \"@alexhayton/spectrum-web-components/overlay-trigger-triggered-by\": \"warn\",\n        \"@alexhayton/spectrum-web-components/validate-theme-context\": \"warn\"\n    }\n}\n```\n\n## Rules\n\n### accessible-action-menu\n\nRequire accessible labeling on `<sp-action-menu>` elements.\n\n**Fail**\n```javascript\nhtml`<sp-action-menu></sp-action-menu>`;\n```\n\n**Pass**\n```javascript\nhtml`<sp-action-menu label=\"More actions\"></sp-action-menu>`;\nhtml`<sp-action-menu aria-label=\"More actions\"></sp-action-menu>`;\nhtml`<sp-action-menu aria-labelledby=\"some-id\"></sp-action-menu>`;\n```\n\n### accessible-avatar\n\nRequire accessible attributes on `<sp-avatar>` elements.\n\n**Fail**\n```javascript\nhtml`<sp-avatar></sp-avatar>`;\nhtml`<sp-avatar is-decorative href=\"#\"></sp-avatar>`;\n```\n\n**Pass**\n```javascript\nhtml`<sp-avatar label=\"User Name\"></sp-avatar>`;\nhtml`<sp-avatar is-decorative></sp-avatar>`;\nhtml`<sp-avatar is-decorative label=\"User Name\" href=\"#\"></sp-avatar>`;\n```\n\n### accessible-clear-button\n\nRequire a label attribute on `<sp-clear-button>` elements for screen reader accessibility.\n\n**Fail**\n```javascript\nhtml`<sp-clear-button></sp-clear-button>`;\n```\n\n**Pass**\n```javascript\nhtml`<sp-clear-button label=\"Clear\"></sp-clear-button>`;\n```\n\n### accessible-dialog-wrapper\n\nRequire a headline attribute on `<sp-dialog-wrapper>` elements for screen reader accessibility.\n\n**Fail**\n```javascript\nhtml`<sp-dialog-wrapper></sp-dialog-wrapper>`;\n```\n\n**Pass**\n```javascript\nhtml`<sp-dialog-wrapper headline=\"Dialog Title\"></sp-dialog-wrapper>`;\n```\n\n### accessible-picker\n\nRequire accessible labeling on `<sp-picker>` elements.\n\n**Fail**\n```javascript\nhtml`<sp-picker></sp-picker>`;\n```\n\n**Pass**\n```javascript\nhtml`<sp-picker label=\"Select an option\"></sp-picker>`;\nhtml`<sp-picker aria-label=\"Select an option\"></sp-picker>`;\nhtml`<sp-picker aria-labelledby=\"some-id\"></sp-picker>`;\n```\n\n### accessible-progress-bar\n\nRequire accessible labeling on `<sp-progress-bar>` elements.\n\n**Fail**\n```javascript\nhtml`<sp-progress-bar></sp-progress-bar>`;\n```\n\n**Pass**\n```javascript\nhtml`<sp-progress-bar label=\"Loading...\"></sp-progress-bar>`;\nhtml`<sp-progress-bar aria-label=\"Loading...\"></sp-progress-bar>`;\nhtml`<sp-progress-bar aria-labelledby=\"some-id\"></sp-progress-bar>`;\n```\n\n### no-deprecated-options\n\nDisallow deprecated attribute values and attributes on Spectrum Web Components.\n\n**Fail**\n```javascript\nhtml`<sp-button variant=\"cta\">Click me</sp-button>`;\nhtml`<sp-theme color=\"lightest\"></sp-theme>`;\nhtml`<sp-overlay allow-outside-click></sp-overlay>`;\n```\n\n**Pass**\n```javascript\nhtml`<sp-button variant=\"accent\">Click me</sp-button>`;\nhtml`<sp-theme color=\"light\"></sp-theme>`;\nhtml`<sp-overlay></sp-overlay>`;\n```\n\n### overlay-trigger-triggered-by\n\nRequire `triggered-by` attribute on `<overlay-trigger>` elements for performance optimization.\n\n**Fail**\n```javascript\nhtml`<overlay-trigger>content</overlay-trigger>`;\n```\n\n**Pass**\n```javascript\nhtml`<overlay-trigger triggered-by=\"click hover\">content</overlay-trigger>`;\n```\n\n### validate-theme-context\n\nRequire color, scale, and system attributes on `<sp-theme>` elements.\n\n**Fail**\n```javascript\nhtml`<sp-theme></sp-theme>`;\nhtml`<sp-theme color=\"light\"></sp-theme>`;\n```\n\n**Pass**\n```javascript\nhtml`<sp-theme color=\"light\" scale=\"medium\" system=\"spectrum\"></sp-theme>`;\n```\n","readmeFilename":"README.md"}