@pnx-mixtape/mxds 0.0.12 → 0.0.14

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 (265) hide show
  1. package/dist/build/accordion.entry.js +1 -1
  2. package/dist/build/chunks/{Accordion-DSze7pxN.js → Accordion-Bjaw7SdG.js} +2 -2
  3. package/dist/build/chunks/{Accordion-DSze7pxN.js.map → Accordion-Bjaw7SdG.js.map} +1 -1
  4. package/dist/build/chunks/{disclosure-widget-CQLPJ8Ta.js → disclosure-widget-DwuxsaOS.js} +2 -2
  5. package/dist/build/chunks/{disclosure-widget-CQLPJ8Ta.js.map → disclosure-widget-DwuxsaOS.js.map} +1 -1
  6. package/dist/build/chunks/{drop-menu.entry-BC6x9vst.js → drop-menu.entry-Cxpti_QG.js} +2 -2
  7. package/dist/build/chunks/{drop-menu.entry-BC6x9vst.js.map → drop-menu.entry-Cxpti_QG.js.map} +1 -1
  8. package/dist/build/chunks/{utilities-B4YZb689.js → utilities-DZ_l-he4.js} +1 -49
  9. package/dist/build/chunks/utilities-DZ_l-he4.js.map +1 -0
  10. package/dist/build/dialog.entry.js +1 -1
  11. package/dist/build/drop-menu.entry.js +1 -1
  12. package/dist/build/filters.entry.js +1 -1
  13. package/dist/build/global-alert.entry.js +1 -1
  14. package/dist/build/header.entry.js +2 -2
  15. package/dist/build/in-page-navigation.entry.js +19 -9
  16. package/dist/build/in-page-navigation.entry.js.map +1 -1
  17. package/dist/build/navigation.entry.js +2 -2
  18. package/dist/build/sidebar.css +18 -64
  19. package/dist/build/sticky.entry.js +1 -1
  20. package/dist/build/tabs.entry.js +2 -2
  21. package/package.json +11 -20
  22. package/src/Atom/Background/Backgrounds.stories.ts +13 -1
  23. package/src/Atom/Background/__snapshots__/Backgrounds.stories.ts.snap +157 -81
  24. package/src/Atom/Background/_background.css +16 -10
  25. package/src/Atom/Base.mdx +25 -17
  26. package/src/Atom/Button/Button.stories.ts +1 -4
  27. package/src/Atom/Button/Button.stories.tsx +1 -1
  28. package/src/Atom/Button/__snapshots__/Button.stories.ts.snap +47 -37
  29. package/src/Atom/Button/_buttons-styles.css +7 -7
  30. package/src/Atom/Button/_buttons.css +1 -6
  31. package/src/Atom/DefinitionList/DefinitionList.stories.ts +32 -0
  32. package/src/Atom/DefinitionList/DefinitionList.stories.tsx +1 -1
  33. package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.ts.snap +32 -0
  34. package/src/Atom/DefinitionList/definition-list.twig +9 -0
  35. package/src/Atom/Heading/Heading.stories.ts +1 -1
  36. package/src/Atom/Heading/Heading.stories.tsx +1 -1
  37. package/src/Atom/Heading/__snapshots__/Heading.stories.ts.snap +5 -3
  38. package/src/Atom/Icon/Icon.mdx +1 -1
  39. package/src/Atom/Icon/Icon.stories.ts +1 -1
  40. package/src/Atom/Icon/Icon.stories.tsx +1 -1
  41. package/src/Atom/Icon/Icon.tsx +2 -2
  42. package/src/Atom/Icon/__snapshots__/Icon.stories.ts.snap +14 -8
  43. package/src/Atom/Icon/_icon.css +4 -4
  44. package/src/Atom/Image/Image.stories.ts +1 -1
  45. package/src/Atom/Image/__snapshots__/Image.stories.ts.snap +7 -5
  46. package/src/Atom/Image/_image.css +2 -7
  47. package/src/Atom/Link/Link.stories.ts +1 -1
  48. package/src/Atom/Link/Link.stories.tsx +1 -1
  49. package/src/Atom/Link/__snapshots__/Link.stories.ts.snap +50 -37
  50. package/src/Atom/Link/_links.css +2 -22
  51. package/src/Atom/Link/link.twig +1 -0
  52. package/src/Atom/Media/Media.stories.ts +1 -1
  53. package/src/Atom/Media/Media.stories.tsx +1 -1
  54. package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +25 -21
  55. package/src/Atom/Spacing/Spacing.stories.ts +1 -1
  56. package/src/Atom/Spacing/__snapshots__/Spacing.stories.ts.snap +5 -3
  57. package/src/Atom/Table/Table.stories.ts +1 -1
  58. package/src/Atom/Table/TableResponsive.stories.ts +1 -1
  59. package/src/Atom/Table/__snapshots__/Table.stories.ts.snap +256 -248
  60. package/src/Atom/Table/__snapshots__/TableResponsive.stories.ts.snap +65 -63
  61. package/src/Atom/Text/Text.stories.tsx +1 -1
  62. package/src/Atom/Text/TextSizes.stories.ts +1 -1
  63. package/src/Atom/Text/__snapshots__/TextSizes.stories.ts.snap +59 -55
  64. package/src/Atom/Text/rich-text.twig +9 -0
  65. package/src/Atom/Video/Video.stories.ts +1 -1
  66. package/src/Atom/Video/__snapshots__/Video.stories.ts.snap +9 -7
  67. package/src/Atom/_animated.css +0 -14
  68. package/src/Atom/_generic.css +56 -15
  69. package/src/Atom/base.css +1 -1
  70. package/src/Component/Accordion/Accordion.stories.ts +1 -4
  71. package/src/Component/Accordion/Accordion.stories.tsx +1 -1
  72. package/src/Component/Accordion/__snapshots__/Accordion.stories.ts.snap +60 -56
  73. package/src/Component/Accordion/accordion.css +16 -4
  74. package/src/Component/Breadcrumb/Breadcrumb.stories.ts +1 -1
  75. package/src/Component/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  76. package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.ts.snap +31 -29
  77. package/src/Component/Breadcrumb/breadcrumb.css +4 -0
  78. package/src/Component/Callout/Callout.stories.ts +1 -9
  79. package/src/Component/Callout/__snapshots__/Callout.stories.ts.snap +9 -7
  80. package/src/Component/Card/Card.stories.ts +11 -18
  81. package/src/Component/Card/Card.stories.tsx +1 -1
  82. package/src/Component/Card/Card.tsx +9 -5
  83. package/src/Component/Card/__snapshots__/Card.stories.ts.snap +257 -229
  84. package/src/Component/Card/card.css +36 -33
  85. package/src/Component/Card/card.twig +6 -6
  86. package/src/Component/Carousel/Carousel.stories.ts +201 -0
  87. package/src/Component/Carousel/Elements/Carousel.ts +241 -0
  88. package/src/Component/Carousel/__snapshots__/Carousel.stories.ts.snap +912 -0
  89. package/src/Component/Carousel/carousel.css +119 -0
  90. package/src/Component/Carousel/carousel.twig +27 -0
  91. package/src/Component/ContentBlock/ContentBlock.stories.ts +27 -19
  92. package/src/Component/ContentBlock/ContentBlock.stories.tsx +1 -1
  93. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +153 -93
  94. package/src/Component/Dialog/Dialog.stories.ts +76 -7
  95. package/src/Component/Dialog/Dialog.stories.tsx +1 -1
  96. package/src/Component/Dialog/Elements/Dialog.ts +14 -34
  97. package/src/Component/Dialog/__snapshots__/Dialog.stories.ts.snap +102 -66
  98. package/src/Component/Dialog/dialog.css +31 -19
  99. package/src/Component/Dialog/dialog.twig +14 -15
  100. package/src/Component/DropMenu/DropMenu.stories.ts +1 -1
  101. package/src/Component/DropMenu/DropMenu.stories.tsx +1 -1
  102. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +28 -26
  103. package/src/Component/DropMenu/drop-menu.css +10 -2
  104. package/src/Component/Filters/Filters.stories.ts +1 -4
  105. package/src/Component/Filters/__snapshots__/Filters.stories.ts.snap +397 -389
  106. package/src/Component/Filters/filters.css +14 -5
  107. package/src/Component/GlobalAlert/GlobalAlert.stories.ts +1 -1
  108. package/src/Component/GlobalAlert/GlobalAlert.stories.tsx +1 -1
  109. package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.ts.snap +33 -29
  110. package/src/Component/GlobalAlert/global-alert.css +2 -2
  111. package/src/Component/HeroBanner/HeroBanner.stories.ts +1 -4
  112. package/src/Component/HeroBanner/HeroBanner.stories.tsx +1 -1
  113. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +68 -64
  114. package/src/Component/HeroBanner/hero-banner.css +6 -1
  115. package/src/Component/HeroBanner/hero-banner.twig +3 -4
  116. package/src/Component/InPageAlert/InPageAlert.stories.ts +1 -1
  117. package/src/Component/InPageAlert/InPageAlert.stories.tsx +1 -1
  118. package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.ts.snap +10 -8
  119. package/src/Component/InPageAlert/in-page-alert.css +8 -8
  120. package/src/Component/InPageNavigation/Elements/InPageNavigation.ts +19 -9
  121. package/src/Component/InPageNavigation/InPageNavigation.stories.ts +30 -5
  122. package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +1 -1
  123. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +64 -101
  124. package/src/Component/InPageNavigation/in-page-navigation.twig +5 -1
  125. package/src/Component/InPageNavigation/twig/content-example.twig +4 -12
  126. package/src/Component/LinkList/LinkList.stories.ts +1 -1
  127. package/src/Component/LinkList/LinkList.stories.tsx +1 -1
  128. package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +31 -29
  129. package/src/Component/ListItem/ListItem.stories.ts +2 -4
  130. package/src/Component/ListItem/ListItem.stories.tsx +1 -1
  131. package/src/Component/ListItem/__snapshots__/ListItem.stories.ts.snap +162 -148
  132. package/src/Component/ListItem/list-item.css +7 -88
  133. package/src/Component/ListItem/list-item.twig +8 -8
  134. package/src/Component/Navigation/Dropdown.stories.tsx +1 -1
  135. package/src/Component/Navigation/Navigation.stories.ts +1 -1
  136. package/src/Component/Navigation/Navigation.stories.tsx +1 -1
  137. package/src/Component/Navigation/__snapshots__/Navigation.stories.ts.snap +291 -283
  138. package/src/Component/Navigation/_navigation-collapsible.css +11 -14
  139. package/src/Component/Navigation/_navigation-dropdown.css +11 -17
  140. package/src/Component/Pagination/Pagination.stories.ts +1 -1
  141. package/src/Component/Pagination/Pagination.stories.tsx +1 -1
  142. package/src/Component/Pagination/__snapshots__/Pagination.stories.ts.snap +59 -57
  143. package/src/Component/Pagination/pagination.css +2 -8
  144. package/src/Component/ResultsBar/Components/ResultsBarInfo.tsx +28 -0
  145. package/src/Component/ResultsBar/Components/ResultsBarSort.tsx +17 -0
  146. package/src/Component/ResultsBar/ResultsBar.stories.ts +37 -0
  147. package/src/Component/ResultsBar/ResultsBar.stories.tsx +50 -0
  148. package/src/Component/ResultsBar/ResultsBar.tsx +7 -0
  149. package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.ts.snap +54 -0
  150. package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.tsx.snap +53 -0
  151. package/src/Component/ResultsBar/results-bar.css +19 -0
  152. package/src/Component/ResultsBar/results-bar.twig +24 -0
  153. package/src/Component/SideNavigation/SideNavigation.stories.ts +2 -2
  154. package/src/Component/SideNavigation/__snapshots__/SideNavigation.stories.ts.snap +82 -79
  155. package/src/Component/SideNavigation/side-navigation.css +2 -8
  156. package/src/Component/SideNavigation/side-navigation.twig +1 -1
  157. package/src/Component/SocialLinks/SocialLinks.stories.ts +1 -1
  158. package/src/Component/SocialLinks/__snapshots__/SocialLinks.stories.ts.snap +30 -28
  159. package/src/Component/Steps/Steps.stories.ts +1 -1
  160. package/src/Component/Steps/__snapshots__/Steps.stories.ts.snap +86 -78
  161. package/src/Component/Steps/steps.css +1 -1
  162. package/src/Component/Sticky/Sticky.stories.ts +1 -1
  163. package/src/Component/Sticky/Sticky.stories.tsx +1 -1
  164. package/src/Component/Sticky/__snapshots__/Sticky.stories.ts.snap +9 -7
  165. package/src/Component/Tabs/Tabs.stories.ts +1 -1
  166. package/src/Component/Tabs/Tabs.stories.tsx +1 -1
  167. package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +73 -71
  168. package/src/Component/Tabs/tabs.css +14 -21
  169. package/src/Component/Tag/Tag.stories.ts +1 -1
  170. package/src/Component/Tag/Tag.stories.tsx +1 -1
  171. package/src/Component/Tag/__snapshots__/Tag.stories.ts.snap +59 -53
  172. package/src/Component/Tag/tag.css +6 -6
  173. package/src/Component/Tile/Tile.stories.ts +38 -12
  174. package/src/Component/Tile/Tile.stories.tsx +2 -2
  175. package/src/Component/Tile/Tile.tsx +30 -17
  176. package/src/Component/Tile/__snapshots__/Tile.stories.ts.snap +49 -75
  177. package/src/Form/Checkbox/Checkbox.stories.ts +1 -1
  178. package/src/Form/Checkbox/FormCheckbox.stories.tsx +1 -1
  179. package/src/Form/Checkbox/__snapshots__/Checkbox.stories.ts.snap +23 -19
  180. package/src/Form/Description/Description.stories.ts +1 -1
  181. package/src/Form/Description/FormDescription.stories.tsx +1 -1
  182. package/src/Form/Description/FormStatus.stories.ts +1 -1
  183. package/src/Form/Description/__snapshots__/Description.stories.ts.snap +7 -5
  184. package/src/Form/Description/__snapshots__/FormStatus.stories.ts.snap +14 -10
  185. package/src/Form/Form/Form.stories.tsx +1 -1
  186. package/src/Form/Form/FormTitle.stories.tsx +1 -1
  187. package/src/Form/FormItem/FormItem.stories.ts +1 -4
  188. package/src/Form/FormItem/FormItem.stories.tsx +1 -1
  189. package/src/Form/FormItem/__snapshots__/FormItem.stories.ts.snap +119 -109
  190. package/src/Form/Label/FormLabel.stories.tsx +1 -1
  191. package/src/Form/Label/FormLabel.tsx +1 -1
  192. package/src/Form/Label/Label.stories.ts +1 -1
  193. package/src/Form/Label/__snapshots__/Label.stories.ts.snap +21 -15
  194. package/src/Form/Radio/FormRadio.stories.tsx +1 -1
  195. package/src/Form/Radio/Radio.stories.ts +1 -1
  196. package/src/Form/Radio/__snapshots__/Radio.stories.ts.snap +55 -51
  197. package/src/Form/Search/Search.stories.ts +3 -31
  198. package/src/Form/Search/__snapshots__/Search.stories.ts.snap +23 -21
  199. package/src/Form/Search/search-form.twig +5 -2
  200. package/src/Form/Select/FormSelect.stories.tsx +1 -1
  201. package/src/Form/Select/FormSelect.tsx +1 -1
  202. package/src/Form/Select/Select.stories.ts +1 -1
  203. package/src/Form/Select/__snapshots__/Select.stories.ts.snap +18 -16
  204. package/src/Form/TextInput/FormText.stories.tsx +1 -1
  205. package/src/Form/TextInput/InputDivider.stories.ts +1 -1
  206. package/src/Form/TextInput/TextInput.stories.ts +1 -1
  207. package/src/Form/TextInput/__snapshots__/InputDivider.stories.ts.snap +24 -22
  208. package/src/Form/TextInput/__snapshots__/TextInput.stories.ts.snap +18 -14
  209. package/src/Form/Textarea/FormTextarea.stories.tsx +1 -1
  210. package/src/Form/Textarea/Textarea.stories.ts +1 -1
  211. package/src/Form/Textarea/__snapshots__/Textarea.stories.ts.snap +9 -7
  212. package/src/Form/form.css +24 -34
  213. package/src/Layout/Footer/Footer.stories.ts +1 -6
  214. package/src/Layout/Footer/Footer.stories.tsx +1 -1
  215. package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +10 -10
  216. package/src/Layout/Footer/footer.css +2 -6
  217. package/src/Layout/Footer/footer.twig +0 -1
  218. package/src/Layout/Grid/Grid.stories.ts +8 -8
  219. package/src/Layout/Grid/Grid.stories.tsx +1 -1
  220. package/src/Layout/Grid/__snapshots__/Grid.stories.ts.snap +38 -32
  221. package/src/Layout/Grid/container-grid.css +1 -1
  222. package/src/Layout/Grid/grid-item.twig +3 -1
  223. package/src/Layout/Grid/grid.css +1 -1
  224. package/src/Layout/Header/Header.stories.ts +10 -8
  225. package/src/Layout/Header/Header.stories.tsx +1 -1
  226. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +11 -11
  227. package/src/Layout/Header/_header.css +18 -16
  228. package/src/Layout/Header/header.twig +2 -9
  229. package/src/Layout/Masthead/Masthead.stories.ts +1 -3
  230. package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +6 -6
  231. package/src/Layout/Masthead/masthead.twig +0 -2
  232. package/src/Layout/Page/Page.stories.tsx +1 -1
  233. package/src/Layout/Page/page.css +16 -40
  234. package/src/Layout/Page/page.twig +6 -1
  235. package/src/Layout/Section/Background.stories.ts +60 -8
  236. package/src/Layout/Section/Breakouts.stories.ts +1 -3
  237. package/src/Layout/Section/Flow.stories.ts +1 -3
  238. package/src/Layout/Section/Section.stories.ts +1 -6
  239. package/src/Layout/Section/Section.stories.tsx +1 -1
  240. package/src/Layout/Section/SectionGrid.stories.tsx +1 -1
  241. package/src/Layout/Section/__snapshots__/Background.stories.ts.snap +36 -24
  242. package/src/Layout/Section/__snapshots__/Breakouts.stories.ts.snap +54 -52
  243. package/src/Layout/Section/__snapshots__/Flow.stories.ts.snap +18 -18
  244. package/src/Layout/Section/__snapshots__/Section.stories.ts.snap +2 -2
  245. package/src/Layout/Section/section.css +2 -5
  246. package/src/Layout/Section/section.twig +0 -1
  247. package/src/Layout/Section/twig/section-background.twig +29 -10
  248. package/src/Layout/Section/twig/sections-breakout.twig +28 -33
  249. package/src/Layout/Section/twig/sections-flow.twig +17 -17
  250. package/src/Layout/Section/twig/sections-stacked.twig +4 -4
  251. package/src/Layout/Sidebar/Sidebar.stories.ts +1 -5
  252. package/src/Layout/Sidebar/Sidebar.stories.tsx +1 -1
  253. package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.ts.snap +5 -5
  254. package/src/Layout/Sidebar/sidebar.css +16 -35
  255. package/src/Layout/Sidebar/sidebar.twig +4 -2
  256. package/src/Utility/Drupal/drupal.css +1 -5
  257. package/src/constants.css +53 -24
  258. package/src/enums.ts +1 -0
  259. package/src/react.ts +3 -0
  260. package/src/tokens.js +19 -19
  261. package/dist/build/chunks/utilities-B4YZb689.js.map +0 -1
  262. package/src/Component/Tile/tile.twig +0 -10
  263. package/src/Component/Tile/tiles.css +0 -58
  264. package/src/Component/Tile/twig/tiles.twig +0 -18
  265. package/src/Layout/images/mixtape-logo.png +0 -0
@@ -1,4 +1,4 @@
1
- import "./chunks/Accordion-DSze7pxN.js";
1
+ import "./chunks/Accordion-Bjaw7SdG.js";
2
2
  class AccordionGroup extends HTMLElement {
3
3
  constructor() {
4
4
  super();
@@ -1,4 +1,4 @@
1
- import { m as makeAnchor } from "./utilities-B4YZb689.js";
1
+ import { m as makeAnchor } from "./utilities-DZ_l-he4.js";
2
2
  class Accordion extends HTMLElement {
3
3
  constructor() {
4
4
  super();
@@ -58,4 +58,4 @@ customElements.define("mx-accordion", Accordion);
58
58
  export {
59
59
  Accordion as A
60
60
  };
61
- //# sourceMappingURL=Accordion-DSze7pxN.js.map
61
+ //# sourceMappingURL=Accordion-Bjaw7SdG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion-DSze7pxN.js","sources":["../../../src/Component/Accordion/Elements/Accordion.ts"],"sourcesContent":["/**\n * Accordion\n * @file Support opening on hash, adding an ID attribute and toggling on print.\n */\n\nimport { makeAnchor } from \"../../../Utility/utilities\"\n\nexport default class Accordion extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n connectedCallback(): void {\n if (!this.details || !this.trigger) return\n\n const { signal }: AbortController = this.controller\n document.addEventListener(\"beforeprint\", this.handleOpen, {\n signal,\n })\n document.addEventListener(\"afterprint\", this.handleClose, {\n signal,\n })\n this.handleHash()\n document.addEventListener(\"hashchange\", this.handleHash, { signal })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleOpen = (): void => {\n if (!this.details) return\n this.details.open = true\n }\n\n handleClose = (): void => {\n if (!this.details) return\n this.details.open = false\n }\n\n handleHash = (): void => {\n const { hash }: Location = window.location\n if (hash && hash === `#${this.details?.id}`) {\n this.handleOpen()\n }\n }\n\n get details(): HTMLDetailsElement | null {\n const details: HTMLDetailsElement | null = this.querySelector(\"details\")\n if (!details) {\n throw new Error(`${this.localName} must contain a <details> element.`)\n }\n details.id = details.id || this.generatedId()\n return details\n }\n\n get trigger(): HTMLElement | null {\n const trigger: HTMLElement | null = this.querySelector(\"summary\")\n if (!trigger) {\n throw new Error(`${this.localName} must contain a <summary> element.`)\n }\n return trigger\n }\n\n generatedId = (): string => {\n const string: string | undefined = this.trigger?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n}\n\ncustomElements.define(\"mx-accordion\", Accordion)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-accordion\": Accordion\n }\n}\n"],"names":[],"mappings":";AAOA,MAAqB,kBAAkB,YAAY;AAAA,EAIjD,cAAc;AACN;AAuBR,SAAA,aAAa,MAAY;AACnB,UAAA,CAAC,KAAK,QAAS;AACnB,WAAK,QAAQ,OAAO;AAAA,IAAA;AAGtB,SAAA,cAAc,MAAY;AACpB,UAAA,CAAC,KAAK,QAAS;AACnB,WAAK,QAAQ,OAAO;AAAA,IAAA;AAGtB,SAAA,aAAa,MAAY;AACjB,YAAA,EAAE,KAAK,IAAc,OAAO;AAClC,UAAI,QAAQ,SAAS,IAAI,KAAK,SAAS,EAAE,IAAI;AAC3C,aAAK,WAAW;AAAA,MAClB;AAAA,IAAA;AAoBF,SAAA,cAAc,MAAc;AAC1B,YAAM,SAA6B,KAAK,SAAS,aAAa,KAAK;AACnE,aAAO,CAAC,SAAS,KAAK,WAAW,MAAM;AAAA,IAAA;AA1DlC,SAAA,aAAa,KAAK;AAClB,SAAA,aAAa,IAAI;EACxB;AAAA,EAEA,oBAA0B;AACxB,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAS;AAE9B,UAAA,EAAE,OAAO,IAAqB,KAAK;AAChC,aAAA,iBAAiB,eAAe,KAAK,YAAY;AAAA,MACxD;AAAA,IAAA,CACD;AACQ,aAAA,iBAAiB,cAAc,KAAK,aAAa;AAAA,MACxD;AAAA,IAAA,CACD;AACD,SAAK,WAAW;AAChB,aAAS,iBAAiB,cAAc,KAAK,YAAY,EAAE,QAAQ;AAAA,EACrE;AAAA,EAEA,uBAA6B;AAC3B,SAAK,WAAW;EAClB;AAAA,EAmBA,IAAI,UAAqC;AACjC,UAAA,UAAqC,KAAK,cAAc,SAAS;AACvE,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,oCAAoC;AAAA,IACvE;AACA,YAAQ,KAAK,QAAQ,MAAM,KAAK,YAAY;AACrC,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,UAA8B;AAC1B,UAAA,UAA8B,KAAK,cAAc,SAAS;AAChE,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,oCAAoC;AAAA,IACvE;AACO,WAAA;AAAA,EACT;AAMF;AAEA,eAAe,OAAO,gBAAgB,SAAS;"}
1
+ {"version":3,"file":"Accordion-Bjaw7SdG.js","sources":["../../../src/Component/Accordion/Elements/Accordion.ts"],"sourcesContent":["/**\n * Accordion\n * @file Support opening on hash, adding an ID attribute and toggling on print.\n */\n\nimport { makeAnchor } from \"../../../Utility/utilities\"\n\nexport default class Accordion extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n connectedCallback(): void {\n if (!this.details || !this.trigger) return\n\n const { signal }: AbortController = this.controller\n document.addEventListener(\"beforeprint\", this.handleOpen, {\n signal,\n })\n document.addEventListener(\"afterprint\", this.handleClose, {\n signal,\n })\n this.handleHash()\n document.addEventListener(\"hashchange\", this.handleHash, { signal })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleOpen = (): void => {\n if (!this.details) return\n this.details.open = true\n }\n\n handleClose = (): void => {\n if (!this.details) return\n this.details.open = false\n }\n\n handleHash = (): void => {\n const { hash }: Location = window.location\n if (hash && hash === `#${this.details?.id}`) {\n this.handleOpen()\n }\n }\n\n get details(): HTMLDetailsElement | null {\n const details: HTMLDetailsElement | null = this.querySelector(\"details\")\n if (!details) {\n throw new Error(`${this.localName} must contain a <details> element.`)\n }\n details.id = details.id || this.generatedId()\n return details\n }\n\n get trigger(): HTMLElement | null {\n const trigger: HTMLElement | null = this.querySelector(\"summary\")\n if (!trigger) {\n throw new Error(`${this.localName} must contain a <summary> element.`)\n }\n return trigger\n }\n\n generatedId = (): string => {\n const string: string | undefined = this.trigger?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n}\n\ncustomElements.define(\"mx-accordion\", Accordion)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-accordion\": Accordion\n }\n}\n"],"names":[],"mappings":";AAOA,MAAqB,kBAAkB,YAAY;AAAA,EAIjD,cAAc;AACN;AAuBR,SAAA,aAAa,MAAY;AACnB,UAAA,CAAC,KAAK,QAAS;AACnB,WAAK,QAAQ,OAAO;AAAA,IAAA;AAGtB,SAAA,cAAc,MAAY;AACpB,UAAA,CAAC,KAAK,QAAS;AACnB,WAAK,QAAQ,OAAO;AAAA,IAAA;AAGtB,SAAA,aAAa,MAAY;AACjB,YAAA,EAAE,KAAK,IAAc,OAAO;AAClC,UAAI,QAAQ,SAAS,IAAI,KAAK,SAAS,EAAE,IAAI;AAC3C,aAAK,WAAW;AAAA,MAClB;AAAA,IAAA;AAoBF,SAAA,cAAc,MAAc;AAC1B,YAAM,SAA6B,KAAK,SAAS,aAAa,KAAK;AACnE,aAAO,CAAC,SAAS,KAAK,WAAW,MAAM;AAAA,IAAA;AA1DlC,SAAA,aAAa,KAAK;AAClB,SAAA,aAAa,IAAI;EACxB;AAAA,EAEA,oBAA0B;AACxB,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,QAAS;AAE9B,UAAA,EAAE,OAAO,IAAqB,KAAK;AAChC,aAAA,iBAAiB,eAAe,KAAK,YAAY;AAAA,MACxD;AAAA,IAAA,CACD;AACQ,aAAA,iBAAiB,cAAc,KAAK,aAAa;AAAA,MACxD;AAAA,IAAA,CACD;AACD,SAAK,WAAW;AAChB,aAAS,iBAAiB,cAAc,KAAK,YAAY,EAAE,QAAQ;AAAA,EACrE;AAAA,EAEA,uBAA6B;AAC3B,SAAK,WAAW;EAClB;AAAA,EAmBA,IAAI,UAAqC;AACjC,UAAA,UAAqC,KAAK,cAAc,SAAS;AACvE,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,oCAAoC;AAAA,IACvE;AACA,YAAQ,KAAK,QAAQ,MAAM,KAAK,YAAY;AACrC,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,UAA8B;AAC1B,UAAA,UAA8B,KAAK,cAAc,SAAS;AAChE,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,oCAAoC;AAAA,IACvE;AACO,WAAA;AAAA,EACT;AAMF;AAEA,eAAe,OAAO,gBAAgB,SAAS;"}
@@ -1,4 +1,4 @@
1
- import { m as makeAnchor } from "./utilities-B4YZb689.js";
1
+ import { m as makeAnchor } from "./utilities-DZ_l-he4.js";
2
2
  class DisclosureWidget {
3
3
  constructor(trigger, element, overrides, context = document) {
4
4
  this.init = () => {
@@ -121,4 +121,4 @@ class DisclosureWidget {
121
121
  export {
122
122
  DisclosureWidget as D
123
123
  };
124
- //# sourceMappingURL=disclosure-widget-CQLPJ8Ta.js.map
124
+ //# sourceMappingURL=disclosure-widget-DwuxsaOS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"disclosure-widget-CQLPJ8Ta.js","sources":["../../../src/Utility/Elements/disclosure-widget.ts"],"sourcesContent":["/**\n * Class for a generic Disclosure Widget.\n */\nimport { makeAnchor } from \"../utilities\"\n\ntype DisclosureWidgetOptions = {\n attribute?: string\n shouldPreventDefault?: boolean\n setInitialAttribute?: boolean\n clickEvent?: \"click\" | \"mouseover\"\n}\n\nexport type DisclosureWidgetEvent = {\n isOpen: boolean\n id: string\n options: DisclosureWidgetOptions\n target: Element\n}\n\nexport default class DisclosureWidget {\n options: DisclosureWidgetOptions\n context: Document | Element\n trigger: Element & { disclosureWidget?: DisclosureWidget }\n element: Element\n id: string\n isOpen?: boolean\n attached?: boolean\n\n constructor(\n trigger: Element,\n element: Element,\n overrides?: DisclosureWidgetOptions,\n context: Element | Document = document,\n ) {\n if (!trigger) {\n throw new Error(\"toggle is required.\")\n }\n if (!element) {\n throw new Error(\"element is required.\")\n }\n const options: DisclosureWidgetOptions = {\n attribute: \"inert\",\n shouldPreventDefault: true,\n setInitialAttribute: true,\n clickEvent: \"click\",\n }\n\n this.options = { ...options, ...overrides }\n this.context = context || document\n this.trigger = trigger\n this.element = element\n this.id = this.element.id || this.generatedId()\n }\n\n init = (): void => {\n if (Object.prototype.hasOwnProperty.call(this.trigger, \"disclosureWidget\"))\n return\n const { attribute, setInitialAttribute } = this.options\n this.trigger.disclosureWidget = this\n if (setInitialAttribute) this.element.setAttribute(attribute, \"\")\n this.attach()\n }\n\n handleToggle = (): void => {\n const { attribute, setInitialAttribute } = this.options\n this.element.toggleAttribute(attribute)\n const hasAttribute: boolean = this.element.hasAttribute(attribute)\n this.isOpen = setInitialAttribute ? !hasAttribute : hasAttribute\n this.trigger.setAttribute(\"aria-expanded\", String(this.isOpen))\n const newEvent: CustomEvent<DisclosureWidgetEvent> = new CustomEvent(\n \"disclosure-toggle\",\n {\n bubbles: true,\n cancelable: true,\n detail: {\n isOpen: this.isOpen,\n id: this.id,\n options: this.options,\n target: this.element,\n },\n },\n )\n this.trigger.dispatchEvent(newEvent)\n }\n\n handleMouse = (event: MouseEvent): void => {\n const { currentTarget, type, relatedTarget } = event\n\n if (type === \"mouseover\" || type === \"mouseout\") {\n const triggerParent = this.trigger.parentNode\n if (\n triggerParent !== currentTarget ||\n triggerParent.contains(relatedTarget as HTMLElement)\n )\n return\n } else if (this.trigger !== currentTarget) return\n\n const { shouldPreventDefault } = this.options\n this.handleToggle()\n if (shouldPreventDefault) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n\n handleKeyboard = (event: KeyboardEvent): void => {\n const { key, target } = event\n if (this.trigger !== target) return\n const { isOpen } = this\n const { shouldPreventDefault } = this.options\n\n switch (key) {\n // Down/Enter should open it.\n case \"ArrowDown\":\n case \"Enter\":\n if (!isOpen) this.handleToggle()\n if (shouldPreventDefault) event.preventDefault()\n break\n\n // Up/Esc should close it.\n case \"ArrowUp\":\n case \"Escape\":\n if (isOpen) this.handleToggle()\n if (shouldPreventDefault) event.preventDefault()\n break\n\n default:\n break\n }\n }\n\n attach = (): void => {\n if (this.attached) return\n const { clickEvent } = this.options\n if (clickEvent === \"mouseover\") {\n const parent = this.trigger.parentNode\n parent.addEventListener(\"mouseover\", this.handleMouse)\n parent.addEventListener(\"mouseout\", this.handleMouse)\n } else {\n this.trigger.addEventListener(\"click\", this.handleMouse)\n }\n this.trigger.addEventListener(\"keydown\", this.handleKeyboard)\n\n this.trigger.setAttribute(\"aria-expanded\", \"false\")\n if (!this.trigger.hasAttribute(\"aria-controls\"))\n this.trigger.setAttribute(\"aria-controls\", this.id)\n this.attached = true\n }\n\n detach = (): void => {\n if (!this.attached) return\n if (this.isOpen) {\n this.handleToggle()\n }\n const { clickEvent } = this.options\n if (clickEvent === \"mouseover\") {\n const parent = this.trigger.parentNode\n parent.removeEventListener(\"mouseover\", this.handleMouse)\n parent.removeEventListener(\"mouseout\", this.handleMouse)\n } else {\n this.trigger.removeEventListener(\"click\", this.handleMouse)\n }\n this.trigger.removeEventListener(\"keydown\", this.handleKeyboard)\n\n this.trigger.removeAttribute(\"aria-expanded\")\n this.attached = false\n }\n\n generatedId = (): string => {\n const string: string | undefined = this.trigger?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"disclosure-widget-DwuxsaOS.js","sources":["../../../src/Utility/Elements/disclosure-widget.ts"],"sourcesContent":["/**\n * Class for a generic Disclosure Widget.\n */\nimport { makeAnchor } from \"../utilities\"\n\ntype DisclosureWidgetOptions = {\n attribute?: string\n shouldPreventDefault?: boolean\n setInitialAttribute?: boolean\n clickEvent?: \"click\" | \"mouseover\"\n}\n\nexport type DisclosureWidgetEvent = {\n isOpen: boolean\n id: string\n options: DisclosureWidgetOptions\n target: Element\n}\n\nexport default class DisclosureWidget {\n options: DisclosureWidgetOptions\n context: Document | Element\n trigger: Element & { disclosureWidget?: DisclosureWidget }\n element: Element\n id: string\n isOpen?: boolean\n attached?: boolean\n\n constructor(\n trigger: Element,\n element: Element,\n overrides?: DisclosureWidgetOptions,\n context: Element | Document = document,\n ) {\n if (!trigger) {\n throw new Error(\"toggle is required.\")\n }\n if (!element) {\n throw new Error(\"element is required.\")\n }\n const options: DisclosureWidgetOptions = {\n attribute: \"inert\",\n shouldPreventDefault: true,\n setInitialAttribute: true,\n clickEvent: \"click\",\n }\n\n this.options = { ...options, ...overrides }\n this.context = context || document\n this.trigger = trigger\n this.element = element\n this.id = this.element.id || this.generatedId()\n }\n\n init = (): void => {\n if (Object.prototype.hasOwnProperty.call(this.trigger, \"disclosureWidget\"))\n return\n const { attribute, setInitialAttribute } = this.options\n this.trigger.disclosureWidget = this\n if (setInitialAttribute) this.element.setAttribute(attribute, \"\")\n this.attach()\n }\n\n handleToggle = (): void => {\n const { attribute, setInitialAttribute } = this.options\n this.element.toggleAttribute(attribute)\n const hasAttribute: boolean = this.element.hasAttribute(attribute)\n this.isOpen = setInitialAttribute ? !hasAttribute : hasAttribute\n this.trigger.setAttribute(\"aria-expanded\", String(this.isOpen))\n const newEvent: CustomEvent<DisclosureWidgetEvent> = new CustomEvent(\n \"disclosure-toggle\",\n {\n bubbles: true,\n cancelable: true,\n detail: {\n isOpen: this.isOpen,\n id: this.id,\n options: this.options,\n target: this.element,\n },\n },\n )\n this.trigger.dispatchEvent(newEvent)\n }\n\n handleMouse = (event: MouseEvent): void => {\n const { currentTarget, type, relatedTarget } = event\n\n if (type === \"mouseover\" || type === \"mouseout\") {\n const triggerParent = this.trigger.parentNode\n if (\n triggerParent !== currentTarget ||\n triggerParent.contains(relatedTarget as HTMLElement)\n )\n return\n } else if (this.trigger !== currentTarget) return\n\n const { shouldPreventDefault } = this.options\n this.handleToggle()\n if (shouldPreventDefault) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n\n handleKeyboard = (event: KeyboardEvent): void => {\n const { key, target } = event\n if (this.trigger !== target) return\n const { isOpen } = this\n const { shouldPreventDefault } = this.options\n\n switch (key) {\n // Down/Enter should open it.\n case \"ArrowDown\":\n case \"Enter\":\n if (!isOpen) this.handleToggle()\n if (shouldPreventDefault) event.preventDefault()\n break\n\n // Up/Esc should close it.\n case \"ArrowUp\":\n case \"Escape\":\n if (isOpen) this.handleToggle()\n if (shouldPreventDefault) event.preventDefault()\n break\n\n default:\n break\n }\n }\n\n attach = (): void => {\n if (this.attached) return\n const { clickEvent } = this.options\n if (clickEvent === \"mouseover\") {\n const parent = this.trigger.parentNode\n parent.addEventListener(\"mouseover\", this.handleMouse)\n parent.addEventListener(\"mouseout\", this.handleMouse)\n } else {\n this.trigger.addEventListener(\"click\", this.handleMouse)\n }\n this.trigger.addEventListener(\"keydown\", this.handleKeyboard)\n\n this.trigger.setAttribute(\"aria-expanded\", \"false\")\n if (!this.trigger.hasAttribute(\"aria-controls\"))\n this.trigger.setAttribute(\"aria-controls\", this.id)\n this.attached = true\n }\n\n detach = (): void => {\n if (!this.attached) return\n if (this.isOpen) {\n this.handleToggle()\n }\n const { clickEvent } = this.options\n if (clickEvent === \"mouseover\") {\n const parent = this.trigger.parentNode\n parent.removeEventListener(\"mouseover\", this.handleMouse)\n parent.removeEventListener(\"mouseout\", this.handleMouse)\n } else {\n this.trigger.removeEventListener(\"click\", this.handleMouse)\n }\n this.trigger.removeEventListener(\"keydown\", this.handleKeyboard)\n\n this.trigger.removeAttribute(\"aria-expanded\")\n this.attached = false\n }\n\n generatedId = (): string => {\n const string: string | undefined = this.trigger?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { m as makeAnchor } from "./utilities-B4YZb689.js";
1
+ import { m as makeAnchor } from "./utilities-DZ_l-he4.js";
2
2
  import { K as Keyboard } from "./keyboard-C73DHu0c.js";
3
3
  class DropMenu extends HTMLElement {
4
4
  constructor() {
@@ -129,4 +129,4 @@ customElements.define("mx-dropmenu", DropMenu);
129
129
  export {
130
130
  DropMenu as D
131
131
  };
132
- //# sourceMappingURL=drop-menu.entry-BC6x9vst.js.map
132
+ //# sourceMappingURL=drop-menu.entry-Cxpti_QG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drop-menu.entry-BC6x9vst.js","sources":["../../../src/Component/DropMenu/Elements/DropMenu.ts"],"sourcesContent":["/**\n * DropMenu\n * @file Create a DropMenu using the Popover and Anchor APIs\n */\n\nimport { Keyboard, makeAnchor } from \"../../../Utility/utilities\"\n\nexport type DropMenuEvent = CustomEvent<{\n event: MouseEvent | KeyboardEvent\n target: HTMLButtonElement | HTMLAnchorElement\n}>\n\nexport default class DropMenu extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n keyboard: Keyboard = new Keyboard()\n closeOnClick: boolean\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n async connectedCallback() {\n if (!this.menu || !this.trigger) return\n\n // Polyfill anchor (everywhere so far).\n if (!(\"anchorName\" in document.documentElement.style)) {\n const { default: Polyfills } = await import(\"../polyfills.js\")\n new Polyfills(this.menu) // eslint-disable-line no-new\n }\n // Polyfill popover (FF only)\n if (!Object.hasOwn(HTMLElement, \"popover\")) {\n await import(\"@oddbird/popover-polyfill\")\n }\n this.closeOnClick = this.hasAttribute(\"closeonclick\")\n\n const { signal }: AbortController = this.controller\n document.addEventListener(\n \"click\",\n (event: MouseEvent): void => {\n const { target } = event\n if (\n (target as HTMLElement) !== this.menu &&\n ![...this.items].includes(\n target as HTMLButtonElement | HTMLAnchorElement,\n )\n )\n return\n this.handleSelect(event)\n event.preventDefault()\n },\n {\n signal,\n },\n )\n\n document.addEventListener(\n \"keydown\",\n (event: KeyboardEvent): void => {\n const { target, key } = event\n if (\n (target as HTMLElement) !== this.menu &&\n ![...this.items].includes(\n target as HTMLButtonElement | HTMLAnchorElement,\n )\n )\n return\n if (key === \"Enter\") this.handleSelect(event)\n event.preventDefault()\n },\n {\n signal,\n },\n )\n\n this.keyboard.attachEventListeners(signal)\n this.menu.addEventListener(\"focusin\", this.attachKeyboardMenu, {\n signal,\n })\n this.menu.addEventListener(\"focusout\", this.detachKeyboardMenu, {\n signal,\n })\n this.menu.addEventListener(\"toggle\", this.handleToggle, {\n signal,\n })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n this.keyboard.detachMenu()\n }\n\n handleSelect = (event: MouseEvent | KeyboardEvent): void => {\n const target = event.target as HTMLButtonElement | HTMLAnchorElement\n this.items.forEach(item => {\n if (!(item instanceof HTMLButtonElement)) return\n item.setAttribute(\"aria-checked\", String(item === target))\n })\n const newEvent: DropMenuEvent = new CustomEvent(\"drop-menu-select\", {\n bubbles: true,\n cancelable: true,\n detail: {\n event,\n target,\n },\n })\n this.menu.dispatchEvent(newEvent)\n if (this.closeOnClick) this.menu.togglePopover()\n }\n\n handleToggle = ({ newState }: ToggleEvent): void => {\n const handleClose = () => this.menu.togglePopover()\n if (newState === \"open\") {\n this.keyboard.attachPopup(this.menu.id, handleClose)\n } else {\n this.keyboard.detachPopup(this.menu.id)\n }\n }\n\n attachKeyboardMenu = (): void => {\n this.keyboard.attachMenu(this.menu, this.items)\n }\n\n detachKeyboardMenu = (): void => {\n this.keyboard.detachMenu()\n }\n\n get menu(): HTMLDivElement | null {\n const menu: HTMLDivElement | null = this.querySelector(\"[popover]\")\n if (!menu) {\n throw new Error(`${this.localName} must contain a <div popover> element.`)\n }\n menu.id = menu.id || this.generatedId()\n return menu\n }\n\n get items(): NodeListOf<HTMLButtonElement | HTMLAnchorElement> {\n const items: NodeListOf<HTMLButtonElement | HTMLAnchorElement> =\n this.menu.querySelectorAll(\":scope > *\")\n if (!items) {\n throw new Error(`${this.localName} must contain some menu items.`)\n }\n return items\n }\n\n get trigger(): HTMLButtonElement | null {\n const trigger: HTMLButtonElement | null = this.querySelector(\n `[popovertarget=${this.menu?.id}]`,\n )\n if (!trigger) {\n throw new Error(\n `${this.localName} must contain a <button popovertarget=\"${this.menu.id}\">`,\n )\n }\n return trigger\n }\n\n generatedId = (): string => {\n const string: string | undefined = this.trigger?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n}\n\ncustomElements.define(\"mx-dropmenu\", DropMenu)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-dropmenu\": DropMenu\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drop-menu.entry-Cxpti_QG.js","sources":["../../../src/Component/DropMenu/Elements/DropMenu.ts"],"sourcesContent":["/**\n * DropMenu\n * @file Create a DropMenu using the Popover and Anchor APIs\n */\n\nimport { Keyboard, makeAnchor } from \"../../../Utility/utilities\"\n\nexport type DropMenuEvent = CustomEvent<{\n event: MouseEvent | KeyboardEvent\n target: HTMLButtonElement | HTMLAnchorElement\n}>\n\nexport default class DropMenu extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n keyboard: Keyboard = new Keyboard()\n closeOnClick: boolean\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n async connectedCallback() {\n if (!this.menu || !this.trigger) return\n\n // Polyfill anchor (everywhere so far).\n if (!(\"anchorName\" in document.documentElement.style)) {\n const { default: Polyfills } = await import(\"../polyfills.js\")\n new Polyfills(this.menu) // eslint-disable-line no-new\n }\n // Polyfill popover (FF only)\n if (!Object.hasOwn(HTMLElement, \"popover\")) {\n await import(\"@oddbird/popover-polyfill\")\n }\n this.closeOnClick = this.hasAttribute(\"closeonclick\")\n\n const { signal }: AbortController = this.controller\n document.addEventListener(\n \"click\",\n (event: MouseEvent): void => {\n const { target } = event\n if (\n (target as HTMLElement) !== this.menu &&\n ![...this.items].includes(\n target as HTMLButtonElement | HTMLAnchorElement,\n )\n )\n return\n this.handleSelect(event)\n event.preventDefault()\n },\n {\n signal,\n },\n )\n\n document.addEventListener(\n \"keydown\",\n (event: KeyboardEvent): void => {\n const { target, key } = event\n if (\n (target as HTMLElement) !== this.menu &&\n ![...this.items].includes(\n target as HTMLButtonElement | HTMLAnchorElement,\n )\n )\n return\n if (key === \"Enter\") this.handleSelect(event)\n event.preventDefault()\n },\n {\n signal,\n },\n )\n\n this.keyboard.attachEventListeners(signal)\n this.menu.addEventListener(\"focusin\", this.attachKeyboardMenu, {\n signal,\n })\n this.menu.addEventListener(\"focusout\", this.detachKeyboardMenu, {\n signal,\n })\n this.menu.addEventListener(\"toggle\", this.handleToggle, {\n signal,\n })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n this.keyboard.detachMenu()\n }\n\n handleSelect = (event: MouseEvent | KeyboardEvent): void => {\n const target = event.target as HTMLButtonElement | HTMLAnchorElement\n this.items.forEach(item => {\n if (!(item instanceof HTMLButtonElement)) return\n item.setAttribute(\"aria-checked\", String(item === target))\n })\n const newEvent: DropMenuEvent = new CustomEvent(\"drop-menu-select\", {\n bubbles: true,\n cancelable: true,\n detail: {\n event,\n target,\n },\n })\n this.menu.dispatchEvent(newEvent)\n if (this.closeOnClick) this.menu.togglePopover()\n }\n\n handleToggle = ({ newState }: ToggleEvent): void => {\n const handleClose = () => this.menu.togglePopover()\n if (newState === \"open\") {\n this.keyboard.attachPopup(this.menu.id, handleClose)\n } else {\n this.keyboard.detachPopup(this.menu.id)\n }\n }\n\n attachKeyboardMenu = (): void => {\n this.keyboard.attachMenu(this.menu, this.items)\n }\n\n detachKeyboardMenu = (): void => {\n this.keyboard.detachMenu()\n }\n\n get menu(): HTMLDivElement | null {\n const menu: HTMLDivElement | null = this.querySelector(\"[popover]\")\n if (!menu) {\n throw new Error(`${this.localName} must contain a <div popover> element.`)\n }\n menu.id = menu.id || this.generatedId()\n return menu\n }\n\n get items(): NodeListOf<HTMLButtonElement | HTMLAnchorElement> {\n const items: NodeListOf<HTMLButtonElement | HTMLAnchorElement> =\n this.menu.querySelectorAll(\":scope > *\")\n if (!items) {\n throw new Error(`${this.localName} must contain some menu items.`)\n }\n return items\n }\n\n get trigger(): HTMLButtonElement | null {\n const trigger: HTMLButtonElement | null = this.querySelector(\n `[popovertarget=${this.menu?.id}]`,\n )\n if (!trigger) {\n throw new Error(\n `${this.localName} must contain a <button popovertarget=\"${this.menu.id}\">`,\n )\n }\n return trigger\n }\n\n generatedId = (): string => {\n const string: string | undefined = this.trigger?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n}\n\ncustomElements.define(\"mx-dropmenu\", DropMenu)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-dropmenu\": DropMenu\n }\n}\n"],"names":[],"mappings":"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"}
@@ -135,54 +135,6 @@ _IntersectionLoader.create = (selector, callback) => {
135
135
  });
136
136
  };
137
137
  let IntersectionLoader = _IntersectionLoader;
138
- const _BreakpointLoader = class _BreakpointLoader {
139
- constructor(el, callback, options = { mediaQuery: "(max-width: 720px)" }) {
140
- this.init = () => {
141
- this.responsiveCheck(this.breakpoint);
142
- this.breakpoint.addEventListener("change", this.responsiveCheck);
143
- this.fallbackBtn?.addEventListener("click", this.handleClick);
144
- };
145
- this.responsiveCheck = ({ matches }) => {
146
- matches && this.load().catch((error) => this.handleError(error));
147
- };
148
- this.load = async () => {
149
- try {
150
- await this.callback();
151
- } catch (error) {
152
- this.handleError(error);
153
- }
154
- this.breakpoint.removeEventListener("change", this.responsiveCheck);
155
- };
156
- this.handleClick = () => {
157
- this.load().catch((error) => this.handleError(error));
158
- };
159
- this.handleError = (error) => {
160
- console.error(error);
161
- this.errorMsg?.removeAttribute("hidden");
162
- };
163
- if (!el) {
164
- throw new Error("Element is null or empty.");
165
- }
166
- this.el = el;
167
- this.callback = callback;
168
- this.breakpoint = window.matchMedia(options.mediaQuery);
169
- this.options = { ...options };
170
- this.fallbackBtn = this.el.querySelector("[data-load-fallback]");
171
- this.errorMsg = this.el.querySelector("[data-load-error]");
172
- }
173
- };
174
- _BreakpointLoader.create = (selector, callback, options = {}) => {
175
- if (!Object.hasOwn(window, "once")) return;
176
- window.once("breakpoint-loader", selector)?.forEach((el) => {
177
- const loader = new _BreakpointLoader(
178
- el,
179
- callback,
180
- options
181
- );
182
- loader.init();
183
- });
184
- };
185
- let BreakpointLoader = _BreakpointLoader;
186
138
  const makeAnchor = (string, length = 20) => {
187
139
  if (typeof string !== "string" || !string) return "";
188
140
  let id = string.toLowerCase().trim().replace(/\s+/g, "-").replace(/[^-a-z0-9]/g, "").replace(/[\n\r]+|[\s]{2,}/g, "");
@@ -240,4 +192,4 @@ export {
240
192
  handleOutsideClick as h,
241
193
  makeAnchor as m
242
194
  };
243
- //# sourceMappingURL=utilities-B4YZb689.js.map
195
+ //# sourceMappingURL=utilities-DZ_l-he4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities-DZ_l-he4.js","sources":["../../../node_modules/js-cookie/dist/js.cookie.mjs","../../../src/Utility/Elements/io-loader.ts","../../../src/Utility/utilities.ts"],"sourcesContent":["/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Lazy Load on an Intersection Observer\n */\n\nexport default class IntersectionLoader {\n el: HTMLElement\n callback: () => any\n observer: IntersectionObserver\n fallbackBtn?: HTMLButtonElement\n errorMsg?: HTMLElement\n\n constructor(el: HTMLElement, callback: () => any) {\n this.el = el\n this.callback = callback\n this.fallbackBtn = this.el.querySelector(\"[data-load-fallback]\")\n this.errorMsg = this.el.querySelector(\"[data-load-error]\")\n }\n\n init = (): void => {\n this.observer = new IntersectionObserver(items => {\n items.forEach(({ isIntersecting }) => {\n if (isIntersecting) this.load().catch(error => this.handleError(error))\n })\n })\n this.observer.observe(this.el)\n this.fallbackBtn?.addEventListener(\"click\", this.handleClick)\n }\n\n load = async (): Promise<void> => {\n try {\n await this.callback()\n } catch (error) {\n this.handleError(error)\n }\n this.observer.unobserve(this.el)\n }\n\n handleClick = (): void => {\n this.load().catch(error => this.handleError(error))\n }\n\n handleError = (error): void => {\n console.error(error) // eslint-disable-line no-console\n this.errorMsg?.removeAttribute(\"hidden\")\n }\n\n static create = (selector: string, callback: () => any): void => {\n if (!Object.hasOwn(window, \"once\")) return\n window\n .once(\"intersection-loader\", selector)\n ?.forEach((el: HTMLElement): void => {\n const loader: IntersectionLoader = new IntersectionLoader(el, callback)\n loader.init()\n })\n }\n}\n","/* eslint-disable no-console */\n/**\n * @file utilities.\n */\n\nexport { default as DisclosureWidget } from \"./Elements/disclosure-widget\"\nexport type { DisclosureWidgetEvent } from \"./Elements/disclosure-widget\"\nexport { default as Keyboard } from \"./Elements/keyboard\"\nexport { default as CookieCompliance } from \"./Elements/cookie-compliance\"\nexport { default as IntersectionLoader } from \"./Elements/io-loader\"\nexport { default as BreakpointLoader } from \"./Elements/breakpoint-loader\"\n\nexport const makeAnchor = (string: string, length: number = 20): string => {\n if (typeof string !== \"string\" || !string) return \"\"\n // Convert the string to lowercase and remove non-alphanumeric characters.\n let id: string = string\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"-\")\n .replace(/[^-a-z0-9]/g, \"\")\n .replace(/[\\n\\r]+|[\\s]{2,}/g, \"\")\n // Ensure we start the id with a letter.\n // Only run this several times.\n const times: number[] = [...Array(6).keys()]\n times.forEach((): void => {\n if (!id.charAt(0).match(/[a-z]/g)) {\n id = id.substring(1)\n }\n })\n // Cut to the desired length.\n if (length) id = id.substring(0, length + 1)\n\n return id\n}\n\nexport const makeCamelCase = (string: string): string => {\n if (typeof string !== \"string\" || !string) return \"\"\n const output: string = string\n .trim()\n .replace(\n /(?:^\\w|[A-Z]|\\b\\w|\\s+)/g,\n (match: string, index: number): string => {\n if (+match === 0) return \"\"\n return index === 0 ? match.toLowerCase() : match.toUpperCase()\n },\n )\n return output.replace(/[^\\w\\s]/gi, \"\")\n}\n\nexport const isInternalLink = (\n href: string,\n internalHostnames: string[],\n): boolean => {\n if (typeof href !== \"string\" || !href || !Array.isArray(internalHostnames)) {\n return false\n }\n\n try {\n const { hostname }: { hostname: string } = new URL(href)\n return (\n window.location.hostname === hostname ||\n internalHostnames.includes(hostname)\n )\n } catch (error) {\n console.error(error)\n return false\n }\n}\n\nexport const createElement = (string: string): Element | null => {\n try {\n const el: HTMLDivElement = document.createElement(\"div\")\n el.innerHTML = string\n return el.firstElementChild\n } catch (error) {\n console.error(error)\n return null\n }\n}\n\nexport const getElementBox = (\n element: HTMLElement,\n once: boolean = false,\n content: boolean = false,\n): void => {\n const observer: ResizeObserver = new ResizeObserver(entries => {\n entries.forEach(({ contentBoxSize, borderBoxSize }) => {\n const [{ inlineSize, blockSize }] = content\n ? contentBoxSize\n : borderBoxSize\n element.style.setProperty(\"--inline-size\", `${inlineSize.toFixed(1)}px`)\n element.style.setProperty(\"--block-size\", `${blockSize.toFixed(1)}px`)\n if (once) observer.unobserve(element)\n })\n })\n observer.observe(element)\n}\n\nexport const handleOutsideClick = (\n event: MouseEvent,\n container: HTMLElement,\n callback: () => void,\n ignored: HTMLElement[] = [],\n): void => {\n const {\n target,\n clientY,\n clientX,\n }: { target: EventTarget; clientY: number; clientX: number } = event\n // FF treating option click as outside click.\n const isOption: boolean =\n target instanceof HTMLOptionElement || target instanceof HTMLSelectElement\n // Or it's in the ignored list.\n\n const isIgnored: HTMLElement[] = ignored?.filter(\n item => item === target || item.contains(target as HTMLElement),\n )\n // Exit early if we can.\n if (isIgnored.length || isOption) return\n // Check if click is inside the dialog content.\n const obs: IntersectionObserver = new IntersectionObserver(\n ([{ boundingClientRect }]) => {\n const { top, height, width, left } = boundingClientRect\n const isInDialog: boolean =\n top <= clientY &&\n clientY <= top + height &&\n left <= clientX &&\n clientX <= left + width\n\n if (!isInDialog) {\n callback()\n }\n obs.disconnect()\n },\n )\n obs.observe(container)\n}\n\nexport const handleEscape = (\n event: KeyboardEvent,\n callback: () => void,\n): void => {\n const { key } = event\n if (key === \"Escape\") {\n callback()\n }\n}\n\n/* eslint-disable no-unused-vars, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access */\nexport const loadOnReady = (\n callback: (this: Window, ev: Event) => void,\n name: string,\n): void => {\n // @ts-expect-error Drupal is global\n if (Object.hasOwn(window, \"Drupal\") && Object.hasOwn(Drupal, \"behaviors\")) {\n // @ts-expect-error Drupal is global\n Drupal.behaviors[name] = {\n attach: callback,\n }\n return\n }\n window.addEventListener(\"DOMContentLoaded\", callback.bind(document, document))\n}\n"],"names":["converter"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { h as handleOutsideClick, a as handleEscape } from "./chunks/utilities-B4YZb689.js";
1
+ import { h as handleOutsideClick, a as handleEscape } from "./chunks/utilities-DZ_l-he4.js";
2
2
  class Dialog extends HTMLElement {
3
3
  constructor() {
4
4
  super();
@@ -1,2 +1,2 @@
1
- import "./chunks/drop-menu.entry-BC6x9vst.js";
1
+ import "./chunks/drop-menu.entry-Cxpti_QG.js";
2
2
  //# sourceMappingURL=drop-menu.entry.js.map
@@ -1,4 +1,4 @@
1
- import { A as Accordion } from "./chunks/Accordion-DSze7pxN.js";
1
+ import { A as Accordion } from "./chunks/Accordion-Bjaw7SdG.js";
2
2
  class AccordionMobile extends Accordion {
3
3
  constructor() {
4
4
  super();
@@ -1,4 +1,4 @@
1
- import { c as createElement, m as makeAnchor } from "./chunks/utilities-B4YZb689.js";
1
+ import { c as createElement, m as makeAnchor } from "./chunks/utilities-DZ_l-he4.js";
2
2
  class GlobalAlert extends HTMLElement {
3
3
  constructor() {
4
4
  super();
@@ -1,5 +1,5 @@
1
- import { D as DisclosureWidget } from "./chunks/disclosure-widget-CQLPJ8Ta.js";
2
- import "./chunks/utilities-B4YZb689.js";
1
+ import { D as DisclosureWidget } from "./chunks/disclosure-widget-DwuxsaOS.js";
2
+ import "./chunks/utilities-DZ_l-he4.js";
3
3
  class GlobalToggle extends HTMLElement {
4
4
  constructor() {
5
5
  super();
@@ -1,4 +1,4 @@
1
- import { m as makeAnchor, c as createElement } from "./chunks/utilities-B4YZb689.js";
1
+ import { m as makeAnchor, c as createElement } from "./chunks/utilities-DZ_l-he4.js";
2
2
  class InPageNavigation extends HTMLElement {
3
3
  constructor() {
4
4
  super();
@@ -15,13 +15,23 @@ class InPageNavigation extends HTMLElement {
15
15
  }
16
16
  connectedCallback() {
17
17
  if (!this.menu || !this.headings) return;
18
- this.headings.forEach((heading) => {
19
- const listItem = this.generateListItem(heading);
20
- const link = this.generateAnchor(heading);
21
- this.items.push({ link, heading });
22
- listItem.appendChild(link);
23
- this.menu?.appendChild(listItem);
24
- });
18
+ if (!this.links.length) {
19
+ this.headings.forEach((heading) => {
20
+ const listItem = this.generateListItem(heading);
21
+ const link = this.generateAnchor(heading);
22
+ this.items.push({ link, heading });
23
+ listItem.appendChild(link);
24
+ this.menu?.appendChild(listItem);
25
+ });
26
+ } else {
27
+ this.links.forEach((link) => {
28
+ const heading = this.container.querySelector(
29
+ link.href
30
+ );
31
+ if (!heading) return;
32
+ this.items.push({ link, heading });
33
+ });
34
+ }
25
35
  const { signal } = this.controller;
26
36
  this.menu.addEventListener(
27
37
  "click",
@@ -73,7 +83,7 @@ class InPageNavigation extends HTMLElement {
73
83
  const targetID = id || this.generatedId(heading);
74
84
  if (!id) heading.id = targetID;
75
85
  const item = createElement(
76
- `<a href="#${targetID}" class="mx-icon mx-icon--chevron-right">${linkText}</a>`
86
+ `<a href="#${targetID}"><span class="mx-icon mx-icon--chevron-right"></span><span>${linkText}</span></a>`
77
87
  );
78
88
  return item;
79
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"in-page-navigation.entry.js","sources":["../../src/Component/InPageNavigation/Elements/InPageNavigation.ts"],"sourcesContent":["/**\n * DialogBase\n * @file Support opening/closing, and adding a scroll lock to the body.\n */\n\nimport { makeAnchor, createElement } from \"../../../Utility/utilities\"\n\nexport default class InPageNavigation extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n headingLevels: string\n items: { link: HTMLAnchorElement; heading: HTMLHeadingElement }[]\n active: { link: HTMLAnchorElement; heading: HTMLHeadingElement } | undefined\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n this.headingLevels = this.dataset?.headings || \"h2\"\n this.items = []\n }\n\n connectedCallback(): void {\n if (!this.menu || !this.headings) return\n\n this.headings.forEach((heading: HTMLHeadingElement) => {\n const listItem: HTMLLIElement = this.generateListItem(heading)\n const link: HTMLAnchorElement = this.generateAnchor(heading)\n this.items.push({ link, heading })\n listItem.appendChild(link)\n this.menu?.appendChild(listItem)\n })\n\n const { signal }: AbortController = this.controller\n\n // Open on toggle click.\n this.menu.addEventListener(\n \"click\",\n (e: MouseEvent): void => {\n const { target } = e\n if (!(target instanceof HTMLAnchorElement)) return\n this.handleClick(target)\n },\n {\n signal,\n },\n )\n }\n\n disconnectedCallback(): void {\n if (!this.menu || !this.headings) return\n this.menu.textContent = \"\"\n this.items = []\n this.controller.abort()\n }\n\n handleClick = (target: EventTarget | null): void => {\n this.active = this.items.find(item => item.link === target)\n if (!this.links || !this.active) return\n this.links.forEach(link => link.classList.remove(\"is-active\"))\n this.active.link.classList.add(\"is-active\")\n }\n\n get menu(): HTMLUListElement | HTMLOListElement | null {\n const menu: HTMLUListElement | HTMLOListElement | null =\n this.querySelector(\"ul, ol\")\n if (!menu) {\n throw new Error(`${this.localName} must contain a <ul> or <ol> element.`)\n }\n return menu\n }\n\n get container(): HTMLElement | null {\n const selector: string | null = this.getAttribute(\"data-content\")\n if (!selector) {\n throw new Error(\n `${this.localName} must have a [data-content] attribute that contains the content selector.`,\n )\n }\n return this.closest(selector) || this.parentElement.querySelector(selector)\n }\n\n get headings(): NodeListOf<HTMLHeadingElement> | undefined {\n return this.container?.querySelectorAll(this.headingLevels)\n }\n\n get links(): NodeListOf<HTMLAnchorElement> | undefined {\n return this.menu?.querySelectorAll(\"a\")\n }\n\n generatedId(heading: HTMLHeadingElement): string {\n const string: string | undefined = heading?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n\n generateAnchor(heading: HTMLHeadingElement): HTMLAnchorElement {\n const { textContent, id } = heading\n const linkText: string | null =\n heading.getAttribute(\"data-in-page-navigation-title\") || textContent\n const targetID: string = id || this.generatedId(heading)\n if (!id) heading.id = targetID\n const item: Element = createElement(\n `<a href=\"#${targetID}\" class=\"mx-icon mx-icon--chevron-right\">${linkText}</a>`,\n )\n\n return item as HTMLAnchorElement\n }\n\n generateListItem(heading: HTMLHeadingElement): HTMLLIElement {\n const { tagName } = heading\n const item: Element = createElement(\n `<li class=\"mx-in-page-navigation__level--${tagName.toLowerCase()}\"></li>`,\n )\n\n return item as HTMLLIElement\n }\n}\n\ncustomElements.define(\"mx-in-page-navigation\", InPageNavigation)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-in-page-navigation\": InPageNavigation\n }\n}\n"],"names":[],"mappings":";AAOA,MAAqB,yBAAyB,YAAY;AAAA,EAOxD,cAAc;AACN;AAyCR,SAAA,cAAc,CAAC,WAAqC;AAClD,WAAK,SAAS,KAAK,MAAM,KAAK,CAAQ,SAAA,KAAK,SAAS,MAAM;AAC1D,UAAI,CAAC,KAAK,SAAS,CAAC,KAAK,OAAQ;AACjC,WAAK,MAAM,QAAQ,CAAA,SAAQ,KAAK,UAAU,OAAO,WAAW,CAAC;AAC7D,WAAK,OAAO,KAAK,UAAU,IAAI,WAAW;AAAA,IAAA;AA5CrC,SAAA,aAAa,KAAK;AAClB,SAAA,aAAa,IAAI;AACjB,SAAA,gBAAgB,KAAK,SAAS,YAAY;AAC/C,SAAK,QAAQ;EACf;AAAA,EAEA,oBAA0B;AACxB,QAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,SAAU;AAE7B,SAAA,SAAS,QAAQ,CAAC,YAAgC;AAC/C,YAAA,WAA0B,KAAK,iBAAiB,OAAO;AACvD,YAAA,OAA0B,KAAK,eAAe,OAAO;AAC3D,WAAK,MAAM,KAAK,EAAE,MAAM,QAAS,CAAA;AACjC,eAAS,YAAY,IAAI;AACpB,WAAA,MAAM,YAAY,QAAQ;AAAA,IAAA,CAChC;AAEK,UAAA,EAAE,OAAO,IAAqB,KAAK;AAGzC,SAAK,KAAK;AAAA,MACR;AAAA,MACA,CAAC,MAAwB;AACjB,cAAA,EAAE,OAAW,IAAA;AACf,YAAA,EAAE,kBAAkB,mBAAoB;AAC5C,aAAK,YAAY,MAAM;AAAA,MACzB;AAAA,MACA;AAAA,QACE;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,uBAA6B;AAC3B,QAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,SAAU;AAClC,SAAK,KAAK,cAAc;AACxB,SAAK,QAAQ;AACb,SAAK,WAAW;EAClB;AAAA,EASA,IAAI,OAAmD;AAC/C,UAAA,OACJ,KAAK,cAAc,QAAQ;AAC7B,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,MAAM,GAAG,KAAK,SAAS,uCAAuC;AAAA,IAC1E;AACO,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,YAAgC;AAC5B,UAAA,WAA0B,KAAK,aAAa,cAAc;AAChE,QAAI,CAAC,UAAU;AACb,YAAM,IAAI;AAAA,QACR,GAAG,KAAK,SAAS;AAAA,MAAA;AAAA,IAErB;AACA,WAAO,KAAK,QAAQ,QAAQ,KAAK,KAAK,cAAc,cAAc,QAAQ;AAAA,EAC5E;AAAA,EAEA,IAAI,WAAuD;AACzD,WAAO,KAAK,WAAW,iBAAiB,KAAK,aAAa;AAAA,EAC5D;AAAA,EAEA,IAAI,QAAmD;AAC9C,WAAA,KAAK,MAAM,iBAAiB,GAAG;AAAA,EACxC;AAAA,EAEA,YAAY,SAAqC;AACzC,UAAA,SAA6B,SAAS,aAAa,KAAK;AAC9D,WAAO,CAAC,SAAS,KAAK,WAAW,MAAM;AAAA,EACzC;AAAA,EAEA,eAAe,SAAgD;AACvD,UAAA,EAAE,aAAa,GAAO,IAAA;AAC5B,UAAM,WACJ,QAAQ,aAAa,+BAA+B,KAAK;AAC3D,UAAM,WAAmB,MAAM,KAAK,YAAY,OAAO;AACnD,QAAA,CAAC,GAAI,SAAQ,KAAK;AACtB,UAAM,OAAgB;AAAA,MACpB,aAAa,QAAQ,4CAA4C,QAAQ;AAAA,IAAA;AAGpE,WAAA;AAAA,EACT;AAAA,EAEA,iBAAiB,SAA4C;AACrD,UAAA,EAAE,QAAY,IAAA;AACpB,UAAM,OAAgB;AAAA,MACpB,4CAA4C,QAAQ,YAAA,CAAa;AAAA,IAAA;AAG5D,WAAA;AAAA,EACT;AACF;AAEA,eAAe,OAAO,yBAAyB,gBAAgB;"}
1
+ {"version":3,"file":"in-page-navigation.entry.js","sources":["../../src/Component/InPageNavigation/Elements/InPageNavigation.ts"],"sourcesContent":["/**\n * DialogBase\n * @file Support opening/closing, and adding a scroll lock to the body.\n */\n\nimport { makeAnchor, createElement } from \"../../../Utility/utilities\"\n\nexport default class InPageNavigation extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n headingLevels: string\n items: { link: HTMLAnchorElement; heading: HTMLHeadingElement }[]\n active: { link: HTMLAnchorElement; heading: HTMLHeadingElement } | undefined\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n this.headingLevels = this.dataset?.headings || \"h2\"\n this.items = []\n }\n\n connectedCallback(): void {\n if (!this.menu || !this.headings) return\n if (!this.links.length) {\n // Build links if not provided.\n this.headings.forEach((heading: HTMLHeadingElement) => {\n const listItem: HTMLLIElement = this.generateListItem(heading)\n const link: HTMLAnchorElement = this.generateAnchor(heading)\n this.items.push({ link, heading })\n listItem.appendChild(link)\n this.menu?.appendChild(listItem)\n })\n } else {\n this.links.forEach((link: HTMLAnchorElement) => {\n const heading: HTMLHeadingElement = this.container.querySelector(\n link.href,\n )\n if (!heading) return\n this.items.push({ link, heading })\n })\n }\n\n const { signal }: AbortController = this.controller\n\n // Open on toggle click.\n this.menu.addEventListener(\n \"click\",\n (e: MouseEvent): void => {\n const { target } = e\n if (!(target instanceof HTMLAnchorElement)) return\n this.handleClick(target)\n },\n {\n signal,\n },\n )\n }\n\n disconnectedCallback(): void {\n if (!this.menu || !this.headings) return\n this.menu.textContent = \"\"\n this.items = []\n this.controller.abort()\n }\n\n handleClick = (target: EventTarget | null): void => {\n this.active = this.items.find(item => item.link === target)\n if (!this.links || !this.active) return\n this.links.forEach(link => link.classList.remove(\"is-active\"))\n this.active.link.classList.add(\"is-active\")\n }\n\n get menu(): HTMLUListElement | HTMLOListElement | null {\n const menu: HTMLUListElement | HTMLOListElement | null =\n this.querySelector(\"ul, ol\")\n if (!menu) {\n throw new Error(`${this.localName} must contain a <ul> or <ol> element.`)\n }\n return menu\n }\n\n get container(): HTMLElement | null {\n const selector: string | null = this.getAttribute(\"data-content\")\n if (!selector) {\n throw new Error(\n `${this.localName} must have a [data-content] attribute that contains the content selector.`,\n )\n }\n return this.closest(selector) || this.parentElement.querySelector(selector)\n }\n\n get headings(): NodeListOf<HTMLHeadingElement> | undefined {\n return this.container?.querySelectorAll(this.headingLevels)\n }\n\n get links(): NodeListOf<HTMLAnchorElement> | undefined {\n return this.menu?.querySelectorAll(\"a\")\n }\n\n generatedId(heading: HTMLHeadingElement): string {\n const string: string | undefined = heading?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n\n generateAnchor(heading: HTMLHeadingElement): HTMLAnchorElement {\n const { textContent, id } = heading\n const linkText: string | null =\n heading.getAttribute(\"data-in-page-navigation-title\") || textContent\n const targetID: string = id || this.generatedId(heading)\n if (!id) heading.id = targetID\n const item: Element = createElement(\n `<a href=\"#${targetID}\"><span class=\"mx-icon mx-icon--chevron-right\"></span><span>${linkText}</span></a>`,\n )\n\n return item as HTMLAnchorElement\n }\n\n generateListItem(heading: HTMLHeadingElement): HTMLLIElement {\n const { tagName } = heading\n const item: Element = createElement(\n `<li class=\"mx-in-page-navigation__level--${tagName.toLowerCase()}\"></li>`,\n )\n\n return item as HTMLLIElement\n }\n}\n\ncustomElements.define(\"mx-in-page-navigation\", InPageNavigation)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-in-page-navigation\": InPageNavigation\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { m as makeAnchor } from "./chunks/utilities-B4YZb689.js";
1
+ import { m as makeAnchor } from "./chunks/utilities-DZ_l-he4.js";
2
2
  import { K as Keyboard } from "./chunks/keyboard-C73DHu0c.js";
3
- import { D as DisclosureWidget } from "./chunks/disclosure-widget-CQLPJ8Ta.js";
3
+ import { D as DisclosureWidget } from "./chunks/disclosure-widget-DwuxsaOS.js";
4
4
  class Navigation extends HTMLElement {
5
5
  constructor() {
6
6
  super();
@@ -6,62 +6,28 @@
6
6
  .mx-grid--sidebar:where(:not(:has(> aside))) {
7
7
  grid-column: narrow;
8
8
  }
9
- @media (min-width: 720px) {
10
9
 
11
10
  .mx-grid--sidebar:where(:has(> aside)) {
12
- display: grid;
13
- grid-template-columns: 76ch auto;
14
- grid-template-columns: var(--container-max-width, 76ch) auto;
15
- grid-gap: var(--sidebar-gap, var(--gap));
16
- gap: var(--sidebar-gap, var(--gap));
11
+ display: flex;
12
+ flex-wrap: wrap;
13
+ gap: var(--sidebar-gap, var(--gap));
14
+ justify-content: space-between;
17
15
  }
18
- }
19
-
20
- @media (min-width: 720px) {
21
-
22
- @media (min-width: 946px) {
23
-
24
- @media (max-color:2147477350) and (max-color:2147477350) {
25
-
26
- .mx-grid--sidebar:where(:has(> aside)) {
27
- --sidebar-gap: 18ch;
28
- }
29
- }
30
- }
31
-
32
- @media not all and (min-width: 946px) {
33
-
34
- @media (max-color:2147477350) and (color:2147477350) {
35
-
36
- .mx-grid--sidebar:where(:has(> aside)) {
37
- --sidebar-gap: 18ch;
38
- }
39
- }
40
- }
41
- }
42
-
43
- @media not all and (min-width: 720px) {
44
-
45
- @media (min-width: 946px) {
46
16
 
47
- @media (color:2147477350) and (max-color:2147477350) {
48
-
49
- .mx-grid--sidebar:where(:has(> aside)) {
50
- --sidebar-gap: 18ch;
51
- }
52
- }
53
- }
54
-
55
- @media not all and (min-width: 946px) {
56
-
57
- @media (color:2147477350) and (color:2147477350) {
17
+ .mx-grid--sidebar:where(:has(> aside)) > aside {
18
+ flex-grow: 1;
19
+ max-inline-size: 24ch;
20
+ max-inline-size: var(--sidebar-width, 24ch);
21
+ }
58
22
 
59
- .mx-grid--sidebar:where(:has(> aside)) {
60
- --sidebar-gap: 18ch;
61
- }
62
- }
63
- }
64
- }
23
+ .mx-grid--sidebar:where(:has(> aside)) > section {
24
+ flex-basis: 0;
25
+ flex-grow: 999;
26
+ min-inline-size: 50%;
27
+ min-inline-size: var(--content-min, 50%);
28
+ max-inline-size: 76ch;
29
+ max-inline-size: var(--container-max-width, 76ch);
30
+ }
65
31
  .mx-grid--sidebar.mx-grid--sidebar-rev:where(:has(> aside)) > :is(section, aside):first-child {
66
32
  order: 2;
67
33
  }
@@ -78,18 +44,6 @@
78
44
  order: 1;
79
45
  }
80
46
  }
81
- @media (min-width: 946px) {
82
-
83
- .mx-grid--sidebar:where(:has(> aside)):is(.mx-grid--sidebar-rev, .mx-grid--sidebar-rev-lg) {
84
- grid-template-columns: auto 76ch;
85
- grid-template-columns: auto var(--container-max-width, 76ch);
86
- }
87
- }
88
-
89
- .mx-grid--sidebar:where(:has(> aside:first-child)) {
90
- grid-template-columns: auto 76ch;
91
- grid-template-columns: auto var(--container-max-width, 76ch);
92
- }
93
47
  }
94
48
 
95
49
  /**
@@ -102,4 +56,4 @@
102
56
  }
103
57
  }
104
58
 
105
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpZGViYXIuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFOztBQUVGO0lBRUk7TUFDRSxtQkFBbUI7SUFDckI7TUFHRTs7SUFERjtRQUVJLGFBQWE7UUFDYixnQ0FBNEQ7UUFBNUQsNERBQTREO1FBQzVELHdDQUFtQztRQUFuQyxtQ0FBbUM7SUFzQ3ZDO01BakNFOztRQUhFOztRQUFBOztRQUFBOztJQU5KO1VBT00sbUJBQW1CO0lBbUN6QjtRQWxDSTtRQUFBOztRQUZBOztRQUFBOztJQU5KO1VBT00sbUJBQW1CO0lBbUN6QjtRQWxDSTtRQUFBO1FBQUE7O1FBRkE7O1FBQUE7O1FBQUE7O0lBTko7VUFPTSxtQkFBbUI7SUFtQ3pCO1FBbENJO1FBQUE7O1FBRkE7O1FBQUE7O0lBTko7VUFPTSxtQkFBbUI7SUFtQ3pCO1FBbENJO1FBQUE7UUFBQTtVQUtFO1lBQ0UsUUFBUTtVQUNWOztVQUVBO1lBQ0UsUUFBUTtVQUNWO1FBS0Y7WUFFSTtjQUNFLFFBQVE7WUFDVjs7WUFFQTtjQUNFLFFBQVE7WUFDVjtRQUVKO1FBSUE7O01BREY7VUFFSSxnQ0FBNEQ7VUFBNUQsNERBQTREO01BRWhFO1FBREU7O0lBSUo7TUFDRSxnQ0FBNEQ7TUFBNUQsNERBQTREO0lBQzlEO0FBRUo7O0FBRUE7O0VBRUU7O0FBRUY7RUFDRTtJQUNFLGFBQWE7RUFDZjtBQUNGIiwiZmlsZSI6InNpZGViYXIuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYWdlIHdpdGggU2lkZWJhclxuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmxheW91dHMge1xuICAubXgtZ3JpZC0tc2lkZWJhciB7XG4gICAgJjp3aGVyZSg6bm90KDpoYXMoPiBhc2lkZSkpKSB7XG4gICAgICBncmlkLWNvbHVtbjogbmFycm93O1xuICAgIH1cblxuICAgICY6d2hlcmUoOmhhcyg+IGFzaWRlKSkge1xuICAgICAgQG1lZGlhICgtLW1lZGl1bS11cCkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLWNvbnRhaW5lci1tYXgtd2lkdGgsIDc2Y2gpIGF1dG87XG4gICAgICAgIGdhcDogdmFyKC0tc2lkZWJhci1nYXAsIHZhcigtLWdhcCkpO1xuXG4gICAgICAgIEBtZWRpYSAoLS1sYXJnZS11cCkge1xuICAgICAgICAgIC0tc2lkZWJhci1nYXA6IDE4Y2g7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5teC1ncmlkLS1zaWRlYmFyLXJldiB7XG4gICAgICAgICYgPiA6aXMoc2VjdGlvbiwgYXNpZGUpIHtcbiAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIG9yZGVyOiAyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5teC1ncmlkLS1zaWRlYmFyLXJldi1sZyB7XG4gICAgICAgIEBtZWRpYSAoLS1tZWRpdW0tdXApIHtcbiAgICAgICAgICAmID4gOmlzKHNlY3Rpb24sIGFzaWRlKSB7XG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgIG9yZGVyOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmOmlzKC5teC1ncmlkLS1zaWRlYmFyLXJldiwgLm14LWdyaWQtLXNpZGViYXItcmV2LWxnKSB7XG4gICAgICAgIEBtZWRpYSAoLS1sYXJnZS11cCkge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byB2YXIoLS1jb250YWluZXItbWF4LXdpZHRoLCA3NmNoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICY6d2hlcmUoOmhhcyg+IGFzaWRlOmZpcnN0LWNoaWxkKSkge1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIHZhcigtLWNvbnRhaW5lci1tYXgtd2lkdGgsIDc2Y2gpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByaW50IHN0eWxlc2hlZXRcbiAqL1xuXG5AbWVkaWEgcHJpbnQge1xuICAubXgtcGFnZV9fc2lkZWJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIl19 */
59
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpZGViYXIuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFOztBQUVGO0lBRUk7TUFDRSxtQkFBbUI7SUFDckI7O0lBRUE7TUFDRSxhQUFhO01BQ2IsZUFBZTtNQUNmLG1DQUFtQztNQUNuQyw4QkFBOEI7SUF1Q2hDOztNQXJDRTtRQUNFLFlBQVk7UUFDWixxQkFBMkM7UUFBM0MsMkNBQTJDO01BQzdDOztNQUVBO1FBQ0UsYUFBYTtRQUNiLGNBQWM7UUFDZCxvQkFBd0M7UUFBeEMsd0NBQXdDO1FBQ3hDLHFCQUFpRDtRQUFqRCxpREFBaUQ7TUFDbkQ7VUFJSTtZQUNFLFFBQVE7VUFDVjs7VUFFQTtZQUNFLFFBQVE7VUFDVjtRQUtGO1lBRUk7Y0FDRSxRQUFRO1lBQ1Y7O1lBRUE7Y0FDRSxRQUFRO1lBQ1Y7UUFFSjtBQUlSOztBQUVBOztFQUVFOztBQUVGO0VBQ0U7SUFDRSxhQUFhO0VBQ2Y7QUFDRiIsImZpbGUiOiJzaWRlYmFyLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFnZSB3aXRoIFNpZGViYXJcbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5sYXlvdXRzIHtcbiAgLm14LWdyaWQtLXNpZGViYXIge1xuICAgICY6d2hlcmUoOm5vdCg6aGFzKD4gYXNpZGUpKSkge1xuICAgICAgZ3JpZC1jb2x1bW46IG5hcnJvdztcbiAgICB9XG5cbiAgICAmOndoZXJlKDpoYXMoPiBhc2lkZSkpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBnYXA6IHZhcigtLXNpZGViYXItZ2FwLCB2YXIoLS1nYXApKTtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgICAgJiA+IGFzaWRlIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBtYXgtaW5saW5lLXNpemU6IHZhcigtLXNpZGViYXItd2lkdGgsIDI0Y2gpO1xuICAgICAgfVxuXG4gICAgICAmID4gc2VjdGlvbiB7XG4gICAgICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgICAgIGZsZXgtZ3JvdzogOTk5O1xuICAgICAgICBtaW4taW5saW5lLXNpemU6IHZhcigtLWNvbnRlbnQtbWluLCA1MCUpO1xuICAgICAgICBtYXgtaW5saW5lLXNpemU6IHZhcigtLWNvbnRhaW5lci1tYXgtd2lkdGgsIDc2Y2gpO1xuICAgICAgfVxuXG4gICAgICAmLm14LWdyaWQtLXNpZGViYXItcmV2IHtcbiAgICAgICAgJiA+IDppcyhzZWN0aW9uLCBhc2lkZSkge1xuICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgb3JkZXI6IDI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG9yZGVyOiAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLm14LWdyaWQtLXNpZGViYXItcmV2LWxnIHtcbiAgICAgICAgQG1lZGlhICgtLW1lZGl1bS11cCkge1xuICAgICAgICAgICYgPiA6aXMoc2VjdGlvbiwgYXNpZGUpIHtcbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJpbnQgc3R5bGVzaGVldFxuICovXG5cbkBtZWRpYSBwcmludCB7XG4gIC5teC1wYWdlX19zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iXX0= */
@@ -1,4 +1,4 @@
1
- import { c as createElement } from "./chunks/utilities-B4YZb689.js";
1
+ import { c as createElement } from "./chunks/utilities-DZ_l-he4.js";
2
2
  class Sticky extends HTMLElement {
3
3
  constructor() {
4
4
  super();
@@ -1,5 +1,5 @@
1
- import { D as DropMenu } from "./chunks/drop-menu.entry-BC6x9vst.js";
2
- import { c as createElement, m as makeAnchor } from "./chunks/utilities-B4YZb689.js";
1
+ import { D as DropMenu } from "./chunks/drop-menu.entry-Cxpti_QG.js";
2
+ import { c as createElement, m as makeAnchor } from "./chunks/utilities-DZ_l-he4.js";
3
3
  class Tabs extends HTMLElement {
4
4
  constructor() {
5
5
  super();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pnx-mixtape/mxds",
3
3
  "description": "The Mixtape Design System",
4
- "version": "0.0.12",
4
+ "version": "0.0.14",
5
5
  "scripts": {
6
6
  "dev": "concurrently -k -n \"VITE,STORYBOOK\" -c \"#636cff,#ff4785\" \"npm run dev-vite\" \"npm run dev-storybook\"",
7
7
  "build": "concurrently -n \"VITE,STORYBOOK\" -c \"#636cff,#ff4785\" \"npm run build-vite\" \"npm run build-storybook\"",
@@ -48,19 +48,12 @@
48
48
  "@eslint/eslintrc": "^3.1.0",
49
49
  "@eslint/js": "^8.57.0",
50
50
  "@rollup/plugin-terser": "^0.4.4",
51
- "@storybook/addon-a11y": "^8.5.3",
52
- "@storybook/addon-essentials": "^8.5.3",
53
- "@storybook/addon-interactions": "^8.5.3",
54
- "@storybook/addon-links": "^8.5.3",
55
- "@storybook/blocks": "^8.5.3",
56
- "@storybook/html": "^8.5.3",
57
- "@storybook/html-vite": "^8.5.3",
58
- "@storybook/manager-api": "^8.5.3",
59
- "@storybook/react": "^8.5.3",
60
- "@storybook/react-vite": "^8.5.3",
61
- "@storybook/test": "^8.5.3",
62
- "@storybook/test-runner": "^0.21.1",
63
- "@storybook/types": "^8.5.3",
51
+ "@storybook/addon-a11y": "^9.0.12",
52
+ "@storybook/addon-docs": "^9.0.12",
53
+ "@storybook/addon-links": "^9.0.12",
54
+ "@storybook/html-vite": "^9.0.12",
55
+ "@storybook/react-vite": "^9.0.12",
56
+ "@storybook/test-runner": "^0.23.0",
64
57
  "@svgr/rollup": "^8.1.0",
65
58
  "@testing-library/dom": "^10.1.0",
66
59
  "@testing-library/jest-dom": "^6.6.3",
@@ -74,10 +67,11 @@
74
67
  "clean-css": "^5.3.3",
75
68
  "cli-progress": "^3.12.0",
76
69
  "concurrently": "^8.2.2",
70
+ "drupal-attribute": "^1.1.0",
77
71
  "eslint": "^8.57.0",
78
72
  "eslint-config-prettier": "^9.1.0",
79
73
  "eslint-plugin-react": "^7.34.1",
80
- "eslint-plugin-storybook": "^0.11.2",
74
+ "eslint-plugin-storybook": "^9.0.12",
81
75
  "eslint-plugin-testing-library": "^6.2.2",
82
76
  "eslint-plugin-unused-imports": "^3.2.0",
83
77
  "eslint-plugin-vitest": "^0.5.4",
@@ -91,17 +85,14 @@
91
85
  "postcss-preset-env": "^9.5.13",
92
86
  "postcss-pxtorem": "^6.1.0",
93
87
  "prettier": "^3.3.2",
94
- "storybook": "^8.5.3",
95
- "storybook-addon-deep-controls": "^0.9.2",
88
+ "storybook": "^9.0.12",
96
89
  "stylelint": "^16.5.0",
97
90
  "stylelint-config-standard": "^36.0.0",
98
91
  "stylelint-use-logical-spec": "^5.0.1",
99
92
  "tinyglobby": "^0.2.2",
100
93
  "typescript": "^5.4.5",
101
94
  "typescript-eslint": "^7.9.0",
102
- "vite": "^5.2.11",
103
- "vite-plugin-twig-drupal": "^1.3.0",
104
- "vitest": "^1.6.0"
95
+ "vite-plugin-twig-drupal": "^1.3.0"
105
96
  },
106
97
  "optionalDependencies": {
107
98
  "@esbuild/linux-arm64": "^0.23.0",
@@ -1,4 +1,4 @@
1
- import { Meta, StoryObj } from "@storybook/html"
1
+ import { Meta, StoryObj } from "@storybook/html-vite"
2
2
  import Component from "./backgrounds.twig"
3
3
  import "./_background.css"
4
4
  import { BackgroundStyles } from "../../enums"
@@ -34,3 +34,15 @@ export const Reverse: Story = {
34
34
  modifier: BackgroundStyles.REVERSE,
35
35
  },
36
36
  }
37
+
38
+ export const Primary: Story = {
39
+ args: {
40
+ modifier: BackgroundStyles.PRIMARY,
41
+ },
42
+ }
43
+
44
+ export const Accent: Story = {
45
+ args: {
46
+ modifier: BackgroundStyles.ACCENT,
47
+ },
48
+ }