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

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 (199) hide show
  1. package/.claude/skills/create-mxds-component/SKILL.md +77 -0
  2. package/DESIGN.md +595 -0
  3. package/README.md +1 -2
  4. package/dist/build/accordion.entry.js +2 -1
  5. package/dist/build/autocomplete.entry.js +1 -1
  6. package/dist/build/back-to-top.css +1 -0
  7. package/dist/build/back-to-top.entry.js +1 -0
  8. package/dist/build/button.css +1 -1
  9. package/dist/build/card.css +1 -1
  10. package/dist/build/chunks/Accordion-D2wp8hBG.js +44 -0
  11. package/dist/build/chunks/AccordionGroup-BYtoAFxg.js +47 -0
  12. package/dist/build/chunks/AccordionMobile-D3sTeiM5.js +26 -0
  13. package/dist/build/chunks/Autocomplete-kRo8RNbC.js +135 -0
  14. package/dist/build/chunks/BackToTop-4M-Wl7z3.js +64 -0
  15. package/dist/build/chunks/ClosableAlert-yy84gae6.js +55 -0
  16. package/dist/build/chunks/CookieConsent-wd8gQ2Oe.js +18 -0
  17. package/dist/build/chunks/Dialog-DWoXW-7Z.js +48 -0
  18. package/dist/build/chunks/DropMenu-CSTZq0Zt.js +68 -0
  19. package/dist/build/chunks/FeedbackForm-BochXEDx.js +64 -0
  20. package/dist/build/chunks/Gallery-Rkfv7Mbb.js +165 -0
  21. package/dist/build/chunks/GlobalToggle-CzlkpLpc.js +82 -0
  22. package/dist/build/chunks/InPageNavigation-D1Kk-rCm.js +86 -0
  23. package/dist/build/chunks/Navigation-CDQnN61h.js +147 -0
  24. package/dist/build/chunks/Popover-CiTAftNU.js +30 -0
  25. package/dist/build/chunks/Sticky-DoVndENm.js +51 -0
  26. package/dist/build/chunks/Tabs-BDlxCDNh.js +160 -0
  27. package/dist/build/chunks/Translate-bmM38j6z.js +46 -0
  28. package/dist/build/chunks/cookie-compliance-CG6x-TcV.js +119 -0
  29. package/dist/build/chunks/enums-BrHxPZZ_.js +36 -0
  30. package/dist/build/chunks/polyfills-D-qh1a_2.js +33 -0
  31. package/dist/build/chunks/utilities-Dd-08SW6.js +255 -0
  32. package/dist/build/content-block.css +1 -1
  33. package/dist/build/cookie-consent.entry.js +1 -1
  34. package/dist/build/dialog.entry.js +1 -1
  35. package/dist/build/drop-menu.entry.js +1 -1
  36. package/dist/build/elements.js +147 -1
  37. package/dist/build/feedback-form.css +1 -0
  38. package/dist/build/feedback-form.entry.js +1 -0
  39. package/dist/build/filters.entry.js +145 -1
  40. package/dist/build/gallery.entry.js +1 -1
  41. package/dist/build/global-alert.entry.js +1 -1
  42. package/dist/build/header.css +1 -1
  43. package/dist/build/header.entry.js +1 -1
  44. package/dist/build/icon.css +1 -1
  45. package/dist/build/in-page-navigation.entry.js +1 -1
  46. package/dist/build/navigation.entry.js +1 -1
  47. package/dist/build/pagination.css +1 -1
  48. package/dist/build/popover.entry.js +1 -1
  49. package/dist/build/react.js +2270 -1
  50. package/dist/build/sticky.entry.js +1 -1
  51. package/dist/build/tabs.entry.js +1 -1
  52. package/dist/build/translate.css +1 -0
  53. package/dist/build/translate.entry.js +1 -0
  54. package/dist/build/utility-list.entry.js +53 -1
  55. package/dist/types/Component/BackToTop/BackToTop.d.ts +20 -0
  56. package/dist/types/Component/BackToTop/BackToTop.d.ts.map +1 -0
  57. package/dist/types/Component/BackToTop/Elements/BackToTop.d.ts +27 -0
  58. package/dist/types/Component/BackToTop/Elements/BackToTop.d.ts.map +1 -0
  59. package/dist/types/Component/BackToTop/back-to-top.entry.d.ts +2 -0
  60. package/dist/types/Component/BackToTop/back-to-top.entry.d.ts.map +1 -0
  61. package/dist/types/Component/DropMenu/DropMenu.d.ts +2 -1
  62. package/dist/types/Component/DropMenu/DropMenu.d.ts.map +1 -1
  63. package/dist/types/Component/Tabs/Components/TabDropMenu.d.ts.map +1 -1
  64. package/dist/types/Component/Tabs/Elements/Tabs.d.ts.map +1 -1
  65. package/dist/types/Component/Translate/Elements/Translate.d.ts +23 -0
  66. package/dist/types/Component/Translate/Elements/Translate.d.ts.map +1 -0
  67. package/dist/types/Component/Translate/Translate.d.ts +37 -0
  68. package/dist/types/Component/Translate/Translate.d.ts.map +1 -0
  69. package/dist/types/Component/Translate/languages.d.ts +11 -0
  70. package/dist/types/Component/Translate/languages.d.ts.map +1 -0
  71. package/dist/types/Component/Translate/translate.entry.d.ts +2 -0
  72. package/dist/types/Component/Translate/translate.entry.d.ts.map +1 -0
  73. package/dist/types/Form/FeedbackForm/Elements/FeedbackForm.d.ts +37 -0
  74. package/dist/types/Form/FeedbackForm/Elements/FeedbackForm.d.ts.map +1 -0
  75. package/dist/types/Form/FeedbackForm/FeedbackForm.d.ts +36 -0
  76. package/dist/types/Form/FeedbackForm/FeedbackForm.d.ts.map +1 -0
  77. package/dist/types/Form/FeedbackForm/feedback-form.entry.d.ts +2 -0
  78. package/dist/types/Form/FeedbackForm/feedback-form.entry.d.ts.map +1 -0
  79. package/dist/types/Utility/Elements/google-translate-widget.d.ts +91 -0
  80. package/dist/types/Utility/Elements/google-translate-widget.d.ts.map +1 -0
  81. package/dist/types/Utility/utilities.d.ts +2 -0
  82. package/dist/types/Utility/utilities.d.ts.map +1 -1
  83. package/dist/types/elements.d.ts +3 -0
  84. package/dist/types/elements.d.ts.map +1 -1
  85. package/dist/types/enums.d.ts +3 -1
  86. package/dist/types/enums.d.ts.map +1 -1
  87. package/dist/types/react.d.ts +3 -0
  88. package/dist/types/react.d.ts.map +1 -1
  89. package/docs/API.md +1215 -0
  90. package/docs/CSSGuidelines.md +891 -0
  91. package/docs/CodeQuality.md +940 -0
  92. package/docs/ComponentArchitecture.md +714 -0
  93. package/docs/Contributing.md +626 -0
  94. package/docs/MemoryManagement.md +598 -0
  95. package/docs/Migrations.md +6 -0
  96. package/docs/README.md +100 -0
  97. package/docs/Security.md +444 -0
  98. package/docs/Testing.md +739 -0
  99. package/docs/Troubleshooting.md +674 -0
  100. package/package.json +6 -3
  101. package/src/Atom/Button/Button.tsx +1 -1
  102. package/src/Atom/Button/__snapshots__/Button.stories.tsx.snap +2 -2
  103. package/src/Atom/Button/_buttons.css +1 -0
  104. package/src/Atom/Icon/README.md +1 -1
  105. package/src/Atom/Icon/_icon.css +1 -0
  106. package/src/Atom/Icon/images/thumb.svg +1 -0
  107. package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +4 -9
  108. package/src/Atom/Media/media.twig +4 -5
  109. package/src/Component/BackToTop/BackToTop.stories.ts +127 -0
  110. package/src/Component/BackToTop/BackToTop.stories.tsx +53 -0
  111. package/src/Component/BackToTop/BackToTop.tsx +120 -0
  112. package/src/Component/BackToTop/Elements/BackToTop.ts +119 -0
  113. package/src/Component/BackToTop/README.md +164 -0
  114. package/src/Component/BackToTop/__snapshots__/BackToTop.stories.ts.snap +24 -0
  115. package/src/Component/BackToTop/__snapshots__/BackToTop.stories.tsx.snap +3 -0
  116. package/src/Component/BackToTop/back-to-top.css +70 -0
  117. package/src/Component/BackToTop/back-to-top.entry.js +1 -0
  118. package/src/Component/BackToTop/back-to-top.twig +26 -0
  119. package/src/Component/Card/Components/CardContent.tsx +1 -1
  120. package/src/Component/Card/Components/CardMedia.tsx +1 -1
  121. package/src/Component/Card/__snapshots__/Card.stories.tsx.snap +3 -3
  122. package/src/Component/Card/card.css +1 -1
  123. package/src/Component/Carousel/Carousel.stories.ts +66 -36
  124. package/src/Component/Carousel/__snapshots__/Carousel.stories.tsx.snap +5 -5
  125. package/src/Component/ContentBlock/Components/ContentBlockMedia.tsx +1 -1
  126. package/src/Component/ContentBlock/content-block.css +1 -1
  127. package/src/Component/DropMenu/DropMenu.stories.ts +21 -2
  128. package/src/Component/DropMenu/DropMenu.tsx +14 -4
  129. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +3 -3
  130. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.tsx.snap +2 -2
  131. package/src/Component/DropMenu/drop-menu.twig +7 -1
  132. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.tsx.snap +1 -1
  133. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +48 -13
  134. package/src/Component/InPageNavigation/in-page-navigation.twig +4 -6
  135. package/src/Component/ListItem/Components/ListItemMedia.tsx +1 -1
  136. package/src/Component/Pagination/Pagination.stories.ts +57 -27
  137. package/src/Component/Pagination/pagination.css +16 -7
  138. package/src/Component/Popover/__snapshots__/Popover.stories.tsx.snap +3 -3
  139. package/src/Component/Tabs/Components/TabDropMenu.tsx +7 -1
  140. package/src/Component/Tabs/Elements/Tabs.ts +13 -3
  141. package/src/Component/Tabs/Tabs.stories.ts +33 -12
  142. package/src/Component/Tabs/Tabs.stories.tsx +28 -14
  143. package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +3 -3
  144. package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +2 -2
  145. package/src/Component/Translate/Elements/Translate.ts +76 -0
  146. package/src/Component/Translate/README.md +283 -0
  147. package/src/Component/Translate/Translate.stories.ts +87 -0
  148. package/src/Component/Translate/Translate.stories.tsx +77 -0
  149. package/src/Component/Translate/Translate.tsx +213 -0
  150. package/src/Component/Translate/__snapshots__/Translate.stories.ts.snap +18 -0
  151. package/src/Component/Translate/__snapshots__/Translate.stories.tsx.snap +3 -0
  152. package/src/Component/Translate/languages.ts +39 -0
  153. package/src/Component/Translate/translate.css +62 -0
  154. package/src/Component/Translate/translate.entry.js +1 -0
  155. package/src/Component/Translate/translate.twig +44 -0
  156. package/src/Form/Autocomplete/Autocomplete.stories.tsx +2 -1
  157. package/src/Form/FeedbackForm/Elements/FeedbackForm.ts +122 -0
  158. package/src/Form/FeedbackForm/FeedbackForm.stories.ts +99 -0
  159. package/src/Form/FeedbackForm/FeedbackForm.stories.tsx +73 -0
  160. package/src/Form/FeedbackForm/FeedbackForm.tsx +196 -0
  161. package/src/Form/FeedbackForm/README.md +233 -0
  162. package/src/Form/FeedbackForm/__snapshots__/FeedbackForm.stories.ts.snap +125 -0
  163. package/src/Form/FeedbackForm/__snapshots__/FeedbackForm.stories.tsx.snap +5 -0
  164. package/src/Form/FeedbackForm/feedback-form.css +74 -0
  165. package/src/Form/FeedbackForm/feedback-form.entry.js +1 -0
  166. package/src/Form/FeedbackForm/feedback-form.twig +80 -0
  167. package/src/Layout/Header/Components/GlobalToggle.tsx +1 -1
  168. package/src/Layout/Header/Header.stories.ts +53 -48
  169. package/src/Layout/Header/Header.stories.tsx +35 -22
  170. package/src/Layout/Header/Header.tsx +2 -2
  171. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +14 -10
  172. package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +2 -2
  173. package/src/Layout/Header/_toggles.css +7 -7
  174. package/src/Layout/Page/__snapshots__/Page.stories.tsx.snap +1 -1
  175. package/src/Utility/Elements/google-translate-widget.ts +293 -0
  176. package/src/Utility/global.d.ts +4 -0
  177. package/src/Utility/utilities.ts +2 -0
  178. package/src/elements.ts +3 -0
  179. package/src/enums.ts +2 -0
  180. package/src/react.ts +3 -0
  181. package/dist/build/chunks/Accordion-GN0sME4W.js +0 -1
  182. package/dist/build/chunks/AccordionGroup-Bzqp5__q.js +0 -1
  183. package/dist/build/chunks/AccordionMobile-DG5jSe8Q.js +0 -1
  184. package/dist/build/chunks/Autocomplete-B4RtkAyh.js +0 -1
  185. package/dist/build/chunks/ClosableAlert-DEhj8Nxm.js +0 -1
  186. package/dist/build/chunks/CookieConsent-BkCMRVST.js +0 -1
  187. package/dist/build/chunks/Dialog-Haahn-Yn.js +0 -1
  188. package/dist/build/chunks/DropMenu-1baQc8Yc.js +0 -1
  189. package/dist/build/chunks/Gallery-D8NGXy2Q.js +0 -1
  190. package/dist/build/chunks/GlobalToggle-B52fdBQu.js +0 -1
  191. package/dist/build/chunks/InPageNavigation-Dyn2TR-N.js +0 -1
  192. package/dist/build/chunks/Navigation-hOrfLq7h.js +0 -1
  193. package/dist/build/chunks/Popover-Cxg-s5Jn.js +0 -1
  194. package/dist/build/chunks/Sticky-BGCuuEJK.js +0 -1
  195. package/dist/build/chunks/Tabs-DYy1YTdU.js +0 -15
  196. package/dist/build/chunks/cookie-compliance-Bbm-0vpj.js +0 -1
  197. package/dist/build/chunks/enums-DLV_1NAf.js +0 -1
  198. package/dist/build/chunks/polyfills-C7pRt54M.js +0 -1
  199. package/dist/build/chunks/utilities-_Bq3TxAQ.js +0 -1
@@ -0,0 +1 @@
1
+ @layer popover-polyfill;@layer design-system.defaults{mx-back-to-top{display:block}}@layer design-system.atoms,design-system.layout,design-system.utilities;@layer design-system.components{.mx-back-to-top{--back-to-top-display:block;display:var(--back-to-top-display,none);z-index:var(--back-to-top-z-index,10);position:fixed;inset-block-end:calc(var(--back-to-top-gap,64px) + var(--back-to-top-offset,var(--sticky-offset,0px)));inset-inline-end:var(--back-to-top-inline-end,var(--spacing-m));@media print{--back-to-top-display:none}}.mx-back-to-top--l{display:var(--back-to-top-display,none);z-index:var(--back-to-top-z-index,10);position:fixed;inset-block-end:calc(var(--back-to-top-gap,64px) + var(--back-to-top-offset,var(--sticky-offset,0px)));inset-inline-end:var(--back-to-top-inline-end,var(--spacing-m));@media (width>=946px){--back-to-top-display:block}@media print{--back-to-top-display:none}}:is(.mx-back-to-top,.mx-back-to-top--l).is-enhanced{visibility:hidden;opacity:0;transition:visibility 0s linear .3s,opacity .3s;@media (prefers-reduced-motion:reduce){transition:none}&.is-visible{visibility:visible;opacity:1;transition:visibility linear,opacity .3s}}}
@@ -0,0 +1 @@
1
+ import "./chunks/BackToTop-4M-Wl7z3.js";
@@ -1 +1 @@
1
- @layer popover-polyfill,design-system.defaults;@layer design-system.atoms{.mx-button{--outline-offset:1px;gap:var(--button-gap,var(--spacing-s));inline-size:fit-content;font-size:var(--button-font-size,var(--font-size));font-weight:var(--font-weight-bold);font-family:var(--font-family), sans-serif;line-height:var(--line-height-ui);border:var(--line-width,2px) solid var(--line-colour,currentcolor);border-radius:var(--radius,var(--border-radius-l));padding-block:var(--vertical-padding,var(--spacing-xxs));padding-inline:var(--horizontal-padding,var(--spacing-m));background-color:var(--button-bg,var(--background,var(--colour-background)));color:var(--button-fg,var(--foreground,var(--colour-foreground)));letter-spacing:var(--button-letter-spacing,0);min-block-size:var(--button-min-height,unset);text-decoration-line:none;display:inline-flex;&:hover{cursor:pointer;text-decoration-line:none}&:disabled{cursor:not-allowed;opacity:.3;@media (forced-colors:active){--forced-colour:GrayText;forced-color-adjust:none;opacity:1;color:graytext;background-color:buttonface;border-color:graytext}}@media (forced-colors:active){--forced-colour:ButtonText}}.mx-button--full-width{justify-content:center;inline-size:100%}.mx-button--large{--vertical-padding:var(--spacing-s);--horizontal-padding:var(--spacing-l)}.mx-button--small{--button-font-size:var(--font-size-s);--vertical-padding:var(--spacing-xxxs);--horizontal-padding:var(--spacing-s)}.mx-button--icon-only{inline-size:var(--button-min-height,var(--spacing-xl));block-size:var(--button-min-height,var(--spacing-xl));border-radius:var(--border-radius-round);flex-wrap:wrap;align-content:start;padding:0;overflow:hidden;&:before,&:after{--icon-size:100%;-webkit-mask-size:var(--spacing-s);mask-size:var(--spacing-s)}&:has(.mx-icon){place-content:center}}.mx-button--dark{--line-colour:var(--button-dark-line,var(--link-colour,var(--colour-link)));--button-bg:var(--button-dark-bg,var(--link-colour,var(--colour-link)));--button-fg:var(--button-dark-fg,var(--colour-foreground-reverse));&.mx-button--outline{--button-bg:transparent;--button-fg:var(--button-dark-bg,var(--link-colour,var(--colour-link)))}}.mx-button--light{--line-colour:var(--button-light-line,transparent);--button-bg:var(--button-light-bg,transparent);--button-fg:var(--button-light-fg,var(--link-colour,var(--colour-link)));text-decoration-line:underline;&:hover{text-decoration-line:underline}}.mx-button--accent{--line-colour:var(--button-accent-line,light-dark(var(--colour-accent),var(--colour-accent-darkest)));--button-bg:var(--button-accent-bg,light-dark(var(--colour-accent),var(--colour-accent-darkest)));--button-fg:var(--button-accent-fg,var(--colour-foreground));color-scheme:var(--button-accent-scheme,var(--colour-accent-scheme,light));&.mx-button--outline{--button-bg:transparent;--button-fg:var(--button-accent-bg,light-dark(var(--colour-accent),var(--colour-accent-darkest)));--line-colour:var(--button-fg);color-scheme:var(--button-accent-scheme-rev,var(--button-accent-scheme,dark))}}.mx-button--destructive{--line-colour:var(--colour-error);--button-bg:var(--colour-error);--button-fg:var(--colour-foreground-reverse);&.mx-button--outline{--button-bg:transparent;--button-fg:var(--colour-error)}}.mx-button--white{--button-bg:var(--colour-background);--button-fg:var(--colour-foreground);--line-colour:var(--colour-background);color-scheme:light;&.mx-button--outline{--button-bg:transparent;--button-fg:var(--colour-foreground-reverse)}}}@layer design-system.layout,design-system.utilities,design-system.components;
1
+ @layer popover-polyfill,design-system.defaults;@layer design-system.atoms{.mx-button{--outline-offset:1px;gap:var(--button-gap,var(--spacing-s));inline-size:fit-content;font-size:var(--button-font-size,var(--font-size));font-weight:var(--font-weight-bold);font-family:var(--font-family), sans-serif;line-height:var(--line-height-ui);border:var(--line-width,2px) solid var(--line-colour,currentcolor);border-radius:var(--radius,var(--border-radius-l));padding-block:var(--vertical-padding,var(--spacing-xxs));padding-inline:var(--horizontal-padding,var(--spacing-m));background-color:var(--button-bg,var(--background,var(--colour-background)));color:var(--button-fg,var(--foreground,var(--colour-foreground)));letter-spacing:var(--button-letter-spacing,0);min-block-size:var(--button-min-height,unset);align-items:center;text-decoration-line:none;display:inline-flex;&:hover{cursor:pointer;text-decoration-line:none}&:disabled{cursor:not-allowed;opacity:.3;@media (forced-colors:active){--forced-colour:GrayText;forced-color-adjust:none;opacity:1;color:graytext;background-color:buttonface;border-color:graytext}}@media (forced-colors:active){--forced-colour:ButtonText}}.mx-button--full-width{justify-content:center;inline-size:100%}.mx-button--large{--vertical-padding:var(--spacing-s);--horizontal-padding:var(--spacing-l)}.mx-button--small{--button-font-size:var(--font-size-s);--vertical-padding:var(--spacing-xxxs);--horizontal-padding:var(--spacing-s)}.mx-button--icon-only{inline-size:var(--button-min-height,var(--spacing-xl));block-size:var(--button-min-height,var(--spacing-xl));border-radius:var(--border-radius-round);flex-wrap:wrap;align-content:start;padding:0;overflow:hidden;&:before,&:after{--icon-size:100%;-webkit-mask-size:var(--spacing-s);mask-size:var(--spacing-s)}&:has(.mx-icon){place-content:center}}.mx-button--dark{--line-colour:var(--button-dark-line,var(--link-colour,var(--colour-link)));--button-bg:var(--button-dark-bg,var(--link-colour,var(--colour-link)));--button-fg:var(--button-dark-fg,var(--colour-foreground-reverse));&.mx-button--outline{--button-bg:transparent;--button-fg:var(--button-dark-bg,var(--link-colour,var(--colour-link)))}}.mx-button--light{--line-colour:var(--button-light-line,transparent);--button-bg:var(--button-light-bg,transparent);--button-fg:var(--button-light-fg,var(--link-colour,var(--colour-link)));text-decoration-line:underline;&:hover{text-decoration-line:underline}}.mx-button--accent{--line-colour:var(--button-accent-line,light-dark(var(--colour-accent),var(--colour-accent-darkest)));--button-bg:var(--button-accent-bg,light-dark(var(--colour-accent),var(--colour-accent-darkest)));--button-fg:var(--button-accent-fg,var(--colour-foreground));color-scheme:var(--button-accent-scheme,var(--colour-accent-scheme,light));&.mx-button--outline{--button-bg:transparent;--button-fg:var(--button-accent-bg,light-dark(var(--colour-accent),var(--colour-accent-darkest)));--line-colour:var(--button-fg);color-scheme:var(--button-accent-scheme-rev,var(--button-accent-scheme,dark))}}.mx-button--destructive{--line-colour:var(--colour-error);--button-bg:var(--colour-error);--button-fg:var(--colour-foreground-reverse);&.mx-button--outline{--button-bg:transparent;--button-fg:var(--colour-error)}}.mx-button--white{--button-bg:var(--colour-background);--button-fg:var(--colour-foreground);--line-colour:var(--colour-background);color-scheme:light;&.mx-button--outline{--button-bg:transparent;--button-fg:var(--colour-foreground-reverse)}}}@layer design-system.layout,design-system.utilities,design-system.components;
@@ -1 +1 @@
1
- @layer popover-polyfill,design-system.defaults,design-system.atoms,design-system.layout,design-system.utilities;@layer design-system.components{.mx-card{gap:var(--card-gap,var(--gap));block-size:100%;display:grid;&[class*=mx-background--]{border-radius:var(--border-radius);@container card (width>=720px){--content-min-spacing:var(--content-max-spacing,var(--spacing-m))}& .mx-card__content{padding-inline:var(--content-min-spacing,var(--spacing-s));padding-block-end:var(--content-min-spacing,var(--spacing-s))}&:not(:has(.mx-card__media,.mx-card__icon)) .mx-card__content{padding-block-start:var(--content-min-spacing,var(--spacing-s))}& .mx-card__icon{padding-inline:var(--content-min-spacing,var(--spacing-s));padding-block-start:var(--content-min-spacing,var(--spacing-s))}&.mx-background--box{padding-inline:unset}}&:has(.mx-card__media){grid-template:"media""content"1fr/1fr;@container card (width>=720px){--card-gap:var(--gap-l);--card-alignment:center;grid-template:"media content" 1fr / var(--media-col,1fr) var(--content-col,1fr);&.mx-card--reversed{grid-template-areas:"content media";grid-template-columns:var(--content-col,1fr) var(--media-col,1fr)}}@container card (width>=946px){--card-gap:var(--large-card-gap,6rem)}&[class*=mx-background--]{@container card (width>=720px){& .mx-card__content{padding-block-start:var(--content-min-spacing,var(--spacing-s))}&:where(:not(.mx-card--reversed)) .mx-card__content{padding-inline-start:0}&.mx-card--reversed .mx-card__content{padding-inline-end:0}}}& .mx-card__content{align-self:var(--align-content,var(--card-alignment,stretch));grid-area:content}& .mx-card__media{align-self:var(--align-media,var(--card-alignment,stretch));grid-area:media;inline-size:100%;& img{aspect-ratio:var(--ratio);border-radius:var(--border-radius);object-fit:cover;inline-size:100%}}& .mx-skeleton--bg,& .mx-card__icon{grid-area:media}}& .mx-link-list{inline-size:100%}}.mx-card__content>a:last-child{margin-block-start:auto}.mx-grid:has(>:nth-child(2):last-child)>:is(.mx-card,.mx-container:has(.mx-card)){inline-size:min(100%, var(--max-card-width,37ch));margin-inline:auto}.mx-container:has(>.mx-card){--container-name:card}.mx-card--block{position:relative;& a{&:before{content:"";block-size:100%;inline-size:100%;position:absolute;inset-block-start:0;inset-inline-start:0}&:is(:focus,:focus-visible){outline:unset}}&:has(a[aria-label]){& a:not(:has(.mx-icon)){margin-block-start:calc(var(--flow-gap,var(--gap)) * -1)}&:hover :is(h2,h3,h4){color:var(--link-colour,var(--colour-link))}}&:focus-within{outline:var(--outline-size,2px) var(--outline-style,solid) var(--outline-color,currentcolor);outline-offset:var(--outline-offset,2px);&.mx-background--box{outline-offset:var(--outline-offset,-2px)}}}}.mx-card--collapse{@media (width<540px){& :is(p,.mx-text--lede){display:none}}@media (320px<width<720px){--flow-gap:var(--spacing-xxxs);&:has(.mx-card__media){--collapsed-media-col:var(--collapsed-image-width,100px);--ratio:1;grid-template:"content media" / var(--collapsed-content-col,1fr) var(--collapsed-media-col,1fr)}}}:is(.mx-card--collapse:where(:not(.mx-list-item)),.mx-container:has(>.mx-card--collapse)){&:where(:not(:first-child)){@media (width<720px){border-block-start:var(--line-width,1px) solid var(--line-colour,var(--colour-border));padding-block-start:var(--gap)}}}
1
+ @layer popover-polyfill,design-system.defaults,design-system.atoms,design-system.layout,design-system.utilities;@layer design-system.components{.mx-card{gap:var(--card-gap,var(--gap));block-size:100%;display:grid;&[class*=mx-background--]{border-radius:var(--border-radius);@container card (width>=720px){--content-min-spacing:var(--content-max-spacing,var(--spacing-m))}& .mx-card__content{padding-inline:var(--content-min-spacing,var(--spacing-s));padding-block-end:var(--content-min-spacing,var(--spacing-s))}&:not(:has(.mx-card__media,.mx-card__icon)) .mx-card__content{padding-block-start:var(--content-min-spacing,var(--spacing-s))}& .mx-card__icon{padding-inline:var(--content-min-spacing,var(--spacing-s));padding-block-start:var(--content-min-spacing,var(--spacing-s))}&.mx-background--box{padding-inline:unset}}&:has(.mx-card__media){grid-template:"media""content"1fr/1fr;@container card (width>=720px){--card-gap:var(--gap-l);--card-alignment:center;grid-template:"media content" 1fr / var(--media-col,1fr) var(--content-col,1fr);&.mx-card--reversed{grid-template-areas:"content media";grid-template-columns:var(--content-col,1fr) var(--media-col,1fr)}}@container card (width>=946px){--card-gap:var(--large-card-gap,6rem)}&[class*=mx-background--]{@container card (width>=720px){& .mx-card__content{padding-block-start:var(--content-min-spacing,var(--spacing-s))}&:where(:not(.mx-card--reversed)) .mx-card__content{padding-inline-start:0}&.mx-card--reversed .mx-card__content{padding-inline-end:0}}}& .mx-card__content{align-self:var(--align-content,var(--card-alignment,stretch));grid-area:content}& .mx-card__media{align-self:var(--align-media,var(--card-alignment,stretch));grid-area:media;inline-size:100%;& img{aspect-ratio:var(--ratio);border-radius:var(--border-radius);object-fit:cover;inline-size:100%}}& .skeleton--bg,& .mx-card__icon{grid-area:media}}& .mx-link-list{inline-size:100%}}.mx-card__content>a:last-child{margin-block-start:auto}.mx-grid:has(>:nth-child(2):last-child)>:is(.mx-card,.mx-container:has(.mx-card)){inline-size:min(100%, var(--max-card-width,37ch));margin-inline:auto}.mx-container:has(>.mx-card){--container-name:card}.mx-card--block{position:relative;& a{&:before{content:"";block-size:100%;inline-size:100%;position:absolute;inset-block-start:0;inset-inline-start:0}&:is(:focus,:focus-visible){outline:unset}}&:has(a[aria-label]){& a:not(:has(.mx-icon)){margin-block-start:calc(var(--flow-gap,var(--gap)) * -1)}&:hover :is(h2,h3,h4){color:var(--link-colour,var(--colour-link))}}&:focus-within{outline:var(--outline-size,2px) var(--outline-style,solid) var(--outline-color,currentcolor);outline-offset:var(--outline-offset,2px);&.mx-background--box{outline-offset:var(--outline-offset,-2px)}}}}.mx-card--collapse{@media (width<540px){& :is(p,.mx-text--lede){display:none}}@media (320px<width<720px){--flow-gap:var(--spacing-xxxs);&:has(.mx-card__media){--collapsed-media-col:var(--collapsed-image-width,100px);--ratio:1;grid-template:"content media" / var(--collapsed-content-col,1fr) var(--collapsed-media-col,1fr)}}}:is(.mx-card--collapse:where(:not(.mx-list-item)),.mx-container:has(>.mx-card--collapse)){&:where(:not(:first-child)){@media (width<720px){border-block-start:var(--line-width,1px) solid var(--line-colour,var(--colour-border));padding-block-start:var(--gap)}}}
@@ -0,0 +1,44 @@
1
+ import { s as e } from "./utilities-Dd-08SW6.js";
2
+ //#region src/Component/Accordion/Elements/Accordion.ts
3
+ var t = class extends HTMLElement {
4
+ internals_;
5
+ controller;
6
+ constructor() {
7
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController();
8
+ }
9
+ connectedCallback() {
10
+ if (!this.details || !this.trigger) return;
11
+ let { signal: e } = this.controller;
12
+ document.addEventListener("beforeprint", this.handleOpen, { signal: e }), document.addEventListener("afterprint", this.handleClose, { signal: e }), this.handleHash(), document.addEventListener("hashchange", this.handleHash, { signal: e });
13
+ }
14
+ disconnectedCallback() {
15
+ this.controller.abort();
16
+ }
17
+ handleOpen = () => {
18
+ this.details && (this.details.open = !0);
19
+ };
20
+ handleClose = () => {
21
+ this.details && (this.details.open = !1);
22
+ };
23
+ handleHash = () => {
24
+ let { hash: e } = window.location;
25
+ e && e === `#${this.details?.id}` && this.handleOpen();
26
+ };
27
+ get details() {
28
+ let e = this.querySelector("details");
29
+ if (!e) throw Error(`${this.localName} must contain a <details> element.`);
30
+ return e.id = e.id || this.generatedId(), e;
31
+ }
32
+ get trigger() {
33
+ let e = this.querySelector("summary");
34
+ if (!e) throw Error(`${this.localName} must contain a <summary> element.`);
35
+ return e;
36
+ }
37
+ generatedId = () => {
38
+ let t = this.trigger?.textContent?.trim();
39
+ return t ? e(t) : "";
40
+ };
41
+ };
42
+ customElements.get("mx-accordion") || customElements.define("mx-accordion", t);
43
+ //#endregion
44
+ export { t };
@@ -0,0 +1,47 @@
1
+ //#region src/Component/Accordion/Elements/AccordionGroup.ts
2
+ var e = class extends HTMLElement {
3
+ internals_;
4
+ controller;
5
+ constructor() {
6
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController();
7
+ }
8
+ connectedCallback() {
9
+ if (!this.accordions || !this.expandTrigger || !this.collapseTrigger) return;
10
+ this.handleToggle();
11
+ let { signal: e } = this.controller;
12
+ this.addEventListener("click", this.handleClick, { signal: e }), this.accordions.forEach((t) => t.addEventListener("toggle", this.handleToggle, { signal: e }));
13
+ }
14
+ disconnectedCallback() {
15
+ this.controller.abort();
16
+ }
17
+ handleClick = ({ target: e }) => {
18
+ e === this.expandTrigger && this.handleExpand(), e === this.collapseTrigger && this.handleCollapse();
19
+ };
20
+ handleExpand = () => {
21
+ this.accordions.forEach((e) => e.open = !0), this.expandTrigger.disabled = !0, this.collapseTrigger.disabled = !1;
22
+ };
23
+ handleCollapse = () => {
24
+ this.accordions.forEach((e) => e.open = !1), this.expandTrigger.disabled = !1, this.collapseTrigger.disabled = !0;
25
+ };
26
+ handleToggle = () => {
27
+ this.expandTrigger.disabled = [...this.accordions].every((e) => e.open === !0), this.collapseTrigger.disabled = [...this.accordions].every((e) => e.open !== !0);
28
+ };
29
+ get accordions() {
30
+ let e = this.querySelectorAll("details");
31
+ if (!e.length) throw Error(`${this.localName} must contain at least one <details> element.`);
32
+ return e;
33
+ }
34
+ get expandTrigger() {
35
+ let e = this.querySelector("button[data-expand]");
36
+ if (!e) throw Error(`${this.localName} must contain a <button data-expand> element.`);
37
+ return e;
38
+ }
39
+ get collapseTrigger() {
40
+ let e = this.querySelector("button[data-collapse]");
41
+ if (!e) throw Error(`${this.localName} must contain a <button data-collapse> element.`);
42
+ return e;
43
+ }
44
+ };
45
+ customElements.get("mx-accordion-group") || customElements.define("mx-accordion-group", e);
46
+ //#endregion
47
+ export { e as t };
@@ -0,0 +1,26 @@
1
+ import { t as e } from "./Accordion-D2wp8hBG.js";
2
+ //#region src/Component/Accordion/Elements/AccordionMobile.ts
3
+ var t = class extends e {
4
+ mq;
5
+ toggleAttribute;
6
+ constructor() {
7
+ super(), this.mq = this.getAttribute("mq") || "(max-width: 720px)";
8
+ }
9
+ connectedCallback() {
10
+ super.connectedCallback(), this.handleBreakpoint(this.breakpoint);
11
+ let { signal: e } = this.controller;
12
+ this.breakpoint.addEventListener("change", this.handleBreakpoint, { signal: e });
13
+ }
14
+ disconnectedCallback() {
15
+ this.controller.abort();
16
+ }
17
+ handleBreakpoint = ({ matches: e }) => {
18
+ this.details && this.details.toggleAttribute("open", !e);
19
+ };
20
+ get breakpoint() {
21
+ return window.matchMedia(this.mq);
22
+ }
23
+ };
24
+ customElements.get("mx-accordionmobile") || customElements.define("mx-accordionmobile", t);
25
+ //#endregion
26
+ export { t };
@@ -0,0 +1,135 @@
1
+ //#region src/Form/Autocomplete/Elements/Autocomplete.ts
2
+ var e = class extends HTMLElement {
3
+ internals_;
4
+ controller;
5
+ observer;
6
+ activeOption;
7
+ constructor() {
8
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController(), this.activeOption = null;
9
+ }
10
+ connectedCallback() {
11
+ if (!this.input || !this.listbox || !this.status) return;
12
+ let { signal: e } = this.controller;
13
+ this.input.addEventListener("input", this.handleInput, { signal: e }), this.input.addEventListener("keydown", this.handleKeydown, { signal: e }), this.input.addEventListener("focus", this.handleFocus, { signal: e }), this.input.addEventListener("blur", this.handleBlur, { signal: e }), this.listbox.addEventListener("mousedown", this.handleListboxMousedown, { signal: e }), this.listbox.addEventListener("click", this.handleOptionClick, { signal: e }), this.observer = new MutationObserver(this.handleOptionsChange), this.observer.observe(this.listbox, { childList: !0 });
14
+ }
15
+ disconnectedCallback() {
16
+ this.controller.abort(), this.observer?.disconnect();
17
+ }
18
+ handleOptionsChange = () => {
19
+ this.activeOption && !this.options.includes(this.activeOption) && this.setActive(null), this.updateVisibility();
20
+ };
21
+ handleInput = () => {
22
+ this.setActive(null), this.dispatchSearch(), this.updateVisibility();
23
+ };
24
+ handleFocus = () => {
25
+ this.updateVisibility();
26
+ };
27
+ handleBlur = () => {
28
+ this.close();
29
+ };
30
+ handleListboxMousedown = (e) => {
31
+ e.preventDefault();
32
+ };
33
+ handleKeydown = (e) => {
34
+ if (!this.isOpen) (e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), this.updateVisibility());
35
+ else switch (e.key) {
36
+ case "ArrowDown":
37
+ e.preventDefault(), this.moveActive(1);
38
+ break;
39
+ case "ArrowUp":
40
+ e.preventDefault(), this.moveActive(-1);
41
+ break;
42
+ case "Home":
43
+ e.preventDefault(), this.setActive(this.visibleOptions[0] ?? null);
44
+ break;
45
+ case "End":
46
+ e.preventDefault(), this.setActive(this.visibleOptions.at(-1) ?? null);
47
+ break;
48
+ case "Enter":
49
+ if (!this.activeOption) return;
50
+ e.preventDefault(), this.select(this.activeOption);
51
+ break;
52
+ case "Escape": e.preventDefault(), this.close();
53
+ }
54
+ };
55
+ handleOptionClick = (e) => {
56
+ let t = e.target.closest("[role=\"option\"]");
57
+ t && this.select(t);
58
+ };
59
+ dispatchSearch() {
60
+ let e = new CustomEvent("mx-autocomplete-search", {
61
+ bubbles: !0,
62
+ detail: { query: this.input.value.trim() }
63
+ });
64
+ this.dispatchEvent(e);
65
+ }
66
+ updateVisibility() {
67
+ let e = this.input.value.trim().length > 0, t = this.visibleOptions.length, n = e && t > 0;
68
+ this.listbox.hidden = !n, this.input.setAttribute("aria-expanded", String(n)), this.status.textContent = e ? t === 0 ? this.noResultsLabel : `${t} result${t === 1 ? "" : "s"} available` : "";
69
+ }
70
+ moveActive(e) {
71
+ let t = this.visibleOptions;
72
+ if (t.length === 0) return;
73
+ let n = ((this.activeOption ? t.indexOf(this.activeOption) : -1) + e + t.length) % t.length;
74
+ this.setActive(t[n]);
75
+ }
76
+ setActive(e) {
77
+ this.activeOption?.setAttribute("aria-selected", "false"), this.activeOption = e, e?.setAttribute("aria-selected", "true"), this.input.setAttribute("aria-activedescendant", e?.id ?? ""), e?.scrollIntoView({ block: "nearest" });
78
+ }
79
+ select(e) {
80
+ let t = e.textContent ?? "";
81
+ this.input.value = t, this.close(), this.input.focus();
82
+ let n = new CustomEvent("mx-autocomplete-select", {
83
+ bubbles: !0,
84
+ detail: {
85
+ value: e.dataset.value ?? t,
86
+ label: t
87
+ }
88
+ });
89
+ this.dispatchEvent(n);
90
+ }
91
+ close() {
92
+ this.listbox.hidden = !0, this.input.setAttribute("aria-expanded", "false"), this.status.textContent = "", this.setActive(null);
93
+ }
94
+ get isOpen() {
95
+ return !this.listbox.hidden;
96
+ }
97
+ get noResultsLabel() {
98
+ return this.dataset.noResultsLabel || "No results found";
99
+ }
100
+ get control() {
101
+ let e = this.querySelector("[data-control]");
102
+ if (!e) throw Error(`${this.localName} must contain a [data-control] element.`);
103
+ return e;
104
+ }
105
+ get input() {
106
+ let e = this.control.querySelector("input[role=\"combobox\"]");
107
+ if (!e) throw Error(`${this.localName} must contain an <input role="combobox">.`);
108
+ return e;
109
+ }
110
+ get listbox() {
111
+ let e = this.querySelector("[role=\"listbox\"]");
112
+ if (!e) throw Error(`${this.localName} must contain a [role="listbox"] element.`);
113
+ return e;
114
+ }
115
+ get status() {
116
+ let e = this.querySelector("[data-autocomplete-status]");
117
+ if (!e) throw Error(`${this.localName} must contain a [data-autocomplete-status] element.`);
118
+ return e;
119
+ }
120
+ get options() {
121
+ return Array.from(this.listbox.querySelectorAll("[role=\"option\"]"));
122
+ }
123
+ get visibleOptions() {
124
+ return this.options.filter((e) => !e.hidden);
125
+ }
126
+ get pending() {
127
+ return this.control.getAttribute("aria-busy") === "true";
128
+ }
129
+ set pending(e) {
130
+ this.control.setAttribute("aria-busy", String(e));
131
+ }
132
+ };
133
+ customElements.get("mx-autocomplete") || customElements.define("mx-autocomplete", e);
134
+ //#endregion
135
+ export { e as t };
@@ -0,0 +1,64 @@
1
+ //#region src/Component/BackToTop/Elements/BackToTop.ts
2
+ var e = (e) => {
3
+ let t = Number.parseFloat(e);
4
+ return Number.isNaN(t) ? window.innerHeight : e.endsWith("vh") ? t / 100 * window.innerHeight : t;
5
+ }, t = class extends HTMLElement {
6
+ internals_;
7
+ controller;
8
+ io;
9
+ constructor() {
10
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController();
11
+ }
12
+ connectedCallback() {
13
+ let { signal: t } = this.controller;
14
+ this.classList.add("is-enhanced"), this.trigger?.addEventListener("click", this.handleClick, { signal: t });
15
+ let n = this.getAttribute("target"), r = n ? document.querySelector(n) : null;
16
+ if (r) {
17
+ this.io = new IntersectionObserver(([{ boundingClientRect: e }]) => {
18
+ this.setVisible(e.y < 0);
19
+ }), this.io.observe(r);
20
+ return;
21
+ }
22
+ let i = e(this.getAttribute("visibleafter") || "100vh");
23
+ this.setVisible(window.scrollY > i), window.addEventListener("scroll", () => this.setVisible(window.scrollY > i), {
24
+ signal: t,
25
+ passive: !0
26
+ });
27
+ }
28
+ disconnectedCallback() {
29
+ this.controller.abort(), this.io?.disconnect();
30
+ }
31
+ get trigger() {
32
+ return this.querySelector("a");
33
+ }
34
+ setVisible(e) {
35
+ this.classList.contains("is-visible") !== e && (this.classList.toggle("is-visible", e), this.dispatchEvent(new CustomEvent("back-to-top-toggle", {
36
+ bubbles: !0,
37
+ cancelable: !0,
38
+ detail: {
39
+ isVisible: e,
40
+ target: this
41
+ }
42
+ })));
43
+ }
44
+ handleClick = (e) => {
45
+ let t = e.currentTarget.getAttribute("href");
46
+ if (!t?.startsWith("#")) return;
47
+ let n = document.querySelector(t);
48
+ if (!n) return;
49
+ e.preventDefault();
50
+ let r = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
51
+ n.scrollIntoView({
52
+ behavior: r ? "auto" : "smooth",
53
+ block: "start"
54
+ });
55
+ let i = n.hasAttribute("tabindex");
56
+ i || n.setAttribute("tabindex", "-1"), n.focus({ preventScroll: !0 }), i || n.addEventListener("blur", () => n.removeAttribute("tabindex"), {
57
+ once: !0,
58
+ signal: this.controller.signal
59
+ }), window.history?.pushState?.(null, "", t);
60
+ };
61
+ };
62
+ customElements.get("mx-back-to-top") || customElements.define("mx-back-to-top", t);
63
+ //#endregion
64
+ export { t };
@@ -0,0 +1,55 @@
1
+ import { s as e, t } from "./utilities-Dd-08SW6.js";
2
+ //#region src/Component/GlobalAlert/Elements/ClosableAlert.ts
3
+ var n = class extends HTMLElement {
4
+ internals_;
5
+ controller;
6
+ constructor() {
7
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController();
8
+ }
9
+ connectedCallback() {
10
+ if (!this.container) return;
11
+ if (this.id = this.id || this.generatedId(), this.localStorage) {
12
+ this.controller.abort(), this.remove();
13
+ return;
14
+ }
15
+ let { signal: e } = this.controller;
16
+ this.close?.addEventListener("click", this.handleClose, { signal: e });
17
+ }
18
+ disconnectedCallback() {
19
+ this.controller.abort(), this.close.remove();
20
+ }
21
+ handleClose = () => {
22
+ this.controller.abort(), this.remove(), this.localStorage = "true", document.body?.focus?.();
23
+ let e = new CustomEvent("GlobalAlert-close", {
24
+ bubbles: !0,
25
+ cancelable: !0,
26
+ detail: {
27
+ id: this.id,
28
+ target: this
29
+ }
30
+ });
31
+ this.dispatchEvent(e);
32
+ };
33
+ get localStorage() {
34
+ return localStorage.getItem(this.id);
35
+ }
36
+ set localStorage(e) {
37
+ localStorage.setItem(this.id, e);
38
+ }
39
+ get container() {
40
+ let e = this.querySelector("[data-container]");
41
+ if (!e) throw Error(`${this.localName} must contain a [data-container] element.`);
42
+ return e;
43
+ }
44
+ get close() {
45
+ let e = this.querySelector(".mx-icon--close");
46
+ return e || (e = t(`<button class="mx-icon mx-icon--close" aria-controls="${this.id}" aria-label="Close GlobalAlert" type="button"></button>`), this.container.appendChild(e)), e;
47
+ }
48
+ generatedId() {
49
+ let t = `mx-alert-${Math.floor(Math.random() * 1e4)}`;
50
+ return e(t, 20);
51
+ }
52
+ };
53
+ customElements.get("mx-closable-alert") || customElements.define("mx-closable-alert", n);
54
+ //#endregion
55
+ export { n as t };
@@ -0,0 +1,18 @@
1
+ import { t as e } from "./cookie-compliance-CG6x-TcV.js";
2
+ //#region src/Component/CookieConsent/Elements/CookieConsent.ts
3
+ var t = class extends HTMLElement {
4
+ internals_;
5
+ compliance;
6
+ constructor() {
7
+ super(), this.internals_ = this.attachInternals();
8
+ }
9
+ connectedCallback() {
10
+ this.compliance = new e(this), this.compliance.init();
11
+ }
12
+ disconnectedCallback() {
13
+ this.compliance?.destroy();
14
+ }
15
+ };
16
+ customElements.get("mx-cookie-consent") || customElements.define("mx-cookie-consent", t);
17
+ //#endregion
18
+ export { t };
@@ -0,0 +1,48 @@
1
+ import { i as e, r as t } from "./utilities-Dd-08SW6.js";
2
+ //#region src/Component/Dialog/Elements/Dialog.ts
3
+ var n = class extends HTMLElement {
4
+ internals_;
5
+ controller;
6
+ scrollLockClass = "body--scroll-lock";
7
+ constructor() {
8
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController();
9
+ }
10
+ connectedCallback() {
11
+ if (!this.dialog) return;
12
+ let { signal: n } = this.controller;
13
+ this.openBtns?.forEach((e) => e.addEventListener("click", this.handleOpen, { signal: n })), this.closeBtns?.forEach((e) => e.addEventListener("click", this.handleClose, { signal: n })), document.addEventListener("click", (t) => {
14
+ this.dialog?.open && e(t, this.dialog, this.handleClose, [...this.openBtns, ...this.closeBtns]);
15
+ }, { signal: n }), document.addEventListener("keydown", (e) => {
16
+ this.dialog?.open && t(e, this.handleClose);
17
+ }, { signal: n });
18
+ }
19
+ disconnectedCallback() {
20
+ this.dialog && (typeof this.dialog.close == "function" && this.dialog.close(), this.openBtns?.forEach((e) => e.setAttribute("aria-expanded", "false")), this.isModal && document.body.classList.remove(this.scrollLockClass), this.controller.abort());
21
+ }
22
+ handleOpen = (e) => {
23
+ this.dialog && (e.preventDefault(), typeof this.dialog.show == "function" && (this.isModal ? this.dialog.showModal() : this.dialog.show()), this.openBtns?.forEach((e) => e.setAttribute("aria-expanded", "true")), this.isModal && document.body.classList.add(this.scrollLockClass));
24
+ };
25
+ handleClose = () => {
26
+ this.dialog && (typeof this.dialog.close == "function" && this.dialog.close(), this.openBtns?.forEach((e) => e.setAttribute("aria-expanded", "false")), this.isModal && document.body.classList.remove(this.scrollLockClass));
27
+ };
28
+ get dialog() {
29
+ let e = this.querySelector("dialog");
30
+ if (!e) throw Error(`${this.localName} must contain a <dialog> element.`);
31
+ return e;
32
+ }
33
+ get openBtns() {
34
+ let e = document.querySelectorAll(`[href="#${this.id}"], [aria-controls="${this.id}"]`);
35
+ return e?.forEach((e) => {
36
+ e.setAttribute("aria-controls", this.id);
37
+ }), e;
38
+ }
39
+ get closeBtns() {
40
+ return this.querySelectorAll("button[data-close]");
41
+ }
42
+ get isModal() {
43
+ return this.hasAttribute("data-modal");
44
+ }
45
+ };
46
+ customElements.get("mx-dialog") || customElements.define("mx-dialog", n);
47
+ //#endregion
48
+ export { n as t };
@@ -0,0 +1,68 @@
1
+ import { t as e } from "./Popover-CiTAftNU.js";
2
+ //#region src/Component/DropMenu/Elements/DropMenu.ts
3
+ var t = class extends e {
4
+ controller;
5
+ closeOnClick;
6
+ constructor() {
7
+ super(), this.controller = new AbortController();
8
+ }
9
+ async connectedCallback() {
10
+ if (await super.connectedCallback(), !this.container || !this.trigger) return;
11
+ this.closeOnClick = this.hasAttribute("closeonclick");
12
+ let { signal: e } = this.controller;
13
+ document.addEventListener("click", (e) => {
14
+ let t = e.target, n = t.closest("a, button");
15
+ (t === this.container || [...this.items].includes(n)) && (this.handleSelect(e), e.preventDefault());
16
+ }, { signal: e }), document.addEventListener("keydown", (e) => {
17
+ let { target: t, key: n } = e, r = [...this.items];
18
+ if (t === this.container || r.includes(t)) switch (n) {
19
+ case "Enter":
20
+ e.preventDefault(), this.handleSelect(e);
21
+ break;
22
+ case "ArrowDown":
23
+ case "ArrowRight":
24
+ e.preventDefault(), this.moveFocus(t, 1);
25
+ break;
26
+ case "ArrowUp":
27
+ case "ArrowLeft":
28
+ e.preventDefault(), this.moveFocus(t, -1);
29
+ break;
30
+ case "Home":
31
+ e.preventDefault(), r[0].focus();
32
+ break;
33
+ case "End": e.preventDefault(), r.at(-1).focus();
34
+ }
35
+ }, { signal: e });
36
+ }
37
+ disconnectedCallback() {
38
+ this.controller.abort();
39
+ }
40
+ handleSelect = (e) => {
41
+ let t = e.target;
42
+ this.items?.forEach((e) => {
43
+ e instanceof HTMLButtonElement && e.setAttribute("aria-checked", String(e === t));
44
+ });
45
+ let n = new CustomEvent("drop-menu-select", {
46
+ bubbles: !0,
47
+ cancelable: !0,
48
+ detail: {
49
+ event: e,
50
+ target: t
51
+ }
52
+ });
53
+ this.container.dispatchEvent(n), this.closeOnClick && this.container.togglePopover();
54
+ };
55
+ moveFocus = (e, t) => {
56
+ let n = [...this.items], r = n.indexOf(e);
57
+ if (r === -1) return;
58
+ let i = r;
59
+ for (let e = 0; e < n.length && (i = (i + t + n.length) % n.length, n[i].getAttribute("tabindex") === "-1"); e += 1);
60
+ n[i]?.focus();
61
+ };
62
+ get items() {
63
+ return this.container.querySelectorAll("a, button");
64
+ }
65
+ };
66
+ customElements.get("mx-dropmenu") || customElements.define("mx-dropmenu", t);
67
+ //#endregion
68
+ export { t };
@@ -0,0 +1,64 @@
1
+ import { n as e } from "./cookie-compliance-CG6x-TcV.js";
2
+ import "./utilities-Dd-08SW6.js";
3
+ //#region src/Form/FeedbackForm/Elements/FeedbackForm.ts
4
+ var t = class extends HTMLElement {
5
+ internals_;
6
+ controller;
7
+ revealed;
8
+ constructor() {
9
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController(), this.revealed = !1;
10
+ }
11
+ static get observedAttributes() {
12
+ return ["pending"];
13
+ }
14
+ connectedCallback() {
15
+ let { signal: e } = this.controller;
16
+ this.classList.add("is-enhanced"), this.form?.setAttribute("novalidate", ""), this.querySelectorAll("input[type=\"radio\"]").forEach((t) => {
17
+ t.addEventListener("change", this.handleRatingChange, { signal: e });
18
+ }), this.form?.addEventListener("submit", this.handleSubmit, { signal: e });
19
+ }
20
+ disconnectedCallback() {
21
+ this.controller.abort();
22
+ }
23
+ attributeChangedCallback(e) {
24
+ if (e !== "pending") return;
25
+ let t = this.hasAttribute("pending");
26
+ this.internals_.states[t ? "add" : "delete"]("pending"), this.submitButton?.toggleAttribute("disabled", t), this.submitButton?.setAttribute("aria-busy", String(t));
27
+ }
28
+ handleRatingChange = () => {
29
+ this.revealed || (this.revealed = !0, this.comment?.focus());
30
+ };
31
+ handleSubmit = (t) => {
32
+ let n = this.comment;
33
+ if (n?.required && !e.notEmpty(n.value)) {
34
+ t.preventDefault(), n.setAttribute("aria-invalid", "true"), this.status?.removeAttribute("hidden"), n.focus();
35
+ return;
36
+ }
37
+ n?.removeAttribute("aria-invalid"), this.status?.setAttribute("hidden", "");
38
+ let r = this.querySelector("input[type=\"radio\"]:checked")?.value ?? null, i = new CustomEvent("mx-feedback-form-submit", {
39
+ bubbles: !0,
40
+ cancelable: !0,
41
+ detail: {
42
+ rating: r,
43
+ comment: n?.value ?? "",
44
+ form: this.form
45
+ }
46
+ });
47
+ this.dispatchEvent(i) || t.preventDefault();
48
+ };
49
+ get form() {
50
+ return this.querySelector("form");
51
+ }
52
+ get comment() {
53
+ return this.querySelector(".mx-feedback-form__reveal textarea");
54
+ }
55
+ get status() {
56
+ return this.querySelector(".mx-feedback-form__reveal [role=\"alert\"]");
57
+ }
58
+ get submitButton() {
59
+ return this.querySelector(".mx-form-actions button");
60
+ }
61
+ };
62
+ customElements.get("mx-feedback-form") || customElements.define("mx-feedback-form", t);
63
+ //#endregion
64
+ export { t };