@pnx-mixtape/mxds 0.1.0-rc.2 → 0.1.0-rc.4

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 (211) hide show
  1. package/.storybook/{preview.ts → preview.tsx} +4 -0
  2. package/.storybook/src/docs.tsx +29 -0
  3. package/dist/build/accordion.css +1 -1
  4. package/dist/build/accordion.entry.js +1 -1
  5. package/dist/build/autocomplete.css +1 -1
  6. package/dist/build/autocomplete.entry.js +1 -1
  7. package/dist/build/base.css +1 -1
  8. package/dist/build/breadcrumb.css +1 -1
  9. package/dist/build/button.css +1 -1
  10. package/dist/build/card.css +1 -1
  11. package/dist/build/carousel.css +1 -1
  12. package/dist/build/chunks/{Accordion-z-dH6nFH.js → Accordion-GN0sME4W.js} +1 -1
  13. package/dist/build/chunks/{AccordionMobile-BYPPNyf5.js → AccordionMobile-DG5jSe8Q.js} +1 -1
  14. package/dist/build/chunks/{Autocomplete-2L6tLLuh.js → Autocomplete-B4RtkAyh.js} +1 -1
  15. package/dist/build/chunks/{ClosableAlert-DdXbF1J2.js → ClosableAlert-DEhj8Nxm.js} +1 -1
  16. package/dist/build/chunks/{Dialog-Ds8gzhri.js → Dialog-Haahn-Yn.js} +1 -1
  17. package/dist/build/chunks/Gallery-D8NGXy2Q.js +1 -0
  18. package/dist/build/chunks/GlobalToggle-B52fdBQu.js +1 -0
  19. package/dist/build/chunks/{InPageNavigation-CVieEl9u.js → InPageNavigation-Dyn2TR-N.js} +1 -1
  20. package/dist/build/chunks/Navigation-hOrfLq7h.js +1 -0
  21. package/dist/build/chunks/{Sticky-cWUVSOXN.js → Sticky-BGCuuEJK.js} +1 -1
  22. package/dist/build/chunks/{Tabs-DA_Ez8pv.js → Tabs-DYy1YTdU.js} +1 -1
  23. package/dist/build/chunks/enums-DLV_1NAf.js +1 -0
  24. package/dist/build/chunks/utilities-_Bq3TxAQ.js +1 -0
  25. package/dist/build/constants.css +1 -1
  26. package/dist/build/cookie-consent.css +1 -1
  27. package/dist/build/dialog.css +1 -1
  28. package/dist/build/dialog.entry.js +1 -1
  29. package/dist/build/elements.js +1 -1
  30. package/dist/build/filters.css +1 -1
  31. package/dist/build/filters.entry.js +1 -1
  32. package/dist/build/form.css +1 -1
  33. package/dist/build/gallery.entry.js +1 -1
  34. package/dist/build/global-alert.css +1 -1
  35. package/dist/build/global-alert.entry.js +1 -1
  36. package/dist/build/grid.css +1 -1
  37. package/dist/build/header.css +1 -1
  38. package/dist/build/header.entry.js +1 -1
  39. package/dist/build/icon.css +1 -1
  40. package/dist/build/in-page-navigation.entry.js +1 -1
  41. package/dist/build/list-item.css +1 -1
  42. package/dist/build/navigation.css +1 -1
  43. package/dist/build/navigation.entry.js +1 -1
  44. package/dist/build/one-time-code.css +1 -0
  45. package/dist/build/popover.css +1 -1
  46. package/dist/build/print.css +1 -1
  47. package/dist/build/react.js +1 -1
  48. package/dist/build/steps.css +1 -1
  49. package/dist/build/sticky.entry.js +1 -1
  50. package/dist/build/tabs.css +1 -1
  51. package/dist/build/tabs.entry.js +1 -1
  52. package/dist/build/utilities.css +1 -1
  53. package/dist/types/Atom/Link/Link.d.ts.map +1 -1
  54. package/dist/types/Component/Accordion/Accordion.d.ts.map +1 -1
  55. package/dist/types/Component/Dialog/Dialog.d.ts.map +1 -1
  56. package/dist/types/Component/Filters/Elements/Filters.d.ts +20 -1
  57. package/dist/types/Component/Filters/Elements/Filters.d.ts.map +1 -1
  58. package/dist/types/Component/Filters/Filters.d.ts +7 -2
  59. package/dist/types/Component/Filters/Filters.d.ts.map +1 -1
  60. package/dist/types/Component/Gallery/Gallery.d.ts.map +1 -1
  61. package/dist/types/Component/Pagination/Components/PaginationContext.d.ts.map +1 -1
  62. package/dist/types/Component/Tabs/Tabs.d.ts.map +1 -1
  63. package/dist/types/Form/Autocomplete/Autocomplete.d.ts +2 -2
  64. package/dist/types/Form/Autocomplete/Autocomplete.d.ts.map +1 -1
  65. package/dist/types/Form/Autocomplete/Elements/Autocomplete.d.ts +10 -0
  66. package/dist/types/Form/Autocomplete/Elements/Autocomplete.d.ts.map +1 -1
  67. package/dist/types/Form/OneTimeCode/OneTimeCode.d.ts +12 -0
  68. package/dist/types/Form/OneTimeCode/OneTimeCode.d.ts.map +1 -0
  69. package/dist/types/Utility/Hooks/useIsomorphicLayoutEffect.d.ts +4 -0
  70. package/dist/types/Utility/Hooks/useIsomorphicLayoutEffect.d.ts.map +1 -0
  71. package/dist/types/enums.d.ts +4 -0
  72. package/dist/types/enums.d.ts.map +1 -1
  73. package/dist/types/react.d.ts +1 -0
  74. package/dist/types/react.d.ts.map +1 -1
  75. package/package.json +3 -3
  76. package/src/Atom/Button/__snapshots__/Button.stories.ts.snap +2 -3
  77. package/src/Atom/Button/_buttons.css +16 -0
  78. package/src/Atom/Button/button.twig +4 -1
  79. package/src/Atom/DefinitionList/DefinitionList.stories.ts +3 -0
  80. package/src/Atom/Icon/_icon.css +3 -0
  81. package/src/Atom/Link/Link.tsx +16 -3
  82. package/src/Atom/Link/__snapshots__/Link.stories.ts.snap +7 -12
  83. package/src/Atom/Link/__snapshots__/Link.stories.tsx.snap +1 -1
  84. package/src/Atom/Link/_links.css +9 -0
  85. package/src/Atom/Link/link.twig +8 -2
  86. package/src/Atom/LinkedImage/linked-image.twig +1 -2
  87. package/src/Atom/_generic.css +0 -10
  88. package/src/Component/Accordion/Accordion.stories.ts +31 -0
  89. package/src/Component/Accordion/Accordion.tsx +3 -2
  90. package/src/Component/Accordion/AccordionItem.stories.ts +27 -0
  91. package/src/Component/Accordion/__snapshots__/Accordion.stories.ts.snap +36 -0
  92. package/src/Component/Accordion/__snapshots__/AccordionItem.stories.ts.snap +16 -0
  93. package/src/Component/Accordion/accordion.css +3 -1
  94. package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.ts.snap +3 -6
  95. package/src/Component/Breadcrumb/breadcrumb.css +4 -0
  96. package/src/Component/Card/__snapshots__/Card.stories.ts.snap +11 -22
  97. package/src/Component/Card/card.css +2 -2
  98. package/src/Component/Carousel/Carousel.stories.ts +55 -0
  99. package/src/Component/Carousel/Carousel.stories.tsx +74 -0
  100. package/src/Component/Carousel/__snapshots__/Carousel.stories.ts.snap +273 -88
  101. package/src/Component/Carousel/__snapshots__/Carousel.stories.tsx.snap +5 -3
  102. package/src/Component/Carousel/carousel.css +1 -1
  103. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +12 -24
  104. package/src/Component/CookieConsent/cookie-consent.css +6 -1
  105. package/src/Component/Dialog/Dialog.stories.ts +33 -0
  106. package/src/Component/Dialog/Dialog.stories.tsx +25 -0
  107. package/src/Component/Dialog/Dialog.tsx +2 -2
  108. package/src/Component/Dialog/__snapshots__/Dialog.stories.ts.snap +33 -2
  109. package/src/Component/Dialog/__snapshots__/Dialog.stories.tsx.snap +2 -0
  110. package/src/Component/Dialog/dialog.css +5 -2
  111. package/src/Component/DropMenu/DropMenu.stories.ts +39 -1
  112. package/src/Component/DropMenu/DropMenu.stories.tsx +29 -0
  113. package/src/Component/DropMenu/DropMenu.tsx +1 -1
  114. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +14 -0
  115. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.tsx.snap +3 -1
  116. package/src/Component/Filters/Elements/Filters.ts +71 -1
  117. package/src/Component/Filters/FilterItem.stories.ts +2 -1
  118. package/src/Component/Filters/FilterItem.tsx +1 -1
  119. package/src/Component/Filters/Filters.figma.ts +1 -1
  120. package/src/Component/Filters/Filters.stories.ts +95 -3
  121. package/src/Component/Filters/Filters.stories.tsx +246 -17
  122. package/src/Component/Filters/Filters.tsx +145 -29
  123. package/src/Component/Filters/README.md +102 -37
  124. package/src/Component/Filters/__snapshots__/FilterItem.stories.tsx.snap +3 -3
  125. package/src/Component/Filters/__snapshots__/Filters.stories.ts.snap +82 -4
  126. package/src/Component/Filters/__snapshots__/Filters.stories.tsx.snap +9 -3
  127. package/src/Component/Filters/filters.css +11 -0
  128. package/src/Component/Gallery/Gallery.tsx +2 -2
  129. package/src/Component/GlobalAlert/global-alert.css +3 -0
  130. package/src/Component/HeroBanner/HeroBanner.stories.ts +1 -1
  131. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +4 -8
  132. package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.ts.snap +5 -10
  133. package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.ts.snap +6 -12
  134. package/src/Component/InPageNavigation/InPageNavigation.stories.ts +50 -0
  135. package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +78 -0
  136. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +35 -1
  137. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.tsx.snap +2 -0
  138. package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +6 -12
  139. package/src/Component/ListItem/__snapshots__/ListItem.stories.ts.snap +7 -14
  140. package/src/Component/ListItem/list-item.css +1 -1
  141. package/src/Component/Navigation/Dropdown.stories.tsx +46 -0
  142. package/src/Component/Navigation/Navigation.stories.ts +56 -0
  143. package/src/Component/Navigation/__snapshots__/Dropdown.stories.tsx.snap +2 -0
  144. package/src/Component/Navigation/__snapshots__/Navigation.stories.ts.snap +57 -0
  145. package/src/Component/Navigation/_navigation-collapsible.css +3 -1
  146. package/src/Component/Navigation/_navigation-dropdown.css +3 -1
  147. package/src/Component/Pagination/Components/PaginationContext.tsx +2 -1
  148. package/src/Component/Pagination/Components/PaginationItem.tsx +1 -1
  149. package/src/Component/Pagination/Pagination.stories.ts +36 -0
  150. package/src/Component/Pagination/Pagination.stories.tsx +31 -0
  151. package/src/Component/Pagination/__snapshots__/Pagination.stories.ts.snap +69 -12
  152. package/src/Component/Pagination/__snapshots__/Pagination.stories.tsx.snap +3 -1
  153. package/src/Component/Pagination/pagination-item.twig +1 -1
  154. package/src/Component/Popover/__snapshots__/Popover.stories.ts.snap +13 -26
  155. package/src/Component/Popover/popover.css +4 -2
  156. package/src/Component/SideNavigation/__snapshots__/SideNavigation.stories.ts.snap +1 -2
  157. package/src/Component/SocialLinks/__snapshots__/SocialLinks.stories.ts.snap +6 -9
  158. package/src/Component/Steps/Steps.stories.ts +1 -1
  159. package/src/Component/Steps/steps.css +13 -0
  160. package/src/Component/Tabs/Tabs.stories.ts +22 -0
  161. package/src/Component/Tabs/Tabs.stories.tsx +24 -0
  162. package/src/Component/Tabs/Tabs.tsx +2 -2
  163. package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +18 -0
  164. package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +3 -1
  165. package/src/Component/Tabs/tabs.css +6 -5
  166. package/src/Form/Autocomplete/Autocomplete.stories.ts +81 -4
  167. package/src/Form/Autocomplete/Autocomplete.stories.tsx +85 -1
  168. package/src/Form/Autocomplete/Autocomplete.tsx +19 -6
  169. package/src/Form/Autocomplete/Elements/Autocomplete.ts +24 -1
  170. package/src/Form/Autocomplete/__snapshots__/Autocomplete.stories.ts.snap +38 -4
  171. package/src/Form/Autocomplete/__snapshots__/Autocomplete.stories.tsx.snap +8 -4
  172. package/src/Form/Autocomplete/autocomplete.css +12 -1
  173. package/src/Form/Autocomplete/autocomplete.twig +1 -1
  174. package/src/Form/OneTimeCode/OneTimeCode.stories.ts +20 -0
  175. package/src/Form/OneTimeCode/OneTimeCode.stories.tsx +18 -0
  176. package/src/Form/OneTimeCode/OneTimeCode.tsx +56 -0
  177. package/src/Form/OneTimeCode/README.md +83 -0
  178. package/src/Form/OneTimeCode/__snapshots__/OneTimeCode.stories.ts.snap +7 -0
  179. package/src/Form/OneTimeCode/__snapshots__/OneTimeCode.stories.tsx.snap +3 -0
  180. package/src/Form/OneTimeCode/one-time-code.css +13 -0
  181. package/src/Form/OneTimeCode/one-time-code.twig +31 -0
  182. package/src/Form/__snapshots__/Validation.stories.ts.snap +1 -1
  183. package/src/Form/form.css +95 -35
  184. package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +18 -33
  185. package/src/Layout/Grid/Grid.stories.ts +1 -0
  186. package/src/Layout/Grid/Grid.stories.tsx +26 -0
  187. package/src/Layout/Grid/__snapshots__/Grid.stories.tsx.snap +2 -0
  188. package/src/Layout/Grid/grid.css +12 -0
  189. package/src/Layout/Header/Header.stories.ts +33 -0
  190. package/src/Layout/Header/Header.stories.tsx +31 -0
  191. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +50 -0
  192. package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +2 -0
  193. package/src/Layout/Header/_header.css +4 -2
  194. package/src/Layout/Header/_toggles.css +4 -1
  195. package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +8 -16
  196. package/src/Layout/Section/__snapshots__/Background.stories.ts.snap +2 -4
  197. package/src/Layout/Section/__snapshots__/Section.stories.ts.snap +4 -8
  198. package/src/Utility/Hooks/useIsomorphicLayoutEffect.ts +8 -0
  199. package/src/Utility/_mixins.css +46 -0
  200. package/src/Utility/print.css +1 -1
  201. package/src/Utility/utilities.css +20 -0
  202. package/src/_custom-media.css +3 -2
  203. package/src/constants.css +3 -13
  204. package/src/enums.ts +5 -0
  205. package/src/react.ts +1 -0
  206. package/tools/test-utils/screen-reader.ts +33 -0
  207. package/dist/build/chunks/Gallery-BT3cxS5m.js +0 -1
  208. package/dist/build/chunks/GlobalToggle-DQHho97V.js +0 -1
  209. package/dist/build/chunks/Navigation-B9Wug-ok.js +0 -1
  210. package/dist/build/chunks/disclosure-widget-BETzOHLO.js +0 -1
  211. package/dist/build/chunks/utilities-C5dAO2YA.js +0 -1
@@ -1,7 +1,13 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`Collapsible 1`] = `"<div class="mx-filters mx-filters--down"><details class="mx-accordion" open=""><summary class="mx-accordion__toggle mx-filters__title">Filters<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></summary><form class="mx-filters__form mx-vertical-flow" action="#"><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-keywords-container" aria-expanded="true">Keywords<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-keywords-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><div class="mx-form-item mx-accordion__content" id="filter-keywords"><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div></section></div><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-categories-container" aria-expanded="true">Categories<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-categories-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><fieldset class="mx-form-item mx-fieldset mx-accordion__content" id="filter-categories"><div class="mx-checkbox"><input id="_r_b_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_b_">News</label></div><div class="mx-checkbox"><input id="_r_e_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_e_">Media Releases</label></div><button class="mx-button mx-button--light" type="button">Show all (3)</button></fieldset></section></div><div class="mx-form-actions"><button type="submit" class="mx-button mx-button--dark">Apply filters</button><button type="reset" class="mx-button mx-button--light">Clear all filters</button></div></form></details></div>"`;
3
+ exports[`Collapsible 1`] = `"<div class="mx-filters mx-filters--down"><details class="mx-accordion" open=""><summary class="mx-accordion__toggle mx-filters__title">Filters<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></summary><form class="mx-filters__form mx-vertical-flow" action="#" aria-busy="false"><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-keywords-container" aria-expanded="true">Keywords<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-keywords-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><div class="mx-form-item mx-accordion__content" id="filter-keywords-item"><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div></section></div><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-categories-container" aria-expanded="true">Categories<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-categories-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><fieldset class="mx-form-item mx-fieldset mx-accordion__content" id="filter-categories-item"><div class="mx-checkbox"><input id="_r_b_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_b_">News</label></div><div class="mx-checkbox"><input id="_r_e_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_e_">Media Releases</label></div><button class="mx-button mx-button--light" type="button">Show all (3)</button></fieldset></section></div><div class="mx-form-actions"><button type="submit" class="mx-button mx-button--dark" disabled="">Apply filters</button><button type="reset" class="mx-button mx-button--light" disabled="">Clear all</button></div></form></details></div>"`;
4
4
 
5
- exports[`Default 1`] = `"<div class="mx-filters"><h2 class="mx-filters__title">Filters</h2><form class="mx-filters__form mx-vertical-flow" action="#"><div class="mx-form-item mx-filter-item" id="filter-keywords"><label class="mx-label" for="filter-keywords">Keywords</label><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div><fieldset class="mx-form-item mx-fieldset mx-filter-item" id="filter-categories"><legend class="mx-legend">Categories</legend><div class="mx-checkbox"><input id="_r_0_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_0_">News</label></div><div class="mx-checkbox"><input id="_r_3_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_3_">Media Releases</label></div><div class="mx-checkbox"><input id="_r_6_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="publications" name="categories"><label for="_r_6_">Publications</label></div></fieldset><div class="mx-form-actions"><button type="submit" class="mx-button mx-button--dark">Apply filters</button><button type="reset" class="mx-button mx-button--light">Clear all filters</button></div></form></div>"`;
5
+ exports[`Collapsible Right 1`] = `"<div class="mx-filters mx-filters--right"><details class="mx-accordion" open=""><summary class="mx-accordion__toggle mx-filters__title">Filters<span class="mx-icon mx-icon--chevron-right" aria-hidden="true"></span></summary><form class="mx-filters__form mx-vertical-flow" action="#" aria-busy="false"><span data-focus-scope-start="true" hidden=""></span><div class="mx-filters__title">Filters<button class="mx-button mx-button--icon-only mx-icon mx-icon--close" type="button">Close filters</button></div><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-keywords-container" aria-expanded="true">Keywords<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-keywords-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><div class="mx-form-item mx-accordion__content" id="filter-keywords-item"><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div></section></div><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-categories-container" aria-expanded="true">Categories<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-categories-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><fieldset class="mx-form-item mx-fieldset mx-accordion__content" id="filter-categories-item"><div class="mx-checkbox"><input id="_r_j_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_j_">News</label></div><div class="mx-checkbox"><input id="_r_m_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_m_">Media Releases</label></div><button class="mx-button mx-button--light" type="button">Show all (3)</button></fieldset></section></div><div class="mx-form-actions"><button type="submit" class="mx-button mx-button--dark" disabled="">Apply filters</button><button type="reset" class="mx-button mx-button--light" disabled="">Clear all</button></div><span data-focus-scope-end="true" hidden=""></span></form></details></div>"`;
6
6
 
7
- exports[`With Counter 1`] = `"<div class="mx-filters mx-filters--down"><details class="mx-accordion" open=""><summary class="mx-accordion__toggle mx-filters__title">Filters<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></summary><form class="mx-filters__form mx-vertical-flow" action="#"><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-keywords-container" aria-expanded="true">Keywords<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-keywords-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><div class="mx-form-item mx-accordion__content" id="filter-keywords"><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div></section></div><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-categories-container" aria-expanded="true">Categories<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-categories-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><fieldset class="mx-form-item mx-fieldset mx-accordion__content" id="filter-categories"><div class="mx-checkbox"><input id="_r_j_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_j_">News</label></div><div class="mx-checkbox"><input id="_r_m_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_m_">Media Releases</label></div><button class="mx-button mx-button--light" type="button">Show all (3)</button></fieldset></section></div><div class="mx-form-actions"><button type="submit" class="mx-button mx-button--dark">Apply filters</button><button type="reset" class="mx-button mx-button--light">Clear all filters</button></div></form></details></div>"`;
7
+ exports[`Default 1`] = `"<div class="mx-filters mx-filters--down"><h2 class="mx-filters__title">Filters</h2><form class="mx-filters__form mx-vertical-flow" action="#" aria-busy="false"><div class="mx-form-item mx-filter-item" id="filter-keywords-item"><label class="mx-label" for="filter-keywords">Keywords</label><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div><fieldset class="mx-form-item mx-fieldset mx-filter-item" id="filter-categories-item"><legend class="mx-legend">Categories</legend><div class="mx-checkbox"><input id="_r_0_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_0_">News</label></div><div class="mx-checkbox"><input id="_r_3_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_3_">Media Releases</label></div><div class="mx-checkbox"><input id="_r_6_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="publications" name="categories"><label for="_r_6_">Publications</label></div></fieldset><div class="mx-form-actions"><button type="submit" class="mx-button mx-button--dark" disabled="">Apply filters</button><button type="reset" class="mx-button mx-button--light" disabled="">Clear all</button></div></form></div>"`;
8
+
9
+ exports[`Instant 1`] = `"<div class="mx-filters mx-filters--down mx-filters--auto"><h2 class="mx-filters__title">Filters</h2><form class="mx-filters__form mx-vertical-flow" action="#" aria-busy="false"><div class="mx-form-item mx-filter-item" id="filter-keywords-item"><label class="mx-label" for="filter-keywords">Keywords</label><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div><fieldset class="mx-form-item mx-fieldset mx-filter-item" id="filter-categories-item"><legend class="mx-legend">Categories</legend><div class="mx-checkbox"><input id="_r_11_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_11_">News</label></div><div class="mx-checkbox"><input id="_r_14_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_14_">Media Releases</label></div><div class="mx-checkbox"><input id="_r_17_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="publications" name="categories"><label for="_r_17_">Publications</label></div></fieldset><div class="mx-form-actions"><button type="reset" class="mx-button mx-button--light" disabled="">Clear all</button></div></form></div>"`;
10
+
11
+ exports[`Pending 1`] = `"<div class="mx-filters mx-filters--down"><h2 class="mx-filters__title">Filters</h2><form class="mx-filters__form mx-vertical-flow" action="#" aria-busy="false"><div class="mx-form-item mx-filter-item" id="filter-keywords-item"><label class="mx-label" for="filter-keywords">Keywords</label><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div><fieldset class="mx-form-item mx-fieldset mx-filter-item" id="filter-categories-item"><legend class="mx-legend">Categories</legend><div class="mx-checkbox"><input id="_r_1a_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_1a_">News</label></div><div class="mx-checkbox"><input id="_r_1d_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_1d_">Media Releases</label></div><div class="mx-checkbox"><input id="_r_1g_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="publications" name="categories"><label for="_r_1g_">Publications</label></div></fieldset><div class="mx-form-actions"><button type="submit" class="mx-button mx-button--dark">Apply filters</button><button type="reset" class="mx-button mx-button--light">Clear all</button></div></form></div>"`;
12
+
13
+ exports[`With Counter 1`] = `"<div class="mx-filters mx-filters--down"><h2 class="mx-filters__title">Filters</h2><form class="mx-filters__form mx-vertical-flow" action="#" aria-busy="false"><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-keywords-container" aria-expanded="true">Keywords<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-keywords-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><div class="mx-form-item mx-accordion__content" id="filter-keywords-item"><div id="help-filter-keywords" class="mx-description">Search by keywords</div><input class="mx-input__text" id="filter-keywords" aria-describedby="help-filter-keywords" aria-invalid="false" aria-label="Keywords" type="text" value="" name="keywords"></div></section></div><div class="mx-accordion mx-filter-item" data-open="true"><button type="button" class="mx-accordion__toggle" id="filter-categories-container" aria-expanded="true">Categories<span class="mx-icon mx-icon--chevron-down" aria-hidden="true"></span></button><section aria-labelledby="filter-categories-container" class="mx-accordion__content mx-rich-text mx-vertical-flow"><fieldset class="mx-form-item mx-fieldset mx-accordion__content" id="filter-categories-item"><div class="mx-checkbox"><input id="_r_r_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="news" name="categories"><label for="_r_r_">News</label></div><div class="mx-checkbox"><input id="_r_u_" data-react-aria-pressable="true" tabindex="0" type="checkbox" value="media-releases" name="categories"><label for="_r_u_">Media Releases</label></div><button class="mx-button mx-button--light" type="button">Show all (3)</button></fieldset></section></div><div class="mx-form-actions"><button type="submit" class="mx-button mx-button--dark" disabled="">Apply filters</button><button type="reset" class="mx-button mx-button--light" disabled="">Clear all</button></div></form></div>"`;
@@ -73,6 +73,7 @@
73
73
  display: flex;
74
74
  gap: var(--spacing-s);
75
75
  align-items: center;
76
+ min-block-size: var(--spacing-m);
76
77
 
77
78
  & .mx-icon {
78
79
  margin-inline-start: auto;
@@ -82,6 +83,16 @@
82
83
  & :is(.mx-input__text, .mx-input__select, .mx-input__textarea) {
83
84
  inline-size: 100%;
84
85
  }
86
+
87
+ &[aria-busy="true"] {
88
+ position: relative;
89
+
90
+ &::after {
91
+ position: absolute;
92
+ inset-block-end: var(--spinner-size, var(--spacing-xs));
93
+ inset-inline-end: 0;
94
+ }
95
+ }
85
96
  }
86
97
 
87
98
  .mx-filter-item .mx-accordion__content {
@@ -6,13 +6,13 @@ import {
6
6
  createContext,
7
7
  use,
8
8
  useCallback,
9
- useEffect,
10
9
  useId,
11
10
  useMemo,
12
11
  useRef,
13
12
  useState,
14
13
  } from "react"
15
14
  import classNames from "classnames"
15
+ import useIsomorphicLayoutEffect from "../../Utility/Hooks/useIsomorphicLayoutEffect"
16
16
  import Dialog from "../Dialog/Dialog"
17
17
  import DialogContent from "../Dialog/Components/DialogContent"
18
18
  import DialogCloseButton from "../Dialog/Components/DialogCloseButton"
@@ -55,7 +55,7 @@ const Gallery = ({
55
55
  // Runs after Dialog's own effect has already called showModal() (child
56
56
  // effects flush before the parent's), so the carousel is laid out and
57
57
  // scrollIntoView measures correctly.
58
- useEffect(() => {
58
+ useIsomorphicLayoutEffect(() => {
59
59
  if (!open) return
60
60
  const slide = findActiveSlide(contentRef.current, activeIndex)
61
61
  if (!slide) return
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Messages
3
3
  */
4
+ @import "../../Utility/_mixins.css";
4
5
 
5
6
  @layer design-system.defaults {
6
7
  mx-closable-alert {
@@ -11,6 +12,8 @@
11
12
  @layer design-system.components {
12
13
  /* @public --alert-background --alert-foreground --alert-scheme */
13
14
  .mx-global-alert {
15
+ @add-mixin transition;
16
+
14
17
  background-color: var(--alert-background, var(--colour-primary-light));
15
18
  color: var(--alert-foreground, var(--colour-foreground));
16
19
  color-scheme: var(--alert-scheme, light);
@@ -39,7 +39,7 @@ const meta: Meta<HeroBannerType> = {
39
39
  },
40
40
  argTypes: {
41
41
  modifiers: {
42
- description: "Controls the background colour",
42
+ description: "Controls the background colour (only one applies)",
43
43
  options: Object.values(HeroBannerModifier),
44
44
  control: "check",
45
45
  table: {
@@ -36,8 +36,7 @@ exports[`Highlight 1`] = `
36
36
 
37
37
  <a href="#" class="mx-link--more">
38
38
 
39
- <span>Find out more</span>
40
-
39
+ Find out more
41
40
  </a>
42
41
 
43
42
  </div>
@@ -73,24 +72,21 @@ exports[`With Link List 1`] = `
73
72
 
74
73
  <li><a href="#">
75
74
 
76
- <span>Link one</span>
77
-
75
+ Link one
78
76
  <span class="mx-icon mx-icon--chevron-right"></span>
79
77
 
80
78
  </a>
81
79
  </li>
82
80
  <li><a href="#">
83
81
 
84
- <span>Link two</span>
85
-
82
+ Link two
86
83
  <span class="mx-icon mx-icon--chevron-right"></span>
87
84
 
88
85
  </a>
89
86
  </li>
90
87
  <li><a href="#">
91
88
 
92
- <span>Link three</span>
93
-
89
+ Link three
94
90
  <span class="mx-icon mx-icon--chevron-right"></span>
95
91
 
96
92
  </a>
@@ -82,40 +82,35 @@ exports[`With Link List 1`] = `
82
82
 
83
83
  <li><a href="#">
84
84
 
85
- <span>Link one</span>
86
-
85
+ Link one
87
86
  <span class="mx-icon mx-icon--chevron-right"></span>
88
87
 
89
88
  </a>
90
89
  </li>
91
90
  <li><a href="#">
92
91
 
93
- <span>Link two</span>
94
-
92
+ Link two
95
93
  <span class="mx-icon mx-icon--chevron-right"></span>
96
94
 
97
95
  </a>
98
96
  </li>
99
97
  <li><a href="#">
100
98
 
101
- <span>Link three</span>
102
-
99
+ Link three
103
100
  <span class="mx-icon mx-icon--chevron-right"></span>
104
101
 
105
102
  </a>
106
103
  </li>
107
104
  <li><a href="#">
108
105
 
109
- <span>Link four</span>
110
-
106
+ Link four
111
107
  <span class="mx-icon mx-icon--chevron-right"></span>
112
108
 
113
109
  </a>
114
110
  </li>
115
111
  <li><a href="#">
116
112
 
117
- <span>Link five</span>
118
-
113
+ Link five
119
114
  <span class="mx-icon mx-icon--chevron-right"></span>
120
115
 
121
116
  </a>
@@ -9,8 +9,7 @@ exports[`Error 1`] = `
9
9
 
10
10
  <a href="#">
11
11
 
12
- <span>Click here</span>
13
-
12
+ Click here
14
13
  </a>
15
14
 
16
15
  </div>
@@ -27,8 +26,7 @@ exports[`In Page Alert 1`] = `
27
26
 
28
27
  <a href="#">
29
28
 
30
- <span>Click here</span>
31
-
29
+ Click here
32
30
  </a>
33
31
 
34
32
  </div>
@@ -45,8 +43,7 @@ exports[`Info 1`] = `
45
43
 
46
44
  <a href="#">
47
45
 
48
- <span>Click here</span>
49
-
46
+ Click here
50
47
  </a>
51
48
 
52
49
  </div>
@@ -63,8 +60,7 @@ exports[`Success 1`] = `
63
60
 
64
61
  <a href="#">
65
62
 
66
- <span>Click here</span>
67
-
63
+ Click here
68
64
  </a>
69
65
 
70
66
  </div>
@@ -81,8 +77,7 @@ exports[`Warning 1`] = `
81
77
 
82
78
  <a href="#">
83
79
 
84
- <span>Click here</span>
85
-
80
+ Click here
86
81
  </a>
87
82
 
88
83
  </div>
@@ -101,8 +96,7 @@ exports[`With Heading 1`] = `
101
96
 
102
97
  <a href="#">
103
98
 
104
- <span>Click here</span>
105
-
99
+ Click here
106
100
  </a>
107
101
 
108
102
  </div>
@@ -12,6 +12,7 @@ import Heading from "../../Atom/Heading/heading.twig"
12
12
  import Link from "../../Atom/Link/link.twig"
13
13
  import Icon from "../../Atom/Icon/icon.twig"
14
14
  import { Icons } from "../../enums"
15
+ import { runScreenReaderWalkthrough } from "../../../tools/test-utils/screen-reader"
15
16
 
16
17
  /**
17
18
  * A table of contents with anchor links to the headings.
@@ -92,6 +93,55 @@ type Story = StoryObj<InPageNavigationType>
92
93
 
93
94
  export const InPageNavigation: Story = {}
94
95
 
96
+ /**
97
+ * Steps a virtual screen reader through the page and asserts on what it announces.
98
+ */
99
+ export const ScreenReaderAnnouncements: Story = {
100
+ play: async () => {
101
+ const log = await runScreenReaderWalkthrough()
102
+ await expect(log).toEqual([
103
+ "document",
104
+ "navigation",
105
+ "heading, On this page, level 2",
106
+ "list",
107
+ "listitem, level 1, position 1, set size 3",
108
+ "link, Section 1",
109
+ "Section 1",
110
+ "end of link, Section 1",
111
+ "end of listitem, level 1, position 1, set size 3",
112
+ "listitem, level 1, position 2, set size 3",
113
+ "link, Section 2",
114
+ "Section 2",
115
+ "end of link, Section 2",
116
+ "end of listitem, level 1, position 2, set size 3",
117
+ "listitem, level 1, position 3, set size 3",
118
+ "link, Section 3",
119
+ "Section 3",
120
+ "end of link, Section 3",
121
+ "end of listitem, level 1, position 3, set size 3",
122
+ "end of list",
123
+ "end of navigation",
124
+ "heading, Section 1, level 2",
125
+ "paragraph",
126
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
127
+ "end of paragraph",
128
+ "heading, Section 2, level 2",
129
+ "paragraph",
130
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
131
+ "end of paragraph",
132
+ "heading, Test level 3, level 3",
133
+ "paragraph",
134
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
135
+ "end of paragraph",
136
+ "heading, Section 3, level 2",
137
+ "paragraph",
138
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
139
+ "end of paragraph",
140
+ "end of document",
141
+ ])
142
+ },
143
+ }
144
+
95
145
  /**
96
146
  * When the `items` are empty, the Javascript builds the list and heading.
97
147
  */
@@ -6,6 +6,7 @@ import Component from "./InPageNavigation"
6
6
  import "./in-page-navigation.css"
7
7
  import { Page } from "../../../.storybook-react/decorators"
8
8
  import { expect } from "storybook/test"
9
+ import { runScreenReaderWalkthrough } from "../../../tools/test-utils/screen-reader"
9
10
 
10
11
  const meta: Meta<typeof Component> = {
11
12
  tags: ["autodocs"],
@@ -128,3 +129,80 @@ export const IdenticalHeadings: StoryObj<typeof Component> = {
128
129
  })
129
130
  },
130
131
  }
132
+
133
+ /**
134
+ * Steps a virtual screen reader through the page and asserts on what it announces.
135
+ *
136
+ * Kept as the last story in this file - see the note on ordering in
137
+ * `docs/Testing.md`'s Automated Screen Reader Testing section.
138
+ */
139
+ export const ScreenReaderAnnouncements: StoryObj<typeof Component> = {
140
+ play: async () => {
141
+ const log = await runScreenReaderWalkthrough()
142
+ await expect(log).toEqual([
143
+ "document",
144
+ "navigation",
145
+ "heading, On this page, level 2",
146
+ "list",
147
+ "listitem, level 1, position 1, set size 8",
148
+ "link, Section 1",
149
+ "end of listitem, level 1, position 1, set size 8",
150
+ "listitem, level 1, position 2, set size 8",
151
+ "link, Section 2",
152
+ "end of listitem, level 1, position 2, set size 8",
153
+ "listitem, level 1, position 3, set size 8",
154
+ "link, Test level 3",
155
+ "end of listitem, level 1, position 3, set size 8",
156
+ "listitem, level 1, position 4, set size 8",
157
+ "link, Section 3",
158
+ "end of listitem, level 1, position 4, set size 8",
159
+ "listitem, level 1, position 5, set size 8",
160
+ "link, Section 4",
161
+ "end of listitem, level 1, position 5, set size 8",
162
+ "listitem, level 1, position 6, set size 8",
163
+ "link, Section 5",
164
+ "end of listitem, level 1, position 6, set size 8",
165
+ "listitem, level 1, position 7, set size 8",
166
+ "link, Test level 6",
167
+ "end of listitem, level 1, position 7, set size 8",
168
+ "listitem, level 1, position 8, set size 8",
169
+ "link, Section 7",
170
+ "end of listitem, level 1, position 8, set size 8",
171
+ "end of list",
172
+ "end of navigation",
173
+ "heading, Section 1, level 2",
174
+ "paragraph",
175
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
176
+ "end of paragraph",
177
+ "heading, Section 2, level 2",
178
+ "paragraph",
179
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
180
+ "end of paragraph",
181
+ "heading, Test level 3, level 3",
182
+ "paragraph",
183
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
184
+ "end of paragraph",
185
+ "heading, Section 3, level 2",
186
+ "paragraph",
187
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
188
+ "end of paragraph",
189
+ "heading, Section 4, level 2",
190
+ "paragraph",
191
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
192
+ "end of paragraph",
193
+ "heading, Section 5, level 2",
194
+ "paragraph",
195
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
196
+ "end of paragraph",
197
+ "heading, Test level 6, level 3",
198
+ "paragraph",
199
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
200
+ "end of paragraph",
201
+ "heading, Section 7, level 2",
202
+ "paragraph",
203
+ "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.",
204
+ "end of paragraph",
205
+ "end of document",
206
+ ])
207
+ },
208
+ }
@@ -44,7 +44,16 @@ exports[`Identical Headings 1`] = `
44
44
 
45
45
  exports[`In Page Navigation 1`] = `
46
46
  "<mx-in-page-navigation data-content=".js-content" data-levels="" data-title="On this page">
47
- <nav class="mx-nav mx-nav--list mx-in-page-navigation mx-vertical-flow"><h2 class="is-excluded mx-heading--m">On this page</h2><ul><li><a href="#section-1"><span class="mx-icon mx-icon--chevron-right"></span><span>Section 1</span></a></li><li><a href="#section-2"><span class="mx-icon mx-icon--chevron-right"></span><span>Section 2</span></a></li><li><a href="#section-3"><span class="mx-icon mx-icon--chevron-right"></span><span>Section 3</span></a></li></ul></nav></mx-in-page-navigation>
47
+ <nav class="mx-nav mx-nav--list mx-in-page-navigation mx-vertical-flow"><h2 class="is-excluded mx-heading--m">On this page</h2><ul><li><a href="#section-1"><span class="mx-icon mx-icon--chevron-right"></span>
48
+
49
+ Section 1
50
+ </a></li><li><a href="#section-2"><span class="mx-icon mx-icon--chevron-right"></span>
51
+
52
+ Section 2
53
+ </a></li><li><a href="#section-3"><span class="mx-icon mx-icon--chevron-right"></span>
54
+
55
+ Section 3
56
+ </a></li></ul></nav></mx-in-page-navigation>
48
57
  <div class="js-content mx-rich-text mx-vertical-flow">
49
58
  <h2 id="section-1">Section 1</h2>
50
59
  <p>In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
@@ -107,3 +116,28 @@ exports[`Other Container 1`] = `
107
116
  </div>
108
117
  "
109
118
  `;
119
+
120
+ exports[`Screen Reader Announcements 1`] = `
121
+ "<mx-in-page-navigation data-content=".js-content" data-levels="" data-title="On this page">
122
+ <nav class="mx-nav mx-nav--list mx-in-page-navigation mx-vertical-flow"><h2 class="is-excluded mx-heading--m">On this page</h2><ul><li><a href="#section-1"><span class="mx-icon mx-icon--chevron-right"></span>
123
+
124
+ Section 1
125
+ </a></li><li><a href="#section-2"><span class="mx-icon mx-icon--chevron-right"></span>
126
+
127
+ Section 2
128
+ </a></li><li><a href="#section-3"><span class="mx-icon mx-icon--chevron-right"></span>
129
+
130
+ Section 3
131
+ </a></li></ul></nav></mx-in-page-navigation>
132
+ <div class="js-content mx-rich-text mx-vertical-flow">
133
+ <h2 id="section-1">Section 1</h2>
134
+ <p>In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
135
+ <h2 id="section-2">Section 2</h2>
136
+ <p>In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
137
+ <h3 id="test-level-3">Test level 3</h3>
138
+ <p>In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
139
+ <h2 id="section-3">Section 3</h2>
140
+ <p>In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p>
141
+ </div>
142
+ "
143
+ `;
@@ -3,3 +3,5 @@
3
3
  exports[`Identical Headings 1`] = `"<div class="mx-vertical-flow"><nav class="mx-in-page-navigation mx-nav mx-nav--list mx-vertical-flow"><h2 class="mx-heading--m" id="on-this-page">On this page</h2><ul><li class="mx-in-page-navigation__level--h2"><a href="#identical-heading" class="mx-icon mx-icon--chevron-right">Identical heading</a></li><li class="mx-in-page-navigation__level--h2"><a href="#identical-heading-1" class="mx-icon mx-icon--chevron-right">Identical heading</a></li><li class="mx-in-page-navigation__level--h2"><a href="#identical-heading-2" class="mx-icon mx-icon--chevron-right">Identical heading</a></li></ul></nav><section class="mx-vertical-flow mx-rich-text"><h2 class="" id="identical-heading">Identical heading</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="identical-heading-1">Identical heading</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="identical-heading-2">Identical heading</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p></section></div>"`;
4
4
 
5
5
  exports[`In Page Navigation 1`] = `"<div class="mx-vertical-flow"><nav class="mx-in-page-navigation mx-nav mx-nav--list mx-vertical-flow"><h2 class="mx-heading--m" id="on-this-page">On this page</h2><ul><li class="mx-in-page-navigation__level--h2"><a href="#section-1" class="mx-icon mx-icon--chevron-right">Section 1</a></li><li class="mx-in-page-navigation__level--h2"><a href="#anchor-test" class="mx-icon mx-icon--chevron-right">Section 2</a></li><li class="mx-in-page-navigation__level--h3"><a href="#test-level-3" class="mx-icon mx-icon--chevron-right">Test level 3</a></li><li class="mx-in-page-navigation__level--h2"><a href="#section-3" class="mx-icon mx-icon--chevron-right">Section 3</a></li><li class="mx-in-page-navigation__level--h2"><a href="#section-4" class="mx-icon mx-icon--chevron-right">Section 4</a></li><li class="mx-in-page-navigation__level--h2"><a href="#section-5" class="mx-icon mx-icon--chevron-right">Section 5</a></li><li class="mx-in-page-navigation__level--h3"><a href="#test-level-6" class="mx-icon mx-icon--chevron-right">Test level 6</a></li><li class="mx-in-page-navigation__level--h2"><a href="#section-7" class="mx-icon mx-icon--chevron-right">Section 7</a></li></ul></nav><section class="mx-vertical-flow mx-rich-text"><h2 class="" id="section-1">Section 1</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="anchor-test">Section 2</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h3 class="" id="test-level-3">Test level 3</h3><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="section-3">Section 3</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="section-4">Section 4</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="section-5">Section 5</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h3 class="" id="test-level-6">Test level 6</h3><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="section-7">Section 7</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p></section></div>"`;
6
+
7
+ exports[`Screen Reader Announcements 1`] = `"<div class="mx-vertical-flow"><nav class="mx-in-page-navigation mx-nav mx-nav--list mx-vertical-flow"><h2 class="mx-heading--m" id="on-this-page">On this page</h2><ul><li class="mx-in-page-navigation__level--h2"><a href="#section-1" class="mx-icon mx-icon--chevron-right">Section 1</a></li><li class="mx-in-page-navigation__level--h2"><a href="#anchor-test" class="mx-icon mx-icon--chevron-right">Section 2</a></li><li class="mx-in-page-navigation__level--h3"><a href="#test-level-3" class="mx-icon mx-icon--chevron-right">Test level 3</a></li><li class="mx-in-page-navigation__level--h2"><a href="#section-3" class="mx-icon mx-icon--chevron-right">Section 3</a></li><li class="mx-in-page-navigation__level--h2"><a href="#section-4" class="mx-icon mx-icon--chevron-right">Section 4</a></li><li class="mx-in-page-navigation__level--h2"><a href="#section-5" class="mx-icon mx-icon--chevron-right">Section 5</a></li><li class="mx-in-page-navigation__level--h3"><a href="#test-level-6" class="mx-icon mx-icon--chevron-right">Test level 6</a></li><li class="mx-in-page-navigation__level--h2"><a href="#section-7" class="mx-icon mx-icon--chevron-right">Section 7</a></li></ul></nav><section class="mx-vertical-flow mx-rich-text"><h2 class="" id="section-1">Section 1</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="anchor-test">Section 2</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h3 class="" id="test-level-3">Test level 3</h3><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="section-3">Section 3</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="section-4">Section 4</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="section-5">Section 5</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h3 class="" id="test-level-6">Test level 6</h3><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p><h2 class="" id="section-7">Section 7</h2><p class="">In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced.</p></section></div>"`;
@@ -7,24 +7,21 @@ exports[`Link List 1`] = `
7
7
 
8
8
  <li><a href="#">
9
9
 
10
- <span>Music</span>
11
-
10
+ Music
12
11
  <span class="mx-icon mx-icon--chevron-right"></span>
13
12
 
14
13
  </a>
15
14
  </li>
16
15
  <li><a href="#">
17
16
 
18
- <span>Performances</span>
19
-
17
+ Performances
20
18
  <span class="mx-icon mx-icon--chevron-right"></span>
21
19
 
22
20
  </a>
23
21
  </li>
24
22
  <li><a href="#">
25
23
 
26
- <span>Get involved</span>
27
-
24
+ Get involved
28
25
  <span class="mx-icon mx-icon--chevron-right"></span>
29
26
 
30
27
  </a>
@@ -42,24 +39,21 @@ exports[`With Title 1`] = `
42
39
 
43
40
  <li><a href="#">
44
41
 
45
- <span>Music</span>
46
-
42
+ Music
47
43
  <span class="mx-icon mx-icon--chevron-right"></span>
48
44
 
49
45
  </a>
50
46
  </li>
51
47
  <li><a href="#">
52
48
 
53
- <span>Performances</span>
54
-
49
+ Performances
55
50
  <span class="mx-icon mx-icon--chevron-right"></span>
56
51
 
57
52
  </a>
58
53
  </li>
59
54
  <li><a href="#">
60
55
 
61
- <span>Get involved</span>
62
-
56
+ Get involved
63
57
  <span class="mx-icon mx-icon--chevron-right"></span>
64
58
 
65
59
  </a>