@pnx-mixtape/mxds 0.1.0-rc.1 → 0.1.0-rc.3

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 (344) hide show
  1. package/.storybook/decorators.ts +15 -0
  2. package/.storybook/{preview.ts → preview.tsx} +8 -1
  3. package/.storybook/src/docs.tsx +29 -0
  4. package/.storybook/themes/campus-vibrant.css +181 -0
  5. package/.storybook/themes/civic-formal.css +246 -0
  6. package/.storybook/{theme-demo.css → themes/demo.css} +14 -7
  7. package/.storybook/themes/health-services.css +255 -0
  8. package/.storybook/themes/research-faculty.css +169 -0
  9. package/dist/build/accordion.css +1 -1
  10. package/dist/build/accordion.entry.js +1 -1
  11. package/dist/build/autocomplete.css +1 -1
  12. package/dist/build/autocomplete.entry.js +1 -1
  13. package/dist/build/base.css +1 -1
  14. package/dist/build/breadcrumb.css +1 -1
  15. package/dist/build/button.css +1 -1
  16. package/dist/build/card.css +1 -1
  17. package/dist/build/chunks/{Accordion-z-dH6nFH.js → Accordion-GN0sME4W.js} +1 -1
  18. package/dist/build/chunks/{AccordionMobile-BYPPNyf5.js → AccordionMobile-DG5jSe8Q.js} +1 -1
  19. package/dist/build/chunks/{Autocomplete-2L6tLLuh.js → Autocomplete-B4RtkAyh.js} +1 -1
  20. package/dist/build/chunks/{ClosableAlert-DdXbF1J2.js → ClosableAlert-DEhj8Nxm.js} +1 -1
  21. package/dist/build/chunks/{Dialog-Ds8gzhri.js → Dialog-Haahn-Yn.js} +1 -1
  22. package/dist/build/chunks/DropMenu-1baQc8Yc.js +1 -0
  23. package/dist/build/chunks/Gallery-D8NGXy2Q.js +1 -0
  24. package/dist/build/chunks/GlobalToggle-B52fdBQu.js +1 -0
  25. package/dist/build/chunks/InPageNavigation-Dyn2TR-N.js +1 -0
  26. package/dist/build/chunks/Navigation-hOrfLq7h.js +1 -0
  27. package/dist/build/chunks/Popover-Cxg-s5Jn.js +1 -0
  28. package/dist/build/chunks/Sticky-BGCuuEJK.js +1 -0
  29. package/dist/build/chunks/Tabs-DYy1YTdU.js +15 -0
  30. package/dist/build/chunks/enums-DLV_1NAf.js +1 -0
  31. package/dist/build/chunks/polyfills-C7pRt54M.js +1 -0
  32. package/dist/build/chunks/utilities-_Bq3TxAQ.js +1 -0
  33. package/dist/build/constants.css +1 -1
  34. package/dist/build/cookie-consent.css +1 -1
  35. package/dist/build/dialog.entry.js +1 -1
  36. package/dist/build/drop-menu.entry.js +1 -1
  37. package/dist/build/elements.js +1 -1
  38. package/dist/build/filters.css +1 -1
  39. package/dist/build/filters.entry.js +1 -1
  40. package/dist/build/form.css +1 -1
  41. package/dist/build/gallery.entry.js +1 -1
  42. package/dist/build/global-alert.entry.js +1 -1
  43. package/dist/build/grid.css +1 -1
  44. package/dist/build/header.entry.js +1 -1
  45. package/dist/build/icon.css +1 -1
  46. package/dist/build/in-page-alert.css +1 -1
  47. package/dist/build/in-page-navigation.entry.js +1 -1
  48. package/dist/build/list-item.css +1 -1
  49. package/dist/build/navigation.css +1 -1
  50. package/dist/build/navigation.entry.js +1 -1
  51. package/dist/build/one-time-code.css +1 -0
  52. package/dist/build/popover.css +1 -1
  53. package/dist/build/popover.entry.js +1 -1
  54. package/dist/build/print.css +1 -1
  55. package/dist/build/progress-indicator.css +1 -0
  56. package/dist/build/react.js +1 -1
  57. package/dist/build/sidebar.css +1 -1
  58. package/dist/build/steps.css +1 -1
  59. package/dist/build/sticky.entry.js +1 -1
  60. package/dist/build/tabs.css +1 -1
  61. package/dist/build/tabs.entry.js +1 -1
  62. package/dist/build/tag.css +1 -1
  63. package/dist/build/utilities.css +1 -1
  64. package/dist/types/Atom/DefinitionList/DefinitionList.d.ts +3 -2
  65. package/dist/types/Atom/DefinitionList/DefinitionList.d.ts.map +1 -1
  66. package/dist/types/Atom/Heading/Heading.d.ts.map +1 -1
  67. package/dist/types/Atom/Link/Link.d.ts.map +1 -1
  68. package/dist/types/Atom/List/List.d.ts +10 -0
  69. package/dist/types/Atom/List/List.d.ts.map +1 -0
  70. package/dist/types/Component/Accordion/Accordion.d.ts.map +1 -1
  71. package/dist/types/Component/Dialog/Dialog.d.ts.map +1 -1
  72. package/dist/types/Component/DropMenu/Elements/DropMenu.d.ts.map +1 -1
  73. package/dist/types/Component/Filters/Elements/Filters.d.ts +20 -1
  74. package/dist/types/Component/Filters/Elements/Filters.d.ts.map +1 -1
  75. package/dist/types/Component/Filters/Filters.d.ts +7 -2
  76. package/dist/types/Component/Filters/Filters.d.ts.map +1 -1
  77. package/dist/types/Component/Gallery/Gallery.d.ts.map +1 -1
  78. package/dist/types/Component/InPageNavigation/Elements/InPageNavigation.d.ts +2 -2
  79. package/dist/types/Component/InPageNavigation/Elements/InPageNavigation.d.ts.map +1 -1
  80. package/dist/types/Component/InPageNavigation/Hooks/useInPageNavigation.d.ts.map +1 -1
  81. package/dist/types/Component/Pagination/Components/PaginationContext.d.ts.map +1 -1
  82. package/dist/types/Component/ProgressIndicator/ProgressIndicator.d.ts +9 -0
  83. package/dist/types/Component/ProgressIndicator/ProgressIndicator.d.ts.map +1 -0
  84. package/dist/types/Component/Tabs/Elements/Tabs.d.ts.map +1 -1
  85. package/dist/types/Component/Tabs/Tabs.d.ts.map +1 -1
  86. package/dist/types/Component/Tag/Tag.d.ts +4 -2
  87. package/dist/types/Component/Tag/Tag.d.ts.map +1 -1
  88. package/dist/types/Form/Autocomplete/Autocomplete.d.ts +2 -2
  89. package/dist/types/Form/Autocomplete/Autocomplete.d.ts.map +1 -1
  90. package/dist/types/Form/Autocomplete/Elements/Autocomplete.d.ts +10 -0
  91. package/dist/types/Form/Autocomplete/Elements/Autocomplete.d.ts.map +1 -1
  92. package/dist/types/Form/Checkbox/FormCheckbox.d.ts.map +1 -1
  93. package/dist/types/Form/CheckboxCard/CheckboxCard.d.ts +23 -0
  94. package/dist/types/Form/CheckboxCard/CheckboxCard.d.ts.map +1 -0
  95. package/dist/types/Form/OneTimeCode/OneTimeCode.d.ts +12 -0
  96. package/dist/types/Form/OneTimeCode/OneTimeCode.d.ts.map +1 -0
  97. package/dist/types/Form/Radio/FormRadio.d.ts.map +1 -1
  98. package/dist/types/Form/RadioCard/RadioCard.d.ts +16 -0
  99. package/dist/types/Form/RadioCard/RadioCard.d.ts.map +1 -0
  100. package/dist/types/Form/Select/FormSelect.d.ts.map +1 -1
  101. package/dist/types/Form/TextInput/FormText.d.ts.map +1 -1
  102. package/dist/types/Form/Textarea/FormTextarea.d.ts.map +1 -1
  103. package/dist/types/Utility/Hooks/useIsomorphicLayoutEffect.d.ts +4 -0
  104. package/dist/types/Utility/Hooks/useIsomorphicLayoutEffect.d.ts.map +1 -0
  105. package/dist/types/enums.d.ts +19 -0
  106. package/dist/types/enums.d.ts.map +1 -1
  107. package/dist/types/react.d.ts +5 -0
  108. package/dist/types/react.d.ts.map +1 -1
  109. package/package.json +8 -8
  110. package/src/Atom/Background/_background.css +2 -2
  111. package/src/Atom/Blockquote/_blockquote.css +9 -2
  112. package/src/Atom/Button/README.md +1 -0
  113. package/src/Atom/Button/__snapshots__/Button.stories.ts.snap +2 -3
  114. package/src/Atom/Button/_buttons-styles.css +6 -6
  115. package/src/Atom/Button/_buttons.css +21 -3
  116. package/src/Atom/Button/button.twig +4 -1
  117. package/src/Atom/DefinitionList/DefinitionList.stories.ts +42 -2
  118. package/src/Atom/DefinitionList/DefinitionList.stories.tsx +36 -0
  119. package/src/Atom/DefinitionList/DefinitionList.tsx +4 -1
  120. package/src/Atom/DefinitionList/DefinitionListItem.stories.ts +1 -1
  121. package/src/Atom/DefinitionList/README.md +43 -0
  122. package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.ts.snap +37 -3
  123. package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.tsx.snap +2 -0
  124. package/src/Atom/DefinitionList/__snapshots__/DefinitionListItem.stories.ts.snap +3 -3
  125. package/src/Atom/DefinitionList/definition-list-item.twig +1 -0
  126. package/src/Atom/DefinitionList/definition-list.twig +6 -1
  127. package/src/Atom/Heading/Heading.tsx +6 -0
  128. package/src/Atom/Heading/_headings.css +2 -1
  129. package/src/Atom/Icon/_extended-set.css +30 -30
  130. package/src/Atom/Icon/_icon.css +39 -36
  131. package/src/Atom/Image/README.md +2 -2
  132. package/src/Atom/Image/_image.css +12 -6
  133. package/src/Atom/Link/Link.tsx +16 -3
  134. package/src/Atom/Link/__snapshots__/Link.stories.ts.snap +7 -12
  135. package/src/Atom/Link/__snapshots__/Link.stories.tsx.snap +1 -1
  136. package/src/Atom/Link/_links.css +9 -0
  137. package/src/Atom/Link/link.twig +8 -2
  138. package/src/Atom/LinkedImage/linked-image.twig +1 -2
  139. package/src/Atom/List/List.stories.ts +102 -0
  140. package/src/Atom/List/List.stories.tsx +103 -0
  141. package/src/Atom/List/List.tsx +22 -0
  142. package/src/Atom/List/README.md +150 -0
  143. package/src/Atom/List/__snapshots__/List.stories.ts.snap +43 -0
  144. package/src/Atom/List/__snapshots__/List.stories.tsx.snap +13 -0
  145. package/src/Atom/List/_list.css +123 -0
  146. package/src/Atom/List/list.twig +5 -0
  147. package/src/Atom/Media/Media.stories.ts +1 -1
  148. package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +2 -2
  149. package/src/Atom/Spacing/_spacing.css +24 -24
  150. package/src/Atom/Table/__snapshots__/Table.stories.ts.snap +24 -4
  151. package/src/Atom/Table/_table.css +15 -3
  152. package/src/Atom/Table/table.twig +6 -1
  153. package/src/Atom/Text/__snapshots__/Text.stories.ts.snap +3 -2
  154. package/src/Atom/Text/_text-styles.css +21 -1
  155. package/src/Atom/Text/twig/text-styles-example.twig +3 -2
  156. package/src/Atom/_base.css +6 -0
  157. package/src/Atom/_flow.css +1 -1
  158. package/src/Atom/_generic.css +18 -11
  159. package/src/Component/Accordion/Accordion.stories.ts +31 -0
  160. package/src/Component/Accordion/Accordion.tsx +3 -2
  161. package/src/Component/Accordion/AccordionItem.stories.ts +27 -0
  162. package/src/Component/Accordion/__snapshots__/Accordion.stories.ts.snap +36 -0
  163. package/src/Component/Accordion/__snapshots__/AccordionItem.stories.ts.snap +16 -0
  164. package/src/Component/Accordion/accordion.css +2 -0
  165. package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.ts.snap +3 -6
  166. package/src/Component/Breadcrumb/breadcrumb.css +4 -0
  167. package/src/Component/Card/__snapshots__/Card.stories.ts.snap +13 -24
  168. package/src/Component/Card/card.css +2 -2
  169. package/src/Component/Card/card.twig +1 -1
  170. package/src/Component/Carousel/Carousel.stories.ts +101 -23
  171. package/src/Component/Carousel/Carousel.stories.tsx +74 -0
  172. package/src/Component/Carousel/__snapshots__/Carousel.stories.ts.snap +273 -88
  173. package/src/Component/Carousel/__snapshots__/Carousel.stories.tsx.snap +5 -3
  174. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +12 -24
  175. package/src/Component/CookieConsent/cookie-consent.css +3 -1
  176. package/src/Component/Dialog/Dialog.stories.ts +33 -0
  177. package/src/Component/Dialog/Dialog.stories.tsx +25 -0
  178. package/src/Component/Dialog/Dialog.tsx +2 -2
  179. package/src/Component/Dialog/__snapshots__/Dialog.stories.ts.snap +33 -2
  180. package/src/Component/Dialog/__snapshots__/Dialog.stories.tsx.snap +2 -0
  181. package/src/Component/DropMenu/DropMenu.stories.ts +39 -1
  182. package/src/Component/DropMenu/DropMenu.stories.tsx +29 -0
  183. package/src/Component/DropMenu/DropMenu.tsx +1 -1
  184. package/src/Component/DropMenu/Elements/DropMenu.ts +10 -1
  185. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +14 -0
  186. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.tsx.snap +3 -1
  187. package/src/Component/Filters/Elements/Filters.ts +71 -1
  188. package/src/Component/Filters/FilterItem.stories.ts +2 -1
  189. package/src/Component/Filters/FilterItem.tsx +1 -1
  190. package/src/Component/Filters/Filters.figma.ts +1 -1
  191. package/src/Component/Filters/Filters.stories.ts +95 -3
  192. package/src/Component/Filters/Filters.stories.tsx +246 -17
  193. package/src/Component/Filters/Filters.tsx +145 -29
  194. package/src/Component/Filters/README.md +102 -37
  195. package/src/Component/Filters/__snapshots__/FilterItem.stories.tsx.snap +3 -3
  196. package/src/Component/Filters/__snapshots__/Filters.stories.ts.snap +82 -4
  197. package/src/Component/Filters/__snapshots__/Filters.stories.tsx.snap +9 -3
  198. package/src/Component/Filters/filters.css +11 -0
  199. package/src/Component/Gallery/Gallery.tsx +2 -2
  200. package/src/Component/HeroBanner/HeroBanner.stories.ts +1 -1
  201. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +4 -8
  202. package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.ts.snap +5 -10
  203. package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.ts.snap +6 -12
  204. package/src/Component/InPageAlert/in-page-alert.css +2 -1
  205. package/src/Component/InPageNavigation/Elements/InPageNavigation.ts +10 -5
  206. package/src/Component/InPageNavigation/Hooks/useInPageNavigation.ts +10 -5
  207. package/src/Component/InPageNavigation/InPageNavigation.stories.ts +83 -0
  208. package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +130 -0
  209. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +61 -1
  210. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.tsx.snap +4 -0
  211. package/src/Component/InPageNavigation/twig/content-example-duplicate-headings.twig +20 -0
  212. package/src/Component/InPageNavigation/twig/in-page-navigation-story-duplicate-headings.twig +2 -0
  213. package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +6 -12
  214. package/src/Component/ListItem/__snapshots__/ListItem.stories.ts.snap +11 -18
  215. package/src/Component/ListItem/list-item.css +1 -1
  216. package/src/Component/ListItem/list-item.twig +2 -2
  217. package/src/Component/Navigation/Dropdown.stories.tsx +46 -0
  218. package/src/Component/Navigation/Navigation.stories.ts +56 -0
  219. package/src/Component/Navigation/__snapshots__/Dropdown.stories.tsx.snap +2 -0
  220. package/src/Component/Navigation/__snapshots__/Navigation.stories.ts.snap +57 -0
  221. package/src/Component/Navigation/_navigation.css +1 -1
  222. package/src/Component/Pagination/Components/PaginationContext.tsx +2 -1
  223. package/src/Component/Pagination/Components/PaginationItem.tsx +1 -1
  224. package/src/Component/Pagination/Pagination.stories.ts +44 -4
  225. package/src/Component/Pagination/Pagination.stories.tsx +31 -0
  226. package/src/Component/Pagination/__snapshots__/Pagination.stories.ts.snap +69 -12
  227. package/src/Component/Pagination/__snapshots__/Pagination.stories.tsx.snap +3 -1
  228. package/src/Component/Pagination/pagination-item.twig +1 -1
  229. package/src/Component/Pagination/pagination.css +2 -2
  230. package/src/Component/Popover/__snapshots__/Popover.stories.ts.snap +13 -26
  231. package/src/Component/Popover/popover.css +1 -1
  232. package/src/Component/ProgressIndicator/ProgressIndicator.stories.ts +36 -0
  233. package/src/Component/ProgressIndicator/ProgressIndicator.stories.tsx +30 -0
  234. package/src/Component/ProgressIndicator/ProgressIndicator.tsx +60 -0
  235. package/src/Component/ProgressIndicator/README.md +111 -0
  236. package/src/Component/ProgressIndicator/__snapshots__/ProgressIndicator.stories.ts.snap +67 -0
  237. package/src/Component/ProgressIndicator/__snapshots__/ProgressIndicator.stories.tsx.snap +7 -0
  238. package/src/Component/ProgressIndicator/progress-indicator.css +59 -0
  239. package/src/Component/ProgressIndicator/progress-indicator.twig +22 -0
  240. package/src/Component/SideNavigation/__snapshots__/SideNavigation.stories.ts.snap +1 -2
  241. package/src/Component/SocialLinks/__snapshots__/SocialLinks.stories.ts.snap +6 -9
  242. package/src/Component/Steps/Steps.stories.ts +1 -1
  243. package/src/Component/Steps/steps.css +13 -0
  244. package/src/Component/Sticky/Elements/Sticky.ts +1 -1
  245. package/src/Component/Sticky/sticky.css +3 -3
  246. package/src/Component/Tabs/Elements/Tabs.ts +3 -1
  247. package/src/Component/Tabs/Tabs.stories.ts +77 -21
  248. package/src/Component/Tabs/Tabs.stories.tsx +24 -0
  249. package/src/Component/Tabs/Tabs.tsx +2 -2
  250. package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +20 -2
  251. package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +3 -1
  252. package/src/Component/Tabs/tabs.css +2 -0
  253. package/src/Component/Tag/README.md +52 -26
  254. package/src/Component/Tag/Tag.stories.tsx +24 -0
  255. package/src/Component/Tag/Tag.tsx +12 -2
  256. package/src/Component/Tag/TagItem.stories.ts +25 -0
  257. package/src/Component/Tag/__snapshots__/Tag.stories.ts.snap +2 -2
  258. package/src/Component/Tag/__snapshots__/Tag.stories.tsx.snap +2 -0
  259. package/src/Component/Tag/tag-item.twig +2 -2
  260. package/src/Component/Tag/tag.css +76 -2
  261. package/src/Form/Autocomplete/Autocomplete.stories.ts +89 -7
  262. package/src/Form/Autocomplete/Autocomplete.stories.tsx +85 -1
  263. package/src/Form/Autocomplete/Autocomplete.tsx +20 -10
  264. package/src/Form/Autocomplete/Elements/Autocomplete.ts +24 -1
  265. package/src/Form/Autocomplete/README.md +26 -26
  266. package/src/Form/Autocomplete/__snapshots__/Autocomplete.stories.ts.snap +39 -5
  267. package/src/Form/Autocomplete/__snapshots__/Autocomplete.stories.tsx.snap +8 -4
  268. package/src/Form/Autocomplete/autocomplete.css +12 -1
  269. package/src/Form/Autocomplete/autocomplete.twig +1 -3
  270. package/src/Form/Checkbox/FormCheckbox.tsx +2 -8
  271. package/src/Form/Checkbox/README.md +23 -18
  272. package/src/Form/Checkbox/input-checkbox.twig +0 -2
  273. package/src/Form/CheckboxCard/CheckboxCard.stories.ts +90 -0
  274. package/src/Form/CheckboxCard/CheckboxCard.stories.tsx +43 -0
  275. package/src/Form/CheckboxCard/CheckboxCard.tsx +102 -0
  276. package/src/Form/CheckboxCard/README.md +163 -0
  277. package/src/Form/CheckboxCard/__snapshots__/CheckboxCard.stories.ts.snap +63 -0
  278. package/src/Form/CheckboxCard/__snapshots__/CheckboxCard.stories.tsx.snap +7 -0
  279. package/src/Form/CheckboxCard/checkbox-card.twig +29 -0
  280. package/src/Form/FormItem/__snapshots__/FormItem.stories.ts.snap +2 -2
  281. package/src/Form/OneTimeCode/OneTimeCode.stories.ts +20 -0
  282. package/src/Form/OneTimeCode/OneTimeCode.stories.tsx +18 -0
  283. package/src/Form/OneTimeCode/OneTimeCode.tsx +56 -0
  284. package/src/Form/OneTimeCode/README.md +83 -0
  285. package/src/Form/OneTimeCode/__snapshots__/OneTimeCode.stories.ts.snap +7 -0
  286. package/src/Form/OneTimeCode/__snapshots__/OneTimeCode.stories.tsx.snap +3 -0
  287. package/src/Form/OneTimeCode/one-time-code.css +13 -0
  288. package/src/Form/OneTimeCode/one-time-code.twig +31 -0
  289. package/src/Form/README.md +65 -13
  290. package/src/Form/Radio/FormRadio.tsx +1 -4
  291. package/src/Form/Radio/input-radio.twig +0 -2
  292. package/src/Form/RadioCard/README.md +146 -0
  293. package/src/Form/RadioCard/RadioCard.stories.ts +95 -0
  294. package/src/Form/RadioCard/RadioCard.stories.tsx +26 -0
  295. package/src/Form/RadioCard/RadioCard.tsx +59 -0
  296. package/src/Form/RadioCard/__snapshots__/RadioCard.stories.ts.snap +69 -0
  297. package/src/Form/RadioCard/__snapshots__/RadioCard.stories.tsx.snap +3 -0
  298. package/src/Form/RadioCard/radio-card.twig +20 -0
  299. package/src/Form/Select/FormSelect.tsx +1 -4
  300. package/src/Form/Select/input-select.twig +0 -2
  301. package/src/Form/TextInput/FormText.stories.tsx +14 -0
  302. package/src/Form/TextInput/FormText.tsx +1 -4
  303. package/src/Form/TextInput/__snapshots__/FormText.stories.tsx.snap +2 -0
  304. package/src/Form/TextInput/input-text.twig +0 -2
  305. package/src/Form/Textarea/FormTextarea.tsx +1 -4
  306. package/src/Form/Textarea/input-textarea.twig +0 -2
  307. package/src/Form/Validation.stories.ts +153 -0
  308. package/src/Form/__snapshots__/Validation.stories.ts.snap +130 -0
  309. package/src/Form/form.css +240 -55
  310. package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +18 -33
  311. package/src/Layout/Grid/grid.css +4 -4
  312. package/src/Layout/Header/Header.stories.ts +33 -0
  313. package/src/Layout/Header/Header.stories.tsx +31 -0
  314. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +50 -0
  315. package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +2 -0
  316. package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +8 -16
  317. package/src/Layout/Section/__snapshots__/Background.stories.ts.snap +2 -4
  318. package/src/Layout/Section/__snapshots__/Section.stories.ts.snap +4 -8
  319. package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.ts.snap +5 -5
  320. package/src/Layout/Sidebar/sidebar.css +1 -0
  321. package/src/Layout/Sidebar/sidebar.twig +1 -1
  322. package/src/Utility/Hooks/useIsomorphicLayoutEffect.ts +8 -0
  323. package/src/Utility/_layout-utils.css +8 -0
  324. package/src/Utility/_mixins.css +24 -0
  325. package/src/Utility/print.css +51 -29
  326. package/src/Utility/utilities.css +22 -2
  327. package/src/_custom-media.css +1 -0
  328. package/src/constants.css +12 -2
  329. package/src/enums.ts +22 -0
  330. package/src/react.ts +5 -0
  331. package/tools/lib/extract-classnames.mjs +0 -0
  332. package/tools/lint-classnames.mjs +1 -1
  333. package/tools/test-utils/screen-reader.ts +33 -0
  334. package/dist/build/chunks/DropMenu-Co9jZZ4S.js +0 -1
  335. package/dist/build/chunks/Gallery-BT3cxS5m.js +0 -1
  336. package/dist/build/chunks/GlobalToggle-DQHho97V.js +0 -1
  337. package/dist/build/chunks/InPageNavigation-CzR_KZaz.js +0 -1
  338. package/dist/build/chunks/Navigation-B9Wug-ok.js +0 -1
  339. package/dist/build/chunks/Popover-De_CQqcd.js +0 -1
  340. package/dist/build/chunks/Sticky-Kyjykb36.js +0 -1
  341. package/dist/build/chunks/Tabs-Dm8g301e.js +0 -15
  342. package/dist/build/chunks/disclosure-widget-BETzOHLO.js +0 -1
  343. package/dist/build/chunks/polyfills-Dokbkxxk.js +0 -1
  344. package/dist/build/chunks/utilities-C5dAO2YA.js +0 -1
@@ -78,28 +78,25 @@ exports[`Everything 1`] = `
78
78
 
79
79
  <nav class="mx-social-links" aria-label="Social media links">
80
80
 
81
-
82
- <a href="#">
81
+
82
+ <a href="#" aria-label="Facebook">
83
83
 
84
84
  <span class="mx-icon mx-icon--facebook mx-icon--size-md"></span>
85
85
 
86
- <span class="sr-only">Facebook</span>
87
86
 
88
87
  </a>
89
-
90
- <a href="#">
88
+
89
+ <a href="#" aria-label="Instagram">
91
90
 
92
91
  <span class="mx-icon mx-icon--instagram mx-icon--size-md"></span>
93
92
 
94
- <span class="sr-only">Instagram</span>
95
93
 
96
94
  </a>
97
-
98
- <a href="#">
95
+
96
+ <a href="#" aria-label="LinkedIn">
99
97
 
100
98
  <span class="mx-icon mx-icon--linkedin mx-icon--size-md"></span>
101
99
 
102
- <span class="sr-only">LinkedIn</span>
103
100
 
104
101
  </a>
105
102
 
@@ -112,14 +109,12 @@ exports[`Everything 1`] = `
112
109
 
113
110
  <a href="#">
114
111
 
115
- <span>Accessibility</span>
116
-
112
+ Accessibility
117
113
  </a>
118
114
 
119
115
  <a href="#">
120
116
 
121
- <span>Terms &amp; Conditions</span>
122
-
117
+ Terms &amp; Conditions
123
118
  </a>
124
119
 
125
120
  </nav>
@@ -169,14 +164,12 @@ exports[`Footer 1`] = `
169
164
 
170
165
  <a href="#">
171
166
 
172
- <span>Accessibility</span>
173
-
167
+ Accessibility
174
168
  </a>
175
169
 
176
170
  <a href="#">
177
171
 
178
- <span>Terms &amp; Conditions</span>
179
-
172
+ Terms &amp; Conditions
180
173
  </a>
181
174
 
182
175
  </nav>
@@ -226,14 +219,12 @@ exports[`Light 1`] = `
226
219
 
227
220
  <a href="#">
228
221
 
229
- <span>Accessibility</span>
230
-
222
+ Accessibility
231
223
  </a>
232
224
 
233
225
  <a href="#">
234
226
 
235
- <span>Terms &amp; Conditions</span>
236
-
227
+ Terms &amp; Conditions
237
228
  </a>
238
229
 
239
230
  </nav>
@@ -283,14 +274,12 @@ exports[`No Logo 1`] = `
283
274
 
284
275
  <a href="#">
285
276
 
286
- <span>Accessibility</span>
287
-
277
+ Accessibility
288
278
  </a>
289
279
 
290
280
  <a href="#">
291
281
 
292
- <span>Terms &amp; Conditions</span>
293
-
282
+ Terms &amp; Conditions
294
283
  </a>
295
284
 
296
285
  </nav>
@@ -313,14 +302,12 @@ exports[`No Menu 1`] = `
313
302
 
314
303
  <a href="#">
315
304
 
316
- <span>Accessibility</span>
317
-
305
+ Accessibility
318
306
  </a>
319
307
 
320
308
  <a href="#">
321
309
 
322
- <span>Terms &amp; Conditions</span>
323
-
310
+ Terms &amp; Conditions
324
311
  </a>
325
312
 
326
313
  </nav>
@@ -371,14 +358,12 @@ exports[`With Acknowledgment 1`] = `
371
358
 
372
359
  <a href="#">
373
360
 
374
- <span>Accessibility</span>
375
-
361
+ Accessibility
376
362
  </a>
377
363
 
378
364
  <a href="#">
379
365
 
380
- <span>Terms &amp; Conditions</span>
381
-
366
+ Terms &amp; Conditions
382
367
  </a>
383
368
 
384
369
  </nav>
@@ -4,11 +4,11 @@
4
4
 
5
5
  @layer design-system.layouts {
6
6
  .mx-grid {
7
- --grid-repeat: auto-fit;
8
- --grid-min: 20ch;
9
-
10
7
  display: grid;
11
- grid-template-columns: repeat(var(--grid-repeat), minmax(min(100%, var(--grid-min)), 1fr));
8
+ grid-template-columns: repeat(
9
+ var(--grid-repeat, auto-fit),
10
+ minmax(min(100%, var(--grid-min, 20ch)), 1fr)
11
+ );
12
12
  grid-template-rows: 1fr;
13
13
  gap: var(--grid-gap, var(--gap));
14
14
 
@@ -18,6 +18,7 @@ import "../../Component/Navigation/Elements/Navigation"
18
18
  // css.
19
19
  import "../../Component/Navigation/navigation.css"
20
20
  import { modes } from "../../../.storybook/modes"
21
+ import { runScreenReaderWalkthrough } from "../../../tools/test-utils/screen-reader"
21
22
 
22
23
  type MxHeaderType = Omit<HeaderType, "controls"> & {
23
24
  stacked: boolean
@@ -117,6 +118,38 @@ export const Header: Story = {
117
118
  },
118
119
  }
119
120
 
121
+ /**
122
+ * Steps a virtual screen reader through the page and asserts on what it announces.
123
+ */
124
+ export const ScreenReaderAnnouncements: Story = {
125
+ play: async () => {
126
+ const log = await runScreenReaderWalkthrough()
127
+ await expect(log).toEqual([
128
+ "document",
129
+ "banner",
130
+ "image, Mixtape",
131
+ "navigation, Primary navigation",
132
+ "list",
133
+ "listitem, level 1, position 1, set size 4",
134
+ "link, News",
135
+ "end of listitem, level 1, position 1, set size 4",
136
+ "listitem, level 1, position 2, set size 4",
137
+ "link, About us",
138
+ "end of listitem, level 1, position 2, set size 4",
139
+ "listitem, level 1, position 3, set size 4",
140
+ "link, Contact",
141
+ "end of listitem, level 1, position 3, set size 4",
142
+ "listitem, level 1, position 4, set size 4",
143
+ "link, Resources",
144
+ "end of listitem, level 1, position 4, set size 4",
145
+ "end of list",
146
+ "end of navigation, Primary navigation",
147
+ "end of banner",
148
+ "end of document",
149
+ ])
150
+ },
151
+ }
152
+
120
153
  export const WithTitle: Story = {
121
154
  args: {
122
155
  title: "Design System",
@@ -4,6 +4,7 @@ import Component from "./Header"
4
4
  import { mixtapeLogo, navigationItems } from "../../../mockups/constants"
5
5
  import "./header.css"
6
6
  import { Page } from "../../../.storybook-react/decorators"
7
+ import { runScreenReaderWalkthrough } from "../../../tools/test-utils/screen-reader"
7
8
 
8
9
  const meta: Meta<typeof Component> = {
9
10
  decorators: [Page],
@@ -45,3 +46,33 @@ export const PrimaryHeader: StoryObj<typeof meta> = {
45
46
  })
46
47
  },
47
48
  }
49
+
50
+ /**
51
+ * Steps a virtual screen reader through the page and asserts on what it announces.
52
+ */
53
+ export const ScreenReaderAnnouncements: StoryObj<typeof meta> = {
54
+ play: async () => {
55
+ const log = await runScreenReaderWalkthrough()
56
+ await expect(log).toEqual([
57
+ "document",
58
+ "banner",
59
+ "image, Mixtape",
60
+ "navigation, Primary Navigation",
61
+ "list",
62
+ "listitem, level 1, position 1, set size 3",
63
+ "link, Home",
64
+ "button, Sub-navigation, not expanded",
65
+ "end of listitem, level 1, position 1, set size 3",
66
+ "listitem, level 1, position 2, set size 3",
67
+ "link, About",
68
+ "end of listitem, level 1, position 2, set size 3",
69
+ "listitem, level 1, position 3, set size 3",
70
+ "link, Contact",
71
+ "end of listitem, level 1, position 3, set size 3",
72
+ "end of list",
73
+ "end of navigation, Primary Navigation",
74
+ "end of banner",
75
+ "end of document",
76
+ ])
77
+ },
78
+ }
@@ -72,6 +72,56 @@ exports[`Header 1`] = `
72
72
  <div id="unique-0" class="mx-header__nav mx-header__collapse-toggle">
73
73
 
74
74
 
75
+ <mx-nav flyout="">
76
+ <nav class="mx-nav mx-nav--dropdown" aria-label="Primary navigation" id="header-story">
77
+ <ul class="mx-nav__level-1">
78
+ <li>
79
+ <a href="#">
80
+ News
81
+ </a>
82
+ </li>
83
+ <li>
84
+ <a href="#">
85
+ About us
86
+ </a>
87
+ </li>
88
+ <li>
89
+ <a href="#">
90
+ Contact
91
+ </a>
92
+ </li>
93
+ <li>
94
+ <a href="#">
95
+ Resources
96
+ </a>
97
+ </li>
98
+ </ul>
99
+
100
+ </nav>
101
+ </mx-nav>
102
+
103
+ </div>
104
+
105
+ </div>
106
+ </div>
107
+ </header>
108
+ "
109
+ `;
110
+
111
+ exports[`Screen Reader Announcements 1`] = `
112
+ "<header class="mx-header mx-page mx-section--s">
113
+ <div class="mx-header__inner">
114
+ <div class="mx-header__brand">
115
+ <img alt="Mixtape" src="./mixtape-logo.png" width="120" height="">
116
+
117
+ </div>
118
+ <div class="mx-header__toggles">
119
+ <mx-global-toggle><button aria-controls="unique-0" class="mx-button mx-button--icon-only mx-icon mx-icon--menu">Open Menu</button></mx-global-toggle>
120
+ </div>
121
+ <div class="mx-header__main">
122
+ <div id="unique-0" class="mx-header__nav mx-header__collapse-toggle">
123
+
124
+
75
125
  <mx-nav flyout="">
76
126
  <nav class="mx-nav mx-nav--dropdown" aria-label="Primary navigation" id="header-story">
77
127
  <ul class="mx-nav__level-1">
@@ -1,3 +1,5 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
3
  exports[`Primary Header 1`] = `"<header class="mx-page mx-header mx-section--s"><div class="mx-header__inner"><div class="mx-header__brand"><img alt="Mixtape" src="mixtape-logo.png"></div><div class="mx-header__main"><div id="_r_0_" class="mx-header__nav mx-header__collapse-toggle"><nav class="mx-nav mx-nav--dropdown" aria-label="Primary Navigation" id="_r_0_"><ul class="mx-nav__level-1"><li class="mx-nav__has-subnav"><a href="http://example.com/#1" class="">Home</a><button aria-controls="_r_1_" aria-expanded="false" class="mx-nav__toggle mx-icon mx-icon--only mx-icon--chevron-down" type="button">Sub-navigation</button></li><li class=""><a href="http://example.com/#2" class="">About</a></li><li class=""><a href="http://example.com/#3" class="">Contact</a></li></ul></nav></div></div></div></header>"`;
4
+
5
+ exports[`Screen Reader Announcements 1`] = `"<header class="mx-page mx-header mx-section--s"><div class="mx-header__inner"><div class="mx-header__brand"><img alt="Mixtape" src="mixtape-logo.png"></div><div class="mx-header__main"><div id="_r_7_" class="mx-header__nav mx-header__collapse-toggle"><nav class="mx-nav mx-nav--dropdown" aria-label="Primary Navigation" id="_r_7_"><ul class="mx-nav__level-1"><li class="mx-nav__has-subnav"><a href="http://example.com/#1" class="">Home</a><button aria-controls="_r_8_" aria-expanded="false" class="mx-nav__toggle mx-icon mx-icon--only mx-icon--chevron-down" type="button">Sub-navigation</button></li><li class=""><a href="http://example.com/#2" class="">About</a></li><li class=""><a href="http://example.com/#3" class="">Contact</a></li></ul></nav></div></div></div></header>"`;
@@ -5,14 +5,12 @@ exports[`Light 1`] = `
5
5
 
6
6
  <a href="#content">
7
7
 
8
- <span>Skip to content</span>
9
-
8
+ Skip to content
10
9
  </a>
11
10
 
12
11
  <a href="#nav">
13
12
 
14
- <span>Skip to navigation</span>
15
-
13
+ Skip to navigation
16
14
  </a>
17
15
 
18
16
  </nav>
@@ -29,14 +27,12 @@ exports[`Masthead 1`] = `
29
27
 
30
28
  <a href="#content">
31
29
 
32
- <span>Skip to content</span>
33
-
30
+ Skip to content
34
31
  </a>
35
32
 
36
33
  <a href="#nav">
37
34
 
38
- <span>Skip to navigation</span>
39
-
35
+ Skip to navigation
40
36
  </a>
41
37
 
42
38
  </nav>
@@ -53,14 +49,12 @@ exports[`With Links 1`] = `
53
49
 
54
50
  <a href="#content">
55
51
 
56
- <span>Skip to content</span>
57
-
52
+ Skip to content
58
53
  </a>
59
54
 
60
55
  <a href="#nav">
61
56
 
62
- <span>Skip to navigation</span>
63
-
57
+ Skip to navigation
64
58
  </a>
65
59
 
66
60
  </nav>
@@ -73,16 +67,14 @@ exports[`With Links 1`] = `
73
67
 
74
68
  <span class="mx-icon mx-icon--user"></span>
75
69
 
76
- <span>Create account</span>
77
-
70
+ Create account
78
71
  </a>
79
72
 
80
73
  <a href="#">
81
74
 
82
75
  <span class="mx-icon mx-icon--login"></span>
83
76
 
84
- <span>Log in</span>
85
-
77
+ Log in
86
78
  </a>
87
79
 
88
80
  </nav>
@@ -17,8 +17,7 @@ exports[`Background 1`] = `
17
17
 
18
18
  <a href="#" class="mx-link--more">
19
19
 
20
- <span>See more content</span>
21
-
20
+ See more content
22
21
  <span class="mx-icon mx-icon--arrow-right"></span>
23
22
 
24
23
  </a>
@@ -47,8 +46,7 @@ exports[`Dark 1`] = `
47
46
 
48
47
  <a href="#" class="mx-link--more">
49
48
 
50
- <span>See more content</span>
51
-
49
+ See more content
52
50
  <span class="mx-icon mx-icon--arrow-right"></span>
53
51
 
54
52
  </a>
@@ -11,8 +11,7 @@ exports[`Background 1`] = `
11
11
 
12
12
  <a href="#" class="mx-link--more">
13
13
 
14
- <span>See more content</span>
15
-
14
+ See more content
16
15
  <span class="mx-icon mx-icon--arrow-right"></span>
17
16
 
18
17
  </a>
@@ -35,8 +34,7 @@ exports[`Box 1`] = `
35
34
 
36
35
  <a href="#" class="mx-link--more">
37
36
 
38
- <span>See more content</span>
39
-
37
+ See more content
40
38
  <span class="mx-icon mx-icon--arrow-right"></span>
41
39
 
42
40
  </a>
@@ -69,8 +67,7 @@ exports[`Modifiers 1`] = `
69
67
 
70
68
  <a href="#" class="mx-link--more">
71
69
 
72
- <span>See more content</span>
73
-
70
+ See more content
74
71
  <span class="mx-icon mx-icon--arrow-right"></span>
75
72
 
76
73
  </a>
@@ -93,8 +90,7 @@ exports[`Section 1`] = `
93
90
 
94
91
  <a href="#" class="mx-link--more">
95
92
 
96
- <span>See more content</span>
97
-
93
+ See more content
98
94
  <span class="mx-icon mx-icon--arrow-right"></span>
99
95
 
100
96
  </a>
@@ -4,7 +4,7 @@ exports[`No Sidebar 1`] = `
4
4
  "
5
5
 
6
6
  <div class="mx-grid--sidebar">
7
- <section class="js-content mx-vertical-flow-grid">
7
+ <section class="js-content mx-vertical-flow-grid gap--xl">
8
8
  Main content
9
9
  </section>
10
10
  </div>
@@ -15,7 +15,7 @@ exports[`Reverse Large 1`] = `
15
15
  "
16
16
 
17
17
  <div class="mx-grid--sidebar mx-grid--sidebar-rev-lg">
18
- <section class="js-content mx-vertical-flow-grid">
18
+ <section class="js-content mx-vertical-flow-grid gap--xl">
19
19
  Main content
20
20
  </section>
21
21
  <aside class="mx-vertical-flow-grid">
@@ -30,7 +30,7 @@ exports[`Revserse Medium 1`] = `
30
30
  "
31
31
 
32
32
  <div class="mx-grid--sidebar mx-grid--sidebar-rev">
33
- <section class="js-content mx-vertical-flow-grid">
33
+ <section class="js-content mx-vertical-flow-grid gap--xl">
34
34
  Main content
35
35
  </section>
36
36
  <aside class="mx-vertical-flow-grid">
@@ -45,7 +45,7 @@ exports[`Sidebar 1`] = `
45
45
  "
46
46
 
47
47
  <div class="mx-grid--sidebar">
48
- <section class="js-content mx-vertical-flow-grid">
48
+ <section class="js-content mx-vertical-flow-grid gap--xl">
49
49
  Main content
50
50
  </section>
51
51
  <aside class="mx-vertical-flow-grid">
@@ -64,7 +64,7 @@ exports[`Sidebar First 1`] = `
64
64
  Sidebar content
65
65
  </aside>
66
66
 
67
- <section class="js-content mx-vertical-flow-grid">
67
+ <section class="js-content mx-vertical-flow-grid gap--xl">
68
68
  Main content
69
69
  </section>
70
70
  </div>
@@ -20,6 +20,7 @@
20
20
 
21
21
  & > aside {
22
22
  flex-grow: 1;
23
+ align-content: start;
23
24
 
24
25
  @media (--medium-up) {
25
26
  max-inline-size: var(--sidebar-width, 24ch);
@@ -8,7 +8,7 @@
8
8
  {% endfor %}
9
9
  {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
10
10
  {% set sidebarAttributes = (sidebarAttributes ?? create_attribute()).addClass('mx-vertical-flow-grid') %}
11
- {% set contentAttributes = (contentAttributes ?? create_attribute()).addClass('js-content', 'mx-vertical-flow-grid') %}
11
+ {% set contentAttributes = (contentAttributes ?? create_attribute()).addClass('js-content', 'mx-vertical-flow-grid', 'gap--xl') %}
12
12
 
13
13
  {% if sidebarContent is not empty %}
14
14
  {% set sidebar %}
@@ -0,0 +1,8 @@
1
+ import { useEffect, useLayoutEffect } from "react"
2
+
3
+ // useLayoutEffect warns when it actually runs during server rendering (it's
4
+ // a no-op there) - fall back to useEffect outside the browser so
5
+ // server-rendered/hydrated consumers never see that warning.
6
+ const useIsomorphicLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect
7
+
8
+ export default useIsomorphicLayoutEffect
@@ -12,6 +12,14 @@
12
12
  display: flex;
13
13
  }
14
14
 
15
+ .grid {
16
+ display: grid;
17
+ }
18
+
19
+ .spacer {
20
+ flex: 1;
21
+ }
22
+
15
23
  .place--center {
16
24
  place-content: center;
17
25
  }
@@ -8,6 +8,30 @@
8
8
  white-space: nowrap;
9
9
  }
10
10
 
11
+ /**
12
+ * Pseudo-elements that draw something — a masked icon, a radio dot — paint it
13
+ * with background-color, which forced-colors mode flattens to Canvas: the
14
+ * shape disappears. Opt the pseudo out and name a real system colour instead.
15
+ *
16
+ * currentcolor won't do: it inherits the parent's *computed* colour, and
17
+ * forcing happens later at used-value time — an opted-out pseudo would paint
18
+ * the brand colour and still vanish against a dark high-contrast background.
19
+ *
20
+ * --forced-colour carries the right system colour down from context; see the
21
+ * overrides on .mx-button, a[href] and :disabled.
22
+ *
23
+ * Add to any rule that paints a glyph via background-color.
24
+ */
25
+ /* stylelint-disable no-invalid-position-declaration -- the mixin body is
26
+ always inlined into a rule, so the declarations do have a parent. */
27
+ @define-mixin forced-colors-paint {
28
+ @media (--forced-colors) {
29
+ forced-color-adjust: none;
30
+ background-color: var(--forced-colour, CanvasText);
31
+ }
32
+ }
33
+ /* stylelint-enable no-invalid-position-declaration */
34
+
11
35
  @define-mixin sr-undo {
12
36
  clip-path: none;
13
37
  position: revert !important;