@pnx-mixtape/mxds 0.0.10 → 0.0.12

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.
@@ -46,11 +46,6 @@
46
46
  .mx-accordions__toggle-all {
47
47
  margin-inline-start: auto;
48
48
  }
49
-
50
- .mx-accordion {
51
- contain: layout;
52
- }
53
-
54
49
  .mx-accordion .mx-accordion__toggle {
55
50
  cursor: pointer;
56
51
  inline-size: 100%;
@@ -59,6 +54,9 @@
59
54
  .mx-accordion:is(> h2, > h3, > h4, > h5, > h6) {
60
55
  all: unset;
61
56
  }
57
+ .mx-accordion:is([open], [data-open="true"]) > .mx-accordion__toggle .mx-icon--chevron-down {
58
+ transform: rotate(180deg);
59
+ }
62
60
 
63
61
  .mx-accordion--divided {
64
62
  border-block-end: 1px solid
@@ -74,17 +72,9 @@
74
72
  display: flex;
75
73
  justify-content: space-between;
76
74
  align-items: center;
75
+ gap: var(--spacing-xxs);
77
76
  }
78
-
79
- .mx-accordion--divided .mx-accordion__toggle .mx-button--icon-only {
80
- flex-shrink: 0;
81
- margin-inline-start: var(--spacing-xxs);
82
- }
83
- .mx-accordion--divided:is([open], [data-open="true"]) .mx-accordion__toggle .mx-button--icon-only {
84
- transform: rotate(180deg);
85
- }
86
-
87
- .mx-accordion--divided:is([open], [data-open="true"]) .mx-accordion__content {
77
+ .mx-accordion--divided:is([open], [data-open="true"]) > .mx-accordion__content {
88
78
  border-block-start: 1px solid
89
79
  var(--line-colour, var(--colour-border));
90
80
  border-block-start: var(--line-width, 1px) solid
@@ -105,4 +95,4 @@
105
95
  }
106
96
  }
107
97
 
108
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY29yZGlvbi5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FBRUY7SUFFSTtNQUNFLHFCQUFxQjtJQU12Qjs7TUFKRTtRQUNFLGFBQWE7UUFDYixXQUFXO01BQ2I7O0VBSUo7SUFDRSxjQUFjO0VBQ2hCO0lBR0U7TUFDRSx3QkFBZ0I7U0FBaEIscUJBQWdCO2NBQWhCLGdCQUFnQjtNQUNoQixjQUFjO01BQ2Qsa0JBQWtCO01BQ2xCLGlGQUFtQjtNQUFuQixtQkFBbUI7TUFDbkIsZ0NBQWU7TUFBZixlQUFlO01BQ2YsVUFBZ0I7TUFBaEIsZ0JBQWdCO0lBQ2xCOztJQUVBO01BQ0UsYUFBYTtJQUNmO0FBRUo7O0FBRUE7RUFDRTtJQUNFLGtDQUFrQztJQUNsQyxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixtQkFBbUI7RUFDckI7O0VBRUE7SUFDRSx5QkFBeUI7RUFDM0I7O0VBRUE7SUFDRSxlQUFlO0VBVWpCOztJQVJFO01BQ0UsZUFBZTtNQUNmLGlCQUFpQjtJQUNuQjs7SUFFQTtNQUNFLFVBQVU7SUFDWjs7RUFHRjtJQUNFOzhDQUMwQztJQUQxQzs4Q0FDMEM7RUE2QjVDOztJQTNCRTtNQUNFLDBEQUEwRDtNQUMxRCxpQkFBNEM7TUFBNUMsNENBQTRDO01BQzVDLGFBQWE7TUFDYiw4QkFBOEI7TUFDOUIsbUJBQW1CO0lBTXJCOztNQUpFO1FBQ0UsY0FBYztRQUNkLHVDQUF1QztNQUN6QztRQUtFO1VBQ0UseUJBQXlCO1FBQzNCOztNQUdGO1FBQ0U7a0RBQzBDO1FBRDFDO2tEQUMwQztRQUMxQywwREFBMEQ7UUFDMUQsaUJBQTRDO1FBQTVDLDRDQUE0QztNQUM5QztBQUdOOztBQUVBOztFQUVFOztBQUVGO0lBRUk7TUFDRSx5QkFBeUI7SUFDM0I7QUFFSiIsImZpbGUiOiJhY2NvcmRpb24uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBY2NvcmRpb25cbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5kZWZhdWx0cyB7XG4gIGRldGFpbHMge1xuICAgICYgc3VtbWFyeSB7XG4gICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgICAgICY6aXMoOjotd2Via2l0LWRldGFpbHMtbWFya2VyLCA6Om1hcmtlcikge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIDppcyhteC1hY2NvcmRpb24sIG14LWFjY29yZGlvbmRpdiwgbXgtYWNjb3JkaW9ubW9iaWxlKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICA6d2hlcmUoOmlzKGRpdi5teC1hY2NvcmRpb24sIG14LWFjY29yZGlvbmRpdikpIHtcbiAgICAmIC5teC1hY2NvcmRpb25fX3RvZ2dsZSB7XG4gICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICBiYWNrZ3JvdW5kOiBpbml0aWFsO1xuICAgICAgYm9yZGVyOiBpbml0aWFsO1xuICAgICAgcGFkZGluZzogaW5pdGlhbDtcbiAgICB9XG5cbiAgICAmIC5teC1hY2NvcmRpb25fX2NvbnRlbnRbaW5lcnRdIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmNvbXBvbmVudHMge1xuICAubXgtYWNjb3JkaW9uX190aXRsZSB7XG4gICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc3BhY2luZy1tKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXMpO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubXgtYWNjb3JkaW9uc19fdG9nZ2xlLWFsbCB7XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcbiAgfVxuXG4gIC5teC1hY2NvcmRpb24ge1xuICAgIGNvbnRhaW46IGxheW91dDtcblxuICAgICYgLm14LWFjY29yZGlvbl9fdG9nZ2xlIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGlubGluZS1zaXplOiAxMDAlO1xuICAgIH1cblxuICAgICY6aXMoPiBoMiwgPiBoMywgPiBoNCwgPiBoNSwgPiBoNikge1xuICAgICAgYWxsOiB1bnNldDtcbiAgICB9XG4gIH1cblxuICAubXgtYWNjb3JkaW9uLS1kaXZpZGVkIHtcbiAgICBib3JkZXItYmxvY2stZW5kOiB2YXIoLS1saW5lLXdpZHRoLCAxcHgpIHNvbGlkXG4gICAgICB2YXIoLS1saW5lLWNvbG91ciwgdmFyKC0tY29sb3VyLWJvcmRlcikpO1xuXG4gICAgJiAubXgtYWNjb3JkaW9uX190b2dnbGUge1xuICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tdmVydGljYWwtcGFkZGluZywgdmFyKC0tc3BhY2luZy14eHMpKTtcbiAgICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1ob3Jpem9udGFsLXBhZGRpbmcsIDApO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICYgLm14LWJ1dHRvbi0taWNvbi1vbmx5IHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLXNwYWNpbmcteHhzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmlzKFtvcGVuXSwgW2RhdGEtb3Blbj1cInRydWVcIl0pIHtcbiAgICAgICYgLm14LWFjY29yZGlvbl9fdG9nZ2xlIHtcbiAgICAgICAgJiAubXgtYnV0dG9uLS1pY29uLW9ubHkge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJiAubXgtYWNjb3JkaW9uX19jb250ZW50IHtcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiB2YXIoLS1saW5lLXdpZHRoLCAxcHgpIHNvbGlkXG4gICAgICAgICAgdmFyKC0tbGluZS1jb2xvdXIsIHZhcigtLWNvbG91ci1ib3JkZXIpKTtcbiAgICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tdmVydGljYWwtcGFkZGluZywgdmFyKC0tc3BhY2luZy14eHMpKTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWhvcml6b250YWwtcGFkZGluZywgMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJpbnQgc3R5bGVzaGVldFxuICovXG5cbkBtZWRpYSBwcmludCB7XG4gIC5teC1hY2NvcmRpb24ge1xuICAgICYgLm14LWFjY29yZGlvbl9fY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIl19 */
98
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY29yZGlvbi5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FBRUY7SUFFSTtNQUNFLHFCQUFxQjtJQU12Qjs7TUFKRTtRQUNFLGFBQWE7UUFDYixXQUFXO01BQ2I7O0VBSUo7SUFDRSxjQUFjO0VBQ2hCO0lBR0U7TUFDRSx3QkFBZ0I7U0FBaEIscUJBQWdCO2NBQWhCLGdCQUFnQjtNQUNoQixjQUFjO01BQ2Qsa0JBQWtCO01BQ2xCLGlGQUFtQjtNQUFuQixtQkFBbUI7TUFDbkIsZ0NBQWU7TUFBZixlQUFlO01BQ2YsVUFBZ0I7TUFBaEIsZ0JBQWdCO0lBQ2xCOztJQUVBO01BQ0UsYUFBYTtJQUNmO0FBRUo7O0FBRUE7RUFDRTtJQUNFLGtDQUFrQztJQUNsQyxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixtQkFBbUI7RUFDckI7O0VBRUE7SUFDRSx5QkFBeUI7RUFDM0I7SUFHRTtNQUNFLGVBQWU7TUFDZixpQkFBaUI7SUFDbkI7O0lBRUE7TUFDRSxVQUFVO0lBQ1o7UUFJSTtVQUNFLHlCQUF5QjtRQUMzQjs7RUFLTjtJQUNFOzhDQUMwQztJQUQxQzs4Q0FDMEM7RUFtQjVDOztJQWpCRTtNQUNFLDBEQUEwRDtNQUMxRCxpQkFBNEM7TUFBNUMsNENBQTRDO01BQzVDLGFBQWE7TUFDYiw4QkFBOEI7TUFDOUIsbUJBQW1CO01BQ25CLHVCQUF1QjtJQUN6QjtNQUdFO1FBQ0U7a0RBQzBDO1FBRDFDO2tEQUMwQztRQUMxQywwREFBMEQ7UUFDMUQsaUJBQTRDO1FBQTVDLDRDQUE0QztNQUM5QztBQUdOOztBQUVBOztFQUVFOztBQUVGO0lBRUk7TUFDRSx5QkFBeUI7SUFDM0I7QUFFSiIsImZpbGUiOiJhY2NvcmRpb24uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBY2NvcmRpb25cbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5kZWZhdWx0cyB7XG4gIGRldGFpbHMge1xuICAgICYgc3VtbWFyeSB7XG4gICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgICAgICY6aXMoOjotd2Via2l0LWRldGFpbHMtbWFya2VyLCA6Om1hcmtlcikge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIDppcyhteC1hY2NvcmRpb24sIG14LWFjY29yZGlvbmRpdiwgbXgtYWNjb3JkaW9ubW9iaWxlKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICA6d2hlcmUoOmlzKGRpdi5teC1hY2NvcmRpb24sIG14LWFjY29yZGlvbmRpdikpIHtcbiAgICAmIC5teC1hY2NvcmRpb25fX3RvZ2dsZSB7XG4gICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICBiYWNrZ3JvdW5kOiBpbml0aWFsO1xuICAgICAgYm9yZGVyOiBpbml0aWFsO1xuICAgICAgcGFkZGluZzogaW5pdGlhbDtcbiAgICB9XG5cbiAgICAmIC5teC1hY2NvcmRpb25fX2NvbnRlbnRbaW5lcnRdIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmNvbXBvbmVudHMge1xuICAubXgtYWNjb3JkaW9uX190aXRsZSB7XG4gICAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc3BhY2luZy1tKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXMpO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubXgtYWNjb3JkaW9uc19fdG9nZ2xlLWFsbCB7XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcbiAgfVxuXG4gIC5teC1hY2NvcmRpb24ge1xuICAgICYgLm14LWFjY29yZGlvbl9fdG9nZ2xlIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGlubGluZS1zaXplOiAxMDAlO1xuICAgIH1cblxuICAgICY6aXMoPiBoMiwgPiBoMywgPiBoNCwgPiBoNSwgPiBoNikge1xuICAgICAgYWxsOiB1bnNldDtcbiAgICB9XG5cbiAgICAmOmlzKFtvcGVuXSwgW2RhdGEtb3Blbj1cInRydWVcIl0pIHtcbiAgICAgICYgPiAubXgtYWNjb3JkaW9uX190b2dnbGUge1xuICAgICAgICAmIC5teC1pY29uLS1jaGV2cm9uLWRvd24ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubXgtYWNjb3JkaW9uLS1kaXZpZGVkIHtcbiAgICBib3JkZXItYmxvY2stZW5kOiB2YXIoLS1saW5lLXdpZHRoLCAxcHgpIHNvbGlkXG4gICAgICB2YXIoLS1saW5lLWNvbG91ciwgdmFyKC0tY29sb3VyLWJvcmRlcikpO1xuXG4gICAgJiAubXgtYWNjb3JkaW9uX190b2dnbGUge1xuICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tdmVydGljYWwtcGFkZGluZywgdmFyKC0tc3BhY2luZy14eHMpKTtcbiAgICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1ob3Jpem9udGFsLXBhZGRpbmcsIDApO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IHZhcigtLXNwYWNpbmcteHhzKTtcbiAgICB9XG5cbiAgICAmOmlzKFtvcGVuXSwgW2RhdGEtb3Blbj1cInRydWVcIl0pIHtcbiAgICAgICYgPiAubXgtYWNjb3JkaW9uX19jb250ZW50IHtcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiB2YXIoLS1saW5lLXdpZHRoLCAxcHgpIHNvbGlkXG4gICAgICAgICAgdmFyKC0tbGluZS1jb2xvdXIsIHZhcigtLWNvbG91ci1ib3JkZXIpKTtcbiAgICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tdmVydGljYWwtcGFkZGluZywgdmFyKC0tc3BhY2luZy14eHMpKTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWhvcml6b250YWwtcGFkZGluZywgMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJpbnQgc3R5bGVzaGVldFxuICovXG5cbkBtZWRpYSBwcmludCB7XG4gIC5teC1hY2NvcmRpb24ge1xuICAgICYgLm14LWFjY29yZGlvbl9fY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIl19 */
@@ -1,60 +1,4 @@
1
- import { m as makeAnchor } from "./chunks/utilities-B4YZb689.js";
2
- class Accordion extends HTMLElement {
3
- constructor() {
4
- super();
5
- this.handleOpen = () => {
6
- if (!this.details) return;
7
- this.details.open = true;
8
- };
9
- this.handleClose = () => {
10
- if (!this.details) return;
11
- this.details.open = false;
12
- };
13
- this.handleHash = () => {
14
- const { hash } = window.location;
15
- if (hash && hash === `#${this.details?.id}`) {
16
- this.handleOpen();
17
- }
18
- };
19
- this.generatedId = () => {
20
- const string = this.trigger?.textContent?.trim();
21
- return !string ? "" : makeAnchor(string);
22
- };
23
- this.internals_ = this.attachInternals();
24
- this.controller = new AbortController();
25
- }
26
- connectedCallback() {
27
- if (!this.details || !this.trigger) return;
28
- const { signal } = this.controller;
29
- document.addEventListener("beforeprint", this.handleOpen, {
30
- signal
31
- });
32
- document.addEventListener("afterprint", this.handleClose, {
33
- signal
34
- });
35
- this.handleHash();
36
- document.addEventListener("hashchange", this.handleHash, { signal });
37
- }
38
- disconnectedCallback() {
39
- this.controller.abort();
40
- }
41
- get details() {
42
- const details = this.querySelector("details");
43
- if (!details) {
44
- throw new Error(`${this.localName} must contain a <details> element.`);
45
- }
46
- details.id = details.id || this.generatedId();
47
- return details;
48
- }
49
- get trigger() {
50
- const trigger = this.querySelector("summary");
51
- if (!trigger) {
52
- throw new Error(`${this.localName} must contain a <summary> element.`);
53
- }
54
- return trigger;
55
- }
56
- }
57
- customElements.define("mx-accordion", Accordion);
1
+ import "./chunks/Accordion-DSze7pxN.js";
58
2
  class AccordionGroup extends HTMLElement {
59
3
  constructor() {
60
4
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.entry.js","sources":["../../src/Component/Accordion/Elements/Accordion.ts","../../src/Component/Accordion/Elements/AccordionGroup.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","/**\n * Accordion Group\n * @file Support opening and closing all.\n */\n\nexport default class AccordionGroup 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.accordions || !this.expandTrigger || !this.collapseTrigger) return\n this.collapseTrigger.disabled = true\n const { signal }: AbortController = this.controller\n this.addEventListener(\"click\", this.handleClick, {\n signal,\n })\n this.accordions.forEach(details =>\n details.addEventListener(\"toggle\", this.handleToggle, {\n signal,\n }),\n )\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleClick = ({ target }) => {\n if (target === this.expandTrigger) {\n this.handleExpand()\n }\n if (target === this.collapseTrigger) {\n this.handleCollapse()\n }\n }\n\n handleExpand = () => {\n this.accordions.forEach(detail => (detail.open = true))\n this.expandTrigger.disabled = true\n this.collapseTrigger.disabled = false\n }\n\n handleCollapse = () => {\n this.accordions.forEach(detail => (detail.open = false))\n this.expandTrigger.disabled = false\n this.collapseTrigger.disabled = true\n }\n\n handleToggle = () => {\n this.expandTrigger.disabled = [...this.accordions].every(\n details => details.open === true,\n )\n this.collapseTrigger.disabled = [...this.accordions].every(\n details => details.open !== true,\n )\n }\n\n get accordions(): NodeListOf<HTMLDetailsElement> | null {\n const accordions: NodeListOf<HTMLDetailsElement> | null =\n this.querySelectorAll(\"details\")\n if (!accordions.length) {\n throw new Error(\n `${this.localName} must contain at least one <details> element.`,\n )\n }\n return accordions\n }\n\n get expandTrigger(): HTMLButtonElement | null {\n const trigger: HTMLButtonElement | null = this.querySelector(\n \"button[data-expand]\",\n )\n if (!trigger) {\n throw new Error(\n `${this.localName} must contain a <button data-expand> element.`,\n )\n }\n return trigger\n }\n\n get collapseTrigger(): HTMLButtonElement | null {\n const trigger: HTMLButtonElement | null = this.querySelector(\n \"button[data-collapse]\",\n )\n if (!trigger) {\n throw new Error(\n `${this.localName} must contain a <button data-collapse> element.`,\n )\n }\n return trigger\n }\n}\n\ncustomElements.define(\"mx-accordion-group\", AccordionGroup)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-accordion-group\": AccordionGroup\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accordion.entry.js","sources":["../../src/Component/Accordion/Elements/AccordionGroup.ts"],"sourcesContent":["/**\n * Accordion Group\n * @file Support opening and closing all.\n */\n\nexport default class AccordionGroup 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.accordions || !this.expandTrigger || !this.collapseTrigger) return\n this.collapseTrigger.disabled = true\n const { signal }: AbortController = this.controller\n this.addEventListener(\"click\", this.handleClick, {\n signal,\n })\n this.accordions.forEach(details =>\n details.addEventListener(\"toggle\", this.handleToggle, {\n signal,\n }),\n )\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleClick = ({ target }) => {\n if (target === this.expandTrigger) {\n this.handleExpand()\n }\n if (target === this.collapseTrigger) {\n this.handleCollapse()\n }\n }\n\n handleExpand = () => {\n this.accordions.forEach(detail => (detail.open = true))\n this.expandTrigger.disabled = true\n this.collapseTrigger.disabled = false\n }\n\n handleCollapse = () => {\n this.accordions.forEach(detail => (detail.open = false))\n this.expandTrigger.disabled = false\n this.collapseTrigger.disabled = true\n }\n\n handleToggle = () => {\n this.expandTrigger.disabled = [...this.accordions].every(\n details => details.open === true,\n )\n this.collapseTrigger.disabled = [...this.accordions].every(\n details => details.open !== true,\n )\n }\n\n get accordions(): NodeListOf<HTMLDetailsElement> | null {\n const accordions: NodeListOf<HTMLDetailsElement> | null =\n this.querySelectorAll(\"details\")\n if (!accordions.length) {\n throw new Error(\n `${this.localName} must contain at least one <details> element.`,\n )\n }\n return accordions\n }\n\n get expandTrigger(): HTMLButtonElement | null {\n const trigger: HTMLButtonElement | null = this.querySelector(\n \"button[data-expand]\",\n )\n if (!trigger) {\n throw new Error(\n `${this.localName} must contain a <button data-expand> element.`,\n )\n }\n return trigger\n }\n\n get collapseTrigger(): HTMLButtonElement | null {\n const trigger: HTMLButtonElement | null = this.querySelector(\n \"button[data-collapse]\",\n )\n if (!trigger) {\n throw new Error(\n `${this.localName} must contain a <button data-collapse> element.`,\n )\n }\n return trigger\n }\n}\n\ncustomElements.define(\"mx-accordion-group\", AccordionGroup)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-accordion-group\": AccordionGroup\n }\n}\n"],"names":[],"mappings":";AAKA,MAAqB,uBAAuB,YAAY;AAAA,EAItD,cAAc;AACN;AAuBM,SAAA,cAAA,CAAC,EAAE,aAAa;AACxB,UAAA,WAAW,KAAK,eAAe;AACjC,aAAK,aAAa;AAAA,MACpB;AACI,UAAA,WAAW,KAAK,iBAAiB;AACnC,aAAK,eAAe;AAAA,MACtB;AAAA,IAAA;AAGF,SAAA,eAAe,MAAM;AACnB,WAAK,WAAW,QAAQ,CAAW,WAAA,OAAO,OAAO,IAAK;AACtD,WAAK,cAAc,WAAW;AAC9B,WAAK,gBAAgB,WAAW;AAAA,IAAA;AAGlC,SAAA,iBAAiB,MAAM;AACrB,WAAK,WAAW,QAAQ,CAAW,WAAA,OAAO,OAAO,KAAM;AACvD,WAAK,cAAc,WAAW;AAC9B,WAAK,gBAAgB,WAAW;AAAA,IAAA;AAGlC,SAAA,eAAe,MAAM;AACnB,WAAK,cAAc,WAAW,CAAC,GAAG,KAAK,UAAU,EAAE;AAAA,QACjD,CAAA,YAAW,QAAQ,SAAS;AAAA,MAAA;AAE9B,WAAK,gBAAgB,WAAW,CAAC,GAAG,KAAK,UAAU,EAAE;AAAA,QACnD,CAAA,YAAW,QAAQ,SAAS;AAAA,MAAA;AAAA,IAC9B;AAjDK,SAAA,aAAa,KAAK;AAClB,SAAA,aAAa,IAAI;EACxB;AAAA,EAEA,oBAA0B;AACpB,QAAA,CAAC,KAAK,cAAc,CAAC,KAAK,iBAAiB,CAAC,KAAK,gBAAiB;AACtE,SAAK,gBAAgB,WAAW;AAC1B,UAAA,EAAE,OAAO,IAAqB,KAAK;AACpC,SAAA,iBAAiB,SAAS,KAAK,aAAa;AAAA,MAC/C;AAAA,IAAA,CACD;AACD,SAAK,WAAW;AAAA,MAAQ,CACtB,YAAA,QAAQ,iBAAiB,UAAU,KAAK,cAAc;AAAA,QACpD;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,uBAA6B;AAC3B,SAAK,WAAW;EAClB;AAAA,EAgCA,IAAI,aAAoD;AAChD,UAAA,aACJ,KAAK,iBAAiB,SAAS;AAC7B,QAAA,CAAC,WAAW,QAAQ;AACtB,YAAM,IAAI;AAAA,QACR,GAAG,KAAK,SAAS;AAAA,MAAA;AAAA,IAErB;AACO,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,gBAA0C;AAC5C,UAAM,UAAoC,KAAK;AAAA,MAC7C;AAAA,IAAA;AAEF,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI;AAAA,QACR,GAAG,KAAK,SAAS;AAAA,MAAA;AAAA,IAErB;AACO,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,kBAA4C;AAC9C,UAAM,UAAoC,KAAK;AAAA,MAC7C;AAAA,IAAA;AAEF,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI;AAAA,QACR,GAAG,KAAK,SAAS;AAAA,MAAA;AAAA,IAErB;AACO,WAAA;AAAA,EACT;AACF;AAEA,eAAe,OAAO,sBAAsB,cAAc;"}
@@ -5,7 +5,7 @@
5
5
  @layer design-system.atoms {
6
6
  .mx-button {
7
7
  --outline-offset: 0.0625rem;
8
- --outline-width: 0.25rem;
8
+ --outline-width: 0.125rem;
9
9
 
10
10
  display: inline-flex;
11
11
  inline-size: -moz-fit-content;
@@ -129,4 +129,4 @@
129
129
  }
130
130
  }
131
131
 
132
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9idXR0b25zLmNzcyIsIl9idXR0b25zLXN0eWxlcy5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FBRUY7RUFDRTtJQUNFLDJCQUFxQjtJQUNyQix3QkFBb0I7O0lBRXBCLG9CQUFvQjtJQUNwQiw2QkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLHdDQUF3QztJQUN4QyxvREFBb0Q7SUFDcEQsb0NBQW9DO0lBQ3BDLCtCQUErQjtJQUMvQixrQ0FBa0M7SUFDbEM7cURBQ2lEO0lBRGpEO3FEQUNpRDtJQUNqRCxvREFBb0Q7SUFDcEQsMERBQTBEO0lBQzFELDJEQUEyRDtJQUMzRCw2REFBNkQ7SUFDN0Qsa0RBQWtEO0lBQ2xELDBCQUEwQjtJQUMxQjs7O3VCQUdtQjtFQVdyQjs7SUFURTtNQUNFLGVBQWU7TUFDZiwwQkFBMEI7SUFDNUI7O0lBRUE7TUFDRSxtQkFBbUI7TUFDbkIsWUFBWTtJQUNkOztFQUdGO0lBQ0UsaUJBQWlCO0lBQ2pCLHVCQUF1QjtFQUN6Qjs7RUFFQTtJQUNFLG9DQUFvQztJQUNwQyxzQ0FBc0M7RUFDeEM7O0VBRUE7SUFDRSxzQ0FBc0M7SUFDdEMsdUNBQXVDO0lBQ3ZDLHNDQUFzQztFQUN4Qzs7RUFFQTtJQUNFLDhCQUE4QjtJQUM5Qiw2QkFBNkI7SUFDN0IsVUFBVTtJQUNWLHlDQUF5QztJQUN6QyxnQkFBZ0I7SUFDaEIsZUFBZTtFQVdqQjs7SUFURTtNQUNFLGlCQUFpQjtNQUNqQixnQkFBZ0I7TUFDaEIsbUNBQTJCO2NBQTNCLDJCQUEyQjtJQUM3Qjs7SUFFQTtNQUNFLHFCQUFxQjtNQUFyQix1QkFBcUI7TUFBckIscUJBQXFCO0lBQ3ZCO0FBRUo7O0FDMUVBOztFQUVFOztBQUVGO0VBQ0U7SUFDRSwyQ0FBMkM7SUFDM0MsbUNBQW1DO0lBQ25DLDhDQUE4QztFQU1oRDs7SUFKRTtNQUNFLHlCQUF5QjtNQUN6QixtQ0FBbUM7SUFDckM7O0VBR0Y7SUFDRSxtQkFBbUI7SUFDbkIsZ0RBQWdEO0lBQ2hELCtCQUErQjtFQUtqQzs7SUFIRTtNQUNFLCtCQUErQjtJQUNqQzs7RUFHRjtJQUNFLG9EQUFvRDtJQUNwRCw0Q0FBNEM7SUFDNUMsOENBQThDO0VBTWhEOztJQUpFO01BQ0UseUJBQXlCO01BQ3pCLDRDQUE0QztJQUM5Qzs7RUFHRjtJQUNFLHNEQUFzRDtJQUN0RCw4Q0FBOEM7SUFDOUMsc0NBQXNDO0VBTXhDOztJQUpFO01BQ0UseUJBQXlCO01BQ3pCLDhDQUE4QztJQUNoRDtBQUVKIiwiZmlsZSI6ImJ1dHRvbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJ1dHRvbnNcbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5hdG9tcyB7XG4gIC5teC1idXR0b24ge1xuICAgIC0tb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAtLW91dGxpbmUtd2lkdGg6IDRweDtcblxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGlubGluZS1zaXplOiBmaXQtY29udGVudDtcbiAgICBnYXA6IHZhcigtLWJ1dHRvbi1nYXAsIHZhcigtLXNwYWNpbmctcykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tYnV0dG9uLWZvbnQtc2l6ZSwgdmFyKC0tZm9udC1zaXplKSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXVpKTtcbiAgICBib3JkZXI6IHZhcigtLWxpbmUtd2lkdGgsIDJweCkgc29saWRcbiAgICAgIHZhcigtLWJ1dHRvbi1saW5lLWNvbG91ciwgdmFyKC0tY29sb3VyLWJvcmRlcikpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cywgdmFyKC0tYm9yZGVyLXJhZGl1cy1sKSk7XG4gICAgcGFkZGluZy1ibG9jazogdmFyKC0tdmVydGljYWwtcGFkZGluZywgdmFyKC0tc3BhY2luZy14eHMpKTtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taG9yaXpvbnRhbC1wYWRkaW5nLCB2YXIoLS1zcGFjaW5nLW0pKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLCB2YXIoLS1jb2xvdXItYmFja2dyb3VuZCkpO1xuICAgIGNvbG9yOiB2YXIoLS1mb3JlZ3JvdW5kLCB2YXIoLS1jb2xvdXItZm9yZWdyb3VuZCkpO1xuICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lO1xuICAgIHRyYW5zaXRpb246XG4gICAgICAwLjJzIGNvbG9yLFxuICAgICAgMC4ycyBiYWNrZ3JvdW5kLWNvbG9yLFxuICAgICAgMC4ycyBib3JkZXItY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lO1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgIG9wYWNpdHk6IDAuMztcbiAgICB9XG4gIH1cblxuICAubXgtYnV0dG9uLS1mdWxsLXdpZHRoIHtcbiAgICBpbmxpbmUtc2l6ZTogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC5teC1idXR0b24tLWxhcmdlIHtcbiAgICAtLXZlcnRpY2FsLXBhZGRpbmc6IHZhcigtLXNwYWNpbmctcyk7XG4gICAgLS1ob3Jpem9udGFsLXBhZGRpbmc6IHZhcigtLXNwYWNpbmctbCk7XG4gIH1cblxuICAubXgtYnV0dG9uLS1zbWFsbCB7XG4gICAgLS1idXR0b24tZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtcyk7XG4gICAgLS12ZXJ0aWNhbC1wYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXh4eHMpO1xuICAgIC0taG9yaXpvbnRhbC1wYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXMpO1xuICB9XG5cbiAgLm14LWJ1dHRvbi0taWNvbi1vbmx5IHtcbiAgICBpbmxpbmUtc2l6ZTogdmFyKC0tc3BhY2luZy14bCk7XG4gICAgYmxvY2stc2l6ZTogdmFyKC0tc3BhY2luZy14bCk7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLXJvdW5kKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBpbmxpbmUtc2l6ZTogMTAwJTtcbiAgICAgIGJsb2NrLXNpemU6IDEwMCU7XG4gICAgICBtYXNrLXNpemU6IHZhcigtLXNwYWNpbmctcyk7XG4gICAgfVxuXG4gICAgJjpoYXMoLm14LWljb24pIHtcbiAgICAgIHBsYWNlLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQnV0dG9uc1xuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmF0b21zIHtcbiAgLm14LWJ1dHRvbi0tZGFyayB7XG4gICAgLS1idXR0b24tbGluZS1jb2xvdXI6IHZhcigtLWNvbG91ci1wcmltYXJ5KTtcbiAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNvbG91ci1wcmltYXJ5KTtcbiAgICAtLWZvcmVncm91bmQ6IHZhcigtLWNvbG91ci1mb3JlZ3JvdW5kLXJldmVyc2UpO1xuXG4gICAgJi5idXR0b24tLW91dGxpbmUge1xuICAgICAgLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIC0tZm9yZWdyb3VuZDogdmFyKC0tY29sb3VyLXByaW1hcnkpO1xuICAgIH1cbiAgfVxuXG4gIC5teC1idXR0b24tLWxpZ2h0IHtcbiAgICBib3JkZXI6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG91ciwgdmFyKC0tY29sb3VyLXByaW1hcnkpKTtcbiAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lO1xuICAgIH1cbiAgfVxuXG4gIC5teC1idXR0b24tLWRlc3RydWN0aXZlIHtcbiAgICAtLWJ1dHRvbi1saW5lLWNvbG91cjogdmFyKC0tY29sb3VyLWVycm9yLWZvcmVncm91bmQpO1xuICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY29sb3VyLWVycm9yLWZvcmVncm91bmQpO1xuICAgIC0tZm9yZWdyb3VuZDogdmFyKC0tY29sb3VyLWZvcmVncm91bmQtcmV2ZXJzZSk7XG5cbiAgICAmLmJ1dHRvbi0tb3V0bGluZSB7XG4gICAgICAtLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgLS1mb3JlZ3JvdW5kOiB2YXIoLS1jb2xvdXItZXJyb3ItZm9yZWdyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLm14LWJ1dHRvbi0td2hpdGUge1xuICAgIC0tYnV0dG9uLWxpbmUtY29sb3VyOiB2YXIoLS1jb2xvdXItZm9yZWdyb3VuZC1yZXZlcnNlKTtcbiAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNvbG91ci1mb3JlZ3JvdW5kLXJldmVyc2UpO1xuICAgIC0tZm9yZWdyb3VuZDogdmFyKC0tY29sb3VyLWZvcmVncm91bmQpO1xuXG4gICAgJi5idXR0b24tLW91dGxpbmUge1xuICAgICAgLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIC0tZm9yZWdyb3VuZDogdmFyKC0tY29sb3VyLWZvcmVncm91bmQtcmV2ZXJzZSk7XG4gICAgfVxuICB9XG59XG4iXX0= */
132
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9idXR0b25zLmNzcyIsIl9idXR0b25zLXN0eWxlcy5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FBRUY7RUFDRTtJQUNFLDJCQUFxQjtJQUNyQix5QkFBb0I7O0lBRXBCLG9CQUFvQjtJQUNwQiw2QkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLHdDQUF3QztJQUN4QyxvREFBb0Q7SUFDcEQsb0NBQW9DO0lBQ3BDLCtCQUErQjtJQUMvQixrQ0FBa0M7SUFDbEM7cURBQ2lEO0lBRGpEO3FEQUNpRDtJQUNqRCxvREFBb0Q7SUFDcEQsMERBQTBEO0lBQzFELDJEQUEyRDtJQUMzRCw2REFBNkQ7SUFDN0Qsa0RBQWtEO0lBQ2xELDBCQUEwQjtJQUMxQjs7O3VCQUdtQjtFQVdyQjs7SUFURTtNQUNFLGVBQWU7TUFDZiwwQkFBMEI7SUFDNUI7O0lBRUE7TUFDRSxtQkFBbUI7TUFDbkIsWUFBWTtJQUNkOztFQUdGO0lBQ0UsaUJBQWlCO0lBQ2pCLHVCQUF1QjtFQUN6Qjs7RUFFQTtJQUNFLG9DQUFvQztJQUNwQyxzQ0FBc0M7RUFDeEM7O0VBRUE7SUFDRSxzQ0FBc0M7SUFDdEMsdUNBQXVDO0lBQ3ZDLHNDQUFzQztFQUN4Qzs7RUFFQTtJQUNFLDhCQUE4QjtJQUM5Qiw2QkFBNkI7SUFDN0IsVUFBVTtJQUNWLHlDQUF5QztJQUN6QyxnQkFBZ0I7SUFDaEIsZUFBZTtFQVdqQjs7SUFURTtNQUNFLGlCQUFpQjtNQUNqQixnQkFBZ0I7TUFDaEIsbUNBQTJCO2NBQTNCLDJCQUEyQjtJQUM3Qjs7SUFFQTtNQUNFLHFCQUFxQjtNQUFyQix1QkFBcUI7TUFBckIscUJBQXFCO0lBQ3ZCO0FBRUo7O0FDMUVBOztFQUVFOztBQUVGO0VBQ0U7SUFDRSwyQ0FBMkM7SUFDM0MsbUNBQW1DO0lBQ25DLDhDQUE4QztFQU1oRDs7SUFKRTtNQUNFLHlCQUF5QjtNQUN6QixtQ0FBbUM7SUFDckM7O0VBR0Y7SUFDRSxtQkFBbUI7SUFDbkIsZ0RBQWdEO0lBQ2hELCtCQUErQjtFQUtqQzs7SUFIRTtNQUNFLCtCQUErQjtJQUNqQzs7RUFHRjtJQUNFLG9EQUFvRDtJQUNwRCw0Q0FBNEM7SUFDNUMsOENBQThDO0VBTWhEOztJQUpFO01BQ0UseUJBQXlCO01BQ3pCLDRDQUE0QztJQUM5Qzs7RUFHRjtJQUNFLHNEQUFzRDtJQUN0RCw4Q0FBOEM7SUFDOUMsc0NBQXNDO0VBTXhDOztJQUpFO01BQ0UseUJBQXlCO01BQ3pCLDhDQUE4QztJQUNoRDtBQUVKIiwiZmlsZSI6ImJ1dHRvbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJ1dHRvbnNcbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5hdG9tcyB7XG4gIC5teC1idXR0b24ge1xuICAgIC0tb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAtLW91dGxpbmUtd2lkdGg6IDJweDtcblxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGlubGluZS1zaXplOiBmaXQtY29udGVudDtcbiAgICBnYXA6IHZhcigtLWJ1dHRvbi1nYXAsIHZhcigtLXNwYWNpbmctcykpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tYnV0dG9uLWZvbnQtc2l6ZSwgdmFyKC0tZm9udC1zaXplKSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWZhbWlseSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXVpKTtcbiAgICBib3JkZXI6IHZhcigtLWxpbmUtd2lkdGgsIDJweCkgc29saWRcbiAgICAgIHZhcigtLWJ1dHRvbi1saW5lLWNvbG91ciwgdmFyKC0tY29sb3VyLWJvcmRlcikpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cywgdmFyKC0tYm9yZGVyLXJhZGl1cy1sKSk7XG4gICAgcGFkZGluZy1ibG9jazogdmFyKC0tdmVydGljYWwtcGFkZGluZywgdmFyKC0tc3BhY2luZy14eHMpKTtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taG9yaXpvbnRhbC1wYWRkaW5nLCB2YXIoLS1zcGFjaW5nLW0pKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLCB2YXIoLS1jb2xvdXItYmFja2dyb3VuZCkpO1xuICAgIGNvbG9yOiB2YXIoLS1mb3JlZ3JvdW5kLCB2YXIoLS1jb2xvdXItZm9yZWdyb3VuZCkpO1xuICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lO1xuICAgIHRyYW5zaXRpb246XG4gICAgICAwLjJzIGNvbG9yLFxuICAgICAgMC4ycyBiYWNrZ3JvdW5kLWNvbG9yLFxuICAgICAgMC4ycyBib3JkZXItY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lO1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgIG9wYWNpdHk6IDAuMztcbiAgICB9XG4gIH1cblxuICAubXgtYnV0dG9uLS1mdWxsLXdpZHRoIHtcbiAgICBpbmxpbmUtc2l6ZTogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC5teC1idXR0b24tLWxhcmdlIHtcbiAgICAtLXZlcnRpY2FsLXBhZGRpbmc6IHZhcigtLXNwYWNpbmctcyk7XG4gICAgLS1ob3Jpem9udGFsLXBhZGRpbmc6IHZhcigtLXNwYWNpbmctbCk7XG4gIH1cblxuICAubXgtYnV0dG9uLS1zbWFsbCB7XG4gICAgLS1idXR0b24tZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtcyk7XG4gICAgLS12ZXJ0aWNhbC1wYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXh4eHMpO1xuICAgIC0taG9yaXpvbnRhbC1wYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXMpO1xuICB9XG5cbiAgLm14LWJ1dHRvbi0taWNvbi1vbmx5IHtcbiAgICBpbmxpbmUtc2l6ZTogdmFyKC0tc3BhY2luZy14bCk7XG4gICAgYmxvY2stc2l6ZTogdmFyKC0tc3BhY2luZy14bCk7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLXJvdW5kKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBpbmxpbmUtc2l6ZTogMTAwJTtcbiAgICAgIGJsb2NrLXNpemU6IDEwMCU7XG4gICAgICBtYXNrLXNpemU6IHZhcigtLXNwYWNpbmctcyk7XG4gICAgfVxuXG4gICAgJjpoYXMoLm14LWljb24pIHtcbiAgICAgIHBsYWNlLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQnV0dG9uc1xuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmF0b21zIHtcbiAgLm14LWJ1dHRvbi0tZGFyayB7XG4gICAgLS1idXR0b24tbGluZS1jb2xvdXI6IHZhcigtLWNvbG91ci1wcmltYXJ5KTtcbiAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNvbG91ci1wcmltYXJ5KTtcbiAgICAtLWZvcmVncm91bmQ6IHZhcigtLWNvbG91ci1mb3JlZ3JvdW5kLXJldmVyc2UpO1xuXG4gICAgJi5idXR0b24tLW91dGxpbmUge1xuICAgICAgLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIC0tZm9yZWdyb3VuZDogdmFyKC0tY29sb3VyLXByaW1hcnkpO1xuICAgIH1cbiAgfVxuXG4gIC5teC1idXR0b24tLWxpZ2h0IHtcbiAgICBib3JkZXI6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG91ciwgdmFyKC0tY29sb3VyLXByaW1hcnkpKTtcbiAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lO1xuICAgIH1cbiAgfVxuXG4gIC5teC1idXR0b24tLWRlc3RydWN0aXZlIHtcbiAgICAtLWJ1dHRvbi1saW5lLWNvbG91cjogdmFyKC0tY29sb3VyLWVycm9yLWZvcmVncm91bmQpO1xuICAgIC0tYmFja2dyb3VuZDogdmFyKC0tY29sb3VyLWVycm9yLWZvcmVncm91bmQpO1xuICAgIC0tZm9yZWdyb3VuZDogdmFyKC0tY29sb3VyLWZvcmVncm91bmQtcmV2ZXJzZSk7XG5cbiAgICAmLmJ1dHRvbi0tb3V0bGluZSB7XG4gICAgICAtLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgLS1mb3JlZ3JvdW5kOiB2YXIoLS1jb2xvdXItZXJyb3ItZm9yZWdyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLm14LWJ1dHRvbi0td2hpdGUge1xuICAgIC0tYnV0dG9uLWxpbmUtY29sb3VyOiB2YXIoLS1jb2xvdXItZm9yZWdyb3VuZC1yZXZlcnNlKTtcbiAgICAtLWJhY2tncm91bmQ6IHZhcigtLWNvbG91ci1mb3JlZ3JvdW5kLXJldmVyc2UpO1xuICAgIC0tZm9yZWdyb3VuZDogdmFyKC0tY29sb3VyLWZvcmVncm91bmQpO1xuXG4gICAgJi5idXR0b24tLW91dGxpbmUge1xuICAgICAgLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIC0tZm9yZWdyb3VuZDogdmFyKC0tY29sb3VyLWZvcmVncm91bmQtcmV2ZXJzZSk7XG4gICAgfVxuICB9XG59XG4iXX0= */
@@ -0,0 +1,61 @@
1
+ import { m as makeAnchor } from "./utilities-B4YZb689.js";
2
+ class Accordion extends HTMLElement {
3
+ constructor() {
4
+ super();
5
+ this.handleOpen = () => {
6
+ if (!this.details) return;
7
+ this.details.open = true;
8
+ };
9
+ this.handleClose = () => {
10
+ if (!this.details) return;
11
+ this.details.open = false;
12
+ };
13
+ this.handleHash = () => {
14
+ const { hash } = window.location;
15
+ if (hash && hash === `#${this.details?.id}`) {
16
+ this.handleOpen();
17
+ }
18
+ };
19
+ this.generatedId = () => {
20
+ const string = this.trigger?.textContent?.trim();
21
+ return !string ? "" : makeAnchor(string);
22
+ };
23
+ this.internals_ = this.attachInternals();
24
+ this.controller = new AbortController();
25
+ }
26
+ connectedCallback() {
27
+ if (!this.details || !this.trigger) return;
28
+ const { signal } = this.controller;
29
+ document.addEventListener("beforeprint", this.handleOpen, {
30
+ signal
31
+ });
32
+ document.addEventListener("afterprint", this.handleClose, {
33
+ signal
34
+ });
35
+ this.handleHash();
36
+ document.addEventListener("hashchange", this.handleHash, { signal });
37
+ }
38
+ disconnectedCallback() {
39
+ this.controller.abort();
40
+ }
41
+ get details() {
42
+ const details = this.querySelector("details");
43
+ if (!details) {
44
+ throw new Error(`${this.localName} must contain a <details> element.`);
45
+ }
46
+ details.id = details.id || this.generatedId();
47
+ return details;
48
+ }
49
+ get trigger() {
50
+ const trigger = this.querySelector("summary");
51
+ if (!trigger) {
52
+ throw new Error(`${this.localName} must contain a <summary> element.`);
53
+ }
54
+ return trigger;
55
+ }
56
+ }
57
+ customElements.define("mx-accordion", Accordion);
58
+ export {
59
+ Accordion as A
60
+ };
61
+ //# sourceMappingURL=Accordion-DSze7pxN.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,137 @@
1
+ import { A as Accordion } from "./chunks/Accordion-DSze7pxN.js";
2
+ class AccordionMobile extends Accordion {
3
+ constructor() {
4
+ super();
5
+ this.handleBreakpoint = ({
6
+ matches
7
+ }) => {
8
+ if (!this.details) return;
9
+ this.details.toggleAttribute("open", !matches);
10
+ };
11
+ this.mq = this.getAttribute("mq") || "(max-width: 720px)";
12
+ }
13
+ connectedCallback() {
14
+ this.handleBreakpoint(this.breakpoint);
15
+ const { signal } = this.controller;
16
+ this.breakpoint.addEventListener("change", this.handleBreakpoint, {
17
+ signal
18
+ });
19
+ }
20
+ disconnectedCallback() {
21
+ this.controller.abort();
22
+ }
23
+ get breakpoint() {
24
+ return window.matchMedia(this.mq);
25
+ }
26
+ }
27
+ customElements.define("mx-accordionmobile", AccordionMobile);
28
+ const _Filters = class _Filters extends HTMLElement {
29
+ constructor() {
30
+ super();
31
+ this.handleClose = (event) => {
32
+ if (!this.details) return;
33
+ this.details.open = false;
34
+ event.preventDefault();
35
+ };
36
+ this.handleShow = (event) => {
37
+ event.preventDefault();
38
+ const wrapper = this.showBtn.previousElementSibling;
39
+ wrapper.removeAttribute("hidden");
40
+ const lastVisible = wrapper.previousElementSibling;
41
+ const input = lastVisible.querySelector("input");
42
+ if (!input) return;
43
+ input.focus({ preventScroll: true });
44
+ setTimeout(() => {
45
+ this.showBtn.setAttribute("hidden", "");
46
+ }, 100);
47
+ };
48
+ this.handleReset = () => {
49
+ this.entries.forEach((entry, key) => {
50
+ this.entries.set(key, { ...entry, count: null });
51
+ if (entry.counter) entry.counter.textContent = "";
52
+ });
53
+ this.setAttribute("count", "0");
54
+ };
55
+ this.handleCounters = () => {
56
+ const formData = new FormData(this.form, this.submitBtn);
57
+ this.entries.forEach((entry, key) => {
58
+ const { length } = formData.getAll(key).filter(Boolean);
59
+ const count = length > 0 ? length : null;
60
+ this.entries.set(key, { ...entry, count });
61
+ if (entry.counter) entry.counter.textContent = count?.toString() || "";
62
+ });
63
+ const totalCount = [...this.entries].filter(([, item]) => item.count).length;
64
+ this.setAttribute("count", totalCount.toString());
65
+ };
66
+ this.internals_ = this.attachInternals();
67
+ this.controller = new AbortController();
68
+ }
69
+ connectedCallback() {
70
+ if (!this.items) return;
71
+ const { signal } = this.controller;
72
+ this.closeBtn?.addEventListener("click", this.handleClose, {
73
+ signal
74
+ });
75
+ this.showBtn?.addEventListener("click", this.handleShow, {
76
+ signal
77
+ });
78
+ this.handleCounters();
79
+ this.addEventListener("change", this.handleCounters, { signal });
80
+ this.form?.addEventListener("submit", this.handleCounters, { signal });
81
+ this.form?.addEventListener("reset", this.handleReset, { signal });
82
+ }
83
+ disconnectedCallback() {
84
+ this.controller.abort();
85
+ }
86
+ attributeChangedCallback(name, oldValue, newValue) {
87
+ if (name === "count" && oldValue !== newValue) {
88
+ const qualifier = parseInt(newValue, 10) > 0;
89
+ this.resetBtn?.toggleAttribute("disabled", !qualifier);
90
+ this.submitBtn?.toggleAttribute("disabled", !qualifier);
91
+ if (!this.allCounter) return;
92
+ this.allCounter.textContent = qualifier ? newValue : "";
93
+ }
94
+ }
95
+ get items() {
96
+ const items = this.querySelectorAll(".mx-filter-item");
97
+ if (!items) {
98
+ throw new Error(
99
+ `${this.localName} must contain a .mx-filter-item element.`
100
+ );
101
+ }
102
+ this.entries = /* @__PURE__ */ new Map();
103
+ items.forEach((item) => {
104
+ const key = item.querySelector("input, select")?.getAttribute("name");
105
+ this.entries.set(key, {
106
+ item,
107
+ counter: item.querySelector("[data-counter]")
108
+ });
109
+ });
110
+ return items;
111
+ }
112
+ get details() {
113
+ return this.querySelector("mx-accordionmobile > details");
114
+ }
115
+ get closeBtn() {
116
+ return this.details?.querySelector("button[data-close]");
117
+ }
118
+ get form() {
119
+ return this.querySelector("form");
120
+ }
121
+ get resetBtn() {
122
+ return this.querySelector("button[type='reset']");
123
+ }
124
+ get submitBtn() {
125
+ return this.querySelector("button[type='submit']");
126
+ }
127
+ get showBtn() {
128
+ return this.querySelector("button[data-show]");
129
+ }
130
+ get allCounter() {
131
+ return this.querySelector("[data-counters]");
132
+ }
133
+ };
134
+ _Filters.observedAttributes = ["count"];
135
+ let Filters = _Filters;
136
+ customElements.define("mx-filters", Filters);
137
+ //# sourceMappingURL=filters.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.entry.js","sources":["../../src/Component/Accordion/Elements/AccordionMobile.ts","../../src/Component/Filters/Elements/Filters.ts"],"sourcesContent":["/**\n * AccordionMobile\n * @file Support a mobile only <details> element, that opens at a breakpoint.\n */\n\nimport Accordion from \"./Accordion\"\n\nexport default class AccordionMobile extends Accordion {\n mq: string\n toggleAttribute!: Element[\"toggleAttribute\"]\n\n constructor() {\n super()\n this.mq = this.getAttribute(\"mq\") || \"(max-width: 720px)\"\n }\n\n connectedCallback(): void {\n this.handleBreakpoint(this.breakpoint)\n const { signal }: AbortController = this.controller\n this.breakpoint.addEventListener(\"change\", this.handleBreakpoint, {\n signal,\n })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleBreakpoint = ({\n matches,\n }: MediaQueryList | MediaQueryListEvent): void => {\n if (!this.details) return\n this.details.toggleAttribute(\"open\", !matches)\n }\n\n get breakpoint(): MediaQueryList {\n return window.matchMedia(this.mq)\n }\n}\n\ncustomElements.define(\"mx-accordionmobile\", AccordionMobile)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-accordionmobile\": AccordionMobile\n }\n}\n","/**\n * Filters\n * @file Support filter count elements and closing the \"right\" variant on mobile..\n */\n\nimport \"../../Accordion/Elements/Accordion\"\nimport \"../../Accordion/Elements/AccordionMobile\"\n\ntype EntryType = {\n item: HTMLElement\n counter?: HTMLSpanElement\n count?: number\n}\n\nexport default class Filters extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n entries?: Map<string, EntryType>\n\n static observedAttributes = [\"count\"]\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n connectedCallback(): void {\n if (!this.items) return\n\n const { signal }: AbortController = this.controller\n this.closeBtn?.addEventListener(\"click\", this.handleClose, {\n signal,\n })\n this.showBtn?.addEventListener(\"click\", this.handleShow, {\n signal,\n })\n\n this.handleCounters()\n this.addEventListener(\"change\", this.handleCounters, { signal })\n this.form?.addEventListener(\"submit\", this.handleCounters, { signal })\n this.form?.addEventListener(\"reset\", this.handleReset, { signal })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ): void {\n if (name === \"count\" && oldValue !== newValue) {\n const qualifier = parseInt(newValue, 10) > 0\n this.resetBtn?.toggleAttribute(\"disabled\", !qualifier)\n this.submitBtn?.toggleAttribute(\"disabled\", !qualifier)\n if (!this.allCounter) return\n this.allCounter.textContent = qualifier ? newValue : \"\"\n }\n }\n\n handleClose = (event: MouseEvent): void => {\n if (!this.details) return\n this.details.open = false\n event.preventDefault()\n }\n\n handleShow = (event: MouseEvent): void => {\n event.preventDefault()\n const wrapper = this.showBtn.previousElementSibling\n wrapper.removeAttribute(\"hidden\")\n const lastVisible = wrapper.previousElementSibling\n const input = lastVisible.querySelector(\"input\")\n if (!input) return\n input.focus({ preventScroll: true })\n setTimeout(() => {\n this.showBtn.setAttribute(\"hidden\", \"\")\n }, 100)\n }\n\n handleReset = (): void => {\n this.entries.forEach((entry, key): void => {\n this.entries.set(key, { ...entry, count: null })\n if (entry.counter) entry.counter.textContent = \"\"\n })\n this.setAttribute(\"count\", \"0\")\n }\n\n handleCounters = (): void => {\n const formData = new FormData(this.form, this.submitBtn)\n this.entries.forEach((entry, key): void => {\n const { length } = formData.getAll(key).filter(Boolean)\n const count = length > 0 ? length : null\n this.entries.set(key, { ...entry, count })\n if (entry.counter) entry.counter.textContent = count?.toString() || \"\"\n })\n\n const totalCount = [...this.entries].filter(([, item]) => item.count).length\n this.setAttribute(\"count\", totalCount.toString())\n }\n\n get items(): NodeListOf<HTMLElement> | null {\n const items: NodeListOf<HTMLElement> =\n this.querySelectorAll(\".mx-filter-item\")\n if (!items) {\n throw new Error(\n `${this.localName} must contain a .mx-filter-item element.`,\n )\n }\n this.entries = new Map()\n items.forEach(item => {\n const key = item.querySelector(\"input, select\")?.getAttribute(\"name\")\n this.entries.set(key, {\n item,\n counter: item.querySelector(\"[data-counter]\"),\n })\n })\n return items\n }\n\n get details(): HTMLDetailsElement | null {\n return this.querySelector(\"mx-accordionmobile > details\")\n }\n\n get closeBtn(): HTMLButtonElement | null {\n return this.details?.querySelector(\"button[data-close]\")\n }\n\n get form(): HTMLFormElement | null {\n return this.querySelector(\"form\")\n }\n\n get resetBtn(): HTMLButtonElement | null {\n return this.querySelector(\"button[type='reset']\")\n }\n\n get submitBtn(): HTMLButtonElement | null {\n return this.querySelector(\"button[type='submit']\")\n }\n\n get showBtn(): HTMLButtonElement | null {\n return this.querySelector(\"button[data-show]\")\n }\n\n get allCounter(): HTMLSpanElement | null {\n return this.querySelector(\"[data-counters]\")\n }\n}\n\ncustomElements.define(\"mx-filters\", Filters)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-filters\": Filters\n }\n}\n"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@
41
41
  position: relative;
42
42
  display: grid;
43
43
  grid-template-columns: 1fr auto;
44
+ align-items: center;
44
45
  }
45
46
 
46
47
  .mx-header__brand {
@@ -88,6 +89,7 @@
88
89
 
89
90
  .mx-header__search {
90
91
  position: absolute;
92
+ z-index: 2;
91
93
  inset-block-start: 2px;
92
94
  inset-inline-start: 0;
93
95
  inline-size: 100%;
@@ -112,21 +114,34 @@
112
114
  0.2s opacity var(--ease),
113
115
  0.2s visibility var(--ease);
114
116
  }
117
+ @media (min-width: 720px) {
115
118
 
116
119
  .mx-header__search input {
117
- max-inline-size: 150px;
120
+ max-inline-size: 150px;
118
121
  }
122
+ }
119
123
 
120
124
  /**
121
125
  * Primary Header Stacked
122
126
  */
127
+ @media (min-width: 720px) {
123
128
  .mx-header__nav-inner {
124
- display: flex;
129
+ display: flex;
125
130
  }
131
+ }
126
132
 
127
133
  .mx-header__nav-right {
128
- margin-inline-start: auto;
134
+ margin-block: var(--spacing-m);
129
135
  }
136
+
137
+ @media (min-width: 720px) {
138
+
139
+ .mx-header__nav-right {
140
+ margin-inline-start: auto;
141
+ margin-block: 0;
142
+ padding-block: 4px;
143
+ }
144
+ }
130
145
  }
131
146
 
132
147
  @media print {
@@ -135,4 +150,4 @@
135
150
  }
136
151
  }
137
152
 
138
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl90b2dnbGVzLmNzcyIsIl9oZWFkZXIuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFOztBQUVGO0VBQ0U7SUFDRSxhQUFhO0lBQ2IseUNBQXlDO0lBQ3pDLDRCQUF1QjtJQUN2QixrQkFBa0I7SUFDbEIsVUFBVTtFQWFaOztJQVhFO0VBUEY7TUFRSSxhQUFhO0VBVWpCO0lBVEU7O0lBRUE7TUFDRSx5QkFBeUI7SUFDM0I7O0lBRUE7TUFDRSxhQUFhO0lBQ2Y7SUFJQTs7RUFERjtNQUVJLGFBQWE7RUFFakI7SUFERTtBQUVKOztBQzlCQTs7RUFFRTs7QUFFRjtFQUNFO0lBQ0Usa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYiwrQkFBK0I7RUFDakM7O0VBRUE7SUFDRSxhQUFhO0lBQ2IsaUNBQWlDO0lBQ2pDLG1CQUFtQjtJQUNuQix1QkFBdUI7RUFDekI7O0VBRUE7SUFDRSxhQUFhO0VBQ2Y7O0VBRUE7SUFDRSxhQUFhO0lBQ2IsZ0NBQWdDO0lBQ2hDLG1CQUFtQjtFQUNyQjs7RUFFQTtJQUNFLGlCQUFpQjtJQUNqQjs7aUNBRTZCO0VBaUIvQjs7SUFmRTs7RUFORjtNQU9JLFVBQVU7TUFDVixrQkFBa0I7TUFDbEIsaUJBQWlCO01BQ2pCLGdCQUFnQjtFQVdwQjtJQVZFOztJQUVBO01BQ0UsYUFBYTtNQUNiLFVBQVU7TUFDVixrQkFBa0I7TUFDbEI7O21DQUU2QjtJQUMvQjs7RUFHRjtJQUNFLGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQjs7aUNBRTZCO0VBbUIvQjs7SUFqQkU7O0VBVEY7TUFVSSxhQUFhO01BQ2Isa0JBQWtCO01BQ2xCLGlCQUFpQjtFQWNyQjtJQWJFOztJQUVBO01BQ0UsVUFBVTtNQUNWLGtCQUFrQjtNQUNsQjs7bUNBRTZCO0lBQy9COztJQUVBO01BQ0Usc0JBQXNCO0lBQ3hCOztFQUdGOztJQUVFO0VBQ0Y7SUFDRSxhQUFhO0VBQ2Y7O0VBRUE7SUFDRSx5QkFBeUI7RUFDM0I7QUFDRjs7QUFFQTtFQUNFO0lBQ0UsYUFBYTtFQUNmO0FBQ0YiLCJmaWxlIjoiaGVhZGVyLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2xvYmFsIEhlYWRlclxuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmxheW91dHMge1xuICAubXgtaGVhZGVyX190b2dnbGVzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tdG9nZ2xlLWdhcCwgdmFyKC0tc3BhY2luZy14cykpO1xuICAgIHBhZGRpbmctaW5saW5lLWVuZDogMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJiAubXgtYnV0dG9uLS1zZWNvbmRhcnkge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmIFtoaWRkZW5dIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLmdsb2JhbC1uYXYtdXAtb25seSB7XG4gICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtZG93bikge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogUHJpbWFyeSBIZWFkZXJcbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5sYXlvdXRzIHtcbiAgLm14LWhlYWRlcl9faW5uZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87XG4gIH1cblxuICAubXgtaGVhZGVyX19icmFuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLWJyYW5kLWdhcCwgdmFyKC0tZ2FwKSk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogYXV0bztcbiAgfVxuXG4gIC5teC1oZWFkZXJfX25hbWUge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gIH1cblxuICAubXgtaGVhZGVyX19tYWluIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tbWFpbi1nYXAsIHZhcigtLWdhcCkpO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubXgtaGVhZGVyX19uYXYge1xuICAgIGlubGluZS1zaXplOiAxMDAlO1xuICAgIHRyYW5zaXRpb246XG4gICAgICAwLjJzIG9wYWNpdHkgdmFyKC0tZWFzZSksXG4gICAgICAwLjJzIHZpc2liaWxpdHkgdmFyKC0tZWFzZSk7XG5cbiAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgei1pbmRleDogMjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGlubGluZS1zaXplOiBhdXRvO1xuICAgICAgYmxvY2stc2l6ZTogYXV0bztcbiAgICB9XG5cbiAgICAmW2luZXJ0XSB7XG4gICAgICBibG9jay1zaXplOiAwO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIDAuMnMgb3BhY2l0eSB2YXIoLS1lYXNlKSxcbiAgICAgICAgMC4ycyB2aXNpYmlsaXR5IHZhcigtLWVhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC5teC1oZWFkZXJfX3NlYXJjaCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAycHg7XG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgIGlubGluZS1zaXplOiAxMDAlO1xuICAgIHRyYW5zaXRpb246XG4gICAgICAwLjJzIG9wYWNpdHkgdmFyKC0tZWFzZSksXG4gICAgICAwLjJzIHZpc2liaWxpdHkgdmFyKC0tZWFzZSk7XG5cbiAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGlubGluZS1zaXplOiBhdXRvO1xuICAgIH1cblxuICAgICZbaW5lcnRdIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAwLjJzIG9wYWNpdHkgdmFyKC0tZWFzZSksXG4gICAgICAgIDAuMnMgdmlzaWJpbGl0eSB2YXIoLS1lYXNlKTtcbiAgICB9XG5cbiAgICAmIGlucHV0IHtcbiAgICAgIG1heC1pbmxpbmUtc2l6ZTogMTUwcHg7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByaW1hcnkgSGVhZGVyIFN0YWNrZWRcbiAgICovXG4gIC5teC1oZWFkZXJfX25hdi1pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5teC1oZWFkZXJfX25hdi1yaWdodCB7XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgcHJpbnQge1xuICAubXgtaGVhZGVyIC5teC1oZWFkZXJfX25hdiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIl19 */
153
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl90b2dnbGVzLmNzcyIsIl9oZWFkZXIuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFOztBQUVGO0VBQ0U7SUFDRSxhQUFhO0lBQ2IseUNBQXlDO0lBQ3pDLDRCQUF1QjtJQUN2QixrQkFBa0I7SUFDbEIsVUFBVTtFQWFaOztJQVhFO0VBUEY7TUFRSSxhQUFhO0VBVWpCO0lBVEU7O0lBRUE7TUFDRSx5QkFBeUI7SUFDM0I7O0lBRUE7TUFDRSxhQUFhO0lBQ2Y7SUFJQTs7RUFERjtNQUVJLGFBQWE7RUFFakI7SUFERTtBQUVKOztBQzlCQTs7RUFFRTs7QUFFRjtFQUNFO0lBQ0Usa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYiwrQkFBK0I7SUFDL0IsbUJBQW1CO0VBQ3JCOztFQUVBO0lBQ0UsYUFBYTtJQUNiLGlDQUFpQztJQUNqQyxtQkFBbUI7SUFDbkIsdUJBQXVCO0VBQ3pCOztFQUVBO0lBQ0UsYUFBYTtFQUNmOztFQUVBO0lBQ0UsYUFBYTtJQUNiLGdDQUFnQztJQUNoQyxtQkFBbUI7RUFDckI7O0VBRUE7SUFDRSxpQkFBaUI7SUFDakI7O2lDQUU2QjtFQWlCL0I7O0lBZkU7O0VBTkY7TUFPSSxVQUFVO01BQ1Ysa0JBQWtCO01BQ2xCLGlCQUFpQjtNQUNqQixnQkFBZ0I7RUFXcEI7SUFWRTs7SUFFQTtNQUNFLGFBQWE7TUFDYixVQUFVO01BQ1Ysa0JBQWtCO01BQ2xCOzttQ0FFNkI7SUFDL0I7O0VBR0Y7SUFDRSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCOztpQ0FFNkI7RUFxQi9COztJQW5CRTs7RUFWRjtNQVdJLGFBQWE7TUFDYixrQkFBa0I7TUFDbEIsaUJBQWlCO0VBZ0JyQjtJQWZFOztJQUVBO01BQ0UsVUFBVTtNQUNWLGtCQUFrQjtNQUNsQjs7bUNBRTZCO0lBQy9CO01BR0U7O0lBREY7UUFFSSxzQkFBc0I7SUFFMUI7TUFERTs7RUFJSjs7SUFFRTtJQUVBO0VBREY7TUFFSSxhQUFhO0VBRWpCO0lBREU7O0VBR0Y7SUFDRSw4QkFBOEI7RUFPaEM7O0lBTEU7O0VBSEY7TUFJSSx5QkFBeUI7TUFDekIsZUFBZTtNQUNmLGtCQUFrQjtFQUV0QjtJQURFO0FBRUo7O0FBRUE7RUFDRTtJQUNFLGFBQWE7RUFDZjtBQUNGIiwiZmlsZSI6ImhlYWRlci5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdsb2JhbCBIZWFkZXJcbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5sYXlvdXRzIHtcbiAgLm14LWhlYWRlcl9fdG9nZ2xlcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXRvZ2dsZS1nYXAsIHZhcigtLXNwYWNpbmcteHMpKTtcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IDJweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcblxuICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICYgLm14LWJ1dHRvbi0tc2Vjb25kYXJ5IHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgJiBbaGlkZGVuXSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5nbG9iYWwtbmF2LXVwLW9ubHkge1xuICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LWRvd24pIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIFByaW1hcnkgSGVhZGVyXG4gKi9cblxuQGxheWVyIGRlc2lnbi1zeXN0ZW0ubGF5b3V0cyB7XG4gIC5teC1oZWFkZXJfX2lubmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubXgtaGVhZGVyX19icmFuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLWJyYW5kLWdhcCwgdmFyKC0tZ2FwKSk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogYXV0bztcbiAgfVxuXG4gIC5teC1oZWFkZXJfX25hbWUge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gIH1cblxuICAubXgtaGVhZGVyX19tYWluIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tbWFpbi1nYXAsIHZhcigtLWdhcCkpO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAubXgtaGVhZGVyX19uYXYge1xuICAgIGlubGluZS1zaXplOiAxMDAlO1xuICAgIHRyYW5zaXRpb246XG4gICAgICAwLjJzIG9wYWNpdHkgdmFyKC0tZWFzZSksXG4gICAgICAwLjJzIHZpc2liaWxpdHkgdmFyKC0tZWFzZSk7XG5cbiAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgei1pbmRleDogMjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGlubGluZS1zaXplOiBhdXRvO1xuICAgICAgYmxvY2stc2l6ZTogYXV0bztcbiAgICB9XG5cbiAgICAmW2luZXJ0XSB7XG4gICAgICBibG9jay1zaXplOiAwO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIDAuMnMgb3BhY2l0eSB2YXIoLS1lYXNlKSxcbiAgICAgICAgMC4ycyB2aXNpYmlsaXR5IHZhcigtLWVhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC5teC1oZWFkZXJfX3NlYXJjaCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDI7XG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDJweDtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgaW5saW5lLXNpemU6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIDAuMnMgb3BhY2l0eSB2YXIoLS1lYXNlKSxcbiAgICAgIDAuMnMgdmlzaWJpbGl0eSB2YXIoLS1lYXNlKTtcblxuICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgaW5saW5lLXNpemU6IGF1dG87XG4gICAgfVxuXG4gICAgJltpbmVydF0ge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIDAuMnMgb3BhY2l0eSB2YXIoLS1lYXNlKSxcbiAgICAgICAgMC4ycyB2aXNpYmlsaXR5IHZhcigtLWVhc2UpO1xuICAgIH1cblxuICAgICYgaW5wdXQge1xuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgbWF4LWlubGluZS1zaXplOiAxNTBweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJpbWFyeSBIZWFkZXIgU3RhY2tlZFxuICAgKi9cbiAgLm14LWhlYWRlcl9fbmF2LWlubmVyIHtcbiAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gIH1cblxuICAubXgtaGVhZGVyX19uYXYtcmlnaHQge1xuICAgIG1hcmdpbi1ibG9jazogdmFyKC0tc3BhY2luZy1tKTtcblxuICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xuICAgICAgbWFyZ2luLWJsb2NrOiAwO1xuICAgICAgcGFkZGluZy1ibG9jazogNHB4O1xuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgcHJpbnQge1xuICAubXgtaGVhZGVyIC5teC1oZWFkZXJfX25hdiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIl19 */
@@ -197,6 +197,10 @@
197
197
  }
198
198
  }
199
199
 
200
+ .mx-nav--dropdown a:focus-visible {
201
+ outline-offset: -2px;
202
+ }
203
+
200
204
  .mx-nav--dropdown li > ul {
201
205
  transition:
202
206
  0.2s opacity var(--ease),
@@ -389,4 +393,4 @@
389
393
  }
390
394
  }
391
395
 
392
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9uYXZpZ2F0aW9uLmNzcyIsIl9uYXZpZ2F0aW9uLWNvbGxhcHNpYmxlLmNzcyIsIl9uYXZpZ2F0aW9uLWRyb3Bkb3duLmNzcyIsIl9uYXZpZ2F0aW9uLW1lZ2EuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFOztBQUVGO0lBRUk7O01BRUUsYUFBYTtNQUNiLHNCQUFzQjtNQUN0QixxQkFBcUI7TUFDckIsdUJBQXVCO01BQ3ZCLGlEQUFpRDtJQUNuRDs7SUFFQTtNQUNFLDJCQUEyQjs7TUFFM0IsMEJBQWdEOztNQUFoRCxnREFBZ0Q7SUFLbEQ7O01BSEU7UUFDRSwrQkFBNEQ7UUFBNUQsNERBQTREO01BQzlEO0lBS0Y7O01BRUUsbUJBQW1CO01BQ25CLG1CQUFtQjtNQUNuQixxQ0FBcUM7SUFDdkM7O0VBR0Y7SUFDRSxpRkFBaUI7SUFBakIsbUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixTQUFTO0lBQ1Qsd0JBQWdCO09BQWhCLHFCQUFnQjtZQUFoQixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCOzs7S0FHQztJQUNELDZCQUE2QjtJQUM3Qiw0QkFBNEI7SUFDNUIsdUJBQTBDO0lBQTFDLDBDQUEwQztJQUMxQyxtQkFBbUI7SUFDbkIsZUFBZTtFQUNqQjtJQUdFO01BQ0UseUJBQXlCO0lBQzNCO0FBRUo7O0FDekRBOztFQUVFOztBQUVGO0lBRUk7TUFDRSxxQ0FBcUM7SUFLdkM7O01BSEU7SUFIRjtRQUlJLGNBQWM7SUFFbEI7TUFERTs7SUFHRjtNQUNFLGtCQUFrQjtJQW1CcEI7O01BakJFO1FBQ0Usb0NBQW9DO01BQ3RDOztNQUVBO1FBQ0UsY0FBYztRQUNkLGNBQWM7UUFDZDtrREFDMEM7UUFEMUM7a0RBQzBDO1FBQzFDLHNEQUFzRDtRQUN0RDtpREFDeUM7TUFLM0M7O1FBSEU7VUFDRSxvQkFBb0I7UUFDdEI7O0lBSUo7TUFDRSwwQkFBMEI7SUFLNUI7O01BSEU7O0lBSEY7UUFJSSwwQkFBMEI7SUFFOUI7TUFERTs7SUFHRjtNQUNF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IE5hdmlnYXRpb25cbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5hdG9tcyB7XG4gIC5teC1uYXYge1xuICAgICY6d2hlcmUoOm5vdCg6aGFzKHVsKSkpLFxuICAgIHVsIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgICBmb250LXNpemU6IHZhcigtLW5hdi1mb250LXNpemUsIHZhcigtLWZvbnQtc2l6ZSkpO1xuICAgIH1cblxuICAgICYgYVtocmVmXSB7XG4gICAgICAtLWxpbmstY29sb3VyOiBjdXJyZW50Y29sb3I7XG5cbiAgICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiB2YXIoLS1uYXYtdW5kZXJsaW5lLCBub25lKTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiB2YXIoLS1uYXYtYWN0aXZlLXVuZGVybGluZSwgdW5kZXJsaW5lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubXgtbmF2LS1pbmxpbmUge1xuICAgICY6d2hlcmUoOm5vdCg6aGFzKHVsKSkpLFxuICAgID4gdWwge1xuICAgICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IHZhcigtLW5hdi1nYXAsIHZhcigtLXNwYWNpbmctcykpO1xuICAgIH1cbiAgfVxuXG4gIC5teC1uYXZfX3RvZ2dsZSB7XG4gICAgYmFja2dyb3VuZDogdW5zZXQ7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IDA7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29sb3I6IHZhcihcbiAgICAgIC0tdG9nZ2xlLWZvcmVncm91bmQsXG4gICAgICB2YXIoLS1mb3JlZ3JvdW5kLCB2YXIoLS1jb2xvdXItZm9yZWdyb3VuZCkpXG4gICAgKTtcbiAgICBpbmxpbmUtc2l6ZTogdmFyKC0tc3BhY2luZy1sKTtcbiAgICBibG9jay1zaXplOiB2YXIoLS1zcGFjaW5nLWwpO1xuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiB2YXIoLS10b2dnbGUtdG9wLCAxMnB4KTtcbiAgICBpbnNldC1pbmxpbmUtZW5kOiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5teC1uYXYtLW9wZW4ge1xuICAgICYgPiAubXgtbmF2X190b2dnbGU6OmJlZm9yZSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBDb2xsYXBzaWJsZSBOYXZpZ2F0aW9uXG4gKi9cblxuQGxheWVyIGRlc2lnbi1zeXN0ZW0uY29tcG9uZW50cyB7XG4gIC5teC1uYXYtLWNvbGxhcHNpYmxlIHtcbiAgICAmIC5teC1uYXZfX3RvZ2dsZSB7XG4gICAgICBpbnNldC1pbmxpbmU6IGF1dG8gdmFyKC0tc3BhY2luZy14eHMpO1xuXG4gICAgICBAbWVkaWEgKC0tbWVkaXVtLXVwKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cblxuICAgICYgdWwgbGkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAmOmhhcyhbYXJpYS1jdXJyZW50PVwicGFnZVwiXSwgLmlzLWFjdGl2ZSkgPiBhIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICAgICAgfVxuXG4gICAgICAmIGEge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIGJvcmRlci1ibG9jay1lbmQ6IHZhcigtLWxpbmUtd2lkdGgsIDFweCkgc29saWRcbiAgICAgICAgICB2YXIoLS1saW5lLWNvbG91ciwgdmFyKC0tY29sb3VyLWJvcmRlcikpO1xuICAgICAgICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1pdGVtLXNwYWNpbmcsIHZhcigtLXNwYWNpbmcteHhzKSk7XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1pbmRlbnQsIHZhcigtLXNwYWNpbmcteHhzKSlcbiAgICAgICAgICB2YXIoLS1pdGVtLXNwYWNpbmcsIHZhcigtLXNwYWNpbmcteHhzKSk7XG5cbiAgICAgICAgJjppcyg6Zm9jdXMsIDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmIC5teC1uYXZfX2xldmVsLTIgPiBsaSA+IGEge1xuICAgICAgLS1pbmRlbnQ6IHZhcigtLXNwYWNpbmctcyk7XG5cbiAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICAgIC0taW5kZW50OiB2YXIoLS1zcGFjaW5nLW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICYgLm14LW5hdl9fbGV2ZWwtMyA+IGxpID4gYSB7XG4gICAgICAtLWluZGVudDogdmFyKC0tc3BhY2luZy1tKTtcblxuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgLS1pbmRlbnQ6IHZhcigtLXNwYWNpbmctbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiA6aXMoW2FyaWEtY3VycmVudD1cInBhZ2VcIl0sIC5pcy1hY3RpdmUgPiBhKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoXG4gICAgICAgIC0tbmF2LWFjdGl2ZS1iYWNrZ3JvdW5kLFxuICAgICAgICB2YXIoLS1iYWNrZ3JvdW5kLCB2YXIoLS1jb2xvdXItYmFja2dyb3VuZC1hbHQpKVxuICAgICAgKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1uYXYtYWN0aXZlLWZvcmVncm91bmQsIGluaGVyaXQpO1xuICAgIH1cblxuICAgICYgbGkgPiB1bCB7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gMC4ycyB2YXIoLS1lYXNlKSxcbiAgICAgICAgb3BhY2l0eSAwLjhzIHZhcigtLWVhc2UpO1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wO1xuICAgICAgd2lsbC1jaGFuZ2U6IGJsb2NrLXNpemU7XG5cbiAgICAgICZbaW5lcnRdIHtcbiAgICAgICAgYmxvY2stc2l6ZTogMDtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgdHJhbnNmb3JtIDAuOHMgdmFyKC0tZWFzZSksXG4gICAgICAgICAgb3BhY2l0eSAwLjJzIHZhcigtLWVhc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYgbGk6aXMoLm14LW5hdl9faGFzLXN1Ym5hdiwgOmhhcyg+IHVsKSkgPiBhIHtcbiAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0tc3BhY2luZy1sKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogRHJvcGRvd24gTmF2aWdhdGlvblxuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmNvbXBvbmVudHMge1xuICAubXgtbmF2LS1kcm9wZG93biB7XG4gICAgLS1uYXYtYWN0aXZlLXVuZGVybGluZTogbm9uZTtcblxuICAgIG1hcmdpbi1ibG9jazogdmFyKC0tc3BhY2luZy1tKTtcblxuICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICBtYXJnaW4tYmxvY2s6IDA7XG4gICAgfVxuXG4gICAgJiBsaSB7XG4gICAgICBtYXJnaW46IDA7XG5cbiAgICAgICY6aXMoLm14LW5hdl9faGFzLXN1Ym5hdiwgOmhhcyg+IHVsKSkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJiA+IGEge1xuICAgICAgICAgIC0tdG9nZ2xlLWdhcDogdmFyKC0tc3BhY2luZy1sKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgJlthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXSB7XG4gICAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKFxuICAgICAgICAgICAgLS1uYXYtZXhwYW5kZWQtYmFja2dyb3VuZCxcbiAgICAgICAgICAgIHZhcigtLWJhY2tncm91bmQsIHZhcigtLWNvbG91ci1iYWNrZ3JvdW5kLWFsdCkpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2LWV4cGFuZGVkLWZvcmVncm91bmQsIGluaGVyaXQpO1xuXG4gICAgICAgICAgJiArIC5uYXZfX3RvZ2dsZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2LWV4cGFuZGVkLWZvcmVncm91bmQsIGluaGVyaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYgbGkgPiB1bCB7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAwLjJzIG9wYWNpdHkgdmFyKC0tZWFzZSksXG4gICAgICAgIDAuMnMgdmlzaWJpbGl0eSB2YXIoLS1lYXNlKTtcblxuICAgICAgJltpbmVydF0ge1xuICAgICAgICBibG9jay1zaXplOiAwO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgMC4ycyBvcGFjaXR5IHZhcigtLWVhc2UpLFxuICAgICAgICAgIDAuMnMgdmlzaWJpbGl0eSB2YXIoLS1lYXNlKTtcblxuICAgICAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgICAgIGJsb2NrLXNpemU6IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmIC5teC1uYXZfX2xldmVsLTEge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIGZsZXgtZmxvdzogcm93O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgICYgPiBsaSB7XG4gICAgICAgIGJvcmRlci1ibG9jay1zdGFydDogdmFyKC0tbGluZS13aWR0aCwgMXB4KSBzb2xpZFxuICAgICAgICAgIHZhcigtLWxpbmUtY29sb3VyLCB2YXIoLS1jb2xvdXItYm9yZGVyKSk7XG5cbiAgICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgICBib3JkZXItYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmID4gYTp3aGVyZSg6bm90KC5idXR0b24pKSB7XG4gICAgICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0taXRlbS1zcGFjaW5nLCB2YXIoLS1zcGFjaW5nLXh4cykpO1xuICAgICAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKFxuICAgICAgICAgICAgLS10b2dnbGUtZ2FwLFxuICAgICAgICAgICAgdmFyKC0taXRlbS1zcGFjaW5nLCB2YXIoLS1zcGFjaW5nLXh4cykpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taXRlbS1zcGFjaW5nLCB2YXIoLS1zcGFjaW5nLXh4cykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYgLm14LW5hdl9fbGV2ZWwtMiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogMDtcbiAgICAgIGlubGluZS1zaXplOiAxMDAlO1xuICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGlubGluZS1zaXplOiB2YXIoLS1kcm9wZG93bi13aWR0aCwgMjcwcHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKFxuICAgICAgICAgIC0tbmF2LWV4cGFuZGVkLWJhY2tncm91bmQsXG4gICAgICAgICAgdmFyKC0tYmFja2dyb3VuZCwgdmFyKC0tY29sb3VyLWJhY2tncm91bmQtYWx0KSlcbiAgICAgICAgKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW5hdi1leHBhbmRlZC1mb3JlZ3JvdW5kLCBpbmhlcml0KTtcblxuICAgICAgICAmIC5teC1uYXZfX3RvZ2dsZTo6YmVmb3JlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYgPiBsaSB7XG4gICAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LWRvd24pIHtcbiAgICAgICAgICBib3JkZXItYmxvY2stc3RhcnQ6IHZhcigtLWxpbmUtd2lkdGgsIDFweCkgc29saWRcbiAgICAgICAgICAgIHZhcigtLWxpbmUtY29sb3VyLCB2YXIoLS1jb2xvdXItYm9yZGVyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAmID4gYSB7XG4gICAgICAgICAgJjp3aGVyZSg6bm90KC5idXR0b24pKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1pdGVtLXNwYWNpbmcsIHZhcigtLXNwYWNpbmcteHhzKSk7XG5cbiAgICAgICAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LWRvd24pIHtcbiAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLXNwYWNpbmctbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiAubXgtbmF2LS1yZXZlcnNlIC5uYXZfX2xldmVsLTIge1xuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgaW5zZXQtaW5saW5lOiBhdXRvIDA7XG5cbiAgICAgICAgJiAubXgtbmF2X190b2dnbGU6OmJlZm9yZSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiAubXgtbmF2X19zZXBhcmF0b3Ige1xuICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiB2YXIoLS1saW5lLXdpZHRoLCAxcHgpIHNvbGlkXG4gICAgICAgIHZhcigtLWxpbmUtY29sb3VyLCB2YXIoLS1jb2xvdXItYm9yZGVyKSk7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIERyb3Bkb3duIE5hdmlnYXRpb24gLSBNZWdhIE5hdlxuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmNvbXBvbmVudHMge1xuICAubXgtbmF2LS1tZWdhLW5hdiB7XG4gICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtZG93bikge1xuICAgICAgbWF4LWJsb2NrLXNpemU6IDEwMCU7XG4gICAgICBvdmVyZmxvdzogYXV0bztcbiAgICB9XG5cbiAgICAmIC5teC1uYXZfX2xldmVsLTIgdWwge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0tc3BhY2luZy1sKTtcbiAgICAgIGJvcmRlci1ibG9jay1zdGFydDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvdXIpO1xuICAgICAgaW5saW5lLXNpemU6IDEwMCU7XG5cbiAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiB2YXIoLS1kcm9wZG93bi13aWR0aCwgMjcwcHgpO1xuICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgaW5saW5lLXNpemU6IHZhcigtLWRyb3Bkb3duLXdpZHRoLCAyNzBweCk7XG4gICAgICAgIG1pbi1ibG9jay1zaXplOiAxMDAlO1xuICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDtcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLWJvcmRlci1yYWRpdXMpIHZhcigtLWJvcmRlci1yYWRpdXMpIDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcihcbiAgICAgICAgICAtLWV4cGFuZGVkLWJhY2tncm91bmQsXG4gICAgICAgICAgdmFyKC0tY29sb3VyLWJhY2tncm91bmQtYWx0KVxuICAgICAgICApO1xuICAgICAgICBjb2xvcjogdmFyKC0tZXhwYW5kZWQtZm9yZWdyb3VuZCwgaW5oZXJpdCk7XG4gICAgICB9XG5cbiAgICAgICYgPiBsaSA+IGE6d2hlcmUoOm5vdCgubXgtYnV0dG9uKSkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1pdGVtLXNwYWNpbmcsIHZhcigtLXNwYWNpbmcteHhzKSk7XG5cbiAgICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtZG93bikge1xuICAgICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1zcGFjaW5nLWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiAubXgtbmF2LS1yZXZlcnNlIC5teC1uYXZfX2xldmVsLTIgdWwge1xuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiBjYWxjKHZhcigtLWRyb3Bkb3duLXdpZHRoLCAyNzBweCkgKiAtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpIDAgMCB2YXIoLS1ib3JkZXItcmFkaXVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ== */
396
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9uYXZpZ2F0aW9uLmNzcyIsIl9uYXZpZ2F0aW9uLWNvbGxhcHNpYmxlLmNzcyIsIl9uYXZpZ2F0aW9uLWRyb3Bkb3duLmNzcyIsIl9uYXZpZ2F0aW9uLW1lZ2EuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFOztBQUVGO0lBRUk7O01BRUUsYUFBYTtNQUNiLHNCQUFzQjtNQUN0QixxQkFBcUI7TUFDckIsdUJBQXVCO01BQ3ZCLGlEQUFpRDtJQUNuRDs7SUFFQTtNQUNFLDJCQUEyQjs7TUFFM0IsMEJBQWdEOztNQUFoRCxnREFBZ0Q7SUFLbEQ7O01BSEU7UUFDRSwrQkFBNEQ7UUFBNUQsNERBQTREO01BQzlEO0lBS0Y7O01BRUUsbUJBQW1CO01BQ25CLG1CQUFtQjtNQUNuQixxQ0FBcUM7SUFDdkM7O0VBR0Y7SUFDRSxpRkFBaUI7SUFBakIsbUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixTQUFTO0lBQ1Qsd0JBQWdCO09BQWhCLHFCQUFnQjtZQUFoQixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCOzs7S0FHQztJQUNELDZCQUE2QjtJQUM3Qiw0QkFBNEI7SUFDNUIsdUJBQTBDO0lBQTFDLDBDQUEwQztJQUMxQyxtQkFBbUI7SUFDbkIsZUFBZTtFQUNqQjtJQUdFO01BQ0UseUJBQXlCO0lBQzNCO0FBRUo7O0FDekRBOztFQUVFOztBQUVGO0lBRUk7TUFDRSxxQ0FBcUM7SUFLdkM7O01BSEU7SUFIRjtRQUlJLGNBQWM7SUFFbEI7TUFERTs7SUFHRjtNQUNFLGtCQUFrQjtJQW1CcEI7O01BakJFO1FBQ0Usb0NBQW9DO01BQ3RDOztNQUVBO1FBQ0UsY0FBYztRQUNkLGNBQWM7UUFDZDtrREFDMEM7UUFEMUM7a0RBQzBDO1FBQzFDLHNEQUFzRDtRQUN0RDtpREFDeUM7TUFLM0M7O1FBSEU7VUFDRSxvQkFBb0I7UUFDdEI7O0lBSUo7TUFDRSwwQkFBMEI7SUFLNUI7O01BSEU7O0lBSEY7UUFJSSwwQkFBMEI7SUFFOUI7TUFERTs7SUFHRjtNQUNF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InNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTmF2aWdhdGlvblxuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmF0b21zIHtcbiAgLm14LW5hdiB7XG4gICAgJjp3aGVyZSg6bm90KDpoYXModWwpKSksXG4gICAgdWwge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbmF2LWZvbnQtc2l6ZSwgdmFyKC0tZm9udC1zaXplKSk7XG4gICAgfVxuXG4gICAgJiBhW2hyZWZdIHtcbiAgICAgIC0tbGluay1jb2xvdXI6IGN1cnJlbnRjb2xvcjtcblxuICAgICAgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHZhcigtLW5hdi11bmRlcmxpbmUsIG5vbmUpO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHZhcigtLW5hdi1hY3RpdmUtdW5kZXJsaW5lLCB1bmRlcmxpbmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5teC1uYXYtLWlubGluZSB7XG4gICAgJjp3aGVyZSg6bm90KDpoYXModWwpKSksXG4gICAgPiB1bCB7XG4gICAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogdmFyKC0tbmF2LWdhcCwgdmFyKC0tc3BhY2luZy1zKSk7XG4gICAgfVxuICB9XG5cbiAgLm14LW5hdl9fdG9nZ2xlIHtcbiAgICBiYWNrZ3JvdW5kOiB1bnNldDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjb2xvcjogdmFyKFxuICAgICAgLS10b2dnbGUtZm9yZWdyb3VuZCxcbiAgICAgIHZhcigtLWZvcmVncm91bmQsIHZhcigtLWNvbG91ci1mb3JlZ3JvdW5kKSlcbiAgICApO1xuICAgIGlubGluZS1zaXplOiB2YXIoLS1zcGFjaW5nLWwpO1xuICAgIGJsb2NrLXNpemU6IHZhcigtLXNwYWNpbmctbCk7XG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IHZhcigtLXRvZ2dsZS10b3AsIDEycHgpO1xuICAgIGluc2V0LWlubGluZS1lbmQ6IDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLm14LW5hdi0tb3BlbiB7XG4gICAgJiA+IC5teC1uYXZfX3RvZ2dsZTo6YmVmb3JlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIENvbGxhcHNpYmxlIE5hdmlnYXRpb25cbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5jb21wb25lbnRzIHtcbiAgLm14LW5hdi0tY29sbGFwc2libGUge1xuICAgICYgLm14LW5hdl9fdG9nZ2xlIHtcbiAgICAgIGluc2V0LWlubGluZTogYXV0byB2YXIoLS1zcGFjaW5nLXh4cyk7XG5cbiAgICAgIEBtZWRpYSAoLS1tZWRpdW0tdXApIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiB1bCBsaSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICY6aGFzKFthcmlhLWN1cnJlbnQ9XCJwYWdlXCJdLCAuaXMtYWN0aXZlKSA+IGEge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgICB9XG5cbiAgICAgICYgYSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogdmFyKC0tbGluZS13aWR0aCwgMXB4KSBzb2xpZFxuICAgICAgICAgIHZhcigtLWxpbmUtY29sb3VyLCB2YXIoLS1jb2xvdXItYm9yZGVyKSk7XG4gICAgICAgIHBhZGRpbmctYmxvY2s6IHZhcigtLWl0ZW0tc3BhY2luZywgdmFyKC0tc3BhY2luZy14eHMpKTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWluZGVudCwgdmFyKC0tc3BhY2luZy14eHMpKVxuICAgICAgICAgIHZhcigtLWl0ZW0tc3BhY2luZywgdmFyKC0tc3BhY2luZy14eHMpKTtcblxuICAgICAgICAmOmlzKDpmb2N1cywgOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYgLm14LW5hdl9fbGV2ZWwtMiA+IGxpID4gYSB7XG4gICAgICAtLWluZGVudDogdmFyKC0tc3BhY2luZy1zKTtcblxuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgLS1pbmRlbnQ6IHZhcigtLXNwYWNpbmctbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiAubXgtbmF2X19sZXZlbC0zID4gbGkgPiBhIHtcbiAgICAgIC0taW5kZW50OiB2YXIoLS1zcGFjaW5nLW0pO1xuXG4gICAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgICAtLWluZGVudDogdmFyKC0tc3BhY2luZy1sKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmIDppcyhbYXJpYS1jdXJyZW50PVwicGFnZVwiXSwgLmlzLWFjdGl2ZSA+IGEpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcihcbiAgICAgICAgLS1uYXYtYWN0aXZlLWJhY2tncm91bmQsXG4gICAgICAgIHZhcigtLWJhY2tncm91bmQsIHZhcigtLWNvbG91ci1iYWNrZ3JvdW5kLWFsdCkpXG4gICAgICApO1xuICAgICAgY29sb3I6IHZhcigtLW5hdi1hY3RpdmUtZm9yZWdyb3VuZCwgaW5oZXJpdCk7XG4gICAgfVxuXG4gICAgJiBsaSA+IHVsIHtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIHRyYW5zZm9ybSAwLjJzIHZhcigtLWVhc2UpLFxuICAgICAgICBvcGFjaXR5IDAuOHMgdmFyKC0tZWFzZSk7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3A7XG4gICAgICB3aWxsLWNoYW5nZTogYmxvY2stc2l6ZTtcblxuICAgICAgJltpbmVydF0ge1xuICAgICAgICBibG9jay1zaXplOiAwO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgwKTtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMC44cyB2YXIoLS1lYXNlKSxcbiAgICAgICAgICBvcGFjaXR5IDAuMnMgdmFyKC0tZWFzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiBsaTppcygubXgtbmF2X19oYXMtc3VibmF2LCA6aGFzKD4gdWwpKSA+IGEge1xuICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1zcGFjaW5nLWwpO1xuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBEcm9wZG93biBOYXZpZ2F0aW9uXG4gKi9cblxuQGxheWVyIGRlc2lnbi1zeXN0ZW0uY29tcG9uZW50cyB7XG4gIC5teC1uYXYtLWRyb3Bkb3duIHtcbiAgICAtLW5hdi1hY3RpdmUtdW5kZXJsaW5lOiBub25lO1xuXG4gICAgbWFyZ2luLWJsb2NrOiB2YXIoLS1zcGFjaW5nLW0pO1xuXG4gICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgIG1hcmdpbi1ibG9jazogMDtcbiAgICB9XG5cbiAgICAmIGxpIHtcbiAgICAgIG1hcmdpbjogMDtcblxuICAgICAgJjppcygubXgtbmF2X19oYXMtc3VibmF2LCA6aGFzKD4gdWwpKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAmID4gYSB7XG4gICAgICAgICAgLS10b2dnbGUtZ2FwOiB2YXIoLS1zcGFjaW5nLWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiBhIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAmW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdIHtcbiAgICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoXG4gICAgICAgICAgICAtLW5hdi1leHBhbmRlZC1iYWNrZ3JvdW5kLFxuICAgICAgICAgICAgdmFyKC0tYmFja2dyb3VuZCwgdmFyKC0tY29sb3VyLWJhY2tncm91bmQtYWx0KSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXYtZXhwYW5kZWQtZm9yZWdyb3VuZCwgaW5oZXJpdCk7XG5cbiAgICAgICAgICAmICsgLm5hdl9fdG9nZ2xlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXYtZXhwYW5kZWQtZm9yZWdyb3VuZCwgaW5oZXJpdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICYgbGkgPiB1bCB7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAwLjJzIG9wYWNpdHkgdmFyKC0tZWFzZSksXG4gICAgICAgIDAuMnMgdmlzaWJpbGl0eSB2YXIoLS1lYXNlKTtcblxuICAgICAgJltpbmVydF0ge1xuICAgICAgICBibG9jay1zaXplOiAwO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgMC4ycyBvcGFjaXR5IHZhcigtLWVhc2UpLFxuICAgICAgICAgIDAuMnMgdmlzaWJpbGl0eSB2YXIoLS1lYXNlKTtcblxuICAgICAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgICAgIGJsb2NrLXNpemU6IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmIC5teC1uYXZfX2xldmVsLTEge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIGZsZXgtZmxvdzogcm93O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICB9XG5cbiAgICAgICYgPiBsaSB7XG4gICAgICAgIGJvcmRlci1ibG9jay1zdGFydDogdmFyKC0tbGluZS13aWR0aCwgMXB4KSBzb2xpZFxuICAgICAgICAgIHZhcigtLWxpbmUtY29sb3VyLCB2YXIoLS1jb2xvdXItYm9yZGVyKSk7XG5cbiAgICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgICBib3JkZXItYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmID4gYTp3aGVyZSg6bm90KC5idXR0b24pKSB7XG4gICAgICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0taXRlbS1zcGFjaW5nLCB2YXIoLS1zcGFjaW5nLXh4cykpO1xuICAgICAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKFxuICAgICAgICAgICAgLS10b2dnbGUtZ2FwLFxuICAgICAgICAgICAgdmFyKC0taXRlbS1zcGFjaW5nLCB2YXIoLS1zcGFjaW5nLXh4cykpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taXRlbS1zcGFjaW5nLCB2YXIoLS1zcGFjaW5nLXh4cykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYgLm14LW5hdl9fbGV2ZWwtMiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogMDtcbiAgICAgIGlubGluZS1zaXplOiAxMDAlO1xuICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICBAbWVkaWEgKC0tZ2xvYmFsLW5hdi11cCkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGlubGluZS1zaXplOiB2YXIoLS1kcm9wZG93bi13aWR0aCwgMjcwcHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKFxuICAgICAgICAgIC0tbmF2LWV4cGFuZGVkLWJhY2tncm91bmQsXG4gICAgICAgICAgdmFyKC0tYmFja2dyb3VuZCwgdmFyKC0tY29sb3VyLWJhY2tncm91bmQtYWx0KSlcbiAgICAgICAgKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW5hdi1leHBhbmRlZC1mb3JlZ3JvdW5kLCBpbmhlcml0KTtcblxuICAgICAgICAmIC5teC1uYXZfX3RvZ2dsZTo6YmVmb3JlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYgPiBsaSB7XG4gICAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LWRvd24pIHtcbiAgICAgICAgICBib3JkZXItYmxvY2stc3RhcnQ6IHZhcigtLWxpbmUtd2lkdGgsIDFweCkgc29saWRcbiAgICAgICAgICAgIHZhcigtLWxpbmUtY29sb3VyLCB2YXIoLS1jb2xvdXItYm9yZGVyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAmID4gYSB7XG4gICAgICAgICAgJjp3aGVyZSg6bm90KC5idXR0b24pKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1pdGVtLXNwYWNpbmcsIHZhcigtLXNwYWNpbmcteHhzKSk7XG5cbiAgICAgICAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LWRvd24pIHtcbiAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLXNwYWNpbmctbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiAubXgtbmF2LS1yZXZlcnNlIC5uYXZfX2xldmVsLTIge1xuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgaW5zZXQtaW5saW5lOiBhdXRvIDA7XG5cbiAgICAgICAgJiAubXgtbmF2X190b2dnbGU6OmJlZm9yZSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiAubXgtbmF2X19zZXBhcmF0b3Ige1xuICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiB2YXIoLS1saW5lLXdpZHRoLCAxcHgpIHNvbGlkXG4gICAgICAgIHZhcigtLWxpbmUtY29sb3VyLCB2YXIoLS1jb2xvdXItYm9yZGVyKSk7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIERyb3Bkb3duIE5hdmlnYXRpb24gLSBNZWdhIE5hdlxuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmNvbXBvbmVudHMge1xuICAubXgtbmF2LS1tZWdhLW5hdiB7XG4gICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtZG93bikge1xuICAgICAgbWF4LWJsb2NrLXNpemU6IDEwMCU7XG4gICAgICBvdmVyZmxvdzogYXV0bztcbiAgICB9XG5cbiAgICAmIC5teC1uYXZfX2xldmVsLTIgdWwge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0tc3BhY2luZy1sKTtcbiAgICAgIGJvcmRlci1ibG9jay1zdGFydDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvdXIpO1xuICAgICAgaW5saW5lLXNpemU6IDEwMCU7XG5cbiAgICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiB2YXIoLS1kcm9wZG93bi13aWR0aCwgMjcwcHgpO1xuICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICAgICAgaW5saW5lLXNpemU6IHZhcigtLWRyb3Bkb3duLXdpZHRoLCAyNzBweCk7XG4gICAgICAgIG1pbi1ibG9jay1zaXplOiAxMDAlO1xuICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDtcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLWJvcmRlci1yYWRpdXMpIHZhcigtLWJvcmRlci1yYWRpdXMpIDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcihcbiAgICAgICAgICAtLWV4cGFuZGVkLWJhY2tncm91bmQsXG4gICAgICAgICAgdmFyKC0tY29sb3VyLWJhY2tncm91bmQtYWx0KVxuICAgICAgICApO1xuICAgICAgICBjb2xvcjogdmFyKC0tZXhwYW5kZWQtZm9yZWdyb3VuZCwgaW5oZXJpdCk7XG4gICAgICB9XG5cbiAgICAgICYgPiBsaSA+IGE6d2hlcmUoOm5vdCgubXgtYnV0dG9uKSkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1pdGVtLXNwYWNpbmcsIHZhcigtLXNwYWNpbmcteHhzKSk7XG5cbiAgICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtZG93bikge1xuICAgICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1zcGFjaW5nLWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiAubXgtbmF2LS1yZXZlcnNlIC5teC1uYXZfX2xldmVsLTIgdWwge1xuICAgICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiBjYWxjKHZhcigtLWRyb3Bkb3duLXdpZHRoLCAyNzBweCkgKiAtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpIDAgMCB2YXIoLS1ib3JkZXItcmFkaXVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ== */
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.10",
4
+ "version": "0.0.12",
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\"",
@@ -32,7 +32,7 @@
32
32
  "dependencies": {
33
33
  "@floating-ui/dom": "^1.6.5",
34
34
  "@oddbird/popover-polyfill": "^0.4.3",
35
- "@pnx-mixtape/ids-shape": "^0.0.16",
35
+ "@pnx-mixtape/ids-shape": "^0.0.18",
36
36
  "classnames": "^2.5.1",
37
37
  "js-cookie": "^3.0.5",
38
38
  "react": "^18.3.1",
@@ -5,7 +5,7 @@
5
5
  @layer design-system.atoms {
6
6
  .mx-button {
7
7
  --outline-offset: 1px;
8
- --outline-width: 4px;
8
+ --outline-width: 2px;
9
9
 
10
10
  display: inline-flex;
11
11
  inline-size: fit-content;
@@ -4,7 +4,7 @@
4
4
  type ? baseClass~'--'~type : null,
5
5
  align ? baseClass~'--'~align : null,
6
6
  ] %}
7
- {% set attributes = attributes ?? create_attribute().addClass(classes) %}
7
+ {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
8
8
 
9
9
  <figure{{ attributes }}>
10
10
  {{ item }}
@@ -1,4 +1,4 @@
1
- {% set attributes = attributes ?? create_attribute().addClass("mx-video") %}
1
+ {% set attributes = (attributes ?? create_attribute()).addClass("mx-video") %}
2
2
  <figure{{ attributes }}>
3
3
  <iframe
4
4
  src="{{ src }}"
@@ -0,0 +1 @@
1
+ import "./Elements/Filters"
@@ -40,6 +40,10 @@
40
40
  }
41
41
  }
42
42
  }
43
+
44
+ &:focus-visible {
45
+ outline-offset: -2px;
46
+ }
43
47
  }
44
48
 
45
49
  & li > ul {
@@ -1,25 +1,27 @@
1
1
  import { Meta, StoryObj } from "@storybook/html"
2
2
  import Component from "./header.twig"
3
- import StackedComponent from "./header-stacked.twig"
4
- import Icon from "../../Atom/Icon/icon.twig"
5
- import Logo from "../Header/twig/logo.twig"
6
- import SearchForm from "../../Form/Search/search-form.twig"
7
- import InputText from "../../Form/TextInput/input-text.twig"
8
- import Button from "../../Atom/Button/button.twig"
9
- import Navigation from "../../Component/Navigation/navigation.twig"
10
3
  import "./_header.css"
11
4
  import "./_toggles.css"
12
5
  import "./Elements/GlobalToggle"
13
- import "../../Component/Navigation/Elements/Navigation"
14
- import {
15
- ButtonTypes,
16
- Header as HeaderType,
17
- InputTypeTypes,
18
- } from "@pnx-mixtape/ids-shape"
6
+ import { ButtonTypes, Header as HeaderType } from "@pnx-mixtape/ids-shape"
19
7
  import { Page } from "../../../.storybook/decorators"
20
8
  import { Icons } from "../../enums"
21
9
 
22
- const meta: Meta<HeaderType> = {
10
+ // Deps.
11
+ import Icon from "../../Atom/Icon/icon.twig"
12
+ import Logo from "../Header/twig/logo.twig"
13
+ import Button from "../../Atom/Button/button.twig"
14
+ import Navigation from "../../Component/Navigation/navigation.twig"
15
+ // js.
16
+ import "../../Component/Navigation/Elements/Navigation"
17
+ // css.
18
+ import "../../Component/Navigation/navigation.css"
19
+
20
+ type MxHeaderType = HeaderType & {
21
+ stacked: boolean
22
+ }
23
+
24
+ const meta: Meta<MxHeaderType> = {
23
25
  tags: ["autodocs", "ids-mvp"],
24
26
  component: Component,
25
27
  args: {
@@ -64,6 +66,7 @@ const meta: Meta<HeaderType> = {
64
66
  deepControls: { enabled: true },
65
67
  },
66
68
  argTypes: {
69
+ stacked: { control: "boolean" },
67
70
  title: { control: "text" },
68
71
  description: { control: "text" },
69
72
  // @ts-expect-error The controls follow the shape
@@ -75,7 +78,7 @@ const meta: Meta<HeaderType> = {
75
78
  }
76
79
 
77
80
  export default meta
78
- type Story = StoryObj<HeaderType>
81
+ type Story = StoryObj<MxHeaderType>
79
82
 
80
83
  export const Header: Story = {}
81
84
 
@@ -88,24 +91,7 @@ export const WithTitle: Story = {
88
91
 
89
92
  export const Search: Story = {
90
93
  args: {
91
- search: SearchForm({
92
- action: "#search",
93
- input: InputText({
94
- id: "search-keyword",
95
- type: InputTypeTypes.SEARCH,
96
- name: "search-form",
97
- placeholder: "Keywords...",
98
- label: "Search by keywords",
99
- }),
100
- button: Button({
101
- title: "Search",
102
- iconOnly: true,
103
- iconStart: Icon({
104
- icon: Icons.SEARCH,
105
- }),
106
- as: ButtonTypes.SUBMIT,
107
- }),
108
- }),
94
+ search: "#search",
109
95
  },
110
96
  }
111
97
 
@@ -125,24 +111,8 @@ export const Controls: Story = {
125
111
 
126
112
  export const Stacked: Story = {
127
113
  args: {
128
- search: SearchForm({
129
- action: "#search",
130
- input: InputText({
131
- id: "search-keyword",
132
- type: InputTypeTypes.SEARCH,
133
- name: "search-form",
134
- placeholder: "Keywords...",
135
- label: "Search by keywords",
136
- }),
137
- button: Button({
138
- title: "Search",
139
- iconOnly: true,
140
- iconStart: Icon({
141
- icon: Icons.SEARCH,
142
- }),
143
- as: ButtonTypes.SUBMIT,
144
- }),
145
- }),
114
+ stacked: true,
115
+ search: "#search",
146
116
  controls: [
147
117
  Button({
148
118
  as: ButtonTypes.BUTTON,
@@ -248,5 +218,4 @@ export const Stacked: Story = {
248
218
  ],
249
219
  }),
250
220
  },
251
- render: args => `${StackedComponent(args)}`,
252
221
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  exports[`Layout/Header Controls smoke-test 1`] = `
4
4
  <div class="mx-page">
5
- <header class="mx-header mx-section mx-section--s">
5
+ <header class="mx-header mx-section__full mx-page mx-section--s">
6
6
  <div class="mx-header__inner">
7
7
  <div class="mx-header__brand">
8
8
  <a class="mx-logo"
@@ -77,7 +77,7 @@ exports[`Layout/Header Controls smoke-test 1`] = `
77
77
 
78
78
  exports[`Layout/Header Header smoke-test 1`] = `
79
79
  <div class="mx-page">
80
- <header class="mx-header mx-section mx-section--s">
80
+ <header class="mx-header mx-section__full mx-page mx-section--s">
81
81
  <div class="mx-header__inner">
82
82
  <div class="mx-header__brand">
83
83
  <a class="mx-logo"
@@ -143,7 +143,7 @@ exports[`Layout/Header Header smoke-test 1`] = `
143
143
 
144
144
  exports[`Layout/Header Search smoke-test 1`] = `
145
145
  <div class="mx-page">
146
- <header class="mx-header mx-section mx-section--s">
146
+ <header class="mx-header mx-section__full mx-page mx-section--s">
147
147
  <div class="mx-header__inner">
148
148
  <div class="mx-header__brand">
149
149
  <a class="mx-logo"
@@ -228,7 +228,7 @@ exports[`Layout/Header Search smoke-test 1`] = `
228
228
  <button class="mx-button mx-button--icon-only"
229
229
  type="submit"
230
230
  >
231
- <span class="mx-icon mx-icon--search ">
231
+ <span class="mx-icon mx-icon--search">
232
232
  </span>
233
233
  <span class="sr-only">
234
234
  Search
@@ -244,7 +244,7 @@ exports[`Layout/Header Search smoke-test 1`] = `
244
244
 
245
245
  exports[`Layout/Header Stacked smoke-test 1`] = `
246
246
  <div class="mx-page">
247
- <header class="mx-header mx-section mx-section--s">
247
+ <header class="mx-header mx-section__full mx-page mx-section--s">
248
248
  <div class="mx-header__inner">
249
249
  <div class="mx-header__brand">
250
250
  <a class="mx-logo"
@@ -273,38 +273,40 @@ exports[`Layout/Header Stacked smoke-test 1`] = `
273
273
  </button>
274
274
  </mx-global-toggle>
275
275
  </div>
276
- <div id="unique-0"
277
- class="mx-header__search"
278
- aria-label="Search"
279
- role="region"
280
- >
281
- <form class="mx-form mx-form--inline-button"
282
- role="search"
283
- action="#search"
276
+ <div class="mx-header__main">
277
+ <div id="unique-0"
278
+ class="mx-header__search"
279
+ aria-label="Search"
280
+ role="region"
284
281
  >
285
- <input class="mx-input__text "
286
- id="search-keyword"
287
- name="search-form"
288
- type="search"
289
- value
290
- aria-label="Search by keywords"
291
- placeholder="Keywords..."
292
- >
293
- <button class="mx-button mx-button--icon-only"
294
- type="submit"
282
+ <form class="mx-form mx-form--inline-button"
283
+ role="search"
284
+ action="#search"
295
285
  >
296
- <span class="mx-icon mx-icon--search ">
297
- </span>
298
- <span class="sr-only">
299
- Search
300
- </span>
301
- </button>
302
- </form>
286
+ <input class="mx-input__text "
287
+ id="search-keyword"
288
+ name="search-form"
289
+ type="search"
290
+ value
291
+ aria-label="Search by keywords"
292
+ placeholder="Keywords..."
293
+ >
294
+ <button class="mx-button mx-button--icon-only"
295
+ type="submit"
296
+ >
297
+ <span class="mx-icon mx-icon--search">
298
+ </span>
299
+ <span class="sr-only">
300
+ Search
301
+ </span>
302
+ </button>
303
+ </form>
304
+ </div>
303
305
  </div>
304
306
  </div>
305
307
  </header>
306
308
  <div id="unique-1"
307
- class="mx-header__nav mx-section"
309
+ class="mx-header__nav mx-section__full mx-page"
308
310
  aria-label="Primary navigation"
309
311
  role="region"
310
312
  >
@@ -450,7 +452,7 @@ exports[`Layout/Header Stacked smoke-test 1`] = `
450
452
 
451
453
  exports[`Layout/Header WithTitle smoke-test 1`] = `
452
454
  <div class="mx-page">
453
- <header class="mx-header mx-section mx-section--s">
455
+ <header class="mx-header mx-section__full mx-page mx-section--s">
454
456
  <div class="mx-header__inner">
455
457
  <div class="mx-header__brand">
456
458
  <a class="mx-logo"
@@ -7,6 +7,7 @@
7
7
  position: relative;
8
8
  display: grid;
9
9
  grid-template-columns: 1fr auto;
10
+ align-items: center;
10
11
  }
11
12
 
12
13
  .mx-header__brand {
@@ -51,6 +52,7 @@
51
52
 
52
53
  .mx-header__search {
53
54
  position: absolute;
55
+ z-index: 2;
54
56
  inset-block-start: 2px;
55
57
  inset-inline-start: 0;
56
58
  inline-size: 100%;
@@ -73,7 +75,9 @@
73
75
  }
74
76
 
75
77
  & input {
76
- max-inline-size: 150px;
78
+ @media (--global-nav-up) {
79
+ max-inline-size: 150px;
80
+ }
77
81
  }
78
82
  }
79
83
 
@@ -81,11 +85,19 @@
81
85
  * Primary Header Stacked
82
86
  */
83
87
  .mx-header__nav-inner {
84
- display: flex;
88
+ @media (--global-nav-up) {
89
+ display: flex;
90
+ }
85
91
  }
86
92
 
87
93
  .mx-header__nav-right {
88
- margin-inline-start: auto;
94
+ margin-block: var(--spacing-m);
95
+
96
+ @media (--global-nav-up) {
97
+ margin-inline-start: auto;
98
+ margin-block: 0;
99
+ padding-block: 4px;
100
+ }
89
101
  }
90
102
  }
91
103
 
@@ -1,7 +1,8 @@
1
1
  {% set baseClass = 'mx-header' %}
2
2
  {% set classes = [
3
3
  baseClass,
4
- 'mx-section',
4
+ 'mx-section__full',
5
+ 'mx-page',
5
6
  'mx-section--s',
6
7
  ] %}
7
8
  {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
@@ -29,19 +30,41 @@
29
30
  </div>
30
31
  {% endif %}
31
32
  <div class="mx-header__main">
32
- {% if navigation is not empty %}
33
+ {% if navigation is not empty and not stacked %}
33
34
  <div id="primary-nav" class="mx-header__nav global-nav-up-only" aria-label="Primary navigation">
34
35
  {{ navigation }}
35
36
  </div>
36
37
  {% endif %}
37
38
  {% if search is not empty %}
38
39
  <div id="primary-search" class="mx-header__search global-nav-up-only" aria-label="Search">
39
- {{ search }}
40
+ <form class="mx-form mx-form--inline-button" role="search" action="{{ search }}">
41
+ <input class="mx-input__text " id="search-keyword" name="search-form" type="search" value="" aria-label="Search by keywords" placeholder="Keywords..." />
42
+ <button class="mx-button mx-button--icon-only" type="submit">
43
+ <span class="mx-icon mx-icon--search"></span>
44
+ <span class="sr-only">Search</span>
45
+ </button>
46
+ </form>
40
47
  </div>
41
48
  {% endif %}
42
- {% for control in controls %}
43
- {{ controls }}
44
- {% endfor %}
49
+ {% if not stacked %}
50
+ {% for control in controls %}
51
+ {{ control }}
52
+ {% endfor %}
53
+ {% endif %}
45
54
  </div>
46
55
  </div>
47
56
  </header>
57
+ {% if stacked and (navigation is not empty or controls is not empty) %}
58
+ <div id="primary-nav" class="mx-header__nav mx-section__full mx-page global-nav-up-only" aria-label="Primary navigation">
59
+ <div class="mx-header__nav-inner">
60
+ {{ navigation }}
61
+ {% if controls is not empty %}
62
+ <div class="mx-header__nav-right">
63
+ {% for control in controls %}
64
+ {{ control }}
65
+ {% endfor %}
66
+ </div>
67
+ {% endif %}
68
+ </div>
69
+ </div>
70
+ {% endif %}
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=steps.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"steps.entry.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
File without changes
@@ -1,51 +0,0 @@
1
- {% set baseClass = 'mx-header' %}
2
- {% set classes = [
3
- baseClass,
4
- 'mx-section',
5
- 'mx-section--s',
6
- ] %}
7
- {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
8
- <header{{ attributes }}>
9
- <div class="mx-header__inner">
10
- {% if logo is not empty or title is not empty or description is not empty %}
11
- <div class="mx-header__brand">
12
- <a class="mx-logo" href="/">{{ logo }}</a>
13
- {% if title is not empty or description is not empty %}
14
- <div class="mx-header__name">
15
- {% if title is not empty %}<strong>{{ title }}</strong>{% endif %}
16
- {{ description }}
17
- </div>
18
- {% endif %}
19
- </div>
20
- {% endif %}
21
- {% if navigation is not empty or search is not empty %}
22
- <div class="mx-header__toggles">
23
- {% if search is not empty %}
24
- <mx-global-toggle hideMenu><button aria-controls="primary-search" class="mx-button mx-button--icon-only mx-icon mx-icon--search" disabled>Open Search</button></mx-global-toggle>
25
- {% endif %}
26
- {% if navigation is not empty %}
27
- <mx-global-toggle><button aria-controls="primary-nav" class="mx-button mx-button--dark mx-button--icon-only mx-icon mx-icon--menu" disabled>Open Menu</button></mx-global-toggle>
28
- {% endif %}
29
- </div>
30
- {% endif %}
31
- {% if search is not empty %}
32
- <div id="primary-search" class="mx-header__search global-nav-up-only" aria-label="Search">
33
- {{ search }}
34
- </div>
35
- {% endif %}
36
- </div>
37
- </header>
38
- {% if navigation is not empty or controls is not empty %}
39
- <div id="primary-nav" class="mx-header__nav mx-section global-nav-up-only" aria-label="Primary navigation">
40
- <div class="mx-header__nav-inner">
41
- {{ navigation }}
42
- {% if controls is not empty %}
43
- <div class="mx-header__nav-right">
44
- {% for control in controls %}
45
- {{ controls }}
46
- {% endfor %}
47
- </div>
48
- {% endif %}
49
- </div>
50
- </div>
51
- {% endif %}