wai-website-theme 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.
Files changed (173) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +52 -0
  4. data/_data/lang.json +730 -0
  5. data/_data/techniques.yml +180 -0
  6. data/_data/wcag.yml +125 -0
  7. data/_includes/.DS_Store +0 -0
  8. data/_includes/body-class.html +1 -0
  9. data/_includes/box.html +10 -0
  10. data/_includes/excol.html +13 -0
  11. data/_includes/footer.html +40 -0
  12. data/_includes/head.html +23 -0
  13. data/_includes/header.html +59 -0
  14. data/_includes/icon.html +6 -0
  15. data/_includes/img.html +17 -0
  16. data/_includes/multilang-list-policy-links.html +29 -0
  17. data/_includes/multilang-list.html +35 -0
  18. data/_includes/multilang-policy-title.html +5 -0
  19. data/_includes/multilang-title-full.html +1 -0
  20. data/_includes/multilang-title.html +1 -0
  21. data/_includes/navlist.html +22 -0
  22. data/_includes/notes.html +2 -0
  23. data/_includes/prevnext.html +34 -0
  24. data/_includes/resources.html +19 -0
  25. data/_includes/sidenav.html +65 -0
  26. data/_includes/sidenote.html +14 -0
  27. data/_includes/toc.html +10 -0
  28. data/_includes/video-player.html +99 -0
  29. data/_layouts/default.html +26 -0
  30. data/_layouts/home.html +14 -0
  31. data/_layouts/news.html +21 -0
  32. data/_layouts/none.html +1 -0
  33. data/_layouts/policy.html +72 -0
  34. data/_layouts/sidenav.html +27 -0
  35. data/_layouts/sidenavsidebar.html +22 -0
  36. data/assets/ableplayer/.gitattributes +14 -0
  37. data/assets/ableplayer/.gitignore +7 -0
  38. data/assets/ableplayer/Gruntfile.js +105 -0
  39. data/assets/ableplayer/LICENSE +26 -0
  40. data/assets/ableplayer/README.md +656 -0
  41. data/assets/ableplayer/build/ableplayer.dist.js +12157 -0
  42. data/assets/ableplayer/build/ableplayer.js +12157 -0
  43. data/assets/ableplayer/build/ableplayer.min.css +2 -0
  44. data/assets/ableplayer/build/ableplayer.min.js +8 -0
  45. data/assets/ableplayer/button-icons/able-icons.svg +116 -0
  46. data/assets/ableplayer/button-icons/black/captions.png +0 -0
  47. data/assets/ableplayer/button-icons/black/chapters.png +0 -0
  48. data/assets/ableplayer/button-icons/black/close.png +0 -0
  49. data/assets/ableplayer/button-icons/black/descriptions.png +0 -0
  50. data/assets/ableplayer/button-icons/black/ellipsis.png +0 -0
  51. data/assets/ableplayer/button-icons/black/faster.png +0 -0
  52. data/assets/ableplayer/button-icons/black/forward.png +0 -0
  53. data/assets/ableplayer/button-icons/black/fullscreen-collapse.png +0 -0
  54. data/assets/ableplayer/button-icons/black/fullscreen-expand.png +0 -0
  55. data/assets/ableplayer/button-icons/black/help.png +0 -0
  56. data/assets/ableplayer/button-icons/black/next.png +0 -0
  57. data/assets/ableplayer/button-icons/black/pause.png +0 -0
  58. data/assets/ableplayer/button-icons/black/pipe.png +0 -0
  59. data/assets/ableplayer/button-icons/black/play.png +0 -0
  60. data/assets/ableplayer/button-icons/black/preferences.png +0 -0
  61. data/assets/ableplayer/button-icons/black/previous.png +0 -0
  62. data/assets/ableplayer/button-icons/black/rabbit.png +0 -0
  63. data/assets/ableplayer/button-icons/black/restart.png +0 -0
  64. data/assets/ableplayer/button-icons/black/rewind.png +0 -0
  65. data/assets/ableplayer/button-icons/black/sign.png +0 -0
  66. data/assets/ableplayer/button-icons/black/slower.png +0 -0
  67. data/assets/ableplayer/button-icons/black/stop.png +0 -0
  68. data/assets/ableplayer/button-icons/black/transcript.png +0 -0
  69. data/assets/ableplayer/button-icons/black/turtle.png +0 -0
  70. data/assets/ableplayer/button-icons/black/volume-loud.png +0 -0
  71. data/assets/ableplayer/button-icons/black/volume-medium.png +0 -0
  72. data/assets/ableplayer/button-icons/black/volume-mute.png +0 -0
  73. data/assets/ableplayer/button-icons/black/volume-soft.png +0 -0
  74. data/assets/ableplayer/button-icons/fonts/able.eot +0 -0
  75. data/assets/ableplayer/button-icons/fonts/able.svg +40 -0
  76. data/assets/ableplayer/button-icons/fonts/able.ttf +0 -0
  77. data/assets/ableplayer/button-icons/fonts/able.woff +0 -0
  78. data/assets/ableplayer/button-icons/white/captions.png +0 -0
  79. data/assets/ableplayer/button-icons/white/chapters.png +0 -0
  80. data/assets/ableplayer/button-icons/white/close.png +0 -0
  81. data/assets/ableplayer/button-icons/white/descriptions.png +0 -0
  82. data/assets/ableplayer/button-icons/white/ellipsis.png +0 -0
  83. data/assets/ableplayer/button-icons/white/faster.png +0 -0
  84. data/assets/ableplayer/button-icons/white/forward.png +0 -0
  85. data/assets/ableplayer/button-icons/white/fullscreen-collapse.png +0 -0
  86. data/assets/ableplayer/button-icons/white/fullscreen-expand.png +0 -0
  87. data/assets/ableplayer/button-icons/white/help.png +0 -0
  88. data/assets/ableplayer/button-icons/white/next.png +0 -0
  89. data/assets/ableplayer/button-icons/white/pause.png +0 -0
  90. data/assets/ableplayer/button-icons/white/pipe.png +0 -0
  91. data/assets/ableplayer/button-icons/white/play.png +0 -0
  92. data/assets/ableplayer/button-icons/white/preferences.png +0 -0
  93. data/assets/ableplayer/button-icons/white/previous.png +0 -0
  94. data/assets/ableplayer/button-icons/white/rabbit.png +0 -0
  95. data/assets/ableplayer/button-icons/white/restart.png +0 -0
  96. data/assets/ableplayer/button-icons/white/rewind.png +0 -0
  97. data/assets/ableplayer/button-icons/white/sign.png +0 -0
  98. data/assets/ableplayer/button-icons/white/slower.png +0 -0
  99. data/assets/ableplayer/button-icons/white/stop.png +0 -0
  100. data/assets/ableplayer/button-icons/white/transcript.png +0 -0
  101. data/assets/ableplayer/button-icons/white/turtle.png +0 -0
  102. data/assets/ableplayer/button-icons/white/volume-loud.png +0 -0
  103. data/assets/ableplayer/button-icons/white/volume-medium.png +0 -0
  104. data/assets/ableplayer/button-icons/white/volume-mute.png +0 -0
  105. data/assets/ableplayer/button-icons/white/volume-soft.png +0 -0
  106. data/assets/ableplayer/images/wingrip.png +0 -0
  107. data/assets/ableplayer/package.json +22 -0
  108. data/assets/ableplayer/scripts/JQuery.doWhen.js +113 -0
  109. data/assets/ableplayer/scripts/ableplayer-base.js +440 -0
  110. data/assets/ableplayer/scripts/browser.js +162 -0
  111. data/assets/ableplayer/scripts/buildplayer.js +1609 -0
  112. data/assets/ableplayer/scripts/caption.js +385 -0
  113. data/assets/ableplayer/scripts/chapters.js +242 -0
  114. data/assets/ableplayer/scripts/control.js +1514 -0
  115. data/assets/ableplayer/scripts/description.js +283 -0
  116. data/assets/ableplayer/scripts/dialog.js +147 -0
  117. data/assets/ableplayer/scripts/dragdrop.js +766 -0
  118. data/assets/ableplayer/scripts/event.js +595 -0
  119. data/assets/ableplayer/scripts/initialize.js +725 -0
  120. data/assets/ableplayer/scripts/langs.js +750 -0
  121. data/assets/ableplayer/scripts/metadata.js +134 -0
  122. data/assets/ableplayer/scripts/misc.js +72 -0
  123. data/assets/ableplayer/scripts/preference.js +909 -0
  124. data/assets/ableplayer/scripts/search.js +171 -0
  125. data/assets/ableplayer/scripts/sign.js +92 -0
  126. data/assets/ableplayer/scripts/slider.js +454 -0
  127. data/assets/ableplayer/scripts/track.js +296 -0
  128. data/assets/ableplayer/scripts/transcript.js +590 -0
  129. data/assets/ableplayer/scripts/translation.js +66 -0
  130. data/assets/ableplayer/scripts/volume.js +383 -0
  131. data/assets/ableplayer/scripts/webvtt.js +765 -0
  132. data/assets/ableplayer/scripts/youtube.js +471 -0
  133. data/assets/ableplayer/styles/ableplayer.css +1241 -0
  134. data/assets/ableplayer/thirdparty/js.cookie.js +145 -0
  135. data/assets/ableplayer/thirdparty/modernizr.custom.js +4 -0
  136. data/assets/ableplayer/translations/ca.js +1 -0
  137. data/assets/ableplayer/translations/de.js +1 -0
  138. data/assets/ableplayer/translations/en.js +305 -0
  139. data/assets/ableplayer/translations/es.js +305 -0
  140. data/assets/ableplayer/translations/fr.js +305 -0
  141. data/assets/ableplayer/translations/it.js +303 -0
  142. data/assets/ableplayer/translations/ja.js +305 -0
  143. data/assets/ableplayer/translations/nl.js +305 -0
  144. data/assets/css/style.css +4360 -0
  145. data/assets/css/style.css.map +1 -0
  146. data/assets/fonts/anonymouspro-bold.woff +0 -0
  147. data/assets/fonts/anonymouspro-bold.woff2 +0 -0
  148. data/assets/fonts/anonymouspro-bolditalic.woff +0 -0
  149. data/assets/fonts/anonymouspro-bolditalic.woff2 +0 -0
  150. data/assets/fonts/anonymouspro-italic.woff +0 -0
  151. data/assets/fonts/anonymouspro-italic.woff2 +0 -0
  152. data/assets/fonts/anonymouspro-regular.woff +0 -0
  153. data/assets/fonts/anonymouspro-regular.woff2 +0 -0
  154. data/assets/fonts/notosans-bold.woff +0 -0
  155. data/assets/fonts/notosans-bold.woff2 +0 -0
  156. data/assets/fonts/notosans-bolditalic.woff +0 -0
  157. data/assets/fonts/notosans-bolditalic.woff2 +0 -0
  158. data/assets/fonts/notosans-italic.woff +0 -0
  159. data/assets/fonts/notosans-italic.woff2 +0 -0
  160. data/assets/fonts/notosans-regular.woff +0 -0
  161. data/assets/fonts/notosans-regular.woff2 +0 -0
  162. data/assets/images/.DS_Store +0 -0
  163. data/assets/images/Shape.svg +10 -0
  164. data/assets/images/icon-related-content.svg +14 -0
  165. data/assets/images/icons.svg +126 -0
  166. data/assets/images/teaser-image@1x.jpg +0 -0
  167. data/assets/images/teaser-image@2x.jpg +0 -0
  168. data/assets/images/w3c.sketch +0 -0
  169. data/assets/images/w3c.svg +10 -0
  170. data/assets/scripts/jquery.min.js +4 -0
  171. data/assets/scripts/main.js +208 -0
  172. data/assets/scripts/svg4everybody.js +1 -0
  173. metadata +257 -0
@@ -0,0 +1,180 @@
1
+ - key: "ARIA5"
2
+ desc: Using WAI-ARIA state and property attributes to expose the state of a user interface component
3
+ - key: "ARIA6"
4
+ desc: Using aria-label to provide labels for objects
5
+ - key: "ARIA11"
6
+ desc: Using ARIA landmarks to identify regions of a page
7
+ - key: "ARIA12"
8
+ desc: Using role=heading to identify headings
9
+ - key: "ARIA13"
10
+ desc: Using aria-labelledby to name regions and landmarks
11
+ - key: "ARIA17"
12
+ desc: Using grouping roles to identify related form controls
13
+ - key: "ARIA18"
14
+ desc: Using aria-alertdialog to Identify Errors
15
+ - key: "ARIA19"
16
+ desc: Using ARIA role=alert or Live Regions to Identify Errors
17
+ - key: "ARIA21"
18
+ desc: Using Aria-Invalid to Indicate An Error Field
19
+ - key: "C7"
20
+ desc: Using CSS to hide a portion of the link text
21
+ - key: "C12"
22
+ desc: Using percent for font sizes
23
+ - key: "C13"
24
+ desc: Using named font sizes
25
+ - key: "C14"
26
+ desc: Using em units for font sizes
27
+ - key: "C20"
28
+ desc: Using relative measurements to set column widths so that lines can average 80 characters or less when the browser is resized
29
+ - key: "C22"
30
+ desc: Using CSS to control visual presentation of text
31
+ - key: "C28"
32
+ desc: Specifying the size of text containers using em units
33
+ - key: "FLASH17"
34
+ desc: Providing keyboard access to a Flash object and avoiding a keyboard trap
35
+ - key: "G1"
36
+ desc: Adding a link at the top of each page that goes directly to the main content area
37
+ - key: "G14"
38
+ desc: Ensuring that information conveyed by color differences is also available in text
39
+ - key: "G17"
40
+ desc: Ensuring that a contrast ratio of at least 7:1 exists between text (and images of text) and background behind the text
41
+ - key: "G18"
42
+ desc: Ensuring that a contrast ratio of at least 4.5:1 exists between text (and images of text) and background behind the text
43
+ - key: "G21"
44
+ desc: Ensuring that users are not trapped in content
45
+ - key: "G59"
46
+ desc: Placing the interactive elements in an order that follows sequences and relationships within the content
47
+ - key: "G62"
48
+ desc: Providing a glossary
49
+ - key: "G63"
50
+ desc: Providing a site map
51
+ - key: "G64"
52
+ desc: Providing a Table of Contents
53
+ - key: "G65"
54
+ desc: Providing a breadcrumb trail
55
+ - key: "G73"
56
+ desc: Providing a long description in another location with a link to it that is immediately adjacent to the non-text content
57
+ - key: "G74"
58
+ desc: "Providing a long description in text near the non-text content, with a reference to the location of the long description in the short description"
59
+ - key: "G83"
60
+ desc: Providing text descriptions to identify required fields that were not completed
61
+ - key: "G85"
62
+ desc: Providing a text description when user input falls outside the required format or values
63
+ - key: "G90"
64
+ desc: Providing keyboard-triggered event handlers
65
+ - key: "G92"
66
+ desc: Providing long description for non-text content that serves the same purpose and presents the same information
67
+ - key: "G94"
68
+ desc: Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text content
69
+ - key: "G95"
70
+ desc: Providing short text alternatives that provide a brief description of the non-text content
71
+ - key: "G98"
72
+ desc: Providing the ability for the user to review and correct answers before submitting
73
+ - key: "G124"
74
+ desc: Adding links at the top of the page to each area of the content
75
+ - key: "G127"
76
+ desc: "Identifying a Web page’s relationship to a larger collection of Web pages"
77
+ - key: "G128"
78
+ desc: Indicating current location within navigation bars
79
+ - key: "G130"
80
+ desc: Providing descriptive headings
81
+ - key: "G131"
82
+ desc: Providing descriptive labels
83
+ - key: "G133"
84
+ desc: Providing a checkbox on the first page of a multipart form that allows users to ask for longer session time limit or no session time limit
85
+ - key: "G138"
86
+ desc: Using semantic markup whenever color cues are used
87
+ - key: "G141"
88
+ desc: Organizing a page using headings
89
+ - key: "G155"
90
+ desc: Providing a checkbox in addition to a submit button
91
+ - key: "G161"
92
+ desc: Providing a search function to help users find content
93
+ - key: "G162"
94
+ desc: Positioning labels to maximize predictability of relationships
95
+ - key: "G164"
96
+ desc: Providing a stated time within which an online request (or transaction) may be amended or canceled by the user after making the request
97
+ - key: "G167"
98
+ desc: Using an adjacent button to label the purpose of a field
99
+ - key: "G168"
100
+ desc: Requesting confirmation to continue with selected action
101
+ - key: "G179"
102
+ desc: Ensuring that there is no loss of content or functionality when the text resizes and text containers do not change their width
103
+ - key: "G180"
104
+ desc: Providing the user with a means to set the time limit to 10 times the default time limit
105
+ - key: "G182"
106
+ desc: Ensuring that additional visual cues are available when text color differences are used to convey information
107
+ - key: "G183"
108
+ desc: Using a contrast ratio of 3:1 with surrounding text and providing additional visual cues on focus for links or controls where color alone is used to identify them
109
+ - key: "G196"
110
+ desc: Using a text alternative on one item within a group of images that describes all items in the group
111
+ - key: "G198"
112
+ desc: Providing a way for the user to turn the time limit off
113
+ - key: "G202"
114
+ desc: Ensuring keyboard control for all functionality
115
+ - key: "H2"
116
+ desc: Combining adjacent image and text links for the same resource
117
+ - key: "H4"
118
+ desc: "Creating a logical tab order through links, form controls, and objects"
119
+ - key: "H24"
120
+ desc: Providing text alternatives for the area elements of image maps
121
+ - key: "H36"
122
+ desc: Using alt attributes on images used as submit buttons
123
+ - key: "H37"
124
+ desc: Using alt attributes on img elements
125
+ - key: "H39"
126
+ desc: Using caption elements to associate data table captions with data tables
127
+ - key: "H40"
128
+ desc: Using definition lists
129
+ - key: "H42"
130
+ desc: Using h1-h6 to identify headings
131
+ - key: "H43"
132
+ desc: Using id and headers attributes to associate data cells with header cells in data tables
133
+ - key: "H44"
134
+ desc: Using label elements to associate text labels with form controls
135
+ - key: "H45"
136
+ desc: Using longdesc
137
+ - key: "H48"
138
+ desc: 'Using ol, ul and dl for lists or groups of links'
139
+ - key: "H49"
140
+ desc: Using semantic markup to mark emphasized or special text
141
+ - key: "H51"
142
+ desc: Using table markup to present tabular data
143
+ - key: "H59"
144
+ desc: Using the link element and navigation tools
145
+ - key: "H63"
146
+ desc: Using the scope attribute to associate header cells and data cells in data tables
147
+ - key: "H65"
148
+ desc: Using the title attribute to identify form controls when the label element cannot be used
149
+ - key: "H67"
150
+ desc: Using null alt text and no title attribute on img elements for images that AT should ignore
151
+ - key: "H69"
152
+ desc: Providing heading elements at the beginning of each section of content
153
+ - key: "H71"
154
+ desc: Providing a description for groups of form controls using fieldset and legend elements
155
+ - key: "H73"
156
+ desc: Using the summary attribute of the table element
157
+ - key: "H80"
158
+ desc: Identifying the purpose of a link using link text combined with the preceding heading element
159
+ - key: "H85"
160
+ desc: Using OPTGROUP to group OPTION elements inside a SELECT
161
+ - key: "H91"
162
+ desc: Using HTML form controls and links
163
+ - key: "H93"
164
+ desc: Ensuring that id attributes are unique on a Web page
165
+ - key: "PDF9"
166
+ desc: Providing headings by marking content with heading tags in PDF documents
167
+ - key: "SCR1"
168
+ desc: Allowing the user to extend the default time limit
169
+ - key: "SCR2"
170
+ desc: Using redundant keyboard and mouse event handlers
171
+ - key: "SCR16"
172
+ desc: Providing a script that warns the user a time limit is about to expire
173
+ - key: "SCR20"
174
+ desc: Using both keyboard and other device-specific functions
175
+ - key: "SCR26"
176
+ desc: Inserting dynamic content into the Document Object Model immediately following its trigger element
177
+ - key: "SCR29"
178
+ desc: Adding keyboard-accessible actions to static HTML elements
179
+ - key: "SCR35"
180
+ desc: Making actions keyboard accessible by using the onclick event of anchors and buttons
data/_data/wcag.yml ADDED
@@ -0,0 +1,125 @@
1
+ - key: "1.1.1"
2
+ title: Non-text Content
3
+ desc: "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed[…]."
4
+ level: A
5
+ slug: text-equiv-all
6
+ - key: "1.3.1"
7
+ desc: "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text."
8
+ level: A
9
+ title: Info and Relationships
10
+ slug: content-structure-separation-programmatic
11
+ - key: "1.4.1"
12
+ desc: "Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element."
13
+ level: A
14
+ title: Use of Color
15
+ slug: visual-audio-contrast-without-color
16
+ - key: "1.4.3"
17
+ title: Contrast (Minimum)
18
+ desc: 'The visual presentation of text and images of text has a contrast ratio of at least 4.5:1, except for the following:<ul><li><strong>Large Text: </strong> Large-scale text and images of large-scale text have a contrast ratio of at least 3:1;</li><li><strong>Incidental: </strong> Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.</li><li><strong>Logotypes: </strong> Text that is part of a logo or brand name has no minimum contrast requirement.</li></ul>'
19
+ level: AA
20
+ slug: visual-audio-contrast-contrast
21
+ - key: "1.4.4"
22
+ title: Resize text
23
+ desc: 'Except for captions and images of text, text can be resized without assistive technology up to 200 percent without loss of content or functionality.'
24
+ level: AA
25
+ slug: visual-audio-contrast-scale
26
+ - key: "1.4.5"
27
+ title: Images of Text
28
+ desc: "If the technologies being used can achieve the visual presentation, text is used to convey information rather than images of text except [for customizable and essential images]"
29
+ level: AA
30
+ slug: visual-audio-contrast-text-presentation
31
+ - key: "1.4.6"
32
+ title: Contrast (Enhanced)
33
+ desc: 'The visual presentation of text and images of text has a contrast ratio of at least 7:1, except for the following:<ul><li><strong>Large Text: </strong> Large-scale text and images of large-scale text have a contrast ratio of at least 4.5:1;</li><li><strong>Incidental: </strong> Text or images of text that are part of an inactive user interface component, that are pure decoration, that are not visible to anyone, or that are part of a picture that contains significant other visual content, have no contrast requirement.</li><li><strong>Logotypes: </strong> Text that is part of a logo or brand name has no minimum contrast requirement.</li></ul>'
34
+ level: AAA
35
+ slug: visual-audio-contrast7
36
+ - key: "1.4.9"
37
+ title: Images of Text (No Exception)
38
+ desc: "Images of text are only used for pure decoration or where a particular presentation of text is essential to the information being conveyed"
39
+ level: AAA
40
+ slug: visual-audio-contrast-text-images
41
+ - key: "2.1.1"
42
+ title: Keyboard
43
+ desc: 'All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes, except where the underlying function requires input that depends on the path of the user’s movement and not just the endpoints.'
44
+ level: A
45
+ slug: keyboard-operation-keyboard-operable
46
+ - key: "2.1.2"
47
+ title: No Keyboard Trap
48
+ desc: 'If keyboard focus can be moved to a component of the page using a keyboard interface, then focus can be moved away from that component using only a keyboard interface, and, if it requires more than unmodified arrow or tab keys or other standard exit methods, the user is advised of the method for moving focus away.'
49
+ level: A
50
+ slug: keyboard-operation-trapping
51
+ - key: "2.1.3"
52
+ title: Keyboard (No Exception)
53
+ desc: All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes.
54
+ level: AAA
55
+ slug: keyboard-operation-all-funcs
56
+ - key: "2.2.1"
57
+ title: Timing Adjustable
58
+ desc: 'For each time limit that is set by the content, at least one of the following is true:<ul><li>Turn off: The user is allowed to turn off the time limit before encountering it; or</li>Adjust: The user is allowed to adjust the time limit before encountering it over a wide range that is at least ten times the length of the default setting; or</li><li>Extend: The user is warned before time expires and given at least 20 seconds to extend the time limit with a simple action (for example, "press the space bar"), and the user is allowed to extend the time limit at least ten times; or</li><li>Real-time Exception: The time limit is a required part of a real-time event (for example, an auction), and no alternative to the time limit is possible; or</li><li>Essential Exception: The time limit is essential and extending it would invalidate the activity; or</li><li>20 Hour Exception: The time limit is longer than 20 hours. </li></ul>'
59
+ level: A
60
+ slug: time-limits-required-behaviors
61
+ - key: "2.2.2"
62
+ title: "Pause, Stop, Hide"
63
+ desc: 'For moving, blinking, scrolling, or auto-updating information, all of the following are true:<ul><li><p><strong>Moving, blinking, scrolling: </strong>For any moving, blinking or scrolling information that (1) starts automatically, (2) lasts more than five seconds, and (3) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it unless the movement, blinking, or scrolling is part of an activity where it is essential; and</p></li><li><p><strong>Auto-updating: </strong>For any auto-updating information that (1) starts automatically and (2) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it or to control the frequency of the update unless the auto-updating is part of an activity where it is essential.</p></li></ul>'
64
+ level: A
65
+ slug: time-limits-pause
66
+ - key: "2.4.1"
67
+ title: "Bypass Blocks"
68
+ desc: 'A mechanism is available to bypass blocks of content that are repeated on multiple Web pages.'
69
+ level: A
70
+ slug: navigation-mechanisms-skip
71
+ - key: "2.4.3"
72
+ title: "Focus Order"
73
+ desc: 'If a Web page can be navigated sequentially and the navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability.'
74
+ level: A
75
+ slug: navigation-mechanisms-focus-order
76
+ - key: "2.4.5"
77
+ title: "Multiple Ways"
78
+ desc: "2.4.5 More than one way is available to locate a Web page within a set of Web pages except where the Web Page is the result of, or a step in, a process."
79
+ level: AA
80
+ slug: navigation-mechanisms-mult-loc
81
+ - key: "2.4.6"
82
+ title: "Headings and Labels"
83
+ desc: "Headings and labels describe topic or purpose."
84
+ level: AA
85
+ slug: navigation-mechanisms-descriptive
86
+ - key: "2.4.7"
87
+ title: "Focus Visible"
88
+ desc: "Any keyboard operable user interface has a mode of operation where the keyboard focus indicator is visible."
89
+ level: AA
90
+ slug: navigation-mechanisms-focus-visible
91
+ - key: "2.4.8"
92
+ title: "Location"
93
+ desc: "Information about the user's location within a set of Web pages is available."
94
+ level: AAA
95
+ slug: navigation-mechanisms-location
96
+ - key: "2.4.10"
97
+ title: "Section Headings"
98
+ desc: 'Section headings are used to organize the content.'
99
+ level: AAA
100
+ slug: navigation-mechanisms-headings
101
+ - key: "3.3.1"
102
+ title: "Error Identifications"
103
+ desc: "If an input error is automatically detected, the item that is in error is identified and the error is described to the user in text."
104
+ level: A
105
+ slug: minimize-error-identified
106
+ - key: "3.3.2"
107
+ title: "Labels or Instructions"
108
+ desc: "Labels or instructions are provided when content requires user input."
109
+ level: A
110
+ slug: minimize-error-cues
111
+ - key: "3.3.3"
112
+ title: "Error Suggestion"
113
+ desc: "If an input error is automatically detected and suggestions for correction are known, then the suggestions are provided to the user, unless it would jeopardize the security or purpose of the content."
114
+ level: AA
115
+ slug: minimize-error-suggestions
116
+ - key: "3.3.4"
117
+ title: Error Prevention (Legal, Financial, Data)
118
+ desc: "For Web pages that cause legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses, at least one of the following is true: Reversible, Checked, Confirmed"
119
+ level: AA
120
+ slug: minimize-error-reversible
121
+ - key: "4.1.2"
122
+ title: "Name, Role, Value"
123
+ desc: "For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies."
124
+ level: A
125
+ slug: ensure-compat-rsv
Binary file
@@ -0,0 +1 @@
1
+ {% if page.collection %}resource-{{page.collection | slugify}}{% endif %} page-{{page.title | slugify}}
@@ -0,0 +1,10 @@
1
+ {% if include.type == 'start' %}
2
+ {% assign classes = include.class | split: " " %}
3
+ <aside class="box{% for class in classes %} box-{{ class }}{% endfor %}"{% if include.id %} id="{{include.id}}"{% endif %}>
4
+ <header class="box-h {% for class in classes %} box-h-{{ class }}{% endfor %}{% if include.icon %} box-h-icon{% endif %}">{% if include.icon %} {% include_cached icon.html name=include.icon %}{% endif %}{% if include.h %} <h{{include.h}}>{% endif %} {{ include.title}}{% if include.h %} </h{{include.h}}>{% endif %}</header>
5
+ <div class="box-i">
6
+ {% endif %}
7
+ {% if include.type == 'end' %}
8
+ </div>
9
+ </aside>
10
+ {% endif %}
@@ -0,0 +1,13 @@
1
+ {% if include.type == 'start' %}
2
+ <details{%if include.id%} id="{{include.id}}"{% endif %} {%if include.open%}open{% endif %}><summary markdown="block">
3
+ {% else %}
4
+ {% if include.type == 'middle' %}
5
+ </summary>
6
+ <div markdown="block">
7
+ {% else %}
8
+ {% if include.type == 'end' %}
9
+ </div>
10
+ </details>
11
+ {% endif %}
12
+ {% endif %}
13
+ {% endif %}
@@ -0,0 +1,40 @@
1
+ {% assign col = site.collections | where: "label", page.collection | first %}
2
+ {% unless page.nopagefooter %}
3
+ <footer class="page-footer default-grid">
4
+ <div class="inner">
5
+ <p>
6
+ <strong>Updated:</strong> {{page.date | date: "%-d %B %Y"}}<br>
7
+ <strong>{{page.people.editorslabel}}:</strong> {% for p in page.people.editors%}<a href="{{p.url}}">{{p.name}}</a>{% if forloop.last %}.{% else %}, {% endif %}{% endfor %} <strong>Developed by the <a href="https://www.w3.org/WAI/EO/">Education and Outreach Working Group (EOWG)</a></strong>{% if page.support %} with support from {% for s in page.support%}{% unless forloop.first %}{% if forloop.last %}and {% endif %}{% endunless %}the <a href="{{s.url}}">{{s.name}}</a>{% if forloop.last %}.{% else %}, {% endif %}{% endfor %}{% endif %} {% if col.acknowledgements %}{% assign ackurl = page.collection | append: "/acknowledgements/" | prepend: site.github.url %}<a href="/{{ackurl}}">Acknowledgements</a>.{% endif %}
8
+ </p>
9
+ </div>
10
+ </footer>
11
+ {% endunless %}
12
+
13
+ <footer class="site-footer grid-4q">
14
+ <div class="q1-start q2-end">
15
+ <p><a class="largelink" href="https://w3.org/WAI/">Web Accessibility Initiative</a></p>
16
+ <p>Strategies, guidelines, resources to make the web accessible to people with disabilities</p>
17
+ <p>Copyright © 2017 W3C® (MIT, ERCIM, Keio, Beihang). Usage policies apply.</p>
18
+ </div>
19
+ <div class="q3-start q3-end">
20
+ <div class="footer-list-header">
21
+ Give Us Feedback
22
+ </div>
23
+ <ul>
24
+ <li><a href="#">Publicly Archived List</a></li>
25
+ <li><a href="#">WAI Staff-only List</a></li>
26
+ </ul>
27
+ </div>
28
+ <div class="q4-start q4-end">
29
+ <ul>
30
+ <li><a href="{{ site.github.url }}/wai/contact/">Contact WAI</a></li>
31
+ <li><a href="{{ site.github.url }}/sitemap/">Site Index</a></li>
32
+ <li><a href="{{ site.github.url }}/wai/get-involved/">Help with the WAI Website</a></li>
33
+ <li><a href="{{ site.github.url }}/privacy/">Privacy Statements</a></li>
34
+ </ul>
35
+ </div>
36
+ </footer>
37
+ <section class="default-grid info" tabindex="0">
38
+ <p class="inner">{% include_cached icon.html name="info" %} This is an unpublished draft preview. Please refer to our published website at <a href="https://www.w3.org/WAI/">w3.org/WAI/</a>.
39
+ </p>
40
+ </section>
@@ -0,0 +1,23 @@
1
+ <head>
2
+ <meta charset="utf-8">
3
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
4
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
5
+ <script>
6
+ document.documentElement.className = document.documentElement.className.replace('no-js', 'has-js');
7
+
8
+ function downloadJSAtOnload() {
9
+ var element = document.createElement("script");
10
+ element.src = "{{ "/assets/scripts/main.js" | prepend: site.github.url }}";
11
+ document.body.appendChild(element);
12
+ document.body.dataset.menuExpanded = 'false';
13
+ }
14
+
15
+ window.addEventListener("load", downloadJSAtOnload, false);
16
+ </script>
17
+
18
+ <link rel="stylesheet" href="{{ "/assets/css/style.css" | prepend: site.github.url }}">
19
+ {% if page.ext_css %}<link rel="stylesheet" href="{{ page.ext_css | prepend: '/css/' | prepend: page.collection | prepend: '/' | prepend: site.github.url }}">{% endif %}
20
+
21
+ <title>{{ page.title | escape }} | {{ site.title | escape }} | W3C</title>
22
+ {% seo title=false %}
23
+ </head>
@@ -0,0 +1,59 @@
1
+ <nav aria-label="Skip Link and Accessibility Options" id="controls" class="default-grid">
2
+ <ul>
3
+ <li><a href="#main">{% include_cached icon.html name="chevron-down" %} Skip to Content</a></li>
4
+ <li><a href="#">Change Text Size or Colors</a></li>
5
+ </ul>
6
+ </nav>
7
+ <header id="site-header" class="default-grid with-gap">
8
+ <a class="logos" href="{{ site.github.url }}/">
9
+ <img src="{{ "/assets/images/w3c.svg" | prepend: site.github.url }}" alt="W3C">
10
+ <span class="wai"><span class="wa">Web Accessibility</span> <span class="i">Initiative</span></span>
11
+ </a>
12
+
13
+ <div class="navigations">
14
+ <nav class="metanav" aria-label="Meta &amp; Search">
15
+ <ul>
16
+ <li><a href="{{ site.github.url }}/news/">News</a></li>
17
+ <li><a href="{{ site.github.url }}/wai/get-involved/">Get Involved</a></li>
18
+ <li><a href="{{ site.github.url }}/wai/about/">About W3C WAI</a></li>
19
+ <li>
20
+ <form action="https://duckduckgo.com/" role="search" onsubmit="document.querySelector('#header-search').value = document.querySelector('#header-search').value + ' site:w3c.github.io/wai-website/'">
21
+ <div>
22
+ <label for="header-search">
23
+ <span class="l">Search:</span>
24
+ <input id="header-search" type="search" name="q" placeholder="e.g. Tutorials">
25
+ </label>
26
+ <button class="button button-icon button-nobg button-noborder"><span>{% include_cached icon.html name="search" %}</span></button>
27
+ </div>
28
+ </form>
29
+ </li>
30
+ </ul>
31
+ </nav>
32
+ </div>
33
+ </header>
34
+ <nav class="mainnav" aria-label="Main">
35
+ {% include navlist.html data=site.data.navigation depth=1 %}
36
+ </nav>
37
+
38
+ {% unless page.url == "/" %}
39
+ <nav class="breadcrumb default-grid" aria-label="Breadcrumb">
40
+ <ul class="default-container">
41
+ <li><a href="{{ site.github.url }}/">Home</a></li>
42
+ {% capture page_url_without_index_html %}{{ page.url | remove: "/index.html" }}{% endcapture %}
43
+ {% assign splitted_url_parts = page_url_without_index_html | split: '/' %}
44
+ {% capture forLoopMaxInt %}{{ splitted_url_parts.size | minus:1 }}{% endcapture %}
45
+ {% for i in (1..forLoopMaxInt) %}
46
+ {% capture current_breadcrumb_url %}{{next_prepender}}/{{ splitted_url_parts[i] }}/{% endcapture %}
47
+ {% capture current_breadcrumb_md_url %}{{next_prepender}}/{{ splitted_url_parts[i] }}/{% endcapture %}
48
+ {% capture next_prepender %}{{next_prepender}}/{{ splitted_url_parts[i] }}{% endcapture %}
49
+ {% for breadcrumb_page in site.documents %}
50
+ {% if current_breadcrumb_url == breadcrumb_page.url %}
51
+ <li>
52
+ <a{% if current_breadcrumb_url == page.url%} aria-current="page"{%endif%} href="{{ site.github.url }}{{current_breadcrumb_url}}">{% if breadcrumb_page.breadcrumb_title%}{{breadcrumb_page.breadcrumb_title}}{% else %}{{breadcrumb_page.title}}{% endif %}</a>
53
+ </li>
54
+ {% endif %}
55
+ {% endfor %}
56
+ {% endfor %}
57
+ </ul>
58
+ </nav>
59
+ {% endunless %}
@@ -0,0 +1,6 @@
1
+ {% if include.name %}{%assign name = include.name%}{% else %}{% assign name="default" %}{% endif %}
2
+ {% if include.label %}
3
+ <svg aria-label="{{ include.label }}" class="icon-{{ name }} {{include.class}}"><use xlink:href="{{ "/assets/images/icons.svg" | prepend: site.github.url }}#icon-{{ name }}"></use></svg>
4
+ {% else %}
5
+ <svg aria-hidden="true" class="icon-{{ name }} {{include.class}}"><use xlink:href="{{ "/assets/images/icons.svg" | | prepend: site.github.url }}#icon-{{ name }}"></use></svg>
6
+ {% endif %}
@@ -0,0 +1,17 @@
1
+ {% assign url = "/img/" %}
2
+ {% if page.collection %}{% assign url = url | prepend: page.collection | prepend: '/' %}{% endif %}
3
+ {% assign url = url | prepend: site.github.url %}
4
+ {% if include.srcset %}
5
+ {% assign srcseturl = "/img/" %}
6
+ {% if page.collection %}{% assign srcseturl = srcseturl | prepend: page.collection | prepend: '/' %}{% endif %}
7
+ {% assign out = "" %}
8
+ {% assign srcsetsrces = include.srcset | split: ", " %}
9
+ {% for src in srcsetsrces %}
10
+ {% unless forloop.last %}
11
+ {% assign out = out | append: srcseturl | append: src | append: ", " %}
12
+ {% else %}
13
+ {% assign out = out | append: srcseturl | append: src %}
14
+ {% endunless%}
15
+ {% endfor %}
16
+ {% endif %}
17
+ <img src="{{url}}{{include.src}}"{% if include.srcset %} srcset="{{out}}"{% endif %} alt="{{include.alt}}"{% if include.class %} class="{% assign classes = include.class | split: " " %}{% for class in classes %} {{ class }}{% endfor %}"{% endif %}{% if include.float %} style="float: {{include.float}};"{% endif %}>
@@ -0,0 +1,29 @@
1
+ {% assign tsize = include.title | size %}
2
+ {% for t in include.title %}
3
+ {% if forloop.index == 1 %}
4
+ <ul class="sublang {% if include.class %} {{include.class}}{% endif %}">
5
+ {% endif %}
6
+ {% assign thislangurl = false %}
7
+ {% for u in include.url %}
8
+ {% if u[0] == t[0] %}
9
+ {% assign thislangurl = u[1] %}
10
+ {% endif %}
11
+ {% endfor %}
12
+
13
+ {% if thislangurl %}
14
+
15
+ {% assign lng = t[0]%}
16
+ <li lang="{{lng}}">
17
+ <span>{{site.data.lang[lng].name}}: </span>
18
+ <a href="{{thislangurl}}" hreflang="{{lng}}">
19
+ {{t[1]}}
20
+ {% unless lng == "en" %}
21
+ (<span lang="{{lng}}">{{site.data.lang[lng].nativeName}}</span>)
22
+ {% endunless %}
23
+ {% if include.external %}{% include_cached icon.html name="external-link" label="External Site" %}{% endif %} </a>
24
+ </li>
25
+
26
+ {% endif %}
27
+
28
+ {% if forloop.last %}</ul>{% endif %}
29
+ {% endfor %}
@@ -0,0 +1,35 @@
1
+ {%assign tsize = include.title | size%}
2
+ {% for t in include.title %}
3
+ {% if forloop.index == 2 %}
4
+ <ul class="sublang {% if include.class %} {{include.class}}{% endif %}">
5
+ {% endif %}
6
+ {% assign thislangurl = false %}
7
+ {% for u in include.url %}
8
+ {% if u[0] == t[0] %}
9
+ {% assign thislangurl = u[1] %}
10
+ {% endif %}
11
+ {% endfor %}
12
+
13
+ {% assign lng = t[0]%}
14
+ {% unless forloop.first %}<li lang="{{lng}}">{% endunless %}
15
+ {% if forloop.first %}{% if include.wrap %}<{{include.wrap}}{% if include.id %} id="{{include.id}}"{% endif %}{% if include.class %} class="{{include.class}}"{% endif %}>{% endif %}{% endif %}
16
+ {% unless lng == "en" %}
17
+ <span lang="en">{{site.data.lang[lng].name}}: </span>
18
+ {% endunless %}
19
+ {% if thislangurl %}
20
+ <a href="{{thislangurl}}" hreflang="{{lng}}">
21
+ {% endif %}
22
+ {{t[1]}}
23
+ {% unless lng == "en" %}
24
+ (<span lang="{{lng}}">{{site.data.lang[lng].nativeName}}</span>)
25
+ {% endunless %}
26
+ {% if thislangurl %}
27
+ {% if include.external %}{% include_cached icon.html name="external-link" label="External Site" %}{% endif %}</a>
28
+ {% endif %}
29
+ {% unless forloop.first %}</li>{% endunless %}
30
+ {% if forloop.first %}{% if include.wrap %}</{{include.wrap}}>{% endif %}{% endif %}
31
+
32
+ {% unless forloop.first %}
33
+ {% if forloop.last %}</ul>{% endif %}
34
+ {% endunless %}
35
+ {% endfor %}
@@ -0,0 +1,5 @@
1
+ {% for t in include.title %}
2
+ {% if t[0] == "en" %}
3
+ {{t[1]}}
4
+ {% endif %}
5
+ {% endfor %}
@@ -0,0 +1 @@
1
+ {%assign tsize = include.title | size%}{% if include.url %}<a href='{{include.url}}'>{% endif %}{% for t in include.title %}{% if t[0] == 'en' %}{{t[1]}}{% endif %}{% endfor %}{%if tsize > 1%}{% for t in include.title %}{% if forloop.first %} <span class='mlang'>({% endif %}{% unless t[0] == 'en' %}<span lang='{{t[0]}}'>{{t[1]}}</span>{% unless forloop.last %}, {% endunless %}{% endunless %}{% if forloop.last %})</span>{% endif %}{% endfor %}{% endif %}{% if include.url %}{% if include.external %}{% include_cached icon.html name="external-link" label="External Site" %}{% endif %}</a>{% endif %}
@@ -0,0 +1 @@
1
+ {%assign tsize = include.title | size%}{% for t in include.title %} {% if forloop.index == 2 %}<span class="subtitle">({% endif %}{% assign thislangurl = false %}{% for u in include.url %}{% if u[0] == t[0] %}{% assign thislangurl = u[1] %}{% endif %}{% endfor %}{% if thislangurl %}<a href="{{thislangurl}}" hreflang="{{t[0]}}">{% assign lng = t[0]%}{% unless lng == "en" %}[{{site.data.lang[lng].name}}/<span lang="{{lng}}">{{site.data.lang[lng].nativeName}}</span>] {% endunless %}<span lang="{{lng}}">{% else %}<span lang="{{t[0]}}">{% endif %}{{t[1]}}</span>{% if thislangurl %}{% if include.external %}{% include_cached icon.html name="external-link" label="External Site" %}{% endif %}</a>{% endif %}{% unless forloop.first %}{% unless forloop.last %}, {% endunless %}{% if forloop.last %})</span>{% endif %}{% endunless %}{% endfor %}
@@ -0,0 +1,22 @@
1
+ <ul{% if include.depth==2 %} class="subnavcontent"{% endif %}{% if include.depth==3 %} class="subsubnav"{% endif %}>
2
+ {% if include.depth==1 %}<li role="presentation"></li>{% endif %}
3
+ {% for item in include.data %}
4
+ {% if include.depth == 1 %}
5
+ {% assign the_url = item.name | slugify | prepend: "/sitemap/#" %}
6
+ {% else %}
7
+ {% assign the_url = item.url %}
8
+ {% endif %}
9
+ <li{% if item.pages %} class="has-submenu"{% endif %}>
10
+ <a{% if include.id %} id="{{item.name | slugify}}"{% endif %} href="{{ site.github.url }}{{the_url}}"><span>{{item.name}}{% comment %}{% if item.pages and include.depth > 1 %} {% include_cached icon.html name="chevron-right" %}{% endif %}{% endcomment %}</span></a>
11
+ {% if include.depth>1 %}
12
+ {% if item.pages %}{% assign newdepth = include.depth | plus: "1"%}{% include navlist.html data=item.pages depth=newdepth %}{% endif %}
13
+ {% endif %}
14
+ </li>
15
+ {% if include.depth==1 %}
16
+ <li role="presentation" class="subnav">
17
+ {% if item.pages %}{% assign newdepth = include.depth | plus: "1"%}{% include navlist.html data=item.pages depth=newdepth %}{% endif %}
18
+ </li>
19
+ {% endif %}
20
+ {% endfor %}
21
+ {% if include.depth==1 %}<li role="presentation"></li>{% endif %}
22
+ </ul>
@@ -0,0 +1,2 @@
1
+ {% if include.type == 'start' %}<aside class="notes">{% endif %}
2
+ {% if include.type == 'end' %}</aside>{% endif %}
@@ -0,0 +1,34 @@
1
+ {% if page.order %}
2
+ {% assign col = site.collections | where: "label", page.collection | first %}
3
+ {% if page.group %}
4
+ {% assign docs = col.docs | where: "group", page.group %}
5
+ {% else %}
6
+ {% assign docs = col.docs %}
7
+ {% endif %}
8
+ <nav class="pager" aria-label="Previous/Next Page">
9
+ <ul>
10
+ {% for p in docs %}{% assign tminus = page.order | minus: 1 %}{% if p.order == tminus %}
11
+ <li class="pager--item previous">
12
+ <a href="{{p.url | prepend: site.github.url }}">
13
+ {% include_cached icon.html name="arrow-left" class="pager--item-icon" %}
14
+ <span class="pager--item-text">
15
+ <span class="pager--item-text-direction">Previous:</span>
16
+ <span class="pager--item-text-target">{{p.title}}</span>
17
+ </span>
18
+ </a>
19
+ </li>
20
+ {% endif %}{% endfor %}
21
+ {% for p in docs %}{% assign tplus = page.order | plus: 1 %}{% if p.order == tplus %}
22
+ <li class="pager--item next">
23
+ <a href="{{p.url | prepend: site.github.url }}">
24
+ {% include_cached icon.html name="arrow-right" class="pager--item-icon" %}
25
+ <span class="pager--item-text">
26
+ <span class="pager--item-text-direction">Next:</span>
27
+ <span class="pager--item-text-target">{{p.title}}</span>
28
+ </span>
29
+ </a>
30
+ </li>
31
+ </ul>
32
+ {% endif %}{% endfor %}
33
+ </nav>
34
+ {% endif %}