ru-a11y-toolkit 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -3
- package/index.js +18 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ npm install --save-dev ru-a11y-toolkit
|
|
|
24
24
|
npm install --save-dev ru-a11y-toolkit-eslint # только ESLint-плагин
|
|
25
25
|
npm install --save-dev ru-a11y-toolkit-cli # только CLI (скоро)
|
|
26
26
|
npm install --save-dev ru-a11y-toolkit-overlay # только React Overlay
|
|
27
|
+
npm install ru-a11y-toolkit-visually-impaired # только режим для слабовидящих
|
|
27
28
|
```
|
|
28
29
|
|
|
29
30
|
---
|
|
@@ -34,6 +35,7 @@ npm install --save-dev ru-a11y-toolkit-overlay # только React Overlay
|
|
|
34
35
|
|-------|--------|------------|
|
|
35
36
|
| [`ru-a11y-toolkit-eslint`](#-eslint-плагин) | ✅ Готов | Статическая проверка JSX/HTML в процессе разработки |
|
|
36
37
|
| [`ru-a11y-toolkit-overlay`](#-react-overlay) | ✅ Готов | Runtime-визуализация ошибок в браузере |
|
|
38
|
+
| [`ru-a11y-toolkit-visually-impaired`](#-режим-для-слабовидящих) | ✅ Готов | Режим повышенной читабельности для конечного пользователя |
|
|
37
39
|
| [`ru-a11y-toolkit-cli`](#-cli-сканер) | 🚧 В разработке | Проверка готовых страниц по URL |
|
|
38
40
|
|
|
39
41
|
---
|
|
@@ -187,6 +189,63 @@ function App() {
|
|
|
187
189
|
|
|
188
190
|
---
|
|
189
191
|
|
|
192
|
+
## 👁 Режим для слабовидящих
|
|
193
|
+
|
|
194
|
+
React-хук + CSS-файл, которые позволяют добавить на сайт кнопку «Версия для слабовидящих». При активации на `<html>` добавляется класс `ru-a11y-visually-impaired`, переключающий страницу в высококонтрастный режим с увеличенным шрифтом.
|
|
195
|
+
|
|
196
|
+
> **Важно:** модуль не заменяет соответствие ГОСТ/WCAG на уровне вёрстки. Используйте совместно с `ru-a11y-toolkit-eslint` и `ru-a11y-toolkit-overlay` для полноценного покрытия.
|
|
197
|
+
|
|
198
|
+
### Установка
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
npm install ru-a11y-toolkit-visually-impaired
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Подключение
|
|
205
|
+
|
|
206
|
+
```tsx
|
|
207
|
+
import { useVisuallyImpaired } from 'ru-a11y-toolkit-visually-impaired';
|
|
208
|
+
import 'ru-a11y-toolkit-visually-impaired/styles/visually-impaired.css';
|
|
209
|
+
|
|
210
|
+
function Header() {
|
|
211
|
+
const { toggle, isEnabled } = useVisuallyImpaired();
|
|
212
|
+
return (
|
|
213
|
+
<button onClick={toggle} aria-pressed={isEnabled}>
|
|
214
|
+
{isEnabled ? 'Обычная версия' : 'Версия для слабовидящих'}
|
|
215
|
+
</button>
|
|
216
|
+
);
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
CSS импортируется отдельно и не инжектируется через JS — для совместимости с SSR и явного контроля над стилями.
|
|
221
|
+
|
|
222
|
+
### Что делает режим
|
|
223
|
+
|
|
224
|
+
| Что меняется | Нормативная база |
|
|
225
|
+
|---|---|
|
|
226
|
+
| Белый фон, чёрный текст (контраст 21:1) | ГОСТ Р 52872, п. 7.2; WCAG 1.4.3 |
|
|
227
|
+
| Шрифт от 1.5rem, межстрочный интервал 1.6 | Постановление №102; WCAG 1.4.12 |
|
|
228
|
+
| Заголовки от 1.75rem до 3rem | WCAG 1.4.4 |
|
|
229
|
+
| Кнопки и поля форм min-height 3rem | WCAG 2.5.5 |
|
|
230
|
+
| Outline 3px на элементах в фокусе | ГОСТ Р 52872, п. 6.6; WCAG 2.4.7 |
|
|
231
|
+
| Изображения: grayscale + контраст 120% | WCAG 1.4.11 |
|
|
232
|
+
| SVG-иконки заменяются текстом `aria-label` | WCAG 1.1.1 |
|
|
233
|
+
| Анимации и переходы отключены | ГОСТ Р 52872, п. 6.11; WCAG 2.3.1 |
|
|
234
|
+
|
|
235
|
+
### API
|
|
236
|
+
|
|
237
|
+
```ts
|
|
238
|
+
const { toggle, isEnabled } = useVisuallyImpaired();
|
|
239
|
+
// toggle() — переключает режим
|
|
240
|
+
// isEnabled — текущее состояние (boolean)
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Состояние не сохраняется в localStorage по умолчанию — разработчик решает механизм хранения самостоятельно (пример с localStorage есть в документации пакета).
|
|
244
|
+
|
|
245
|
+
→ [Подробная документация visually-impaired](https://www.npmjs.com/package/ru-a11y-toolkit-visually-impaired)
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
190
249
|
## Нормативная база
|
|
191
250
|
|
|
192
251
|
### ГОСТ Р 52872-2019
|
|
@@ -224,9 +283,10 @@ ru-a11y/
|
|
|
224
283
|
├── index.js # umbrella-реэкспорт (ru-a11y-toolkit)
|
|
225
284
|
├── package.json # ru-a11y-toolkit
|
|
226
285
|
├── packages/
|
|
227
|
-
│ ├── eslint-preset/ # ru-a11y-toolkit-eslint
|
|
228
|
-
│ ├── cli/ # ru-a11y-toolkit-cli
|
|
229
|
-
│
|
|
286
|
+
│ ├── eslint-preset/ # ru-a11y-toolkit-eslint ✅
|
|
287
|
+
│ ├── cli/ # ru-a11y-toolkit-cli 🚧
|
|
288
|
+
│ ├── react-overlay/ # ru-a11y-toolkit-overlay ✅
|
|
289
|
+
│ └── visually-impaired/ # ru-a11y-toolkit-visually-impaired ✅
|
|
230
290
|
├── README.md # этот файл
|
|
231
291
|
└── LICENSE
|
|
232
292
|
```
|
package/index.js
CHANGED
|
@@ -25,6 +25,18 @@ try {
|
|
|
25
25
|
// overlay недоступен (например, dist ещё не собран или нет React)
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Visually Impaired — режим повышенной читабельности для слабовидящих.
|
|
30
|
+
* Загружается лениво: не падает при отсутствии React в окружении.
|
|
31
|
+
* Для использования: import { useVisuallyImpaired } from 'ru-a11y-toolkit-visually-impaired'
|
|
32
|
+
*/
|
|
33
|
+
let visuallyImpaired = {};
|
|
34
|
+
try {
|
|
35
|
+
visuallyImpaired = require('ru-a11y-toolkit-visually-impaired');
|
|
36
|
+
} catch {
|
|
37
|
+
// visuallyImpaired недоступен (например, dist ещё не собран или нет React)
|
|
38
|
+
}
|
|
39
|
+
|
|
28
40
|
module.exports = {
|
|
29
41
|
/** ESLint-плагин с правилами и конфигами */
|
|
30
42
|
eslint,
|
|
@@ -35,6 +47,12 @@ module.exports = {
|
|
|
35
47
|
*/
|
|
36
48
|
overlay,
|
|
37
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Режим повышенной читабельности для слабовидящих.
|
|
52
|
+
* Используйте хук: const { toggle, isEnabled } = toolkit.visuallyImpaired.useVisuallyImpaired()
|
|
53
|
+
*/
|
|
54
|
+
visuallyImpaired,
|
|
55
|
+
|
|
38
56
|
/**
|
|
39
57
|
* Конфиги для прямого использования в eslint.config.js (Flat Config):
|
|
40
58
|
* const { configs } = require('ru-a11y-toolkit');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ru-a11y-toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Toolkit для автоматизированной проверки веб-доступности React/JS-приложений под российские нормативы (ГОСТ Р 52872-2019, Постановление №102)",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"workspaces": [
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"ru-a11y-toolkit-eslint": "1.0.2",
|
|
17
|
-
"ru-a11y-toolkit-overlay": "1.
|
|
17
|
+
"ru-a11y-toolkit-overlay": "1.1.1",
|
|
18
|
+
"ru-a11y-toolkit-visually-impaired": "1.0.0"
|
|
18
19
|
},
|
|
19
20
|
"peerDependencies": {
|
|
20
21
|
"eslint": "^9.0.0 || ^10.0.0"
|