@pnx-mixtape/mxds 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/build/filters.css +105 -0
  2. package/dist/build/link-list.css +9 -36
  3. package/dist/build/masthead.css +24 -1
  4. package/dist/build/tag.css +5 -1
  5. package/package.json +1 -1
  6. package/src/Atom/Button/button.twig +1 -1
  7. package/src/Atom/Image/image.twig +4 -4
  8. package/src/Atom/InlineSvg/inline-svg.twig +24 -0
  9. package/src/Atom/Link/link.twig +1 -1
  10. package/src/Atom/LinkedImage/linked-image.twig +5 -0
  11. package/src/Atom/Media/media.twig +3 -3
  12. package/src/Atom/Video/video.twig +2 -2
  13. package/src/Component/Accordion/accordion-item.twig +1 -1
  14. package/src/Component/Accordion/accordion.css +10 -14
  15. package/src/Component/Accordion/accordion.twig +1 -1
  16. package/src/Component/Card/Card.stories.ts +26 -14
  17. package/src/Component/Card/__snapshots__/Card.stories.ts.snap +18 -12
  18. package/src/Component/Card/card.twig +5 -5
  19. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +9 -45
  20. package/src/Component/ContentBlock/content-block.twig +2 -2
  21. package/src/Component/DropMenu/drop-menu.twig +1 -1
  22. package/src/Component/Filters/Elements/Filters.ts +157 -0
  23. package/src/Component/Filters/Filters.stories.ts +230 -0
  24. package/src/Component/Filters/__snapshots__/Filters.stories.ts.snap +435 -0
  25. package/src/Component/Filters/filter-item.twig +50 -0
  26. package/src/Component/Filters/filters.css +102 -0
  27. package/src/Component/Filters/filters.twig +49 -0
  28. package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.ts.snap +1 -3
  29. package/src/Component/GlobalAlert/global-alert.twig +3 -3
  30. package/src/Component/HeroBanner/HeroBanner.stories.ts +25 -11
  31. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +18 -12
  32. package/src/Component/HeroBanner/hero-banner.twig +3 -3
  33. package/src/Component/LinkList/LinkList.stories.ts +20 -6
  34. package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +18 -12
  35. package/src/Component/LinkList/link-list.css +7 -35
  36. package/src/Component/LinkList/link-list.twig +1 -5
  37. package/src/Component/ListItem/list-item.twig +4 -4
  38. package/src/Component/Navigation/menu.twig +4 -4
  39. package/src/Component/Navigation/navigation.twig +2 -2
  40. package/src/Component/Pagination/pagination-item.twig +1 -1
  41. package/src/Component/Pagination/pagination.twig +2 -2
  42. package/src/Component/SideNavigation/side-navigation.twig +4 -4
  43. package/src/Component/Tabs/tabs.twig +1 -1
  44. package/src/Component/Tag/tag.css +4 -0
  45. package/src/Form/Checkbox/input-checkbox.twig +1 -1
  46. package/src/Form/Form/form.twig +2 -2
  47. package/src/Form/FormItem/form-item.twig +1 -1
  48. package/src/Form/Select/input-select.twig +1 -1
  49. package/src/Form/TextInput/input-text.twig +1 -1
  50. package/src/Form/Textarea/input-textarea.twig +1 -1
  51. package/src/Layout/Footer/Footer.stories.ts +0 -1
  52. package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +20 -40
  53. package/src/Layout/Footer/footer.twig +3 -3
  54. package/src/Layout/Header/Header.stories.ts +0 -1
  55. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +5 -5
  56. package/src/Layout/Header/header-stacked.twig +13 -11
  57. package/src/Layout/Header/header.twig +12 -10
  58. package/src/Layout/Header/twig/logo.twig +1 -3
  59. package/src/Layout/Masthead/Masthead.stories.ts +10 -0
  60. package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +51 -3
  61. package/src/Layout/Masthead/masthead.css +23 -0
  62. package/src/Layout/Masthead/masthead.twig +9 -5
  63. package/src/Layout/Section/section.twig +1 -1
  64. package/src/Layout/Sidebar/sidebar.twig +5 -5
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Filters
3
+ */
4
+
5
+ @layer design-system.components {
6
+ .mx-filters {
7
+ display: grid;
8
+ grid-gap: var(--gap);
9
+ gap: var(--gap);
10
+ }
11
+
12
+ .mx-filters__title {
13
+ --heading-font-size: var(--font-size-l);
14
+ --font-min: calc(
15
+ var(--heading-font-size) - var(--heading-font-size) *
16
+ var(--font-size-diff, 0.3)
17
+ );
18
+
19
+ font-weight: var(--font-weight-bold);
20
+ font-size: clamp(
21
+ max(var(--base-font-size), var(--font-min)),
22
+ var(--font-min) + 1cqi,
23
+ var(--heading-font-size)
24
+ );
25
+ display: flex;
26
+ gap: var(--spacing-s);
27
+ align-items: center;
28
+ min-block-size: 40px;
29
+ }
30
+
31
+ @media (min-width: 720px) {
32
+
33
+ .mx-filters__title {
34
+ pointer-events: none;
35
+ }
36
+ }
37
+
38
+ .mx-filters__title .mx-icon {
39
+ margin-inline-start: auto;
40
+ }
41
+
42
+ @media (min-width: 720px) {
43
+
44
+ .mx-filters__title .mx-icon {
45
+ display: none;
46
+ }
47
+ }
48
+ @media (min-width: 720px) {
49
+
50
+ .mx-filters__title [data-counters] {
51
+ display: none;
52
+ }
53
+ }
54
+
55
+ .mx-filters__title.mx-accordion__toggle + .mx-filters__form {
56
+ padding-block-start: var(--block-padding, var(--gap));
57
+ }
58
+ .mx-filters__form .mx-accordion__toggle {
59
+ display: flex;
60
+ gap: var(--spacing-s);
61
+ align-items: center;
62
+ }
63
+
64
+ .mx-filters__form .mx-accordion__toggle .mx-icon {
65
+ margin-inline-start: auto;
66
+ }
67
+
68
+ .mx-filters__form .mx-accordion__content {
69
+ padding-block-start: var(--spacing-xxxs);
70
+ }
71
+ @media (max-width: 719.98px) {
72
+ .mx-filters--right .mx-filters__form {
73
+ background-color: var(--background, var(--colour-background));
74
+ padding-inline: var(
75
+ --gutter,
76
+ max(var(--spacing-s), min(6vw, var(--spacing-l)))
77
+ );
78
+ padding-block-end: var(--block-padding);
79
+ overflow-y: auto;
80
+ position: fixed;
81
+ z-index: 200;
82
+ inset-block: 0;
83
+ inset-inline: 0 -100vw;
84
+ transition: 0.15s ease-in-out;
85
+ visibility: hidden;
86
+ }
87
+
88
+ .mx-filters--right [open] .mx-filters__form {
89
+ inset-inline-end: 0;
90
+ visibility: visible;
91
+ }
92
+ }
93
+
94
+ @media (min-width: 720px) {
95
+ .mx-filters--right .mx-filters__form {
96
+ --block-padding: 0;
97
+ }
98
+
99
+ .mx-filters--right .mx-filters__form .mx-filters__title {
100
+ display: none;
101
+ }
102
+ }
103
+ }
104
+
105
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbHRlcnMuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztFQUVFOztBQUVGO0VBQ0U7SUFDRSxhQUFhO0lBQ2Isb0JBQWU7SUFBZixlQUFlO0VBQ2pCOztFQUVBO0lBQ0UsdUNBQXVDO0lBQ3ZDOzs7S0FHQzs7SUFFRCxvQ0FBb0M7SUFDcEM7Ozs7S0FJQztJQUNELGFBQWE7SUFDYixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLG9CQUFvQjtFQXVCdEI7O0lBckJFOztFQWxCRjtNQW1CSSxvQkFBb0I7RUFvQnhCO0lBbkJFOztJQUVBO01BQ0UseUJBQXlCO0lBSzNCOztNQUhFOztJQUhGO1FBSUksYUFBYTtJQUVqQjtNQURFO01BSUE7O0lBREY7UUFFSSxhQUFhO0lBRWpCO01BREU7O0lBR0Y7TUFDRSxxREFBcUQ7SUFDdkQ7SUFJQTtNQUNFLGFBQWE7TUFDYixxQkFBcUI7TUFDckIsbUJBQW1CO0lBS3JCOztNQUhFO1FBQ0UseUJBQXlCO01BQzNCOztJQUdGO01BQ0Usd0NBQXdDO0lBQzFDO0lBSUE7TUFDRTtRQUNFLDZEQUE2RDtRQUM3RDs7O1NBR0M7UUFDRCx1Q0FBdUM7UUFDdkMsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixZQUFZO1FBQ1osY0FBYztRQUNkLHNCQUFzQjtRQUN0Qiw2QkFBNkI7UUFDN0Isa0JBQWtCO01BQ3BCOztNQUVBO1FBQ0UsbUJBQW1CO1FBQ25CLG1CQUFtQjtNQUNyQjtJQUNGOztJQUVBO01BQ0U7UUFDRSxrQkFBa0I7TUFLcEI7O1FBSEU7VUFDRSxhQUFhO1FBQ2Y7SUFFSjtBQUVKIiwiZmlsZSI6ImZpbHRlcnMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaWx0ZXJzXG4gKi9cblxuQGxheWVyIGRlc2lnbi1zeXN0ZW0uY29tcG9uZW50cyB7XG4gIC5teC1maWx0ZXJzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tZ2FwKTtcbiAgfVxuXG4gIC5teC1maWx0ZXJzX190aXRsZSB7XG4gICAgLS1oZWFkaW5nLWZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWwpO1xuICAgIC0tZm9udC1taW46IGNhbGMoXG4gICAgICB2YXIoLS1oZWFkaW5nLWZvbnQtc2l6ZSkgLSB2YXIoLS1oZWFkaW5nLWZvbnQtc2l6ZSkgKlxuICAgICAgICB2YXIoLS1mb250LXNpemUtZGlmZiwgMC4zKVxuICAgICk7XG5cbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgZm9udC1zaXplOiBjbGFtcChcbiAgICAgIG1heCh2YXIoLS1iYXNlLWZvbnQtc2l6ZSksIHZhcigtLWZvbnQtbWluKSksXG4gICAgICB2YXIoLS1mb250LW1pbikgKyAxY3FpLFxuICAgICAgdmFyKC0taGVhZGluZy1mb250LXNpemUpXG4gICAgKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1zKTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi1ibG9jay1zaXplOiA0MHB4O1xuXG4gICAgQG1lZGlhICgtLW1lZGl1bS11cCkge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuXG4gICAgJiAubXgtaWNvbiB7XG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xuXG4gICAgICBAbWVkaWEgKC0tbWVkaXVtLXVwKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiBbZGF0YS1jb3VudGVyc10ge1xuICAgICAgQG1lZGlhICgtLW1lZGl1bS11cCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubXgtYWNjb3JkaW9uX190b2dnbGUgKyAubXgtZmlsdGVyc19fZm9ybSB7XG4gICAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1ibG9jay1wYWRkaW5nLCB2YXIoLS1nYXApKTtcbiAgICB9XG4gIH1cblxuICAubXgtZmlsdGVyc19fZm9ybSB7XG4gICAgJiAubXgtYWNjb3JkaW9uX190b2dnbGUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGdhcDogdmFyKC0tc3BhY2luZy1zKTtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICYgLm14LWljb24ge1xuICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICYgLm14LWFjY29yZGlvbl9fY29udGVudCB7XG4gICAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1zcGFjaW5nLXh4eHMpO1xuICAgIH1cbiAgfVxuXG4gIC5teC1maWx0ZXJzLS1yaWdodCB7XG4gICAgQG1lZGlhICgtLW1lZGl1bS1kb3duKSB7XG4gICAgICAmIC5teC1maWx0ZXJzX19mb3JtIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZCwgdmFyKC0tY29sb3VyLWJhY2tncm91bmQpKTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcihcbiAgICAgICAgICAtLWd1dHRlcixcbiAgICAgICAgICBjbGFtcCh2YXIoLS1zcGFjaW5nLXMpLCA2dncsIHZhcigtLXNwYWNpbmctbCkpXG4gICAgICAgICk7XG4gICAgICAgIHBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1ibG9jay1wYWRkaW5nKTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB6LWluZGV4OiAyMDA7XG4gICAgICAgIGluc2V0LWJsb2NrOiAwO1xuICAgICAgICBpbnNldC1pbmxpbmU6IDAgLTEwMHZ3O1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjE1cyBlYXNlLWluLW91dDtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAmIFtvcGVuXSAubXgtZmlsdGVyc19fZm9ybSB7XG4gICAgICAgIGluc2V0LWlubGluZS1lbmQ6IDA7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhICgtLW1lZGl1bS11cCkge1xuICAgICAgJiAubXgtZmlsdGVyc19fZm9ybSB7XG4gICAgICAgIC0tYmxvY2stcGFkZGluZzogMDtcblxuICAgICAgICAmIC5teC1maWx0ZXJzX190aXRsZSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19 */
@@ -8,16 +8,6 @@
8
8
  padding-inline-start: 0;
9
9
  }
10
10
 
11
- .mx-link-list a {
12
- display: block;
13
- text-decoration-line: none;
14
- color: inherit;
15
- }
16
-
17
- .mx-link-list a:hover {
18
- text-decoration-line: underline;
19
- }
20
-
21
11
  .mx-link-list li {
22
12
  min-block-size: var(--min-height, var(--spacing-xl));
23
13
  border-block-end: 1px solid
@@ -30,43 +20,26 @@
30
20
  border-block-end: 0;
31
21
  }
32
22
 
33
- .mx-link-list .mx-icon {
23
+ .mx-link-list a {
34
24
  position: relative;
35
25
  display: flex;
36
26
  align-items: center;
37
- padding-block: var(--spacing-xxxs);
27
+ padding-block: var(--vertical-padding, var(--spacing-xxxs));
38
28
  inline-size: 100%;
39
- gap: var(--spacing-s);
40
- }
41
-
42
- .mx-link-list .mx-icon::before {
43
- flex: 0 0 auto;
44
- -webkit-mask-position: left center;
45
- mask-position: left center;
46
- }
47
-
48
- .mx-link-list:where(:not(.mx-link-list--reverse)) .mx-icon {
49
29
  justify-content: space-between;
30
+ justify-content: var(--justify, space-between);
31
+ gap: var(--spacing-s);
32
+ text-decoration-line: none;
33
+ color: inherit;
50
34
  }
51
35
 
52
- .mx-link-list:where(:not(.mx-link-list--reverse)) .mx-icon::before {
53
- -webkit-mask-position: right center;
54
- mask-position: right center;
55
- order: 2;
36
+ .mx-link-list a:hover {
37
+ text-decoration-line: underline;
56
38
  }
57
- [dir="rtl"] .mx-link-list .mx-icon::before, .translated-rtl .mx-link-list .mx-icon::before {
58
- -webkit-mask-position: left center;
59
- mask-position: left center;
60
- }
61
-
62
- [dir="rtl"] .mx-link-list.mx-link-list--reverse .mx-icon::before, .translated-rtl .mx-link-list.mx-link-list--reverse .mx-icon::before {
63
- -webkit-mask-position: right center;
64
- mask-position: right center;
65
- }
66
39
 
67
40
  * + .mx-link-list {
68
41
  margin-block-start: var(--spacing-m);
69
42
  }
70
43
  }
71
44
 
72
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpbmstbGlzdC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FBRUY7RUFDRTtJQUNFLHFCQUFxQjtJQUNyQix1QkFBdUI7RUE0Q3pCOztJQTFDRTtNQUNFLGNBQWM7TUFDZCwwQkFBMEI7TUFDMUIsY0FBYztJQUtoQjs7TUFIRTtRQUNFLCtCQUErQjtNQUNqQzs7SUFHRjtNQUNFLG9EQUFvRDtNQUNwRDtnREFDMEM7TUFEMUM7Z0RBQzBDO0lBSzVDOztNQUhFO1FBQ0UsbUJBQW1CO01BQ3JCOztJQUdGO01BQ0Usa0JBQWtCO01BQ2xCLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsa0NBQWtDO01BQ2xDLGlCQUFpQjtNQUNqQixxQkFBcUI7SUFNdkI7O01BSkU7UUFDRSxjQUFjO1FBQ2Qsa0NBQTBCO2dCQUExQiwwQkFBMEI7TUFDNUI7O0lBR0Y7TUFDRSw4QkFBOEI7SUFNaEM7O01BSkU7UUFDRSxtQ0FBMkI7Z0JBQTNCLDJCQUEyQjtRQUMzQixRQUFRO01BQ1Y7SUFNRjtNQUNFLGtDQUEwQjtjQUExQiwwQkFBMEI7SUFDNUI7O0lBRUE7TUFDRSxtQ0FBMkI7Y0FBM0IsMkJBQTJCO0lBQzdCOztFQUdGO0lBQ0Usb0NBQW9DO0VBQ3RDO0FBQ0YiLCJmaWxlIjoibGluay1saXN0LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGluayBMaXN0XG4gKi9cblxuQGxheWVyIGRlc2lnbi1zeXN0ZW0uY29tcG9uZW50cyB7XG4gIC5teC1saW5rLWxpc3Qge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMDtcblxuICAgICYgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiBub25lO1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lO1xuICAgICAgfVxuICAgIH1cblxuICAgICYgbGkge1xuICAgICAgbWluLWJsb2NrLXNpemU6IHZhcigtLW1pbi1oZWlnaHQsIHZhcigtLXNwYWNpbmcteGwpKTtcbiAgICAgIGJvcmRlci1ibG9jay1lbmQ6IHZhcigtLWxpbmUtd2lkdGgsIDFweCkgc29saWRcbiAgICAgICAgdmFyKC0tbGluZS1jb2xvdXIsIHZhcigtLWNvbG91ci1ib3JkZXIpKTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmIC5teC1pY29uIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tc3BhY2luZy14eHhzKTtcbiAgICAgIGlubGluZS1zaXplOiAxMDAlO1xuICAgICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXMpO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgbWFzay1wb3NpdGlvbjogbGVmdCBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjp3aGVyZSg6bm90KC5teC1saW5rLWxpc3QtLXJldmVyc2UpKSAubXgtaWNvbiB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIG1hc2stcG9zaXRpb246IHJpZ2h0IGNlbnRlcjtcbiAgICAgICAgb3JkZXI6IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgW2Rpcj1cInJ0bFwiXSAubXgtbGluay1saXN0LFxuICAudHJhbnNsYXRlZC1ydGwgLm14LWxpbmstbGlzdCB7XG4gICAgJiAubXgtaWNvbjo6YmVmb3JlIHtcbiAgICAgIG1hc2stcG9zaXRpb246IGxlZnQgY2VudGVyO1xuICAgIH1cblxuICAgICYubXgtbGluay1saXN0LS1yZXZlcnNlIC5teC1pY29uOjpiZWZvcmUge1xuICAgICAgbWFzay1wb3NpdGlvbjogcmlnaHQgY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gICogKyAubXgtbGluay1saXN0IHtcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXNwYWNpbmctbSk7XG4gIH1cbn1cbiJdfQ== */
45
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpbmstbGlzdC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FBRUY7RUFDRTtJQUNFLHFCQUFxQjtJQUNyQix1QkFBdUI7RUEyQnpCOztJQXpCRTtNQUNFLG9EQUFvRDtNQUNwRDtnREFDMEM7TUFEMUM7Z0RBQzBDO0lBSzVDOztNQUhFO1FBQ0UsbUJBQW1CO01BQ3JCOztJQUdGO01BQ0Usa0JBQWtCO01BQ2xCLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsMkRBQTJEO01BQzNELGlCQUFpQjtNQUNqQiw4QkFBOEM7TUFBOUMsOENBQThDO01BQzlDLHFCQUFxQjtNQUNyQiwwQkFBMEI7TUFDMUIsY0FBYztJQUtoQjs7TUFIRTtRQUNFLCtCQUErQjtNQUNqQzs7RUFJSjtJQUNFLG9DQUFvQztFQUN0QztBQUNGIiwiZmlsZSI6ImxpbmstbGlzdC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExpbmsgTGlzdFxuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmNvbXBvbmVudHMge1xuICAubXgtbGluay1saXN0IHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG5cbiAgICAmIGxpIHtcbiAgICAgIG1pbi1ibG9jay1zaXplOiB2YXIoLS1taW4taGVpZ2h0LCB2YXIoLS1zcGFjaW5nLXhsKSk7XG4gICAgICBib3JkZXItYmxvY2stZW5kOiB2YXIoLS1saW5lLXdpZHRoLCAxcHgpIHNvbGlkXG4gICAgICAgIHZhcigtLWxpbmUtY29sb3VyLCB2YXIoLS1jb2xvdXItYm9yZGVyKSk7XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ibG9jay1lbmQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiBhIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZy1ibG9jazogdmFyKC0tdmVydGljYWwtcGFkZGluZywgdmFyKC0tc3BhY2luZy14eHhzKSk7XG4gICAgICBpbmxpbmUtc2l6ZTogMTAwJTtcbiAgICAgIGp1c3RpZnktY29udGVudDogdmFyKC0tanVzdGlmeSwgc3BhY2UtYmV0d2Vlbik7XG4gICAgICBnYXA6IHZhcigtLXNwYWNpbmctcyk7XG4gICAgICB0ZXh0LWRlY29yYXRpb24tbGluZTogbm9uZTtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAqICsgLm14LWxpbmstbGlzdCB7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zcGFjaW5nLW0pO1xuICB9XG59XG4iXX0= */
@@ -19,6 +19,29 @@
19
19
  gap: var(--gap);
20
20
  }
21
21
  }
22
+
23
+ .mx-skip-links {
24
+ background-color: var(--colour-background-alt);
25
+ position: fixed;
26
+ inset-block-start: 0;
27
+ inset-inline-start: 0;
28
+ inline-size: 100%;
29
+ display: flex;
30
+ z-index: 200;
31
+ transform: translateY(-100%);
32
+ visibility: hidden;
33
+ }
34
+
35
+ .mx-skip-links:has(a:focus) {
36
+ transform: translateY(0);
37
+ visibility: visible;
38
+ }
39
+
40
+ .mx-skip-links a {
41
+ display: inline-block;
42
+ padding-block: 2px;
43
+ padding-inline: 4px;
44
+ }
22
45
  }
23
46
 
24
47
  @media print {
@@ -27,4 +50,4 @@
27
50
  }
28
51
  }
29
52
 
30
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hc3RoZWFkLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7RUFFRTs7QUFFRjtJQUVJO01BQ0UsOEJBQThCO01BQzlCLG1CQUFtQjtJQUNyQjs7RUFHRjtJQUNFLGFBQWE7RUFNZjs7SUFKRTs7RUFIRjtNQUlJLG9CQUFvQjtNQUNwQixlQUFlO0VBRW5CO0lBREU7QUFFSjs7QUFFQTtFQUNFO0lBQ0UsYUFBYTtFQUNmO0FBQ0YiLCJmaWxlIjoibWFzdGhlYWQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYXN0aGVhZFxuICovXG5cbkBsYXllciBkZXNpZ24tc3lzdGVtLmxheW91dHMge1xuICAubXgtbWFzdGhlYWQge1xuICAgICYgLmZsZXgge1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAubXgtbWFzdGhlYWRfX25hdiB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBtZWRpYSAoLS1nbG9iYWwtbmF2LXVwKSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGdhcDogdmFyKC0tZ2FwKTtcbiAgICB9XG4gIH1cbn1cblxuQG1lZGlhIHByaW50IHtcbiAgLm14LW1hc3RoZWFkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iXX0= */
53
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hc3RoZWFkLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7RUFFRTs7QUFFRjtJQUVJO01BQ0UsOEJBQThCO01BQzlCLG1CQUFtQjtJQUNyQjs7RUFHRjtJQUNFLGFBQWE7RUFNZjs7SUFKRTs7RUFIRjtNQUlJLG9CQUFvQjtNQUNwQixlQUFlO0VBRW5CO0lBREU7O0VBR0Y7SUFDRSw4Q0FBOEM7SUFDOUMsZUFBZTtJQUNmLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZO0lBQ1osNEJBQTRCO0lBQzVCLGtCQUFrQjtFQVlwQjs7SUFWRTtNQUNFLHdCQUF3QjtNQUN4QixtQkFBbUI7SUFDckI7O0lBRUE7TUFDRSxxQkFBcUI7TUFDckIsa0JBQWtCO01BQ2xCLG1CQUFtQjtJQUNyQjtBQUVKOztBQUVBO0VBQ0U7SUFDRSxhQUFhO0VBQ2Y7QUFDRiIsImZpbGUiOiJtYXN0aGVhZC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hc3RoZWFkXG4gKi9cblxuQGxheWVyIGRlc2lnbi1zeXN0ZW0ubGF5b3V0cyB7XG4gIC5teC1tYXN0aGVhZCB7XG4gICAgJiAuZmxleCB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIC5teC1tYXN0aGVhZF9fbmF2IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQG1lZGlhICgtLWdsb2JhbC1uYXYtdXApIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgZ2FwOiB2YXIoLS1nYXApO1xuICAgIH1cbiAgfVxuXG4gIC5teC1za2lwLWxpbmtzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvdXItYmFja2dyb3VuZC1hbHQpO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgaW5saW5lLXNpemU6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB6LWluZGV4OiAyMDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAmOmhhcyhhOmZvY3VzKSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIH1cblxuICAgICYgYSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nLWJsb2NrOiAycHg7XG4gICAgICBwYWRkaW5nLWlubGluZTogNHB4O1xuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgcHJpbnQge1xuICAubXgtbWFzdGhlYWQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiJdfQ== */
@@ -54,6 +54,10 @@
54
54
  --tag-foreground: var(--link-colour, var(--colour-primary));
55
55
  }
56
56
 
57
+ .mx-tag:empty {
58
+ display: none;
59
+ }
60
+
57
61
  .mx-tags {
58
62
  padding-inline: 0;
59
63
  list-style: none;
@@ -64,4 +68,4 @@
64
68
  }
65
69
  }
66
70
 
67
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhZy5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FBRUY7RUFDRTtJQUNFLHFCQUFxQjtJQUNyQiw2QkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLDhEQUE4RDtJQUM5RDs7O0tBR0M7SUFDRCx5RUFBeUU7SUFDekUseUJBQXlCO0lBQ3pCLHdEQUF3RDtJQUN4RCxvREFBb0Q7SUFDcEQsY0FBa0M7SUFBbEMsa0NBQWtDO0lBQ2xDLG1DQUFtQztJQUNuQyw4QkFBcUU7SUFBckUscUVBQXFFO0lBQ3JFLDZCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsZ0JBQWdCO0VBeUJsQjs7SUF2QkU7TUFDRSxxQ0FBcUM7O01BRXJDOzBCQUNnRTs7TUFEaEU7c0VBQ2dFO01BQ2hFLHFDQUEwRDtNQUExRCwwREFBMEQ7SUFDNUQ7O0lBRUE7TUFDRSxrQkFBa0I7TUFDbEIseUJBQXlCO01BQ3pCLDBCQUEwQjtJQUM1Qjs7SUFFQTtNQUNFLGtCQUFrQjtNQUNsQixjQUFjO01BQ2QsU0FBUztJQUNYOztJQUVBO01BQ0UsMkRBQTJEO0lBQzdEOztFQUdGO0lBQ0UsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixzQ0FBc0M7RUFDeEM7QUFDRiIsImZpbGUiOiJ0YWcuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUYWdcbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5jb21wb25lbnRzIHtcbiAgLm14LXRhZyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGlubGluZS1zaXplOiBmaXQtY29udGVudDtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taG9yaXpvbnRhbC1wYWRkaW5nLCB2YXIoLS1zcGFjaW5nLXh4eHMpKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoXG4gICAgICAtLXRhZy1iYWNrZ3JvdW5kLFxuICAgICAgdmFyKC0tYmFja2dyb3VuZCwgdmFyKC0tY29sb3VyLWJhY2tncm91bmQpKVxuICAgICk7XG4gICAgY29sb3I6IHZhcigtLXRhZy1mb3JlZ3JvdW5kLCB2YXIoLS1mb3JlZ3JvdW5kLCB2YXIoLS1jb2xvdXItZm9yZWdyb3VuZCkpKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodCwgdmFyKC0tZm9udC13ZWlnaHQtYm9sZCkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGFnLWZvbnQtc2l6ZSwgdmFyKC0tZm9udC1zaXplLXhzKSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LCAyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcbiAgICBib3JkZXI6IHZhcigtLWxpbmUtd2lkdGgsIDFweCkgc29saWQgdmFyKC0tbGluZS1jb2xvdXIsIGN1cnJlbnRjb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmOmhhcyhpbnB1dDpmb2N1cykge1xuICAgICAgLS1vdXRsaW5lLXNpemU6IG1heCgwLjEyNXJlbSwgMC4xNWVtKTtcblxuICAgICAgb3V0bGluZTogdmFyKC0tb3V0bGluZS13aWR0aCwgdmFyKC0tb3V0bGluZS1zaXplKSlcbiAgICAgICAgdmFyKC0tb3V0bGluZS1zdHlsZSwgc29saWQpIHZhcigtLW91dGxpbmUtY29sb3IsIGN1cnJlbnRjb2xvcik7XG4gICAgICBvdXRsaW5lLW9mZnNldDogdmFyKC0tb3V0bGluZS1vZmZzZXQsIHZhcigtLW91dGxpbmUtc2l6ZSkpO1xuICAgIH1cblxuICAgICYgaW5wdXQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IC0xMDBweDtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogLTEwMHB4O1xuICAgIH1cblxuICAgICYgbGFiZWwge1xuICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgJjppcyhhOmhvdmVyLCA6aGFzKGlucHV0OmNoZWNrZWQpKSB7XG4gICAgICAtLXRhZy1mb3JlZ3JvdW5kOiB2YXIoLS1saW5rLWNvbG91ciwgdmFyKC0tY29sb3VyLXByaW1hcnkpKTtcbiAgICB9XG4gIH1cblxuICAubXgtdGFncyB7XG4gICAgcGFkZGluZy1pbmxpbmU6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXRhZ3MtZ2FwLCB2YXIoLS1zcGFjaW5nLXMpKTtcbiAgfVxufVxuIl19 */
71
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhZy5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FBRUY7RUFDRTtJQUNFLHFCQUFxQjtJQUNyQiw2QkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLDhEQUE4RDtJQUM5RDs7O0tBR0M7SUFDRCx5RUFBeUU7SUFDekUseUJBQXlCO0lBQ3pCLHdEQUF3RDtJQUN4RCxvREFBb0Q7SUFDcEQsY0FBa0M7SUFBbEMsa0NBQWtDO0lBQ2xDLG1DQUFtQztJQUNuQyw4QkFBcUU7SUFBckUscUVBQXFFO0lBQ3JFLDZCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsZ0JBQWdCO0VBNkJsQjs7SUEzQkU7TUFDRSxxQ0FBcUM7O01BRXJDOzBCQUNnRTs7TUFEaEU7c0VBQ2dFO01BQ2hFLHFDQUEwRDtNQUExRCwwREFBMEQ7SUFDNUQ7O0lBRUE7TUFDRSxrQkFBa0I7TUFDbEIseUJBQXlCO01BQ3pCLDBCQUEwQjtJQUM1Qjs7SUFFQTtNQUNFLGtCQUFrQjtNQUNsQixjQUFjO01BQ2QsU0FBUztJQUNYOztJQUVBO01BQ0UsMkRBQTJEO0lBQzdEOztJQUVBO01BQ0UsYUFBYTtJQUNmOztFQUdGO0lBQ0UsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixzQ0FBc0M7RUFDeEM7QUFDRiIsImZpbGUiOiJ0YWcuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUYWdcbiAqL1xuXG5AbGF5ZXIgZGVzaWduLXN5c3RlbS5jb21wb25lbnRzIHtcbiAgLm14LXRhZyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGlubGluZS1zaXplOiBmaXQtY29udGVudDtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taG9yaXpvbnRhbC1wYWRkaW5nLCB2YXIoLS1zcGFjaW5nLXh4eHMpKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoXG4gICAgICAtLXRhZy1iYWNrZ3JvdW5kLFxuICAgICAgdmFyKC0tYmFja2dyb3VuZCwgdmFyKC0tY29sb3VyLWJhY2tncm91bmQpKVxuICAgICk7XG4gICAgY29sb3I6IHZhcigtLXRhZy1mb3JlZ3JvdW5kLCB2YXIoLS1mb3JlZ3JvdW5kLCB2YXIoLS1jb2xvdXItZm9yZWdyb3VuZCkpKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodCwgdmFyKC0tZm9udC13ZWlnaHQtYm9sZCkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tdGFnLWZvbnQtc2l6ZSwgdmFyKC0tZm9udC1zaXplLXhzKSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LCAyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcbiAgICBib3JkZXI6IHZhcigtLWxpbmUtd2lkdGgsIDFweCkgc29saWQgdmFyKC0tbGluZS1jb2xvdXIsIGN1cnJlbnRjb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmOmhhcyhpbnB1dDpmb2N1cykge1xuICAgICAgLS1vdXRsaW5lLXNpemU6IG1heCgwLjEyNXJlbSwgMC4xNWVtKTtcblxuICAgICAgb3V0bGluZTogdmFyKC0tb3V0bGluZS13aWR0aCwgdmFyKC0tb3V0bGluZS1zaXplKSlcbiAgICAgICAgdmFyKC0tb3V0bGluZS1zdHlsZSwgc29saWQpIHZhcigtLW91dGxpbmUtY29sb3IsIGN1cnJlbnRjb2xvcik7XG4gICAgICBvdXRsaW5lLW9mZnNldDogdmFyKC0tb3V0bGluZS1vZmZzZXQsIHZhcigtLW91dGxpbmUtc2l6ZSkpO1xuICAgIH1cblxuICAgICYgaW5wdXQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IC0xMDBweDtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogLTEwMHB4O1xuICAgIH1cblxuICAgICYgbGFiZWwge1xuICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgJjppcyhhOmhvdmVyLCA6aGFzKGlucHV0OmNoZWNrZWQpKSB7XG4gICAgICAtLXRhZy1mb3JlZ3JvdW5kOiB2YXIoLS1saW5rLWNvbG91ciwgdmFyKC0tY29sb3VyLXByaW1hcnkpKTtcbiAgICB9XG5cbiAgICAmOmVtcHR5IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm14LXRhZ3Mge1xuICAgIHBhZGRpbmctaW5saW5lOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS10YWdzLWdhcCwgdmFyKC0tc3BhY2luZy1zKSk7XG4gIH1cbn1cbiJdfQ== */
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.8",
4
+ "version": "0.0.10",
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\"",
@@ -8,7 +8,7 @@
8
8
  {% endfor %}
9
9
  {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
10
10
 
11
- {% if href %}
11
+ {% if href is not empty %}
12
12
  <a{{ attributes}} href="{{ href }}">
13
13
  {{ iconStart }}
14
14
  <span{% if iconOnly %} class="sr-only"{% endif %}>{{ title }}</span>
@@ -1,4 +1,4 @@
1
- {% set attributes = attributes|default(create_attribute()) %}
1
+ {% set attributes = attributes ?? create_attribute() %}
2
2
  <picture{{ attributes }}>
3
3
  {% for source in sources %}
4
4
  <source srcset="{{ source.srcset }}" type="{{ source.type }}" {% if source.media %}media="{{ source.media }}"{% endif %}>
@@ -6,8 +6,8 @@
6
6
  <img
7
7
  src="{{ src }}"
8
8
  alt="{{ alt }}"
9
- {% if loading %} loading="{{ loading }}"{% endif %}
10
- {% if height %} height="{{ height }}"{% endif %}
11
- {% if width %} width="{{ width }}"{% endif %}
9
+ {% if loading is not empty %} loading="{{ loading }}"{% endif %}
10
+ {% if height is not empty %} height="{{ height }}"{% endif %}
11
+ {% if width is not empty %} width="{{ width }}"{% endif %}
12
12
  />
13
13
  </picture>
@@ -0,0 +1,24 @@
1
+ {% set attributes = attributes ?? create_attribute() %}
2
+
3
+ {% if className is not empty and className %}
4
+ {% set attributes = attributes.addClass(className) %}
5
+ {% endif %}
6
+
7
+ {% if width is not empty %}
8
+ {% set attributes = attributes.setAttribute('width', width) %}
9
+ {% endif %}
10
+
11
+ {% if height is not empty %}
12
+ {% set attributes = attributes.setAttribute('height', height) %}
13
+ {% endif %}
14
+
15
+ {% if viewBox is not empty %}
16
+ {% set attributes = attributes.setAttribute('viewBox', viewBox) %}
17
+ {% endif %}
18
+
19
+ <svg {{ attributes }} xmlns="http://www.w3.org/2000/svg">
20
+ {{ content }}
21
+ {% if title %}
22
+ <title>{{ title }}</title>
23
+ {% endif %}
24
+ </svg>
@@ -5,7 +5,7 @@
5
5
  download ? baseClass~'--download' : null,
6
6
  ]|join(" ")|trim() %}
7
7
  {% set attributes = (attributes ?? create_attribute()) %}
8
- {% if classes %}
8
+ {% if classes is not empty %}
9
9
  {% set attributes = attributes.addClass(classes) %}
10
10
  {% endif %}
11
11
 
@@ -0,0 +1,5 @@
1
+ {% set attributes = attributes ?? create_attribute() %}
2
+ <a href="{{ href }}" {{ attributes }}>
3
+ {{ image }}
4
+ <span class="sr-only">{{ title }}</span>
5
+ </a>
@@ -4,14 +4,14 @@
4
4
  type ? baseClass~'--'~type : null,
5
5
  align ? baseClass~'--'~align : null,
6
6
  ] %}
7
- {% set attributes = attributes|default(create_attribute()).addClass(classes) %}
7
+ {% set attributes = attributes ?? create_attribute().addClass(classes) %}
8
8
 
9
9
  <figure{{ attributes }}>
10
10
  {{ item }}
11
- {% if caption or attribution%}
11
+ {% if caption is not empty or attribution is not empty %}
12
12
  <figcaption>
13
13
  {{ caption }}
14
- {% if caption and attribution %} - {% endif %}
14
+ {% if caption is not empty and attribution is not empty %} - {% endif %}
15
15
  {{ attribution }}
16
16
  </figcaption>
17
17
  {% endif %}
@@ -1,8 +1,8 @@
1
- {% set attributes = attributes|default(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 }}"
5
- {% if title %} title="{{ title }}"{% endif %}
5
+ {% if title is not empty %} title="{{ title }}"{% endif %}
6
6
  allowfullscreen
7
7
  ></iframe>
8
8
  </figure>
@@ -6,7 +6,7 @@
6
6
  {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
7
7
 
8
8
  <mx-accordion>
9
- <details{{ attributes }}{% if id %} id="{{ id }}"{% endif %}>
9
+ <details{{ attributes }}{% if id is not empty %} id="{{ id }}"{% endif %}>
10
10
  <summary class="mx-accordion__toggle">
11
11
  {{ title }}
12
12
  <span class="mx-button mx-icon mx-button--small mx-button--icon-only mx-icon--chevron-down" aria-hidden="true"></span>
@@ -48,8 +48,6 @@
48
48
  }
49
49
 
50
50
  .mx-accordion {
51
- contain: layout;
52
-
53
51
  & .mx-accordion__toggle {
54
52
  cursor: pointer;
55
53
  inline-size: 100%;
@@ -58,6 +56,14 @@
58
56
  &:is(> h2, > h3, > h4, > h5, > h6) {
59
57
  all: unset;
60
58
  }
59
+
60
+ &:is([open], [data-open="true"]) {
61
+ & > .mx-accordion__toggle {
62
+ & .mx-icon--chevron-down {
63
+ transform: rotate(180deg);
64
+ }
65
+ }
66
+ }
61
67
  }
62
68
 
63
69
  .mx-accordion--divided {
@@ -70,21 +76,11 @@
70
76
  display: flex;
71
77
  justify-content: space-between;
72
78
  align-items: center;
73
-
74
- & .mx-button--icon-only {
75
- flex-shrink: 0;
76
- margin-inline-start: var(--spacing-xxs);
77
- }
79
+ gap: var(--spacing-xxs);
78
80
  }
79
81
 
80
82
  &:is([open], [data-open="true"]) {
81
- & .mx-accordion__toggle {
82
- & .mx-button--icon-only {
83
- transform: rotate(180deg);
84
- }
85
- }
86
-
87
- & .mx-accordion__content {
83
+ & > .mx-accordion__content {
88
84
  border-block-start: var(--line-width, 1px) solid
89
85
  var(--line-colour, var(--colour-border));
90
86
  padding-block: var(--vertical-padding, var(--spacing-xxs));
@@ -2,7 +2,7 @@
2
2
  {% if toggleAll %}
3
3
  <mx-accordion-group>
4
4
  {% endif %}
5
- {% if title or toggleAll %}
5
+ {% if title is not empty or toggleAll %}
6
6
  <div class="mx-accordion__title">
7
7
  {{ title }}
8
8
  {% if toggleAll %}
@@ -1,14 +1,6 @@
1
1
  import { Meta, StoryObj } from "@storybook/html"
2
2
  import Component from "./card.twig"
3
3
  import "./card.css"
4
- import "../Tag/tag.css"
5
- import "../LinkList/link-list.css"
6
- import Heading from "../../Atom/Heading/heading.twig"
7
- import Link from "../../Atom/Link/link.twig"
8
- import Image from "../../Atom/Image/image.twig"
9
- import Tags from "../Tag/tags.twig"
10
- import LinkList from "../LinkList/link-list.twig"
11
- import Icon from "../../Atom/Icon/icon.twig"
12
4
  import {
13
5
  Card as CardType,
14
6
  CardModifier,
@@ -18,6 +10,17 @@ import {
18
10
  } from "@pnx-mixtape/ids-shape"
19
11
  import { Icons } from "../../enums"
20
12
 
13
+ // Deps.
14
+ import Heading from "../../Atom/Heading/heading.twig"
15
+ import Link from "../../Atom/Link/link.twig"
16
+ import Image from "../../Atom/Image/image.twig"
17
+ import Tags from "../Tag/tags.twig"
18
+ import LinkList from "../LinkList/link-list.twig"
19
+ import Icon from "../../Atom/Icon/icon.twig"
20
+ // css
21
+ import "../Tag/tag.css"
22
+ import "../LinkList/link-list.css"
23
+
21
24
  export type MxCardType = Omit<CardType, "modifiers"> & {
22
25
  modifiers?: CardModifier[] | ListItemModifiers[]
23
26
  }
@@ -100,18 +103,27 @@ export const WithLinkList: Story = {
100
103
  link: null,
101
104
  linkList: LinkList({
102
105
  items: [
103
- {
106
+ Link({
104
107
  title: "Link one",
105
108
  href: "#",
106
- },
107
- {
109
+ iconEnd: Icon({
110
+ icon: Icons.CHEVRON_RIGHT,
111
+ }),
112
+ }),
113
+ Link({
108
114
  title: "Link two",
109
115
  href: "#",
110
- },
111
- {
116
+ iconEnd: Icon({
117
+ icon: Icons.CHEVRON_RIGHT,
118
+ }),
119
+ }),
120
+ Link({
112
121
  title: "Link three",
113
122
  href: "#",
114
- },
123
+ iconEnd: Icon({
124
+ icon: Icons.CHEVRON_RIGHT,
125
+ }),
126
+ }),
115
127
  ],
116
128
  }),
117
129
  },
@@ -200,24 +200,30 @@ exports[`Component/Card WithLinkList smoke-test 1`] = `
200
200
  </div>
201
201
  <ul class="mx-link-list">
202
202
  <li>
203
- <a href="#"
204
- class="mx-icon mx-icon--chevron-right"
205
- >
206
- Link one
203
+ <a href="#">
204
+ <span>
205
+ Link one
206
+ </span>
207
+ <span class="mx-icon mx-icon--chevron-right ">
208
+ </span>
207
209
  </a>
208
210
  </li>
209
211
  <li>
210
- <a href="#"
211
- class="mx-icon mx-icon--chevron-right"
212
- >
213
- Link two
212
+ <a href="#">
213
+ <span>
214
+ Link two
215
+ </span>
216
+ <span class="mx-icon mx-icon--chevron-right ">
217
+ </span>
214
218
  </a>
215
219
  </li>
216
220
  <li>
217
- <a href="#"
218
- class="mx-icon mx-icon--chevron-right"
219
- >
220
- Link three
221
+ <a href="#">
222
+ <span>
223
+ Link three
224
+ </span>
225
+ <span class="mx-icon mx-icon--chevron-right ">
226
+ </span>
221
227
  </a>
222
228
  </li>
223
229
  </ul>
@@ -12,30 +12,30 @@
12
12
  {% set classes = classes|merge([baseClass~"--"~modifier]) %}
13
13
  {% endif %}
14
14
  {% endfor %}
15
- {% if background %}
15
+ {% if background is not empty %}
16
16
  {% set classes = classes|merge([background]) %}
17
17
  {% endif %}
18
18
  {% set attributes = (attributes ?? create_attribute()).addClass(classes) %}
19
19
 
20
20
  <div class="mx-container">
21
21
  <article{{ attributes }}>
22
- {% if image %}
22
+ {% if image is not empty %}
23
23
  <figure class="mx-card__media">
24
24
  {{ image }}
25
25
  </figure>
26
26
  {% endif %}
27
- {% if icon %}
27
+ {% if icon is not empty %}
28
28
  <div class="mx-card__icon">
29
29
  {{ icon }}
30
30
  </div>
31
31
  {% endif %}
32
32
  <div class="mx-card__content mx-vertical-flow-flex">
33
- {% if date %}
33
+ {% if date is not empty %}
34
34
  <div class="mx-text--s">{{ date }}</div>
35
35
  {% endif %}
36
36
  {{ title }}
37
37
  {{ tags }}
38
- {% if content %}
38
+ {% if content is not empty %}
39
39
  <div class="mx-text--lede">{{ content }}</div>
40
40
  {% endif %}
41
41
  {{ linkList }}
@@ -11,25 +11,13 @@ exports[`Component/ContentBlock ContentBlock smoke-test 1`] = `
11
11
  </p>
12
12
  <ul class="mx-link-list">
13
13
  <li>
14
- <a href="#"
15
- class="mx-icon mx-icon--chevron-right"
16
- >
17
- Link one
18
- </a>
14
+ [object Object]
19
15
  </li>
20
16
  <li>
21
- <a href="#"
22
- class="mx-icon mx-icon--chevron-right"
23
- >
24
- Link two
25
- </a>
17
+ [object Object]
26
18
  </li>
27
19
  <li>
28
- <a href="#"
29
- class="mx-icon mx-icon--chevron-right"
30
- >
31
- Link three
32
- </a>
20
+ [object Object]
33
21
  </li>
34
22
  </ul>
35
23
  <a class="mx-link--more"
@@ -58,25 +46,13 @@ exports[`Component/ContentBlock WithIcon smoke-test 1`] = `
58
46
  </p>
59
47
  <ul class="mx-link-list">
60
48
  <li>
61
- <a href="#"
62
- class="mx-icon mx-icon--chevron-right"
63
- >
64
- Link one
65
- </a>
49
+ [object Object]
66
50
  </li>
67
51
  <li>
68
- <a href="#"
69
- class="mx-icon mx-icon--chevron-right"
70
- >
71
- Link two
72
- </a>
52
+ [object Object]
73
53
  </li>
74
54
  <li>
75
- <a href="#"
76
- class="mx-icon mx-icon--chevron-right"
77
- >
78
- Link three
79
- </a>
55
+ [object Object]
80
56
  </li>
81
57
  </ul>
82
58
  <a class="mx-link--more"
@@ -108,25 +84,13 @@ exports[`Component/ContentBlock WithImage smoke-test 1`] = `
108
84
  </p>
109
85
  <ul class="mx-link-list">
110
86
  <li>
111
- <a href="#"
112
- class="mx-icon mx-icon--chevron-right"
113
- >
114
- Link one
115
- </a>
87
+ [object Object]
116
88
  </li>
117
89
  <li>
118
- <a href="#"
119
- class="mx-icon mx-icon--chevron-right"
120
- >
121
- Link two
122
- </a>
90
+ [object Object]
123
91
  </li>
124
92
  <li>
125
- <a href="#"
126
- class="mx-icon mx-icon--chevron-right"
127
- >
128
- Link three
129
- </a>
93
+ [object Object]
130
94
  </li>
131
95
  </ul>
132
96
  <a class="mx-link--more"