@pnx-mixtape/mxds 0.0.21 → 0.0.23

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 (380) hide show
  1. package/dist/build/accordion.entry.js +32 -43
  2. package/dist/build/accordion.entry.js.map +1 -1
  3. package/dist/build/base.css +19 -39
  4. package/dist/build/button.css +7 -8
  5. package/dist/build/chunks/{Accordion-O-huO4At.js → Accordion-D1HQ0FDq.js} +23 -21
  6. package/dist/build/chunks/{Accordion-O-huO4At.js.map → Accordion-D1HQ0FDq.js.map} +1 -1
  7. package/dist/build/chunks/disclosure-widget-CdjCdx7t.js +129 -0
  8. package/dist/build/chunks/disclosure-widget-CdjCdx7t.js.map +1 -0
  9. package/dist/build/chunks/drop-menu.entry-fzV-_VFl.js +70 -0
  10. package/dist/build/chunks/drop-menu.entry-fzV-_VFl.js.map +1 -0
  11. package/dist/build/chunks/{polyfills-C-B7iqDG.js → polyfills-DnrsypYs.js} +35 -26
  12. package/dist/build/chunks/polyfills-DnrsypYs.js.map +1 -0
  13. package/dist/build/chunks/popover.entry-BQvyR0d5.js +38 -0
  14. package/dist/build/chunks/popover.entry-BQvyR0d5.js.map +1 -0
  15. package/dist/build/chunks/{utilities-DXELy_An.js → utilities-Ci7wwNeg.js} +9 -106
  16. package/dist/build/chunks/utilities-Ci7wwNeg.js.map +1 -0
  17. package/dist/build/constants.css +10 -31
  18. package/dist/build/dialog.entry.js +23 -31
  19. package/dist/build/dialog.entry.js.map +1 -1
  20. package/dist/build/drop-menu.entry.js +1 -1
  21. package/dist/build/drupal.css +5 -9
  22. package/dist/build/filters.entry.js +54 -50
  23. package/dist/build/filters.entry.js.map +1 -1
  24. package/dist/build/form.css +12 -26
  25. package/dist/build/global-alert.entry.js +26 -19
  26. package/dist/build/global-alert.entry.js.map +1 -1
  27. package/dist/build/grid.css +3 -9
  28. package/dist/build/header.css +5 -3
  29. package/dist/build/header.entry.js +93 -88
  30. package/dist/build/header.entry.js.map +1 -1
  31. package/dist/build/icon.css +3 -3
  32. package/dist/build/in-page-navigation.entry.js +16 -12
  33. package/dist/build/in-page-navigation.entry.js.map +1 -1
  34. package/dist/build/navigation.css +21 -56
  35. package/dist/build/navigation.entry.js +148 -50
  36. package/dist/build/navigation.entry.js.map +1 -1
  37. package/dist/build/page.css +1 -1
  38. package/dist/build/popover.css +119 -0
  39. package/dist/build/popover.entry.js +2 -0
  40. package/dist/build/popover.entry.js.map +1 -0
  41. package/dist/build/section.css +1 -1
  42. package/dist/build/sticky.entry.js +11 -12
  43. package/dist/build/sticky.entry.js.map +1 -1
  44. package/dist/build/tabs.entry.js +108 -91
  45. package/dist/build/tabs.entry.js.map +1 -1
  46. package/dist/build/utility-list.css +43 -0
  47. package/dist/build/utility-list.entry.js +80 -0
  48. package/dist/build/utility-list.entry.js.map +1 -0
  49. package/package.json +9 -10
  50. package/src/Atom/{Base.mdx → Atom.mdx} +1 -1
  51. package/src/Atom/Background/Backgrounds.stories.ts +21 -4
  52. package/src/Atom/Background/__snapshots__/Backgrounds.stories.ts.snap +1 -1
  53. package/src/Atom/Background/_background.css +1 -2
  54. package/src/Atom/Blockquote/_blockquote.css +1 -2
  55. package/src/Atom/Button/Button.stories.ts +128 -19
  56. package/src/Atom/Button/__snapshots__/Button.stories.ts.snap +75 -11
  57. package/src/Atom/Button/__snapshots__/Button.stories.tsx.snap +1 -1
  58. package/src/Atom/Button/_buttons.css +5 -5
  59. package/src/Atom/DefinitionList/DefinitionList.stories.ts +20 -3
  60. package/src/Atom/DefinitionList/DefinitionList.stories.tsx +3 -9
  61. package/src/Atom/DefinitionList/DefinitionList.tsx +3 -4
  62. package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.ts.snap +1 -1
  63. package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.tsx.snap +1 -1
  64. package/src/Atom/Heading/Heading.stories.ts +49 -7
  65. package/src/Atom/Heading/Heading.tsx +1 -6
  66. package/src/Atom/Heading/__snapshots__/Heading.stories.ts.snap +9 -1
  67. package/src/Atom/Heading/__snapshots__/Heading.stories.tsx.snap +1 -1
  68. package/src/Atom/Heading/_headings.css +1 -2
  69. package/src/Atom/Icon/Icon.mdx +5 -1
  70. package/src/Atom/Icon/Icon.stories.ts +76 -6
  71. package/src/Atom/Icon/Icon.tsx +1 -8
  72. package/src/Atom/Icon/__snapshots__/Icon.stories.ts.snap +18 -4
  73. package/src/Atom/Icon/__snapshots__/Icon.stories.tsx.snap +1 -1
  74. package/src/Atom/Icon/_icon.css +1 -1
  75. package/src/Atom/Image/Image.stories.ts +4 -3
  76. package/src/Atom/Image/__snapshots__/Image.stories.ts.snap +1 -1
  77. package/src/Atom/Link/Link.stories.ts +74 -7
  78. package/src/Atom/Link/__snapshots__/Link.stories.ts.snap +4 -4
  79. package/src/Atom/Link/__snapshots__/Link.stories.tsx.snap +1 -1
  80. package/src/Atom/Media/Media.stories.ts +34 -5
  81. package/src/Atom/Media/Media.tsx +1 -6
  82. package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +2 -2
  83. package/src/Atom/Media/__snapshots__/Media.stories.tsx.snap +1 -1
  84. package/src/Atom/Media/_media.css +2 -10
  85. package/src/Atom/Spacing/Spacing.stories.ts +45 -31
  86. package/src/Atom/Spacing/__snapshots__/Spacing.stories.ts.snap +5 -4
  87. package/src/Atom/Spacing/spacing.twig +5 -2
  88. package/src/Atom/Table/__snapshots__/Table.stories.ts.snap +1 -1
  89. package/src/Atom/Table/__snapshots__/TableResponsive.stories.ts.snap +1 -1
  90. package/src/Atom/Table/_table.css +1 -2
  91. package/src/Atom/Text/Text.stories.ts +62 -0
  92. package/src/Atom/Text/__snapshots__/{TextSizes.stories.ts.snap → Text.stories.ts.snap} +14 -27
  93. package/src/Atom/Text/__snapshots__/Text.stories.tsx.snap +1 -1
  94. package/src/Atom/Text/_text-sizes.css +2 -4
  95. package/src/Atom/Text/text-style.twig +11 -1
  96. package/src/Atom/Text/text-styles-example.twig +2 -16
  97. package/src/Atom/Video/Video.stories.ts +6 -4
  98. package/src/Atom/Video/Video.tsx +1 -5
  99. package/src/Atom/Video/__snapshots__/Video.stories.ts.snap +1 -1
  100. package/src/Atom/_generic.css +4 -4
  101. package/src/Atom/_hr.css +1 -2
  102. package/src/Component/Accordion/Accordion.stories.ts +26 -8
  103. package/src/Component/Accordion/Accordion.stories.tsx +8 -10
  104. package/src/Component/Accordion/Accordion.tsx +2 -13
  105. package/src/Component/Accordion/AccordionItem.stories.ts +90 -0
  106. package/src/Component/Accordion/Components/AccordionContent.tsx +1 -5
  107. package/src/Component/Accordion/Components/AccordionTitle.tsx +1 -4
  108. package/src/Component/Accordion/Elements/Accordion.ts +1 -1
  109. package/src/Component/Accordion/Elements/AccordionDiv.ts +4 -11
  110. package/src/Component/Accordion/Elements/AccordionGroup.ts +10 -24
  111. package/src/Component/Accordion/Elements/AccordionMobile.ts +4 -4
  112. package/src/Component/Accordion/__snapshots__/Accordion.stories.ts.snap +17 -6
  113. package/src/Component/Accordion/__snapshots__/Accordion.stories.tsx.snap +1 -1
  114. package/src/Component/Accordion/__snapshots__/AccordionItem.stories.ts.snap +90 -0
  115. package/src/Component/Accordion/accordion.css +7 -5
  116. package/src/Component/Accordion/twig/accordion-div.twig +13 -11
  117. package/src/Component/Accordion/twig/accordion-mobile.twig +13 -11
  118. package/src/Component/Breadcrumb/Breadcrumb.stories.ts +14 -0
  119. package/src/Component/Breadcrumb/Breadcrumb.tsx +2 -12
  120. package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.ts.snap +1 -1
  121. package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.tsx.snap +1 -1
  122. package/src/Component/Breadcrumb/breadcrumb.css +1 -4
  123. package/src/Component/Callout/Callout.stories.ts +20 -0
  124. package/src/Component/Callout/__snapshots__/Callout.stories.ts.snap +1 -1
  125. package/src/Component/Callout/callout.css +1 -2
  126. package/src/Component/Card/Card.stories.ts +129 -14
  127. package/src/Component/Card/Card.stories.tsx +2 -2
  128. package/src/Component/Card/Components/CardContent.tsx +1 -5
  129. package/src/Component/Card/__snapshots__/Card.stories.ts.snap +24 -24
  130. package/src/Component/Card/__snapshots__/Card.stories.tsx.snap +1 -1
  131. package/src/Component/Card/card.css +2 -6
  132. package/src/Component/Card/card.twig +1 -1
  133. package/src/Component/Carousel/Carousel.stories.ts +61 -8
  134. package/src/Component/Carousel/Elements/Carousel.ts +10 -19
  135. package/src/Component/Carousel/__snapshots__/Carousel.stories.ts.snap +321 -35
  136. package/src/Component/Carousel/carousel.css +1 -2
  137. package/src/Component/ContentBlock/Components/ContentBlockContent.tsx +1 -5
  138. package/src/Component/ContentBlock/Components/ContentBlockMedia.tsx +1 -4
  139. package/src/Component/ContentBlock/ContentBlock.stories.ts +63 -13
  140. package/src/Component/ContentBlock/ContentBlock.stories.tsx +2 -2
  141. package/src/Component/ContentBlock/ContentBlock.tsx +1 -5
  142. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +11 -11
  143. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.tsx.snap +1 -1
  144. package/src/Component/Dialog/Dialog.stories.ts +78 -21
  145. package/src/Component/Dialog/Dialog.stories.tsx +2 -3
  146. package/src/Component/Dialog/Elements/Dialog.ts +7 -16
  147. package/src/Component/Dialog/__snapshots__/Dialog.stories.ts.snap +8 -11
  148. package/src/Component/Dialog/__snapshots__/Dialog.stories.tsx.snap +1 -1
  149. package/src/Component/Dialog/dialog.css +1 -2
  150. package/src/Component/Dialog/dialog.twig +1 -1
  151. package/src/Component/DropMenu/Components/DropMenuContext.tsx +4 -12
  152. package/src/Component/DropMenu/DropMenu.stories.ts +60 -1
  153. package/src/Component/DropMenu/DropMenu.tsx +2 -7
  154. package/src/Component/DropMenu/Elements/DropMenu.ts +21 -91
  155. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +53 -11
  156. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.tsx.snap +1 -1
  157. package/src/Component/DropMenu/drop-menu.css +13 -41
  158. package/src/Component/DropMenu/drop-menu.twig +8 -6
  159. package/src/Component/Filters/Elements/Filters.ts +7 -11
  160. package/src/Component/Filters/FilterItem.stories.ts +180 -0
  161. package/src/Component/Filters/Filters.stories.ts +83 -8
  162. package/src/Component/Filters/__snapshots__/FilterItem.stories.ts.snap +135 -0
  163. package/src/Component/Filters/__snapshots__/Filters.stories.ts.snap +43 -41
  164. package/src/Component/Filters/filter-item.twig +1 -1
  165. package/src/Component/Filters/filters.css +33 -17
  166. package/src/Component/GlobalAlert/Elements/ClosableAlert.ts +8 -7
  167. package/src/Component/GlobalAlert/GlobalAlert.stories.ts +60 -12
  168. package/src/Component/GlobalAlert/GlobalAlert.stories.tsx +1 -2
  169. package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.ts.snap +8 -6
  170. package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.tsx.snap +3 -3
  171. package/src/Component/HeroBanner/HeroBanner.stories.ts +84 -7
  172. package/src/Component/HeroBanner/HeroBanner.stories.tsx +4 -4
  173. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +91 -99
  174. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.tsx.snap +1 -1
  175. package/src/Component/HeroSearch/HeroSearch.stories.ts +23 -4
  176. package/src/Component/HeroSearch/HeroSearch.stories.tsx +4 -4
  177. package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.ts.snap +10 -10
  178. package/src/Component/HeroSearch/__snapshots__/HeroSearch.stories.tsx.snap +1 -1
  179. package/src/Component/InPageAlert/InPageAlert.stories.ts +76 -8
  180. package/src/Component/InPageAlert/InPageAlert.stories.tsx +1 -2
  181. package/src/Component/InPageAlert/InPageAlert.tsx +1 -4
  182. package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.ts.snap +80 -2
  183. package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.tsx.snap +1 -1
  184. package/src/Component/InPageNavigation/Elements/InPageNavigation.ts +7 -9
  185. package/src/Component/InPageNavigation/Hooks/useInPageNavigation.ts +3 -5
  186. package/src/Component/InPageNavigation/InPageNavigation.stories.ts +44 -9
  187. package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +32 -40
  188. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +152 -5
  189. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.tsx.snap +1 -1
  190. package/src/Component/LinkList/LinkList.stories.ts +23 -0
  191. package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +8 -8
  192. package/src/Component/LinkList/__snapshots__/LinkList.stories.tsx.snap +1 -1
  193. package/src/Component/LinkList/link-list.css +1 -2
  194. package/src/Component/ListItem/Components/ListItemContent.tsx +1 -5
  195. package/src/Component/ListItem/Components/ListItemMedia.tsx +1 -4
  196. package/src/Component/ListItem/ListItem.stories.ts +91 -11
  197. package/src/Component/ListItem/ListItem.stories.tsx +6 -7
  198. package/src/Component/ListItem/__snapshots__/ListItem.stories.ts.snap +1 -1
  199. package/src/Component/ListItem/__snapshots__/ListItem.stories.tsx.snap +1 -1
  200. package/src/Component/ListItem/list-item.css +1 -2
  201. package/src/Component/Navigation/Components/DropdownLevel.tsx +5 -13
  202. package/src/Component/Navigation/Elements/Navigation.ts +6 -13
  203. package/src/Component/Navigation/Navigation.stories.ts +48 -0
  204. package/src/Component/Navigation/__snapshots__/Dropdown.stories.tsx.snap +1 -1
  205. package/src/Component/Navigation/__snapshots__/Navigation.stories.ts.snap +1 -1
  206. package/src/Component/Navigation/__snapshots__/Navigation.stories.tsx.snap +1 -1
  207. package/src/Component/Navigation/_navigation-collapsible.css +2 -4
  208. package/src/Component/Navigation/_navigation-dropdown.css +10 -32
  209. package/src/Component/Navigation/_navigation-mega.css +1 -4
  210. package/src/Component/Navigation/_navigation.css +1 -4
  211. package/src/Component/Pagination/Components/PaginationContext.tsx +5 -19
  212. package/src/Component/Pagination/Components/PaginationItem.tsx +1 -5
  213. package/src/Component/Pagination/Pagination.stories.ts +28 -0
  214. package/src/Component/Pagination/Pagination.tsx +3 -11
  215. package/src/Component/Pagination/__snapshots__/Pagination.stories.ts.snap +3 -3
  216. package/src/Component/Pagination/__snapshots__/Pagination.stories.tsx.snap +1 -1
  217. package/src/Component/Pagination/pagination.css +1 -4
  218. package/src/Component/Popover/Elements/Popover.ts +55 -0
  219. package/src/Component/Popover/Popover.stories.ts +259 -0
  220. package/src/Component/Popover/__snapshots__/Popover.stories.ts.snap +508 -0
  221. package/src/Component/{DropMenu → Popover}/polyfills.js +6 -4
  222. package/src/Component/Popover/popover.css +113 -0
  223. package/src/Component/Popover/popover.entry.js +1 -0
  224. package/src/Component/Popover/popover.twig +27 -0
  225. package/src/Component/ResultsBar/Components/ResultsBarInfo.tsx +2 -7
  226. package/src/Component/ResultsBar/Components/ResultsBarSort.tsx +1 -6
  227. package/src/Component/ResultsBar/ResultsBar.stories.ts +34 -4
  228. package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.ts.snap +3 -3
  229. package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.tsx.snap +1 -1
  230. package/src/Component/SideNavigation/SideNavigation.stories.ts +40 -0
  231. package/src/Component/SideNavigation/__snapshots__/SideNavigation.stories.ts.snap +1 -1
  232. package/src/Component/SideNavigation/side-navigation.css +3 -6
  233. package/src/Component/SocialLinks/SocialLinks.stories.ts +20 -0
  234. package/src/Component/SocialLinks/__snapshots__/SocialLinks.stories.ts.snap +5 -5
  235. package/src/Component/SocialShare/SocialShare.stories.ts +37 -0
  236. package/src/Component/SocialShare/SocialShare.tsx +2 -4
  237. package/src/Component/SocialShare/__snapshots__/SocialShare.stories.ts.snap +40 -0
  238. package/src/Component/SocialShare/__snapshots__/SocialShare.stories.tsx.snap +1 -1
  239. package/src/Component/SocialShare/social-share.twig +34 -0
  240. package/src/Component/Steps/StepItem.stories.ts +48 -0
  241. package/src/Component/Steps/Steps.stories.ts +82 -13
  242. package/src/Component/Steps/__snapshots__/StepItem.stories.ts.snap +31 -0
  243. package/src/Component/Steps/__snapshots__/Steps.stories.ts.snap +109 -28
  244. package/src/Component/Steps/step-item.twig +1 -1
  245. package/src/Component/Steps/steps.css +4 -11
  246. package/src/Component/Sticky/Elements/Sticky.ts +3 -8
  247. package/src/Component/Sticky/Sticky.stories.ts +35 -3
  248. package/src/Component/Sticky/__snapshots__/Sticky.stories.ts.snap +1 -1
  249. package/src/Component/Sticky/__snapshots__/Sticky.stories.tsx.snap +1 -1
  250. package/src/Component/Sticky/sticky.twig +1 -1
  251. package/src/Component/Tabs/Components/Tab.tsx +2 -8
  252. package/src/Component/Tabs/Components/TabPanel.tsx +1 -5
  253. package/src/Component/Tabs/Elements/Tabs.ts +21 -31
  254. package/src/Component/Tabs/TabItem.stories.ts +52 -0
  255. package/src/Component/Tabs/Tabs.stories.ts +51 -8
  256. package/src/Component/Tabs/Tabs.tsx +6 -22
  257. package/src/Component/Tabs/__snapshots__/TabItem.stories.ts.snap +12 -0
  258. package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +127 -11
  259. package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +1 -1
  260. package/src/Component/Tabs/tab-item.twig +1 -2
  261. package/src/Component/Tabs/tabs.css +56 -59
  262. package/src/Component/Tag/Tag.stories.ts +30 -0
  263. package/src/Component/Tag/Tag.tsx +1 -5
  264. package/src/Component/Tag/__snapshots__/Tag.stories.ts.snap +1 -1
  265. package/src/Component/Tag/__snapshots__/Tag.stories.tsx.snap +1 -1
  266. package/src/Component/Tag/tag.css +1 -4
  267. package/src/Component/UtilityList/Elements/UtilityList.ts +110 -0
  268. package/src/Component/UtilityList/UtilityList.stories.ts +72 -0
  269. package/src/Component/UtilityList/__snapshots__/UtilityList.stories.ts.snap +274 -0
  270. package/src/Component/UtilityList/utility-list.css +40 -0
  271. package/src/Component/UtilityList/utility-list.entry.js +1 -0
  272. package/src/Component/UtilityList/utility-list.twig +66 -0
  273. package/src/Form/Checkbox/FormCheckbox.stories.tsx +1 -3
  274. package/src/Form/Checkbox/FormCheckbox.tsx +4 -25
  275. package/src/Form/Checkbox/__snapshots__/Checkbox.stories.ts.snap +3 -3
  276. package/src/Form/Description/Description.stories.ts +1 -2
  277. package/src/Form/Description/FormStatus.stories.ts +1 -4
  278. package/src/Form/Description/__snapshots__/Description.stories.ts.snap +1 -1
  279. package/src/Form/Description/__snapshots__/FormDescription.stories.tsx.snap +1 -1
  280. package/src/Form/Description/__snapshots__/FormStatus.stories.ts.snap +3 -3
  281. package/src/Form/Form/Form.tsx +1 -3
  282. package/src/Form/Form/__snapshots__/Form.stories.tsx.snap +1 -1
  283. package/src/Form/Form/__snapshots__/FormTitle.stories.tsx.snap +1 -1
  284. package/src/Form/FormItem/FormItem.stories.ts +3 -9
  285. package/src/Form/FormItem/__snapshots__/FormItem.stories.ts.snap +18 -18
  286. package/src/Form/FormItem/__snapshots__/FormItem.stories.tsx.snap +1 -1
  287. package/src/Form/Label/FormLabel.tsx +1 -5
  288. package/src/Form/Label/__snapshots__/FormLabel.stories.tsx.snap +1 -1
  289. package/src/Form/Label/__snapshots__/Label.stories.ts.snap +3 -3
  290. package/src/Form/Radio/FormRadio.stories.tsx +1 -3
  291. package/src/Form/Radio/FormRadio.tsx +4 -25
  292. package/src/Form/Radio/__snapshots__/Radio.stories.ts.snap +9 -9
  293. package/src/Form/Search/__snapshots__/Search.stories.ts.snap +1 -1
  294. package/src/Form/Select/FormSelect.tsx +3 -9
  295. package/src/Form/Select/__snapshots__/FormSelect.stories.tsx.snap +1 -1
  296. package/src/Form/Select/__snapshots__/Select.stories.ts.snap +2 -2
  297. package/src/Form/TextInput/FormText.tsx +3 -9
  298. package/src/Form/TextInput/TextInput.stories.ts +1 -4
  299. package/src/Form/TextInput/__snapshots__/FormText.stories.tsx.snap +1 -1
  300. package/src/Form/TextInput/__snapshots__/InputDivider.stories.ts.snap +1 -1
  301. package/src/Form/TextInput/__snapshots__/TextInput.stories.ts.snap +3 -3
  302. package/src/Form/Textarea/FormTextarea.tsx +3 -9
  303. package/src/Form/Textarea/__snapshots__/FormTextarea.stories.tsx.snap +1 -1
  304. package/src/Form/Textarea/__snapshots__/Textarea.stories.ts.snap +2 -2
  305. package/src/Form/form.css +6 -14
  306. package/src/Introduction.mdx +1 -2
  307. package/src/Layout/Footer/Footer.stories.ts +1 -5
  308. package/src/Layout/Footer/Footer.stories.tsx +2 -3
  309. package/src/Layout/Footer/Footer.tsx +3 -12
  310. package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +4 -4
  311. package/src/Layout/Footer/__snapshots__/Footer.stories.tsx.snap +1 -1
  312. package/src/Layout/Grid/Grid.stories.ts +40 -8
  313. package/src/Layout/Grid/Grid.tsx +1 -2
  314. package/src/Layout/Grid/GridItem.stories.ts +63 -0
  315. package/src/Layout/Grid/__snapshots__/Grid.stories.ts.snap +29 -4
  316. package/src/Layout/Grid/__snapshots__/Grid.stories.tsx.snap +1 -1
  317. package/src/Layout/Grid/__snapshots__/GridItem.stories.ts.snap +19 -0
  318. package/src/Layout/Grid/grid-item.twig +3 -9
  319. package/src/Layout/Grid/grid.css +1 -4
  320. package/src/Layout/Header/Elements/GlobalToggle.ts +9 -29
  321. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +25 -45
  322. package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +3 -3
  323. package/src/Layout/Header/_toggles.css +2 -2
  324. package/src/Layout/Header/header.twig +1 -1
  325. package/src/Layout/Masthead/Masthead.stories.ts +1 -4
  326. package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +3 -3
  327. package/src/Layout/Page/Page.stories.tsx +2 -2
  328. package/src/Layout/Page/__snapshots__/Page.stories.tsx.snap +3 -3
  329. package/src/Layout/Page/page.css +2 -10
  330. package/src/Layout/Section/Background.stories.ts +14 -39
  331. package/src/Layout/Section/Breakouts.stories.ts +3 -0
  332. package/src/Layout/Section/Flow.stories.ts +3 -0
  333. package/src/Layout/Section/Section.stories.ts +93 -11
  334. package/src/Layout/Section/Section.tsx +3 -13
  335. package/src/Layout/Section/SectionGrid.tsx +2 -9
  336. package/src/Layout/Section/__snapshots__/Background.stories.ts.snap +4 -4
  337. package/src/Layout/Section/__snapshots__/Breakouts.stories.ts.snap +1 -1
  338. package/src/Layout/Section/__snapshots__/Flow.stories.ts.snap +1 -1
  339. package/src/Layout/Section/__snapshots__/Section.stories.ts.snap +93 -3
  340. package/src/Layout/Section/__snapshots__/Section.stories.tsx.snap +1 -1
  341. package/src/Layout/Section/__snapshots__/SectionGrid.stories.tsx.snap +1 -1
  342. package/src/Layout/Section/section.css +2 -5
  343. package/src/Layout/Section/section.twig +1 -3
  344. package/src/Layout/Sidebar/Sidebar.stories.ts +46 -4
  345. package/src/Layout/Sidebar/Sidebar.tsx +1 -3
  346. package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.ts.snap +4 -4
  347. package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.tsx.snap +1 -1
  348. package/src/Utility/Context/ImageComponent.tsx +4 -8
  349. package/src/Utility/Context/LinkComponent.tsx +1 -5
  350. package/src/Utility/Drupal/drupal.css +2 -4
  351. package/src/Utility/Elements/breakpoint-loader.ts +4 -10
  352. package/src/Utility/Elements/cookie-compliance.ts +2 -8
  353. package/src/Utility/Elements/disclosure-widget.ts +11 -18
  354. package/src/Utility/Elements/io-loader.ts +4 -6
  355. package/src/Utility/Elements/keyboard.ts +4 -14
  356. package/src/Utility/Hooks/useLocalStorage.ts +5 -18
  357. package/src/Utility/Hooks/useMediaQuery.ts +1 -4
  358. package/src/Utility/Hooks/useToggle.ts +1 -3
  359. package/src/Utility/global.d.ts +1 -5
  360. package/src/Utility/utilities.ts +20 -45
  361. package/src/constants.css +7 -28
  362. package/src/enums.ts +3 -1
  363. package/src/react.ts +5 -21
  364. package/src/tokens.js +2 -2
  365. package/dist/build/chunks/disclosure-widget-DVpnRsTI.js +0 -126
  366. package/dist/build/chunks/disclosure-widget-DVpnRsTI.js.map +0 -1
  367. package/dist/build/chunks/drop-menu.entry-B4TtnC50.js +0 -132
  368. package/dist/build/chunks/drop-menu.entry-B4TtnC50.js.map +0 -1
  369. package/dist/build/chunks/keyboard-rvZ4dfGF.js +0 -104
  370. package/dist/build/chunks/keyboard-rvZ4dfGF.js.map +0 -1
  371. package/dist/build/chunks/polyfills-C-B7iqDG.js.map +0 -1
  372. package/dist/build/chunks/utilities-DXELy_An.js.map +0 -1
  373. package/src/Atom/Text/TextSizes.stories.ts +0 -25
  374. package/src/Atom/Text/text-alignment.twig +0 -5
  375. package/src/Component/Accordion/twig/accordion-example.twig +0 -36
  376. package/src/Component/Tile/README.md +0 -3
  377. package/src/Component/Tile/Tile.stories.ts +0 -49
  378. package/src/Component/Tile/Tile.stories.tsx +0 -35
  379. package/src/Component/Tile/__snapshots__/Tile.stories.ts.snap +0 -57
  380. package/src/Component/Tile/__snapshots__/Tile.stories.tsx.snap +0 -23
@@ -1,10 +1,32 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
+
3
+ exports[`Component/Steps Accent smoke-test 1`] = `
4
+ <div class="mx-page default">
5
+ <div class="mx-steps mx-steps--supplementary mx-steps--counters">
6
+ <div class="mx-steps__panel mx-steps--fill">
7
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
8
+ Funk is the ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
9
+ </div>
10
+ </div>
11
+ <div class="mx-steps__panel mx-steps--fill">
12
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
13
+ Soul music ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem.
14
+ </div>
15
+ </div>
16
+ <div class="mx-steps__panel">
17
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
18
+ Motown lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
19
+ </div>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ `;
2
24
 
3
25
  exports[`Component/Steps Counters smoke-test 1`] = `
4
26
  <div class="mx-page default">
5
- <div class="mx-steps mx-steps--counters">
6
- <div class="mx-steps__panel ">
7
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
27
+ <div class="mx-steps mx-steps--light mx-steps--counters">
28
+ <div class="mx-steps__panel">
29
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
8
30
  <h2>
9
31
  Funk
10
32
  </h2>
@@ -13,8 +35,8 @@ exports[`Component/Steps Counters smoke-test 1`] = `
13
35
  </p>
14
36
  </div>
15
37
  </div>
16
- <div class="mx-steps__panel ">
17
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
38
+ <div class="mx-steps__panel">
39
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
18
40
  <h3>
19
41
  Soul
20
42
  </h3>
@@ -23,8 +45,8 @@ exports[`Component/Steps Counters smoke-test 1`] = `
23
45
  </p>
24
46
  </div>
25
47
  </div>
26
- <div class="mx-steps__panel ">
27
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
48
+ <div class="mx-steps__panel">
49
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
28
50
  <h4>
29
51
  Motown
30
52
  </h4>
@@ -37,21 +59,80 @@ exports[`Component/Steps Counters smoke-test 1`] = `
37
59
  </div>
38
60
  `;
39
61
 
40
- exports[`Component/Steps Progress smoke-test 1`] = `
62
+ exports[`Component/Steps Filled smoke-test 1`] = `
41
63
  <div class="mx-page default">
42
- <div class="mx-steps mx-steps--supplementary ">
64
+ <div class="mx-steps mx-steps--light mx-steps--fill">
65
+ <div class="mx-steps__panel">
66
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
67
+ <h2>
68
+ Funk
69
+ </h2>
70
+ <p>
71
+ Funk is the ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
72
+ </p>
73
+ </div>
74
+ </div>
75
+ <div class="mx-steps__panel">
76
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
77
+ <h3>
78
+ Soul
79
+ </h3>
80
+ <p>
81
+ Soul music ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem.
82
+ </p>
83
+ </div>
84
+ </div>
85
+ <div class="mx-steps__panel">
86
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
87
+ <h4>
88
+ Motown
89
+ </h4>
90
+ <p>
91
+ Motown lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
92
+ </p>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ `;
98
+
99
+ exports[`Component/Steps Highlighted smoke-test 1`] = `
100
+ <div class="mx-page default">
101
+ <div class="mx-steps mx-steps--light">
102
+ <div class="mx-steps__panel">
103
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
104
+ Funk is the ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
105
+ </div>
106
+ </div>
43
107
  <div class="mx-steps__panel mx-steps--fill">
44
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
108
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
109
+ Soul music ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem.
110
+ </div>
111
+ </div>
112
+ <div class="mx-steps__panel">
113
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
114
+ Motown lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ `;
120
+
121
+ exports[`Component/Steps Primary smoke-test 1`] = `
122
+ <div class="mx-page default">
123
+ <div class="mx-steps mx-steps--dark mx-steps--counters">
124
+ <div class="mx-steps__panel mx-steps--fill">
125
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
45
126
  Funk is the ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
46
127
  </div>
47
128
  </div>
48
- <div class="mx-steps__panel ">
49
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
129
+ <div class="mx-steps__panel mx-steps--fill">
130
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
50
131
  Soul music ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem.
51
132
  </div>
52
133
  </div>
53
- <div class="mx-steps__panel ">
54
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
134
+ <div class="mx-steps__panel">
135
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
55
136
  Motown lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
56
137
  </div>
57
138
  </div>
@@ -59,21 +140,21 @@ exports[`Component/Steps Progress smoke-test 1`] = `
59
140
  </div>
60
141
  `;
61
142
 
62
- exports[`Component/Steps ProgressCounters smoke-test 1`] = `
143
+ exports[`Component/Steps Progress smoke-test 1`] = `
63
144
  <div class="mx-page default">
64
- <div class="mx-steps mx-steps--dark mx-steps--counters ">
145
+ <div class="mx-steps mx-steps--light mx-steps--counters">
65
146
  <div class="mx-steps__panel mx-steps--fill">
66
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
147
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
67
148
  Funk is the ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
68
149
  </div>
69
150
  </div>
70
151
  <div class="mx-steps__panel mx-steps--fill">
71
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
152
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
72
153
  Soul music ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem.
73
154
  </div>
74
155
  </div>
75
- <div class="mx-steps__panel ">
76
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
156
+ <div class="mx-steps__panel">
157
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
77
158
  Motown lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.
78
159
  </div>
79
160
  </div>
@@ -83,9 +164,9 @@ exports[`Component/Steps ProgressCounters smoke-test 1`] = `
83
164
 
84
165
  exports[`Component/Steps Steps smoke-test 1`] = `
85
166
  <div class="mx-page default">
86
- <div class="mx-steps ">
87
- <div class="mx-steps__panel ">
88
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
167
+ <div class="mx-steps mx-steps--light">
168
+ <div class="mx-steps__panel">
169
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
89
170
  <h2>
90
171
  Funk
91
172
  </h2>
@@ -94,8 +175,8 @@ exports[`Component/Steps Steps smoke-test 1`] = `
94
175
  </p>
95
176
  </div>
96
177
  </div>
97
- <div class="mx-steps__panel ">
98
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
178
+ <div class="mx-steps__panel">
179
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
99
180
  <h3>
100
181
  Soul
101
182
  </h3>
@@ -104,8 +185,8 @@ exports[`Component/Steps Steps smoke-test 1`] = `
104
185
  </p>
105
186
  </div>
106
187
  </div>
107
- <div class="mx-steps__panel ">
108
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
188
+ <div class="mx-steps__panel">
189
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
109
190
  <h4>
110
191
  Motown
111
192
  </h4>
@@ -5,7 +5,7 @@
5
5
  ] %}
6
6
  {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
7
7
  <div{{ attributes }}>
8
- <div class="mx-steps__panel-content mx-container mx-vertical-flow rich-text">
8
+ <div class="mx-steps__panel-content mx-container mx-vertical-flow mx-rich-text">
9
9
  {{ content }}
10
10
  </div>
11
11
  </div>
@@ -12,8 +12,7 @@
12
12
 
13
13
  &::before {
14
14
  content: "";
15
- border: var(--line-width, 2px) solid
16
- var(--line-colour, var(--colour-border));
15
+ border: var(--line-width, 2px) solid var(--line-colour, var(--colour-border));
17
16
  background-color: var(--background, var(--colour-background));
18
17
  border-radius: 100%;
19
18
  inline-size: var(--counter-size, 2rem);
@@ -33,12 +32,8 @@
33
32
  font-size: var(--font-size-s);
34
33
  font-weight: var(--font-weight-bold);
35
34
  line-height: var(--line-height-ui);
36
- inline-size: calc(
37
- var(--counter-size, 2rem) + (var(--line-width, 2px) * 2)
38
- );
39
- block-size: calc(
40
- var(--counter-size, 2rem) + (var(--line-width, 2px) * 2)
41
- );
35
+ inline-size: calc(var(--counter-size, 2rem) + (var(--line-width, 2px) * 2));
36
+ block-size: calc(var(--counter-size, 2rem) + (var(--line-width, 2px) * 2));
42
37
  justify-content: center;
43
38
  inset-block-start: var(--counter-top, 0);
44
39
  inset-inline-start: 0;
@@ -69,9 +64,7 @@
69
64
  content: "";
70
65
  inline-size: var(--line-width, 2px);
71
66
  background-color: var(--line-colour, var(--colour-border));
72
- inset-inline-start: calc(
73
- (var(--counter-size, 2rem) / 2) + (var(--line-width, 2px))
74
- );
67
+ inset-inline-start: calc((var(--counter-size, 2rem) / 2) + (var(--line-width, 2px)));
75
68
  inset-block: 0;
76
69
  position: absolute;
77
70
  }
@@ -58,10 +58,7 @@ export default class Sticky extends HTMLElement {
58
58
  this.rO = new ResizeObserver(entries => {
59
59
  entries.forEach(({ borderBoxSize }) => {
60
60
  const [{ blockSize }] = borderBoxSize
61
- document.body.style.setProperty(
62
- this.offsetPropName,
63
- `${blockSize.toFixed(1)}px`,
64
- )
61
+ document.body.style.setProperty(this.offsetPropName, `${blockSize.toFixed(1)}px`)
65
62
  })
66
63
  })
67
64
  this.rO.observe(this)
@@ -75,16 +72,14 @@ export default class Sticky extends HTMLElement {
75
72
  get trigger(): HTMLDivElement {
76
73
  let trigger: HTMLDivElement | null = this.querySelector(".sticky__trigger")
77
74
  if (!trigger) {
78
- trigger = createElement(
79
- '<div class="sticky__trigger"></div>',
80
- ) as HTMLDivElement
75
+ trigger = createElement('<div class="sticky__trigger"></div>') as HTMLDivElement
81
76
  this.insertAdjacentElement("beforebegin", trigger)
82
77
  }
83
78
  return trigger
84
79
  }
85
80
  }
86
81
 
87
- customElements.define("mx-sticky", Sticky)
82
+ if (!customElements.get("mx-sticky")) customElements.define("mx-sticky", Sticky)
88
83
 
89
84
  declare global {
90
85
  interface HTMLElementTagNameMap {
@@ -3,17 +3,49 @@ import Component from "./sticky.twig"
3
3
  import "./sticky.css"
4
4
  import "./Elements/Sticky"
5
5
 
6
+ /**
7
+ * Helper component for making elements sticky on scroll, this isn't used on its own.
8
+ * For an `is-stuck` state, or a sticky trigger include the `Sticky` element javascript.
9
+ */
6
10
  const meta: Meta<typeof Component> = {
7
11
  tags: ["autodocs"],
8
12
  component: Component,
9
13
  args: {
14
+ className: "mx-sticky",
15
+ offset: 0,
10
16
  content: "I am sticky.",
11
17
  },
18
+ argTypes: {
19
+ className: {
20
+ description: "Apply sticky-ness at a certain breakpoint",
21
+ options: ["mx-sticky", "mx-sticky--m", "mx-sticky--l"],
22
+ type: "string",
23
+ table: {
24
+ defaultValue: { summary: "mx-sticky" },
25
+ },
26
+ },
27
+ content: {
28
+ description: "Content that should be sticky on scroll.",
29
+ control: "text",
30
+ type: {
31
+ name: "string",
32
+ required: true,
33
+ },
34
+ table: {
35
+ type: { summary: "WysiwygText" },
36
+ },
37
+ },
38
+ offset: {
39
+ description: "Optional amount to offset by",
40
+ type: "number",
41
+ table: {
42
+ defaultValue: { summary: "0" },
43
+ },
44
+ },
45
+ },
12
46
  }
13
47
 
14
48
  export default meta
15
49
  type Story = StoryObj<typeof meta>
16
50
 
17
- export const Sticky: Story = {
18
- args: {},
19
- }
51
+ export const Sticky: Story = {}
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Component/Sticky Sticky smoke-test 1`] = `
4
4
  <div class="mx-page default">
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`Component/Sticky Sticky smoke-test 1`] = `
4
4
  <div class="sticky"
@@ -1,3 +1,3 @@
1
- <mx-sticky style="--sticky-offset: 0" offsetPropName="--sticky-offset" class="mx-sticky">
1
+ <mx-sticky style="--sticky-offset: {{ offset|default(0) }}" offsetPropName="--sticky-offset" class="{{ className|default('mx-sticky') }}">
2
2
  {{ content }}
3
3
  </mx-sticky>
@@ -13,16 +13,10 @@ const Tab = ({ id, className, children }: TabProps): JSX.Element => {
13
13
  const handleClick = () => {
14
14
  setActiveTab(id)
15
15
  if (typeof window === "undefined") return
16
- const urlParams: URLSearchParams = new URLSearchParams(
17
- window.location.search,
18
- )
16
+ const urlParams: URLSearchParams = new URLSearchParams(window.location.search)
19
17
  if (urlParams.get("tab") === id) return
20
18
  urlParams.set("tab", id)
21
- window.history.replaceState(
22
- {},
23
- "",
24
- `${window.location.pathname}?${urlParams.toString()}`,
25
- )
19
+ window.history.replaceState({}, "", `${window.location.pathname}?${urlParams.toString()}`)
26
20
  }
27
21
 
28
22
  return (
@@ -7,11 +7,7 @@ type TabPanelProps = PropsWithChildren & {
7
7
  className?: string
8
8
  }
9
9
 
10
- const TabPanel = ({
11
- children,
12
- id,
13
- className = "mx-section--l",
14
- }: TabPanelProps): JSX.Element => {
10
+ const TabPanel = ({ children, id, className = "mx-section--l" }: TabPanelProps): JSX.Element => {
15
11
  const { activeTab } = useTabContext()
16
12
  const isActive: boolean = activeTab === id
17
13
  return (
@@ -4,6 +4,7 @@
4
4
 
5
5
  import DropMenu, { DropMenuEvent } from "../../DropMenu/Elements/DropMenu"
6
6
  import { createElement, makeAnchor } from "../../../Utility/utilities"
7
+ import { PopoverPlacementModifier } from "@pnx-mixtape/ids-shape"
7
8
 
8
9
  type TabsType = {
9
10
  panel: HTMLElement
@@ -67,27 +68,18 @@ export default class Tabs extends HTMLElement {
67
68
  this.controller.abort()
68
69
  }
69
70
 
70
- handleBreakpoint = ({
71
- matches,
72
- }: MediaQueryList | MediaQueryListEvent): void => {
71
+ handleBreakpoint = ({ matches }: MediaQueryList | MediaQueryListEvent): void => {
73
72
  const { signal }: AbortController = this.controller
74
73
  this.dropMenuTrigger.toggleAttribute("hidden", !matches)
75
74
  this.tabList.toggleAttribute("hidden", matches)
76
75
  if (matches) {
77
- this.dropMenuMenu.addEventListener(
78
- "drop-menu-select",
79
- this.handleDropMenuSelect,
80
- { signal },
81
- )
76
+ this.dropMenuMenu.addEventListener("drop-menu-select", this.handleDropMenuSelect, { signal })
82
77
  this.tabList.removeEventListener("click", this.handleClick)
83
78
  this.tabList.removeEventListener("keydown", this.handleKeydown)
84
79
  } else {
85
80
  this.tabList.addEventListener("click", this.handleClick, { signal })
86
81
  this.tabList.addEventListener("keydown", this.handleKeydown, { signal })
87
- this.dropMenuMenu.removeEventListener(
88
- "drop-menu-select",
89
- this.handleDropMenuSelect,
90
- )
82
+ this.dropMenuMenu.removeEventListener("drop-menu-select", this.handleDropMenuSelect)
91
83
  }
92
84
  }
93
85
 
@@ -158,16 +150,18 @@ export default class Tabs extends HTMLElement {
158
150
  tabDropMenu.setAttribute("closeOnClick", "true")
159
151
  const trigger = createElement(`<button
160
152
  id="${name}"
161
- class="mx-drop-menu__trigger ${this.dropTriggerClasses}"
153
+ class="mx-popover__trigger ${this.dropTriggerClasses}"
162
154
  popovertarget="${this.dropMenuId}"
155
+ style="anchor-name: --${this.dropMenuId}"
163
156
  hidden
164
157
  ></button>`)
165
158
  const menu = createElement(
166
159
  `<div
167
- class="mx-drop-menu"
160
+ class="mx-popover mx-drop-menu"
168
161
  id="${this.dropMenuId}"
169
- aria-labelledby="${name}"
170
- anchor="${name}"
162
+ aria-describedby="${name}"
163
+ style="position-anchor: --${this.dropMenuId}"
164
+ data-placement="${PopoverPlacementModifier.BOTTOM_START}"
171
165
  popover
172
166
  role="tablist"
173
167
  ></div>`,
@@ -187,9 +181,7 @@ export default class Tabs extends HTMLElement {
187
181
 
188
182
  get tabList(): HTMLDivElement {
189
183
  this.tabListClasses = this.getAttribute("tabListClasses") || "mx-tabs__list"
190
- const existingTabList: HTMLDivElement = this.querySelector(
191
- '[role="tablist"]:not([popover])',
192
- )
184
+ const existingTabList: HTMLDivElement = this.querySelector('[role="tablist"]:not([popover])')
193
185
  if (existingTabList) return existingTabList
194
186
  const tabList = createElement(
195
187
  `<div class="${this.tabListClasses}" role="tablist" hidden></div>`,
@@ -208,11 +200,15 @@ export default class Tabs extends HTMLElement {
208
200
  }
209
201
 
210
202
  get panels(): NodeListOf<HTMLElement> | null {
211
- const panels: NodeListOf<HTMLElement> | null =
212
- this.querySelectorAll('[role="tabpanel"]')
203
+ const panels: NodeListOf<HTMLElement> | null = this.querySelectorAll("[data-tab]")
213
204
  if (!panels.length) {
214
- throw new Error(`${this.localName} must contain [role="tabpanel"]`)
205
+ throw new Error(`${this.localName} must contain [data-tab]`)
215
206
  }
207
+ panels.forEach(panel => {
208
+ panel.setAttribute("role", "tabpanel")
209
+ panel.setAttribute("tabindex", "0")
210
+ panel.setAttribute("aria-label", panel.getAttribute("data-tab"))
211
+ })
216
212
  return panels
217
213
  }
218
214
 
@@ -240,20 +236,14 @@ export default class Tabs extends HTMLElement {
240
236
  }
241
237
 
242
238
  handleUrlParams = (id: string): void => {
243
- const urlParams: URLSearchParams = new URLSearchParams(
244
- window.location.search,
245
- )
239
+ const urlParams: URLSearchParams = new URLSearchParams(window.location.search)
246
240
  if (urlParams.get("tab") === id) return
247
241
  urlParams.set("tab", id)
248
- window.history.replaceState(
249
- {},
250
- "",
251
- `${window.location.pathname}?${urlParams.toString()}`,
252
- )
242
+ window.history.replaceState({}, "", `${window.location.pathname}?${urlParams.toString()}`)
253
243
  }
254
244
  }
255
245
 
256
- customElements.define("mx-tabs", Tabs)
246
+ if (!customElements.get("mx-tabs")) customElements.define("mx-tabs", Tabs)
257
247
 
258
248
  declare global {
259
249
  interface HTMLElementTagNameMap {
@@ -0,0 +1,52 @@
1
+ import { Meta, StoryObj } from "@storybook/html-vite"
2
+ import Component from "./tab-item.twig"
3
+ import { TabItem as TabItemType } from "@pnx-mixtape/ids-shape"
4
+ import "./tabs.css"
5
+
6
+ /**
7
+ * Tab panel, design to be used in its parent's context (requires javascript).
8
+ */
9
+ const meta: Meta<TabItemType> = {
10
+ tags: ["autodocs", "ids-mvp"],
11
+ component: Component,
12
+ args: {
13
+ id: "tab-1",
14
+ title: "Funk",
15
+ content:
16
+ "Funk is the ipsum dolor sit amet, consectetur adipiscing elit. Proin at finibus velit. Curabitur consequat, dolor venenatis ullamcorper commodo, quam mi iaculis sem, non varius massa risus et enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus non mi lorem. Morbi semper sagittis euismod. Vestibulum non ornare orci.",
17
+ },
18
+ argTypes: {
19
+ id: {
20
+ description: "Unique id for the individual tab panel",
21
+ control: "text",
22
+ type: {
23
+ name: "string",
24
+ required: true,
25
+ },
26
+ },
27
+ title: {
28
+ description: "Label used for the tab button",
29
+ control: "text",
30
+ type: {
31
+ name: "string",
32
+ required: true,
33
+ },
34
+ },
35
+ content: {
36
+ description: "Tab panel content.",
37
+ control: "text",
38
+ type: {
39
+ name: "string",
40
+ required: true,
41
+ },
42
+ table: {
43
+ type: { summary: "WysiwygText" },
44
+ },
45
+ },
46
+ },
47
+ }
48
+
49
+ export default meta
50
+ type Story = StoryObj<TabItemType>
51
+
52
+ export const TabItem: Story = {}
@@ -1,15 +1,25 @@
1
1
  import { Meta, StoryObj } from "@storybook/html-vite"
2
2
  import Component from "./tabs.twig"
3
3
  import TabItem from "./tab-item.twig"
4
+ import { HeadingTypes, Tabs as TabsType } from "@pnx-mixtape/ids-shape"
5
+
4
6
  import "./tabs.css"
5
- import "../DropMenu/drop-menu.css"
6
7
  import "./Elements/Tabs"
7
- import { HeadingTypes, Tabs as TabsType } from "@pnx-mixtape/ids-shape"
8
8
 
9
+ // Deps.
10
+ import "../Popover/popover.css"
11
+ import "../DropMenu/drop-menu.css"
12
+ import Heading from "../../Atom/Heading/heading.twig"
13
+
14
+ /**
15
+ * A Tabs component built from a list of TabItems.
16
+ * Requires the `Tabs` element javascript to build the tab list (collapses into a [DropMenu](/?path=/docs/component-dropmenu--docs) on mobile).
17
+ */
9
18
  const meta: Meta<TabsType> = {
10
19
  tags: ["autodocs", "ids-mvp"],
11
20
  component: Component,
12
21
  args: {
22
+ id: "tab-example",
13
23
  items: [
14
24
  TabItem({
15
25
  id: "tab-1",
@@ -43,17 +53,50 @@ const meta: Meta<TabsType> = {
43
53
  ],
44
54
  },
45
55
  },
46
- deepControls: { enabled: true },
47
56
  },
48
57
  argTypes: {
49
- id: { control: "text" },
50
- // @ts-expect-error The controls follow the shape
51
- "title.title": { control: "text" },
52
- "title.as": { options: Object.values(HeadingTypes), control: "select" },
58
+ id: {
59
+ description: "Unique id for the tab set",
60
+ control: "text",
61
+ type: {
62
+ name: "string",
63
+ required: true,
64
+ },
65
+ },
66
+ items: {
67
+ description: "A list of [TabItem](/?path=/docs/component-tabs-tabitem--docs) objects.",
68
+ type: {
69
+ name: "other",
70
+ required: true,
71
+ value: "array",
72
+ },
73
+ table: {
74
+ type: { summary: "TabItem[]" },
75
+ },
76
+ },
77
+ title: {
78
+ description: "Optional [Heading](/?path=/docs/atom-heading--docs) displayed above the tabs.",
79
+ control: "text",
80
+ table: {
81
+ type: { summary: "Heading" },
82
+ },
83
+ },
53
84
  },
54
85
  }
55
86
 
56
87
  export default meta
57
- type Story = StoryObj<typeof meta>
88
+ type Story = StoryObj<TabsType>
58
89
 
59
90
  export const Tabs: Story = {}
91
+
92
+ /**
93
+ * Can have a heading above the tabs for extra context.
94
+ */
95
+ export const WithHeading: Story = {
96
+ args: {
97
+ title: Heading({
98
+ title: "Tabs heading",
99
+ as: HeadingTypes.TWO,
100
+ }),
101
+ },
102
+ }