@iamproperty/components 3.8.0 → 4.0.0

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 (99) hide show
  1. package/assets/css/components/actionbar-global.css +1 -0
  2. package/assets/css/components/actionbar-global.css.map +1 -0
  3. package/assets/css/components/actionbar.css +1 -0
  4. package/assets/css/components/actionbar.css.map +1 -0
  5. package/assets/css/components/collapsible-side.css +1 -0
  6. package/assets/css/components/collapsible-side.css.map +1 -0
  7. package/assets/css/components/dialog.css +1 -1
  8. package/assets/css/components/dialog.css.map +1 -1
  9. package/assets/css/components/forms.css +1 -1
  10. package/assets/css/components/forms.css.map +1 -1
  11. package/assets/css/components/header.css +1 -1
  12. package/assets/css/components/header.css.map +1 -1
  13. package/assets/css/components/lists.css.map +1 -1
  14. package/assets/css/components/nav-global.css +1 -0
  15. package/assets/css/components/nav-global.css.map +1 -0
  16. package/assets/css/components/nav.css +1 -1
  17. package/assets/css/components/nav.css.map +1 -1
  18. package/assets/css/components/nav.docs.css +1 -0
  19. package/assets/css/components/nav.docs.css.map +1 -0
  20. package/assets/css/components/nav.old.css +1 -0
  21. package/assets/css/components/nav.old.css.map +1 -0
  22. package/assets/css/components/pagination.css.map +1 -1
  23. package/assets/css/components/property-searchbar.css +1 -1
  24. package/assets/css/components/property-searchbar.css.map +1 -1
  25. package/assets/css/components/table.css +1 -1
  26. package/assets/css/components/table.css.map +1 -1
  27. package/assets/css/core.min.css +1 -1
  28. package/assets/css/core.min.css.map +1 -1
  29. package/assets/css/style.min.css +1 -1
  30. package/assets/css/style.min.css.map +1 -1
  31. package/assets/js/components/accordion/accordion.component.min.js +2 -2
  32. package/assets/js/components/actionbar/actionbar.component.js +305 -0
  33. package/assets/js/components/actionbar/actionbar.component.min.js +53 -0
  34. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -0
  35. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  36. package/assets/js/components/card/card.component.min.js +1 -1
  37. package/assets/js/components/collapsible-side/collapsible-side.component.js +96 -0
  38. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +27 -0
  39. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -0
  40. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  41. package/assets/js/components/header/header.component.min.js +2 -2
  42. package/assets/js/components/nav/nav.component.js +294 -0
  43. package/assets/js/components/nav/nav.component.min.js +51 -0
  44. package/assets/js/components/nav/nav.component.min.js.map +1 -0
  45. package/assets/js/components/notification/notification.component.min.js +1 -1
  46. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  47. package/assets/js/components/table/table.component.js +33 -0
  48. package/assets/js/components/table/table.component.min.js +12 -11
  49. package/assets/js/components/table/table.component.min.js.map +1 -1
  50. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  51. package/assets/js/dynamic.min.js +3 -3
  52. package/assets/js/dynamic.min.js.map +1 -1
  53. package/assets/js/modules/dialogs.js +3 -0
  54. package/assets/js/modules/helpers.js +0 -13
  55. package/assets/js/modules/table.js +1 -1
  56. package/assets/js/scripts.bundle.js +15 -14
  57. package/assets/js/scripts.bundle.js.map +1 -1
  58. package/assets/js/scripts.bundle.min.js +2 -2
  59. package/assets/js/scripts.bundle.min.js.map +1 -1
  60. package/assets/sass/_corefiles.scss +2 -0
  61. package/assets/sass/_functions/mixins.scss +25 -0
  62. package/assets/sass/_functions/variables.scss +1 -1
  63. package/assets/sass/components/actionbar-global.scss +89 -0
  64. package/assets/sass/components/actionbar.scss +254 -0
  65. package/assets/sass/components/collapsible-side.scss +327 -0
  66. package/assets/sass/components/dialog.scss +10 -0
  67. package/assets/sass/components/forms.scss +29 -0
  68. package/assets/sass/components/nav-global.scss +630 -0
  69. package/assets/sass/components/nav.docs.scss +54 -0
  70. package/assets/sass/components/nav.old.scss +965 -0
  71. package/assets/sass/components/nav.scss +450 -782
  72. package/assets/sass/components/table.scss +9 -1
  73. package/assets/sass/foundations/buttons.scss +57 -32
  74. package/assets/sass/foundations/links.scss +1 -1
  75. package/assets/sass/foundations/reboot.scss +5 -3
  76. package/assets/ts/components/actionbar/README.md +55 -0
  77. package/assets/ts/components/actionbar/actionbar.component.ts +396 -0
  78. package/assets/ts/components/collapsible-side/README.md +38 -0
  79. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +134 -0
  80. package/assets/ts/components/nav/README.md +68 -0
  81. package/assets/ts/components/nav/nav.component.ts +370 -0
  82. package/assets/ts/components/table/table.component.ts +65 -0
  83. package/assets/ts/modules/dialogs.ts +6 -0
  84. package/assets/ts/modules/helpers.ts +0 -17
  85. package/assets/ts/modules/table.ts +5 -5
  86. package/dist/components.es.js +1368 -1113
  87. package/dist/components.umd.js +188 -44
  88. package/dist/style.css +1 -1
  89. package/package.json +1 -1
  90. package/src/components/Actionbar/Actionbar.vue +20 -0
  91. package/src/components/Actionbar/README.md +40 -0
  92. package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +20 -0
  93. package/src/components/CollapsibleSideMenu/README.md +23 -0
  94. package/src/components/Nav/Nav.vue +20 -195
  95. package/src/components/Nav/README.md +43 -13
  96. package/src/components/Nav-old/Nav.vue +213 -0
  97. package/src/components/Nav-old/README.md +23 -0
  98. package/src/index.js +8 -0
  99. package/src/components/Nav/Nav.spec.js +0 -35
@@ -1,965 +1,633 @@
1
1
  @use "../_func" as *;
2
2
 
3
- // #region set dark background for mobile view
4
- .nav .nav__mobile-bar {
5
-
6
- background: var(--colour-primary);
7
- color: white;
8
-
9
- @if $compatible != "true" {
10
-
11
- @include invert-colours();
12
- }
13
-
14
- display: flex;
15
- flex-direction: column;
16
- flex-wrap: nowrap;
17
- width: rem(375);
18
-
19
- @include media-breakpoint-up(sm) {
20
- width: 100%;
21
- }
22
-
23
- > .container {
24
-
25
- padding-top: rem(16);
26
- padding-bottom: 1rem;
27
- flex-shrink: 0;
28
- overflow: visible;
29
- }
3
+ :host{
4
+ display: flex!important;
5
+ flex-direction: row;
6
+ flex-wrap: wrap;
7
+ align-items: center;
30
8
  }
31
- // #endregion
32
9
 
33
- // #region General styles
34
- .nav {
35
-
36
- overflow-x: hidden;
37
- font-weight: bold;
38
-
39
- &__inner,
40
- &__menu--account {
10
+ ::slotted(.brand) {
41
11
 
42
- display: flex;
43
- flex-direction: column;
44
- flex-wrap: nowrap;
12
+ margin-right: auto;
13
+ }
45
14
 
46
- > .container {
15
+ .btn-menu {
16
+
17
+ padding: 0;
18
+ margin: 0 0 0 rem(32);
19
+ text-align: center;
20
+ height: rem(48);
21
+ padding-block: rem(12);
22
+ line-height: rem(24);
23
+ overflow: hidden;
24
+ position: relative;
25
+ background: none;
26
+ border: none;
27
+ width: rem(24);
28
+ text-indent: -1000%;
29
+ color: var(--colour-brand);
30
+
31
+ i {
32
+ font-size: rem(24);
33
+ line-height: rem(24);
34
+ position: absolute;
35
+ text-indent: 0px;
47
36
 
48
- padding-top: rem(16);
49
- padding-bottom: 0;
50
- flex-shrink: 0;
51
- overflow: visible;
52
- z-index: unset;
53
- }
37
+ width: rem(24);
38
+ text-align: center;
39
+ top: rem(12);
40
+ right: 0;
41
+ margin: 0!important;
42
+ transition: none!important;
54
43
  }
55
44
 
56
- &__menu {
57
- padding-top: rem(36);
58
- padding-bottom: rem(16);
45
+ i + i {
46
+ display: none;
59
47
  }
60
48
 
61
- .brand {
62
- font-size: rem(36);
49
+ &.selected {
63
50
 
64
- @include media-breakpoint-up(md) {
65
- font-size: rem(60);
51
+ i {
52
+ display: none;
66
53
  }
67
- }
68
- }
69
-
70
- .nav__logo img {
71
- height: rem(36);
72
- width: auto;
73
-
74
- @include media-breakpoint-up(sm) {
75
- height: rem(60);
76
- width: auto;
77
- }
78
- }
79
-
80
- .nav__search-btn,
81
- .nav__menu-btn {
82
-
83
- display: flex;
84
54
 
85
- label {
86
- height: rem(18);
87
- width: rem(24);
88
- text-indent: -300%;
89
- overflow: hidden;
90
- position: relative;
91
- cursor: pointer;
92
-
93
- color: var(--colour-link);
94
-
95
- &:hover,
96
- &:focus {
97
-
98
- color: var(--colour-hover);
55
+ i + i {
56
+ display: inline;
99
57
  }
58
+ }
100
59
 
101
- &:active {
102
-
103
- color: var(--colour-active);
104
- }
60
+ @media screen and (max-width: 62em) {
61
+ > .btn {
62
+ display: contents;
105
63
 
106
- &:before,
107
- &:after {
108
- content: "";
109
- position: absolute;
110
- width: 0%;
111
- height: 2px;
112
- top: calc(50% - 1px);
113
- left: 0;
114
- background: currentColor;
115
- transform-origin: 50% 50%;
116
- transition: transform 0.5s, width 0.5s;
64
+ display: contents;
65
+ color: inherit!important;
66
+ padding: 0!important;
67
+ margin: 0;
68
+ font-weight: normal!important;
69
+ line-height: inherit;
70
+ font-size: inherit;
71
+ transition: none!important;
117
72
  }
118
73
  }
119
- }
120
74
 
121
- .nav__search-btn {
75
+ @include media-breakpoint-up(sm) {
122
76
 
123
- label {
77
+ margin: 0 0 0 rem(48);
78
+ width: auto;
79
+ padding-right: rem(24 + 6);
124
80
  text-indent: 0;
125
- overflow: visible;
126
- }
127
- .icon {
128
- height: rem(32);
129
- width: rem(32);
130
- margin-top: rem(-8);
131
- margin-left: rem(-1);
132
- transition: opacity 0.5s;
133
- color: inherit;
134
-
135
- &__outline {
136
81
 
137
- stroke-width: 2px;
138
- stroke: currentColor;
82
+ &.selected {
83
+ text-indent: -1000%;
139
84
  }
140
85
  }
141
- }
142
86
 
143
- .nav__menu-btn {
144
- display: flex;
87
+ @include media-breakpoint-up(md) {
145
88
 
146
- label {
89
+ width: fit-content;
90
+ height: auto;
91
+ margin: 0 0 0 3rem!important;
92
+ padding: 0!important;
93
+ text-indent: 0;
94
+ padding-right: 0!important;
147
95
 
148
- border-top: 2px solid currentColor;
149
- border-bottom: 2px solid currentColor;
150
-
151
- &:before,
152
- &:after {
153
- width: 100%;
96
+ &.selected {
97
+ text-indent: 0;
154
98
  }
155
- }
156
- }
157
-
158
- .nav__account-btn {
159
-
160
- label {
161
- font-size: rem(18);
162
- text-indent: 0;
163
- overflow: visible;
164
- color: var(--colour-body);
165
- height: rem(48);
166
- line-height: rem(48);
167
- display: block;
168
- border-top: 1px solid var(--colour-border);
169
- border-bottom: 1px solid var(--colour-border);
170
- }
171
- .icon {
172
- height: rem(28);
173
- width: rem(28);
174
- margin-top: rem(-8);
175
- margin-right: rem(8);
176
- transition: opacity 0.5s;
177
- color: inherit;
178
99
 
179
- &__outline {
100
+ .btn {
101
+ @media screen and (prefers-color-scheme: light) {
102
+
103
+ @include reset-colours();
180
104
 
181
- stroke-width: 2px;
182
- stroke: currentColor;
183
- }
184
- }
185
- }
105
+ &:is(:hover,:focus){
106
+ color: var(--colour-inverted);
107
+ }
108
+ }
186
109
 
187
- .nav__menu > ul {
188
- margin-bottom: 0;
110
+ margin: 0!important;
111
+ display: flex;
112
+
113
+ span {
114
+ order: 2;
115
+ }
189
116
 
190
- > li > a {
191
- font-size: rem(18);
192
- line-height: rem(32);
193
- display: inline-block;
194
- position: relative;
195
- text-decoration: none;
117
+ i[class*=fa-] {
118
+ position: relative;
119
+ position: static;
120
+ vertical-align: bottom;
121
+ display: inline-block;
122
+ font-size: 1.2rem;
123
+ margin-right: 1rem!important;
124
+ line-height: 1em;
125
+ }
196
126
 
197
- &.current{
198
- border-left: #{rem(6)} solid var(--colour-info);
199
- margin-left: rem(-20);
200
- padding-left: rem(20 - 6)
127
+ i[class*=fa-] + i[class*=fa-] {
128
+ display: none;
129
+ }
201
130
  }
202
131
  }
203
132
  }
204
133
 
205
- // #endregion
206
-
207
- // #region nav search
208
-
209
- @include media-breakpoint-up(md) {
210
-
211
- .nav__menu--search {
212
- display: none;
134
+ // #region mobile and tablet menu
135
+ @media screen and (max-width: 62em) {
136
+ :host > .container {
137
+ display: contents;
213
138
  }
214
139
 
215
- #showSearch:checked ~ .nav__inner > .nav__menu--search {
216
- order: 2;
140
+ .menu__outer {
141
+
217
142
  position: absolute;
218
- top: 100%;
143
+ top: rem(96);
219
144
  left: 0;
220
145
  width: 100%;
146
+ height: calc(100vh - #{rem(96)});
147
+ overflow: hidden;
148
+ pointer-events: none;
149
+ transition: background 0.5s;
221
150
 
222
- background: rgba(0,0,0,.6);
223
- height: calc(100vh - 5rem);
224
- display: block;
225
- }
226
- }
227
- // #endregion
228
-
229
- // #region nav account
230
-
231
- .services {
232
- line-height: 2rem;
151
+ &:has(.menu.open) {
233
152
 
234
- li {
235
- display: flex;
236
- justify-content: space-between;
237
- }
238
-
239
- .service--active {
240
- &:before {
241
- content: "";
242
- height: 1em;
243
- width: 1em;
244
- display: inline-block;
245
- background: var(--colour-secondary);
246
- margin-right: 0.5rem;
247
- margin-bottom: -0.1em;
248
- border-radius: 50%;
153
+ background: rgba(0,0,0,0.2);
154
+ backdrop-filter: blur(2px);
249
155
  }
250
156
  }
251
- }
252
-
253
- .credits {
254
- border: 2px solid var(--colour-primary);
255
- padding: 1rem;
256
- margin-bottom: 2rem;
257
- border-radius: rem(10);
258
-
259
- .h5,
260
- ul {
261
- padding-inline: 1rem;
262
- }
263
-
264
-
265
- > *:last-child {
266
- margin-bottom: 0!important;
267
- }
268
- }
269
- // #endregion
270
157
 
271
- // #region Nav with background colour applied
272
- .nav[class*="bg-"] {
273
-
274
- .nav__inner {
275
- background-color: transparent;
158
+ .menu::-webkit-scrollbar {
159
+ width: 6px;
276
160
  }
277
- .nav__menu--secondary {
278
-
279
- //background-color: white!important;
161
+
162
+ .menu::-webkit-scrollbar-track {
163
+ border: 0!important;
280
164
  }
281
- .nav__menu--secondary > .container > .list-unstyled > li > a,
282
- .nav__menu--secondary > .container > .list-unstyled > li > details > summary .link {
283
- /*
284
- --colour-link: var(--colour-link-theme);
285
- --colour-hover: var(--colour-hover-theme);
286
- --colour-active: var(--colour-active-theme);
287
- */
165
+
166
+ .menu::-webkit-scrollbar-thumb {
167
+ border: 0!important;
288
168
  }
289
- }
290
- // #endregion
291
169
 
292
- // #region Secondary nav
293
- .nav__menu--secondary {
294
- flex-grow: 1;
170
+ .menu {
295
171
 
296
- font-weight: bold;
297
-
298
- .nav__section-link {
299
- pointer-events: none;
300
- font-weight: bold;
301
- color: var(--colour-link);
302
- font-size: rem(18);
303
- }
304
-
305
- > .container > ul > li {
172
+ overscroll-behavior: contain;
173
+ width: calc(#{rem(375)} - var(--scrollbar-width));
174
+ background-color: var(--colour-canvas-2);
175
+ position: absolute;
176
+ height: calc(100vh - #{rem(96)});
177
+ left: 100%;
178
+ top: 0;
179
+ padding: 0 rem(24) 0 rem(24);
180
+ z-index: var(--index-menu);
181
+ overflow: auto;
182
+ transition: all 1s ease-out;
183
+ display: flex;
184
+ flex-direction: column;
185
+ flex-wrap: nowrap;
306
186
 
307
- &:not(:last-child){
308
-
309
- border-bottom: 1px solid var(--colour-border);
187
+ > * {
188
+ flex-shrink: 0;
310
189
  }
311
190
 
312
- padding-block: rem(6);
313
-
314
- a {
315
- display: inline-block;
316
- font-size: rem(18);
317
- line-height: rem(36);
318
- text-decoration: none;
319
- font-weight: bold;
191
+ @media screen and (prefers-color-scheme: dark) {
192
+ --colour-link: var(--colour-white);
193
+ @include invert-colours();
320
194
  }
321
195
 
322
- ul {
323
- padding: 0;
196
+ // The menu is always white unless in dark mode
197
+ @media screen and (prefers-color-scheme: light) {
198
+
199
+ background-color: var(--colour-white);
200
+ @include reset-colours();
201
+ }
324
202
 
325
- a {
326
- font-weight: normal;
203
+ @media (forced-colors: active) {
204
+
205
+ outline: 1px solid white;
206
+ }
327
207
 
328
- .icon {
329
- display: none;
330
- }
331
- }
208
+ &:before {
209
+ content: "";
210
+ position: absolute;
211
+ display: block ;
212
+ top: 0;
213
+ left: 0;
214
+ width: 100%;
215
+ border-top: 2px solid var(--colour-border);
216
+ z-index: 1;
332
217
  }
333
- }
334
218
 
335
- /*
336
- background: var(--colour-primary);
337
-
338
- > .container > .list-unstyled > li > a,
339
- > .container > .list-unstyled > li > details > summary .link {
340
- --colour-body: white;
341
- --colour-link: white;
342
- --colour-hover: white;
343
- --colour-active: white;
344
- --colour-heading: white;
345
- --colour-underline: white;
346
- --colour-border: white;
347
- }
348
-
349
- a,
350
- .link {
351
- display: inline-block;
352
- font-size: rem(15);
353
- padding: rem(8) 0 rem(8) 0;
354
- text-decoration: none;
219
+ &.open {
220
+ left: calc(100% - (#{rem(375)} - var(--scrollbar-width)) );
221
+ -webkit-box-shadow: 0 6px 12px 0px rgba(0,0,0,0.2);
222
+ box-shadow: 0 6px 12px 0px rgba(0,0,0,0.2);
223
+ pointer-events: all;
224
+ }
355
225
 
356
- &:hover,
357
- &:focus {
358
- text-decoration: underline!important;
226
+ &.closed * {
227
+ display: none!important;
359
228
  }
360
229
  }
361
230
 
362
- */
363
- }
364
- // #endregion
365
-
366
-
367
- // #region Sticky nav
368
- .nav {
369
-
370
- position: sticky;
371
- top: 0;
372
- left: 0;
373
- width: 100%;
374
- z-index: var(--index-menu);
375
-
376
- &.is-stuck {
377
-
378
- -webkit-box-shadow: 0 4px 20px -10px rgba(51,51,51,0.25);
379
- box-shadow: 0 4px 20px -10px rgba(51,51,51,0.25);
231
+ .menu__secondary {
232
+ display: none;
380
233
  }
381
- }
382
-
383
- nav + main > *:first-child {
384
- padding-top: 2rem;
385
- }
386
234
 
235
+ .has-secondary .menu__secondary {
236
+ display: block;
237
+ margin-left: -1.5rem;
238
+ margin-right: -1.5rem;
239
+ padding-left: 1.5rem;
240
+ padding-right: 1.5rem;
241
+ padding-bottom: 3rem!important;
242
+ flex-grow: 1;
243
+ position: relative;
387
244
 
388
- // #endregion
245
+ @media screen and (prefers-color-scheme: light) {
246
+ background-color: #EEEEEE;
247
+ }
389
248
 
390
- // #region Show/hide
391
- .nav__menu,
392
- .nav__btn,
393
- .nav__menu--secondary {
249
+ .container {
250
+ display: contents;
251
+ }
252
+ }
394
253
 
395
- display: none;
396
- }
254
+ ::slotted(a:not([slot="logo"])) {
255
+ display: block!important;
256
+ line-height: rem(20)!important;
257
+ padding: rem(24) 0!important;
258
+ margin: 0!important;
259
+ flex-shrink: 0;
260
+ font-size: 1rem!important;
261
+ font-weight: normal!important;
397
262
 
398
- .nav__inner,
399
- .nav__menu--account {
400
- position: absolute;
401
- top: 0;
402
- left: 100%;
403
- background: var(--colour-canvas);
404
- z-index: 2;
405
- width: 100%;
406
- overscroll-behavior: contain;
263
+ &:after {
264
+ content: "";
265
+ display: block;
266
+ height: 2px;
267
+ width: 100%!important;
268
+ background-color: var(--colour-border)!important;
269
+ top: calc(100% - 2px)!important;
270
+ }
271
+ }
407
272
 
408
- @include media-breakpoint-up(sm) {
273
+ *:is(.has-search, .has-actions) .menu__primary{
409
274
 
410
- width: rem(375);
275
+ display: block;
276
+ padding-bottom: rem(48);
411
277
  }
412
- }
413
-
414
- .nav__menu--account {
415
- z-index: 2;
416
- height: 100vh;
417
- }
418
-
419
- .nav:has(#showMenu:checked){
420
- min-height: 100vh;
421
- }
422
278
 
423
- #showMenu:checked ~ .nav__inner,
424
- #showAccount:checked ~ .nav__menu--account {
425
-
426
- height: 100vh;
427
- overflow: visible;
428
- overflow-x: auto;
429
- left: 0;
430
-
431
- @include media-breakpoint-up(sm) {
279
+ .menu:not(.has-secondary) .menu__primary{
432
280
 
433
- left: calc(100% - #{rem(375)});
281
+ display: block;
282
+ padding-bottom: rem(48);
434
283
  }
435
- }
436
284
 
437
- @include media-breakpoint-up(md) {
438
-
439
- #showAccount ~ .nav__menu--account {
285
+ ::slotted(button) {
440
286
 
441
- display: none;
287
+ display: block!important;
288
+ margin: 0 0 rem(24) 0!important;
289
+ width: 100%!important;
290
+ max-width: 100%!important;
291
+ text-align: center!important;
292
+ flex-shrink: 0;
442
293
  }
443
294
 
444
- #showAccount:checked ~ .nav__menu--account {
445
-
446
- left: 0;
447
- width: 100%;
448
- height: auto;
295
+ .has-actions slot[name="actions"]{
449
296
  display: block;
450
- top: 6rem;
451
- border-top: rem(5) solid var(--colour-primary);
452
- border-bottom: 1px solid var(--colour-border-light);
453
- -webkit-box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
454
- -moz-box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
455
- box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
297
+ padding-bottom: rem(24);
456
298
  }
457
- }
458
299
 
459
- #showMenu:checked ~ div .nav__menu,
460
- #showMenu:checked ~ div .nav__btn,
461
- #showMenu:checked ~ div .nav__menu--secondary,
462
- #showMenu:not(:checked) ~ #showSearch:checked ~ div .nav__menu--search {
463
- display: block;
464
- }
465
-
466
-
467
-
468
- #showMenu:checked ~ div .nav__menu-btn label,
469
- #showSearch:checked ~ div .nav__search-btn label {
470
-
471
- border: 0;
472
-
473
- .icon {
474
- opacity: 0;
300
+ slot[name="actions"]::slotted(button){
301
+ margin-top: 0!important;
475
302
  }
476
- &:before {
477
- width: 100%;
478
- transform: rotate(45deg);
479
- }
480
- &:after {
481
303
 
304
+ // Search
305
+ .dialog__wrapper {
482
306
  width: 100%;
483
- transform: rotate(-45deg);
307
+ margin: 0 0 rem(48) 0!important;
308
+ flex-shrink: 0;
484
309
  }
485
- }
486
-
487
- @include media-breakpoint-up(sm) {
488
-
489
- #showMenu:checked ~ .nav__bg {
490
- content: " ";
491
- position: absolute;
492
- top: 0;
493
- left: 0;
494
- width: 100vw;
495
- height: 100vh;
496
- background: rgba(0,0,0,0.5);
497
- z-index: 1;
498
-
310
+ .dialog__wrapper > .btn {
311
+ display: none;
499
312
  }
500
- }
501
-
502
- @include media-breakpoint-up(md) {
503
-
504
- .nav__bg {
505
- display: none;
313
+ .dialog__wrapper dialog {
314
+ display: contents;
506
315
  }
507
316
  }
508
-
509
317
  // #endregion
510
318
 
511
- // #region Desktop nav
512
- @include media-breakpoint-up(md) {
513
-
514
- .nav .nav__mobile-bar {
319
+ // #region tablet tweaks
320
+ @media screen and (max-width: 62em) and (min-width: 36em) {
515
321
 
516
- display: none;
322
+ .menu {
323
+ padding-right: rem(40)!important;
517
324
  }
518
325
 
326
+ .has-secondary .menu__secondary {
519
327
 
520
- .nav__logo {
521
- height: rem(64);
522
- }
523
-
524
- #showMenu:checked ~ .nav__inner,
525
- .nav__inner {
526
- overflow: visible;
527
- position: static;
528
- width: 100%;
529
- }
328
+ margin-right: rem(-40)!important;
329
+ padding-right: rem(40)!important;
530
330
 
531
- .nav .nav__menu {
532
- display: flex;
533
- padding-bottom: 0;
331
+ &:before {
332
+ width: calc(100% - 4rem) !important
333
+ }
534
334
  }
335
+ ::slotted(button) {
535
336
 
536
- .nav__btn,
537
- .nav__menu--secondary {
538
- display: flex;
337
+ width: auto!important;
539
338
  }
339
+ }
340
+ // #endregion
540
341
 
541
- .nav {
342
+ // #region desktop
343
+ @include media-breakpoint-up(md) {
542
344
 
543
- .nav__inner > .container {
544
- padding-bottom: 1rem;
545
- }
546
-
345
+ :host {
346
+ max-width: 100%!important;
347
+ padding: 0!important;
547
348
  }
548
-
549
- .nav__search-btn,
550
- .nav__btn {
551
- order: 2;
552
- margin-left: 1rem;
553
349
 
554
- .btn {
555
- margin-bottom: 0;
556
- }
557
- }
558
- .nav__menu {
559
- padding-top: 0;
560
- }
561
- .nav__menu > .list-unstyled {
562
- margin-left: -1.5rem!important;
563
- margin-right: -1.5rem!important;
564
- width: calc(100% + 3rem);
565
- margin-bottom: 0;
566
- //text-align: right;
567
- padding-top: 0;
568
- padding-left: 1.5rem;
569
- padding-right: 1.5rem;
570
-
571
- > li {
572
- display: inline-block;
573
- padding-left: 1rem;
574
- padding-right: 1rem;
350
+ :host > .container {
351
+ padding-block: rem(24)!important;
352
+ display: flex;
353
+ flex-wrap: nowrap;
354
+ align-items: center;
575
355
 
576
- &:not(:last-child){
577
-
578
- border-right: 1px solid var(--colour-border);
579
- }
580
- > a {
581
- line-height: 1.75rem;
582
- }
583
- > a.current {
584
- border-left: none;
585
- padding-left: 0;
586
- border-bottom: rem(3) solid var(--colour-info);
587
- }
356
+ &:has(.has-secondary) {
357
+ padding-top: rem(24 + 40)!important;
588
358
  }
589
- }
590
-
591
- .nav__account-btn {
592
- max-width: fit-content!important;
593
359
 
594
- label {
595
-
596
- border: none!important;
597
- padding-top: 0.5rem;
598
- position: relative;
599
- padding-right: 2.5rem;
600
-
601
- &:after {
602
- content: "";
603
- position: absolute;
604
- top: calc(50% + 0.5rem);
605
- right: 0;
606
- width: 1.5em;
607
- height: 1.5em;
608
- background: currentColor;
609
- mask-image: var(--icon-arrow);
610
- mask-size: 50%;
611
- mask-repeat: no-repeat;
612
- mask-position: 50% 50%;
613
- -webkit-mask-image: var(--icon-arrow);
614
- -webkit-mask-size: 50%;
615
- -webkit-mask-repeat: no-repeat;
616
- -webkit-mask-position: 50% 50%;
617
- transition: transform 0.2s ease-in-out;
618
- transform: rotate(90deg) translate(-50%, 0);
619
- }
360
+ > * {
361
+ margin-bottom: 0!important;
620
362
  }
621
363
  }
622
364
 
623
- .nav .nav__menu--secondary > .container > .list-unstyled {
624
- font-size: rem(15);
625
- padding-top: 0;
365
+ .btn-menu {
366
+ display: none;
626
367
  }
627
368
 
628
-
629
- }
630
- // #endregion
631
-
632
-
633
- // #region Nav secondary DESKTOP
634
- @include media-breakpoint-up(md) {
635
-
636
-
637
- .nav__menu--secondary {
638
- background-color: var(--colour-primary);
639
- @include invert-colours();
640
-
641
- .nav__section-link {
642
- pointer-events: all;
643
- }
369
+ .buttons-holder {
370
+ display: contents;
644
371
  }
645
-
646
- .nav__menu--secondary > .container {
647
- padding-bottom: 0;
372
+ .buttons-holder .btn-menu {
373
+ display: inline-block;
374
+ order: 2;
648
375
  }
649
376
 
650
- .nav__menu--secondary > .container > .list-unstyled {
651
- margin-left: -1rem!important;
652
- margin-right: -1rem!important;
653
- width: calc(100% + 2rem);
654
- margin-bottom: 0;
655
-
656
- > li {
657
- display: inline-block;
658
- padding-left: 1rem;
659
- padding-right: 1rem;
660
- border: none!important;
661
- padding-block: 0;
662
- position: relative;
663
-
664
- a,
665
- .nav__section-link {
666
- display: block;
667
- line-height: 2.25rem;
668
- padding-block: 0.5rem;
669
- cursor: pointer;
670
- }
671
-
672
- ul {
673
- display: none;
674
- }
675
-
676
- &:hover,
677
- &:focus,
678
- &:focus-within {
679
-
680
- > .nav__section-link {
681
-
682
- color: var(--colour-selected);
683
- }
377
+ .menu,
378
+ .menu__outer,
379
+ .menu__primary {
380
+ display: contents;
381
+ }
684
382
 
685
- ul {
686
- display: block;
687
- background: white;
688
- position: absolute;
689
- top: 100%;
690
- left: 0;
691
- padding-top: rem(16);
383
+ .menu__secondary {
384
+ display: none;
385
+ }
692
386
 
693
- -webkit-box-shadow: 0 4px 20px -10px rgba(51,51,51,0.25);
694
- box-shadow: 0 4px 20px -10px rgba(51,51,51,0.25);
387
+ .has-secondary .menu__secondary {
695
388
 
696
- @include reset-colours();
697
-
698
- --colour-admin: var(--colour-admin-theme);
389
+ background-color: var(--colour-canvas-2);
390
+ display: block;
391
+ position: absolute;
392
+ top: 0;
393
+ left: 0;
394
+ width: 100%;
699
395
 
700
- li {
396
+ @media screen and (prefers-color-scheme: light) {
701
397
 
702
- padding-inline: rem(24);
703
- }
398
+ background-color: #EEEEEE;
399
+ @include reset-colours();
400
+ }
704
401
 
705
- li:last-child {
402
+ @media screen and (prefers-color-scheme: dark) {
706
403
 
707
- padding-bottom: rem(16);
708
- }
709
-
710
- li.nav__download {
711
- background: var(--colour-admin);
712
- padding-top: rem(16);
713
-
714
- & + li.nav__download {
715
- padding-top: 0;
716
- }
717
- }
718
-
719
- a {
720
- white-space: nowrap;
721
- padding: 0;
722
- line-height: 3rem;
723
-
724
- .icon {
725
- display: inline-block;
726
- font-size: 1.5em;
727
- padding: 0;
728
- margin: -0.15em 0.25em 0 0;
729
- }
730
- }
731
- }
732
- }
404
+
405
+ @include invert-colours();
733
406
  }
734
- }
735
-
736
- .nav__menu--secondary > .container > .logout-button {
737
- display: none;
738
- }
739
-
740
- }
741
- // #endregion
742
-
743
-
744
- // #region Nav account Desktop
745
407
 
746
408
 
747
- @include media-breakpoint-up(md) {
748
- .nav__menu--account {
749
-
750
- > .container:first-child {
751
-
752
- display: none;
409
+ .container {
410
+ margin-left: auto;
411
+ margin-right: auto;
412
+ padding: var(--container-padding)!important;
413
+ padding-top: rem(8)!important;
414
+ padding-bottom: rem(8)!important;
415
+ text-align: right;
753
416
  }
417
+ }
754
418
 
755
- > .container:not(:first-child) {
419
+ ::slotted(a[slot="secondary"]) {
420
+ font-size: rem(14)!important;
756
421
 
757
- &:before {
758
- display: none;
759
- }
760
-
761
- display: flex;
762
- flex-wrap: wrap;
763
- gap: 2rem;
764
-
765
- align-items: start;
422
+ &:after {
423
+ top: calc(100% - 0.25em)!important;
424
+ }
425
+ }
766
426
 
767
- > .row,
768
- .nav__featured-link,
769
- .credits {
427
+ ::slotted(a:not([slot="logo"])),
428
+ ::slotted(button) {
770
429
 
771
- flex-basis: 22%;
772
- flex-grow: 1;
773
- margin: 0;
430
+ margin-bottom: 0!important;
431
+ margin-right: 0!important;
432
+ }
774
433
 
775
- }
434
+ ::slotted(a:not([slot="logo"])) {
776
435
 
777
- > .row > .col:first-child,
778
- .nav__featured-link > .row > .col:first-child {
779
- max-width: 100%!important;
780
- width: 100%;
781
- flex-shrink: 0;
782
- min-width: 100%;
783
- margin-bottom: 1rem;
784
- }
436
+ margin-left: rem(32)!important;
437
+ font-size: rem(16)!important;
438
+ font-weight: normal!important;
785
439
 
786
- .logout-button {
787
- min-width: 100%;
788
- }
789
- }
440
+ &:after {
441
+ display: none;
442
+ }
790
443
  }
791
- }
792
- // #endregion
793
444
 
445
+ ::slotted(button) {
794
446
 
795
- // #region Mega menu
796
- .nav .list-unstyled > li details.nav__mega-menu {
447
+ margin-left: rem(48)!important;
448
+ }
797
449
 
798
- @include media-breakpoint-up(md) {
450
+ .has-actions slot[name="actions"]{
451
+ display: block;
452
+ padding-left: rem(48);
453
+ }
799
454
 
800
- position: static;
455
+ // Search bar
456
+ slot[name="actions"]::slotted(button) {
801
457
 
802
- height: 4.5rem;
803
- margin-bottom: -5rem;
458
+ margin-left: rem(12)!important;
804
459
  }
805
460
 
806
- .inner {
461
+ :host([data-search]) slot[name="actions"] {
807
462
 
808
- z-index: 5;
463
+ padding-left: 0!important;
464
+ }
465
+
466
+ #search-wrapper {
809
467
 
810
- [class*="bg-"]{
811
-
812
- --bs-bg-opacity: 0;
813
- @include media-breakpoint-up(md) {
814
- --bs-bg-opacity: 1;
815
- }
816
- }
468
+ margin-left: rem(24)!important;
469
+ position: static;
470
+ }
817
471
 
472
+ #search-dialog[open] {
473
+ position: absolute;
474
+ top: auto;
475
+ bottom: 0;
476
+ left: 0;
477
+ width: 100%;
478
+ padding-block: rem(24);
479
+ padding-inline: 0;
480
+ background-color: transparent;
818
481
 
819
- @include media-breakpoint-up(md) {
482
+ text-align: right;
483
+ border-radius: 0;
484
+ box-shadow: none;
820
485
 
821
- --bs-bg-opacity: 1;
822
- position: absolute;
823
- top: 100%;
824
- left: 50%;
825
- width: 100vw!important;
826
- max-width: 100vw!important;
827
- -webkit-transform: translateX(-50%);
828
- -ms-transform: translateX(-50%);
829
- transform: translateX(-50%);
830
-
831
- background: rgba(0,0,0,.6);
832
- height: calc(100vh - 8rem);
833
-
834
- pointer-events: none;
835
- padding-top: 0;
836
-
837
- .container {
838
- padding: 0 rem(60 - 36) 1rem rem(60 - 36)!important;
839
- max-width: rem(1440)!important;
840
- text-align: left;
841
- pointer-events: all;
842
- display: flex;
843
-
844
- > div {
845
- padding: rem(36);
846
- }
847
- }
486
+ .container {
487
+
488
+ padding: var(--container-padding);
489
+ padding-bottom: 0;
848
490
  }
849
491
  }
850
- }
851
- // #endregion
852
492
 
853
- // #region inline search
854
- .nav--inline-search {
493
+ :host(.search-open) {
855
494
 
856
- .nav__menu form {
857
- position: relative;
858
- .form-control__wrapper .form-control {
859
- padding-right: 3rem;
860
- }
495
+ background: #E6EAEC!important;
861
496
 
862
- button {
863
- position: absolute;
864
- bottom: 0;
865
- right: 0;
866
- margin: 0;
867
- z-index: var(--index-focus);
868
- border-color: transparent;
869
- background: transparent;
870
- padding: 0.85rem 0rem;
871
-
872
- .icon {
873
- stroke: currentColor;
874
- }
497
+ @media screen and (prefers-color-scheme: dark) {
498
+
499
+ background: var(--colour-canvas-2)!important;
875
500
  }
876
- }
877
501
 
878
- @include media-breakpoint-up(md) {
879
- .nav__menu > .list-unstyled {
880
- text-align: left;
881
- margin-right: 0!important;
502
+ .buttons-holder,
503
+ #search-button {
504
+ display: none;
882
505
  }
506
+ }
883
507
 
884
- .nav__menu form {
885
- min-width: rem(350);
886
- position: relative;
887
-
888
- .form-control__wrapper {
889
- margin-bottom: 0;
890
- display: flex;
891
- align-items: center;
508
+ :host(.search-open.bg-primary) {
892
509
 
893
- label {
894
- white-space: nowrap;
895
- padding-right: 1rem;
896
- }
510
+ background: var(--colour-primary)!important;
897
511
 
898
- .form-control {
899
- padding: rem(7) 3rem rem(7) 1rem;
900
- }
901
- }
902
-
903
- button {
904
- padding: rem(8) 0rem;
905
- }
512
+ .suffix,
513
+ #search {
514
+ border: 2px solid #B3C1C5;
515
+ color: white;
516
+ }
517
+ #search {
518
+ border-right: 0;
906
519
  }
907
520
  }
908
- }
909
- // #endregion
910
521
 
911
- // #region nav admin
912
- @include media-breakpoint-up(md) {
913
- .nav--admin {
914
- .nav__logo {
915
- height: 3rem;
522
+ // backdrop
523
+ .backdrop {
916
524
 
917
- .brand {
918
- font-size: 3rem;
919
- }
525
+ content: "";
526
+ display: block;
527
+ position: absolute;
528
+ top: 100%;
529
+ left: 0;
530
+ height: calc(100vh - var(--nav-height));
531
+ width: 100%;
532
+ z-index: -1;
533
+ pointer-events: none;
534
+ transition: background 0.5s;
535
+
536
+ &.show {
537
+
538
+ pointer-events: all;
539
+ background: rgba(0,0,0,0.2);
540
+ backdrop-filter: blur(2px);
920
541
  }
921
542
  }
922
543
  }
923
544
  // #endregion
924
545
 
925
- // #region
546
+ // #region Menus
547
+ ::slotted(.nav--menu) {
548
+ overscroll-behavior: contain;
549
+ width: calc(#{rem(375)} - var(--scrollbar-width));
550
+ background-color: var(--colour-canvas-2);
551
+ position: absolute;
552
+ height: calc(100vh - #{rem(96)});
553
+ left: 100%;
554
+ top: 0;
555
+ padding: 0 rem(24) 0 rem(24);
556
+ z-index: var(--index-menu);
557
+ overflow: auto;
558
+ transition: all 1s ease-out;
559
+ display: flex;
560
+ flex-direction: column;
561
+ flex-wrap: nowrap;
926
562
 
927
- .nav--just-account {
563
+ > * {
564
+ flex-shrink: 0;
565
+ }
928
566
 
929
- .nav__menu,
930
- .nav__account-btn {
931
- display: none!important;
567
+ @media screen and (prefers-color-scheme: dark) {
568
+ --colour-link: var(--colour-white);
569
+ @include invert-colours();
932
570
  }
933
571
 
934
- @include media-breakpoint-up(md) {
572
+ // The menu is always white unless in dark mode
573
+ @media screen and (prefers-color-scheme: light) {
935
574
 
936
- .nav__menu,
937
- .nav__account-btn {
938
- display: block!important;
939
- }
575
+ background-color: var(--colour-white);
576
+ @include reset-colours();
940
577
  }
941
578
 
942
- #showMenu:checked ~ .nav__menu--account {
943
- height: 100vh;
944
- overflow: visible;
945
- overflow-x: auto;
946
- left: 0;
947
- pointer-events: none;
948
- background: transparent;
579
+ @media (forced-colors: active) {
580
+
581
+ outline: 1px solid white;
582
+ }
949
583
 
584
+ &:before {
585
+ display: block ;
586
+ width: 100%;
587
+ border-top: 2px solid var(--colour-border);
588
+ z-index: 1;
589
+ padding-block: rem(24);
590
+ margin: 0;
591
+ font-family: $headings-font-family;
592
+ font-style: $headings-font-style;
593
+ font-weight: $headings-font-weight;
594
+ color: $headings-color;
595
+ clear: both;
596
+ font-size: rem(map-get($heading-sizes,"h3_fs"));
597
+ line-height: rem(map-get($heading-sizes,"h3_lh"));
598
+ max-width: var(--content-max-width);
599
+
950
600
  @include media-breakpoint-up(sm) {
951
-
952
- width: rem(375);
953
- left: calc(100% - #{rem(375)});
601
+
602
+ font-size: rem(map-get($heading-sizes,"h3_fs_sm"));
603
+ line-height: rem(map-get($heading-sizes,"h3_lh_sm"));
954
604
  }
605
+ }
955
606
 
956
- > .container:first-child {
957
- opacity: 0;
958
- }
959
- > .container:not(:first-child) {
960
- pointer-events: all;
961
- }
607
+ &:before {
608
+ content: attr(data-title);
962
609
  }
610
+
611
+ @include media-breakpoint-up(md) {
612
+
613
+
614
+ height: calc(100vh - var(--nav-height));
615
+ top: 100%;
616
+ }
617
+ }
618
+
619
+ ::slotted(.nav--menu.open) {
620
+ left: calc(100% - (#{rem(375)} - var(--scrollbar-width)) );
621
+ -webkit-box-shadow: 0 6px 12px 0px rgba(0,0,0,0.2);
622
+ box-shadow: 0 6px 12px 0px rgba(0,0,0,0.2);
623
+ pointer-events: all;
963
624
  }
964
625
 
626
+ @media screen and (max-width: 62em) {
627
+ :host(.open) .menu__outer {
628
+
629
+ background: rgba(0,0,0,0.2);
630
+ backdrop-filter: blur(2px);
631
+ }
632
+ }
965
633
  // #endregion