@mew-lab/a11y-cli 0.1.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.
@@ -0,0 +1,3514 @@
1
+ // ../core/dist/index.js
2
+ import { z } from "zod";
3
+ var categories = [
4
+ "\u958B\u9589\u30FB\u5C55\u958B",
5
+ "\u901A\u77E5\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0",
6
+ "\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3",
7
+ "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
8
+ "\u30BF\u30D6\u30FB\u30C4\u30FC\u30EB\u30D0\u30FC",
9
+ "\u30C7\u30FC\u30BF\u8868\u793A",
10
+ "\u305D\u306E\u4ED6"
11
+ ];
12
+ var patternStatusSchema = z.enum(["ready", "planned"]);
13
+ var patternSchema = z.object({
14
+ /** URL に使う識別子 */
15
+ slug: z.string().min(1),
16
+ /** 日本語タイトル */
17
+ ja: z.string().min(1),
18
+ /** 英語タイトル(APG 原文) */
19
+ en: z.string().min(1),
20
+ /** カテゴリ(一覧のグルーピング用) */
21
+ category: z.enum(categories),
22
+ /** 一覧カードに出す1〜2文の要約 */
23
+ summary: z.string().min(1),
24
+ status: patternStatusSchema
25
+ });
26
+ var levelSchema = z.enum(["A", "AA", "AAA"]);
27
+ var principles = ["\u77E5\u899A\u53EF\u80FD", "\u64CD\u4F5C\u53EF\u80FD", "\u7406\u89E3\u53EF\u80FD", "\u5805\u7262"];
28
+ var principleSchema = z.enum(principles);
29
+ var criterionSchema = z.object({
30
+ /** 達成基準番号(例: "2.1.1")。表示・並び替えのキー */
31
+ num: z.string().min(1),
32
+ /** URL に使う識別子(例: "2-1-1") */
33
+ slug: z.string().min(1),
34
+ /** 日本語の名称(waic.jp 訳に準拠) */
35
+ ja: z.string().min(1),
36
+ /** 英語の名称(WCAG 原文) */
37
+ en: z.string().min(1),
38
+ /** 適合レベル */
39
+ level: levelSchema,
40
+ /** 4つの原則 */
41
+ principle: principleSchema,
42
+ /** 所属ガイドライン(例: "2.1 キーボード操作可能") */
43
+ guideline: z.string().min(1),
44
+ /** WCAG 2.2 で新設された達成基準なら true */
45
+ isNew22: z.boolean().optional(),
46
+ /** 学習者向けのやさしい日本語要約(1〜2文・自作) */
47
+ summary: z.string().min(1),
48
+ /** waic.jp 日本語訳の該当アンカー */
49
+ waicUrl: z.string().url(),
50
+ /** Understanding(英語・公式解説)の URL */
51
+ understandingUrl: z.string().url(),
52
+ /** 関連する APG パターンの slug(patterns と一致) */
53
+ patterns: z.array(z.string())
54
+ });
55
+ var requirementSchema = z.enum(["required", "recommended", "optional"]);
56
+ var keyboardRowSchema = z.object({
57
+ /** 例: "Enter / Space" */
58
+ keys: z.string().min(1),
59
+ /** その操作で起きること */
60
+ action: z.string().min(1),
61
+ requirement: requirementSchema
62
+ });
63
+ var ariaRowSchema = z.object({
64
+ /** 付ける場所(例: "見出しのボタン") */
65
+ target: z.string().min(1),
66
+ /** 属性 / ロール(例: 'aria-expanded="true | false"') */
67
+ attr: z.string().min(1),
68
+ /** 意味・狙い */
69
+ meaning: z.string().min(1)
70
+ });
71
+ var antipatternSchema = z.object({
72
+ /** アンチパターンの要点(例: "div + onclick で作る") */
73
+ title: z.string().min(1),
74
+ /** なぜダメか */
75
+ why: z.string().min(1)
76
+ });
77
+ var patternViewpointSchema = z.object({
78
+ /** patterns(メタ)の slug と一致 */
79
+ slug: z.string().min(1),
80
+ /** キーボード操作 */
81
+ keyboard: z.array(keyboardRowSchema),
82
+ /** 必要な WAI-ARIA / ロール */
83
+ aria: z.array(ariaRowSchema),
84
+ /** 実装チェックリスト */
85
+ checklist: z.array(z.string().min(1)),
86
+ /** アンチパターン(Bad の要点) */
87
+ antipatterns: z.array(antipatternSchema),
88
+ /** 補足メモ(任意) */
89
+ notes: z.array(z.string().min(1)).optional()
90
+ });
91
+ var rawPatterns = [
92
+ // ── 開閉・展開 ──────────────────────────────
93
+ {
94
+ slug: "accordion",
95
+ ja: "\u30A2\u30B3\u30FC\u30C7\u30A3\u30AA\u30F3",
96
+ en: "Accordion",
97
+ category: "\u958B\u9589\u30FB\u5C55\u958B",
98
+ summary: "\u898B\u51FA\u3057\u3092\u62BC\u3059\u3068\u30D1\u30CD\u30EB\u304C\u958B\u9589\u3059\u308B UI\u3002\u30DC\u30BF\u30F3\u3068 aria-expanded \u3067\u300C\u4ECA\u958B\u3044\u3066\u3044\u308B\u304B\u300D\u3092\u652F\u63F4\u6280\u8853\u3078\u6B63\u3057\u304F\u4F1D\u3048\u307E\u3059\u3002",
99
+ status: "ready"
100
+ },
101
+ {
102
+ slug: "disclosure",
103
+ ja: "\u30C7\u30A3\u30B9\u30AF\u30ED\u30FC\u30B8\u30E3\u30FC\uFF08\u958B\u9589\uFF09",
104
+ en: "Disclosure",
105
+ category: "\u958B\u9589\u30FB\u5C55\u958B",
106
+ summary: "\u300C\u3082\u3063\u3068\u898B\u308B\u300D\u306E\u3088\u3046\u306B1\u3064\u306E\u9818\u57DF\u3092\u8868\u793A/\u975E\u8868\u793A\u3059\u308B\u3082\u3063\u3068\u3082\u30B7\u30F3\u30D7\u30EB\u306A\u958B\u9589\u30D1\u30BF\u30FC\u30F3\u3002",
107
+ status: "ready"
108
+ },
109
+ // ── 通知・ダイアログ ────────────────────────
110
+ {
111
+ slug: "alert",
112
+ ja: "\u30A2\u30E9\u30FC\u30C8\uFF08\u901A\u77E5\uFF09",
113
+ en: "Alert",
114
+ category: "\u901A\u77E5\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0",
115
+ summary: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u596A\u308F\u305A\u306B\u91CD\u8981\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u5373\u5EA7\u306B\u8AAD\u307F\u4E0A\u3052\u308B\u3001live region \u3092\u4F7F\u3063\u305F\u901A\u77E5\u3002",
116
+ status: "ready"
117
+ },
118
+ {
119
+ slug: "dialog-modal",
120
+ ja: "\u30E2\u30FC\u30C0\u30EB\u30C0\u30A4\u30A2\u30ED\u30B0",
121
+ en: "Dialog (Modal)",
122
+ category: "\u901A\u77E5\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0",
123
+ summary: "\u80CC\u9762\u3092\u64CD\u4F5C\u4E0D\u80FD\u306B\u3057\u3066\u524D\u9762\u306B\u51FA\u3059\u30C0\u30A4\u30A2\u30ED\u30B0\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u30C8\u30E9\u30C3\u30D7\u3068 Esc \u9589\u3058\u304C\u8981\u3002",
124
+ status: "ready"
125
+ },
126
+ {
127
+ slug: "alertdialog",
128
+ ja: "\u30A2\u30E9\u30FC\u30C8\u30C0\u30A4\u30A2\u30ED\u30B0",
129
+ en: "Alert and Message Dialogs",
130
+ category: "\u901A\u77E5\u30FB\u30C0\u30A4\u30A2\u30ED\u30B0",
131
+ summary: "\u300C\u672C\u5F53\u306B\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F\u300D\u306A\u3069\u3001\u30E6\u30FC\u30B6\u30FC\u306E\u78BA\u8A8D\u30FB\u5FDC\u7B54\u3092\u6C42\u3081\u308B\u30C0\u30A4\u30A2\u30ED\u30B0\u3002",
132
+ status: "ready"
133
+ },
134
+ // ── ナビゲーション ─────────────────────────
135
+ {
136
+ slug: "breadcrumb",
137
+ ja: "\u30D1\u30F3\u304F\u305A\u30EA\u30B9\u30C8",
138
+ en: "Breadcrumb",
139
+ category: "\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3",
140
+ summary: "\u30B5\u30A4\u30C8\u5185\u306E\u73FE\u5728\u4F4D\u7F6E\u3092\u793A\u3059\u30CA\u30D3\u3002nav \u3068\u30EA\u30B9\u30C8\u3001\u73FE\u5728\u5730\u306E aria-current \u304C\u809D\u3002",
141
+ status: "ready"
142
+ },
143
+ {
144
+ slug: "menu-menubar",
145
+ ja: "\u30E1\u30CB\u30E5\u30FC / \u30E1\u30CB\u30E5\u30FC\u30D0\u30FC",
146
+ en: "Menu and Menubar",
147
+ category: "\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3",
148
+ summary: '\u30A2\u30D7\u30EA\u7684\u306A\u30E1\u30CB\u30E5\u30FC\u3002\u77E2\u5370\u30AD\u30FC\u64CD\u4F5C\u3068 role="menu" \u7CFB\u306E\u30ED\u30FC\u30EB\u3067\u69CB\u6210\u3057\u307E\u3059\u3002',
149
+ status: "ready"
150
+ },
151
+ {
152
+ slug: "menu-button",
153
+ ja: "\u30E1\u30CB\u30E5\u30FC\u30DC\u30BF\u30F3",
154
+ en: "Menu Button",
155
+ category: "\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3",
156
+ summary: "\u62BC\u3059\u3068\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304F\u30DC\u30BF\u30F3\u3002aria-haspopup \u3068 aria-expanded \u3067\u95A2\u4FC2\u3092\u4F1D\u3048\u307E\u3059\u3002",
157
+ status: "ready"
158
+ },
159
+ {
160
+ slug: "link",
161
+ ja: "\u30EA\u30F3\u30AF",
162
+ en: "Link",
163
+ category: "\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3",
164
+ summary: "\u57FA\u672C\u306B\u3057\u3066\u5965\u6DF1\u3044\u30EA\u30F3\u30AF\u3002div \u306E onclick \u3067\u306F\u306A\u304F a \u8981\u7D20\u3092\u4F7F\u3046\u7406\u7531\u3092\u89E3\u8AAC\u3002",
165
+ status: "ready"
166
+ },
167
+ {
168
+ slug: "landmarks",
169
+ ja: "\u30E9\u30F3\u30C9\u30DE\u30FC\u30AF",
170
+ en: "Landmarks",
171
+ category: "\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3",
172
+ summary: "header / nav / main / footer \u306A\u3069\u3067\u30DA\u30FC\u30B8\u3092\u9818\u57DF\u5206\u3051\u3057\u3001\u7D20\u65E9\u3044\u79FB\u52D5\u3092\u53EF\u80FD\u306B\u3002",
173
+ status: "ready"
174
+ },
175
+ // ── フォーム・入力 ─────────────────────────
176
+ {
177
+ slug: "button",
178
+ ja: "\u30DC\u30BF\u30F3",
179
+ en: "Button",
180
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
181
+ summary: "\u3059\u3079\u3066\u306E\u57FA\u672C\u3002button \u8981\u7D20\u3092\u4F7F\u3048\u3070\u5F97\u3089\u308C\u308B\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u3068\u3001\u81EA\u4F5C\u306E\u843D\u3068\u3057\u7A74\u3002",
182
+ status: "ready"
183
+ },
184
+ {
185
+ slug: "checkbox",
186
+ ja: "\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9",
187
+ en: "Checkbox",
188
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
189
+ summary: "\u30AA\u30F3/\u30AA\u30D5\u306E\u9078\u629E\u3002\u4E2D\u9593\u72B6\u614B\uFF08mixed\uFF09\u3092\u542B\u3080\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u306E\u6271\u3044\u3082\u3002",
190
+ status: "ready"
191
+ },
192
+ {
193
+ slug: "radio-group",
194
+ ja: "\u30E9\u30B8\u30AA\u30B0\u30EB\u30FC\u30D7",
195
+ en: "Radio Group",
196
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
197
+ summary: "\u8907\u6570\u304B\u30891\u3064\u3092\u9078\u3076\u3002\u77E2\u5370\u30AD\u30FC\u79FB\u52D5\u3068 roving tabindex \u306E\u4EE3\u8868\u4F8B\u3002",
198
+ status: "ready"
199
+ },
200
+ {
201
+ slug: "switch",
202
+ ja: "\u30B9\u30A4\u30C3\u30C1",
203
+ en: "Switch",
204
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
205
+ summary: '\u30AA\u30F3/\u30AA\u30D5\u306E\u30C8\u30B0\u30EB\u3002\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3068\u306E\u9055\u3044\u3068 role="switch" \u306E\u4F7F\u3044\u65B9\u3002',
206
+ status: "ready"
207
+ },
208
+ {
209
+ slug: "combobox",
210
+ ja: "\u30B3\u30F3\u30DC\u30DC\u30C3\u30AF\u30B9",
211
+ en: "Combobox",
212
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
213
+ summary: "\u5165\u529B\uFF0B\u5019\u88DC\u30EA\u30B9\u30C8\uFF08\u30AA\u30FC\u30C8\u30B3\u30F3\u30D7\u30EA\u30FC\u30C8\uFF09\u3002APG \u3067\u3082\u6700\u96E3\u95A2\u306E1\u3064\u3002",
214
+ status: "ready"
215
+ },
216
+ {
217
+ slug: "listbox",
218
+ ja: "\u30EA\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9",
219
+ en: "Listbox",
220
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
221
+ summary: "\u9078\u629E\u80A2\u306E\u30EA\u30B9\u30C8\u304B\u3089\u9078\u3076\u3002\u5358\u4E00/\u8907\u6570\u9078\u629E\u3068\u77E2\u5370\u30AD\u30FC\u64CD\u4F5C\u3002",
222
+ status: "ready"
223
+ },
224
+ {
225
+ slug: "slider",
226
+ ja: "\u30B9\u30E9\u30A4\u30C0\u30FC",
227
+ en: "Slider",
228
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
229
+ summary: "\u5024\u3092\u7BC4\u56F2\u304B\u3089\u9078\u3076\u3002aria-valuenow/min/max \u3068\u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u3002",
230
+ status: "ready"
231
+ },
232
+ {
233
+ slug: "slider-multithumb",
234
+ ja: "\u30B9\u30E9\u30A4\u30C0\u30FC\uFF08\u8907\u6570\u3064\u307E\u307F\uFF09",
235
+ en: "Slider (Multi-Thumb)",
236
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
237
+ summary: "\u4FA1\u683C\u5E2F\u306A\u3069\u306E\u7BC4\u56F2\u9078\u629E\u3002\u3064\u307E\u307F\u540C\u58EB\u306E\u5E72\u6E09\u3068\u30E9\u30D9\u30EA\u30F3\u30B0\u304C\u8AD6\u70B9\u3002",
238
+ status: "ready"
239
+ },
240
+ {
241
+ slug: "spinbutton",
242
+ ja: "\u30B9\u30D4\u30F3\u30DC\u30BF\u30F3",
243
+ en: "Spinbutton",
244
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
245
+ summary: "\u6570\u5024\u306E\u5897\u6E1B\u5165\u529B\u3002\u4E0A\u4E0B\u30AD\u30FC\u3068\u30DC\u30BF\u30F3\u3067\u306E\u5897\u6E1B\u3001\u7BC4\u56F2\u306E\u901A\u77E5\u3002",
246
+ status: "ready"
247
+ },
248
+ {
249
+ slug: "meter",
250
+ ja: "\u30E1\u30FC\u30BF\u30FC",
251
+ en: "Meter",
252
+ category: "\u30D5\u30A9\u30FC\u30E0\u30FB\u5165\u529B",
253
+ summary: "\u65E2\u77E5\u306E\u7BC4\u56F2\u5185\u306E\u91CF\uFF08\u30C7\u30A3\u30B9\u30AF\u4F7F\u7528\u7387\u306A\u3069\uFF09\u3092\u793A\u3059\u8868\u793A\u5C02\u7528\u306E\u6307\u6A19\u3002",
254
+ status: "ready"
255
+ },
256
+ // ── タブ・ツールバー ───────────────────────
257
+ {
258
+ slug: "tabs",
259
+ ja: "\u30BF\u30D6",
260
+ en: "Tabs",
261
+ category: "\u30BF\u30D6\u30FB\u30C4\u30FC\u30EB\u30D0\u30FC",
262
+ summary: "\u540C\u3058\u9818\u57DF\u3067\u5185\u5BB9\u3092\u5207\u308A\u66FF\u3048\u308B\u3002\u77E2\u5370\u30AD\u30FC\u79FB\u52D5\u30FBaria-selected\u30FBroving tabindex\u3002",
263
+ status: "ready"
264
+ },
265
+ {
266
+ slug: "toolbar",
267
+ ja: "\u30C4\u30FC\u30EB\u30D0\u30FC",
268
+ en: "Toolbar",
269
+ category: "\u30BF\u30D6\u30FB\u30C4\u30FC\u30EB\u30D0\u30FC",
270
+ summary: "\u30DC\u30BF\u30F3\u7FA4\u3092\u307E\u3068\u3081\u3001Tab 1\u56DE\u3067\u5165\u3063\u3066\u77E2\u5370\u3067\u79FB\u52D5\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u30D1\u30BF\u30FC\u30F3\u3002",
271
+ status: "ready"
272
+ },
273
+ // ── データ表示 ─────────────────────────────
274
+ {
275
+ slug: "table",
276
+ ja: "\u30C6\u30FC\u30D6\u30EB",
277
+ en: "Table",
278
+ category: "\u30C7\u30FC\u30BF\u8868\u793A",
279
+ summary: "\u8868\u30C7\u30FC\u30BF\u3002table \u8981\u7D20\u3068\u898B\u51FA\u3057\u30BB\u30EB\u306E\u95A2\u9023\u4ED8\u3051\u304C\u8AAD\u307F\u4E0A\u3052\u306E\u9375\u3002",
280
+ status: "ready"
281
+ },
282
+ {
283
+ slug: "grid",
284
+ ja: "\u30B0\u30EA\u30C3\u30C9",
285
+ en: "Grid",
286
+ category: "\u30C7\u30FC\u30BF\u8868\u793A",
287
+ summary: "\u30BB\u30EB\u5358\u4F4D\u3067\u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u3067\u304D\u308B\u5BFE\u8A71\u7684\u306A\u8868\uFF08\u30C7\u30FC\u30BF\u30B0\u30EA\u30C3\u30C9\uFF09\u3002",
288
+ status: "ready"
289
+ },
290
+ {
291
+ slug: "treegrid",
292
+ ja: "\u30C4\u30EA\u30FC\u30B0\u30EA\u30C3\u30C9",
293
+ en: "Treegrid",
294
+ category: "\u30C7\u30FC\u30BF\u8868\u793A",
295
+ summary: "\u884C\u3092\u5C55\u958B/\u6298\u308A\u305F\u305F\u307F\u3067\u304D\u308B\u30B0\u30EA\u30C3\u30C9\u3002\u30C4\u30EA\u30FC\u3068\u30B0\u30EA\u30C3\u30C9\u306E\u8907\u5408\u3002",
296
+ status: "ready"
297
+ },
298
+ {
299
+ slug: "tree-view",
300
+ ja: "\u30C4\u30EA\u30FC\u30D3\u30E5\u30FC",
301
+ en: "Tree View",
302
+ category: "\u30C7\u30FC\u30BF\u8868\u793A",
303
+ summary: "\u968E\u5C64\u69CB\u9020\u306E\u8868\u793A\u3002\u30D5\u30A9\u30EB\u30C0\u30C4\u30EA\u30FC\u306E\u3088\u3046\u306A\u5C55\u958B\u30FB\u79FB\u52D5\u64CD\u4F5C\u3002",
304
+ status: "ready"
305
+ },
306
+ {
307
+ slug: "feed",
308
+ ja: "\u30D5\u30A3\u30FC\u30C9",
309
+ en: "Feed",
310
+ category: "\u30C7\u30FC\u30BF\u8868\u793A",
311
+ summary: "\u7121\u9650\u30B9\u30AF\u30ED\u30FC\u30EB\u306E\u8A18\u4E8B\u4E00\u89A7\u3092\u3001\u652F\u63F4\u6280\u8853\u3067\u3082\u8AAD\u307F\u9032\u3081\u3089\u308C\u308B\u3088\u3046\u306B\u3059\u308B\u3002",
312
+ status: "ready"
313
+ },
314
+ // ── その他 ─────────────────────────────────
315
+ {
316
+ slug: "carousel",
317
+ ja: "\u30AB\u30EB\u30FC\u30BB\u30EB",
318
+ en: "Carousel",
319
+ category: "\u305D\u306E\u4ED6",
320
+ summary: "\u81EA\u52D5\u3067\u5207\u308A\u66FF\u308F\u308B\u30B9\u30E9\u30A4\u30C9\u3002\u518D\u751F/\u505C\u6B62\u3068\u8AAD\u307F\u4E0A\u3052\u914D\u616E\u304C\u91CD\u8981\u3002",
321
+ status: "ready"
322
+ },
323
+ {
324
+ slug: "tooltip",
325
+ ja: "\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7",
326
+ en: "Tooltip",
327
+ category: "\u305D\u306E\u4ED6",
328
+ summary: "\u30D5\u30A9\u30FC\u30AB\u30B9/\u30DB\u30D0\u30FC\u3067\u51FA\u308B\u88DC\u8DB3\u3002aria-describedby \u3068\u30AD\u30FC\u30DC\u30FC\u30C9\u5BFE\u5FDC\u3002",
329
+ status: "ready"
330
+ },
331
+ {
332
+ slug: "window-splitter",
333
+ ja: "\u30A6\u30A3\u30F3\u30C9\u30A6\u30B9\u30D7\u30EA\u30C3\u30BF\u30FC",
334
+ en: "Window Splitter",
335
+ category: "\u305D\u306E\u4ED6",
336
+ summary: "2\u3064\u306E\u9818\u57DF\u306E\u5883\u754C\u3092\u30C9\u30E9\u30C3\u30B0/\u30AD\u30FC\u3067\u52D5\u304B\u3059\u30EA\u30B5\u30A4\u30BA\u7528\u306E\u30CF\u30F3\u30C9\u30EB\u3002",
337
+ status: "ready"
338
+ }
339
+ ];
340
+ var patterns = patternSchema.array().parse(rawPatterns);
341
+ function getPattern(slug) {
342
+ return patterns.find((p) => p.slug === slug);
343
+ }
344
+ function patternsByCategory() {
345
+ return categories.map((category) => ({
346
+ category,
347
+ items: patterns.filter((p) => p.category === category)
348
+ }));
349
+ }
350
+ var waic = (anchor) => `https://waic.jp/translations/WCAG22/#${anchor}`;
351
+ var understanding = (anchor) => `https://www.w3.org/WAI/WCAG22/Understanding/${anchor}.html`;
352
+ var rawCriteria = [
353
+ // ───────────────────────────────────────── 知覚可能 ─────
354
+ {
355
+ num: "1.1.1",
356
+ slug: "1-1-1",
357
+ ja: "\u975E\u30C6\u30AD\u30B9\u30C8\u30B3\u30F3\u30C6\u30F3\u30C4",
358
+ en: "Non-text Content",
359
+ level: "A",
360
+ principle: "\u77E5\u899A\u53EF\u80FD",
361
+ guideline: "1.1 \u30C6\u30AD\u30B9\u30C8\u306B\u3088\u308B\u4EE3\u66FF",
362
+ summary: "\u753B\u50CF\u30FB\u30A2\u30A4\u30B3\u30F3\u30FB\u56F3\u306A\u3069\u6587\u5B57\u3067\u306A\u3044\u30B3\u30F3\u30C6\u30F3\u30C4\u306B\u306F\u3001\u540C\u3058\u610F\u5473\u3092\u4F1D\u3048\u308B\u4EE3\u66FF\u30C6\u30AD\u30B9\u30C8\u3092\u7528\u610F\u3059\u308B\u3002\u88C5\u98FE\u3060\u3051\u306E\u3082\u306E\u306F\u652F\u63F4\u6280\u8853\u304B\u3089\u96A0\u3059\u3002",
363
+ waicUrl: waic("non-text-content"),
364
+ understandingUrl: understanding("non-text-content"),
365
+ patterns: ["meter", "table"]
366
+ },
367
+ {
368
+ num: "1.3.1",
369
+ slug: "1-3-1",
370
+ ja: "\u60C5\u5831\u53CA\u3073\u95A2\u4FC2\u6027",
371
+ en: "Info and Relationships",
372
+ level: "A",
373
+ principle: "\u77E5\u899A\u53EF\u80FD",
374
+ guideline: "1.3 \u9069\u5FDC\u53EF\u80FD",
375
+ summary: "\u898B\u305F\u76EE\u3067\u4F1D\u3048\u3066\u3044\u308B\u69CB\u9020\u3084\u95A2\u4FC2\uFF08\u898B\u51FA\u3057\u30FB\u30EA\u30B9\u30C8\u30FB\u8868\u306E\u5BFE\u5FDC\u30FB\u30E9\u30D9\u30EB\u3068\u5165\u529B\u6B04\u306E\u7D50\u3073\u3064\u304D\uFF09\u3092\u3001HTML \u306E\u30DE\u30FC\u30AF\u30A2\u30C3\u30D7\u3084 ARIA \u3067\u30D7\u30ED\u30B0\u30E9\u30E0\u306B\u3082\u4F1D\u308F\u308B\u5F62\u306B\u3059\u308B\u3002",
376
+ waicUrl: waic("info-and-relationships"),
377
+ understandingUrl: understanding("info-and-relationships"),
378
+ patterns: [
379
+ "accordion",
380
+ "disclosure",
381
+ "alert",
382
+ "dialog-modal",
383
+ "alertdialog",
384
+ "breadcrumb",
385
+ "menu-menubar",
386
+ "menu-button",
387
+ "link",
388
+ "landmarks",
389
+ "checkbox",
390
+ "radio-group",
391
+ "switch",
392
+ "combobox",
393
+ "listbox",
394
+ "meter",
395
+ "tabs",
396
+ "table",
397
+ "grid",
398
+ "treegrid",
399
+ "tree-view",
400
+ "feed",
401
+ "carousel",
402
+ "tooltip"
403
+ ]
404
+ },
405
+ {
406
+ num: "1.4.3",
407
+ slug: "1-4-3",
408
+ ja: "\u30B3\u30F3\u30C8\u30E9\u30B9\u30C8\uFF08\u6700\u4F4E\u9650\uFF09",
409
+ en: "Contrast (Minimum)",
410
+ level: "AA",
411
+ principle: "\u77E5\u899A\u53EF\u80FD",
412
+ guideline: "1.4 \u5224\u5225\u53EF\u80FD",
413
+ summary: "\u6587\u5B57\u3068\u80CC\u666F\u306E\u660E\u6697\u306E\u5DEE\uFF08\u30B3\u30F3\u30C8\u30E9\u30B9\u30C8\u6BD4\uFF09\u3092\u3001\u901A\u5E38\u306E\u6587\u5B57\u3067 4.5:1 \u4EE5\u4E0A\u3001\u5927\u304D\u306A\u6587\u5B57\u3067 3:1 \u4EE5\u4E0A\u306B\u3059\u308B\u3002",
414
+ waicUrl: waic("contrast-minimum"),
415
+ understandingUrl: understanding("contrast-minimum"),
416
+ patterns: []
417
+ },
418
+ {
419
+ num: "1.4.11",
420
+ slug: "1-4-11",
421
+ ja: "\u975E\u30C6\u30AD\u30B9\u30C8\u306E\u30B3\u30F3\u30C8\u30E9\u30B9\u30C8",
422
+ en: "Non-text Contrast",
423
+ level: "AA",
424
+ principle: "\u77E5\u899A\u53EF\u80FD",
425
+ guideline: "1.4 \u5224\u5225\u53EF\u80FD",
426
+ summary: "\u30DC\u30BF\u30F3\u306E\u5883\u754C\u3084\u30D5\u30A9\u30FC\u30E0\u90E8\u54C1\u3001\u72B6\u614B\u3092\u793A\u3059\u30A2\u30A4\u30B3\u30F3\u306A\u3069\u3001\u64CD\u4F5C\u306B\u5FC5\u8981\u306A\u898B\u305F\u76EE\u306E\u8981\u7D20\u3082\u80CC\u666F\u3068 3:1 \u4EE5\u4E0A\u306E\u30B3\u30F3\u30C8\u30E9\u30B9\u30C8\u3092\u78BA\u4FDD\u3059\u308B\u3002",
427
+ waicUrl: waic("non-text-contrast"),
428
+ understandingUrl: understanding("non-text-contrast"),
429
+ patterns: ["button", "slider", "slider-multithumb"]
430
+ },
431
+ {
432
+ num: "1.4.13",
433
+ slug: "1-4-13",
434
+ ja: "\u30DB\u30D0\u30FC\u53C8\u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u8868\u793A\u3055\u308C\u308B\u30B3\u30F3\u30C6\u30F3\u30C4",
435
+ en: "Content on Hover or Focus",
436
+ level: "AA",
437
+ principle: "\u77E5\u899A\u53EF\u80FD",
438
+ guideline: "1.4 \u5224\u5225\u53EF\u80FD",
439
+ summary: "\u30DB\u30D0\u30FC\u3084\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u51FA\u308B\u8FFD\u52A0\u8868\u793A\uFF08\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u7B49\uFF09\u306F\u3001\u6D88\u3055\u305A\u306B\u8AAD\u3081\u308B\u30FB\u30DD\u30A4\u30F3\u30BF\u3092\u91CD\u306D\u3089\u308C\u308B\u30FBEsc \u306A\u3069\u3067\u6D88\u305B\u308B\u3001\u306E3\u3064\u3092\u6E80\u305F\u3059\u3002",
440
+ waicUrl: waic("content-on-hover-or-focus"),
441
+ understandingUrl: understanding("content-on-hover-or-focus"),
442
+ patterns: ["tooltip"]
443
+ },
444
+ // ───────────────────────────────────────── 操作可能 ─────
445
+ {
446
+ num: "2.1.1",
447
+ slug: "2-1-1",
448
+ ja: "\u30AD\u30FC\u30DC\u30FC\u30C9",
449
+ en: "Keyboard",
450
+ level: "A",
451
+ principle: "\u64CD\u4F5C\u53EF\u80FD",
452
+ guideline: "2.1 \u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u53EF\u80FD",
453
+ summary: "\u3059\u3079\u3066\u306E\u6A5F\u80FD\u3092\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u64CD\u4F5C\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u3002\u30DE\u30A6\u30B9\u524D\u63D0\u306E\u72EC\u81EA\u90E8\u54C1\u3067\u3082\u3001Tab \u3067\u5230\u9054\u3057 Enter/Space/\u77E2\u5370\u306A\u3069\u3067\u64CD\u4F5C\u3067\u304D\u308B\u3053\u3068\u3002",
454
+ waicUrl: waic("keyboard"),
455
+ understandingUrl: understanding("keyboard"),
456
+ patterns: [
457
+ "accordion",
458
+ "disclosure",
459
+ "menu-menubar",
460
+ "menu-button",
461
+ "link",
462
+ "button",
463
+ "checkbox",
464
+ "radio-group",
465
+ "switch",
466
+ "combobox",
467
+ "listbox",
468
+ "slider",
469
+ "slider-multithumb",
470
+ "spinbutton",
471
+ "tabs",
472
+ "toolbar",
473
+ "grid",
474
+ "treegrid",
475
+ "tree-view",
476
+ "carousel",
477
+ "window-splitter"
478
+ ]
479
+ },
480
+ {
481
+ num: "2.1.2",
482
+ slug: "2-1-2",
483
+ ja: "\u30AD\u30FC\u30DC\u30FC\u30C9\u30C8\u30E9\u30C3\u30D7\u306A\u3057",
484
+ en: "No Keyboard Trap",
485
+ level: "A",
486
+ principle: "\u64CD\u4F5C\u53EF\u80FD",
487
+ guideline: "2.1 \u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u53EF\u80FD",
488
+ summary: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u5165\u3063\u305F\u5834\u6240\u304B\u3089\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u629C\u3051\u51FA\u305B\u308B\u3088\u3046\u306B\u3059\u308B\u3002\u30E2\u30FC\u30C0\u30EB\u5185\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u9589\u3058\u8FBC\u3081\u3089\u308C\u305F\u307E\u307E\u623B\u308C\u306A\u3044\u72B6\u614B\u3092\u4F5C\u3089\u306A\u3044\u3002",
489
+ waicUrl: waic("no-keyboard-trap"),
490
+ understandingUrl: understanding("no-keyboard-trap"),
491
+ patterns: ["dialog-modal", "alertdialog"]
492
+ },
493
+ {
494
+ num: "2.2.2",
495
+ slug: "2-2-2",
496
+ ja: "\u4E00\u6642\u505C\u6B62\u3001\u505C\u6B62\u3001\u975E\u8868\u793A",
497
+ en: "Pause, Stop, Hide",
498
+ level: "A",
499
+ principle: "\u64CD\u4F5C\u53EF\u80FD",
500
+ guideline: "2.2 \u5341\u5206\u306A\u6642\u9593",
501
+ summary: "\u81EA\u52D5\u3067\u52D5\u304F\u30FB\u70B9\u6EC5\u3059\u308B\u30FB\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B\u30B3\u30F3\u30C6\u30F3\u30C4\uFF08\u30AB\u30EB\u30FC\u30BB\u30EB\u7B49\uFF09\u306F\u3001\u30E6\u30FC\u30B6\u30FC\u304C\u4E00\u6642\u505C\u6B62\u30FB\u505C\u6B62\u30FB\u975E\u8868\u793A\u306B\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u3002",
502
+ waicUrl: waic("pause-stop-hide"),
503
+ understandingUrl: understanding("pause-stop-hide"),
504
+ patterns: ["carousel"]
505
+ },
506
+ {
507
+ num: "2.4.3",
508
+ slug: "2-4-3",
509
+ ja: "\u30D5\u30A9\u30FC\u30AB\u30B9\u9806\u5E8F",
510
+ en: "Focus Order",
511
+ level: "A",
512
+ principle: "\u64CD\u4F5C\u53EF\u80FD",
513
+ guideline: "2.4 \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u53EF\u80FD",
514
+ summary: "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u79FB\u308B\u9806\u756A\u3092\u3001\u610F\u5473\u3068\u64CD\u4F5C\u304C\u901A\u3058\u308B\u81EA\u7136\u306A\u9806\u5E8F\u306B\u3059\u308B\u3002\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u958B\u3044\u305F\u3089\u4E2D\u3078\u3001\u9589\u3058\u305F\u3089\u5143\u306E\u4F4D\u7F6E\u3078\u3001\u3068\u3044\u3063\u305F\u79FB\u52D5\u3082\u542B\u3080\u3002",
515
+ waicUrl: waic("focus-order"),
516
+ understandingUrl: understanding("focus-order"),
517
+ patterns: [
518
+ "accordion",
519
+ "dialog-modal",
520
+ "alertdialog",
521
+ "breadcrumb",
522
+ "menu-menubar",
523
+ "landmarks",
524
+ "radio-group",
525
+ "tabs",
526
+ "toolbar",
527
+ "grid"
528
+ ]
529
+ },
530
+ {
531
+ num: "2.4.7",
532
+ slug: "2-4-7",
533
+ ja: "\u30D5\u30A9\u30FC\u30AB\u30B9\u306E\u53EF\u8996\u5316",
534
+ en: "Focus Visible",
535
+ level: "AA",
536
+ principle: "\u64CD\u4F5C\u53EF\u80FD",
537
+ guideline: "2.4 \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u53EF\u80FD",
538
+ summary: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3057\u3066\u3044\u308B\u4ECA\u3069\u3053\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u3042\u308B\u304B\u304C\u3001\u898B\u3066\u5206\u304B\u308B\u3088\u3046\u306B\u3059\u308B\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u305F\u307E\u307E\u306B\u3057\u306A\u3044\u3002",
539
+ waicUrl: waic("focus-visible"),
540
+ understandingUrl: understanding("focus-visible"),
541
+ patterns: ["accordion", "disclosure", "dialog-modal", "menu-menubar", "link", "button", "tabs"]
542
+ },
543
+ {
544
+ num: "2.4.11",
545
+ slug: "2-4-11",
546
+ ja: "\u96A0\u3055\u308C\u306A\u3044\u30D5\u30A9\u30FC\u30AB\u30B9\uFF08\u6700\u4F4E\u9650\uFF09",
547
+ en: "Focus Not Obscured (Minimum)",
548
+ level: "AA",
549
+ principle: "\u64CD\u4F5C\u53EF\u80FD",
550
+ guideline: "2.4 \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u53EF\u80FD",
551
+ isNew22: true,
552
+ summary: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3057\u305F\u8981\u7D20\u304C\u3001\u56FA\u5B9A\u30D8\u30C3\u30C0\u30FC\u3084\u30C0\u30A4\u30A2\u30ED\u30B0\u306A\u3069\u306B\u5B8C\u5168\u306B\u96A0\u308C\u3066\u898B\u3048\u306A\u304F\u306A\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B\u3002",
553
+ waicUrl: waic("focus-not-obscured-minimum"),
554
+ understandingUrl: understanding("focus-not-obscured-minimum"),
555
+ patterns: ["dialog-modal"]
556
+ },
557
+ {
558
+ num: "2.5.7",
559
+ slug: "2-5-7",
560
+ ja: "\u30C9\u30E9\u30C3\u30B0\u52D5\u4F5C",
561
+ en: "Dragging Movements",
562
+ level: "AA",
563
+ principle: "\u64CD\u4F5C\u53EF\u80FD",
564
+ guideline: "2.5 \u5165\u529B\u30E2\u30C0\u30EA\u30C6\u30A3",
565
+ isNew22: true,
566
+ summary: "\u30C9\u30E9\u30C3\u30B0\u3067\u884C\u3046\u64CD\u4F5C\uFF08\u30B9\u30E9\u30A4\u30C0\u30FC\u30FB\u4E26\u3079\u66FF\u3048\u30FB\u5883\u754C\u306E\u79FB\u52D5\u306A\u3069\uFF09\u306B\u306F\u3001\u30C9\u30E9\u30C3\u30B0\u3092\u4F7F\u308F\u306A\u3044\u4EE3\u66FF\u624B\u6BB5\uFF08\u30AF\u30EA\u30C3\u30AF\u3084\u30DC\u30BF\u30F3\uFF09\u3082\u7528\u610F\u3059\u308B\u3002",
567
+ waicUrl: waic("dragging-movements"),
568
+ understandingUrl: understanding("dragging-movements"),
569
+ patterns: ["slider", "slider-multithumb", "window-splitter"]
570
+ },
571
+ {
572
+ num: "2.5.8",
573
+ slug: "2-5-8",
574
+ ja: "\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u30B5\u30A4\u30BA\uFF08\u6700\u5C0F\uFF09",
575
+ en: "Target Size (Minimum)",
576
+ level: "AA",
577
+ principle: "\u64CD\u4F5C\u53EF\u80FD",
578
+ guideline: "2.5 \u5165\u529B\u30E2\u30C0\u30EA\u30C6\u30A3",
579
+ isNew22: true,
580
+ summary: "\u30AF\u30EA\u30C3\u30AF\u30FB\u30BF\u30C3\u30D7\u3067\u304D\u308B\u5BFE\u8C61\u306F\u539F\u5247 24\xD724 CSS\u30D4\u30AF\u30BB\u30EB\u4EE5\u4E0A\u306B\u3059\u308B\u304B\u3001\u5341\u5206\u306A\u9593\u9694\u3092\u7A7A\u3051\u308B\u3002\u5C0F\u3055\u3059\u304E\u308B\u64CD\u4F5C\u5BFE\u8C61\u3092\u907F\u3051\u308B\u3002",
581
+ waicUrl: waic("target-size-minimum"),
582
+ understandingUrl: understanding("target-size-minimum"),
583
+ patterns: ["menu-button", "link", "button", "checkbox", "switch", "spinbutton"]
584
+ },
585
+ // ───────────────────────────────────────── 理解可能 ─────
586
+ {
587
+ num: "3.2.1",
588
+ slug: "3-2-1",
589
+ ja: "\u30D5\u30A9\u30FC\u30AB\u30B9\u6642",
590
+ en: "On Focus",
591
+ level: "A",
592
+ principle: "\u7406\u89E3\u53EF\u80FD",
593
+ guideline: "3.2 \u4E88\u6E2C\u53EF\u80FD",
594
+ summary: "\u8981\u7D20\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3057\u305F\u3060\u3051\u3067\u3001\u30DA\u30FC\u30B8\u9077\u79FB\u3084\u30E2\u30FC\u30C0\u30EB\u8868\u793A\u306A\u3069\u6587\u8108\u304C\u52DD\u624B\u306B\u5909\u308F\u308B\u3053\u3068\u306E\u306A\u3044\u3088\u3046\u306B\u3059\u308B\u3002",
595
+ waicUrl: waic("on-focus"),
596
+ understandingUrl: understanding("on-focus"),
597
+ patterns: []
598
+ },
599
+ {
600
+ num: "3.2.2",
601
+ slug: "3-2-2",
602
+ ja: "\u5165\u529B\u6642",
603
+ en: "On Input",
604
+ level: "A",
605
+ principle: "\u7406\u89E3\u53EF\u80FD",
606
+ guideline: "3.2 \u4E88\u6E2C\u53EF\u80FD",
607
+ summary: "\u5024\u3092\u9078\u3093\u3060\u308A\u5165\u529B\u3057\u305F\u3060\u3051\u3067\u4E88\u671F\u305B\u305A\u6587\u8108\u304C\u5909\u308F\u3089\u306A\u3044\u3088\u3046\u306B\u3059\u308B\u3002\u5909\u3048\u308B\u5834\u5408\u306F\u4E8B\u524D\u306B\u77E5\u3089\u305B\u308B\u3002",
608
+ waicUrl: waic("on-input"),
609
+ understandingUrl: understanding("on-input"),
610
+ patterns: []
611
+ },
612
+ {
613
+ num: "3.2.6",
614
+ slug: "3-2-6",
615
+ ja: "\u4E00\u8CAB\u3057\u305F\u30D8\u30EB\u30D7",
616
+ en: "Consistent Help",
617
+ level: "A",
618
+ principle: "\u7406\u89E3\u53EF\u80FD",
619
+ guideline: "3.2 \u4E88\u6E2C\u53EF\u80FD",
620
+ isNew22: true,
621
+ summary: "\u554F\u3044\u5408\u308F\u305B\u5148\u3084\u30D8\u30EB\u30D7\u3078\u306E\u5C0E\u7DDA\u3092\u8907\u6570\u30DA\u30FC\u30B8\u3067\u63D0\u4F9B\u3059\u308B\u5834\u5408\u3001\u5404\u30DA\u30FC\u30B8\u3067\u540C\u3058\u76F8\u5BFE\u7684\u306A\u4F4D\u7F6E\u30FB\u9806\u5E8F\u306B\u7F6E\u304F\u3002",
622
+ waicUrl: waic("consistent-help"),
623
+ understandingUrl: understanding("consistent-help"),
624
+ patterns: []
625
+ },
626
+ {
627
+ num: "3.3.1",
628
+ slug: "3-3-1",
629
+ ja: "\u30A8\u30E9\u30FC\u306E\u7279\u5B9A",
630
+ en: "Error Identification",
631
+ level: "A",
632
+ principle: "\u7406\u89E3\u53EF\u80FD",
633
+ guideline: "3.3 \u5165\u529B\u652F\u63F4",
634
+ summary: "\u5165\u529B\u30A8\u30E9\u30FC\u3092\u81EA\u52D5\u691C\u51FA\u3057\u305F\u3089\u3001\u3069\u3053\u304C\u30FB\u4F55\u304C\u9593\u9055\u3063\u3066\u3044\u308B\u304B\u3092\u30C6\u30AD\u30B9\u30C8\u3067\u5177\u4F53\u7684\u306B\u4F1D\u3048\u308B\u3002",
635
+ waicUrl: waic("error-identification"),
636
+ understandingUrl: understanding("error-identification"),
637
+ patterns: []
638
+ },
639
+ {
640
+ num: "3.3.2",
641
+ slug: "3-3-2",
642
+ ja: "\u30E9\u30D9\u30EB\u53C8\u306F\u8AAC\u660E",
643
+ en: "Labels or Instructions",
644
+ level: "A",
645
+ principle: "\u7406\u89E3\u53EF\u80FD",
646
+ guideline: "3.3 \u5165\u529B\u652F\u63F4",
647
+ summary: "\u30D5\u30A9\u30FC\u30E0\u90E8\u54C1\u306B\u306F\u3001\u4F55\u3092\u5165\u529B\u3059\u308C\u3070\u3088\u3044\u304B\u5206\u304B\u308B\u30E9\u30D9\u30EB\u3084\u8AAC\u660E\u3092\u4ED8\u3051\u308B\u3002\u30D7\u30EC\u30FC\u30B9\u30DB\u30EB\u30C0\u30FC\u3060\u3051\u306B\u983C\u3089\u306A\u3044\u3002",
648
+ waicUrl: waic("labels-or-instructions"),
649
+ understandingUrl: understanding("labels-or-instructions"),
650
+ patterns: ["checkbox", "radio-group", "combobox", "listbox", "slider", "spinbutton"]
651
+ },
652
+ {
653
+ num: "3.3.7",
654
+ slug: "3-3-7",
655
+ ja: "\u5197\u9577\u306A\u5165\u529B",
656
+ en: "Redundant Entry",
657
+ level: "A",
658
+ principle: "\u7406\u89E3\u53EF\u80FD",
659
+ guideline: "3.3 \u5165\u529B\u652F\u63F4",
660
+ isNew22: true,
661
+ summary: "\u540C\u3058\u624B\u7D9A\u304D\u306E\u4E2D\u3067\u4E00\u5EA6\u5165\u529B\u3057\u305F\u60C5\u5831\u3092\u518D\u5165\u529B\u3055\u305B\u306A\u3044\u3002\u81EA\u52D5\u5165\u529B\u3059\u308B\u304B\u3001\u524D\u306B\u5165\u529B\u3057\u305F\u5024\u304B\u3089\u9078\u3079\u308B\u3088\u3046\u306B\u3059\u308B\u3002",
662
+ waicUrl: waic("redundant-entry"),
663
+ understandingUrl: understanding("redundant-entry"),
664
+ patterns: []
665
+ },
666
+ {
667
+ num: "3.3.8",
668
+ slug: "3-3-8",
669
+ ja: "\u30A2\u30AF\u30BB\u30B7\u30D6\u30EB\u306A\u8A8D\u8A3C\uFF08\u6700\u4F4E\u9650\uFF09",
670
+ en: "Accessible Authentication (Minimum)",
671
+ level: "AA",
672
+ principle: "\u7406\u89E3\u53EF\u80FD",
673
+ guideline: "3.3 \u5165\u529B\u652F\u63F4",
674
+ isNew22: true,
675
+ summary: "\u30ED\u30B0\u30A4\u30F3\u8A8D\u8A3C\u3067\u3001\u8A18\u61B6\u3084\u30D1\u30BA\u30EB\u306E\u3088\u3046\u306A\u8A8D\u77E5\u6A5F\u80FD\u30C6\u30B9\u30C8\u3060\u3051\u306B\u983C\u3089\u305B\u306A\u3044\u3002\u30D1\u30B9\u30EF\u30FC\u30C9\u7BA1\u7406\u3084\u30B3\u30D4\u30DA\u7B49\u306E\u4EE3\u66FF\u3092\u59A8\u3052\u306A\u3044\u3002",
676
+ waicUrl: waic("accessible-authentication-minimum"),
677
+ understandingUrl: understanding("accessible-authentication-minimum"),
678
+ patterns: []
679
+ },
680
+ // ───────────────────────────────────────── 堅牢 ─────────
681
+ {
682
+ num: "4.1.2",
683
+ slug: "4-1-2",
684
+ ja: "\u540D\u524D\uFF08name\uFF09\u30FB\u5F79\u5272\uFF08role\uFF09\u53CA\u3073\u5024\uFF08value\uFF09",
685
+ en: "Name, Role, Value",
686
+ level: "A",
687
+ principle: "\u5805\u7262",
688
+ guideline: "4.1 \u4E92\u63DB\u6027",
689
+ summary: "\u3059\u3079\u3066\u306E UI \u90E8\u54C1\u306B\u3064\u3044\u3066\u3001\u540D\u524D\uFF08\u4F55\u304B\uFF09\u30FB\u5F79\u5272\uFF08\u7A2E\u985E\uFF09\u30FB\u72B6\u614B\u3084\u5024\uFF08\u4ECA\u3069\u3046\u306A\u3063\u3066\u3044\u308B\u304B\uFF09\u304C\u652F\u63F4\u6280\u8853\u306B\u4F1D\u308F\u308B\u3088\u3046\u306B\u3059\u308B\u3002\u81EA\u4F5C\u90E8\u54C1\u3067\u306F ARIA \u3067\u88DC\u3046\u3002",
690
+ waicUrl: waic("name-role-value"),
691
+ understandingUrl: understanding("name-role-value"),
692
+ patterns: [
693
+ "accordion",
694
+ "disclosure",
695
+ "dialog-modal",
696
+ "alertdialog",
697
+ "breadcrumb",
698
+ "menu-menubar",
699
+ "menu-button",
700
+ "link",
701
+ "button",
702
+ "checkbox",
703
+ "radio-group",
704
+ "switch",
705
+ "combobox",
706
+ "listbox",
707
+ "slider",
708
+ "slider-multithumb",
709
+ "spinbutton",
710
+ "meter",
711
+ "tabs",
712
+ "toolbar",
713
+ "grid",
714
+ "treegrid",
715
+ "tree-view",
716
+ "feed",
717
+ "carousel",
718
+ "tooltip",
719
+ "window-splitter"
720
+ ]
721
+ },
722
+ {
723
+ num: "4.1.3",
724
+ slug: "4-1-3",
725
+ ja: "\u30B9\u30C6\u30FC\u30BF\u30B9\u30E1\u30C3\u30BB\u30FC\u30B8",
726
+ en: "Status Messages",
727
+ level: "AA",
728
+ principle: "\u5805\u7262",
729
+ guideline: "4.1 \u4E92\u63DB\u6027",
730
+ summary: '\u300C\u4FDD\u5B58\u3057\u307E\u3057\u305F\u300D\u300C3\u4EF6\u30D2\u30C3\u30C8\u300D\u306A\u3069\u306E\u72B6\u614B\u901A\u77E5\u3092\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u79FB\u3055\u305A\u306B\u652F\u63F4\u6280\u8853\u3078\u4F1D\u3048\u308B\u3002live region\uFF08aria-live / role="status" \u7B49\uFF09\u3092\u4F7F\u3046\u3002',
731
+ waicUrl: waic("status-messages"),
732
+ understandingUrl: understanding("status-messages"),
733
+ patterns: ["alert", "alertdialog", "combobox", "feed"]
734
+ }
735
+ ];
736
+ var criteria = criterionSchema.array().parse(rawCriteria);
737
+ function getCriterion(slug) {
738
+ return criteria.find((c) => c.slug === slug);
739
+ }
740
+ function numKey(num) {
741
+ return num.split(".").map((n) => parseInt(n, 10));
742
+ }
743
+ function compareByNum(a, b) {
744
+ const ka = numKey(a.num);
745
+ const kb = numKey(b.num);
746
+ for (let i = 0; i < 3; i++) {
747
+ const va = ka[i] ?? 0;
748
+ const vb = kb[i] ?? 0;
749
+ if (va !== vb) return va - vb;
750
+ }
751
+ return 0;
752
+ }
753
+ function criteriaByPrinciple() {
754
+ return principles.map((principle) => ({
755
+ principle,
756
+ items: criteria.filter((c) => c.principle === principle).sort(compareByNum)
757
+ }));
758
+ }
759
+ function criteriaForPattern(patternSlug) {
760
+ return criteria.filter((c) => c.patterns.includes(patternSlug)).sort(compareByNum);
761
+ }
762
+ var accordion = {
763
+ slug: "accordion",
764
+ keyboard: [
765
+ {
766
+ keys: "Enter / Space",
767
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3057\u3066\u3044\u308B\u898B\u51FA\u3057\u306E\u30D1\u30CD\u30EB\u3092\u958B\u304F/\u9589\u3058\u308B",
768
+ requirement: "required"
769
+ },
770
+ {
771
+ keys: "Tab",
772
+ action: "\u6B21\u306E\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u8981\u7D20\uFF08\u6B21\u306E\u898B\u51FA\u3057\u306A\u3069\uFF09\u3078\u79FB\u52D5",
773
+ requirement: "required"
774
+ },
775
+ {
776
+ keys: "\u2193 / \u2191",
777
+ action: "\u6B21 / \u524D\u306E\u898B\u51FA\u3057\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
778
+ requirement: "recommended"
779
+ },
780
+ {
781
+ keys: "Home / End",
782
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\u898B\u51FA\u3057\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
783
+ requirement: "optional"
784
+ }
785
+ ],
786
+ aria: [
787
+ {
788
+ target: "\u898B\u51FA\u3057\u306E\u30DC\u30BF\u30F3",
789
+ attr: 'aria-expanded="true | false"',
790
+ meaning: "\u5BFE\u5FDC\u3059\u308B\u30D1\u30CD\u30EB\u304C\u958B\u3044\u3066\u3044\u308B\u304B\u3002\u72B6\u614B\u306E\u5909\u5316\u306B\u5408\u308F\u305B\u3066\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
791
+ },
792
+ {
793
+ target: "\u898B\u51FA\u3057\u306E\u30DC\u30BF\u30F3",
794
+ attr: 'aria-controls="\u30D1\u30CD\u30EB\u306Eid"',
795
+ meaning: "\u3069\u306E\u30D1\u30CD\u30EB\u3092\u5236\u5FA1\u3059\u308B\u30DC\u30BF\u30F3\u304B\u3092\u793A\u3059\u3002"
796
+ },
797
+ {
798
+ target: "\u898B\u51FA\u3057\u306E\u5916\u5074",
799
+ attr: "<h2>\u301C<h4>",
800
+ meaning: "\u30DA\u30FC\u30B8\u306E\u69CB\u9020\u306B\u5408\u3063\u305F\u898B\u51FA\u3057\u30EC\u30D9\u30EB\u3067\u56F2\u3080\u3002\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306E\u898B\u51FA\u3057\u30B8\u30E3\u30F3\u30D7\u306B\u5F79\u7ACB\u3064\u3002"
801
+ },
802
+ {
803
+ target: "\u30D1\u30CD\u30EB",
804
+ attr: 'role="region" + aria-labelledby="\u898B\u51FA\u3057\u306Eid"',
805
+ meaning: "\u30D1\u30CD\u30EB\u3092\u540D\u524D\u4ED8\u304D\u306E\u9818\u57DF\u306B\u3059\u308B\uFF08\u4EFB\u610F\u3060\u304C\u63A8\u5968\u3002\u9818\u57DF\u304C\u591A\u3059\u304E\u308B\u3068\u9006\u52B9\u679C\u306A\u306E\u3067\u6570\u304C\u591A\u3044\u3068\u304D\u306F\u7701\u7565\u53EF\uFF09\u3002"
806
+ },
807
+ {
808
+ target: "\u9589\u3058\u3066\u3044\u308B\u30D1\u30CD\u30EB",
809
+ attr: "hidden",
810
+ meaning: "\u9589\u3058\u3066\u3044\u308B\u9593\u306F DOM \u304B\u3089\u96A0\u3057\u3001\u30AD\u30FC\u30DC\u30FC\u30C9/\u8AAD\u307F\u4E0A\u3052\u306E\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
811
+ }
812
+ ],
813
+ checklist: [
814
+ '\u898B\u51FA\u3057\u306E\u30C8\u30EA\u30AC\u30FC\u306F <button type="button"> \u3067\u3042\u308B',
815
+ "\u30DC\u30BF\u30F3\u306F\u898B\u51FA\u3057\u8981\u7D20\uFF08<h2>\u301C<h4>\uFF09\u3067\u56F2\u307E\u308C\u3066\u3044\u308B",
816
+ "aria-expanded \u304C\u958B\u9589\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
817
+ "aria-controls \u3067\u30D1\u30CD\u30EB\u306E id \u3092\u6307\u3057\u3066\u3044\u308B",
818
+ "\u9589\u3058\u3066\u3044\u308B\u30D1\u30CD\u30EB\u306F hidden \u3067\u30AD\u30FC\u30DC\u30FC\u30C9/\u8AAD\u307F\u4E0A\u3052\u304B\u3089\u5916\u308C\u3066\u3044\u308B",
819
+ '\u30D1\u30CD\u30EB\u306B role="region" + aria-labelledby\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09',
820
+ "\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u958B\u9589\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09",
821
+ "\uFF08\u4EFB\u610F\uFF09\u2191 \u2193 Home End \u3067\u898B\u51FA\u3057\u9593\u3092\u79FB\u52D5\u3067\u304D\u308B"
822
+ ],
823
+ antipatterns: [
824
+ {
825
+ title: "div + onclick \u3067\u898B\u51FA\u3057\u3092\u4F5C\u308B",
826
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u4E00\u5207\u64CD\u4F5C\u3067\u304D\u306A\u3044\u3002"
827
+ },
828
+ {
829
+ title: "\u5F79\u5272\uFF08role\uFF09\u3092\u4F1D\u3048\u306A\u3044",
830
+ why: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306B\u306F\u300C\u305F\u3060\u306E\u30C6\u30AD\u30B9\u30C8\u300D\u306B\u805E\u3053\u3048\u3001\u62BC\u305B\u308B\u3053\u3068\u304C\u4F1D\u308F\u3089\u306A\u3044\u3002"
831
+ },
832
+ {
833
+ title: "\u72B6\u614B\u3092\u4F1D\u3048\u306A\u3044",
834
+ why: "aria-expanded \u304C\u306A\u304F\u3001\u958B\u3044\u3066\u3044\u308B\u304B\u9589\u3058\u3066\u3044\u308B\u304B\u3092\u5224\u5225\u3067\u304D\u306A\u3044\u3002"
835
+ },
836
+ {
837
+ title: "display:none \u983C\u307F\u3067\u96A0\u3059",
838
+ why: "hidden \u5C5E\u6027\u3084\u9069\u5207\u306A\u72B6\u614B\u7BA1\u7406\u304C\u306A\u304F\u3001\u30A4\u30F3\u30E9\u30A4\u30F3 style \u983C\u307F\u306B\u306A\u3063\u3066\u3044\u308B\u3002"
839
+ }
840
+ ],
841
+ notes: [
842
+ "Enter / Space \u3067\u306E\u958B\u9589\u306F\u3001\u898B\u51FA\u3057\u3092 <button> \u306B\u3059\u308B\u3060\u3051\u3067\u81EA\u52D5\u7684\u306B\u5F97\u3089\u308C\u308B\uFF08\u81EA\u524D\u306E\u30AD\u30FC\u51E6\u7406\u306F\u4E0D\u8981\uFF09\u3002",
843
+ "\u300C\u540C\u6642\u306B1\u3064\u3060\u3051\u958B\u304F\u300D\u6319\u52D5\u3067\u3082\u3001\u3059\u3079\u3066\u9589\u3058\u3089\u308C\u308B\u3088\u3046\u306B\u3057\u3066\u304A\u304F\u306E\u304C\u89AA\u5207\uFF08APG \u63A8\u5968\uFF09\u3002"
844
+ ]
845
+ };
846
+ var disclosure = {
847
+ slug: "disclosure",
848
+ keyboard: [
849
+ {
850
+ keys: "Enter / Space",
851
+ action: "\u9818\u57DF\u3092\u958B\u304F / \u9589\u3058\u308B",
852
+ requirement: "required"
853
+ },
854
+ {
855
+ keys: "Tab",
856
+ action: "\u6B21 / \u524D\u306E\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u8981\u7D20\u3078\u79FB\u52D5",
857
+ requirement: "required"
858
+ }
859
+ ],
860
+ aria: [
861
+ {
862
+ target: "\u30C8\u30EA\u30AC\u30FC",
863
+ attr: '<button type="button">',
864
+ meaning: "\u62BC\u305B\u308B\u8981\u7D20\u306B\u3059\u308B\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u30FBEnter/Space\u30FB\u300C\u30DC\u30BF\u30F3\u300D\u30ED\u30FC\u30EB\u304C\u81EA\u52D5\u3067\u4ED8\u304F\u3002"
865
+ },
866
+ {
867
+ target: "\u30C8\u30EA\u30AC\u30FC",
868
+ attr: 'aria-expanded="true | false"',
869
+ meaning: "\u9818\u57DF\u304C\u958B\u3044\u3066\u3044\u308B\u304B\u3002\u72B6\u614B\u306E\u5909\u5316\u306B\u5408\u308F\u305B\u3066\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
870
+ },
871
+ {
872
+ target: "\u30C8\u30EA\u30AC\u30FC",
873
+ attr: 'aria-controls="\u9818\u57DF\u306Eid"',
874
+ meaning: "\u3069\u306E\u9818\u57DF\u3092\u5236\u5FA1\u3059\u308B\u30DC\u30BF\u30F3\u304B\u3092\u793A\u3059\u3002"
875
+ },
876
+ {
877
+ target: "\u9589\u3058\u3066\u3044\u308B\u9818\u57DF",
878
+ attr: "hidden",
879
+ meaning: "\u9589\u3058\u3066\u3044\u308B\u9593\u306F DOM \u304B\u3089\u96A0\u3057\u3001\u30AD\u30FC\u30DC\u30FC\u30C9/\u8AAD\u307F\u4E0A\u3052\u306E\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
880
+ }
881
+ ],
882
+ checklist: [
883
+ '\u30C8\u30EA\u30AC\u30FC\u306F <button type="button"> \u3067\u3042\u308B',
884
+ "aria-expanded \u304C\u958B\u9589\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
885
+ "aria-controls \u3067\u9818\u57DF\u306E id \u3092\u6307\u3057\u3066\u3044\u308B",
886
+ "\u9589\u3058\u3066\u3044\u308B\u9818\u57DF\u306F hidden \u3067\u30AD\u30FC\u30DC\u30FC\u30C9/\u8AAD\u307F\u4E0A\u3052\u304B\u3089\u5916\u308C\u3066\u3044\u308B",
887
+ "\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u958B\u9589\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09",
888
+ "\uFF08\u4EFB\u610F\uFF09\u30DC\u30BF\u30F3\u306E\u30E9\u30D9\u30EB\u304C\u958B\u9589\u306B\u5408\u308F\u305B\u3066\u5207\u308A\u66FF\u308F\u308B"
889
+ ],
890
+ antipatterns: [
891
+ {
892
+ title: "div + onclick \u3067\u30C8\u30EA\u30AC\u30FC\u3092\u4F5C\u308B",
893
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u4E00\u5207\u64CD\u4F5C\u3067\u304D\u306A\u3044\u3002"
894
+ },
895
+ {
896
+ title: "\u5F79\u5272\u3092\u4F1D\u3048\u306A\u3044",
897
+ why: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306B\u306F\u300C\u305F\u3060\u306E\u30C6\u30AD\u30B9\u30C8\u300D\u306B\u805E\u3053\u3048\u3001\u62BC\u305B\u308B\u3068\u5206\u304B\u3089\u306A\u3044\u3002"
898
+ },
899
+ {
900
+ title: "\u72B6\u614B\u3092\u4F1D\u3048\u306A\u3044",
901
+ why: "aria-expanded \u304C\u306A\u304F\u3001\u958B/\u9589\u304C\u5224\u5225\u3067\u304D\u306A\u3044\u3002"
902
+ },
903
+ {
904
+ title: "display:none \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u30B9\u30BF\u30A4\u30EB\u983C\u307F\u306B\u3059\u308B",
905
+ why: "hidden \u5C5E\u6027\u3084\u72B6\u614B\u7BA1\u7406\u304C\u7121\u304F\u3001\u652F\u63F4\u6280\u8853\u306B\u96A0\u308C\u3066\u3044\u308B\u304B\u3069\u3046\u304B\u304C\u4F1D\u308F\u3089\u306A\u3044\u3002"
906
+ }
907
+ ],
908
+ notes: [
909
+ "Enter / Space \u3067\u306E\u958B\u9589\u306F\u3001\u30C8\u30EA\u30AC\u30FC\u3092 <button> \u306B\u3059\u308B\u3060\u3051\u3067\u81EA\u52D5\u7684\u306B\u5F97\u3089\u308C\u307E\u3059\uFF08\u81EA\u524D\u306E\u30AD\u30FC\u51E6\u7406\u306F\u4E0D\u8981\uFF09\u3002",
910
+ "\u30DC\u30BF\u30F3\u306E\u30E9\u30D9\u30EB\u3092\u300C\u3082\u3063\u3068\u898B\u308B\u300D\u21C4\u300C\u9589\u3058\u308B\u300D\u306E\u3088\u3046\u306B\u5207\u308A\u66FF\u3048\u308B\u3068\u3001\u6674\u773C\u306E\u30E6\u30FC\u30B6\u30FC\u306B\u3082\u6B21\u306E\u52D5\u4F5C\u304C\u4F1D\u308F\u3063\u3066\u89AA\u5207\u3067\u3059\u3002"
911
+ ]
912
+ };
913
+ var alert = {
914
+ slug: "alert",
915
+ keyboard: [
916
+ {
917
+ keys: "\uFF08\u5C02\u7528\u30AD\u30FC\u306A\u3057\uFF09",
918
+ action: "\u30A2\u30E9\u30FC\u30C8\u81EA\u4F53\u306B\u7279\u5225\u306A\u30AD\u30FC\u64CD\u4F5C\u306F\u306A\u3044\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u79FB\u3055\u306A\u3044\u306E\u304C\u6B63\u3057\u3044\u6319\u52D5\u3002",
919
+ requirement: "required"
920
+ },
921
+ {
922
+ keys: "Tab",
923
+ action: "\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3055\u305B\u308B\u30C8\u30EA\u30AC\u30FC\uFF08\u30DC\u30BF\u30F3\u306A\u3069\uFF09\u3078\u306F\u901A\u5E38\u3069\u304A\u308A\u79FB\u52D5\u3067\u304D\u308B\u3002",
924
+ requirement: "required"
925
+ }
926
+ ],
927
+ aria: [
928
+ {
929
+ target: "\u901A\u77E5\u9818\u57DF\u306E\u30B3\u30F3\u30C6\u30CA",
930
+ attr: 'role="alert"',
931
+ meaning: '\u7DCA\u6025\u306E\u8AAD\u307F\u4E0A\u3052\u9818\u57DF\u306B\u3059\u308B\u3002aria-live="assertive" \u76F8\u5F53\u306E\u6319\u52D5\u306B\u306A\u308B\u3002'
932
+ },
933
+ {
934
+ target: "\u901A\u77E5\u9818\u57DF\u306E\u30B3\u30F3\u30C6\u30CA",
935
+ attr: 'aria-atomic="true"\uFF08\u4EFB\u610F\uFF09',
936
+ meaning: "\u5185\u5BB9\u304C\u5909\u308F\u3063\u305F\u3068\u304D\u3001\u9818\u57DF\u5168\u4F53\u3092\u307E\u3068\u3081\u3066\u8AAD\u307F\u4E0A\u3052\u308B\u3002"
937
+ },
938
+ {
939
+ target: "\u30B3\u30F3\u30C6\u30CA\u306E\u8A2D\u7F6E\u30BF\u30A4\u30DF\u30F3\u30B0",
940
+ attr: "\uFF08\u5C5E\u6027\u3067\u306F\u306A\u304F\u5B9F\u88C5\uFF09",
941
+ meaning: "\u6700\u521D\u304B\u3089\u7A7A\u3067 DOM \u306B\u7F6E\u3044\u3066\u304A\u304F\u3002\u3042\u3068\u304B\u3089\u6587\u5B57\u3092\u5DEE\u3057\u8FBC\u3080\u3068\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u308B\u3002\u5F8C\u304B\u3089\u9818\u57DF\u3054\u3068\u633F\u5165\u3059\u308B\u3068\u8AAD\u307E\u308C\u306A\u3044\u3053\u3068\u304C\u3042\u308B\u3002"
942
+ }
943
+ ],
944
+ checklist: [
945
+ 'role="alert" \u306E\u9818\u57DF\u3092\u6700\u521D\u304B\u3089\u7A7A\u3067 DOM \u306B\u7F6E\u3044\u3066\u3044\u308B',
946
+ "\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u9818\u57DF\u306E\u30C6\u30AD\u30B9\u30C8\u3092\u5DEE\u3057\u66FF\u3048\u308B\u5F62\u3067\u633F\u5165\u3057\u3066\u3044\u308B",
947
+ "\u30A2\u30E9\u30FC\u30C8\u8868\u793A\u6642\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u596A\u3063\u3066\u3044\u306A\u3044",
948
+ '\u7DCA\u6025\u3067\u306A\u3044\u901A\u77E5\u306F role="status"\uFF08polite\uFF09\u3092\u4F7F\u3044\u5206\u3051\u3066\u3044\u308B',
949
+ "\u540C\u3058\u6587\u8A00\u306E\u518D\u901A\u77E5\u306F\u5185\u5BB9\u3092\u5909\u5316\u3055\u305B\u3066\u78BA\u5B9F\u306B\u8AAD\u307F\u4E0A\u3052\u3055\u305B\u3066\u3044\u308B",
950
+ "\u9589\u3058\u308B\u30DC\u30BF\u30F3\u3092\u4ED8\u3051\u308B\u5834\u5408\u306F\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B"
951
+ ],
952
+ antipatterns: [
953
+ {
954
+ title: "\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u306A\u3044",
955
+ why: 'role="alert" \u3082 aria-live \u3082\u7121\u3044\u306E\u3067\u3001\u5909\u5316\u304C\u901A\u77E5\u3055\u308C\u306A\u3044\u3002'
956
+ },
957
+ {
958
+ title: "\u6C17\u3065\u3051\u306A\u3044",
959
+ why: "\u753B\u9762\u306E\u5225\u306E\u5834\u6240\u3092\u8AAD\u3093\u3067\u3044\u308B\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u5229\u7528\u8005\u306B\u306F\u5B58\u5728\u81EA\u4F53\u304C\u5206\u304B\u3089\u306A\u3044\u3002"
960
+ },
961
+ {
962
+ title: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u596A\u3046",
963
+ why: "\u300C\u8AAD\u307F\u4E0A\u3052\u3055\u305B\u305F\u3044\u304B\u3089\u300D\u3068\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u596A\u3046\u306E\u3082\u8AA4\u308A\u3002\u64CD\u4F5C\u4F4D\u7F6E\u3092\u898B\u5931\u308F\u305B\u308B\u3002"
964
+ }
965
+ ],
966
+ notes: [
967
+ '\u7DCA\u6025\u3067\u306A\u3044\u901A\u77E5\uFF08\u4F8B:\u300C\u81EA\u52D5\u4FDD\u5B58\u3057\u307E\u3057\u305F\u300D\uFF09\u306F role="status"\uFF08\uFF1Daria-live="polite"\uFF09\u3092\u4F7F\u3044\u3001\u5272\u308A\u8FBC\u307E\u305A\u8AAD\u307F\u4E0A\u3052\u308B\u306E\u304C\u89AA\u5207\u3002',
968
+ "\u540C\u3058\u6587\u8A00\u3092\u7D9A\u3051\u3066\u5165\u308C\u308B\u3068\u8AAD\u307F\u4E0A\u3052\u304C\u7E70\u308A\u8FD4\u3055\u308C\u306A\u3044\u3053\u3068\u304C\u3042\u308B\u3002\u56DE\u6570\u8868\u793A\u3092\u52A0\u3048\u308B\u304B\u3001\u4E00\u5EA6\u7A7A\u306B\u3057\u3066\u304B\u3089\u5165\u308C\u76F4\u3059\u3068\u78BA\u5B9F\u3002"
969
+ ]
970
+ };
971
+ var dialogModal = {
972
+ slug: "dialog-modal",
973
+ keyboard: [
974
+ {
975
+ keys: "Esc",
976
+ action: "\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u9589\u3058\u308B\uFF08showModal() \u306A\u3089\u6A19\u6E96\u3067\u5BFE\u5FDC\uFF09",
977
+ requirement: "required"
978
+ },
979
+ {
980
+ keys: "Tab / Shift+Tab",
981
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u30C0\u30A4\u30A2\u30ED\u30B0\u5185\u3060\u3051\u3092\u5FAA\u74B0\u3059\u308B\uFF08\u5916\u306B\u6F0F\u308C\u306A\u3044\uFF09",
982
+ requirement: "required"
983
+ },
984
+ {
985
+ keys: "Enter / Space",
986
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u30DC\u30BF\u30F3\u3092\u5B9F\u884C",
987
+ requirement: "required"
988
+ }
989
+ ],
990
+ aria: [
991
+ {
992
+ target: "\u30C0\u30A4\u30A2\u30ED\u30B0\u672C\u4F53",
993
+ attr: "<dialog> \u8981\u7D20",
994
+ meaning: '\u6697\u9ED9\u306E role="dialog" \u3092\u6301\u3064\u3002showModal() \u3067\u30E2\u30FC\u30C0\u30EB\u3068\u3057\u3066\u958B\u304F\u3002'
995
+ },
996
+ {
997
+ target: "\u30C0\u30A4\u30A2\u30ED\u30B0\u672C\u4F53",
998
+ attr: 'aria-labelledby="\u898B\u51FA\u3057\u306Eid" \u307E\u305F\u306F aria-label',
999
+ meaning: "\u30C0\u30A4\u30A2\u30ED\u30B0\u306B\u540D\u524D\u3092\u4ED8\u3051\u308B\uFF08\u4E2D\u306E\u898B\u51FA\u3057\u3092\u6307\u3059\u306E\u304C\u5B9A\u756A\uFF09\u3002"
1000
+ },
1001
+ {
1002
+ target: "\u30C0\u30A4\u30A2\u30ED\u30B0\u672C\u4F53",
1003
+ attr: "aria-describedby\uFF08\u4EFB\u610F\uFF09",
1004
+ meaning: "\u88DC\u8DB3\u306E\u8AAC\u660E\u6587\u3092\u95A2\u9023\u4ED8\u3051\u308B\u3002"
1005
+ },
1006
+ {
1007
+ target: "\u80CC\u9762\u306E\u30B3\u30F3\u30C6\u30F3\u30C4",
1008
+ attr: "\uFF08\u81EA\u52D5\uFF09inert \u76F8\u5F53",
1009
+ meaning: "showModal() \u306A\u3089\u80CC\u9762\u304C\u81EA\u52D5\u3067\u64CD\u4F5C\u4E0D\u53EF\u30FB\u8AAD\u307F\u4E0A\u3052\u5BFE\u8C61\u5916\u306B\u306A\u308B\u3002\u624B\u52D5\u306A\u3089 inert \u3092\u4ED8\u3051\u308B\u3002"
1010
+ }
1011
+ ],
1012
+ checklist: [
1013
+ "\u30CD\u30A4\u30C6\u30A3\u30D6 <dialog> \u3092 showModal() \u3067\u958B\u3044\u3066\u3044\u308B",
1014
+ "\u30C0\u30A4\u30A2\u30ED\u30B0\u306B aria-labelledby\uFF08\u307E\u305F\u306F aria-label\uFF09\u3067\u540D\u524D\u304C\u3042\u308B",
1015
+ "\u958B\u304F\u3068\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u30C0\u30A4\u30A2\u30ED\u30B0\u5185\u3078\u79FB\u308B",
1016
+ "Tab \u304C\u30C0\u30A4\u30A2\u30ED\u30B0\u5185\u3060\u3051\u3092\u5FAA\u74B0\u3059\u308B\uFF08\u80CC\u9762\u306B\u6F0F\u308C\u306A\u3044\uFF09",
1017
+ "Esc \u3067\u9589\u3058\u308B",
1018
+ "\u9589\u3058\u308B\u3068\u958B\u3044\u305F\u30C8\u30EA\u30AC\u30FC\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u623B\u308B",
1019
+ "\u80CC\u9762\u304C inert\uFF08\u64CD\u4F5C\u30FB\u8AAD\u307F\u4E0A\u3052\u4E0D\u53EF\uFF09\u306B\u306A\u3063\u3066\u3044\u308B",
1020
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044"
1021
+ ],
1022
+ antipatterns: [
1023
+ {
1024
+ title: "Tab \u304C\u80CC\u9762\u306B\u6F0F\u308C\u308B",
1025
+ why: "\u30D5\u30A9\u30FC\u30AB\u30B9\u30C8\u30E9\u30C3\u30D7\u304C\u7121\u304F\u3001\u898B\u3048\u306A\u3044\u8981\u7D20\u306B\u79FB\u52D5\u3067\u304D\u3066\u3057\u307E\u3046\u3002"
1026
+ },
1027
+ {
1028
+ title: "Esc \u3067\u9589\u3058\u306A\u3044",
1029
+ why: "\u30AD\u30FC\u51E6\u7406\u3092\u81EA\u5206\u3067\u66F8\u3044\u3066\u3044\u306A\u3044\u3002"
1030
+ },
1031
+ {
1032
+ title: "\u80CC\u9762\u304C inert \u3067\u306A\u3044",
1033
+ why: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u3067\u80CC\u9762\u307E\u3067\u8AAD\u3081\u3066\u3057\u307E\u3046\u3002"
1034
+ },
1035
+ {
1036
+ title: "\u9589\u3058\u308B\u306E\u304C <span>",
1037
+ why: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u305A\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u306F\u9589\u3058\u3089\u308C\u306A\u3044\u3002"
1038
+ },
1039
+ {
1040
+ title: "\u30D5\u30A9\u30FC\u30AB\u30B9\u306E\u79FB\u52D5\uFF0F\u5FA9\u5E30\u304C\u7121\u3044",
1041
+ why: "\u958B\u3044\u3066\u3082\u30C0\u30A4\u30A2\u30ED\u30B0\u306B\u5165\u3089\u305A\u3001\u9589\u3058\u3066\u3082\u5143\u3078\u623B\u3089\u306A\u3044\u3002"
1042
+ }
1043
+ ],
1044
+ notes: [
1045
+ '<dialog aria-labelledby="title"> \u306E\u3088\u3046\u306B\u4E2D\u306E\u898B\u51FA\u3057\u306E id \u3092\u6307\u3057\u3066\u304A\u304F\u3068\u3001\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u304C\u300C\u8868\u793A\u8A2D\u5B9A, \u30C0\u30A4\u30A2\u30ED\u30B0\u300D\u3068\u8AAD\u307F\u4E0A\u3052\u3066\u304F\u308C\u308B\u3002'
1046
+ ]
1047
+ };
1048
+ var alertdialog = {
1049
+ slug: "alertdialog",
1050
+ keyboard: [
1051
+ {
1052
+ keys: "Esc",
1053
+ action: "\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u9589\u3058\u308B\uFF08\uFF1D\u30AD\u30E3\u30F3\u30BB\u30EB\u6271\u3044\u3002showModal() \u306A\u3089\u6A19\u6E96\u5BFE\u5FDC\uFF09",
1054
+ requirement: "required"
1055
+ },
1056
+ {
1057
+ keys: "Tab / Shift+Tab",
1058
+ action: "\u30DC\u30BF\u30F3\u9593\u3092\u5FAA\u74B0\u79FB\u52D5\uFF08\u30C0\u30A4\u30A2\u30ED\u30B0\u5185\u306B\u9589\u3058\u8FBC\u3081\u3089\u308C\u308B\uFF09",
1059
+ requirement: "required"
1060
+ },
1061
+ {
1062
+ keys: "Enter / Space",
1063
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u30DC\u30BF\u30F3\u3092\u5B9F\u884C",
1064
+ requirement: "required"
1065
+ },
1066
+ {
1067
+ keys: "\uFF08\u958B\u3044\u305F\u76F4\u5F8C\uFF09",
1068
+ action: "\u521D\u671F\u30D5\u30A9\u30FC\u30AB\u30B9\u306F\u5B89\u5168\u5074\uFF08\u30AD\u30E3\u30F3\u30BB\u30EB\uFF09\u306E\u30DC\u30BF\u30F3\u306B\u7F6E\u304F",
1069
+ requirement: "required"
1070
+ }
1071
+ ],
1072
+ aria: [
1073
+ {
1074
+ target: "\u30C0\u30A4\u30A2\u30ED\u30B0\u672C\u4F53",
1075
+ attr: 'role="alertdialog"',
1076
+ meaning: "\u300C\u91CD\u8981\u306A\u78BA\u8A8D\u30FB\u8B66\u544A\u306E\u30C0\u30A4\u30A2\u30ED\u30B0\u300D\u3067\u3042\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B\u3002"
1077
+ },
1078
+ {
1079
+ target: "\u30C0\u30A4\u30A2\u30ED\u30B0\u672C\u4F53",
1080
+ attr: 'aria-modal="true"',
1081
+ meaning: "\u80CC\u9762\u304C\u64CD\u4F5C\u4E0D\u53EF\u306E\u30E2\u30FC\u30C0\u30EB\u3067\u3042\u308B\u3053\u3068\u3092\u660E\u793A\uFF08role \u3092\u4E0A\u66F8\u304D\u3057\u305F\u305F\u3081\u660E\u793A\u3059\u308B\uFF09\u3002"
1082
+ },
1083
+ {
1084
+ target: "\u30C0\u30A4\u30A2\u30ED\u30B0\u672C\u4F53",
1085
+ attr: 'aria-labelledby="\u30BF\u30A4\u30C8\u30EB\u306Eid"',
1086
+ meaning: "\u30C0\u30A4\u30A2\u30ED\u30B0\u306E\u540D\u524D\uFF08\u8CEA\u554F\u6587\uFF09\u3092\u6307\u3059\u3002"
1087
+ },
1088
+ {
1089
+ target: "\u30C0\u30A4\u30A2\u30ED\u30B0\u672C\u4F53",
1090
+ attr: 'aria-describedby="\u8AAC\u660E\u306Eid"',
1091
+ meaning: "\u7D50\u679C\u306E\u91CD\u5927\u3055\u3092\u8AAC\u660E\u3059\u308B\u672C\u6587\u3092\u95A2\u9023\u4ED8\u3051\u3001\u958B\u3044\u305F\u77AC\u9593\u306B\u8AAD\u307F\u4E0A\u3052\u3055\u305B\u308B\u3002"
1092
+ },
1093
+ {
1094
+ target: "\u30AD\u30E3\u30F3\u30BB\u30EB\u30DC\u30BF\u30F3",
1095
+ attr: "autofocus",
1096
+ meaning: "\u521D\u671F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u5B89\u5168\u5074\u306B\u7F6E\u304F\u3002"
1097
+ }
1098
+ ],
1099
+ checklist: [
1100
+ "\u30CD\u30A4\u30C6\u30A3\u30D6 <dialog> + showModal() \u3092\u4F7F\u3063\u3066\u3044\u308B",
1101
+ 'role="alertdialog" \u3068 aria-modal="true" \u3092\u4ED8\u3051\u3066\u3044\u308B',
1102
+ "aria-labelledby \u3067\u8CEA\u554F\u6587\u3001aria-describedby \u3067\u7D50\u679C\u306E\u8AAC\u660E\u3092\u95A2\u9023\u4ED8\u3051\u3066\u3044\u308B",
1103
+ "\u521D\u671F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u5B89\u5168\u5074\uFF08\u30AD\u30E3\u30F3\u30BB\u30EB\uFF09\u306B\u7F6E\u3044\u3066\u3044\u308B",
1104
+ "Tab \u304C\u30C0\u30A4\u30A2\u30ED\u30B0\u5185\u3092\u5FAA\u74B0\u3057\u3001\u80CC\u9762\u306B\u6F0F\u308C\u306A\u3044",
1105
+ "Esc \u3067\u9589\u3058\u3089\u308C\u308B",
1106
+ "\u9589\u3058\u308B\u3068\u958B\u3044\u305F\u30C8\u30EA\u30AC\u30FC\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u623B\u308B",
1107
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044"
1108
+ ],
1109
+ antipatterns: [
1110
+ {
1111
+ title: "\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u306A\u3044",
1112
+ why: 'role="alertdialog" \u3082 aria-describedby \u3082\u7121\u304F\u3001\u4F55\u306E\u78BA\u8A8D\u304B\u4F1D\u308F\u3089\u306A\u3044\u3002'
1113
+ },
1114
+ {
1115
+ title: "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u79FB\u3089\u306A\u3044",
1116
+ why: "\u958B\u3044\u3066\u3082\u30DC\u30C3\u30AF\u30B9\u306B\u5165\u3089\u305A\u3001\u80CC\u9762\u306B Tab \u3067\u629C\u3051\u3066\u3057\u307E\u3046\u3002"
1117
+ },
1118
+ {
1119
+ title: "Esc \u3067\u9589\u3058\u306A\u3044",
1120
+ why: "\u5B89\u5168\u306A\u96E2\u8131\u624B\u6BB5\u304C\u7121\u3044\u3002"
1121
+ },
1122
+ {
1123
+ title: "\u9078\u629E\u80A2\u304C <span>",
1124
+ why: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u305A\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u300C\u306F\u3044/\u3044\u3044\u3048\u300D\u3092\u9078\u3079\u306A\u3044\u3002"
1125
+ },
1126
+ {
1127
+ title: "\u5371\u967A\u306A\u64CD\u4F5C\u306E\u9632\u5FA1\u304C\u7121\u3044",
1128
+ why: "\u521D\u671F\u30D5\u30A9\u30FC\u30AB\u30B9\u3084\u5B89\u5168\u5074\u306E\u914D\u616E\u304C\u306A\u3044\u3002"
1129
+ }
1130
+ ],
1131
+ notes: [
1132
+ 'role="alertdialog" \u3092\u4ED8\u3051\u308B\u3068 <dialog> \u65E2\u5B9A\u306E role="dialog" \u3092\u4E0A\u66F8\u304D\u3059\u308B\u305F\u3081\u3001aria-modal="true" \u3082\u5408\u308F\u305B\u3066\u660E\u793A\u3057\u3066\u304A\u304F\u306E\u304C\u5B89\u5168\u3002'
1133
+ ]
1134
+ };
1135
+ var breadcrumb = {
1136
+ slug: "breadcrumb",
1137
+ keyboard: [
1138
+ {
1139
+ keys: "Tab / Shift+Tab",
1140
+ action: "\u524D\u5F8C\u306E\u30EA\u30F3\u30AF\u3078\u79FB\u52D5\uFF08\u666E\u901A\u306E\u30EA\u30F3\u30AF\u3068\u540C\u3058\uFF09",
1141
+ requirement: "required"
1142
+ },
1143
+ {
1144
+ keys: "Enter",
1145
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u30EA\u30F3\u30AF\u5148\u3078\u79FB\u52D5",
1146
+ requirement: "required"
1147
+ }
1148
+ ],
1149
+ aria: [
1150
+ {
1151
+ target: "\u5916\u5074\u306E\u30B3\u30F3\u30C6\u30CA",
1152
+ attr: '<nav aria-label="\u30D1\u30F3\u304F\u305A\u30EA\u30B9\u30C8">',
1153
+ meaning: "\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u306E\u30E9\u30F3\u30C9\u30DE\u30FC\u30AF\u306B\u3057\u3001\u540D\u524D\u3067\u533A\u5225\u3059\u308B\u3002"
1154
+ },
1155
+ {
1156
+ target: "\u30EA\u30F3\u30AF\u306E\u4E26\u3073",
1157
+ attr: "<ol> > <li>",
1158
+ meaning: "\u9806\u5E8F\u306E\u3042\u308B\u30EA\u30B9\u30C8\u306B\u3057\u3066\u3001\u968E\u5C64\u306E\u6570\u3068\u9806\u756A\u3092\u4F1D\u3048\u308B\u3002"
1159
+ },
1160
+ {
1161
+ target: "\u73FE\u5728\u5730\u306E\u9805\u76EE",
1162
+ attr: 'aria-current="page"',
1163
+ meaning: "\u300C\u73FE\u5728\u306E\u30DA\u30FC\u30B8\u300D\u3067\u3042\u308B\u3053\u3068\u3092\u793A\u3059\u3002\u30EA\u30F3\u30AF\u306B\u306F\u3057\u306A\u3044\u3002"
1164
+ },
1165
+ {
1166
+ target: "\u533A\u5207\u308A\u6587\u5B57",
1167
+ attr: "\uFF08CSS \u306E ::before\uFF09",
1168
+ meaning: "\u300C/\u300D\u300C>\u300D\u306F\u88C5\u98FE\u3002\u30C6\u30AD\u30B9\u30C8\u306B\u305B\u305A\u64EC\u4F3C\u8981\u7D20\u3067\u63CF\u304D\u3001\u8AAD\u307F\u4E0A\u3052\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
1169
+ }
1170
+ ],
1171
+ checklist: [
1172
+ '\u5916\u5074\u3092 <nav aria-label="\u2026"> \u3067\u56F2\u3093\u3067\u3044\u308B',
1173
+ "\u4E2D\u8EAB\u306F <ol> > <li> \u306E\u9806\u5E8F\u4ED8\u304D\u30EA\u30B9\u30C8",
1174
+ "\u5404\u968E\u5C64\u306F <a href>\uFF08\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u79FB\u52D5\u3067\u304D\u308B\uFF09",
1175
+ '\u73FE\u5728\u5730\u306F aria-current="page" \u3092\u4ED8\u3051\u3001\u30EA\u30F3\u30AF\u306B\u3057\u3066\u3044\u306A\u3044',
1176
+ "\u533A\u5207\u308A\u6587\u5B57\u306F CSS \u306E\u64EC\u4F3C\u8981\u7D20\u3067\u63CF\u304D\u3001\u30C6\u30AD\u30B9\u30C8\u306B\u3057\u3066\u3044\u306A\u3044",
1177
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044"
1178
+ ],
1179
+ antipatterns: [
1180
+ {
1181
+ title: "\u30E9\u30F3\u30C9\u30DE\u30FC\u30AF\u304C\u7121\u3044",
1182
+ why: "<nav> \u3067\u306A\u3044\u306E\u3067\u3001\u30D1\u30F3\u304F\u305A\u3078\u4E00\u767A\u3067\u79FB\u52D5\u3067\u304D\u306A\u3044\u3002"
1183
+ },
1184
+ {
1185
+ title: "\u30EA\u30B9\u30C8\u69CB\u9020\u304C\u7121\u3044",
1186
+ why: "<ol>/<li> \u3067\u306A\u3044\u306E\u3067\u300C\u4F55\u9805\u76EE\u3042\u308B\u304B\u300D\u304C\u4F1D\u308F\u3089\u306A\u3044\u3002"
1187
+ },
1188
+ {
1189
+ title: "\u73FE\u5728\u5730\u304C\u4F1D\u308F\u3089\u306A\u3044",
1190
+ why: 'aria-current="page" \u304C\u7121\u304F\u3001\u3044\u307E\u3069\u3053\u306B\u3044\u308B\u304B\u5206\u304B\u3089\u306A\u3044\u3002'
1191
+ },
1192
+ {
1193
+ title: "\u533A\u5207\u308A\u304C\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u308B",
1194
+ why: "\u30C6\u30AD\u30B9\u30C8\u306E\u300C>\u300D\u304C\u4E00\u3064\u305A\u3064\u8AAD\u307E\u308C\u3001\u8033\u969C\u308A\u306B\u306A\u308B\u3002"
1195
+ }
1196
+ ],
1197
+ notes: [
1198
+ "\u30D1\u30F3\u304F\u305A\u306F\u305F\u3060\u306E\u30EA\u30F3\u30AF\u306E\u4E26\u3073\u3067\u3059\u3002<a href> \u3092\u4F7F\u3048\u3070\u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u306F\u81EA\u52D5\u3067\u5F97\u3089\u308C\u307E\u3059\u3002"
1199
+ ]
1200
+ };
1201
+ var menuMenubar = {
1202
+ slug: "menu-menubar",
1203
+ keyboard: [
1204
+ {
1205
+ keys: "Tab",
1206
+ action: "\u30E1\u30CB\u30E5\u30FC\u30D0\u30FC\u306B\u5165\u308B\uFF0F\u51FA\u308B\uFF08\u30D0\u30FC\u5168\u4F53\u30671\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\uFF09",
1207
+ requirement: "required"
1208
+ },
1209
+ {
1210
+ keys: "\u2190 / \u2192\uFF08\u30D0\u30FC\u4E0A\uFF09",
1211
+ action: "\u524D / \u6B21\u306E\u30E1\u30CB\u30E5\u30FC\u3078\u79FB\u52D5",
1212
+ requirement: "required"
1213
+ },
1214
+ {
1215
+ keys: "\u2193 / Enter / Space\uFF08\u30D0\u30FC\u4E0A\uFF09",
1216
+ action: "\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304D\u3001\u6700\u521D\u306E\u9805\u76EE\u3078",
1217
+ requirement: "required"
1218
+ },
1219
+ {
1220
+ keys: "\u2191 / \u2193\uFF08\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u5185\uFF09",
1221
+ action: "\u524D / \u6B21\u306E\u9805\u76EE\u3078\u79FB\u52D5",
1222
+ requirement: "required"
1223
+ },
1224
+ {
1225
+ keys: "\u2190 / \u2192\uFF08\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u5185\uFF09",
1226
+ action: "\u73FE\u5728\u306E\u30E1\u30CB\u30E5\u30FC\u3092\u9589\u3058\u3001\u96A3\u306E\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304F",
1227
+ requirement: "recommended"
1228
+ },
1229
+ {
1230
+ keys: "Home / End",
1231
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\u9805\u76EE\u3078\u79FB\u52D5",
1232
+ requirement: "optional"
1233
+ },
1234
+ {
1235
+ keys: "Enter / Space\uFF08\u9805\u76EE\u4E0A\uFF09",
1236
+ action: "\u30B3\u30DE\u30F3\u30C9\u3092\u5B9F\u884C\u3057\u3066\u9589\u3058\u308B",
1237
+ requirement: "required"
1238
+ },
1239
+ {
1240
+ keys: "Esc",
1241
+ action: "\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u3092\u9589\u3058\u3001\u89AA\u306E\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u3078\u623B\u308B",
1242
+ requirement: "required"
1243
+ }
1244
+ ],
1245
+ aria: [
1246
+ {
1247
+ target: "\u30D0\u30FC\u306E\u7BB1",
1248
+ attr: 'role="menubar" + aria-label',
1249
+ meaning: "\u6C34\u5E73\u306E\u30E1\u30CB\u30E5\u30FC\u30D0\u30FC\u3067\u3042\u308B\u3053\u3068\u3068\u540D\u524D\u3092\u4F1D\u3048\u308B\u3002"
1250
+ },
1251
+ {
1252
+ target: "\u30D0\u30FC\u306E\u5404\u9805\u76EE",
1253
+ attr: 'role="menuitem" + aria-haspopup="menu"',
1254
+ meaning: "\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304F\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u3067\u3042\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B\u3002"
1255
+ },
1256
+ {
1257
+ target: "\u30D0\u30FC\u306E\u5404\u9805\u76EE",
1258
+ attr: 'aria-expanded + tabindex="0 | -1"',
1259
+ meaning: "\u958B\u9589\u72B6\u614B\u3068 roving tabindex\uFF081\u3064\u3060\u3051 0\uFF09\u3002"
1260
+ },
1261
+ {
1262
+ target: "\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC",
1263
+ attr: 'role="menu" + aria-label',
1264
+ meaning: "\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u3067\u3042\u308B\u3053\u3068\u3068\u540D\u524D\u3092\u4F1D\u3048\u308B\u3002"
1265
+ },
1266
+ {
1267
+ target: "\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u306E\u9805\u76EE",
1268
+ attr: 'role="menuitem" + tabindex="-1"',
1269
+ meaning: "\u30B3\u30DE\u30F3\u30C9\u9805\u76EE\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u306F JS \u3067\u7BA1\u7406\uFF08roving\uFF09\u3002"
1270
+ },
1271
+ {
1272
+ target: "\u9589\u3058\u305F\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC",
1273
+ attr: "hidden",
1274
+ meaning: "\u9589\u3058\u3066\u3044\u308B\u9593\u306F\u8AAD\u307F\u4E0A\u3052/\u64CD\u4F5C\u306E\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
1275
+ }
1276
+ ],
1277
+ checklist: [
1278
+ "\u7528\u9014\u304C\u30A2\u30D7\u30EA\u306E\u30B3\u30DE\u30F3\u30C9\u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u305F\uFF08\u30B5\u30A4\u30C8\u30CA\u30D3\u306B\u306F\u4F7F\u308F\u306A\u3044\uFF09",
1279
+ '\u30D0\u30FC\u306F role="menubar" + aria-label\u3001\u9805\u76EE\u306F role="menuitem"',
1280
+ '\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u3092\u6301\u3064\u9805\u76EE\u306B aria-haspopup="menu" + aria-expanded',
1281
+ "\u30D0\u30FC\u306F roving tabindex \u30671\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\u3001\u2190 \u2192 \u3067\u79FB\u52D5",
1282
+ '\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u306F role="menu"\u3001\u9805\u76EE\u306F tabindex="-1"',
1283
+ "\u2193/Enter \u3067\u958B\u304D\u5148\u982D\u3078\u3001\u2191\u2193 \u3067\u79FB\u52D5\u3001Home/End \u3067\u7AEF\u3078",
1284
+ "Esc \u3067\u9589\u3058\u3066\u89AA\u9805\u76EE\u3078\u623B\u3059\u3001\u2190 \u2192 \u3067\u96A3\u306E\u30E1\u30CB\u30E5\u30FC\u3078\u79FB\u308C\u308B",
1285
+ "hover \u4F9D\u5B58\u306B\u305B\u305A\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B"
1286
+ ],
1287
+ antipatterns: [
1288
+ {
1289
+ title: '\u30B5\u30A4\u30C8\u30CA\u30D3\u306B role="menubar" \u3092\u4F7F\u3046',
1290
+ why: "\u30DA\u30FC\u30B8\u79FB\u52D5\u306E\u30EA\u30F3\u30AF\u96C6\u306B menubar/menu \u3092\u4ED8\u3051\u308B\u3068\u3001\u652F\u63F4\u6280\u8853\u306E\u6848\u5185\uFF08\u77E2\u5370\u3067\u64CD\u4F5C\u3059\u308B\u30B3\u30DE\u30F3\u30C9\uFF09\u3068\u5B9F\u4F53\uFF08\u30EA\u30F3\u30AF\uFF09\u304C\u98DF\u3044\u9055\u3044\u5229\u7528\u8005\u304C\u6DF7\u4E71\u3059\u308B\u3002"
1291
+ },
1292
+ {
1293
+ title: "hover \u4F9D\u5B58\u306E\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC",
1294
+ why: "\u30B5\u30D6\u30E1\u30CB\u30E5\u30FC\u304C\u30DE\u30A6\u30B9\u3067\u3057\u304B\u958B\u304B\u305A\u3001\u30AD\u30FC\u30DC\u30FC\u30C9/\u30BF\u30C3\u30C1\u74B0\u5883\u3067\u7834\u7DBB\u3059\u308B\u3002"
1295
+ },
1296
+ {
1297
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u306E\u5B9F\u88C5\u306A\u3057",
1298
+ why: "\u2190\u2192/\u2191\u2193/Esc \u3082 roving tabindex \u3082\u306A\u304F\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044\u3002"
1299
+ }
1300
+ ],
1301
+ notes: [
1302
+ '\u30B5\u30A4\u30C8\u5185\u30EA\u30F3\u30AF\u306E\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u306B role="menubar" \u3092\u4F7F\u3046\u306E\u304C\u6700\u3082\u3088\u304F\u3042\u308B\u8AA4\u308A\u3002\u30DA\u30FC\u30B8\u3078\u79FB\u52D5\u3059\u308B\u300C\u30EA\u30F3\u30AF\u96C6\u300D\u306F <nav> + <ul> + <a> \u3067\u4F5C\u308B\u3002'
1303
+ ]
1304
+ };
1305
+ var menuButton = {
1306
+ slug: "menu-button",
1307
+ keyboard: [
1308
+ {
1309
+ keys: "Enter / Space / \u2193\uFF08\u30DC\u30BF\u30F3\u4E0A\uFF09",
1310
+ action: "\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304D\u3001\u6700\u521D\u306E\u9805\u76EE\u3078\u30D5\u30A9\u30FC\u30AB\u30B9",
1311
+ requirement: "required"
1312
+ },
1313
+ {
1314
+ keys: "\u2191\uFF08\u30DC\u30BF\u30F3\u4E0A\uFF09",
1315
+ action: "\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304D\u3001\u6700\u5F8C\u306E\u9805\u76EE\u3078\u30D5\u30A9\u30FC\u30AB\u30B9",
1316
+ requirement: "optional"
1317
+ },
1318
+ {
1319
+ keys: "\u2191 / \u2193\uFF08\u30E1\u30CB\u30E5\u30FC\u5185\uFF09",
1320
+ action: "\u524D / \u6B21\u306E\u9805\u76EE\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
1321
+ requirement: "required"
1322
+ },
1323
+ {
1324
+ keys: "Home / End",
1325
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\u9805\u76EE\u3078\u79FB\u52D5",
1326
+ requirement: "recommended"
1327
+ },
1328
+ {
1329
+ keys: "Enter / Space\uFF08\u9805\u76EE\u4E0A\uFF09",
1330
+ action: "\u9805\u76EE\u3092\u5B9F\u884C\u3057\u3001\u30E1\u30CB\u30E5\u30FC\u3092\u9589\u3058\u3066\u30DC\u30BF\u30F3\u3078\u623B\u308B",
1331
+ requirement: "required"
1332
+ },
1333
+ {
1334
+ keys: "Esc",
1335
+ action: "\u30E1\u30CB\u30E5\u30FC\u3092\u9589\u3058\u3066\u30DC\u30BF\u30F3\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u623B\u3059",
1336
+ requirement: "required"
1337
+ }
1338
+ ],
1339
+ aria: [
1340
+ {
1341
+ target: "\u30C8\u30EA\u30AC\u30FC",
1342
+ attr: '<button> + aria-haspopup="menu"',
1343
+ meaning: "\u62BC\u3059\u3068\u30E1\u30CB\u30E5\u30FC\u304C\u958B\u304F\u30DC\u30BF\u30F3\u3067\u3042\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B\u3002"
1344
+ },
1345
+ {
1346
+ target: "\u30C8\u30EA\u30AC\u30FC",
1347
+ attr: 'aria-expanded="true | false"',
1348
+ meaning: "\u30E1\u30CB\u30E5\u30FC\u304C\u958B\u3044\u3066\u3044\u308B\u304B\u3002\u958B\u9589\u306B\u5408\u308F\u305B\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
1349
+ },
1350
+ {
1351
+ target: "\u30C8\u30EA\u30AC\u30FC",
1352
+ attr: 'aria-controls="\u30E1\u30CB\u30E5\u30FC\u306Eid"',
1353
+ meaning: "\u3069\u306E\u30E1\u30CB\u30E5\u30FC\u3092\u958B\u304F\u30DC\u30BF\u30F3\u304B\u3092\u793A\u3059\u3002"
1354
+ },
1355
+ {
1356
+ target: "\u30E1\u30CB\u30E5\u30FC\u306E\u7BB1",
1357
+ attr: 'role="menu" + aria-labelledby',
1358
+ meaning: "\u30E1\u30CB\u30E5\u30FC\u3067\u3042\u308B\u3053\u3068\u3068\u3001\u30C8\u30EA\u30AC\u30FC\u3092\u540D\u524D\u3068\u3057\u3066\u6301\u3064\u3053\u3068\u3092\u4F1D\u3048\u308B\u3002"
1359
+ },
1360
+ {
1361
+ target: "\u5404\u9805\u76EE",
1362
+ attr: 'role="menuitem" + tabindex="-1"',
1363
+ meaning: "\u30E1\u30CB\u30E5\u30FC\u9805\u76EE\u3067\u3042\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u306F JS \u3067\u7BA1\u7406\uFF08roving\uFF09\u3002"
1364
+ },
1365
+ {
1366
+ target: "\u9589\u3058\u305F\u30E1\u30CB\u30E5\u30FC",
1367
+ attr: "hidden",
1368
+ meaning: "\u9589\u3058\u3066\u3044\u308B\u9593\u306F\u8AAD\u307F\u4E0A\u3052/\u64CD\u4F5C\u306E\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
1369
+ }
1370
+ ],
1371
+ checklist: [
1372
+ '\u30C8\u30EA\u30AC\u30FC\u306F <button> \u3067 aria-haspopup="menu" + aria-expanded + aria-controls',
1373
+ '\u30E1\u30CB\u30E5\u30FC\u306F role="menu"\u3001\u9805\u76EE\u306F role="menuitem" + tabindex="-1"',
1374
+ "\u30AF\u30EA\u30C3\u30AF / Enter / Space / \u2193 \u3067\u958B\u304D\u3001\u6700\u521D\u306E\u9805\u76EE\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B",
1375
+ "\u30E1\u30CB\u30E5\u30FC\u5185\u306F \u2191\u2193 \u3067\u79FB\u52D5\u3001Home/End \u3067\u7AEF\u3078",
1376
+ "Enter/Space \u3067\u9805\u76EE\u3092\u5B9F\u884C\u3057\u3001\u9589\u3058\u3066\u30C8\u30EA\u30AC\u30FC\u3078\u623B\u308B",
1377
+ "Esc \u3067\u9589\u3058\u3066\u30C8\u30EA\u30AC\u30FC\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u623B\u3059",
1378
+ "\u30E1\u30CB\u30E5\u30FC\u306E\u5916\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u305F\u3089\u9589\u3058\u308B",
1379
+ "aria-expanded \u304C\u958B\u9589\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B"
1380
+ ],
1381
+ antipatterns: [
1382
+ {
1383
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u958B\u3051\u306A\u3044",
1384
+ why: "div \u30C8\u30EA\u30AC\u30FC\u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u4E0D\u53EF\u3002\u2193/Enter \u3082\u52B9\u304B\u306A\u3044\u3002"
1385
+ },
1386
+ {
1387
+ title: "hover \u4F9D\u5B58",
1388
+ why: "\u30DE\u30A6\u30B9\u304C\u4F7F\u3048\u306A\u3044\u4EBA\u30FB\u30BF\u30C3\u30C1\u74B0\u5883\u3067\u7834\u7DBB\u3057\u3001\u30DE\u30A6\u30B9\u3092\u5916\u3059\u3068\u9589\u3058\u3066\u3057\u307E\u3046\u3002"
1389
+ },
1390
+ {
1391
+ title: "\u5F79\u5272\u3068\u72B6\u614B\u304C\u4F1D\u308F\u3089\u306A\u3044",
1392
+ why: 'aria-haspopup/aria-expanded/role="menu" \u304C\u306A\u3044\u3002'
1393
+ },
1394
+ {
1395
+ title: "\u30D5\u30A9\u30FC\u30AB\u30B9\u7BA1\u7406\u304C\u306A\u3044",
1396
+ why: "Esc \u3067\u9589\u3058\u3089\u308C\u305A\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u5229\u7528\u8005\u304C\u3069\u3053\u306B\u3044\u308B\u304B\u898B\u5931\u3046\u3002"
1397
+ }
1398
+ ],
1399
+ notes: [
1400
+ "\u958B\u3044\u305F\u3089\u6700\u521D\u306E\u9805\u76EE\u3078\u3001Esc \u3067\u9589\u3058\u305F\u3089\u30DC\u30BF\u30F3\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u623B\u3059\u3053\u3068\u3067\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u5229\u7528\u8005\u304C\u300C\u4ECA\u3069\u3053\u306B\u3044\u308B\u304B\u300D\u3092\u898B\u5931\u308F\u306A\u3044\u3002"
1401
+ ]
1402
+ };
1403
+ var link = {
1404
+ slug: "link",
1405
+ keyboard: [
1406
+ {
1407
+ keys: "Tab",
1408
+ action: "\u6B21 / \u524D\u306E\u30EA\u30F3\u30AF\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
1409
+ requirement: "required"
1410
+ },
1411
+ {
1412
+ keys: "Enter",
1413
+ action: "\u30EA\u30F3\u30AF\u5148\u3078\u79FB\u52D5\u3059\u308B",
1414
+ requirement: "required"
1415
+ }
1416
+ ],
1417
+ aria: [
1418
+ {
1419
+ target: "\u30EA\u30F3\u30AF\uFF08\u63A8\u5968\uFF09",
1420
+ attr: '<a href="...">',
1421
+ meaning: "\u300C\u30EA\u30F3\u30AF\u300D\u30ED\u30FC\u30EB\u30FB\u30D5\u30A9\u30FC\u30AB\u30B9\u30FBEnter \u6D3B\u6027\u5316\u304C\u3059\u3079\u3066\u81EA\u52D5\u3002ARIA \u306F\u57FA\u672C\u4E0D\u8981\u3002"
1422
+ },
1423
+ {
1424
+ target: "\u65B0\u898F\u30BF\u30D6\u3067\u958B\u304F",
1425
+ attr: 'target="_blank" + rel="noopener noreferrer"',
1426
+ meaning: "\u5225\u30BF\u30D6\u3067\u958B\u304F\u3002rel \u3067\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u4E0A\u306E\u554F\u984C\u3092\u9632\u3050\u3002\u30EA\u30F3\u30AF\u6587\u8A00\u3067\u300C\u65B0\u3057\u3044\u30BF\u30D6\u300D\u3068\u660E\u793A\u3059\u308B\u3002"
1427
+ },
1428
+ {
1429
+ target: "span \u7B49\u3067\u4EE3\u7528\u3059\u308B\u5834\u5408\u306E\u307F",
1430
+ attr: 'role="link" + tabindex="0" + \u30AD\u30FC\u51E6\u7406',
1431
+ meaning: "\u672C\u6765\u4E0D\u8981\u3002<a> \u306A\u3089\u4F55\u3082\u8DB3\u3055\u306A\u304F\u3066\u3088\u3044\u306E\u3067\u4F7F\u308F\u306A\u3044\u306E\u304C\u6B63\u89E3\u3002"
1432
+ },
1433
+ {
1434
+ target: "\u30A2\u30A4\u30B3\u30F3\u306E\u307F\u306E\u30EA\u30F3\u30AF",
1435
+ attr: 'aria-label="..."',
1436
+ meaning: "\u6587\u5B57\u304C\u7121\u3044\u30EA\u30F3\u30AF\u306B\u3001\u884C\u304D\u5148\u306E\u5206\u304B\u308B\u540D\u524D\u3092\u4ED8\u3051\u308B\u3002"
1437
+ }
1438
+ ],
1439
+ checklist: [
1440
+ '\u79FB\u52D5\u306E\u90E8\u54C1\u306F <a href="..."> \u3092\u4F7F\u3063\u3066\u3044\u308B',
1441
+ "\u30EA\u30F3\u30AF\u6587\u8A00\u3060\u3051\u3067\u884C\u304D\u5148\u304C\u5206\u304B\u308B\uFF08\u300C\u3053\u3061\u3089\u300D\u3092\u907F\u3051\u308B\uFF09",
1442
+ '\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304F\u3068\u304D\u306F\u6587\u8A00\u3067\u660E\u793A\u3057 rel="noopener noreferrer" \u3092\u4ED8\u3051\u308B',
1443
+ "\u30A2\u30A4\u30B3\u30F3\u306E\u307F\u306E\u30EA\u30F3\u30AF\u306B\u306F aria-label \u3092\u4ED8\u3051\u3066\u3044\u308B",
1444
+ "Tab \u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B",
1445
+ "\u300C\u64CD\u4F5C\u306E\u5B9F\u884C\u300D\u306B\u306F\u30EA\u30F3\u30AF\u3067\u306F\u306A\u304F <button> \u3092\u4F7F\u3063\u3066\u3044\u308B"
1446
+ ],
1447
+ antipatterns: [
1448
+ {
1449
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u306A\u3044",
1450
+ why: "span \u306F Tab \u306E\u5BFE\u8C61\u5916\u3067\u3001\u30EA\u30F3\u30AF\u3068\u3057\u3066\u5230\u9054\u3067\u304D\u306A\u3044\u3002"
1451
+ },
1452
+ {
1453
+ title: "\u30EA\u30F3\u30AF\u3068\u8A8D\u8B58\u3055\u308C\u306A\u3044",
1454
+ why: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306E\u30EA\u30F3\u30AF\u4E00\u89A7\u306B\u51FA\u3066\u3053\u306A\u3044\u3002"
1455
+ },
1456
+ {
1457
+ title: "\u53F3\u30AF\u30EA\u30C3\u30AF / \u65B0\u3057\u3044\u30BF\u30D6 / \u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u304C\u3067\u304D\u306A\u3044",
1458
+ why: "href \u304C\u7121\u3044\u305F\u3081\u30D6\u30E9\u30A6\u30B6\u6A19\u6E96\u306E\u4FBF\u5229\u6A5F\u80FD\u304C\u5168\u6EC5\u3059\u308B\u3002"
1459
+ },
1460
+ {
1461
+ title: "\u64CD\u4F5C\u306E\u5B9F\u884C\u306B\u30EA\u30F3\u30AF\u3092\u4F7F\u3046",
1462
+ why: "\u79FB\u52D5=<a href>\u3001\u64CD\u4F5C=<button> \u3068\u5F79\u5272\u3067\u9078\u3070\u306A\u3044\u3068\u5229\u7528\u8005\u304C\u6DF7\u4E71\u3059\u308B\u3002"
1463
+ }
1464
+ ],
1465
+ notes: [
1466
+ "\u30EA\u30F3\u30AF\u306F Enter \u3067\u306E\u307F\u6D3B\u6027\u5316\u3057\u3001Space \u3067\u306F\u79FB\u52D5\u3057\u307E\u305B\u3093\uFF08\u3053\u308C\u304C\u6B63\u3057\u3044\u6319\u52D5\u3067\u3059\uFF09\u3002<a href> \u3092\u4F7F\u3048\u3070\u3001\u3053\u306E\u52D5\u4F5C\u306F\u30B3\u30FC\u30C9\u3092\u66F8\u304B\u305A\u306B\u81EA\u52D5\u7684\u306B\u5F97\u3089\u308C\u307E\u3059\u3002"
1467
+ ]
1468
+ };
1469
+ var landmarks = {
1470
+ slug: "landmarks",
1471
+ keyboard: [
1472
+ {
1473
+ keys: "Tab\uFF08\u30DA\u30FC\u30B8\u5148\u982D\u3067\uFF09",
1474
+ action: "\u6700\u521D\u306B\u30B9\u30AD\u30C3\u30D7\u30EA\u30F3\u30AF\u304C\u73FE\u308C\u3001Enter \u3067\u672C\u6587\u3078\u98DB\u3079\u308B",
1475
+ requirement: "recommended"
1476
+ },
1477
+ {
1478
+ keys: "SR \u306E\u30E9\u30F3\u30C9\u30DE\u30FC\u30AF\u79FB\u52D5",
1479
+ action: "\u9818\u57DF\uFF08banner/nav/main/\u2026\uFF09\u5358\u4F4D\u3067\u30B8\u30E3\u30F3\u30D7\uFF08\u652F\u63F4\u6280\u8853\u5074\u306E\u64CD\u4F5C\uFF09",
1480
+ requirement: "required"
1481
+ },
1482
+ {
1483
+ keys: "SR \u306E\u898B\u51FA\u3057\u30B8\u30E3\u30F3\u30D7",
1484
+ action: "h1\u301Ch6 \u3092\u8FBF\u3063\u3066\u30DA\u30FC\u30B8\u69CB\u9020\u3092\u628A\u63E1\uFF08\u652F\u63F4\u6280\u8853\u5074\u306E\u64CD\u4F5C\uFF09",
1485
+ requirement: "required"
1486
+ }
1487
+ ],
1488
+ aria: [
1489
+ {
1490
+ target: "<header>\uFF08\u6700\u4E0A\u4F4D\uFF09",
1491
+ attr: "banner",
1492
+ meaning: "\u30B5\u30A4\u30C8\u5171\u901A\u306E\u4E0A\u90E8\u3002\u30DA\u30FC\u30B8\u306B1\u3064\u3002"
1493
+ },
1494
+ {
1495
+ target: "<nav>",
1496
+ attr: "navigation",
1497
+ meaning: "\u8907\u6570\u3042\u308B\u306A\u3089 aria-label / aria-labelledby \u3067\u533A\u5225\u3059\u308B\u3002"
1498
+ },
1499
+ {
1500
+ target: "<main>",
1501
+ attr: "main",
1502
+ meaning: "\u672C\u6587\u30021\u30DA\u30FC\u30B8\u306B1\u3064\u3060\u3051\u3002<h1> \u30821\u3064\u3002"
1503
+ },
1504
+ {
1505
+ target: "<aside>",
1506
+ attr: "complementary",
1507
+ meaning: "\u672C\u6587\u306E\u88DC\u8DB3\uFF08\u95A2\u9023\u60C5\u5831\u30FB\u5E83\u544A\u306A\u3069\uFF09\u3002"
1508
+ },
1509
+ {
1510
+ target: "<footer>\uFF08\u6700\u4E0A\u4F4D\uFF09",
1511
+ attr: "contentinfo",
1512
+ meaning: "\u8457\u4F5C\u6A29\u30FB\u904B\u55B6\u8005\u60C5\u5831\u306A\u3069\u3002\u30DA\u30FC\u30B8\u306B1\u3064\u3002"
1513
+ }
1514
+ ],
1515
+ checklist: [
1516
+ "<header> / <nav> / <main> / <footer> \u3067\u9818\u57DF\u3092\u533A\u5207\u3063\u3066\u3044\u308B",
1517
+ "<main> \u306F\u30DA\u30FC\u30B8\u306B1\u3064\u3060\u3051",
1518
+ "<h1> \u306F\u30DA\u30FC\u30B8\u306B1\u3064\u3060\u3051\u3001\u898B\u51FA\u3057\u30EC\u30D9\u30EB\u304C\u98DB\u3093\u3067\u3044\u306A\u3044",
1519
+ "<nav> \u304C\u8907\u6570\u3042\u308B\u3068\u304D aria-label \u3067\u533A\u5225\u3057\u3066\u3044\u308B",
1520
+ "\u672C\u6587\u306E\u88DC\u8DB3\u306F <aside> \u306B\u3057\u3066\u3044\u308B",
1521
+ "\u5148\u982D\u306B\u30B9\u30AD\u30C3\u30D7\u30EA\u30F3\u30AF\u304C\u3042\u308A\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u6642\u306B\u898B\u3048\u308B",
1522
+ "\u30DA\u30FC\u30B8\u5185\u306E\u4E3B\u8981\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u3069\u308C\u304B\u306E\u30E9\u30F3\u30C9\u30DE\u30FC\u30AF\u306B\u542B\u307E\u308C\u3066\u3044\u308B"
1523
+ ],
1524
+ antipatterns: [
1525
+ {
1526
+ title: "\u30E9\u30F3\u30C9\u30DE\u30FC\u30AF\u304C\u7121\u3044",
1527
+ why: "main/nav/banner \u306A\u3069\u3078\u9818\u57DF\u79FB\u52D5\u3067\u304D\u306A\u3044\u3002"
1528
+ },
1529
+ {
1530
+ title: "\u898B\u51FA\u3057\u304C\u7121\u3044",
1531
+ why: "<h1> \u7B49\u304C\u7121\u304F\u3001\u898B\u51FA\u3057\u30B8\u30E3\u30F3\u30D7\u3067\u69CB\u9020\u3092\u628A\u63E1\u3067\u304D\u306A\u3044\u3002"
1532
+ },
1533
+ {
1534
+ title: "\u30B9\u30AD\u30C3\u30D7\u30EA\u30F3\u30AF\u304C\u7121\u3044",
1535
+ why: "\u672C\u6587\u307E\u3067\u6BCE\u56DE Tab \u3067\u8FBF\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002"
1536
+ },
1537
+ {
1538
+ title: "\u610F\u5473\u304C\u898B\u305F\u76EE\u983C\u307F",
1539
+ why: "CSS \u304C\u5916\u308C\u308B\u3068\u3001\u305F\u3060\u306E\u6587\u5B57\u5217\u306E\u7F85\u5217\u306B\u306A\u308B\u3002"
1540
+ }
1541
+ ],
1542
+ notes: [
1543
+ "\u30E9\u30F3\u30C9\u30DE\u30FC\u30AF\u81EA\u4F53\u306B\u7279\u5225\u306A\u30AD\u30FC\u64CD\u4F5C\u3092\u5B9F\u88C5\u3059\u308B\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u6B63\u3057\u3044\u8981\u7D20\u3092\u4F7F\u3046\u3060\u3051\u3067\u3001\u652F\u63F4\u6280\u8853\u5074\u306E\u79FB\u52D5\u6A5F\u80FD\u304C\u81EA\u52D5\u7684\u306B\u52B9\u304D\u307E\u3059\u3002"
1544
+ ]
1545
+ };
1546
+ var button = {
1547
+ slug: "button",
1548
+ keyboard: [
1549
+ {
1550
+ keys: "Tab",
1551
+ action: "\u6B21 / \u524D\u306E\u30DC\u30BF\u30F3\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5\uFF08\u7121\u52B9\u306A\u30DC\u30BF\u30F3\u306F\u98DB\u3070\u3055\u308C\u308B\uFF09",
1552
+ requirement: "required"
1553
+ },
1554
+ {
1555
+ keys: "Enter",
1556
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u30DC\u30BF\u30F3\u3092\u62BC\u3059",
1557
+ requirement: "required"
1558
+ },
1559
+ {
1560
+ keys: "Space",
1561
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u30DC\u30BF\u30F3\u3092\u62BC\u3059",
1562
+ requirement: "required"
1563
+ }
1564
+ ],
1565
+ aria: [
1566
+ {
1567
+ target: "\u30DC\u30BF\u30F3\uFF08\u63A8\u5968\uFF09",
1568
+ attr: '<button type="button">',
1569
+ meaning: "\u30ED\u30FC\u30EB\u30FB\u30D5\u30A9\u30FC\u30AB\u30B9\u30FB\u30AD\u30FC\u64CD\u4F5C\u304C\u3059\u3079\u3066\u81EA\u52D5\u3002ARIA \u306F\u57FA\u672C\u4E0D\u8981\u3002"
1570
+ },
1571
+ {
1572
+ target: "\u30D5\u30A9\u30FC\u30E0\u9001\u4FE1",
1573
+ attr: 'type="submit" / type="button"',
1574
+ meaning: '\u610F\u56F3\u3057\u306A\u3044\u9001\u4FE1\u3092\u907F\u3051\u308B\u305F\u3081\u3001\u9001\u4FE1\u3067\u306A\u3044\u30DC\u30BF\u30F3\u306B\u306F type="button" \u3092\u4ED8\u3051\u308B\u3002'
1575
+ },
1576
+ {
1577
+ target: "\u7121\u52B9\u5316",
1578
+ attr: "disabled",
1579
+ meaning: "\u64CD\u4F5C\u4E0D\u53EF\u306B\u3057\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304B\u3089\u3082\u5916\u3059\u3002\u652F\u63F4\u6280\u8853\u306B\u3082\u4F1D\u308F\u308B\u3002"
1580
+ },
1581
+ {
1582
+ target: "div \u3067\u4EE3\u7528\u3059\u308B\u5834\u5408\u306E\u307F",
1583
+ attr: 'role="button" + tabindex="0"',
1584
+ meaning: "\u300C\u30DC\u30BF\u30F3\u300D\u3068\u8A8D\u8B58\u3055\u305B\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306B\u3059\u308B\u3002\u3055\u3089\u306B\u30AD\u30FC\u51E6\u7406\u306E\u81EA\u4F5C\u304C\u5FC5\u9808\u3002"
1585
+ }
1586
+ ],
1587
+ checklist: [
1588
+ "\u64CD\u4F5C\uFF08\u5B9F\u884C\uFF09\u306E\u90E8\u54C1\u306F <button> \u3092\u4F7F\u3063\u3066\u3044\u308B",
1589
+ '\u9001\u4FE1\u3067\u306A\u3044\u30DC\u30BF\u30F3\u306B\u306F type="button" \u3092\u4ED8\u3051\u3066\u3044\u308B',
1590
+ "\u30DE\u30A6\u30B9\u30FBEnter\u30FBSpace \u306E\u3059\u3079\u3066\u3067\u52D5\u304F",
1591
+ "\u7121\u52B9\u306B\u3057\u305F\u3044\u3068\u304D\u306F disabled \u3092\u4F7F\u3063\u3066\u3044\u308B",
1592
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09",
1593
+ '\uFF08div \u4EE3\u7528\u6642\u306E\u307F\uFF09role="button"\u30FBtabindex="0"\u30FB\u30AD\u30FC\u51E6\u7406\u3092\u3059\u3079\u3066\u8DB3\u3057\u3066\u3044\u308B'
1594
+ ],
1595
+ antipatterns: [
1596
+ {
1597
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u306A\u3044",
1598
+ why: "div \u306F Tab \u306E\u5BFE\u8C61\u5916\u3002\u305D\u3082\u305D\u3082\u5230\u9054\u3067\u304D\u306A\u3044\u3002"
1599
+ },
1600
+ {
1601
+ title: "Space / Enter \u3067\u52D5\u304B\u306A\u3044",
1602
+ why: "div \u306B\u306F\u30AD\u30FC\u51E6\u7406\u304C\u306A\u304F\u3001\u81EA\u5206\u3067\u66F8\u304B\u306A\u3051\u308C\u3070\u53CD\u5FDC\u3057\u306A\u3044\u3002"
1603
+ },
1604
+ {
1605
+ title: "\u5F79\u5272\u304C\u4F1D\u308F\u3089\u306A\u3044",
1606
+ why: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306B\u300C\u30DC\u30BF\u30F3\u300D\u3068\u8A8D\u8B58\u3055\u308C\u305A\u3001\u62BC\u305B\u308B\u3053\u3068\u304C\u5206\u304B\u3089\u306A\u3044\u3002"
1607
+ },
1608
+ {
1609
+ title: "\u7121\u52B9\u5316\u3067\u304D\u306A\u3044",
1610
+ why: "div \u306B\u306F disabled \u306E\u6982\u5FF5\u304C\u306A\u304F\u3001\u62BC\u305B\u306A\u3044\u72B6\u614B\u3092\u652F\u63F4\u6280\u8853\u306B\u4F1D\u3048\u3089\u308C\u306A\u3044\u3002"
1611
+ }
1612
+ ],
1613
+ notes: [
1614
+ "<button> \u306A\u3089\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\uFF08Tab / Enter / Space\uFF09\u3068\u652F\u63F4\u6280\u8853\u3078\u306E\u901A\u77E5\u304C\u30B3\u30FC\u30C9\u3092\u66F8\u304B\u305A\u306B\u52D5\u304D\u307E\u3059\u3002",
1615
+ "\u305D\u306E\u5834\u3067\u4F55\u304B\u3092\u5B9F\u884C\u3059\u308B\u306A\u3089 <button>\u3001\u5225\u306E\u5834\u6240\u3078\u79FB\u52D5\u3059\u308B\u306A\u3089 <a href> \u3068\u5F79\u5272\u3067\u9078\u3073\u307E\u3057\u3087\u3046\u3002"
1616
+ ]
1617
+ };
1618
+ var checkbox = {
1619
+ slug: "checkbox",
1620
+ keyboard: [
1621
+ {
1622
+ keys: "Tab",
1623
+ action: "\u6B21\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
1624
+ requirement: "required"
1625
+ },
1626
+ {
1627
+ keys: "Space",
1628
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u30AA\u30F3/\u30AA\u30D5",
1629
+ requirement: "required"
1630
+ }
1631
+ ],
1632
+ aria: [
1633
+ {
1634
+ target: "\u5165\u529B\u6B04",
1635
+ attr: '<input type="checkbox">',
1636
+ meaning: "\u30CD\u30A4\u30C6\u30A3\u30D6\u306E checkbox \u30ED\u30FC\u30EB\u30FB\u72B6\u614B\u30FB\u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u304C\u3059\u3079\u3066\u81EA\u52D5\u3067\u4ED8\u304F\u3002"
1637
+ },
1638
+ {
1639
+ target: "\u30E9\u30D9\u30EB",
1640
+ attr: "<label>\uFF08input \u3092\u5185\u5305 or for \u3067\u95A2\u9023\u4ED8\u3051\uFF09",
1641
+ meaning: "\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u306E\u300C\u540D\u524D\u300D\u306B\u306A\u308B\u3002\u30E9\u30D9\u30EB\u306E\u30AF\u30EA\u30C3\u30AF\u3067\u3082\u30C8\u30B0\u30EB\u3067\u304D\u308B\u3002"
1642
+ },
1643
+ {
1644
+ target: "\u89AA\uFF08\u3059\u3079\u3066\u9078\u629E\uFF09",
1645
+ attr: "indeterminate = true\uFF08JS \u30D7\u30ED\u30D1\u30C6\u30A3\uFF09",
1646
+ meaning: '\u4E00\u90E8\u3060\u3051\u9078\u629E\u306E\u4E2D\u9593\u72B6\u614B\u3002aria-checked="mixed" \u3068\u3057\u3066\u81EA\u52D5\u3067\u4F1D\u308F\u308B\u3002'
1647
+ },
1648
+ {
1649
+ target: "\u30B0\u30EB\u30FC\u30D7",
1650
+ attr: "<fieldset> + <legend>",
1651
+ meaning: "\u95A2\u9023\u3059\u308B\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u307E\u3068\u3081\u3001\u30B0\u30EB\u30FC\u30D7\u540D\u3092\u4E0E\u3048\u308B\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09\u3002"
1652
+ }
1653
+ ],
1654
+ checklist: [
1655
+ '\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u306F <input type="checkbox"> \u3067\u3042\u308B',
1656
+ "<label> \u3068\u95A2\u9023\u4ED8\u3044\u3066\u3044\u308B\uFF08\u5185\u5305 or for/id\uFF09",
1657
+ "Space \u3067\u30C8\u30B0\u30EB\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B",
1658
+ "\u300C\u3059\u3079\u3066\u9078\u629E\u300D\u306E\u4E00\u90E8\u9078\u629E\u306F indeterminate = true \u3067\u8868\u3059",
1659
+ "\u89AA \u2194 \u5B50\u306E\u72B6\u614B\u304C change \u3067\u5E38\u306B\u540C\u671F\u3057\u3066\u3044\u308B",
1660
+ "\u95A2\u9023\u30B0\u30EB\u30FC\u30D7\u306F <fieldset> + <legend> \u3067\u307E\u3068\u3081\u308B\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09"
1661
+ ],
1662
+ antipatterns: [
1663
+ {
1664
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
1665
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001Space \u3067\u306E\u30C8\u30B0\u30EB\u3082\u52B9\u304B\u306A\u3044\u3002"
1666
+ },
1667
+ {
1668
+ title: "\u5F79\u5272\u304C\u4F1D\u308F\u3089\u306A\u3044",
1669
+ why: "\u300C\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u300D\u3060\u3068\u8A8D\u8B58\u3055\u308C\u305A\u3001\u30AA\u30F3/\u30AA\u30D5\u306E\u6982\u5FF5\u3082\u5B58\u5728\u3057\u306A\u3044\u3002"
1670
+ },
1671
+ {
1672
+ title: "\u72B6\u614B\u304C\u4F1D\u308F\u3089\u306A\u3044",
1673
+ why: "\u30AA\u30F3/\u30AA\u30D5\uFF08\u3084\u4E2D\u9593\u72B6\u614B\uFF09\u304C\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u305A\u3001\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306B\u5224\u5225\u3067\u304D\u306A\u3044\u3002"
1674
+ },
1675
+ {
1676
+ title: "\u30E9\u30D9\u30EB\u672A\u95A2\u9023",
1677
+ why: "\u6587\u5B57\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u3082\u5207\u308A\u66FF\u308F\u3089\u305A\u3001\u4F55\u306E\u30C1\u30A7\u30C3\u30AF\u304B\u3068\u3044\u3046\u540D\u524D\u3082\u7D50\u3073\u3064\u304B\u306A\u3044\u3002"
1678
+ }
1679
+ ],
1680
+ notes: [
1681
+ 'Space \u3067\u306E\u5207\u308A\u66FF\u3048\u306F <input type="checkbox"> \u3092\u4F7F\u3046\u3060\u3051\u3067\u81EA\u52D5\u7684\u306B\u5F97\u3089\u308C\u307E\u3059\u3002\u81EA\u5206\u3067\u30AD\u30FC\u51E6\u7406\u3092\u66F8\u304F\u5FC5\u8981\u306F\u3042\u308A\u307E\u305B\u3093\u3002',
1682
+ "indeterminate \u306F HTML \u5C5E\u6027\u3067\u306F\u306A\u304F JavaScript \u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u3067\u3059\uFF08el.indeterminate = true\uFF09\u3002\u9001\u4FE1\u5024\u306E\u6271\u3044\u306B\u6CE8\u610F\u3057\u307E\u3059\u3002"
1683
+ ]
1684
+ };
1685
+ var radioGroup = {
1686
+ slug: "radio-group",
1687
+ keyboard: [
1688
+ {
1689
+ keys: "Tab",
1690
+ action: "\u30B0\u30EB\u30FC\u30D7\u306B\u5165\u308B / \u30B0\u30EB\u30FC\u30D7\u304B\u3089\u51FA\u308B\uFF08\u9078\u629E\u4E2D\u306E\u9805\u76EE\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\uFF09",
1691
+ requirement: "required"
1692
+ },
1693
+ {
1694
+ keys: "\u2193 / \u2192",
1695
+ action: "\u6B21\u306E\u9078\u629E\u80A2\u3078\u79FB\u52D5\u3057\u3066\u9078\u629E\u3059\u308B",
1696
+ requirement: "required"
1697
+ },
1698
+ {
1699
+ keys: "\u2191 / \u2190",
1700
+ action: "\u524D\u306E\u9078\u629E\u80A2\u3078\u79FB\u52D5\u3057\u3066\u9078\u629E\u3059\u308B",
1701
+ requirement: "required"
1702
+ },
1703
+ {
1704
+ keys: "Space",
1705
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u9078\u629E\u80A2\u3092\u9078\u629E\u3059\u308B",
1706
+ requirement: "required"
1707
+ }
1708
+ ],
1709
+ aria: [
1710
+ {
1711
+ target: "\u5404\u9078\u629E\u80A2",
1712
+ attr: '<input type="radio"> + \u540C\u3058 name',
1713
+ meaning: "radio \u30ED\u30FC\u30EB\u30FB\u300C1\u3064\u3060\u3051\u9078\u629E\u300D\u30FB\u77E2\u5370\u30AD\u30FC\u64CD\u4F5C\u304C\u81EA\u52D5\u3067\u4ED8\u304F\u3002"
1714
+ },
1715
+ {
1716
+ target: "\u30E9\u30D9\u30EB",
1717
+ attr: "<label>",
1718
+ meaning: "\u5404\u9078\u629E\u80A2\u306E\u540D\u524D\u3002\u30AF\u30EA\u30C3\u30AF\u3067\u3082\u9078\u629E\u3067\u304D\u308B\u3002"
1719
+ },
1720
+ {
1721
+ target: "\u30B0\u30EB\u30FC\u30D7",
1722
+ attr: "<fieldset> + <legend>",
1723
+ meaning: "\u9078\u629E\u80A2\u3092\u307E\u3068\u3081\u3001\u30B0\u30EB\u30FC\u30D7\u540D\uFF08\u8CEA\u554F\u6587\uFF09\u3092\u4E0E\u3048\u308B\u3002"
1724
+ }
1725
+ ],
1726
+ checklist: [
1727
+ '\u5404\u9078\u629E\u80A2\u306F <input type="radio"> \u3067\u3042\u308B',
1728
+ "\u30B0\u30EB\u30FC\u30D7\u5185\u306E\u30E9\u30B8\u30AA\u306F\u540C\u3058 name \u3092\u5171\u6709\u3057\u3066\u3044\u308B",
1729
+ "<label> \u3068\u95A2\u9023\u4ED8\u3044\u3066\u3044\u308B\uFF08\u5185\u5305 or for/id\uFF09",
1730
+ "<fieldset> + <legend> \u3067\u30B0\u30EB\u30FC\u30D7\u540D\u3092\u4E0E\u3048\u3066\u3044\u308B",
1731
+ "Tab \u3067\u30B0\u30EB\u30FC\u30D7\u306B\u5165\u308A\u3001\u77E2\u5370\u30AD\u30FC\u3067\u79FB\u52D5\uFF06\u9078\u629E\u3067\u304D\u308B",
1732
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09",
1733
+ '\u81EA\u4F5C\u3059\u308B\u5834\u5408\u306E\u307F role="radiogroup" / role="radio" / aria-checked / \u30ED\u30FC\u30D3\u30F3\u30B0\u30BF\u30D6\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u5B9F\u88C5'
1734
+ ],
1735
+ antipatterns: [
1736
+ {
1737
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
1738
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u305A\u3001\u77E2\u5370\u30AD\u30FC\u3082\u52B9\u304B\u306A\u3044\u3002"
1739
+ },
1740
+ {
1741
+ title: "\u30B0\u30EB\u30FC\u30D7\u3060\u3068\u4F1D\u308F\u3089\u306A\u3044",
1742
+ why: 'role="radiogroup" \u3082 <fieldset> \u3082\u306A\u304F\u3001\u9078\u629E\u80A2\u306E\u96C6\u307E\u308A\u3060\u3068\u8A8D\u8B58\u3055\u308C\u306A\u3044\u3002'
1743
+ },
1744
+ {
1745
+ title: "\u300C1\u3064\u3060\u3051\u9078\u629E\u300D\u304C\u4F1D\u308F\u3089\u306A\u3044",
1746
+ why: 'role="radio" / aria-checked \u304C\u306A\u304F\u3001\u72B6\u614B\u3082\u4F4D\u7F6E\u3082\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u306A\u3044\u3002'
1747
+ },
1748
+ {
1749
+ title: "\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u30E9\u30B8\u30AA\u4EE3\u308F\u308A\u306B\u4F7F\u3046",
1750
+ why: "\u8907\u6570\u9078\u3079\u3066\u3057\u307E\u3044\u3001\u300C1\u3064\u3060\u3051\u300D\u3068\u3044\u3046\u610F\u5473\u304C\u9006\u306B\u306A\u308B\u3002"
1751
+ }
1752
+ ],
1753
+ notes: [
1754
+ "\u30E9\u30B8\u30AA\u30B0\u30EB\u30FC\u30D7\u3067\u306F Tab \u306F\u30B0\u30EB\u30FC\u30D7\u5168\u4F53\u30671\u56DE\u3060\u3051\u6B62\u307E\u308A\u307E\u3059\uFF08\u9078\u629E\u80A2\u3054\u3068\u306B\u306F\u6B62\u307E\u3089\u306A\u3044\uFF09\u3002\u30B0\u30EB\u30FC\u30D7\u5185\u306E\u79FB\u52D5\u306F\u77E2\u5370\u30AD\u30FC\u306E\u5F79\u5272\u3067\u3059\u3002",
1755
+ '<input type="radio"> \u3092\u540C\u3058 name \u3067\u307E\u3068\u3081\u308B\u3060\u3051\u3067\u3001\u77E2\u5370\u30AD\u30FC\u79FB\u52D5\u30FB1\u3064\u3060\u3051\u9078\u629E\u30FBTab \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u304C\u3059\u3079\u3066\u81EA\u52D5\u3067\u5F97\u3089\u308C\u307E\u3059\u3002'
1756
+ ]
1757
+ };
1758
+ var switchPattern = {
1759
+ slug: "switch",
1760
+ keyboard: [
1761
+ {
1762
+ keys: "Tab",
1763
+ action: "\u6B21 / \u524D\u306E\u30B9\u30A4\u30C3\u30C1\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
1764
+ requirement: "required"
1765
+ },
1766
+ {
1767
+ keys: "Space",
1768
+ action: "\u30AA\u30F3 / \u30AA\u30D5\u3092\u5207\u308A\u66FF\u3048\u308B",
1769
+ requirement: "required"
1770
+ },
1771
+ {
1772
+ keys: "Enter",
1773
+ action: "\u30AA\u30F3 / \u30AA\u30D5\u3092\u5207\u308A\u66FF\u3048\u308B",
1774
+ requirement: "required"
1775
+ }
1776
+ ],
1777
+ aria: [
1778
+ {
1779
+ target: "\u30B9\u30A4\u30C3\u30C1\u672C\u4F53",
1780
+ attr: '<button> + role="switch"',
1781
+ meaning: "\u300C\u30B9\u30A4\u30C3\u30C1\u300D\u3068\u3057\u3066\u8A8D\u8B58\u3055\u305B\u308B\u3002\u30D9\u30FC\u30B9\u304C button \u306A\u306E\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u30FB\u30AD\u30FC\u64CD\u4F5C\u304C\u81EA\u52D5\u3002"
1782
+ },
1783
+ {
1784
+ target: "\u30B9\u30A4\u30C3\u30C1\u672C\u4F53",
1785
+ attr: 'aria-checked="true | false"',
1786
+ meaning: "\u30AA\u30F3 / \u30AA\u30D5\u306E\u72B6\u614B\u3002\u5207\u308A\u66FF\u3048\u308B\u305F\u3073\u306B\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
1787
+ },
1788
+ {
1789
+ target: "\u30B9\u30A4\u30C3\u30C1\u672C\u4F53",
1790
+ attr: "aria-labelledby \u307E\u305F\u306F aria-label",
1791
+ meaning: "\u300C\u4F55\u306E\u300D\u30B9\u30A4\u30C3\u30C1\u304B\u3068\u3044\u3046\u540D\u524D\u3092\u4E0E\u3048\u308B\u3002"
1792
+ },
1793
+ {
1794
+ target: "\u98FE\u308A\u306E\u4E38\uFF08thumb\uFF09",
1795
+ attr: 'aria-hidden="true"',
1796
+ meaning: "\u898B\u305F\u76EE\u3060\u3051\u306E\u8981\u7D20\u3092\u8AAD\u307F\u4E0A\u3052\u304B\u3089\u9664\u5916\u3059\u308B\u3002"
1797
+ }
1798
+ ],
1799
+ checklist: [
1800
+ '\u30B9\u30A4\u30C3\u30C1\u672C\u4F53\u306F <button> \u30D9\u30FC\u30B9\uFF08\u307E\u305F\u306F <input type="checkbox">\uFF09',
1801
+ 'role="switch" \u304C\u4ED8\u3044\u3066\u3044\u308B\uFF08button \u30D9\u30FC\u30B9\u306E\u5834\u5408\uFF09',
1802
+ "aria-checked \u304C\u30AA\u30F3/\u30AA\u30D5\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
1803
+ "aria-labelledby / aria-label \u3067\u540D\u524D\u3092\u4E0E\u3048\u3066\u3044\u308B",
1804
+ '\u98FE\u308A\u306E\u3064\u307E\u307F\u306F aria-hidden="true"',
1805
+ "Enter / Space \u3067\u5207\u308A\u66FF\u3048\u3089\u308C\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B",
1806
+ "\u72B6\u614B\u3092\u8272\u3060\u3051\u3067\u306A\u304F\u4F4D\u7F6E\u30FB\u30E9\u30D9\u30EB\u3067\u3082\u533A\u5225\u3067\u304D\u308B"
1807
+ ],
1808
+ antipatterns: [
1809
+ {
1810
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
1811
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001\u5207\u308A\u66FF\u3048\u3089\u308C\u306A\u3044\u3002"
1812
+ },
1813
+ {
1814
+ title: "\u5F79\u5272\u304C\u4F1D\u308F\u3089\u306A\u3044",
1815
+ why: 'role="switch" \u304C\u7121\u304F\u300C\u30B9\u30A4\u30C3\u30C1\u300D\u3068\u8A8D\u8B58\u3055\u308C\u306A\u3044\u3002'
1816
+ },
1817
+ {
1818
+ title: "\u72B6\u614B\u304C\u4F1D\u308F\u3089\u306A\u3044",
1819
+ why: "aria-checked \u304C\u7121\u304F\u3001\u30AA\u30F3/\u30AA\u30D5\u304C\u652F\u63F4\u6280\u8853\u306B\u5224\u5225\u3067\u304D\u306A\u3044\u3002"
1820
+ },
1821
+ {
1822
+ title: "\u540D\u524D\u304C\u7121\u3044",
1823
+ why: "\u4F55\u306E\u30B9\u30A4\u30C3\u30C1\u304B\u304C aria-labelledby / aria-label \u3067\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u306A\u3044\u3002"
1824
+ }
1825
+ ],
1826
+ notes: [
1827
+ "<button> \u3092\u30D9\u30FC\u30B9\u306B\u3059\u308B\u3068 Enter \u3068 Space \u306E\u4E21\u65B9\u304C\u81EA\u52D5\u3067\u52B9\u304D\u307E\u3059\u3002click \u30CF\u30F3\u30C9\u30E9\u3067 aria-checked \u3092\u53CD\u8EE2\u3059\u308B\u3060\u3051\u3067\u3059\u3002",
1828
+ "\u72B6\u614B\u3092\u8272\u3060\u3051\u3067\u793A\u3059\u306E\u3082\u907F\u3051\u307E\u3057\u3087\u3046\u3002\u3064\u307E\u307F\u306E\u4F4D\u7F6E\u3084 ON/OFF \u306E\u30E9\u30D9\u30EB\u306A\u3069\u3001\u8272\u4EE5\u5916\u306E\u624B\u304C\u304B\u308A\u3082\u4F75\u7528\u3057\u307E\u3059\u3002"
1829
+ ]
1830
+ };
1831
+ var combobox = {
1832
+ slug: "combobox",
1833
+ keyboard: [
1834
+ {
1835
+ keys: "\u6587\u5B57\u5165\u529B",
1836
+ action: "\u5019\u88DC\u3092\u7D5E\u308A\u8FBC\u307F\u3001\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u958B\u304F",
1837
+ requirement: "required"
1838
+ },
1839
+ {
1840
+ keys: "\u2193",
1841
+ action: "\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u958B\u304F / \u6B21\u306E\u5019\u88DC\u3078\u30CF\u30A4\u30E9\u30A4\u30C8\u79FB\u52D5",
1842
+ requirement: "required"
1843
+ },
1844
+ {
1845
+ keys: "\u2191",
1846
+ action: "\u524D\u306E\u5019\u88DC\u3078\u30CF\u30A4\u30E9\u30A4\u30C8\u79FB\u52D5",
1847
+ requirement: "required"
1848
+ },
1849
+ {
1850
+ keys: "Enter",
1851
+ action: "\u30CF\u30A4\u30E9\u30A4\u30C8\u4E2D\u306E\u5019\u88DC\u3092\u78BA\u5B9A\u3057\u3066\u9589\u3058\u308B",
1852
+ requirement: "required"
1853
+ },
1854
+ {
1855
+ keys: "Esc",
1856
+ action: "\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u9589\u3058\u308B\uFF08\u958B\u3044\u3066\u3044\u306A\u3051\u308C\u3070\u5165\u529B\u3092\u30AF\u30EA\u30A2\uFF09",
1857
+ requirement: "required"
1858
+ },
1859
+ {
1860
+ keys: "Home / End",
1861
+ action: "\u5165\u529B\u6B04\u5185\u306E\u30AB\u30FC\u30BD\u30EB\u79FB\u52D5\uFF08\u30C6\u30AD\u30B9\u30C8\u64CD\u4F5C\u306F\u305D\u306E\u307E\u307E\uFF09",
1862
+ requirement: "optional"
1863
+ }
1864
+ ],
1865
+ aria: [
1866
+ {
1867
+ target: "\u5165\u529B\u6B04",
1868
+ attr: 'role="combobox"',
1869
+ meaning: "\u30C6\u30AD\u30B9\u30C8\u5165\u529B\uFF0B\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u3092\u6301\u3064\u8907\u5408\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8\u3060\u3068\u793A\u3059\u3002"
1870
+ },
1871
+ {
1872
+ target: "\u5165\u529B\u6B04",
1873
+ attr: 'aria-expanded="true | false"',
1874
+ meaning: "\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u304C\u958B\u3044\u3066\u3044\u308B\u304B\u3002\u958B\u9589\u306B\u5408\u308F\u305B\u3066\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
1875
+ },
1876
+ {
1877
+ target: "\u5165\u529B\u6B04",
1878
+ attr: 'aria-controls="\u30EA\u30B9\u30C8\u306Eid"',
1879
+ meaning: "\u3069\u306E\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\uFF08listbox\uFF09\u3092\u5236\u5FA1\u3059\u308B\u304B\u3092\u793A\u3059\u3002"
1880
+ },
1881
+ {
1882
+ target: "\u5165\u529B\u6B04",
1883
+ attr: 'aria-activedescendant="\u5019\u88DC\u306Eid"',
1884
+ meaning: "\u3044\u307E\u30CF\u30A4\u30E9\u30A4\u30C8\u4E2D\u306E option \u3092\u6307\u3059\u3002\u79FB\u52D5\u306E\u305F\u3073\u306B\u66F4\u65B0\u3001\u9589\u3058\u305F\u3089\u5916\u3059\u3002"
1885
+ },
1886
+ {
1887
+ target: "\u5165\u529B\u6B04",
1888
+ attr: 'aria-autocomplete="list"',
1889
+ meaning: "\u5165\u529B\u306B\u5FDC\u3058\u3066\u30EA\u30B9\u30C8\u3067\u88DC\u5B8C\u3055\u308C\u308B\u3053\u3068\u3092\u793A\u3059\u3002"
1890
+ },
1891
+ {
1892
+ target: "\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7",
1893
+ attr: 'role="listbox" + \u540D\u524D',
1894
+ meaning: "\u5019\u88DC\u306E\u96C6\u307E\u308A\u3002aria-labelledby \u7B49\u3067\u540D\u524D\u3092\u4ED8\u3051\u308B\u3002"
1895
+ },
1896
+ {
1897
+ target: "\u5404\u5019\u88DC",
1898
+ attr: 'role="option" + \u4E00\u610F\u306E id + aria-selected',
1899
+ meaning: '1\u3064\u306E\u5019\u88DC\u3002\u30CF\u30A4\u30E9\u30A4\u30C8\u4E2D\u306F aria-selected="true"\u3002'
1900
+ },
1901
+ {
1902
+ target: "\u30E9\u30A4\u30D6\u9818\u57DF",
1903
+ attr: 'aria-live="polite"',
1904
+ meaning: "\u300C\u25CB\u4EF6\u306E\u5019\u88DC\u300D\u306A\u3069\u4EF6\u6570\u306E\u5909\u5316\u3092\u8AAD\u307F\u4E0A\u3052\u308B\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09\u3002"
1905
+ }
1906
+ ],
1907
+ checklist: [
1908
+ '\u5165\u529B\u6B04\u306B role="combobox" + aria-expanded + aria-controls \u304C\u3042\u308B',
1909
+ '\u30DD\u30C3\u30D7\u30A2\u30C3\u30D7\u306F role="listbox" > role="option"\uFF08option \u306B\u4E00\u610F\u306E id\uFF09',
1910
+ "\u30CF\u30A4\u30E9\u30A4\u30C8\u306F aria-activedescendant + aria-selected \u3067\u8868\u3057\u3001\u79FB\u52D5\u306E\u305F\u3073\u306B\u66F4\u65B0",
1911
+ "aria-expanded \u304C\u958B\u9589\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
1912
+ "\u2193 \u3067\u5019\u88DC\u3078\u3001\u2191\u2193 \u3067\u79FB\u52D5\u3001Enter \u78BA\u5B9A\u3001Esc \u3067\u9589\u3058\u308B",
1913
+ "\u5165\u529B\u3067\u5019\u88DC\u304C\u7D5E\u308A\u8FBC\u307E\u308C\u3001\u4EF6\u6570\u3092 aria-live \u3067\u8AAD\u307F\u4E0A\u3052\u308B\uFF08\u63A8\u5968\uFF09",
1914
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u306F\u5165\u529B\u6B04\u306B\u4FDD\u6301\u3057\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044"
1915
+ ],
1916
+ antipatterns: [
1917
+ {
1918
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u5019\u88DC\u3092\u9078\u3079\u306A\u3044",
1919
+ why: "\u5019\u88DC\u304C div \u3067\u3001\u77E2\u5370\u30AD\u30FC\u3084\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u52B9\u304B\u306A\u3044\u3002"
1920
+ },
1921
+ {
1922
+ title: "\u30ED\u30FC\u30EB\u30FB\u72B6\u614B\u304C\u7121\u3044",
1923
+ why: 'role="combobox" / aria-expanded / aria-controls \u304C\u306A\u304F\u3001\u958B\u9589\u3082\u95A2\u4FC2\u3082\u4F1D\u308F\u3089\u306A\u3044\u3002'
1924
+ },
1925
+ {
1926
+ title: "\u30CF\u30A4\u30E9\u30A4\u30C8\u304C\u4F1D\u308F\u3089\u306A\u3044",
1927
+ why: "aria-activedescendant / aria-selected \u304C\u306A\u304F\u3001\u3069\u308C\u3092\u6307\u3057\u3066\u3044\u308B\u304B\u5206\u304B\u3089\u306A\u3044\u3002"
1928
+ },
1929
+ {
1930
+ title: "\u4EF6\u6570\u304C\u4F1D\u308F\u3089\u306A\u3044",
1931
+ why: "aria-live \u304C\u306A\u304F\u3001\u300C\u25CB\u4EF6\u306E\u5019\u88DC\u300D\u304C\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u306A\u3044\u3002"
1932
+ }
1933
+ ],
1934
+ notes: [
1935
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u306F\u5165\u529B\u6B04\u306B\u7F6E\u3044\u305F\u307E\u307E\u52D5\u304B\u3057\u307E\u305B\u3093\u3002aria-activedescendant \u3067\u300C\u3044\u307E\u3069\u306E\u5019\u88DC\u3092\u30CF\u30A4\u30E9\u30A4\u30C8\u3057\u3066\u3044\u308B\u304B\u300D\u3060\u3051\u3092\u4F1D\u3048\u307E\u3059\u3002\u3053\u3046\u3059\u308B\u3068\u3001\u5165\u529B\u3092\u7D9A\u3051\u306A\u304C\u3089\u5019\u88DC\u3092\u9078\u3079\u307E\u3059\u3002"
1936
+ ]
1937
+ };
1938
+ var listbox = {
1939
+ slug: "listbox",
1940
+ keyboard: [
1941
+ {
1942
+ keys: "Tab",
1943
+ action: "\u30EA\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u5F53\u3066\u308B / \u5916\u3059",
1944
+ requirement: "required"
1945
+ },
1946
+ {
1947
+ keys: "\u2193 / \u2191",
1948
+ action: "\u6B21 / \u524D\u306E\u9078\u629E\u80A2\u3078\u79FB\u52D5\uFF08\u79FB\u52D5\u306B\u5408\u308F\u305B\u3066\u9078\u629E\u3092\u66F4\u65B0\uFF09",
1949
+ requirement: "required"
1950
+ },
1951
+ {
1952
+ keys: "Home / End",
1953
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\u9078\u629E\u80A2\u3078\u79FB\u52D5",
1954
+ requirement: "recommended"
1955
+ }
1956
+ ],
1957
+ aria: [
1958
+ {
1959
+ target: "\u30B3\u30F3\u30C6\u30CA",
1960
+ attr: 'role="listbox"',
1961
+ meaning: "\u300C\u9078\u3079\u308B\u9805\u76EE\u306E\u96C6\u307E\u308A\u300D\u3067\u3042\u308B\u3053\u3068\u3092\u793A\u3059\u3002"
1962
+ },
1963
+ {
1964
+ target: "\u30B3\u30F3\u30C6\u30CA",
1965
+ attr: "aria-labelledby\uFF08\u307E\u305F\u306F aria-label\uFF09",
1966
+ meaning: "\u30EA\u30B9\u30C8\u30DC\u30C3\u30AF\u30B9\u306E\u540D\u524D\u3092\u4E0E\u3048\u308B\u3002"
1967
+ },
1968
+ {
1969
+ target: "\u30B3\u30F3\u30C6\u30CA",
1970
+ attr: 'tabindex="0" + aria-activedescendant',
1971
+ meaning: "\u30EA\u30B9\u30C8\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u7F6E\u304D\u3001\u73FE\u5728\u4F4D\u7F6E\u306E option id \u3092\u6307\u3059\uFF08activedescendant \u65B9\u5F0F\uFF09\u3002"
1972
+ },
1973
+ {
1974
+ target: "\u5404\u9805\u76EE",
1975
+ attr: 'role="option" + \u4E00\u610F\u306E id',
1976
+ meaning: "1\u3064\u306E\u9078\u629E\u80A2\u3002id \u306F aria-activedescendant \u304B\u3089\u53C2\u7167\u3055\u308C\u308B\u3002"
1977
+ },
1978
+ {
1979
+ target: "\u5404\u9805\u76EE",
1980
+ attr: 'aria-selected="true | false"',
1981
+ meaning: "\u9078\u629E\u72B6\u614B\u3002\u9078\u629E\u306E\u5909\u5316\u306B\u5408\u308F\u305B\u3066\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
1982
+ }
1983
+ ],
1984
+ checklist: [
1985
+ '\u30B3\u30F3\u30C6\u30CA\u306B role="listbox" \u3068\u540D\u524D\uFF08aria-labelledby \u7B49\uFF09\u304C\u3042\u308B',
1986
+ '\u5404\u9805\u76EE\u306F role="option" + \u4E00\u610F\u306E id \u3092\u6301\u3064',
1987
+ "aria-selected \u304C\u9078\u629E\u72B6\u614B\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
1988
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u7BA1\u7406\u304C\u3042\u308B\uFF08aria-activedescendant \u307E\u305F\u306F\u30ED\u30FC\u30D3\u30F3\u30B0\u30BF\u30D6\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\uFF09",
1989
+ "\u2191\u2193 \u3067\u79FB\u52D5\u3067\u304D\u3001Home / End \u3082\u4F7F\u3048\u308B\uFF08\u63A8\u5968\uFF09",
1990
+ "\u30AF\u30EA\u30C3\u30AF\u3067\u3082\u9078\u629E\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B"
1991
+ ],
1992
+ antipatterns: [
1993
+ {
1994
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
1995
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001\u77E2\u5370\u30AD\u30FC\u3082\u52B9\u304B\u306A\u3044\u3002"
1996
+ },
1997
+ {
1998
+ title: "\u5F79\u5272\u304C\u4F1D\u308F\u3089\u306A\u3044",
1999
+ why: 'role="listbox"/role="option" \u304C\u306A\u304F\u300C\u9078\u3079\u308B\u4E00\u89A7\u300D\u3060\u3068\u8A8D\u8B58\u3055\u308C\u306A\u3044\u3002'
2000
+ },
2001
+ {
2002
+ title: "\u9078\u629E\u72B6\u614B\u304C\u4F1D\u308F\u3089\u306A\u3044",
2003
+ why: "aria-selected \u304C\u306A\u304F\u3001\u3069\u308C\u304C\u9078\u3070\u308C\u3066\u3044\u308B\u304B\u5206\u304B\u3089\u306A\u3044\u3002"
2004
+ },
2005
+ {
2006
+ title: "\u540D\u524D\u3082\u4F4D\u7F6E\u3082\u306A\u3044",
2007
+ why: "\u30B0\u30EB\u30FC\u30D7\u540D\u3084\u300C\u4F55\u500B\u4E2D\u4F55\u500B\u76EE\u300D\u304C\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u306A\u3044\u3002"
2008
+ }
2009
+ ],
2010
+ notes: [
2011
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u306F\u30EA\u30B9\u30C8\uFF08ul\uFF09\u306B\u7F6E\u3044\u305F\u307E\u307E\u3001\u300C\u3044\u307E\u3069\u306E option \u3092\u6307\u3057\u3066\u3044\u308B\u304B\u300D\u3060\u3051\u3092 aria-activedescendant \u5C5E\u6027\u3067\u4F1D\u3048\u308B\u65B9\u5F0F\uFF08activedescendant \u65B9\u5F0F\uFF09\u3068\u3001\u5404 option \u306B tabindex \u3092\u914D\u308B\u30ED\u30FC\u30D3\u30F3\u30B0\u30BF\u30D6\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u65B9\u5F0F\u306E2\u901A\u308A\u3067\u5B9F\u88C5\u3067\u304D\u308B\u3002"
2012
+ ]
2013
+ };
2014
+ var slider = {
2015
+ slug: "slider",
2016
+ keyboard: [
2017
+ {
2018
+ keys: "\u2192 / \u2191",
2019
+ action: "\u5024\u30921\u30B9\u30C6\u30C3\u30D7\u5897\u3084\u3059",
2020
+ requirement: "required"
2021
+ },
2022
+ {
2023
+ keys: "\u2190 / \u2193",
2024
+ action: "\u5024\u30921\u30B9\u30C6\u30C3\u30D7\u6E1B\u3089\u3059",
2025
+ requirement: "required"
2026
+ },
2027
+ {
2028
+ keys: "Home",
2029
+ action: "\u6700\u5C0F\u5024\u306B\u3059\u308B",
2030
+ requirement: "required"
2031
+ },
2032
+ {
2033
+ keys: "End",
2034
+ action: "\u6700\u5927\u5024\u306B\u3059\u308B",
2035
+ requirement: "required"
2036
+ },
2037
+ {
2038
+ keys: "Page Up / Page Down",
2039
+ action: "\u5024\u3092\u5927\u304D\u3044\u30B9\u30C6\u30C3\u30D7\u3067\u5897\u6E1B\u3059\u308B",
2040
+ requirement: "recommended"
2041
+ }
2042
+ ],
2043
+ aria: [
2044
+ {
2045
+ target: "\u30CD\u30A4\u30C6\u30A3\u30D6 range",
2046
+ attr: "<label for> \u3067\u95A2\u9023\u4ED8\u3051",
2047
+ meaning: "\u3064\u307E\u307F\u306B\u540D\u524D\uFF08\u30E9\u30D9\u30EB\uFF09\u3092\u4E0E\u3048\u308B\u3002\u3053\u308C\u3060\u3051\u3067 role\u30FB\u5024\u30FB\u7BC4\u56F2\u306F\u81EA\u52D5\u3002"
2048
+ },
2049
+ {
2050
+ target: "\u81EA\u4F5C\u306E\u3064\u307E\u307F",
2051
+ attr: 'role="slider"',
2052
+ meaning: "\u300C\u30B9\u30E9\u30A4\u30C0\u30FC\u3067\u3042\u308B\u300D\u3068\u652F\u63F4\u6280\u8853\u3078\u4F1D\u3048\u308B\u3002"
2053
+ },
2054
+ {
2055
+ target: "\u81EA\u4F5C\u306E\u3064\u307E\u307F",
2056
+ attr: 'tabindex="0"',
2057
+ meaning: "div \u3092\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306B\u3059\u308B\u3002"
2058
+ },
2059
+ {
2060
+ target: "\u81EA\u4F5C\u306E\u3064\u307E\u307F",
2061
+ attr: "aria-valuemin / aria-valuemax",
2062
+ meaning: "\u52D5\u304B\u305B\u308B\u7BC4\u56F2\uFF08\u6700\u5C0F\u30FB\u6700\u5927\uFF09\u3002"
2063
+ },
2064
+ {
2065
+ target: "\u81EA\u4F5C\u306E\u3064\u307E\u307F",
2066
+ attr: "aria-valuenow",
2067
+ meaning: "\u73FE\u5728\u5024\u3002\u52D5\u304B\u3059\u305F\u3073\u306B\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
2068
+ },
2069
+ {
2070
+ target: "\u81EA\u4F5C\u306E\u3064\u307E\u307F",
2071
+ attr: "aria-valuetext",
2072
+ meaning: "\u6570\u5024\u3060\u3051\u3067\u306F\u610F\u5473\u304C\u4F1D\u308F\u3089\u306A\u3044\u3068\u304D\uFF08\u300C40%\u300D\u300C\u4E2D\u300D\u306A\u3069\uFF09\u306B\u4EBA\u306B\u308F\u304B\u308B\u8868\u73FE\u3092\u88DC\u3046\uFF08\u4EFB\u610F\uFF09\u3002"
2073
+ },
2074
+ {
2075
+ target: "\u81EA\u4F5C\u306E\u3064\u307E\u307F",
2076
+ attr: "aria-label / aria-labelledby",
2077
+ meaning: "\u3064\u307E\u307F\u306E\u540D\u524D\u3002\u53EF\u8996\u30E9\u30D9\u30EB\u304C\u3042\u308C\u3070 aria-labelledby \u3067\u7D50\u3076\u3002"
2078
+ }
2079
+ ],
2080
+ checklist: [
2081
+ '\u307E\u305A <input type="range"> \u3092\u691C\u8A0E\u3057\u305F\uFF08\u6700\u512A\u5148\uFF09',
2082
+ "\u3064\u307E\u307F\u306B\u540D\u524D\u304C\u3042\u308B\uFF08<label for> \u307E\u305F\u306F aria-label(ledby)\uFF09",
2083
+ "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u3001\u2190 \u2192 \u3067\u5024\u3092\u5909\u3048\u3089\u308C\u308B",
2084
+ "Home / End \u3067\u6700\u5C0F\u30FB\u6700\u5927\u3078\u52D5\u304F",
2085
+ '\u81EA\u4F5C\u6642\u306F role="slider" + aria-valuemin/max/now \u304C\u3042\u308B',
2086
+ "\u5024\u3092\u52D5\u304B\u3059\u305F\u3073\u306B aria-valuenow \u3092\u66F4\u65B0\u3057\u3066\u3044\u308B",
2087
+ "\u6570\u5024\u3060\u3051\u3067\u610F\u5473\u304C\u4F1D\u308F\u3089\u306A\u3044\u3068\u304D\u306F aria-valuetext \u3092\u6DFB\u3048\u308B",
2088
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2089
+ ],
2090
+ antipatterns: [
2091
+ {
2092
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
2093
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001\u77E2\u5370\u30AD\u30FC\u3067\u52D5\u304B\u305B\u306A\u3044\u3002"
2094
+ },
2095
+ {
2096
+ title: "\u5F79\u5272\u304C\u4F1D\u308F\u3089\u306A\u3044",
2097
+ why: 'role="slider" \u304C\u7121\u304F\u3001\u30B9\u30E9\u30A4\u30C0\u30FC\u3060\u3068\u8A8D\u8B58\u3055\u308C\u306A\u3044\u3002'
2098
+ },
2099
+ {
2100
+ title: "\u5024\u30FB\u7BC4\u56F2\u304C\u4F1D\u308F\u3089\u306A\u3044",
2101
+ why: "aria-valuenow / valuemin / valuemax \u304C\u7121\u304F\u3001\u3044\u307E\u4F55%\u304B\u3082\u5206\u304B\u3089\u306A\u3044\u3002"
2102
+ },
2103
+ {
2104
+ title: "\u540D\u524D\u304C\u7121\u3044",
2105
+ why: "\u4F55\u3092\u8ABF\u6574\u3059\u308B\u30B9\u30E9\u30A4\u30C0\u30FC\u306A\u306E\u304B\uFF08\u660E\u308B\u3055\uFF1F\uFF09\u304C\u4F1D\u308F\u3089\u306A\u3044\u3002"
2106
+ }
2107
+ ],
2108
+ notes: [
2109
+ '<input type="range"> \u3092\u4F7F\u3048\u3070\u3001\u2192 \u2190 Home End Page Up/Down \u306E\u64CD\u4F5C\u3068\u8AAD\u307F\u4E0A\u3052\u306F\u3059\u3079\u3066\u30D6\u30E9\u30A6\u30B6\u304C\u81EA\u52D5\u3067\u63D0\u4F9B\u3059\u308B\u3002\u81EA\u4F5C\uFF08role="slider"\uFF09\u3059\u308B\u5834\u5408\u306F keydown \u3067\u81EA\u524D\u5B9F\u88C5\u304C\u5FC5\u8981\u3002'
2110
+ ]
2111
+ };
2112
+ var sliderMultithumb = {
2113
+ slug: "slider-multithumb",
2114
+ keyboard: [
2115
+ {
2116
+ keys: "Tab",
2117
+ action: "\u3064\u307E\u307F\u9593\uFF08\u6700\u5C0F\u4FA1\u683C \u2194 \u6700\u5927\u4FA1\u683C\uFF09\u3092\u79FB\u52D5",
2118
+ requirement: "required"
2119
+ },
2120
+ {
2121
+ keys: "\u2192 / \u2191",
2122
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u3064\u307E\u307F\u30921\u30B9\u30C6\u30C3\u30D7\u5897\u3084\u3059",
2123
+ requirement: "required"
2124
+ },
2125
+ {
2126
+ keys: "\u2190 / \u2193",
2127
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u3064\u307E\u307F\u30921\u30B9\u30C6\u30C3\u30D7\u6E1B\u3089\u3059",
2128
+ requirement: "required"
2129
+ },
2130
+ {
2131
+ keys: "Home / End",
2132
+ action: "\u305D\u306E\u3064\u307E\u307F\u304C\u52D5\u3051\u308B\u7AEF\u307E\u3067\u79FB\u52D5",
2133
+ requirement: "required"
2134
+ },
2135
+ {
2136
+ keys: "Page Up / Page Down",
2137
+ action: "\u5927\u304D\u3044\u30B9\u30C6\u30C3\u30D7\u3067\u5897\u6E1B",
2138
+ requirement: "recommended"
2139
+ }
2140
+ ],
2141
+ aria: [
2142
+ {
2143
+ target: "\u5404\u3064\u307E\u307F",
2144
+ attr: 'role="slider"',
2145
+ meaning: "\u3064\u307E\u307F1\u30641\u3064\u3092\u300C\u30B9\u30E9\u30A4\u30C0\u30FC\u300D\u306B\u3059\u308B\uFF082\u3064\u3042\u308B\u306A\u30892\u3064\u3068\u3082\uFF09\u3002"
2146
+ },
2147
+ {
2148
+ target: "\u5404\u3064\u307E\u307F",
2149
+ attr: 'tabindex="0"',
2150
+ meaning: "\u3064\u307E\u307F\u3092\u500B\u5225\u306B\u30AD\u30FC\u30DC\u30FC\u30C9\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306B\u3059\u308B\u3002"
2151
+ },
2152
+ {
2153
+ target: "\u5404\u3064\u307E\u307F",
2154
+ attr: "aria-label\uFF08\u500B\u5225\u306B\uFF09",
2155
+ meaning: "\u300C\u6700\u5C0F\u4FA1\u683C\u300D\u300C\u6700\u5927\u4FA1\u683C\u300D\u306E\u3088\u3046\u306B\u533A\u5225\u3067\u304D\u308B\u540D\u524D\u3092\u4ED8\u3051\u308B\u3002"
2156
+ },
2157
+ {
2158
+ target: "\u5404\u3064\u307E\u307F",
2159
+ attr: "aria-valuenow",
2160
+ meaning: "\u305D\u306E\u3064\u307E\u307F\u306E\u73FE\u5728\u5024\u3002\u52D5\u304B\u3059\u305F\u3073\u306B\u66F4\u65B0\u3002"
2161
+ },
2162
+ {
2163
+ target: "\u4E0B\u9650\u3064\u307E\u307F",
2164
+ attr: "aria-valuemax = \u4E0A\u9650\u306E\u73FE\u5728\u5024",
2165
+ meaning: "\u4E0B\u9650\u304C\u4E0A\u9650\u3092\u8D8A\u3048\u306A\u3044\u3088\u3046\u3001\u53EF\u52D5\u7BC4\u56F2\u3092\u52D5\u7684\u306B\u7DE0\u3081\u308B\u3002"
2166
+ },
2167
+ {
2168
+ target: "\u4E0A\u9650\u3064\u307E\u307F",
2169
+ attr: "aria-valuemin = \u4E0B\u9650\u306E\u73FE\u5728\u5024",
2170
+ meaning: "\u4E0A\u9650\u304C\u4E0B\u9650\u3092\u4E0B\u56DE\u3089\u306A\u3044\u3088\u3046\u3001\u53EF\u52D5\u7BC4\u56F2\u3092\u52D5\u7684\u306B\u7DE0\u3081\u308B\u3002"
2171
+ },
2172
+ {
2173
+ target: "\u5404\u3064\u307E\u307F",
2174
+ attr: "aria-valuetext",
2175
+ meaning: "\u300C2000\u5186\u300D\u306A\u3069\u5358\u4F4D\u4ED8\u304D\u3067\u8AAD\u307F\u4E0A\u3052\u3055\u305B\u308B\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09\u3002"
2176
+ }
2177
+ ],
2178
+ checklist: [
2179
+ '\u3064\u307E\u307F2\u3064\u306B\u305D\u308C\u305E\u308C role="slider" \u3092\u4ED8\u3051\u305F',
2180
+ "\u3064\u307E\u307F\u3054\u3068\u306B\u533A\u5225\u3067\u304D\u308B aria-label\uFF08\u300C\u6700\u5C0F\u4FA1\u683C\u300D\u300C\u6700\u5927\u4FA1\u683C\u300D\uFF09\u304C\u3042\u308B",
2181
+ '\u5404\u3064\u307E\u307F\u304C tabindex="0" \u3067\u500B\u5225\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u308B',
2182
+ "\u77E2\u5370\u30FBHome\u30FBEnd\u30FBPageUp/Down \u3067\u52D5\u304B\u305B\u308B",
2183
+ "\u4E0B\u9650\u304C\u4E0A\u9650\u3092\u8D8A\u3048\u306A\u3044\uFF08\u53EF\u52D5\u7BC4\u56F2\u3092\u76F8\u624B\u306E\u5024\u3067\u52D5\u7684\u306B\u7DE0\u3081\u3066\u3044\u308B\uFF09",
2184
+ "\u52D5\u304B\u3059\u305F\u3073\u306B aria-valuenow \u3092\u66F4\u65B0\u3057\u3066\u3044\u308B",
2185
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2186
+ ],
2187
+ antipatterns: [
2188
+ {
2189
+ title: "\u3069\u3061\u3089\u306E\u3064\u307E\u307F\u304B\u5206\u304B\u3089\u306A\u3044",
2190
+ why: "aria-label \u304C\u7121\u304F\u300C\u6700\u5C0F\u300D\u300C\u6700\u5927\u300D\u3092\u533A\u5225\u3067\u304D\u306A\u3044\u3002"
2191
+ },
2192
+ {
2193
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
2194
+ why: "tabindex \u304C\u7121\u304F\u3001\u77E2\u5370\u30AD\u30FC\u3082\u52B9\u304B\u306A\u3044\u3002"
2195
+ },
2196
+ {
2197
+ title: "\u5024\u30FB\u7BC4\u56F2\u304C\u4F1D\u308F\u3089\u306A\u3044",
2198
+ why: 'role="slider" \u3084 aria-valuenow \u304C\u7121\u3044\u3002'
2199
+ },
2200
+ {
2201
+ title: "\u5236\u7D04\u304C\u7121\u3044",
2202
+ why: "\u4E0B\u9650\u304C\u4E0A\u9650\u3092\u8FFD\u3044\u8D8A\u3057\u3066\u3082\u6B62\u307E\u3089\u305A\u3001\u5024\u304C\u58CA\u308C\u308B\u3002"
2203
+ }
2204
+ ],
2205
+ notes: [
2206
+ '\u30CD\u30A4\u30C6\u30A3\u30D6\u306E <input type="range"> \u306F1\u3064\u307E\u307F\u5C02\u7528\u306A\u306E\u3067\u30012\u3064\u307E\u307F\u306F role="slider" \u3092\u6301\u3064\u8981\u7D20\u30922\u3064\u4E26\u3079\u3066\u81EA\u4F5C\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002',
2207
+ "\u5404\u3064\u307E\u307F\u306E aria-valuemax\uFF08\u4E0B\u9650\u5074\uFF09\u3068 aria-valuemin\uFF08\u4E0A\u9650\u5074\uFF09\u3092\u76F8\u624B\u306E\u73FE\u5728\u5024\u3067\u52D5\u7684\u306B\u66F4\u65B0\u3059\u308B\u3053\u3068\u3067\u3001\u4E92\u3044\u3092\u8FFD\u3044\u8D8A\u3055\u306A\u3044\u5236\u7D04\u3092\u5B9F\u88C5\u3059\u308B\u3002"
2208
+ ]
2209
+ };
2210
+ var spinbutton = {
2211
+ slug: "spinbutton",
2212
+ keyboard: [
2213
+ {
2214
+ keys: "\u2191",
2215
+ action: "\u5024\u30921\u30B9\u30C6\u30C3\u30D7\u5897\u3084\u3059",
2216
+ requirement: "required"
2217
+ },
2218
+ {
2219
+ keys: "\u2193",
2220
+ action: "\u5024\u30921\u30B9\u30C6\u30C3\u30D7\u6E1B\u3089\u3059",
2221
+ requirement: "required"
2222
+ },
2223
+ {
2224
+ keys: "Home / End",
2225
+ action: "\u6700\u5C0F\u5024 / \u6700\u5927\u5024\u306B\u3059\u308B",
2226
+ requirement: "recommended"
2227
+ },
2228
+ {
2229
+ keys: "\u6570\u5B57\u30AD\u30FC",
2230
+ action: "\u5024\u3092\u76F4\u63A5\u5165\u529B\u3059\u308B",
2231
+ requirement: "optional"
2232
+ }
2233
+ ],
2234
+ aria: [
2235
+ {
2236
+ target: "\u30CD\u30A4\u30C6\u30A3\u30D6 number",
2237
+ attr: "<label for> \u3067\u95A2\u9023\u4ED8\u3051",
2238
+ meaning: "\u5165\u529B\u6B04\u306B\u540D\u524D\u3092\u4E0E\u3048\u308B\u3002role\u30FB\u5024\u30FB\u7BC4\u56F2\u30FB\u5897\u6E1B\u306F\u81EA\u52D5\u3002"
2239
+ },
2240
+ {
2241
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2242
+ attr: 'role="spinbutton"',
2243
+ meaning: "\u300C\u30B9\u30D4\u30F3\u30DC\u30BF\u30F3\u3067\u3042\u308B\u300D\u3068\u652F\u63F4\u6280\u8853\u3078\u4F1D\u3048\u308B\u3002"
2244
+ },
2245
+ {
2246
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2247
+ attr: 'tabindex="0"',
2248
+ meaning: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306B\u3057\u3001\u2191\u2193 \u3092\u53D7\u3051\u53D6\u308C\u308B\u3088\u3046\u306B\u3059\u308B\u3002"
2249
+ },
2250
+ {
2251
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2252
+ attr: "aria-valuemin / aria-valuemax",
2253
+ meaning: "\u9078\u3079\u308B\u7BC4\u56F2\uFF08\u6700\u5C0F\u30FB\u6700\u5927\uFF09\u3002"
2254
+ },
2255
+ {
2256
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2257
+ attr: "aria-valuenow",
2258
+ meaning: "\u73FE\u5728\u5024\u3002\u5897\u6E1B\u306E\u305F\u3073\u306B\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
2259
+ },
2260
+ {
2261
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2262
+ attr: "aria-label / aria-labelledby",
2263
+ meaning: "\u4F55\u306E\u6570\u3092\u9078\u3076\u30B9\u30D4\u30F3\u30DC\u30BF\u30F3\u304B\u306E\u540D\u524D\u3002"
2264
+ },
2265
+ {
2266
+ target: "\u5897\u6E1B\u30DC\u30BF\u30F3",
2267
+ attr: '<button> + aria-label="\u5897\u3084\u3059/\u6E1B\u3089\u3059"',
2268
+ meaning: "\uFF0B \u2212 \u306F\u672C\u7269\u306E button \u306B\u3057\u3001\u8A18\u53F7\u3060\u3051\u306E\u5834\u5408\u306F\u540D\u524D\u3092\u88DC\u3046\u3002"
2269
+ }
2270
+ ],
2271
+ checklist: [
2272
+ '\u307E\u305A <input type="number"> \u3092\u691C\u8A0E\u3057\u305F\uFF08\u6700\u512A\u5148\uFF09',
2273
+ "\u5165\u529B\u6B04\uFF0F\u672C\u4F53\u306B\u540D\u524D\u304C\u3042\u308B\uFF08<label for> \u307E\u305F\u306F aria-label(ledby)\uFF09",
2274
+ "\uFF0B \u2212 \u306F\u672C\u7269\u306E <button> \u3067\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u62BC\u305B\u308B",
2275
+ "\u2191 \u2193 \u3067\u5024\u3092\u5897\u6E1B\u3067\u304D\u308B",
2276
+ '\u81EA\u4F5C\u6642\u306F role="spinbutton" + aria-valuemin/max/now \u304C\u3042\u308B',
2277
+ "\u5897\u6E1B\u306E\u305F\u3073\u306B aria-valuenow \u3092\u66F4\u65B0\u3057\u3066\u3044\u308B",
2278
+ "\u7BC4\u56F2\u5916\u306B\u5897\u6E1B\u3057\u306A\u3044\uFF08\u6700\u5C0F\u30FB\u6700\u5927\u3067\u6B62\u307E\u308B\uFF09",
2279
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2280
+ ],
2281
+ antipatterns: [
2282
+ {
2283
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u5897\u6E1B\u3067\u304D\u306A\u3044",
2284
+ why: "\uFF0B \u2212 \u304C div \u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3082\u62BC\u4E0B\u3082\u3067\u304D\u306A\u3044\u3002"
2285
+ },
2286
+ {
2287
+ title: "\u5F79\u5272\u304C\u4F1D\u308F\u3089\u306A\u3044",
2288
+ why: 'role="spinbutton" \u304C\u7121\u304F\u3001\u30B9\u30D4\u30F3\u30DC\u30BF\u30F3\u3068\u8A8D\u8B58\u3055\u308C\u306A\u3044\u3002'
2289
+ },
2290
+ {
2291
+ title: "\u5024\u30FB\u7BC4\u56F2\u304C\u4F1D\u308F\u3089\u306A\u3044",
2292
+ why: "aria-valuenow / valuemin / valuemax \u304C\u7121\u3044\u3002"
2293
+ },
2294
+ {
2295
+ title: "\u540D\u524D\u304C\u7121\u3044",
2296
+ why: "label \u672A\u95A2\u9023\u4ED8\u3051\u3067\u3001\u4F55\u306E\u6570\u304B\u5206\u304B\u3089\u306A\u3044\u3002"
2297
+ }
2298
+ ],
2299
+ notes: [
2300
+ '<input type="number"> \u3092\u4F7F\u3048\u3070\u3001\u2191\u2193 \u3067\u306E\u5897\u6E1B\u30FB\u76F4\u63A5\u5165\u529B\u30FB\u8AAD\u307F\u4E0A\u3052\u306F\u3059\u3079\u3066\u30D6\u30E9\u30A6\u30B6\u304C\u81EA\u52D5\u3067\u63D0\u4F9B\u3059\u308B\u3002'
2301
+ ]
2302
+ };
2303
+ var meter = {
2304
+ slug: "meter",
2305
+ // 表示専用(非インタラクティブ)なのでキーボード操作なし。
2306
+ keyboard: [],
2307
+ aria: [
2308
+ {
2309
+ target: "\u30CD\u30A4\u30C6\u30A3\u30D6 meter",
2310
+ attr: "<meter min max value> + <label for>",
2311
+ meaning: "role\u30FB\u5024\u30FB\u7BC4\u56F2\u306F\u81EA\u52D5\u3002label \u3067\u540D\u524D\u3092\u4ED8\u3051\u308B\u3002"
2312
+ },
2313
+ {
2314
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2315
+ attr: 'role="meter"',
2316
+ meaning: "\u300C\u8A08\u6E2C\u5024\u306E\u8868\u793A\u3067\u3042\u308B\u300D\u3068\u652F\u63F4\u6280\u8853\u3078\u4F1D\u3048\u308B\u3002"
2317
+ },
2318
+ {
2319
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2320
+ attr: "aria-valuemin / aria-valuemax",
2321
+ meaning: "\u7BC4\u56F2\uFF08\u6700\u5C0F\u30FB\u6700\u5927\uFF09\u3002\u65E2\u77E5\u306E\u7BC4\u56F2\u3067\u3042\u308B\u3053\u3068\u304C meter \u306E\u524D\u63D0\u3002"
2322
+ },
2323
+ {
2324
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2325
+ attr: "aria-valuenow",
2326
+ meaning: "\u73FE\u5728\u5024\u3002\u5024\u304C\u5909\u308F\u3063\u305F\u3089\u66F4\u65B0\u3059\u308B\uFF08\u30E6\u30FC\u30B6\u30FC\u64CD\u4F5C\u3067\u306F\u306A\u304F\u30D7\u30ED\u30B0\u30E9\u30E0\u304B\u3089\uFF09\u3002"
2327
+ },
2328
+ {
2329
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2330
+ attr: "aria-valuetext",
2331
+ meaning: "\u300C72%\u300D\u300C\u6B8B\u308A 28%\u300D\u306A\u3069\u4EBA\u306B\u308F\u304B\u308B\u8868\u73FE\u3092\u88DC\u3046\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09\u3002"
2332
+ },
2333
+ {
2334
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2335
+ attr: "aria-label / aria-labelledby",
2336
+ meaning: "\u4F55\u306E\u30E1\u30FC\u30BF\u30FC\u304B\uFF08\u300C\u30C7\u30A3\u30B9\u30AF\u4F7F\u7528\u7387\u300D\uFF09\u306E\u540D\u524D\u3002"
2337
+ },
2338
+ {
2339
+ target: "\u81EA\u4F5C\u306E\u672C\u4F53",
2340
+ attr: "tabindex \u306A\u3057",
2341
+ meaning: '\u8868\u793A\u5C02\u7528\u306A\u306E\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u4E0D\u8981\u3002role="slider" \u3068\u3082\u6DF7\u540C\u3057\u306A\u3044\u3002'
2342
+ }
2343
+ ],
2344
+ checklist: [
2345
+ "\u300C\u9032\u6357\u300D\u3067\u306F\u306A\u304F\u300C\u65E2\u77E5\u306E\u7BC4\u56F2\u306E\u73FE\u5728\u91CF\u300D\u3060\u3068\u78BA\u8A8D\u3057\u305F\uFF08progressbar \u3068\u53D6\u308A\u9055\u3048\u3066\u3044\u306A\u3044\uFF09",
2346
+ "\u307E\u305A\u30CD\u30A4\u30C6\u30A3\u30D6 <meter> \u3092\u691C\u8A0E\u3057\u305F\uFF08\u6700\u512A\u5148\uFF09",
2347
+ "\u30E1\u30FC\u30BF\u30FC\u306B\u540D\u524D\u304C\u3042\u308B\uFF08<label for> \u307E\u305F\u306F aria-label(ledby)\uFF09",
2348
+ '\u81EA\u4F5C\u6642\u306F role="meter" + aria-valuemin/max/now \u304C\u3042\u308B',
2349
+ "\u5024\u304C\u5909\u308F\u3063\u305F\u3089 aria-valuenow\uFF08\u3068 aria-valuetext\uFF09\u3092\u66F4\u65B0\u3057\u3066\u3044\u308B",
2350
+ "\u8868\u793A\u5C02\u7528\u306A\u306E\u3067 tabindex \u3092\u4ED8\u3051\u3066\u3044\u306A\u3044\uFF08\u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u306F\u7121\u3044\uFF09",
2351
+ "\u72B6\u614B\u3092\u8272\u3060\u3051\u306B\u983C\u3089\u305A\u3001\u6570\u5024\u3084\u30C6\u30AD\u30B9\u30C8\u3067\u3082\u4F1D\u3048\u3066\u3044\u308B"
2352
+ ],
2353
+ antipatterns: [
2354
+ {
2355
+ title: "\u5F79\u5272\u304C\u7121\u3044",
2356
+ why: 'role="meter" \u3082 <meter> \u3082\u7121\u304F\u3001\u8A08\u6E2C\u5024\u3060\u3068\u8A8D\u8B58\u3055\u308C\u306A\u3044\u3002'
2357
+ },
2358
+ {
2359
+ title: "\u5024\u30FB\u7BC4\u56F2\u304C\u4F1D\u308F\u3089\u306A\u3044",
2360
+ why: "aria-valuenow / valuemin / valuemax \u304C\u7121\u304F\u300C72%\u300D\u304C\u8AAD\u307E\u308C\u306A\u3044\u3002"
2361
+ },
2362
+ {
2363
+ title: "\u540D\u524D\u304C\u7D50\u3073\u3064\u3044\u3066\u3044\u306A\u3044",
2364
+ why: "\u30D0\u30FC\u3068\u300C\u30C7\u30A3\u30B9\u30AF\u4F7F\u7528\u7387\u300D\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u306A\u3044\u3002"
2365
+ },
2366
+ {
2367
+ title: "\u8272\u3060\u3051\u306B\u4F9D\u5B58",
2368
+ why: "\u6570\u5024\u3084\u30C6\u30AD\u30B9\u30C8\u306E\u4F75\u8A18\u304C\u7121\u304F\u3001\u8272\u304C\u898B\u3048\u306A\u3044\u4EBA\u306B\u4F1D\u308F\u3089\u306A\u3044\u3002"
2369
+ }
2370
+ ],
2371
+ notes: [
2372
+ "\u30E1\u30FC\u30BF\u30FC\u306F\u8868\u793A\u5C02\u7528\u30FB\u975E\u30A4\u30F3\u30BF\u30E9\u30AF\u30C6\u30A3\u30D6\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u3082 tabindex \u3082\u4E0D\u8981\u3067\u3001\u5024\u304C\u5909\u308F\u3063\u305F\u3089 aria-valuenow \u3068 aria-valuetext \u3092\u66F4\u65B0\u3059\u308B\u3060\u3051\u3067\u3088\u3044\u3002",
2373
+ "progressbar \u3068\u306E\u4F7F\u3044\u5206\u3051\uFF1Ameter \u306F\u300C\u65E2\u77E5\u306E\u7BC4\u56F2\u306E\u73FE\u5728\u91CF\uFF08\u4F8B\uFF1A\u30C7\u30A3\u30B9\u30AF 72%\uFF09\u300D\u3001progressbar \u306F\u300C\u5B8C\u4E86\u306B\u5411\u304B\u3063\u3066\u9032\u3080\u9032\u6357\uFF08\u4F8B\uFF1A\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D\uFF09\u300D\u3002"
2374
+ ]
2375
+ };
2376
+ var tabs = {
2377
+ slug: "tabs",
2378
+ keyboard: [
2379
+ {
2380
+ keys: "Tab",
2381
+ action: "\u30BF\u30D6\u30EA\u30B9\u30C8\u306B\u5165\u308B\uFF0F\u51FA\u308B\uFF08\u30EA\u30B9\u30C8\u5168\u4F53\u30671\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\uFF09",
2382
+ requirement: "required"
2383
+ },
2384
+ {
2385
+ keys: "\u2190 / \u2192",
2386
+ action: "\u524D / \u6B21\u306E\u30BF\u30D6\u3078\u79FB\u52D5\uFF08\u81EA\u52D5\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u3067\u306F\u540C\u6642\u306B\u9078\u629E\uFF09",
2387
+ requirement: "required"
2388
+ },
2389
+ {
2390
+ keys: "Home / End",
2391
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\u30BF\u30D6\u3078\u79FB\u52D5",
2392
+ requirement: "recommended"
2393
+ },
2394
+ {
2395
+ keys: "Enter / Space",
2396
+ action: "\u624B\u52D5\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u6642\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u30BF\u30D6\u3092\u9078\u629E",
2397
+ requirement: "optional"
2398
+ }
2399
+ ],
2400
+ aria: [
2401
+ {
2402
+ target: "\u30BF\u30D6\u3092\u56F2\u3080\u7BB1",
2403
+ attr: 'role="tablist" + aria-label',
2404
+ meaning: "\u30BF\u30D6\u306E\u96C6\u307E\u308A\u3067\u3042\u308B\u3053\u3068\u3068\u3001\u305D\u306E\u540D\u524D\u3092\u4F1D\u3048\u308B\u3002"
2405
+ },
2406
+ {
2407
+ target: "\u5404\u30BF\u30D6",
2408
+ attr: 'role="tab"',
2409
+ meaning: "\u30BF\u30D6\u3067\u3042\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B\u3002\u4E2D\u8EAB\u306F <button> \u63A8\u5968\u3002"
2410
+ },
2411
+ {
2412
+ target: "\u5404\u30BF\u30D6",
2413
+ attr: 'aria-selected="true | false"',
2414
+ meaning: "\u3044\u307E\u9078\u3070\u308C\u3066\u3044\u308B\u30BF\u30D6\u306F\u3069\u308C\u304B\u3002\u5207\u66FF\u6642\u306B\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
2415
+ },
2416
+ {
2417
+ target: "\u5404\u30BF\u30D6",
2418
+ attr: 'aria-controls="\u30D1\u30CD\u30EB\u306Eid"',
2419
+ meaning: "\u305D\u306E\u30BF\u30D6\u304C\u5236\u5FA1\u3059\u308B\u30D1\u30CD\u30EB\u3092\u793A\u3059\u3002"
2420
+ },
2421
+ {
2422
+ target: "\u5404\u30BF\u30D6",
2423
+ attr: 'tabindex="0 | -1"',
2424
+ meaning: "\u9078\u629E\u30BF\u30D6\u3060\u3051 0\u3001\u4ED6\u306F -1\uFF08roving tabindex\uFF09\u3002"
2425
+ },
2426
+ {
2427
+ target: "\u5404\u30D1\u30CD\u30EB",
2428
+ attr: 'role="tabpanel" + aria-labelledby="\u30BF\u30D6\u306Eid"',
2429
+ meaning: "\u5BFE\u5FDC\u3059\u308B\u30BF\u30D6\u3092\u540D\u524D\u3068\u3057\u3066\u6301\u3064\u30D1\u30CD\u30EB\u3002"
2430
+ },
2431
+ {
2432
+ target: "\u5404\u30D1\u30CD\u30EB",
2433
+ attr: 'tabindex="0"',
2434
+ meaning: "\u30D1\u30CD\u30EB\u5185\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u8981\u7D20\u304C\u306A\u3044\u5834\u5408\u3067\u3082\u3001\u30D1\u30CD\u30EB\u81EA\u4F53\u306B Tab \u3067\u5165\u308C\u308B\u3088\u3046\u306B\u3059\u308B\u3002"
2435
+ },
2436
+ {
2437
+ target: "\u975E\u8868\u793A\u30D1\u30CD\u30EB",
2438
+ attr: "hidden",
2439
+ meaning: "\u9078\u3070\u308C\u3066\u3044\u306A\u3044\u30D1\u30CD\u30EB\u306F\u96A0\u3057\u3001\u8AAD\u307F\u4E0A\u3052/\u64CD\u4F5C\u306E\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
2440
+ }
2441
+ ],
2442
+ checklist: [
2443
+ '\u30BF\u30D6\u3092 role="tablist" + aria-label \u3067\u56F2\u3093\u3067\u3044\u308B',
2444
+ '\u5404\u30BF\u30D6\u306F <button role="tab"> \u3067\u3042\u308B',
2445
+ "aria-selected \u304C\u9078\u629E\u72B6\u614B\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
2446
+ '\u9078\u629E\u30BF\u30D6\u3060\u3051 tabindex="0"\u3001\u4ED6\u306F -1\uFF08roving tabindex \u3067\u30BF\u30D6\u5168\u4F53\u304C1\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\uFF09',
2447
+ "\u2190 \u2192 \u3067\u30BF\u30D6\u79FB\u52D5\u3001Home/End \u3067\u7AEF\u3078\u79FB\u52D5\u3067\u304D\u308B",
2448
+ '\u5404\u30BF\u30D6 aria-controls\u3001\u5404\u30D1\u30CD\u30EB role="tabpanel" + aria-labelledby + tabindex="0"',
2449
+ "\u975E\u8868\u793A\u30D1\u30CD\u30EB\u306F hidden \u3067\u8AAD\u307F\u4E0A\u3052/\u64CD\u4F5C\u304B\u3089\u5916\u308C\u3066\u3044\u308B",
2450
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2451
+ ],
2452
+ antipatterns: [
2453
+ {
2454
+ title: "div + onclick \u3067\u30BF\u30D6\u3092\u4F5C\u308B",
2455
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001\u77E2\u5370\u30AD\u30FC\u3082\u52B9\u304B\u306A\u3044\u3002"
2456
+ },
2457
+ {
2458
+ title: 'role="tablist" / role="tab" \u304C\u306A\u3044',
2459
+ why: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306B\u306F\u305F\u3060\u306E\u30C6\u30AD\u30B9\u30C8\u306B\u805E\u3053\u3048\u3001\u30BF\u30D6\u3060\u3068\u4F1D\u308F\u3089\u306A\u3044\u3002"
2460
+ },
2461
+ {
2462
+ title: "aria-selected \u304C\u306A\u3044",
2463
+ why: "\u3044\u307E\u3069\u308C\u304C\u9078\u629E\u4E2D\u304B\u5224\u5225\u3067\u304D\u306A\u3044\u3002"
2464
+ },
2465
+ {
2466
+ title: "aria-controls / aria-labelledby \u304C\u306A\u3044",
2467
+ why: "\u30BF\u30D6\u3068\u30D1\u30CD\u30EB\u304C\u95A2\u9023\u4ED8\u3044\u3066\u304A\u3089\u305A\u3001\u652F\u63F4\u6280\u8853\u304C\u5BFE\u5FDC\u95A2\u4FC2\u3092\u628A\u63E1\u3067\u304D\u306A\u3044\u3002"
2468
+ }
2469
+ ],
2470
+ notes: [
2471
+ "\u30D1\u30CD\u30EB\u306E\u4E2D\u8EAB\u304C\u3059\u3050\u8868\u793A\u3067\u304D\u308B\u8EFD\u3044\u5185\u5BB9\u306A\u3089\u3001\u77E2\u5370\u30AD\u30FC\u3067\u79FB\u52D5\u3068\u540C\u6642\u306B\u9078\u629E\u3059\u308B\u300C\u81EA\u52D5\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u300D\u304C\u5FEB\u9069\u3002\u8868\u793A\u306B\u901A\u4FE1\u3084\u91CD\u3044\u51E6\u7406\u304C\u4F34\u3046\u5834\u5408\u306F Enter/Space \u3067\u78BA\u5B9A\u3059\u308B\u300C\u624B\u52D5\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u300D\u306B\u3059\u308B\u3002",
2472
+ '\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u3067\u30BF\u30D6\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B\u3068\u300C\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB, \u30BF\u30D6, \u9078\u629E\u6E08\u307F, 3\u500B\u4E2D1\u500B\u76EE\u300D\u306E\u3088\u3046\u306B\u5F79\u5272\u30FB\u9078\u629E\u72B6\u614B\u30FB\u4F4D\u7F6E\u304C\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u308B\u3002\u3053\u308C\u304C role="tab" \u3068 aria-selected \u306E\u52B9\u679C\u3002'
2473
+ ]
2474
+ };
2475
+ var toolbar = {
2476
+ slug: "toolbar",
2477
+ keyboard: [
2478
+ {
2479
+ keys: "Tab",
2480
+ action: "\u30C4\u30FC\u30EB\u30D0\u30FC\u306B\u5165\u308B\uFF0F\u51FA\u308B\uFF08\u30C4\u30FC\u30EB\u30D0\u30FC\u5168\u4F53\u30671\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\uFF09",
2481
+ requirement: "required"
2482
+ },
2483
+ {
2484
+ keys: "\u2190 / \u2192",
2485
+ action: "\u524D / \u6B21\u306E\u30DC\u30BF\u30F3\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
2486
+ requirement: "required"
2487
+ },
2488
+ {
2489
+ keys: "Home / End",
2490
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\u30DC\u30BF\u30F3\u3078\u79FB\u52D5",
2491
+ requirement: "recommended"
2492
+ },
2493
+ {
2494
+ keys: "Enter / Space",
2495
+ action: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E\u30DC\u30BF\u30F3\u3092\u5B9F\u884C\uFF0F\u5207\u66FF",
2496
+ requirement: "required"
2497
+ }
2498
+ ],
2499
+ aria: [
2500
+ {
2501
+ target: "\u30C4\u30FC\u30EB\u30D0\u30FC\u306E\u7BB1",
2502
+ attr: 'role="toolbar"',
2503
+ meaning: "\u64CD\u4F5C\u30DC\u30BF\u30F3\u306E\u96C6\u307E\u308A\u3067\u3042\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B\u3002"
2504
+ },
2505
+ {
2506
+ target: "\u30C4\u30FC\u30EB\u30D0\u30FC\u306E\u7BB1",
2507
+ attr: "aria-label\uFF08\u307E\u305F\u306F aria-labelledby\uFF09",
2508
+ meaning: "\u300C\u6587\u5B57\u306E\u66F8\u5F0F\u300D\u306A\u3069\u30C4\u30FC\u30EB\u30D0\u30FC\u306E\u540D\u524D\u3092\u4ED8\u3051\u308B\u3002"
2509
+ },
2510
+ {
2511
+ target: "\u5404\u30DC\u30BF\u30F3",
2512
+ attr: 'tabindex="0 | -1"',
2513
+ meaning: "\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E1\u3064\u3060\u3051 0\u3001\u4ED6\u306F -1\uFF08roving tabindex\uFF09\u3002"
2514
+ },
2515
+ {
2516
+ target: "\u30C8\u30B0\u30EB\u30DC\u30BF\u30F3",
2517
+ attr: 'aria-pressed="true | false"',
2518
+ meaning: "\u30AA\u30F3/\u30AA\u30D5\u304C\u5207\u308A\u66FF\u308F\u308B\u30DC\u30BF\u30F3\u306E\u72B6\u614B\u3092\u4F1D\u3048\u308B\u3002"
2519
+ },
2520
+ {
2521
+ target: "\u533A\u5207\u308A\u7DDA",
2522
+ attr: 'role="separator" + aria-orientation',
2523
+ meaning: "\u30DC\u30BF\u30F3\u306E\u30B0\u30EB\u30FC\u30D7\u3092\u8996\u899A\u7684\u30FB\u610F\u5473\u7684\u306B\u533A\u5207\u308B\uFF08\u4EFB\u610F\uFF09\u3002"
2524
+ }
2525
+ ],
2526
+ checklist: [
2527
+ '\u30DC\u30BF\u30F3\u7FA4\u3092 role="toolbar" + aria-label \u3067\u56F2\u3093\u3067\u3044\u308B',
2528
+ "\u30C4\u30FC\u30EB\u30D0\u30FC\u5168\u4F53\u304C1\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\uFF08Tab 1\u56DE\u3067\u5165\u308B\uFF09",
2529
+ 'roving tabindex\uFF1A\u30D5\u30A9\u30FC\u30AB\u30B9\u4E2D\u306E1\u3064\u3060\u3051 tabindex="0"\u3001\u4ED6\u306F -1',
2530
+ "\u2190 \u2192 \u3067\u30DC\u30BF\u30F3\u79FB\u52D5\u3001Home/End \u3067\u7AEF\u3078\u79FB\u52D5\u3067\u304D\u308B",
2531
+ "\u5404\u30DC\u30BF\u30F3\u306F\u30CD\u30A4\u30C6\u30A3\u30D6\u306E <button>\uFF08div \u3092\u4F7F\u308F\u306A\u3044\uFF09",
2532
+ "\u30C8\u30B0\u30EB\u30DC\u30BF\u30F3\u306B aria-pressed \u3092\u4ED8\u3051\u3001\u72B6\u614B\u3092\u66F4\u65B0\u3057\u3066\u3044\u308B",
2533
+ "\u629C\u3051\u3066\u623B\u308B\u3068\u6700\u5F8C\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3057\u3066\u3044\u305F\u30DC\u30BF\u30F3\u306B\u623B\u308B",
2534
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2535
+ ],
2536
+ antipatterns: [
2537
+ {
2538
+ title: "1\u30DC\u30BF\u30F3=1\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\u306B\u3059\u308B",
2539
+ why: "\u9053\u5177\u304C\u5897\u3048\u308B\u307B\u3069 Tab \u9023\u6253\u304C\u5FC5\u8981\u306B\u306A\u308A\u3001APG \u975E\u6E96\u62E0\u3002"
2540
+ },
2541
+ {
2542
+ title: "\u77E2\u5370\u30AD\u30FC\u3067\u79FB\u52D5\u3067\u304D\u306A\u3044",
2543
+ why: 'roving tabindex \u3082 role="toolbar" \u3082\u306A\u304F\u3001\u30AD\u30FC\u30DC\u30FC\u30C9\u64CD\u4F5C\u306E\u7D04\u675F\u4E8B\u304C\u5B88\u3089\u308C\u3066\u3044\u306A\u3044\u3002'
2544
+ },
2545
+ {
2546
+ title: "div \u30DC\u30BF\u30F3\u3092\u4F7F\u3046",
2547
+ why: "tabindex \u3082 role \u3082\u306A\u3044 div \u306F\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u306A\u3044\u3002"
2548
+ },
2549
+ {
2550
+ title: 'role="toolbar" / aria-label \u304C\u306A\u3044',
2551
+ why: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306B\u306F\u305F\u3060\u306E\u30DC\u30BF\u30F3\u306E\u7F85\u5217\u306B\u805E\u3053\u3048\u3001\u307E\u3068\u307E\u308A\u304C\u4F1D\u308F\u3089\u306A\u3044\u3002"
2552
+ }
2553
+ ],
2554
+ notes: [
2555
+ "\u30AA\u30F3/\u30AA\u30D5\u304C\u5207\u308A\u66FF\u308F\u308B\u30DC\u30BF\u30F3\uFF08\u592A\u5B57\u306A\u3069\uFF09\u306B\u306F aria-pressed \u3092\u4ED8\u3051\u308B\u3002\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306F\u300C\u592A\u5B57, \u5207\u308A\u66FF\u3048\u30DC\u30BF\u30F3, \u30AA\u30F3\u300D\u306E\u3088\u3046\u306B\u62BC\u4E0B\u72B6\u614B\u3092\u8AAD\u307F\u4E0A\u3052\u308B\u3002",
2556
+ '\u30C4\u30FC\u30EB\u30D0\u30FC\u304B\u3089 Tab \u3067\u51FA\u308B\u3068\u3001\u6B21\u306B\u623B\u3063\u3066\u304D\u305F\u3068\u304D\u306F\u6700\u5F8C\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3057\u3066\u3044\u305F\u30DC\u30BF\u30F3\u306B\u623B\u308B\uFF08roving tabindex \u3067 tabindex="0" \u306E\u4F4D\u7F6E\u304C\u4FDD\u6301\u3055\u308C\u308B\u305F\u3081\uFF09\u3002'
2557
+ ]
2558
+ };
2559
+ var table = {
2560
+ slug: "table",
2561
+ keyboard: [],
2562
+ aria: [
2563
+ {
2564
+ target: "\u8868\u5168\u4F53",
2565
+ attr: "<table>",
2566
+ meaning: '\u8868\u3067\u3042\u308B\u3053\u3068\u3092\u4F1D\u3048\u308B\u3002role="table" \u7B49\u306F\u81EA\u52D5\u3067\u4ED8\u304F\u306E\u3067\u66F8\u304B\u306A\u3044\u3002'
2567
+ },
2568
+ {
2569
+ target: "\u8868\u306E\u898B\u51FA\u3057",
2570
+ attr: "<caption>",
2571
+ meaning: "\u8868\u306B\u540D\u524D\uFF08\u30BF\u30A4\u30C8\u30EB\uFF09\u3092\u4ED8\u3051\u308B\u3002\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u304C\u300C\u301C\u306E\u8868\u300D\u3068\u8AAD\u307F\u3001\u8868\u4E00\u89A7\u3067\u3082\u8B58\u5225\u3067\u304D\u308B\u3002"
2572
+ },
2573
+ {
2574
+ target: "\u5217\u306E\u898B\u51FA\u3057\u30BB\u30EB",
2575
+ attr: '<th scope="col">',
2576
+ meaning: "\u305D\u306E\u5217\u306B\u5C5E\u3059\u308B\u30BB\u30EB\u306E\u898B\u51FA\u3057\u3060\u3068\u793A\u3059\u3002\u540C\u3058\u5217\u306E\u30BB\u30EB\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u308B\u3002"
2577
+ },
2578
+ {
2579
+ target: "\u884C\u306E\u898B\u51FA\u3057\u30BB\u30EB",
2580
+ attr: '<th scope="row">',
2581
+ meaning: "\u305D\u306E\u884C\u306B\u5C5E\u3059\u308B\u30BB\u30EB\u306E\u898B\u51FA\u3057\u3060\u3068\u793A\u3059\u3002\u540C\u3058\u884C\u306E\u30BB\u30EB\u306B\u95A2\u9023\u4ED8\u3051\u3089\u308C\u308B\u3002"
2582
+ },
2583
+ {
2584
+ target: "\u898B\u51FA\u3057 / \u672C\u4F53",
2585
+ attr: "<thead> / <tbody>",
2586
+ meaning: "\u898B\u51FA\u3057\u884C\u3068\u30C7\u30FC\u30BF\u884C\u3092\u69CB\u9020\u7684\u306B\u533A\u5225\u3059\u308B\u3002"
2587
+ },
2588
+ {
2589
+ target: "\u30C7\u30FC\u30BF\u30BB\u30EB",
2590
+ attr: "<td>",
2591
+ meaning: "\u5B9F\u30C7\u30FC\u30BF\u306E\u5024\u3002<th> \u3068\u66F8\u304D\u5206\u3051\u308B\u3053\u3068\u304C\u95A2\u9023\u4ED8\u3051\u306E\u524D\u63D0\u3002"
2592
+ }
2593
+ ],
2594
+ checklist: [
2595
+ "\u30C7\u30FC\u30BF\u306E\u8868\u306F\u30CD\u30A4\u30C6\u30A3\u30D6\u306E <table> \u3067\u7D44\u3093\u3067\u3044\u308B\uFF08<div> \u306E\u683C\u5B50\u3067\u306F\u306A\u3044\uFF09",
2596
+ "<caption> \u3067\u8868\u306B\u540D\u524D\uFF08\u30BF\u30A4\u30C8\u30EB\uFF09\u3092\u4ED8\u3051\u3066\u3044\u308B",
2597
+ '\u5217\u306E\u898B\u51FA\u3057\u30BB\u30EB\u306F <th scope="col"> \u3067\u3042\u308B',
2598
+ '\u884C\u306E\u898B\u51FA\u3057\u30BB\u30EB\u306F <th scope="row"> \u3067\u3042\u308B',
2599
+ "\u898B\u51FA\u3057\u884C\u306F <thead>\u3001\u30C7\u30FC\u30BF\u884C\u306F <tbody> \u3067\u69CB\u9020\u5316\u3057\u3066\u3044\u308B",
2600
+ "\u30EC\u30A4\u30A2\u30A6\u30C8\u76EE\u7684\u3067\u306F <table> \u3092\u4F7F\u3063\u3066\u3044\u306A\u3044\uFF08\u8868\u306F\u300C\u30C7\u30FC\u30BF\u300D\u306E\u3068\u304D\u3060\u3051\uFF09",
2601
+ "\u5BFE\u8A71\u7684\u306B\u30BB\u30EB\u9593\u3092\u64CD\u4F5C\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u306A\u3089\u3001\u3053\u308C\u3067\u306F\u306A\u304F grid \u30D1\u30BF\u30FC\u30F3\u3092\u4F7F\u3046"
2602
+ ],
2603
+ antipatterns: [
2604
+ {
2605
+ title: "\u898B\u51FA\u3057\u3068\u30BB\u30EB\u304C\u95A2\u9023\u4ED8\u304B\u306A\u3044",
2606
+ why: "<th>/scope \u304C\u7121\u3044\u306E\u3067\u3001\u300C120\u300D\u304C\u3069\u306E\u5E97\u8217\u30FB\u3069\u306E\u56DB\u534A\u671F\u304B\u304C\u4F1D\u308F\u3089\u306A\u3044\u3002"
2607
+ },
2608
+ {
2609
+ title: "\u540D\u524D\uFF08\u30BF\u30A4\u30C8\u30EB\uFF09\u304C\u7121\u3044",
2610
+ why: "<caption> \u304C\u7121\u304F\u3001\u4F55\u306E\u8868\u304B\u304C\u5206\u304B\u3089\u306A\u3044\u3002"
2611
+ },
2612
+ {
2613
+ title: "\u8868\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u304C\u52B9\u304B\u306A\u3044",
2614
+ why: "<table> \u3067\u306F\u306A\u3044\u306E\u3067\u3001\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306E\u8868\u79FB\u52D5\u30B3\u30DE\u30F3\u30C9\u304C\u4F7F\u3048\u306A\u3044\u3002"
2615
+ },
2616
+ {
2617
+ title: "\u305F\u3060\u306E\u6570\u5B57\u306E\u7F85\u5217\u306B\u805E\u3053\u3048\u308B",
2618
+ why: "\u69CB\u9020\u304C\u7121\u304F\u3001\u4E0A\u304B\u3089\u5E73\u5766\u306B\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u308B\u3060\u3051\u3067\u610F\u5473\u3092\u518D\u69CB\u6210\u3067\u304D\u306A\u3044\u3002"
2619
+ }
2620
+ ],
2621
+ notes: [
2622
+ "\u6B63\u3057\u3044 <table> \u30DE\u30FC\u30AF\u30A2\u30C3\u30D7\u3055\u3048\u3042\u308C\u3070\u3001\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306E\u8868\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u304C\u81EA\u52D5\u7684\u306B\u4F7F\u3048\u308B\u3088\u3046\u306B\u306A\u308B\u3002\u5B9F\u88C5\u8005\u304C\u30AD\u30FC\u51E6\u7406\u3092\u66F8\u304F\u5FC5\u8981\u306F\u306A\u3044\u3002",
2623
+ "\u8907\u96D1\u306A\u8868\uFF08\u898B\u51FA\u3057\u304C\u8907\u6570\u6BB5\u306B\u306A\u308B\u7B49\uFF09\u3067\u306F\u3001<th id> \u3068 <td headers> \u3067\u660E\u793A\u7684\u306B\u3072\u3082\u4ED8\u3051\u3067\u304D\u308B\u3002\u307E\u305A\u306F\u30B7\u30F3\u30D7\u30EB\u306A\u8868\u3092 scope \u3067\u6B63\u3057\u304F\u66F8\u304F\u3053\u3068\u3092\u512A\u5148\u3059\u308B\u3002"
2624
+ ]
2625
+ };
2626
+ var grid = {
2627
+ slug: "grid",
2628
+ keyboard: [
2629
+ {
2630
+ keys: "Tab",
2631
+ action: "\u30B0\u30EA\u30C3\u30C9\u5168\u4F53\u306B\u51FA\u5165\u308A\u3059\u308B\uFF08\u4E2D\u306F1\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\uFF09",
2632
+ requirement: "required"
2633
+ },
2634
+ {
2635
+ keys: "\u2192 / \u2190",
2636
+ action: "\u53F3 / \u5DE6\u306E\u30BB\u30EB\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
2637
+ requirement: "required"
2638
+ },
2639
+ {
2640
+ keys: "\u2193 / \u2191",
2641
+ action: "\u4E0B / \u4E0A\u306E\u30BB\u30EB\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
2642
+ requirement: "required"
2643
+ },
2644
+ {
2645
+ keys: "Home / End",
2646
+ action: "\u305D\u306E\u884C\u306E\u5148\u982D / \u672B\u5C3E\u306E\u30BB\u30EB\u3078",
2647
+ requirement: "required"
2648
+ },
2649
+ {
2650
+ keys: "Ctrl+Home / Ctrl+End",
2651
+ action: "\u30B0\u30EA\u30C3\u30C9\u306E\u5148\u982D / \u672B\u5C3E\u306E\u30BB\u30EB\u3078",
2652
+ requirement: "recommended"
2653
+ }
2654
+ ],
2655
+ aria: [
2656
+ {
2657
+ target: "\u5916\u67A0",
2658
+ attr: 'role="grid"',
2659
+ meaning: "\u5BFE\u8A71\u7684\u306A\u30B0\u30EA\u30C3\u30C9\u3067\u3042\u308B\u3053\u3068\u3092\u5BA3\u8A00\u3059\u308B\u3002"
2660
+ },
2661
+ {
2662
+ target: "\u5916\u67A0",
2663
+ attr: "aria-label / aria-labelledby",
2664
+ meaning: "\u30B0\u30EA\u30C3\u30C9\u306B\u540D\u524D\u3092\u4ED8\u3051\u308B\uFF08\u4F55\u306E\u8868\u304B\u3092\u4F1D\u3048\u308B\uFF09\u3002"
2665
+ },
2666
+ {
2667
+ target: "\u5404\u884C",
2668
+ attr: 'role="row"',
2669
+ meaning: "\u884C\u306E\u307E\u3068\u307E\u308A\u3092\u793A\u3059\u3002"
2670
+ },
2671
+ {
2672
+ target: "\u898B\u51FA\u3057\u30BB\u30EB",
2673
+ attr: 'role="columnheader"',
2674
+ meaning: "\u5217\u306E\u898B\u51FA\u3057\u3002\u5404\u5217\u306E\u30BB\u30EB\u3068\u95A2\u9023\u4ED8\u3051\u3066\u8AAD\u307E\u308C\u308B\u3002"
2675
+ },
2676
+ {
2677
+ target: "\u30C7\u30FC\u30BF\u30BB\u30EB",
2678
+ attr: 'role="gridcell"',
2679
+ meaning: "1\u30641\u3064\u306E\u30BB\u30EB\u3002"
2680
+ },
2681
+ {
2682
+ target: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3059\u308B\u30BB\u30EB",
2683
+ attr: 'tabindex="0"\uFF081\u3064\u3060\u3051\uFF09/ "-1"\uFF08\u6B8B\u308A\u5168\u90E8\uFF09',
2684
+ meaning: "\u30ED\u30FC\u30DF\u30F3\u30B0 tabindex\u3002\u30B0\u30EA\u30C3\u30C9\u30921\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\u306B\u3057\u3001\u79FB\u52D5\u6642\u306B\u4ED8\u3051\u66FF\u3048\u308B\u3002"
2685
+ }
2686
+ ],
2687
+ checklist: [
2688
+ '\u5916\u67A0\u306B role="grid" \u3068\u540D\u524D\uFF08aria-label / aria-labelledby\uFF09\u304C\u3042\u308B',
2689
+ '\u884C\u306F role="row"\u3001\u898B\u51FA\u3057\u306F role="columnheader"\u3001\u30BB\u30EB\u306F role="gridcell"',
2690
+ '\u5E38\u306B1\u3064\u306E\u30BB\u30EB\u3060\u3051 tabindex="0"\u3001\u6B8B\u308A\u306F "-1"\uFF08\u30ED\u30FC\u30DF\u30F3\u30B0 tabindex\uFF09',
2691
+ "\u77E2\u5370\u30AD\u30FC\u3067\u30BB\u30EB\u79FB\u52D5\u3067\u304D\u3001Home/End \u3067\u884C\u306E\u7AEF\u3078\u79FB\u52D5\u3067\u304D\u308B",
2692
+ "\uFF08\u63A8\u5968\uFF09Ctrl+Home/End \u3067\u30B0\u30EA\u30C3\u30C9\u306E\u7AEF\u3078\u79FB\u52D5\u3067\u304D\u308B",
2693
+ "Tab \u306F\u30BB\u30EB\u79FB\u52D5\u3067\u306F\u306A\u304F\u300C\u30B0\u30EA\u30C3\u30C9\u306E\u5916\u3078\u51FA\u308B\u300D\u30AD\u30FC\u306B\u306A\u3063\u3066\u3044\u308B",
2694
+ "\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u64CD\u4F5C\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2695
+ ],
2696
+ antipatterns: [
2697
+ {
2698
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
2699
+ why: "\u30BB\u30EB\u306B tabindex \u3082\u30AD\u30FC\u51E6\u7406\u3082\u7121\u304F\u3001\u77E2\u5370\u3067\u52D5\u3051\u306A\u3044\u3002"
2700
+ },
2701
+ {
2702
+ title: "\u30B0\u30EA\u30C3\u30C9\u3068\u8A8D\u8B58\u3055\u308C\u306A\u3044",
2703
+ why: 'role="grid" \u304C\u7121\u304F\u3001\u652F\u63F4\u6280\u8853\u306B\u306F\u300C\u305F\u3060\u306E\u8868\u300D\u306B\u805E\u3053\u3048\u308B\u3002'
2704
+ },
2705
+ {
2706
+ title: "1\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\u306B\u306A\u3063\u3066\u3044\u306A\u3044",
2707
+ why: "\u30ED\u30FC\u30DF\u30F3\u30B0 tabindex \u306E\u8A2D\u8A08\u304C\u7121\u3044\u3002"
2708
+ },
2709
+ {
2710
+ title: "\u73FE\u5728\u4F4D\u7F6E\u304C\u4F1D\u308F\u3089\u306A\u3044",
2711
+ why: "\u4F55\u884C\u76EE\u30FB\u4F55\u5217\u76EE\u306B\u3044\u308B\u306E\u304B\u3001\u9078\u629E\u72B6\u614B\u3082\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u306A\u3044\u3002"
2712
+ }
2713
+ ],
2714
+ notes: [
2715
+ "Tab \u306F\u30B0\u30EA\u30C3\u30C9\u306E\u5916\u3078\u51FA\u308B\u305F\u3081\u306E\u30AD\u30FC\u306B\u3057\u3001\u30BB\u30EB\u79FB\u52D5\u306F\u77E2\u5370\u30AD\u30FC\u306B\u4EFB\u305B\u308B\u3002\u30CD\u30A4\u30C6\u30A3\u30D6\u306A <table> \u3068\u306E\u5927\u304D\u306A\u9055\u3044\u3002",
2716
+ "\u30BB\u30EB\u5185\u306B\u30DC\u30BF\u30F3/\u30EA\u30F3\u30AF\u3092\u7F6E\u304F\u5834\u5408\u306F Enter \u3084 F2 \u3067\u300C\u30BB\u30EB\u5185\u64CD\u4F5C\u30E2\u30FC\u30C9\u300D\u306B\u5165\u308B\u62E1\u5F35\u3092\u691C\u8A0E\u3059\u308B\u3002\u307E\u305A 1\u30BB\u30EB\uFF1D1\u30D5\u30A9\u30FC\u30AB\u30B9\u306E\u57FA\u672C\u5F62\u3092\u78BA\u5B9F\u306B\u52D5\u304B\u3059\u3053\u3068\u304C\u5148\u6C7A\u3002"
2717
+ ]
2718
+ };
2719
+ var treegrid = {
2720
+ slug: "treegrid",
2721
+ keyboard: [
2722
+ {
2723
+ keys: "Tab",
2724
+ action: "\u30B0\u30EA\u30C3\u30C9\u5168\u4F53\u306B\u5165\u308B / \u51FA\u308B\uFF08\u4E2D\u306F1\u3064\u306E\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\uFF09",
2725
+ requirement: "required"
2726
+ },
2727
+ {
2728
+ keys: "\u2193 / \u2191",
2729
+ action: "\u6B21 / \u524D\u306E\uFF08\u898B\u3048\u3066\u3044\u308B\uFF09\u884C\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
2730
+ requirement: "required"
2731
+ },
2732
+ {
2733
+ keys: "\u2192",
2734
+ action: "\u9589\u3058\u3066\u3044\u308B\u89AA\u884C\u3092\u5C55\u958B\u3059\u308B",
2735
+ requirement: "required"
2736
+ },
2737
+ {
2738
+ keys: "\u2190",
2739
+ action: "\u958B\u3044\u3066\u3044\u308B\u89AA\u884C\u3092\u6298\u308A\u305F\u305F\u3080",
2740
+ requirement: "required"
2741
+ },
2742
+ {
2743
+ keys: "Home / End",
2744
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\uFF08\u898B\u3048\u3066\u3044\u308B\uFF09\u884C\u3078\u79FB\u52D5",
2745
+ requirement: "recommended"
2746
+ }
2747
+ ],
2748
+ aria: [
2749
+ {
2750
+ target: "\u5916\u67A0",
2751
+ attr: 'role="treegrid" + aria-label',
2752
+ meaning: "\u300C\u958B\u9589\u3067\u304D\u308B\u8868\u300D\u3060\u3068\u4F1D\u3048\u308B\u3002\u540D\u524D\uFF08\u30E9\u30D9\u30EB\uFF09\u3082\u4ED8\u3051\u308B\u3002"
2753
+ },
2754
+ {
2755
+ target: "\u5404\u884C",
2756
+ attr: 'role="row"',
2757
+ meaning: "\u8868\u306E1\u884C\u3067\u3042\u308B\u3053\u3068\u3092\u793A\u3059\u3002"
2758
+ },
2759
+ {
2760
+ target: "\u898B\u51FA\u3057\u30BB\u30EB",
2761
+ attr: 'role="columnheader"',
2762
+ meaning: "\u5217\u306E\u898B\u51FA\u3057\u3002\u5404\u30BB\u30EB\u304C\u3069\u306E\u5217\u306E\u5024\u304B\u3092\u95A2\u9023\u4ED8\u3051\u308B\u3002"
2763
+ },
2764
+ {
2765
+ target: "\u30C7\u30FC\u30BF\u30BB\u30EB",
2766
+ attr: 'role="gridcell"',
2767
+ meaning: "\u884C\u306E\u4E2D\u306E1\u3064\u306E\u30BB\u30EB\u3002"
2768
+ },
2769
+ {
2770
+ target: "\u5C55\u958B\u3067\u304D\u308B\u89AA\u884C",
2771
+ attr: 'aria-expanded="true | false"',
2772
+ meaning: "\u305D\u306E\u884C\u304C\u958B\u3044\u3066\u3044\u308B\u304B\u3002\u958B\u9589\u306B\u5408\u308F\u305B\u3066\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
2773
+ },
2774
+ {
2775
+ target: "\u5404\u884C",
2776
+ attr: "aria-level / aria-posinset / aria-setsize",
2777
+ meaning: "\u968E\u5C64\u306E\u6DF1\u3055\u3068\u3001\u540C\u968E\u5C64\u3067\u306E\u4F4D\u7F6E\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09\u3002"
2778
+ },
2779
+ {
2780
+ target: "\u884C\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u7BA1\u7406\uFF09",
2781
+ attr: 'tabindex="0 | -1"',
2782
+ meaning: "roving tabindex\u3002\u4ECA\u3044\u308B\u884C\u3060\u3051 0\u3001\u307B\u304B\u306F -1\u3002"
2783
+ },
2784
+ {
2785
+ target: "\u9589\u3058\u3066\u3044\u308B\u5B50\u884C",
2786
+ attr: "hidden",
2787
+ meaning: "\u9589\u3058\u3066\u3044\u308B\u9593\u306FDOM\u304B\u3089\u96A0\u3057\u3001\u30AD\u30FC\u30DC\u30FC\u30C9/\u8AAD\u307F\u4E0A\u3052\u306E\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
2788
+ }
2789
+ ],
2790
+ checklist: [
2791
+ '\u5916\u67A0\u306B role="treegrid" \u3068 aria-label\uFF08\u540D\u524D\uFF09\u304C\u4ED8\u3044\u3066\u3044\u308B',
2792
+ '\u884C\u306F role="row"\u3001\u30BB\u30EB\u306F role="gridcell" / role="columnheader"',
2793
+ "\u5C55\u958B\u3067\u304D\u308B\u89AA\u884C\u306B aria-expanded \u304C\u3042\u308A\u3001\u958B\u9589\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
2794
+ "\u9589\u3058\u3066\u3044\u308B\u5B50\u884C\u306F hidden \u3067\u30AD\u30FC\u30DC\u30FC\u30C9/\u8AAD\u307F\u4E0A\u3052\u304B\u3089\u5916\u308C\u3066\u3044\u308B",
2795
+ "\u30B0\u30EA\u30C3\u30C9\u5185\u306F1\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\u3067\u3001\u2191\u2193 \u3067\u884C\u79FB\u52D5\u3067\u304D\u308B\uFF08roving tabindex\uFF09",
2796
+ "\u2192 \u3067\u5C55\u958B\u3001\u2190 \u3067\u6298\u308A\u305F\u305F\u307F\u304C\u3067\u304D\u308B",
2797
+ "\uFF08\u4EFB\u610F\uFF09Home / End \u3067\u6700\u521D\u30FB\u6700\u5F8C\u306E\u884C\u3078\u79FB\u52D5\u3067\u304D\u308B",
2798
+ "\uFF08\u4EFB\u610F\uFF09aria-level / aria-posinset / aria-setsize \u3067\u968E\u5C64\u3068\u4F4D\u7F6E\u3092\u4F1D\u3048\u308B",
2799
+ "\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u64CD\u4F5C\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2800
+ ],
2801
+ antipatterns: [
2802
+ {
2803
+ title: "\u8868\u30FB\u884C\u30FB\u30BB\u30EB\u306E\u610F\u5473\u304C\u7121\u3044",
2804
+ why: 'role="treegrid" \u7B49\u304C\u7121\u304F\u3001\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306B\u306F\u300C\u305F\u3060\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u584A\u300D\u306B\u805E\u3053\u3048\u308B\u3002\u3069\u306E\u30BB\u30EB\u304C\u3069\u306E\u5217\u304B\u3082\u95A2\u9023\u4ED8\u304B\u306A\u3044\u3002'
2805
+ },
2806
+ {
2807
+ title: "\u958B\u9589\u72B6\u614B\u304C\u4F1D\u308F\u3089\u306A\u3044",
2808
+ why: "aria-expanded \u304C\u7121\u304F\u3001\u958B\u3044\u3066\u3044\u308B\u306E\u304B\u9589\u3058\u3066\u3044\u308B\u306E\u304B\u5206\u304B\u3089\u306A\u3044\u3002"
2809
+ },
2810
+ {
2811
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
2812
+ why: "div \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001\u77E2\u5370\u3067\u306E\u79FB\u52D5\u30FB\u5C55\u958B\u30FB\u6298\u308A\u305F\u305F\u307F\u304C\u3067\u304D\u306A\u3044\u3002"
2813
+ },
2814
+ {
2815
+ title: "roving tabindex \u304C\u7121\u3044",
2816
+ why: "\u305D\u3082\u305D\u3082\u30D5\u30A9\u30FC\u30AB\u30B9\u306E\u7BA1\u7406\u304C\u5B58\u5728\u3057\u306A\u3044\u3002"
2817
+ },
2818
+ {
2819
+ title: "display:none \u306E\u30A4\u30F3\u30E9\u30A4\u30F3\u30B9\u30BF\u30A4\u30EB\u983C\u307F",
2820
+ why: "hidden \u5C5E\u6027\u3084\u72B6\u614B\u7BA1\u7406\u304C\u7121\u3044\u3002"
2821
+ }
2822
+ ],
2823
+ notes: [
2824
+ "\u30C4\u30EA\u30FC\u30B0\u30EA\u30C3\u30C9\u306E\u4E2D\u306F1\u3064\u306E\u30BF\u30D6\u30B9\u30C8\u30C3\u30D7\u3002Tab \u3092\u9023\u6253\u3057\u3066\u3082\u5404\u884C\u306B\u6B62\u307E\u3089\u305A\u3001\u77E2\u5370\u30AD\u30FC\u3067\u884C\u3092\u79FB\u52D5\u3059\u308B\uFF08roving tabindex\uFF09\u3002",
2825
+ "\u77E2\u5370\u3067\u79FB\u52D5\u3059\u308B\u884C\u306F\u300C\u898B\u3048\u3066\u3044\u308B\u884C\u300D\u3060\u3051\u306B\u7D5E\u308B\u3002\u958B\u9589\u6642\u306F aria-expanded \u3068\u5B50\u884C\u306E hidden \u3092\u5FC5\u305A\u4E00\u81F4\u3055\u305B\u308B\u3053\u3068\u3002"
2826
+ ]
2827
+ };
2828
+ var treeView = {
2829
+ slug: "tree-view",
2830
+ keyboard: [
2831
+ {
2832
+ keys: "Tab",
2833
+ action: "\u30C4\u30EA\u30FC\u306B\u5165\u308B / \u30C4\u30EA\u30FC\u304B\u3089\u51FA\u308B\uFF08\u30C4\u30EA\u30FC\u5168\u4F53\u30671\u304B\u6240\u3060\u3051\u6B62\u307E\u308B\uFF09",
2834
+ requirement: "required"
2835
+ },
2836
+ {
2837
+ keys: "\u2193 / \u2191",
2838
+ action: "\u8868\u793A\u4E2D\u306E\u6B21 / \u524D\u306E\u9805\u76EE\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
2839
+ requirement: "required"
2840
+ },
2841
+ {
2842
+ keys: "\u2192",
2843
+ action: "\u9589\u3058\u305F\u679D\u306A\u3089\u5C55\u958B\u3002\u958B\u3044\u305F\u679D\u306A\u3089\u6700\u521D\u306E\u5B50\u3078\u3002\u672B\u7AEF\u306A\u3089\u4F55\u3082\u3057\u306A\u3044",
2844
+ requirement: "required"
2845
+ },
2846
+ {
2847
+ keys: "\u2190",
2848
+ action: "\u958B\u3044\u305F\u679D\u306A\u3089\u6298\u308A\u305F\u305F\u307F\u3002\u305D\u308C\u4EE5\u5916\u306A\u3089\u89AA\u306E\u9805\u76EE\u3078\u79FB\u52D5",
2849
+ requirement: "required"
2850
+ },
2851
+ {
2852
+ keys: "Home / End",
2853
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\u8868\u793A\u4E2D\u306E\u9805\u76EE\u3078\u79FB\u52D5",
2854
+ requirement: "recommended"
2855
+ }
2856
+ ],
2857
+ aria: [
2858
+ {
2859
+ target: "\u30B3\u30F3\u30C6\u30CA",
2860
+ attr: 'role="tree" + aria-label',
2861
+ meaning: "\u968E\u5C64\u30EA\u30B9\u30C8\u5168\u4F53\u3002\u540D\u524D\uFF08\u30E9\u30D9\u30EB\uFF09\u3082\u4ED8\u3051\u308B\u3002"
2862
+ },
2863
+ {
2864
+ target: "\u5404\u884C",
2865
+ attr: 'role="treeitem"',
2866
+ meaning: "\u30C4\u30EA\u30FC\u306E1\u9805\u76EE\uFF08\u30D5\u30A9\u30EB\u30C0/\u30D5\u30A1\u30A4\u30EB\uFF09\u3002"
2867
+ },
2868
+ {
2869
+ target: "\u958B\u9589\u3067\u304D\u308B\u679D",
2870
+ attr: 'aria-expanded="true | false"',
2871
+ meaning: "\u5B50\u3092\u958B\u3044\u3066\u3044\u308B\u304B\u3002\u958B\u9589\u306B\u5408\u308F\u305B\u3066\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002\u672B\u7AEF\uFF08\u5B50\u306A\u3057\uFF09\u306B\u306F\u4ED8\u3051\u306A\u3044\u3002"
2872
+ },
2873
+ {
2874
+ target: "\u5B50\u306E\u307E\u3068\u307E\u308A",
2875
+ attr: 'role="group"',
2876
+ meaning: "\u3042\u308B\u9805\u76EE\u306E\u5B50 treeitem \u3092\u5165\u308C\u308B\u5165\u308C\u7269\u3002"
2877
+ },
2878
+ {
2879
+ target: "\u5404\u884C\uFF08\u4EFB\u610F\uFF09",
2880
+ attr: "aria-level / aria-setsize / aria-posinset",
2881
+ meaning: "\u968E\u5C64\u306E\u6DF1\u3055\u30FB\u540C\u968E\u5C64\u306E\u7DCF\u6570\u30FB\u305D\u306E\u4E2D\u306E\u4F4D\u7F6E\u3002\u5165\u308C\u5B50\u304B\u3089\u81EA\u52D5\u63A8\u6E2C\u3055\u308C\u308B\u304C\u660E\u793A\u3082\u53EF\u3002"
2882
+ },
2883
+ {
2884
+ target: "\u5404\u884C",
2885
+ attr: 'tabindex="0 | -1"',
2886
+ meaning: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308B1\u3064\u3060\u3051 0\u3001\u4ED6\u306F -1\uFF08roving tabindex\uFF09\u3002"
2887
+ }
2888
+ ],
2889
+ checklist: [
2890
+ '\u30B3\u30F3\u30C6\u30CA\u306B role="tree" \u3068 aria-label\uFF08\u540D\u524D\uFF09\u304C\u3042\u308B',
2891
+ '\u5404\u884C\u304C role="treeitem"\u3001\u5B50\u306E\u307E\u3068\u307E\u308A\u304C role="group" \u3067\u3042\u308B',
2892
+ "\u958B\u9589\u3067\u304D\u308B\u679D\u306B aria-expanded \u304C\u3042\u308A\u3001\u958B\u9589\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
2893
+ "\u30C4\u30EA\u30FC\u5168\u4F53\u3067 Tab \u306F1\u304B\u6240\u3060\u3051\u6B62\u307E\u308B\uFF08roving tabindex\uFF1Atabindex \u304C1\u3064\u3060\u3051 0\uFF09",
2894
+ "\u2193\u2191 \u3067\u8868\u793A\u4E2D\u306E\u9805\u76EE\u3092\u79FB\u52D5\u3001\u2192 \u3067\u5C55\u958B/\u5B50\u3078\u3001\u2190 \u3067\u6298\u308A\u305F\u305F\u307F/\u89AA\u3078",
2895
+ "\uFF08\u4EFB\u610F\uFF09Home/End \u3067\u6700\u521D\u30FB\u6700\u5F8C\u3078\u79FB\u52D5\u3067\u304D\u308B",
2896
+ "\u6298\u308A\u305F\u305F\u307E\u308C\u305F\u679D\u306E\u4E2D\u306F\u30AD\u30FC\u30DC\u30FC\u30C9/\u8AAD\u307F\u4E0A\u3052\u304B\u3089\u5916\u308C\u3066\u3044\u308B\uFF08hidden\uFF09",
2897
+ "\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u64CD\u4F5C\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2898
+ ],
2899
+ antipatterns: [
2900
+ {
2901
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u64CD\u4F5C\u3067\u304D\u306A\u3044",
2902
+ why: "span/li \u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308C\u305A\u3001\u77E2\u5370\u30AD\u30FC\u3067\u306E\u79FB\u52D5\u3082\u7121\u3044\u3002"
2903
+ },
2904
+ {
2905
+ title: "\u30C4\u30EA\u30FC\u3060\u3068\u4F1D\u308F\u3089\u306A\u3044",
2906
+ why: 'role="tree" \u304C\u7121\u304F\u3001\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u306B\u306F\u300C\u305F\u3060\u306E\u30EA\u30B9\u30C8\u300D\u306B\u805E\u3053\u3048\u308B\u3002'
2907
+ },
2908
+ {
2909
+ title: "\u958B\u9589\u72B6\u614B\u304C\u4F1D\u308F\u3089\u306A\u3044",
2910
+ why: "aria-expanded \u304C\u7121\u304F\u3001\u958B\u3044\u3066\u3044\u308B\u304B\u9589\u3058\u3066\u3044\u308B\u304B\u5206\u304B\u3089\u306A\u3044\u3002"
2911
+ },
2912
+ {
2913
+ title: "\u968E\u5C64\u30FB\u4F4D\u7F6E\u304C\u4F1D\u308F\u3089\u306A\u3044",
2914
+ why: "\u4F55\u968E\u5C64\u76EE\u304B\u3001\u5168\u4F55\u4EF6\u4E2D\u306E\u4F55\u756A\u76EE\u304B\u304C\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u306A\u3044\u3002"
2915
+ }
2916
+ ],
2917
+ notes: [
2918
+ '\u30C4\u30EA\u30FC\u306F\u30C4\u30EA\u30FC\u5168\u4F53\u3067Tab1\u56DE\u304C\u539F\u5247\u3002\u5E38\u306B1\u3064\u3060\u3051 tabindex="0" \u306B\u3057\u3001\u77E2\u5370\u30AD\u30FC\u3067\u79FB\u52D5\u5148\u3092\u5207\u308A\u66FF\u3048\u308B\uFF08roving tabindex\uFF09\u3002',
2919
+ "\u77E2\u5370\u30AD\u30FC\u306E\u79FB\u52D5\u5148\u306F\u300C\u8868\u793A\u4E2D\uFF08\u7956\u5148\u304C\u3059\u3079\u3066\u5C55\u958B\u6E08\u307F\uFF09\u306E\u9805\u76EE\u300D\u3060\u3051\u3002hidden \u306A group \u5185\u306E\u9805\u76EE\u306F\u5019\u88DC\u304B\u3089\u5916\u3059\u3002"
2920
+ ]
2921
+ };
2922
+ var feed = {
2923
+ slug: "feed",
2924
+ keyboard: [
2925
+ {
2926
+ keys: "PageDown",
2927
+ action: "\u6B21\u306E\u8A18\u4E8B\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
2928
+ requirement: "required"
2929
+ },
2930
+ {
2931
+ keys: "PageUp",
2932
+ action: "\u524D\u306E\u8A18\u4E8B\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
2933
+ requirement: "required"
2934
+ },
2935
+ {
2936
+ keys: "Tab",
2937
+ action: "\u8A18\u4E8B\u5185\u306E\u30EA\u30F3\u30AF\u306A\u3069\u3001\u6B21\u306E\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u8981\u7D20\u3078\u79FB\u52D5",
2938
+ requirement: "required"
2939
+ },
2940
+ {
2941
+ keys: "Home / End",
2942
+ action: "\u6700\u521D / \u6700\u5F8C\u306E\u8A18\u4E8B\u3078\u30D5\u30A9\u30FC\u30AB\u30B9\u79FB\u52D5",
2943
+ requirement: "recommended"
2944
+ }
2945
+ ],
2946
+ aria: [
2947
+ {
2948
+ target: "\u30B3\u30F3\u30C6\u30CA",
2949
+ attr: 'role="feed"',
2950
+ meaning: "\u52D5\u7684\u306B\u5897\u3048\u308B\u30B9\u30AF\u30ED\u30FC\u30EB\u53EF\u80FD\u306A\u8A18\u4E8B\u4E00\u89A7\u3067\u3042\u308B\u3053\u3068\u3092\u793A\u3059\u3002"
2951
+ },
2952
+ {
2953
+ target: "\u30B3\u30F3\u30C6\u30CA",
2954
+ attr: 'aria-busy="true | false"',
2955
+ meaning: "\u8FFD\u52A0\u8AAD\u307F\u8FBC\u307F\u4E2D\u306F true\u3002\u8AAD\u307F\u8FBC\u307F\u5B8C\u4E86\u5F8C\u306F\u5FC5\u305A false \u306B\u623B\u3059\u3002"
2956
+ },
2957
+ {
2958
+ target: "\u30B3\u30F3\u30C6\u30CA",
2959
+ attr: "aria-label / aria-labelledby",
2960
+ meaning: "\u30D5\u30A3\u30FC\u30C9\u81EA\u4F53\u306B\u540D\u524D\u3092\u4ED8\u3051\u308B\uFF08\u300C\u65B0\u7740\u8A18\u4E8B\u300D\u306A\u3069\uFF09\u3002"
2961
+ },
2962
+ {
2963
+ target: "\u5404\u8A18\u4E8B",
2964
+ attr: 'role="article" + tabindex="0"',
2965
+ meaning: "1\u4EF6\u306E\u8A18\u4E8B\u3068\u3057\u3066\u8A8D\u8B58\u3055\u305B\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306B\u3059\u308B\u3002"
2966
+ },
2967
+ {
2968
+ target: "\u5404\u8A18\u4E8B",
2969
+ attr: 'aria-labelledby="\u30BF\u30A4\u30C8\u30EB\u306Eid"',
2970
+ meaning: "\u8A18\u4E8B\u306E\u540D\u524D\uFF08\u898B\u51FA\u3057\uFF09\u3092\u95A2\u9023\u4ED8\u3051\u308B\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u6642\u306B\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u308B\u3002"
2971
+ },
2972
+ {
2973
+ target: "\u5404\u8A18\u4E8B",
2974
+ attr: "aria-posinset + aria-setsize",
2975
+ meaning: "\u300C\u5168\u25CB\u4EF6\u4E2D\u306E\u25B3\u756A\u76EE\u300D\u3092\u793A\u3059\u3002\u4EF6\u6570\u304C\u5897\u3048\u305F\u3089\u5168\u8A18\u4E8B\u3067\u66F4\u65B0\u3059\u308B\u3002"
2976
+ }
2977
+ ],
2978
+ checklist: [
2979
+ '\u30B3\u30F3\u30C6\u30CA\u304C role="feed" \u3067\u3001aria-label \u7B49\u3067\u540D\u524D\u304C\u4ED8\u3044\u3066\u3044\u308B',
2980
+ '\u5404\u8A18\u4E8B\u304C role="article" + tabindex="0" \u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u308B',
2981
+ "\u5404\u8A18\u4E8B\u306B aria-labelledby \u3067\u898B\u51FA\u3057\u304C\u95A2\u9023\u4ED8\u3044\u3066\u3044\u308B",
2982
+ "aria-posinset / aria-setsize \u304C\u73FE\u5728\u306E\u4F4D\u7F6E\u30FB\u7DCF\u6570\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3066\u3044\u308B",
2983
+ '\u8FFD\u52A0\u8AAD\u307F\u8FBC\u307F\u4E2D\u306F aria-busy="true"\u3001\u5B8C\u4E86\u5F8C\u306B false \u3078\u623B\u308B',
2984
+ "PageDown / PageUp \u3067\u8A18\u4E8B\u9593\u3092\u79FB\u52D5\u3067\u304D\u308B\uFF08\u65E2\u5B9A\u30B9\u30AF\u30ED\u30FC\u30EB\u306F preventDefault\uFF09",
2985
+ "\u8FFD\u52A0\u8AAD\u307F\u8FBC\u307F\u5F8C\u3082\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u5931\u308F\u306A\u3044\uFF08\u65B0\u7740\u306E\u5148\u982D\u306A\u3069\u3078\u79FB\u3059\uFF09",
2986
+ "\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u8AAD\u307F\u9032\u3081\u3089\u308C\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
2987
+ ],
2988
+ antipatterns: [
2989
+ {
2990
+ title: "\u4E00\u89A7\u306E\u69CB\u9020\u304C\u4F1D\u308F\u3089\u306A\u3044",
2991
+ why: 'role="feed" / role="article" \u304C\u7121\u304F\u3001\u305F\u3060\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u584A\u306B\u805E\u3053\u3048\u308B\u3002'
2992
+ },
2993
+ {
2994
+ title: "\u73FE\u5728\u5730\u304C\u5206\u304B\u3089\u306A\u3044",
2995
+ why: "aria-posinset / aria-setsize \u304C\u7121\u304F\u3001\u300C\u5168\u4F55\u4EF6\u306E\u4F55\u756A\u76EE\u304B\u300D\u3092\u6848\u5185\u3067\u304D\u306A\u3044\u3002"
2996
+ },
2997
+ {
2998
+ title: "\u8AAD\u307F\u8FBC\u307F\u4E2D\u304C\u4F1D\u308F\u3089\u306A\u3044",
2999
+ why: "aria-busy \u304C\u7121\u304F\u3001\u8FFD\u52A0\u8AAD\u307F\u8FBC\u307F\u304C\u8D77\u304D\u3066\u3082\u652F\u63F4\u6280\u8853\u306B\u306F\u7121\u8A00\u306E\u307E\u307E\u3002"
3000
+ },
3001
+ {
3002
+ title: "\u8A18\u4E8B\u9593\u3092\u79FB\u52D5\u3067\u304D\u306A\u3044",
3003
+ why: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u305A\u3001PageDown / PageUp \u3067\u306E\u8A18\u4E8B\u30B8\u30E3\u30F3\u30D7\u3082\u4E0D\u53EF\u3002"
3004
+ },
3005
+ {
3006
+ title: "\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u8FF7\u5B50\u306B\u306A\u308B",
3007
+ why: "\u8FFD\u52A0\u8AAD\u307F\u8FBC\u307F\u5F8C\u306E\u30D5\u30A9\u30FC\u30AB\u30B9\u7BA1\u7406\u304C\u7121\u304F\u3001\u73FE\u5728\u5730\u3092\u898B\u5931\u3046\u3002"
3008
+ }
3009
+ ],
3010
+ notes: [
3011
+ "\u8A18\u4E8B\u9593\u306E\u79FB\u52D5\u306B PageDown / PageUp \u3092\u4F7F\u3046\u306E\u306F\u3001Tab \u3092\u8A18\u4E8B\u5185\u306E\u30EA\u30F3\u30AF\u79FB\u52D5\u306E\u305F\u3081\u306B\u7A7A\u3051\u3066\u304A\u304F\u305F\u3081\u3002\u30CF\u30F3\u30C9\u30E9\u5185\u3067 preventDefault() \u3067\u30D6\u30E9\u30A6\u30B6\u65E2\u5B9A\u306E\u30B9\u30AF\u30ED\u30FC\u30EB\u3092\u6B62\u3081\u308B\u3002",
3012
+ "\u8FFD\u52A0\u8AAD\u307F\u8FBC\u307F\u5F8C\u306F\u65B0\u3057\u304F\u8FFD\u52A0\u3057\u305F\u8A18\u4E8B\u306E\u5148\u982D\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u79FB\u3059\u3002aria-setsize \u3082\u5168\u8A18\u4E8B\u3067\u65B0\u3057\u3044\u7DCF\u6570\u306B\u66F4\u65B0\u3059\u308B\u3002"
3013
+ ]
3014
+ };
3015
+ var carousel = {
3016
+ slug: "carousel",
3017
+ keyboard: [
3018
+ {
3019
+ keys: "Tab \u2192 Enter / Space\uFF08\u518D\u751F\u505C\u6B62\u30DC\u30BF\u30F3\uFF09",
3020
+ action: "\u81EA\u52D5\u56DE\u8EE2\u306E\u518D\u751F / \u505C\u6B62\u3092\u5207\u308A\u66FF\u3048\u308B",
3021
+ requirement: "required"
3022
+ },
3023
+ {
3024
+ keys: "Enter / Space\uFF08\u524D/\u6B21\u30DC\u30BF\u30F3\uFF09",
3025
+ action: "\u524D / \u6B21\u306E\u30B9\u30E9\u30A4\u30C9\u3078\u624B\u52D5\u79FB\u52D5\uFF08\u79FB\u52D5\u3059\u308B\u3068\u81EA\u52D5\u56DE\u8EE2\u306F\u505C\u6B62\uFF09",
3026
+ requirement: "required"
3027
+ },
3028
+ {
3029
+ keys: "\u30D5\u30A9\u30FC\u30AB\u30B9 / \u30DB\u30D0\u30FC",
3030
+ action: "\u30AB\u30EB\u30FC\u30BB\u30EB\u5185\u306B\u30D5\u30A9\u30FC\u30AB\u30B9\u30FB\u30DE\u30A6\u30B9\u304C\u3042\u308B\u9593\u306F\u81EA\u52D5\u56DE\u8EE2\u3092\u4E00\u6642\u505C\u6B62",
3031
+ requirement: "required"
3032
+ }
3033
+ ],
3034
+ aria: [
3035
+ {
3036
+ target: "\u30AB\u30EB\u30FC\u30BB\u30EB\u5168\u4F53",
3037
+ attr: 'aria-roledescription="carousel" + aria-label',
3038
+ meaning: "\u30AB\u30EB\u30FC\u30BB\u30EB\u3067\u3042\u308B\u3053\u3068\u3068\u540D\u524D\u3092\u4F1D\u3048\u308B\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09\u3002"
3039
+ },
3040
+ {
3041
+ target: "\u518D\u751F/\u505C\u6B62\u30DC\u30BF\u30F3",
3042
+ attr: "<button> + \u72B6\u614B\u306B\u5FDC\u3058\u305F aria-label",
3043
+ meaning: "\u81EA\u52D5\u56DE\u8EE2\u3092\u6B62\u3081/\u518D\u958B\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\uFF08\u81EA\u52D5\u56DE\u8EE2\u6642\u306F\u5FC5\u9808\uFF09\u3002"
3044
+ },
3045
+ {
3046
+ target: "\u524D/\u6B21\u30DC\u30BF\u30F3",
3047
+ attr: "<button> + aria-label",
3048
+ meaning: "\u30A2\u30A4\u30B3\u30F3\u3060\u3051\u3067\u3082\u76EE\u7684\u304C\u4F1D\u308F\u308B\u3088\u3046\u30E9\u30D9\u30EB\u3092\u4ED8\u3051\u308B\u3002"
3049
+ },
3050
+ {
3051
+ target: "\u5404\u30B9\u30E9\u30A4\u30C9",
3052
+ attr: 'role="group" + aria-roledescription="\u30B9\u30E9\u30A4\u30C9" + aria-label="3\u679A\u4E2D1\u679A\u76EE"',
3053
+ meaning: "\u5168\u4F53\u306E\u679A\u6570\u3068\u73FE\u5728\u4F4D\u7F6E\u3092\u4F1D\u3048\u308B\u3002"
3054
+ },
3055
+ {
3056
+ target: "\u30B9\u30E9\u30A4\u30C9\u306E\u7BB1",
3057
+ attr: 'aria-live="off | polite"',
3058
+ meaning: "\u81EA\u52D5\u56DE\u8EE2\u4E2D\u306F off\u3001\u505C\u6B62/\u624B\u52D5\u4E2D\u306F polite \u306B\u5207\u308A\u66FF\u3048\u308B\u3002"
3059
+ },
3060
+ {
3061
+ target: "\u975E\u8868\u793A\u30B9\u30E9\u30A4\u30C9",
3062
+ attr: "hidden",
3063
+ meaning: "\u8868\u793A\u4E2D\u4EE5\u5916\u306F\u8AAD\u307F\u4E0A\u3052/\u64CD\u4F5C\u306E\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
3064
+ }
3065
+ ],
3066
+ checklist: [
3067
+ "\u81EA\u52D5\u56DE\u8EE2\u3059\u308B\u306A\u3089\u518D\u751F/\u505C\u6B62\u30DC\u30BF\u30F3\u3092\u5FC5\u9808\u3067\u7528\u610F\u3057\u3066\u3044\u308B",
3068
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\uFF0F\u30DB\u30D0\u30FC\u306E\u9593\u306F\u81EA\u52D5\u56DE\u8EE2\u304C\u4E00\u6642\u505C\u6B62\u3059\u308B",
3069
+ "\u524D/\u6B21/\u518D\u751F\u505C\u6B62\u306F\u3059\u3079\u3066\u30CD\u30A4\u30C6\u30A3\u30D6\u306E <button>\uFF08div \u3092\u4F7F\u308F\u306A\u3044\uFF09",
3070
+ "\u30A2\u30A4\u30B3\u30F3\u30DC\u30BF\u30F3\u306B aria-label\u3001\u505C\u6B62/\u958B\u59CB\u3067\u30E9\u30D9\u30EB\u3092\u5207\u308A\u66FF\u3048\u3066\u3044\u308B",
3071
+ '\u5404\u30B9\u30E9\u30A4\u30C9\u306B role="group" + \u300C\u25CB\u679A\u4E2D\u25CB\u679A\u76EE\u300D\u306E\u30E9\u30D9\u30EB\u304C\u3042\u308B',
3072
+ '\u81EA\u52D5\u56DE\u8EE2\u4E2D\u306F aria-live="off"\u3001\u505C\u6B62/\u624B\u52D5\u6642\u306F polite',
3073
+ "\u8868\u793A\u4E2D\u4EE5\u5916\u306E\u30B9\u30E9\u30A4\u30C9\u306F hidden",
3074
+ 'aria-roledescription="carousel"\uFF08\u4EFB\u610F\uFF09\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B'
3075
+ ],
3076
+ antipatterns: [
3077
+ {
3078
+ title: "\u505C\u6B62\u3067\u304D\u306A\u3044",
3079
+ why: "\u518D\u751F/\u505C\u6B62\u30DC\u30BF\u30F3\u304C\u306A\u304F\u3001WCAG 2.2.2 \u9055\u53CD\u3002\u52D5\u304D\u306B\u5F31\u3044\u4EBA\u304C\u8AAD\u3081\u306A\u3044\u3002"
3080
+ },
3081
+ {
3082
+ title: "\u30D5\u30A9\u30FC\u30AB\u30B9/\u30DB\u30D0\u30FC\u3067\u3082\u6B62\u307E\u3089\u306A\u3044",
3083
+ why: "\u64CD\u4F5C\u4E2D\u3082\u52DD\u624B\u306B\u5207\u308A\u66FF\u308F\u308B\u3002"
3084
+ },
3085
+ {
3086
+ title: "\u77E2\u5370\u304C\u30D5\u30A9\u30FC\u30AB\u30B9\u4E0D\u53EF",
3087
+ why: "div + onclick \u3067\u30AD\u30FC\u30DC\u30FC\u30C9\u304B\u3089\u64CD\u4F5C\u3067\u304D\u306A\u3044\u3002"
3088
+ },
3089
+ {
3090
+ title: "\u4F4D\u7F6E\u304C\u4F1D\u308F\u3089\u306A\u3044",
3091
+ why: '\u30B9\u30E9\u30A4\u30C9\u306B role="group" \u3082\u300C\u25CB\u679A\u4E2D\u25CB\u679A\u76EE\u300D\u30E9\u30D9\u30EB\u3082\u306A\u3044\u3002'
3092
+ }
3093
+ ],
3094
+ notes: [
3095
+ "aria-roledescription \u3092\u4ED8\u3051\u308B\u3068\u3001\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC\u304C\u9818\u57DF\u3092\u300C\u304A\u3059\u3059\u3081\u7279\u96C6, \u30AB\u30EB\u30FC\u30BB\u30EB\u300D\u3001\u5404\u30B9\u30E9\u30A4\u30C9\u3092\u300C3\u679A\u4E2D1\u679A\u76EE, \u30B9\u30E9\u30A4\u30C9\u300D\u306E\u3088\u3046\u306B\u6848\u5185\u3057\u307E\u3059\uFF08\u4EFB\u610F\u3067\u3059\u304C\u5206\u304B\u308A\u3084\u3059\u304F\u306A\u308A\u307E\u3059\uFF09\u3002",
3096
+ "\u300C\u518D\u751F/\u505C\u6B62\u30DC\u30BF\u30F3\u300D\u306F\u3001\u30B9\u30E9\u30A4\u30C9\u3088\u308A\u524D\uFF08DOM \u4E0A\u3067\u5148\uFF09\u306B\u7F6E\u304F\u306E\u304C\u63A8\u5968\u3067\u3059\u3002\u30AD\u30FC\u30DC\u30FC\u30C9\u5229\u7528\u8005\u304C\u52D5\u304D\u306B\u6C17\u3065\u3044\u305F\u3068\u304D\u3001\u3059\u3050\u6B62\u3081\u3089\u308C\u308B\u3088\u3046\u306B\u3059\u308B\u305F\u3081\u3067\u3059\u3002"
3097
+ ]
3098
+ };
3099
+ var tooltip = {
3100
+ slug: "tooltip",
3101
+ keyboard: [
3102
+ {
3103
+ keys: "Tab",
3104
+ action: "\u30C8\u30EA\u30AC\u30FC\u306B\u30D5\u30A9\u30FC\u30AB\u30B9 \u2192 \u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u304C\u8868\u793A\u3055\u308C\u308B",
3105
+ requirement: "required"
3106
+ },
3107
+ {
3108
+ keys: "Esc",
3109
+ action: "\u8868\u793A\u4E2D\u306E\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u3092\u9589\u3058\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u306F\u30C8\u30EA\u30AC\u30FC\u306B\u6B8B\u3059\uFF09",
3110
+ requirement: "required"
3111
+ }
3112
+ ],
3113
+ aria: [
3114
+ {
3115
+ target: "\u30C8\u30EA\u30AC\u30FC",
3116
+ attr: 'aria-describedby="\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u306Eid"',
3117
+ meaning: "\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u3092\u300C\u8AAC\u660E\u300D\u3068\u3057\u3066\u95A2\u9023\u4ED8\u3051\u308B\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u6642\u306B\u8AAD\u307F\u4E0A\u3052\u3089\u308C\u308B\u3002"
3118
+ },
3119
+ {
3120
+ target: "\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u672C\u4F53",
3121
+ attr: 'role="tooltip"',
3122
+ meaning: "\u3053\u308C\u304C\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u3067\u3042\u308B\u3053\u3068\u3092\u793A\u3059\u3002"
3123
+ },
3124
+ {
3125
+ target: "\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u672C\u4F53",
3126
+ attr: "hidden\uFF08\u975E\u8868\u793A\u6642\uFF09",
3127
+ meaning: "\u51FA\u3066\u3044\u306A\u3044\u9593\u306F\u8AAD\u307F\u4E0A\u3052\u30FB\u8868\u793A\u306E\u5BFE\u8C61\u5916\u306B\u3059\u308B\u3002"
3128
+ },
3129
+ {
3130
+ target: "\u30C8\u30EA\u30AC\u30FC",
3131
+ attr: "\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306A\u8981\u7D20\uFF08<button> \u7B49\uFF09",
3132
+ meaning: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u3082\u5230\u9054\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u3002<div> \u7B49\u306B\u3057\u306A\u3044\u3002"
3133
+ }
3134
+ ],
3135
+ checklist: [
3136
+ "\u30C8\u30EA\u30AC\u30FC\u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306A\u8981\u7D20\uFF08<button> \u7B49\uFF09",
3137
+ "\u30C8\u30EA\u30AC\u30FC\u306B aria-describedby \u3067\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u3092\u95A2\u9023\u4ED8\u3051\u3066\u3044\u308B",
3138
+ '\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u672C\u4F53\u306B role="tooltip" \u3092\u4ED8\u3051\u3066\u3044\u308B',
3139
+ "\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u3082\u30DB\u30D0\u30FC\u3067\u3082\u8868\u793A\u3055\u308C\u308B",
3140
+ "Esc \u3067\u9589\u3058\u3089\u308C\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u306F\u30C8\u30EA\u30AC\u30FC\u306B\u6B8B\u3059\uFF09",
3141
+ "\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u81EA\u8EAB\u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u3089\u306A\u3044\uFF0F\u64CD\u4F5C\u8981\u7D20\u3092\u5165\u308C\u306A\u3044",
3142
+ "\u64CD\u4F5C\u306B\u5FC5\u9808\u306E\u60C5\u5831\u3092\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u300C\u3060\u3051\u300D\u306B\u5165\u308C\u3066\u3044\u306A\u3044"
3143
+ ],
3144
+ antipatterns: [
3145
+ {
3146
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u51FA\u306A\u3044",
3147
+ why: "title \u3082\u30DB\u30D0\u30FC\u5C02\u7528CSS\u3082\u3001Tab \u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u306F\u8868\u793A\u3055\u308C\u306A\u3044\u3002"
3148
+ },
3149
+ {
3150
+ title: "\u30BF\u30C3\u30C1\u3067\u51FA\u306A\u3044",
3151
+ why: "\u30DB\u30D0\u30FC\u306E\u7121\u3044\u7AEF\u672B\u3067\u306F\u6C38\u9060\u306B\u8868\u793A\u3055\u308C\u306A\u3044\u3002"
3152
+ },
3153
+ {
3154
+ title: "\u95A2\u9023\u4ED8\u3051\u304C\u7121\u3044",
3155
+ why: "aria-describedby \u304C\u7121\u304F\u3001\u8AAC\u660E\u3068\u30C8\u30EA\u30AC\u30FC\u304C\u7D50\u3073\u3064\u3044\u3066\u3044\u306A\u3044\u3002"
3156
+ },
3157
+ {
3158
+ title: "\u9589\u3058\u3089\u308C\u306A\u3044",
3159
+ why: "Esc \u3067\u9589\u3058\u308B\u624B\u6BB5\u304C\u306A\u3044\uFF08WCAG 1.4.13 \u9055\u53CD\uFF09\u3002"
3160
+ }
3161
+ ],
3162
+ notes: [
3163
+ "\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u81EA\u8EAB\u306F\u30D5\u30A9\u30FC\u30AB\u30B9\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093\uFF08Tab \u306E\u5BFE\u8C61\u306B\u3057\u306A\u3044\uFF09\u3002\u3042\u304F\u307E\u3067\u30C8\u30EA\u30AC\u30FC\u306E\u88DC\u8DB3\u306A\u306E\u3067\u3001\u4E2D\u306B\u30EA\u30F3\u30AF\u3084\u30DC\u30BF\u30F3\u3092\u5165\u308C\u308B\u306E\u3082\u907F\u3051\u307E\u3059\uFF08\u64CD\u4F5C\u8981\u7D20\u3092\u5165\u308C\u305F\u3044\u306A\u3089\u3001\u305D\u308C\u306F\u30C4\u30FC\u30EB\u30C1\u30C3\u30D7\u3067\u306F\u306A\u304F\u30DD\u30C3\u30D7\u30AA\u30FC\u30D0\u30FC/\u30C0\u30A4\u30A2\u30ED\u30B0\u3067\u3059\uFF09\u3002"
3164
+ ]
3165
+ };
3166
+ var windowSplitter = {
3167
+ slug: "window-splitter",
3168
+ keyboard: [
3169
+ {
3170
+ keys: "\u2190 / \u2192",
3171
+ action: "\u30DA\u30A4\u30F3\u3092\u72ED\u304F / \u5E83\u304F\u3059\u308B\uFF08\u7E26\u306E\u5883\u754C\u306E\u5834\u5408\u3002\u6A2A\u306A\u3089 \u2191 / \u2193\uFF09",
3172
+ requirement: "required"
3173
+ },
3174
+ {
3175
+ keys: "Home",
3176
+ action: "\u6700\u5C0F\u30B5\u30A4\u30BA\u306B\u3059\u308B",
3177
+ requirement: "required"
3178
+ },
3179
+ {
3180
+ keys: "End",
3181
+ action: "\u6700\u5927\u30B5\u30A4\u30BA\u306B\u3059\u308B",
3182
+ requirement: "required"
3183
+ },
3184
+ {
3185
+ keys: "Enter",
3186
+ action: "\u6298\u308A\u305F\u305F\u3080\uFF0F\u5143\u306E\u30B5\u30A4\u30BA\u306B\u623B\u3059\uFF08\u4EFB\u610F\u30FB\u63A8\u5968\uFF09",
3187
+ requirement: "optional"
3188
+ },
3189
+ {
3190
+ keys: "Tab",
3191
+ action: "\u6B21 / \u524D\u306E\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u8981\u7D20\u3078\u79FB\u52D5",
3192
+ requirement: "required"
3193
+ }
3194
+ ],
3195
+ aria: [
3196
+ {
3197
+ target: "\u30CF\u30F3\u30C9\u30EB",
3198
+ attr: 'role="separator"',
3199
+ meaning: "\u300C\u5927\u304D\u3055\u3092\u5909\u3048\u3089\u308C\u308B\u533A\u5207\u308A\u300D\u3060\u3068\u652F\u63F4\u6280\u8853\u3078\u4F1D\u3048\u308B\u3002"
3200
+ },
3201
+ {
3202
+ target: "\u30CF\u30F3\u30C9\u30EB",
3203
+ attr: 'tabindex="0"',
3204
+ meaning: "div \u3092\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306B\u3057\u3001Tab \u3067\u5230\u9054\u3067\u304D\u308B\u3088\u3046\u306B\u3059\u308B\u3002"
3205
+ },
3206
+ {
3207
+ target: "\u30CF\u30F3\u30C9\u30EB",
3208
+ attr: 'aria-valuenow="30"',
3209
+ meaning: "\u73FE\u5728\u306E\u5272\u5408\uFF08\u3084\u30B5\u30A4\u30BA\uFF09\u3002\u64CD\u4F5C\u306E\u305F\u3073\u306B\u5FC5\u305A\u66F4\u65B0\u3059\u308B\u3002"
3210
+ },
3211
+ {
3212
+ target: "\u30CF\u30F3\u30C9\u30EB",
3213
+ attr: "aria-valuemin / aria-valuemax",
3214
+ meaning: "\u52D5\u304B\u305B\u308B\u7BC4\u56F2\u306E\u6700\u5C0F\u30FB\u6700\u5927\u3002\u5024\u306F\u3053\u306E\u7BC4\u56F2\u306B\u30AF\u30E9\u30F3\u30D7\u3059\u308B\u3002"
3215
+ },
3216
+ {
3217
+ target: "\u30CF\u30F3\u30C9\u30EB",
3218
+ attr: 'aria-controls="\u30DA\u30A4\u30F3\u306Eid"',
3219
+ meaning: "\u3069\u306E\u30DA\u30A4\u30F3\u306E\u5927\u304D\u3055\u3092\u64CD\u4F5C\u3059\u308B\u304B\u3092\u793A\u3059\u3002"
3220
+ },
3221
+ {
3222
+ target: "\u30CF\u30F3\u30C9\u30EB",
3223
+ attr: "aria-label \u307E\u305F\u306F aria-labelledby",
3224
+ meaning: "\u300C\u4F55\u306E\u5E45\u304B\u300D\u3092\u8868\u3059\u540D\u524D\u3002\u30D5\u30A9\u30FC\u30AB\u30B9\u53EF\u80FD\u306A\u306E\u3067\u540D\u524D\u306F\u5FC5\u9808\u3002"
3225
+ },
3226
+ {
3227
+ target: "\u30CF\u30F3\u30C9\u30EB",
3228
+ attr: 'aria-orientation="vertical"',
3229
+ meaning: "\u5883\u754C\u7DDA\u306E\u5411\u304D\u3002\u7E26\u7DDA\u306A\u3089 vertical\uFF08\u65E2\u5B9A\u306F horizontal\uFF09\u3002"
3230
+ }
3231
+ ],
3232
+ checklist: [
3233
+ '\u30CF\u30F3\u30C9\u30EB\u306B role="separator" \u304C\u4ED8\u3044\u3066\u3044\u308B',
3234
+ '\u30CF\u30F3\u30C9\u30EB\u304C tabindex="0" \u3067\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u308B',
3235
+ "aria-label / aria-labelledby \u3067\u540D\u524D\u304C\u4ED8\u3044\u3066\u3044\u308B",
3236
+ "aria-valuenow \u304C\u64CD\u4F5C\u3068\u5E38\u306B\u4E00\u81F4\u3057\u3001\u898B\u305F\u76EE\u306E\u5E45\u3068\u540C\u671F\u3057\u3066\u3044\u308B",
3237
+ "aria-valuemin / aria-valuemax \u304C\u3042\u308A\u3001\u5024\u304C\u7BC4\u56F2\u5185\u306B\u30AF\u30E9\u30F3\u30D7\u3055\u308C\u308B",
3238
+ "aria-controls \u3067\u64CD\u4F5C\u5BFE\u8C61\u306E\u30DA\u30A4\u30F3\u3092\u6307\u3057\u3066\u3044\u308B",
3239
+ "\u77E2\u5370\u30AD\u30FC\u3067\u30EA\u30B5\u30A4\u30BA\u3001Home / End \u3067\u6700\u5C0F\u30FB\u6700\u5927\u306B\u3067\u304D\u308B",
3240
+ "\uFF08\u4EFB\u610F\uFF09Enter \u3067\u6298\u308A\u305F\u305F\u307F\uFF0F\u5143\u306E\u30B5\u30A4\u30BA\u306B\u5FA9\u5E30\u3067\u304D\u308B",
3241
+ "\u30AD\u30FC\u30DC\u30FC\u30C9\u3060\u3051\u3067\u64CD\u4F5C\u3067\u304D\u3001\u30D5\u30A9\u30FC\u30AB\u30B9\u304C\u898B\u3048\u308B\uFF08\u30D5\u30A9\u30FC\u30AB\u30B9\u30EA\u30F3\u30B0\u3092\u6D88\u3057\u3066\u3044\u306A\u3044\uFF09"
3242
+ ],
3243
+ antipatterns: [
3244
+ {
3245
+ title: "\u533A\u5207\u308A\u3060\u3068\u4F1D\u308F\u3089\u306A\u3044",
3246
+ why: 'role="separator" \u304C\u7121\u304F\u3001\u64CD\u4F5C\u5BFE\u8C61\u306B\u898B\u3048\u306A\u3044\u3002'
3247
+ },
3248
+ {
3249
+ title: "\u73FE\u5728\u5024\u30FB\u7BC4\u56F2\u304C\u4F1D\u308F\u3089\u306A\u3044",
3250
+ why: "aria-valuenow / valuemin / valuemax \u304C\u7121\u304F\u3001\u3044\u307E\u4F55%\u304B\u3082\u9650\u754C\u3082\u5206\u304B\u3089\u306A\u3044\u3002"
3251
+ },
3252
+ {
3253
+ title: "\u30D5\u30A9\u30FC\u30AB\u30B9\u3067\u304D\u306A\u3044",
3254
+ why: "tabindex \u304C\u7121\u304F\u3001Tab \u3067\u5230\u9054\u3067\u304D\u306A\u3044\u3002"
3255
+ },
3256
+ {
3257
+ title: "\u30AD\u30FC\u30DC\u30FC\u30C9\u3067\u30EA\u30B5\u30A4\u30BA\u3067\u304D\u306A\u3044",
3258
+ why: "\u77E2\u5370\u30FBHome / End \u51E6\u7406\u304C\u7121\u304F\u3001\u30DE\u30A6\u30B9\u5C02\u7528\u3002"
3259
+ },
3260
+ {
3261
+ title: "\u6298\u308A\u305F\u305F\u307F\u3067\u304D\u306A\u3044",
3262
+ why: "Enter \u7B49\u306E\u4EE3\u66FF\u624B\u6BB5\u304C\u7121\u3044\u3002"
3263
+ }
3264
+ ],
3265
+ notes: [
3266
+ "\u5883\u754C\u304C\u7E26\u7DDA\uFF08\u5DE6\u53F3\u306E\u30DA\u30A4\u30F3\u3092\u533A\u5207\u308B\uFF09\u306A\u3089\u5DE6\u53F3\u77E2\u5370\u3001\u6A2A\u7DDA\uFF08\u4E0A\u4E0B\u306E\u30DA\u30A4\u30F3\u3092\u533A\u5207\u308B\uFF09\u306A\u3089\u4E0A\u4E0B\u77E2\u5370\u3092\u4F7F\u3044\u307E\u3059\u3002aria-orientation \u306F\u5883\u754C\u7DDA\u305D\u306E\u3082\u306E\u306E\u5411\u304D\u3092\u8868\u3057\u3001\u7E26\u7DDA\u306A\u3089 vertical \u3067\u3059\u3002"
3267
+ ]
3268
+ };
3269
+ var allViewpoints = [
3270
+ accordion,
3271
+ disclosure,
3272
+ alert,
3273
+ dialogModal,
3274
+ alertdialog,
3275
+ breadcrumb,
3276
+ menuMenubar,
3277
+ menuButton,
3278
+ link,
3279
+ landmarks,
3280
+ button,
3281
+ checkbox,
3282
+ radioGroup,
3283
+ switchPattern,
3284
+ combobox,
3285
+ listbox,
3286
+ slider,
3287
+ sliderMultithumb,
3288
+ spinbutton,
3289
+ meter,
3290
+ tabs,
3291
+ toolbar,
3292
+ table,
3293
+ grid,
3294
+ treegrid,
3295
+ treeView,
3296
+ feed,
3297
+ carousel,
3298
+ tooltip,
3299
+ windowSplitter
3300
+ ];
3301
+ var viewpoints = new Map(
3302
+ patternViewpointSchema.array().parse(allViewpoints).map((v) => [v.slug, v])
3303
+ );
3304
+ function getPatternViewpoint(slug) {
3305
+ return viewpoints.get(slug);
3306
+ }
3307
+ function getPatternDetail(slug) {
3308
+ const pattern = getPattern(slug);
3309
+ if (!pattern) return void 0;
3310
+ return {
3311
+ ...pattern,
3312
+ viewpoint: getPatternViewpoint(slug) ?? null,
3313
+ criteria: criteriaForPattern(slug)
3314
+ };
3315
+ }
3316
+ function getCriterionDetail(slug) {
3317
+ const criterion = getCriterion(slug);
3318
+ if (!criterion) return void 0;
3319
+ const relatedPatterns = criterion.patterns.map((s) => getPattern(s)).filter((p) => p !== void 0);
3320
+ return { ...criterion, relatedPatterns };
3321
+ }
3322
+ function search(query) {
3323
+ const q = query.trim().toLowerCase();
3324
+ if (q === "") return [];
3325
+ const hits = [];
3326
+ for (const p of patterns) {
3327
+ const haystack = [p.slug, p.ja, p.en, p.summary];
3328
+ if (haystack.some((f) => f.toLowerCase().includes(q))) {
3329
+ hits.push({ kind: "pattern", slug: p.slug, title: `${p.ja}\uFF08${p.en}\uFF09`, subtitle: p.summary });
3330
+ }
3331
+ }
3332
+ for (const c of criteria) {
3333
+ const haystack = [c.slug, c.num, c.ja, c.en, c.summary];
3334
+ if (haystack.some((f) => f.toLowerCase().includes(q))) {
3335
+ hits.push({
3336
+ kind: "wcag",
3337
+ slug: c.slug,
3338
+ title: `${c.num} ${c.ja}\uFF08${c.en}\uFF09`,
3339
+ subtitle: c.summary
3340
+ });
3341
+ }
3342
+ }
3343
+ return hits;
3344
+ }
3345
+
3346
+ // src/output.ts
3347
+ import pc from "picocolors";
3348
+ var API_VERSION = 1;
3349
+ var ERROR_CODES = {
3350
+ ERR_UNKNOWN: "ERR_UNKNOWN",
3351
+ ERR_UNKNOWN_PATTERN: "ERR_UNKNOWN_PATTERN",
3352
+ ERR_UNKNOWN_CRITERION: "ERR_UNKNOWN_CRITERION",
3353
+ ERR_INVALID_OPTION: "ERR_INVALID_OPTION",
3354
+ ERR_EMPTY_QUERY: "ERR_EMPTY_QUERY",
3355
+ ERR_NODE_VERSION: "ERR_NODE_VERSION"
3356
+ };
3357
+ var A11yError = class extends Error {
3358
+ code;
3359
+ suggestions;
3360
+ constructor(message, code, suggestions) {
3361
+ super(message);
3362
+ this.name = "A11yError";
3363
+ this.code = code;
3364
+ this.suggestions = suggestions;
3365
+ }
3366
+ };
3367
+ var jsonMode = false;
3368
+ function setJsonMode(on) {
3369
+ jsonMode = on;
3370
+ }
3371
+ function isJsonMode() {
3372
+ return jsonMode;
3373
+ }
3374
+ function humanLog(...args) {
3375
+ if (!jsonMode) console.log(...args);
3376
+ }
3377
+ function jsonOut(type, data) {
3378
+ console.log(JSON.stringify({ apiVersion: API_VERSION, type, data }, null, 2));
3379
+ }
3380
+ function reportError(err) {
3381
+ let message;
3382
+ let code = ERROR_CODES.ERR_UNKNOWN;
3383
+ let suggestions;
3384
+ if (err instanceof A11yError) {
3385
+ message = err.message;
3386
+ code = err.code;
3387
+ suggestions = err.suggestions;
3388
+ } else if (err instanceof Error) {
3389
+ message = err.message;
3390
+ } else {
3391
+ message = String(err);
3392
+ }
3393
+ if (jsonMode) {
3394
+ console.log(
3395
+ JSON.stringify(
3396
+ { apiVersion: API_VERSION, error: message, code, suggestions: suggestions ?? void 0 },
3397
+ null,
3398
+ 2
3399
+ )
3400
+ );
3401
+ } else {
3402
+ console.error(pc.red(`\u30A8\u30E9\u30FC: ${message}`));
3403
+ if (suggestions && suggestions.length > 0) {
3404
+ console.error("");
3405
+ console.error("\u3082\u3057\u304B\u3057\u3066:");
3406
+ for (const s of suggestions) {
3407
+ console.error(` ${pc.cyan(s.slug)} \u2014 ${s.reason}`);
3408
+ }
3409
+ }
3410
+ }
3411
+ process.exit(1);
3412
+ }
3413
+
3414
+ // src/api.ts
3415
+ function bigrams(s) {
3416
+ const g = /* @__PURE__ */ new Set();
3417
+ const t = s.toLowerCase();
3418
+ for (let i = 0; i < t.length - 1; i++) g.add(t.slice(i, i + 2));
3419
+ return g;
3420
+ }
3421
+ function similarity(a, b) {
3422
+ const ga = bigrams(a);
3423
+ const gb = bigrams(b);
3424
+ if (ga.size === 0 || gb.size === 0) return a === b ? 1 : 0;
3425
+ let inter = 0;
3426
+ for (const g of ga) if (gb.has(g)) inter++;
3427
+ return 2 * inter / (ga.size + gb.size);
3428
+ }
3429
+ function suggestPatterns(slug) {
3430
+ return patterns.map((p) => ({ slug: p.slug, score: similarity(slug, p.slug), ja: p.ja })).filter((c) => c.score > 0.2).sort((a, b) => b.score - a.score).slice(0, 3).map((c) => ({ slug: c.slug, reason: `${c.ja}\uFF08\u4F3C\u305F\u540D\u524D\uFF09` }));
3431
+ }
3432
+ function suggestCriteria(slug) {
3433
+ return criteria.map((c) => ({ slug: c.slug, score: similarity(slug, c.slug), ja: c.ja, num: c.num })).filter((c) => c.score > 0.2).sort((a, b) => b.score - a.score).slice(0, 3).map((c) => ({ slug: c.slug, reason: `${c.num} ${c.ja}\uFF08\u4F3C\u305F\u756A\u53F7\uFF09` }));
3434
+ }
3435
+ function patternList() {
3436
+ const grouped = patternsByCategory().map((g) => ({
3437
+ category: g.category,
3438
+ items: g.items.map((p) => ({ slug: p.slug, ja: p.ja, en: p.en, summary: p.summary }))
3439
+ }));
3440
+ return { type: "pattern.list", data: { total: patterns.length, categories: grouped } };
3441
+ }
3442
+ function patternDetail(slug) {
3443
+ const detail = getPatternDetail(slug);
3444
+ if (!detail) {
3445
+ throw new A11yError(
3446
+ `'${slug}' \u3068\u3044\u3046\u30D1\u30BF\u30FC\u30F3\u306F\u3042\u308A\u307E\u305B\u3093`,
3447
+ ERROR_CODES.ERR_UNKNOWN_PATTERN,
3448
+ suggestPatterns(slug)
3449
+ );
3450
+ }
3451
+ return { type: "pattern.detail", data: detail };
3452
+ }
3453
+ function wcagList() {
3454
+ const grouped = criteriaByPrinciple().map((g) => ({
3455
+ principle: g.principle,
3456
+ items: g.items.map((c) => ({
3457
+ slug: c.slug,
3458
+ num: c.num,
3459
+ ja: c.ja,
3460
+ en: c.en,
3461
+ level: c.level,
3462
+ summary: c.summary
3463
+ }))
3464
+ }));
3465
+ return { type: "wcag.list", data: { total: criteria.length, principles: grouped } };
3466
+ }
3467
+ function wcagDetail(slug) {
3468
+ const detail = getCriterionDetail(slug);
3469
+ if (!detail) {
3470
+ throw new A11yError(
3471
+ `'${slug}' \u3068\u3044\u3046\u9054\u6210\u57FA\u6E96\u306F\u3042\u308A\u307E\u305B\u3093`,
3472
+ ERROR_CODES.ERR_UNKNOWN_CRITERION,
3473
+ suggestCriteria(slug)
3474
+ );
3475
+ }
3476
+ return { type: "wcag.detail", data: detail };
3477
+ }
3478
+ function search2(query) {
3479
+ const q = query.trim();
3480
+ if (q === "") {
3481
+ throw new A11yError("\u691C\u7D22\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044", ERROR_CODES.ERR_EMPTY_QUERY);
3482
+ }
3483
+ const hits = search(q);
3484
+ return { type: "search.results", data: { query: q, total: hits.length, hits } };
3485
+ }
3486
+ function checklist(slug) {
3487
+ const detail = getPatternDetail(slug);
3488
+ if (!detail) {
3489
+ throw new A11yError(
3490
+ `'${slug}' \u3068\u3044\u3046\u30D1\u30BF\u30FC\u30F3\u306F\u3042\u308A\u307E\u305B\u3093`,
3491
+ ERROR_CODES.ERR_UNKNOWN_PATTERN,
3492
+ suggestPatterns(slug)
3493
+ );
3494
+ }
3495
+ return {
3496
+ type: "pattern.checklist",
3497
+ data: { slug: detail.slug, ja: detail.ja, checklist: detail.viewpoint?.checklist ?? [] }
3498
+ };
3499
+ }
3500
+
3501
+ export {
3502
+ setJsonMode,
3503
+ isJsonMode,
3504
+ humanLog,
3505
+ jsonOut,
3506
+ reportError,
3507
+ patternList,
3508
+ patternDetail,
3509
+ wcagList,
3510
+ wcagDetail,
3511
+ search2 as search,
3512
+ checklist
3513
+ };
3514
+ //# sourceMappingURL=chunk-Y6KJQSVY.js.map