@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
@@ -1 +1,147 @@
1
- import{n as e,t}from"./chunks/cookie-compliance-Bbm-0vpj.js";import{a as n,c as r,i,l as a,n as o,o as s,r as c,s as l,t as u}from"./chunks/utilities-_Bq3TxAQ.js";import{n as d,t as f}from"./chunks/Navigation-hOrfLq7h.js";import{t as p}from"./chunks/GlobalToggle-B52fdBQu.js";import{t as m}from"./chunks/Autocomplete-B4RtkAyh.js";import{t as h}from"./chunks/DropMenu-1baQc8Yc.js";import{t as g}from"./chunks/Tabs-DYy1YTdU.js";import{t as _}from"./chunks/Sticky-BGCuuEJK.js";import{t as v}from"./chunks/InPageNavigation-Dyn2TR-N.js";import{t as y}from"./chunks/ClosableAlert-DEhj8Nxm.js";import{n as b,t as x}from"./chunks/Gallery-D8NGXy2Q.js";import{t as S}from"./chunks/Dialog-Haahn-Yn.js";import{t as C}from"./chunks/Accordion-GN0sME4W.js";import{t as w}from"./chunks/AccordionMobile-DG5jSe8Q.js";import{t as T}from"./chunks/CookieConsent-BkCMRVST.js";import{t as E}from"./chunks/AccordionGroup-Bzqp5__q.js";var D=class e{el;callback;controller;observer;fallbackBtn;errorMsg;constructor(e,t){this.el=e,this.callback=t,this.fallbackBtn=this.el.querySelector(`[data-load-fallback]`),this.errorMsg=this.el.querySelector(`[data-load-error]`),this.controller=new AbortController}init=()=>{this.observer=new IntersectionObserver(e=>{e.forEach(({isIntersecting:e})=>{e&&this.load().catch(e=>this.handleError(e))})}),this.observer.observe(this.el);let{signal:e}=this.controller;this.fallbackBtn?.addEventListener(`click`,this.handleClick,{signal:e})};load=async()=>{try{await this.callback()}catch(e){this.handleError(e)}finally{this.destroy()}};destroy=()=>{this.observer.disconnect(),this.controller.abort()};handleClick=()=>{this.load().catch(e=>this.handleError(e))};handleError=e=>{this.errorMsg?.removeAttribute(`hidden`)};static create=(t,n)=>{Object.hasOwn(window,`once`)&&window.once(`intersection-loader`,t)?.forEach(t=>{new e(t,n).init()})}},O=class e{el;callback;controller;breakpoint;options;fallbackBtn;errorMsg;constructor(e,t,n={mediaQuery:`(max-width: 720px)`}){if(!e)throw Error(`Element is null or empty.`);this.el=e,this.callback=t,this.breakpoint=window.matchMedia(n.mediaQuery),this.options={...n},this.fallbackBtn=this.el.querySelector(`[data-load-fallback]`),this.errorMsg=this.el.querySelector(`[data-load-error]`),this.controller=new AbortController}init=()=>{this.responsiveCheck(this.breakpoint);let{signal:e}=this.controller;this.breakpoint.addEventListener(`change`,this.responsiveCheck,{signal:e}),this.fallbackBtn?.addEventListener(`click`,this.handleClick,{signal:e})};responsiveCheck=({matches:e})=>{e&&this.load().catch(e=>this.handleError(e))};load=async()=>{try{await this.callback()}catch(e){this.handleError(e)}finally{this.destroy()}};destroy=()=>{this.controller.abort()};handleClick=()=>{this.load().catch(e=>this.handleError(e))};handleError=e=>{this.errorMsg?.removeAttribute(`hidden`)};static create=(t,n,r={})=>{Object.hasOwn(window,`once`)&&window.once(`breakpoint-loader`,t)?.forEach(t=>{new e(t,n,r).init()})}},k=class extends HTMLElement{internals_;controller;widget;static observedAttributes=[`open`];constructor(){super(),this.internals_=this.attachInternals(),this.controller=new AbortController}connectedCallback(){if(!this.trigger||!this.content)return;this.content?.setAttribute(`inert`,``),this.content?.setAttribute(`role`,`region`),this.widget=new a(this.trigger,this,{attribute:`open`,setInitialAttribute:!1}),this.widget.init();let{signal:e}=this.controller;this.handleHash(),document.addEventListener(`hashchange`,this.handleHash,{signal:e})}disconnectedCallback(){this.content?.removeAttribute(`inert`),this.widget.detach(),this.controller.abort()}attributeChangedCallback(e,t,n){let r=n===null;this.content?.toggleAttribute(`inert`,r)}handleHash=()=>{let{hash:e}=window.location;e&&e===`#${this.id}`&&!this.hasAttribute(`open`)&&this.widget.handleToggle()};get trigger(){let e=this.querySelector(`:scope > button`);if(!e)throw Error(`${this.localName} must contain a <button> element.`);return e}get content(){let e=this.trigger?.nextElementSibling;if(!e)throw Error(`${this.localName} must contain a <div> element after the <button>.`);return e}};customElements.get(`mx-accordiondiv`)||customElements.define(`mx-accordiondiv`,k);export{C as Accordion,k as AccordionDiv,E as AccordionGroup,w as AccordionMobile,m as Autocomplete,O as BreakpointLoader,b as Carousel,y as ClosableAlert,t as CookieCompliance,T as CookieConsent,S as Dialog,a as DisclosureWidget,h as DropMenu,x as Gallery,p as GlobalToggle,v as InPageNavigation,D as IntersectionLoader,d as Keyboard,f as Navigation,_ as Sticky,g as Tabs,u as createElement,o as getElementBox,c as handleEscape,i as handleOutsideClick,n as isInternalLink,s as loadOnReady,l as makeAnchor,r as makeCamelCase,e as validators};
1
+ import { n as e, t } from "./chunks/cookie-compliance-CG6x-TcV.js";
2
+ import { a as n, c as r, i, l as a, n as o, o as s, r as c, s as l, t as u, u as d } from "./chunks/utilities-Dd-08SW6.js";
3
+ import { n as f, t as p } from "./chunks/Navigation-CDQnN61h.js";
4
+ import { t as m } from "./chunks/GlobalToggle-CzlkpLpc.js";
5
+ import { t as h } from "./chunks/FeedbackForm-BochXEDx.js";
6
+ import { t as g } from "./chunks/Autocomplete-kRo8RNbC.js";
7
+ import { t as _ } from "./chunks/DropMenu-CSTZq0Zt.js";
8
+ import { t as v } from "./chunks/Translate-bmM38j6z.js";
9
+ import { t as y } from "./chunks/Tabs-BDlxCDNh.js";
10
+ import { t as b } from "./chunks/Sticky-DoVndENm.js";
11
+ import { t as x } from "./chunks/InPageNavigation-D1Kk-rCm.js";
12
+ import { t as S } from "./chunks/ClosableAlert-yy84gae6.js";
13
+ import { n as C, t as w } from "./chunks/Gallery-Rkfv7Mbb.js";
14
+ import { t as T } from "./chunks/Dialog-DWoXW-7Z.js";
15
+ import { t as E } from "./chunks/Accordion-D2wp8hBG.js";
16
+ import { t as D } from "./chunks/AccordionMobile-D3sTeiM5.js";
17
+ import { t as O } from "./chunks/CookieConsent-wd8gQ2Oe.js";
18
+ import { t as k } from "./chunks/BackToTop-4M-Wl7z3.js";
19
+ import { t as A } from "./chunks/AccordionGroup-BYtoAFxg.js";
20
+ //#region src/Utility/Elements/io-loader.ts
21
+ var j = class e {
22
+ el;
23
+ callback;
24
+ controller;
25
+ observer;
26
+ fallbackBtn;
27
+ errorMsg;
28
+ constructor(e, t) {
29
+ this.el = e, this.callback = t, this.fallbackBtn = this.el.querySelector("[data-load-fallback]"), this.errorMsg = this.el.querySelector("[data-load-error]"), this.controller = new AbortController();
30
+ }
31
+ init = () => {
32
+ this.observer = new IntersectionObserver((e) => {
33
+ e.forEach(({ isIntersecting: e }) => {
34
+ e && this.load().catch((e) => this.handleError(e));
35
+ });
36
+ }), this.observer.observe(this.el);
37
+ let { signal: e } = this.controller;
38
+ this.fallbackBtn?.addEventListener("click", this.handleClick, { signal: e });
39
+ };
40
+ load = async () => {
41
+ try {
42
+ await this.callback();
43
+ } catch (e) {
44
+ this.handleError(e);
45
+ } finally {
46
+ this.destroy();
47
+ }
48
+ };
49
+ destroy = () => {
50
+ this.observer.disconnect(), this.controller.abort();
51
+ };
52
+ handleClick = () => {
53
+ this.load().catch((e) => this.handleError(e));
54
+ };
55
+ handleError = (e) => {
56
+ this.errorMsg?.removeAttribute("hidden");
57
+ };
58
+ static create = (t, n) => {
59
+ Object.hasOwn(window, "once") && window.once("intersection-loader", t)?.forEach((t) => {
60
+ new e(t, n).init();
61
+ });
62
+ };
63
+ }, M = class e {
64
+ el;
65
+ callback;
66
+ controller;
67
+ breakpoint;
68
+ options;
69
+ fallbackBtn;
70
+ errorMsg;
71
+ constructor(e, t, n = { mediaQuery: "(max-width: 720px)" }) {
72
+ if (!e) throw Error("Element is null or empty.");
73
+ this.el = e, this.callback = t, this.breakpoint = window.matchMedia(n.mediaQuery), this.options = { ...n }, this.fallbackBtn = this.el.querySelector("[data-load-fallback]"), this.errorMsg = this.el.querySelector("[data-load-error]"), this.controller = new AbortController();
74
+ }
75
+ init = () => {
76
+ this.responsiveCheck(this.breakpoint);
77
+ let { signal: e } = this.controller;
78
+ this.breakpoint.addEventListener("change", this.responsiveCheck, { signal: e }), this.fallbackBtn?.addEventListener("click", this.handleClick, { signal: e });
79
+ };
80
+ responsiveCheck = ({ matches: e }) => {
81
+ e && this.load().catch((e) => this.handleError(e));
82
+ };
83
+ load = async () => {
84
+ try {
85
+ await this.callback();
86
+ } catch (e) {
87
+ this.handleError(e);
88
+ } finally {
89
+ this.destroy();
90
+ }
91
+ };
92
+ destroy = () => {
93
+ this.controller.abort();
94
+ };
95
+ handleClick = () => {
96
+ this.load().catch((e) => this.handleError(e));
97
+ };
98
+ handleError = (e) => {
99
+ this.errorMsg?.removeAttribute("hidden");
100
+ };
101
+ static create = (t, n, r = {}) => {
102
+ Object.hasOwn(window, "once") && window.once("breakpoint-loader", t)?.forEach((t) => {
103
+ new e(t, n, r).init();
104
+ });
105
+ };
106
+ }, N = class extends HTMLElement {
107
+ internals_;
108
+ controller;
109
+ widget;
110
+ static observedAttributes = ["open"];
111
+ constructor() {
112
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController();
113
+ }
114
+ connectedCallback() {
115
+ if (!this.trigger || !this.content) return;
116
+ this.content?.setAttribute("inert", ""), this.content?.setAttribute("role", "region"), this.widget = new d(this.trigger, this, {
117
+ attribute: "open",
118
+ setInitialAttribute: !1
119
+ }), this.widget.init();
120
+ let { signal: e } = this.controller;
121
+ this.handleHash(), document.addEventListener("hashchange", this.handleHash, { signal: e });
122
+ }
123
+ disconnectedCallback() {
124
+ this.content?.removeAttribute("inert"), this.widget.detach(), this.controller.abort();
125
+ }
126
+ attributeChangedCallback(e, t, n) {
127
+ let r = n === null;
128
+ this.content?.toggleAttribute("inert", r);
129
+ }
130
+ handleHash = () => {
131
+ let { hash: e } = window.location;
132
+ e && e === `#${this.id}` && !this.hasAttribute("open") && this.widget.handleToggle();
133
+ };
134
+ get trigger() {
135
+ let e = this.querySelector(":scope > button");
136
+ if (!e) throw Error(`${this.localName} must contain a <button> element.`);
137
+ return e;
138
+ }
139
+ get content() {
140
+ let e = this.trigger?.nextElementSibling;
141
+ if (!e) throw Error(`${this.localName} must contain a <div> element after the <button>.`);
142
+ return e;
143
+ }
144
+ };
145
+ customElements.get("mx-accordiondiv") || customElements.define("mx-accordiondiv", N);
146
+ //#endregion
147
+ export { E as Accordion, N as AccordionDiv, A as AccordionGroup, D as AccordionMobile, g as Autocomplete, k as BackToTop, M as BreakpointLoader, C as Carousel, S as ClosableAlert, t as CookieCompliance, O as CookieConsent, T as Dialog, d as DisclosureWidget, _ as DropMenu, h as FeedbackForm, w as Gallery, m as GlobalToggle, a as GoogleTranslateWidget, x as InPageNavigation, j as IntersectionLoader, f as Keyboard, p as Navigation, b as Sticky, y as Tabs, v as Translate, u as createElement, o as getElementBox, c as handleEscape, i as handleOutsideClick, n as isInternalLink, s as loadOnReady, l as makeAnchor, r as makeCamelCase, e as validators };
@@ -0,0 +1 @@
1
+ @layer popover-polyfill;@layer design-system.defaults{mx-feedback-form{display:block}}@layer design-system.atoms,design-system.layout,design-system.utilities;@layer design-system.components{.mx-feedback-form{display:block;& form{gap:var(--flow-gap,var(--gap));display:grid}& .mx-error-message{margin-block-end:unset}& .mx-form-actions{margin-block-start:var(--flow-gap,var(--gap))}}.mx-feedback-form__rating{gap:var(--spacing-s);flex-wrap:wrap;display:flex}.mx-feedback-form__option .mx-icon{--icon-size:var(--feedback-form-icon-size,var(--spacing-m))}.mx-feedback-form__option label{cursor:pointer}.mx-feedback-form__option:has(input:checked) label{--button-bg:var(--button-dark-bg,var(--link-colour,var(--colour-link)));--button-fg:var(--button-dark-fg,var(--colour-foreground-reverse))}.mx-feedback-form__option:has(input:focus-visible) label{outline:var(--outline-size,2px) var(--outline-style,solid) var(--outline-color,currentcolor);outline-offset:var(--outline-offset,2px)}.mx-feedback-form.is-enhanced .mx-feedback-form__reveal{display:none}.mx-feedback-form.is-enhanced:has(.mx-feedback-form__rating input:checked) .mx-feedback-form__reveal{display:block}}
@@ -0,0 +1 @@
1
+ import "./chunks/FeedbackForm-BochXEDx.js";
@@ -1 +1,145 @@
1
- import{n as e}from"./chunks/cookie-compliance-Bbm-0vpj.js";import"./chunks/utilities-_Bq3TxAQ.js";import"./chunks/Accordion-GN0sME4W.js";import"./chunks/AccordionMobile-DG5jSe8Q.js";import"./chunks/enums-DLV_1NAf.js";import{createFocusTrap as t}from"focus-trap";var n=class extends HTMLElement{internals_;controller;entries;timeout;mq;focusTrap;rafId;focusTrapTimeout;scrollLockClass=`body--scroll-lock`;isRight;isInstant;instantDebounce;static observedAttributes=[`count`];constructor(){super(),this.internals_=this.attachInternals(),this.controller=new AbortController,this.mq=this.getAttribute(`mq`)||`(max-width: 720px)`,this.isRight=this.classList.contains(`mx-filters--right`),this.isInstant=this.classList.contains(`mx-filters--auto`)}connectedCallback(){if(!this.items)return;let{signal:e}=this.controller;this.closeBtn?.addEventListener(`click`,this.handleClose,{signal:e}),this.showBtn?.previousElementSibling.setAttribute(`hidden`,`until-found`),this.showBtn?.addEventListener(`click`,this.handleShow,{signal:e}),this.resetBtn?.setAttribute(`disabled`,``),this.submitBtn?.setAttribute(`disabled`,``),this.handleCounters(),this.addEventListener(`change`,this.handleCounters,{signal:e}),this.form?.addEventListener(`submit`,this.handleCounters,{signal:e}),this.form?.addEventListener(`reset`,this.handleReset,{signal:e}),this.isInstant&&(this.addEventListener(`change`,this.handleInstantSubmit,{signal:e}),this.addEventListener(`input`,this.handleInstantSubmit,{signal:e})),this.isRight&&(this.handleBreakpoint(this.breakpoint),this.breakpoint.addEventListener(`change`,this.handleBreakpoint,{signal:e}),this.focusTrap=t(this.form,{escapeDeactivates:!1,setReturnFocus:this.details,allowOutsideClick:!0,onActivate:()=>document.body.classList.add(this.scrollLockClass),onDeactivate:()=>document.body.classList.remove(this.scrollLockClass),checkCanFocusTrap:([e])=>new Promise(t=>{this.focusTrapTimeout=setTimeout(()=>{this.rafId&&=(cancelAnimationFrame(this.rafId),null),t()},2e3);let n=()=>{getComputedStyle(e).display===`none`?this.rafId=requestAnimationFrame(n):(this.focusTrapTimeout&&=(clearTimeout(this.focusTrapTimeout),null),this.rafId=null,t())};this.rafId=requestAnimationFrame(n)})}))}disconnectedCallback(){this.controller.abort(),this.timeout&&=(clearTimeout(this.timeout),null),this.instantDebounce&&=(clearTimeout(this.instantDebounce),null),this.rafId&&=(cancelAnimationFrame(this.rafId),null),this.focusTrapTimeout&&=(clearTimeout(this.focusTrapTimeout),null),this.focusTrap?.deactivate(),document.body.classList.remove(this.scrollLockClass)}attributeChangedCallback(t,n,r){if(t===`count`&&n!==r){let t=e.integer(r,1);if(this.resetBtn?.toggleAttribute(`disabled`,!t),this.submitBtn?.toggleAttribute(`disabled`,!t),!this.allCounter)return;this.allCounter.textContent=t?r:``}}handleClose=e=>{this.details&&(this.details.open=!1,e.preventDefault())};handleShow=e=>{e.preventDefault();let t=this.showBtn.previousElementSibling;t.removeAttribute(`hidden`);let n=t.previousElementSibling.querySelector(`input`);n&&(n.focus({preventScroll:!0}),this.timeout=setTimeout(()=>{this.showBtn.setAttribute(`hidden`,``)},100))};handleReset=()=>{this.entries.forEach((e,t)=>{this.entries.set(t,{...e,count:null}),e.counter&&(e.counter.textContent=``)}),this.setAttribute(`count`,`0`),this.instantDebounce&&=(clearTimeout(this.instantDebounce),null),this.isInstant&&(this.instantDebounce=setTimeout(()=>this.form?.requestSubmit(),0))};handleInstantSubmit=e=>{let t=e.target,n=t instanceof HTMLSelectElement||t instanceof HTMLInputElement&&[`checkbox`,`radio`].includes(t.type);n===(e.type===`change`)&&(this.instantDebounce&&=(clearTimeout(this.instantDebounce),null),n?this.form?.requestSubmit():this.instantDebounce=setTimeout(()=>this.form?.requestSubmit(),400))};handleCounters=()=>{let e=new FormData(this.form,this.submitBtn);this.entries.forEach((t,n)=>{let{length:r}=e.getAll(n).filter(Boolean),i=r>0?r:null;this.entries.set(n,{...t,count:i}),t.counter&&(t.counter.textContent=i?.toString()||``)});let t=[...this.entries].filter(([,e])=>e.count).length;this.setAttribute(`count`,t.toString())};handleBreakpoint=({matches:e})=>{if(!this.details)return;let{signal:t}=this.controller;e?this.details.addEventListener(`toggle`,this.handleToggle,{signal:t}):(this.details.removeEventListener(`toggle`,this.handleToggle),document.body.classList.remove(this.scrollLockClass),this.focusTrap?.deactivate())};handleToggle=async()=>{if(this.details.open)try{await this.focusTrap?.activate()}catch{}else this.focusTrap?.deactivate()};get items(){let e=this.querySelectorAll(`.mx-filter-item`);if(!e)throw Error(`${this.localName} must contain a .mx-filter-item element.`);return this.entries=/* @__PURE__ */ new Map,e.forEach(e=>{let t=e.querySelector(`input, select`)?.getAttribute(`name`);this.entries.set(t,{item:e,counter:e.querySelector(`[data-counter]`)})}),e}get details(){return this.querySelector(`mx-accordionmobile > details`)}get closeBtn(){return this.details?.querySelector(`button[data-close]`)}get form(){return this.querySelector(`form`)}get resetBtn(){return this.querySelector(`button[type='reset']`)}get submitBtn(){return this.querySelector(`button[type='submit']`)}get showBtn(){return this.querySelector(`button[data-show]`)}get allCounter(){return this.querySelector(`[data-counters]`)}get breakpoint(){return window.matchMedia(this.mq)}get pending(){return this.form?.getAttribute(`aria-busy`)===`true`}set pending(e){this.form?.setAttribute(`aria-busy`,String(e))}};customElements.get(`mx-filters`)||customElements.define(`mx-filters`,n);
1
+ import { n as e } from "./chunks/cookie-compliance-CG6x-TcV.js";
2
+ import "./chunks/utilities-Dd-08SW6.js";
3
+ import "./chunks/Accordion-D2wp8hBG.js";
4
+ import "./chunks/AccordionMobile-D3sTeiM5.js";
5
+ import "./chunks/enums-BrHxPZZ_.js";
6
+ import { createFocusTrap as t } from "focus-trap";
7
+ //#region src/Component/Filters/Elements/Filters.ts
8
+ var n = class extends HTMLElement {
9
+ internals_;
10
+ controller;
11
+ entries;
12
+ timeout;
13
+ mq;
14
+ focusTrap;
15
+ rafId;
16
+ focusTrapTimeout;
17
+ scrollLockClass = "body--scroll-lock";
18
+ isRight;
19
+ isInstant;
20
+ instantDebounce;
21
+ static observedAttributes = ["count"];
22
+ constructor() {
23
+ super(), this.internals_ = this.attachInternals(), this.controller = new AbortController(), this.mq = this.getAttribute("mq") || "(max-width: 720px)", this.isRight = this.classList.contains("mx-filters--right"), this.isInstant = this.classList.contains("mx-filters--auto");
24
+ }
25
+ connectedCallback() {
26
+ if (!this.items) return;
27
+ let { signal: e } = this.controller;
28
+ this.closeBtn?.addEventListener("click", this.handleClose, { signal: e }), this.showBtn?.previousElementSibling.setAttribute("hidden", "until-found"), this.showBtn?.addEventListener("click", this.handleShow, { signal: e }), this.resetBtn?.setAttribute("disabled", ""), this.submitBtn?.setAttribute("disabled", ""), this.handleCounters(), this.addEventListener("change", this.handleCounters, { signal: e }), this.form?.addEventListener("submit", this.handleCounters, { signal: e }), this.form?.addEventListener("reset", this.handleReset, { signal: e }), this.isInstant && (this.addEventListener("change", this.handleInstantSubmit, { signal: e }), this.addEventListener("input", this.handleInstantSubmit, { signal: e })), this.isRight && (this.handleBreakpoint(this.breakpoint), this.breakpoint.addEventListener("change", this.handleBreakpoint, { signal: e }), this.focusTrap = t(this.form, {
29
+ escapeDeactivates: !1,
30
+ setReturnFocus: this.details,
31
+ allowOutsideClick: !0,
32
+ onActivate: () => document.body.classList.add(this.scrollLockClass),
33
+ onDeactivate: () => document.body.classList.remove(this.scrollLockClass),
34
+ checkCanFocusTrap: ([e]) => new Promise((t) => {
35
+ this.focusTrapTimeout = setTimeout(() => {
36
+ this.rafId &&= (cancelAnimationFrame(this.rafId), null), t();
37
+ }, 2e3);
38
+ let n = () => {
39
+ getComputedStyle(e).display === "none" ? this.rafId = requestAnimationFrame(n) : (this.focusTrapTimeout &&= (clearTimeout(this.focusTrapTimeout), null), this.rafId = null, t());
40
+ };
41
+ this.rafId = requestAnimationFrame(n);
42
+ })
43
+ }));
44
+ }
45
+ disconnectedCallback() {
46
+ this.controller.abort(), this.timeout &&= (clearTimeout(this.timeout), null), this.instantDebounce &&= (clearTimeout(this.instantDebounce), null), this.rafId &&= (cancelAnimationFrame(this.rafId), null), this.focusTrapTimeout &&= (clearTimeout(this.focusTrapTimeout), null), this.focusTrap?.deactivate(), document.body.classList.remove(this.scrollLockClass);
47
+ }
48
+ attributeChangedCallback(t, n, r) {
49
+ if (t === "count" && n !== r) {
50
+ let t = e.integer(r, 1);
51
+ if (this.resetBtn?.toggleAttribute("disabled", !t), this.submitBtn?.toggleAttribute("disabled", !t), !this.allCounter) return;
52
+ this.allCounter.textContent = t ? r : "";
53
+ }
54
+ }
55
+ handleClose = (e) => {
56
+ this.details && (this.details.open = !1, e.preventDefault());
57
+ };
58
+ handleShow = (e) => {
59
+ e.preventDefault();
60
+ let t = this.showBtn.previousElementSibling;
61
+ t.removeAttribute("hidden");
62
+ let n = t.previousElementSibling.querySelector("input");
63
+ n && (n.focus({ preventScroll: !0 }), this.timeout = setTimeout(() => {
64
+ this.showBtn.setAttribute("hidden", "");
65
+ }, 100));
66
+ };
67
+ handleReset = () => {
68
+ this.entries.forEach((e, t) => {
69
+ this.entries.set(t, {
70
+ ...e,
71
+ count: null
72
+ }), e.counter && (e.counter.textContent = "");
73
+ }), this.setAttribute("count", "0"), this.instantDebounce &&= (clearTimeout(this.instantDebounce), null), this.isInstant && (this.instantDebounce = setTimeout(() => this.form?.requestSubmit(), 0));
74
+ };
75
+ handleInstantSubmit = (e) => {
76
+ let t = e.target, n = t instanceof HTMLSelectElement || t instanceof HTMLInputElement && ["checkbox", "radio"].includes(t.type);
77
+ n === (e.type === "change") && (this.instantDebounce &&= (clearTimeout(this.instantDebounce), null), n ? this.form?.requestSubmit() : this.instantDebounce = setTimeout(() => this.form?.requestSubmit(), 400));
78
+ };
79
+ handleCounters = () => {
80
+ let e = new FormData(this.form, this.submitBtn);
81
+ this.entries.forEach((t, n) => {
82
+ let { length: r } = e.getAll(n).filter(Boolean), i = r > 0 ? r : null;
83
+ this.entries.set(n, {
84
+ ...t,
85
+ count: i
86
+ }), t.counter && (t.counter.textContent = i?.toString() || "");
87
+ });
88
+ let t = [...this.entries].filter(([, e]) => e.count).length;
89
+ this.setAttribute("count", t.toString());
90
+ };
91
+ handleBreakpoint = ({ matches: e }) => {
92
+ if (!this.details) return;
93
+ let { signal: t } = this.controller;
94
+ e ? this.details.addEventListener("toggle", this.handleToggle, { signal: t }) : (this.details.removeEventListener("toggle", this.handleToggle), document.body.classList.remove(this.scrollLockClass), this.focusTrap?.deactivate());
95
+ };
96
+ handleToggle = async () => {
97
+ if (this.details.open) try {
98
+ await this.focusTrap?.activate();
99
+ } catch {}
100
+ else this.focusTrap?.deactivate();
101
+ };
102
+ get items() {
103
+ let e = this.querySelectorAll(".mx-filter-item");
104
+ if (!e) throw Error(`${this.localName} must contain a .mx-filter-item element.`);
105
+ return this.entries = /* @__PURE__ */ new Map(), e.forEach((e) => {
106
+ let t = e.querySelector("input, select")?.getAttribute("name");
107
+ this.entries.set(t, {
108
+ item: e,
109
+ counter: e.querySelector("[data-counter]")
110
+ });
111
+ }), e;
112
+ }
113
+ get details() {
114
+ return this.querySelector("mx-accordionmobile > details");
115
+ }
116
+ get closeBtn() {
117
+ return this.details?.querySelector("button[data-close]");
118
+ }
119
+ get form() {
120
+ return this.querySelector("form");
121
+ }
122
+ get resetBtn() {
123
+ return this.querySelector("button[type='reset']");
124
+ }
125
+ get submitBtn() {
126
+ return this.querySelector("button[type='submit']");
127
+ }
128
+ get showBtn() {
129
+ return this.querySelector("button[data-show]");
130
+ }
131
+ get allCounter() {
132
+ return this.querySelector("[data-counters]");
133
+ }
134
+ get breakpoint() {
135
+ return window.matchMedia(this.mq);
136
+ }
137
+ get pending() {
138
+ return this.form?.getAttribute("aria-busy") === "true";
139
+ }
140
+ set pending(e) {
141
+ this.form?.setAttribute("aria-busy", String(e));
142
+ }
143
+ };
144
+ customElements.get("mx-filters") || customElements.define("mx-filters", n);
145
+ //#endregion
@@ -1 +1 @@
1
- import"./chunks/Gallery-D8NGXy2Q.js";
1
+ import "./chunks/Gallery-Rkfv7Mbb.js";
@@ -1 +1 @@
1
- import"./chunks/ClosableAlert-DEhj8Nxm.js";
1
+ import "./chunks/ClosableAlert-yy84gae6.js";
@@ -1 +1 @@
1
- @layer popover-polyfill,design-system.defaults,design-system.atoms,design-system.layout,design-system.utilities,design-system.components;@layer design-system.layouts{.mx-header__toggles{gap:var(--toggle-gap,var(--spacing-xs));z-index:var(--toggle-index,3);align-self:var(--toggle-align,start);padding-inline-end:2px;display:flex;position:relative;@media (width>=720px){display:none}& .mx-button--secondary{border-color:#0000}& [hidden]{display:none}}.mx-header__collapse-toggle{opacity:1;transition-property:var(--transition-property,opacity, color, background-color, border-color, transform, rotate, display, overlay);transition-duration:var(--transition-duration,.5s);transition-timing-function:var(--ease);transition-behavior:allow-discrete;@starting-style{opacity:0}inline-size:100%;z-index:var(--collapse-index,2);align-items:center;display:grid;position:fixed;inset:0;@starting-style{opacity:0;display:grid}@media (width<720px){padding-inline:var(--gutter,var(--spacing-l));grid-template-columns:inherit;& .mx-header__nav-inner{grid-column:full}}@media (width>=720px){block-size:auto;inline-size:auto;position:relative}&[inert]{opacity:0;transition-duration:.4s;display:none}}.global-nav-up-only{@media (width<720px){display:none}}.mx-header__inner{grid-template-columns:minmax(var(--brand-logo-width,120px), 1fr) auto;align-items:center;gap:var(--header-gap,var(--spacing-xxxs));display:grid}.mx-header__brand{gap:var(--brand-gap,var(--spacing-xxxs) var(--gap));flex-wrap:wrap;align-items:center;margin-inline-end:auto;display:flex}.mx-header__name{display:grid}.mx-header__main{gap:var(--main-gap,var(--gap));align-items:center;display:flex}.mx-header__search{& form{margin-block:var(--spacing-m)}& input{@media (width>=720px){max-inline-size:150px}}}.mx-header__nav-inner{@media (width>=720px){display:flex}}.mx-header__nav-right{margin-block:var(--spacing-m);@media (width>=720px){margin-block:0;margin-inline-start:auto;padding-block:4px}}}
1
+ @layer popover-polyfill,design-system.defaults,design-system.atoms,design-system.layout,design-system.utilities,design-system.components;@layer design-system.layouts{.mx-header__toggles{gap:var(--toggle-gap,var(--spacing-xs));z-index:var(--toggle-index,3);align-self:var(--toggle-align,start);padding-inline-end:2px;display:flex;position:relative;@media (width>=720px){display:none}& .mx-button--secondary{border-color:#0000}& [hidden]{display:none}}.mx-header__collapse-toggle{inline-size:100%;z-index:var(--collapse-index,2);align-items:center;display:grid;position:fixed;inset:0;@media (width<720px){opacity:1;transition-property:var(--transition-property,opacity, color, background-color, border-color, transform, rotate, display, overlay);transition-duration:var(--transition-duration,.5s);transition-timing-function:var(--ease);transition-behavior:allow-discrete;@starting-style{opacity:0}padding-inline:var(--gutter,var(--spacing-l));grid-template-columns:inherit;@starting-style{opacity:0;display:grid}& .mx-header__nav-inner{grid-column:full}}@media (width>=720px){block-size:auto;inline-size:auto;position:relative}&[inert]{opacity:0;transition-duration:.4s;display:none}}.global-nav-up-only{@media (width<720px){display:none}}.mx-header__inner{grid-template-columns:minmax(var(--brand-logo-width,120px), 1fr) auto;align-items:center;gap:var(--header-gap,var(--spacing-xxxs));display:grid}.mx-header__brand{gap:var(--brand-gap,var(--spacing-xxxs) var(--gap));flex-wrap:wrap;align-items:center;margin-inline-end:auto;display:flex}.mx-header__name{display:grid}.mx-header__main{gap:var(--main-gap,var(--gap));align-items:center;display:flex}.mx-header__search{& form{margin-block:var(--spacing-m)}& input{@media (width>=720px){max-inline-size:150px}}}.mx-header__nav-inner{@media (width>=720px){display:flex}}.mx-header__nav-right{margin-block:var(--spacing-m);@media (width>=720px){margin-block:0;margin-inline-start:auto;padding-block:4px}}}
@@ -1 +1 @@
1
- import"./chunks/GlobalToggle-B52fdBQu.js";
1
+ import "./chunks/GlobalToggle-CzlkpLpc.js";