vanilla-framework 4.13.0 → 4.15.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.
- package/package.json +14 -12
- package/scss/_base_forms-range.scss +2 -2
- package/scss/_base_forms.scss +0 -5
- package/scss/_base_icon-definitions.scss +29 -0
- package/scss/_base_placeholders.scss +1 -3
- package/scss/_global_functions.scss +1 -1
- package/scss/_layouts_application-panels.scss +3 -12
- package/scss/_layouts_application.scss +2 -2
- package/scss/_patterns_article-pagination.scss +2 -3
- package/scss/_patterns_buttons.scss +1 -1
- package/scss/_patterns_cta.scss +20 -0
- package/scss/_patterns_form-tick-elements.scss +1 -1
- package/scss/_patterns_grid.scss +74 -2
- package/scss/_patterns_icons.scss +10 -8
- package/scss/_patterns_image.scss +19 -3
- package/scss/_patterns_links.scss +26 -0
- package/scss/_patterns_logo-section.scss +4 -42
- package/scss/_patterns_media-object.scss +21 -1
- package/scss/_patterns_navigation-reduced.scss +121 -0
- package/scss/_patterns_navigation.scss +169 -40
- package/scss/_patterns_switch.scss +7 -7
- package/scss/_settings_colors.scss +18 -5
- package/scss/_settings_spacing.scss +1 -0
- package/scss/_vanilla.scss +4 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
@mixin vf-p-navigation-reduced {
|
|
2
|
+
.p-navigation--reduced {
|
|
3
|
+
// height of reduced navigation calculated from line height and padding
|
|
4
|
+
$reduced-nav-height: calc(map-get($line-heights, x-small) + 2 * $spv--small);
|
|
5
|
+
|
|
6
|
+
background-color: $colors--theme--background-alt;
|
|
7
|
+
position: relative;
|
|
8
|
+
z-index: 99; // display above sticky top navigation, but below modals/overlays
|
|
9
|
+
|
|
10
|
+
// LOGO OVERRIDES FOR REDUCED NAVIGATION
|
|
11
|
+
|
|
12
|
+
// orange logo tag is hidden in reduced navigation
|
|
13
|
+
.p-navigation__tagged-logo {
|
|
14
|
+
.p-navigation__logo-tag {
|
|
15
|
+
display: none;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@media (min-width: $breakpoint-navigation-threshold) {
|
|
19
|
+
// on large screens align the logo with the grid start
|
|
20
|
+
.p-navigation__link {
|
|
21
|
+
padding-left: 0;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// reduced nav logo text uses default font size (on small screens)
|
|
27
|
+
.p-navigation__logo-title {
|
|
28
|
+
color: $colors--theme--text-muted;
|
|
29
|
+
font-size: #{map-get($font-sizes, default)}rem;
|
|
30
|
+
font-weight: $font-weight-regular-text;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// reduced padding on small screens
|
|
34
|
+
.p-navigation__link {
|
|
35
|
+
padding-bottom: $spv--medium;
|
|
36
|
+
padding-top: $spv--medium;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// links in the banner (Menu toggle, search toggle) use muted text colour
|
|
40
|
+
.p-navigation__banner .p-navigation__link {
|
|
41
|
+
color: $colors--theme--text-muted;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// REDUCED SIZE OF NAVIGATION ON LARGE SCREENS
|
|
45
|
+
@media (min-width: $breakpoint-navigation-threshold) {
|
|
46
|
+
// adjust font size for reduced nav on large screens
|
|
47
|
+
.p-navigation__link,
|
|
48
|
+
.p-navigation__logo-title {
|
|
49
|
+
color: $colors--theme--text-muted;
|
|
50
|
+
font-size: #{map-get($font-sizes, small)}rem;
|
|
51
|
+
line-height: map-get($line-heights, x-small);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.p-navigation__link {
|
|
55
|
+
padding-bottom: $spv--small;
|
|
56
|
+
padding-top: $spv--small;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.p-navigation__item--dropdown-toggle .p-navigation__link {
|
|
60
|
+
&::after {
|
|
61
|
+
@include vf-icon-chevron-muted;
|
|
62
|
+
top: $spv--small;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.p-navigation__item--dropdown-toggle.is-active {
|
|
67
|
+
background-color: $colors--theme--background-default;
|
|
68
|
+
|
|
69
|
+
.p-navigation__link {
|
|
70
|
+
color: $colors--theme--text-default;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.p-navigation__link::after {
|
|
74
|
+
@include vf-icon-chevron-themed;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.p-navigation__link--search-toggle {
|
|
79
|
+
&::after {
|
|
80
|
+
@include vf-icon-search-muted;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// SEARCH IN REDUCED NAVIGATION
|
|
86
|
+
|
|
87
|
+
.p-navigation__link--search-toggle {
|
|
88
|
+
// use muted icon to align with text colour
|
|
89
|
+
&::after {
|
|
90
|
+
@include vf-icon-search-muted;
|
|
91
|
+
top: calc($spv--medium + map-get($nudges, x-small));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// search label is always hidden in reduced navigation
|
|
95
|
+
.p-navigation__search-label {
|
|
96
|
+
display: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media (min-width: $breakpoint-navigation-threshold) {
|
|
100
|
+
&::after {
|
|
101
|
+
top: $spv--small;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@media (min-width: $breakpoint-navigation-threshold) {
|
|
107
|
+
&.has-search-open {
|
|
108
|
+
// make sure reduced navigation items remain visible when search is open
|
|
109
|
+
// both classes needed for specificity
|
|
110
|
+
.p-navigation__nav .p-navigation__items {
|
|
111
|
+
display: inline-flex;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// position the search under the reduced navigation
|
|
115
|
+
.p-navigation__search {
|
|
116
|
+
top: $reduced-nav-height;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
@import 'settings';
|
|
2
2
|
|
|
3
3
|
$lightness-threshold: 70;
|
|
4
|
-
$navigation-logo-tag-width: 1.
|
|
5
|
-
$navigation-logo-tag-height:
|
|
6
|
-
$navigation-logo-
|
|
7
|
-
$navigation-logo-banner-height: 3rem; // legacy logo height (small and medium screens)
|
|
8
|
-
$navigation-logo-banner-height-desktop: 3.5rem; // legacy logo height (on large screens)
|
|
4
|
+
$navigation-logo-tag-width: 1.375rem; // 22px when 1rem is 16px
|
|
5
|
+
$navigation-logo-tag-height: 2.375rem; // 38px when 1rem is 16px
|
|
6
|
+
$navigation-logo-banner-height: 3.5rem; // legacy logo height (on large screens)
|
|
9
7
|
$navigation-logo-size: 1rem;
|
|
10
|
-
$navigation-logo-padding: calc(1.5rem + 0.
|
|
8
|
+
$navigation-logo-padding: calc(1.5rem + 0.1rem); // ~25.6px to align better with logos as originally designed in SVG
|
|
11
9
|
$sph-navigation-link: 0.3rem;
|
|
12
|
-
$spv-navigation-logo-bottom-position: 0.
|
|
10
|
+
$spv-navigation-logo-bottom-position: 0.25rem; // 4px when 1rem is 16px
|
|
11
|
+
$navigation-height: calc(map-get($line-heights, default-text) + 2 * $spv--large); // navigation bar height based on line height and paddings
|
|
13
12
|
|
|
14
13
|
@mixin vf-p-navigation {
|
|
15
14
|
// placeholders
|
|
@@ -140,8 +139,10 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
140
139
|
}
|
|
141
140
|
|
|
142
141
|
.p-navigation,
|
|
143
|
-
.p-navigation--sliding
|
|
142
|
+
.p-navigation--sliding,
|
|
143
|
+
.p-navigation--reduced {
|
|
144
144
|
background-color: $colors--theme--background-default;
|
|
145
|
+
color: $colors--theme--text-default;
|
|
145
146
|
display: flex;
|
|
146
147
|
flex-direction: column;
|
|
147
148
|
flex-shrink: 0;
|
|
@@ -154,6 +155,7 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
154
155
|
|
|
155
156
|
// p-search-box overrides
|
|
156
157
|
.p-search-box {
|
|
158
|
+
background-color: $colors--theme--background-default;
|
|
157
159
|
flex: 1 0 auto;
|
|
158
160
|
margin-left: map-get($grid-margin-widths, small);
|
|
159
161
|
margin-right: map-get($grid-margin-widths, small);
|
|
@@ -228,6 +230,7 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
228
230
|
// shift navigation items by the size of grid margin to align with grid
|
|
229
231
|
.p-navigation__items:first-child {
|
|
230
232
|
margin-left: calc(-1 * $sph--large);
|
|
233
|
+
width: calc(100% + $sph--large);
|
|
231
234
|
}
|
|
232
235
|
|
|
233
236
|
// on medium screen sizes (6 columns) use 2/4 column split
|
|
@@ -261,12 +264,33 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
261
264
|
|
|
262
265
|
max-width: $nav-link-max-width;
|
|
263
266
|
}
|
|
267
|
+
|
|
268
|
+
&.is-right-shifted {
|
|
269
|
+
margin-left: auto;
|
|
270
|
+
}
|
|
264
271
|
}
|
|
265
272
|
|
|
266
273
|
.p-navigation__link {
|
|
267
274
|
@extend %navigation-link;
|
|
268
275
|
}
|
|
269
276
|
|
|
277
|
+
.p-navigation__link--menu-toggle {
|
|
278
|
+
@extend %navigation-link;
|
|
279
|
+
|
|
280
|
+
&::after {
|
|
281
|
+
@extend %icon;
|
|
282
|
+
@include vf-icon-chevron-themed;
|
|
283
|
+
content: '';
|
|
284
|
+
display: inline-block;
|
|
285
|
+
height: 1rem;
|
|
286
|
+
width: 1rem;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.has-menu-open &::after {
|
|
290
|
+
transform: rotate(180deg);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
270
294
|
// navigation logo
|
|
271
295
|
.p-navigation__banner {
|
|
272
296
|
@extend %navigation-link-responsive-padding-left;
|
|
@@ -276,10 +300,12 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
276
300
|
justify-content: space-between;
|
|
277
301
|
padding-right: 0;
|
|
278
302
|
|
|
279
|
-
.p-navigation__link
|
|
303
|
+
.p-navigation__link,
|
|
304
|
+
.p-navigation__link--menu-toggle {
|
|
280
305
|
// reset padding for navigation links in the navigation banner
|
|
281
306
|
@extend %navigation-link-responsive-padding-horizontal;
|
|
282
|
-
|
|
307
|
+
padding-bottom: $spv--large;
|
|
308
|
+
padding-top: $spv--large;
|
|
283
309
|
|
|
284
310
|
// remove navigation separator for navigation links in the navigation banner
|
|
285
311
|
&::before {
|
|
@@ -300,10 +326,6 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
300
326
|
height: $navigation-logo-banner-height;
|
|
301
327
|
margin: 0 $sph--large 0 0;
|
|
302
328
|
|
|
303
|
-
@media (min-width: $breakpoint-navigation-threshold) {
|
|
304
|
-
height: $navigation-logo-banner-height-desktop;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
329
|
.p-navigation__item {
|
|
308
330
|
@include vf-focus;
|
|
309
331
|
|
|
@@ -320,24 +342,20 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
320
342
|
}
|
|
321
343
|
|
|
322
344
|
.p-navigation__logo-tag {
|
|
345
|
+
align-items: flex-end;
|
|
323
346
|
background-color: $color-ubuntu;
|
|
347
|
+
display: flex;
|
|
324
348
|
height: $navigation-logo-tag-height;
|
|
349
|
+
justify-content: center;
|
|
325
350
|
left: 0;
|
|
351
|
+
padding-bottom: $spv-navigation-logo-bottom-position;
|
|
326
352
|
position: absolute;
|
|
327
353
|
top: 0;
|
|
328
354
|
width: $navigation-logo-tag-width;
|
|
329
|
-
|
|
330
|
-
@media (min-width: $breakpoint-navigation-threshold) {
|
|
331
|
-
height: $navigation-logo-tag-height-desktop;
|
|
332
|
-
}
|
|
333
355
|
}
|
|
334
356
|
|
|
335
357
|
.p-navigation__logo-icon {
|
|
336
|
-
bottom: $spv-navigation-logo-bottom-position;
|
|
337
358
|
height: $navigation-logo-size;
|
|
338
|
-
left: 50%;
|
|
339
|
-
position: absolute;
|
|
340
|
-
transform: translate(-50%, 0);
|
|
341
359
|
width: $navigation-logo-size;
|
|
342
360
|
}
|
|
343
361
|
|
|
@@ -391,6 +409,7 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
391
409
|
display: flex;
|
|
392
410
|
flex-wrap: wrap;
|
|
393
411
|
margin-top: 0; // prevents bottom border of nav from moving 1px
|
|
412
|
+
position: static;
|
|
394
413
|
}
|
|
395
414
|
}
|
|
396
415
|
|
|
@@ -494,6 +513,15 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
494
513
|
}
|
|
495
514
|
}
|
|
496
515
|
|
|
516
|
+
// STICKY NAVIGATION
|
|
517
|
+
.p-navigation.is-sticky,
|
|
518
|
+
// cover both --sticky and --reduced navigation
|
|
519
|
+
[class^='p-navigation--'].is-sticky {
|
|
520
|
+
position: sticky;
|
|
521
|
+
top: 0;
|
|
522
|
+
z-index: 98; // show it above all other content, but below modal/overlays and reduced navigation
|
|
523
|
+
}
|
|
524
|
+
|
|
497
525
|
// SEARCH
|
|
498
526
|
|
|
499
527
|
// on mobile screens search box is visible inside of the mobile navigation dropdown
|
|
@@ -524,10 +552,9 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
524
552
|
|
|
525
553
|
// show both label and icon on large screens
|
|
526
554
|
@media (min-width: $breakpoint-large) {
|
|
527
|
-
padding-left: $sph--large;
|
|
528
|
-
|
|
529
555
|
.p-navigation__search-label {
|
|
530
556
|
display: initial;
|
|
557
|
+
padding-left: $sph--large;
|
|
531
558
|
}
|
|
532
559
|
}
|
|
533
560
|
|
|
@@ -544,12 +571,8 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
544
571
|
position: absolute;
|
|
545
572
|
right: calc($sph--large / 2);
|
|
546
573
|
text-indent: calc(100% + 10rem);
|
|
547
|
-
top: calc($spv--
|
|
574
|
+
top: calc($spv--large + map-get($nudges, x-small));
|
|
548
575
|
width: map-get($icon-sizes, default);
|
|
549
|
-
|
|
550
|
-
@media (min-width: $breakpoint-navigation-threshold) {
|
|
551
|
-
top: calc($spv--large + map-get($nudges, x-small));
|
|
552
|
-
}
|
|
553
576
|
}
|
|
554
577
|
}
|
|
555
578
|
|
|
@@ -589,10 +612,12 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
589
612
|
|
|
590
613
|
// when navigation search is expanded
|
|
591
614
|
.p-navigation.has-search-open,
|
|
592
|
-
.p-navigation--sliding.has-search-open
|
|
615
|
+
.p-navigation--sliding.has-search-open,
|
|
616
|
+
.p-navigation--reduced.has-search-open {
|
|
593
617
|
// make sure search in navigation renders on top of the overlay
|
|
594
618
|
.p-navigation__nav {
|
|
595
619
|
display: flex;
|
|
620
|
+
position: relative;
|
|
596
621
|
z-index: 60;
|
|
597
622
|
}
|
|
598
623
|
|
|
@@ -603,7 +628,14 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
603
628
|
|
|
604
629
|
// show expanded search box
|
|
605
630
|
.p-navigation__search {
|
|
631
|
+
background-color: $colors--theme--background-default;
|
|
606
632
|
display: flex;
|
|
633
|
+
position: absolute;
|
|
634
|
+
width: 100%;
|
|
635
|
+
|
|
636
|
+
@media (min-width: $breakpoint-navigation-threshold) {
|
|
637
|
+
background-color: transparent;
|
|
638
|
+
}
|
|
607
639
|
}
|
|
608
640
|
|
|
609
641
|
// fade in search overlay
|
|
@@ -611,6 +643,11 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
611
643
|
opacity: 0.5;
|
|
612
644
|
pointer-events: all;
|
|
613
645
|
}
|
|
646
|
+
|
|
647
|
+
// change search toggle icon to close icon
|
|
648
|
+
.p-navigation__link--search-toggle::after {
|
|
649
|
+
@include vf-icon-close-themed;
|
|
650
|
+
}
|
|
614
651
|
}
|
|
615
652
|
|
|
616
653
|
.p-navigation.has-menu-open {
|
|
@@ -692,6 +729,8 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
692
729
|
}
|
|
693
730
|
|
|
694
731
|
&.is-active {
|
|
732
|
+
background: $colors--theme--background-active;
|
|
733
|
+
|
|
695
734
|
&::after {
|
|
696
735
|
transform: rotate(0deg);
|
|
697
736
|
|
|
@@ -710,9 +749,56 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
710
749
|
// increase padding to accommodate chevron icon
|
|
711
750
|
padding-right: calc(2 * $sph--small + map-get($icon-sizes, default));
|
|
712
751
|
}
|
|
752
|
+
}
|
|
713
753
|
|
|
714
|
-
|
|
715
|
-
|
|
754
|
+
.p-navigation--reduced .p-navigation__dropdown.is-full-width,
|
|
755
|
+
.p-navigation--sliding .p-navigation__dropdown.is-full-width {
|
|
756
|
+
.p-navigation__dropdown-content--full-width {
|
|
757
|
+
@extend %vf-has-box-shadow;
|
|
758
|
+
@include vf-transition(transform, snap);
|
|
759
|
+
background-color: $colors--theme--background-default;
|
|
760
|
+
border-top: 1px solid $colors--theme--border-default;
|
|
761
|
+
display: none; // hide on small screens
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
// on desktop display full width meganav dropdowns
|
|
765
|
+
@media (min-width: $breakpoint-navigation-threshold) {
|
|
766
|
+
background-color: $color-transparent;
|
|
767
|
+
box-shadow: none;
|
|
768
|
+
left: 0;
|
|
769
|
+
overflow: hidden;
|
|
770
|
+
position: absolute;
|
|
771
|
+
right: 0;
|
|
772
|
+
|
|
773
|
+
// hide mobile sliding menu on full width view
|
|
774
|
+
.p-navigation__dropdown-content--sliding {
|
|
775
|
+
display: none;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
.p-navigation__dropdown-content--full-width {
|
|
779
|
+
display: block;
|
|
780
|
+
transform: translateY(0);
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
// collapsed dropdowns are animated off-screen
|
|
785
|
+
&.is-collapsed .p-navigation__dropdown-content--full-width {
|
|
786
|
+
transform: translateY(-101%);
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
// rows think they are nested (because they are inside of navigation row)
|
|
790
|
+
// we need to reset them back to original state
|
|
791
|
+
.row,
|
|
792
|
+
[class*='row--'] {
|
|
793
|
+
@extend %fixed-width-container--common-properties;
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
.p-navigation__dropdown-container {
|
|
798
|
+
display: none;
|
|
799
|
+
|
|
800
|
+
.p-navigation__item--dropdown-toggle.is-active & {
|
|
801
|
+
display: block;
|
|
716
802
|
}
|
|
717
803
|
}
|
|
718
804
|
|
|
@@ -749,13 +835,19 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
749
835
|
|
|
750
836
|
$sliding-nav-animation-settings: map-get($animation-duration, brisk) ease;
|
|
751
837
|
|
|
752
|
-
.p-navigation--sliding.has-menu-open
|
|
838
|
+
.p-navigation--sliding.has-menu-open,
|
|
839
|
+
.p-navigation--reduced.has-menu-open {
|
|
840
|
+
box-shadow: $colors--theme--background-overlay 0px 0px 0px 100vh;
|
|
753
841
|
height: 100vh;
|
|
754
842
|
overflow-y: hidden;
|
|
843
|
+
position: fixed;
|
|
844
|
+
width: 100vw;
|
|
755
845
|
|
|
756
846
|
@media (min-width: $breakpoint-navigation-threshold) {
|
|
757
847
|
height: auto;
|
|
758
848
|
overflow-y: visible;
|
|
849
|
+
position: relative;
|
|
850
|
+
width: auto;
|
|
759
851
|
}
|
|
760
852
|
|
|
761
853
|
.p-navigation__banner .p-navigation__items {
|
|
@@ -768,7 +860,7 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
768
860
|
}
|
|
769
861
|
.p-navigation__nav {
|
|
770
862
|
display: block;
|
|
771
|
-
height: 100vh;
|
|
863
|
+
height: calc(100vh - $navigation-height);
|
|
772
864
|
overflow-x: hidden;
|
|
773
865
|
|
|
774
866
|
.p-navigation__items {
|
|
@@ -792,14 +884,20 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
792
884
|
}
|
|
793
885
|
|
|
794
886
|
/* stylelint-disable max-nesting-depth -- allow deep nesting for sliding navigation */
|
|
795
|
-
.p-navigation--sliding .p-navigation__dropdown
|
|
887
|
+
.p-navigation--sliding .p-navigation__dropdown,
|
|
888
|
+
.p-navigation--reduced .p-navigation__dropdown {
|
|
796
889
|
display: block;
|
|
797
|
-
height: 100vh;
|
|
890
|
+
height: calc(100vh - $navigation-height);
|
|
798
891
|
left: 100vw;
|
|
799
892
|
position: absolute;
|
|
800
893
|
top: 0;
|
|
801
894
|
transition: transform $sliding-nav-animation-settings;
|
|
802
895
|
|
|
896
|
+
// set background of child elements to properly cover parent dropdown levels when scrolling
|
|
897
|
+
& > * {
|
|
898
|
+
background: $colors--theme--background-default;
|
|
899
|
+
}
|
|
900
|
+
|
|
803
901
|
@media (min-width: $breakpoint-navigation-threshold) {
|
|
804
902
|
display: none;
|
|
805
903
|
height: auto;
|
|
@@ -808,8 +906,9 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
808
906
|
top: unset;
|
|
809
907
|
}
|
|
810
908
|
|
|
909
|
+
// overlay to create fade out effect on parent level
|
|
811
910
|
&::before {
|
|
812
|
-
box-shadow: -100vw
|
|
911
|
+
box-shadow: -100vw 0 0 0 $colors--light-theme--background-overlay;
|
|
813
912
|
content: '';
|
|
814
913
|
height: 100%;
|
|
815
914
|
opacity: 0;
|
|
@@ -822,10 +921,14 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
822
921
|
}
|
|
823
922
|
}
|
|
824
923
|
|
|
924
|
+
&[aria-hidden='true'] {
|
|
925
|
+
overflow: hidden; // prevent scrolling when dropdown is off screen
|
|
926
|
+
}
|
|
927
|
+
|
|
825
928
|
&[aria-hidden='false'],
|
|
826
929
|
&:not([aria-hidden]) {
|
|
827
930
|
&::before {
|
|
828
|
-
|
|
931
|
+
opacity: 1;
|
|
829
932
|
}
|
|
830
933
|
|
|
831
934
|
display: block;
|
|
@@ -847,7 +950,8 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
847
950
|
}
|
|
848
951
|
}
|
|
849
952
|
|
|
850
|
-
.p-navigation--sliding .p-navigation__items
|
|
953
|
+
.p-navigation--sliding .p-navigation__items,
|
|
954
|
+
.p-navigation--reduced .p-navigation__items {
|
|
851
955
|
transition: transform $sliding-nav-animation-settings;
|
|
852
956
|
|
|
853
957
|
&.is-active {
|
|
@@ -878,7 +982,32 @@ $spv-navigation-logo-bottom-position: 0.125rem; // 2px when 1rem is 16px
|
|
|
878
982
|
}
|
|
879
983
|
/* stylelint-enable max-nesting-depth */
|
|
880
984
|
|
|
881
|
-
.p-navigation--sliding
|
|
985
|
+
.p-navigation--sliding,
|
|
986
|
+
.p-navigation--reduced {
|
|
987
|
+
// FIXME
|
|
988
|
+
// We want to add some additional spacing on the bottom of the sliding dropdowns
|
|
989
|
+
// so that the last item is not directly at the bottom of the screen when scrolling,
|
|
990
|
+
// but because of the way it's currently implemented, the only way to achieve this
|
|
991
|
+
// is to add padding to the last item in the dropdown.
|
|
992
|
+
// This is a temporary solution until we can find a better way to implement this, but
|
|
993
|
+
// it may require bigger restructuring of the sliding navigation.
|
|
994
|
+
|
|
995
|
+
// top (1st) level navigation dropdown
|
|
996
|
+
.p-navigation__nav .p-navigation__items,
|
|
997
|
+
// 2nd level navigation dropdown (that has separate mobile and desktop versions)
|
|
998
|
+
.p-navigation__dropdown-content--sliding,
|
|
999
|
+
// further nested levels
|
|
1000
|
+
// (because of some weird style combination we have to select last child instead of adding padding on dropdown container itself)
|
|
1001
|
+
.p-navigation__dropdown > :last-child {
|
|
1002
|
+
// should be enough to make some space at the bottom
|
|
1003
|
+
// and workaround the issues of 100vh not taking address toolbar into account
|
|
1004
|
+
padding-bottom: 3rem;
|
|
1005
|
+
|
|
1006
|
+
@media (min-width: $breakpoint-navigation-threshold) {
|
|
1007
|
+
padding-bottom: 0;
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
|
|
882
1011
|
// Default positioning for nested dropdown buttons. Overridden by subsequent styles.
|
|
883
1012
|
.p-navigation__item--dropdown-toggle {
|
|
884
1013
|
position: initial;
|
|
@@ -13,7 +13,7 @@ $knob-size: $sp-unit * 2;
|
|
|
13
13
|
position: absolute;
|
|
14
14
|
|
|
15
15
|
&:checked + .p-switch__slider::before {
|
|
16
|
-
border: $input-border-thickness solid $
|
|
16
|
+
border: $input-border-thickness solid $colors--theme--link-default;
|
|
17
17
|
left: 50%;
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -22,22 +22,22 @@ $knob-size: $sp-unit * 2;
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
&:checked + .p-switch__slider {
|
|
25
|
-
background: $
|
|
25
|
+
background: $colors--theme--link-default;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
&:focus {
|
|
29
29
|
outline: none;
|
|
30
30
|
|
|
31
31
|
+ .p-switch__slider {
|
|
32
|
-
outline: $bar-thickness solid $
|
|
32
|
+
outline: $bar-thickness solid $colors--theme--focus;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.p-switch__slider {
|
|
38
|
-
background: $
|
|
38
|
+
background: $colors--theme--background-neutral-default;
|
|
39
39
|
border-radius: $knob-size;
|
|
40
|
-
box-shadow: inset 0 2px 5px 0 transparentize($color-dark, 0.8);
|
|
40
|
+
box-shadow: inset 0 2px 5px 0 transparentize($color-x-dark, 0.8);
|
|
41
41
|
display: inline-block;
|
|
42
42
|
height: $knob-size;
|
|
43
43
|
margin: 0;
|
|
@@ -48,8 +48,8 @@ $knob-size: $sp-unit * 2;
|
|
|
48
48
|
@extend %vf-has-box-shadow;
|
|
49
49
|
@include vf-transition($duration: slow);
|
|
50
50
|
|
|
51
|
-
background: $
|
|
52
|
-
border: $input-border-thickness solid $
|
|
51
|
+
background: $colors--theme--background-default;
|
|
52
|
+
border: $input-border-thickness solid $colors--theme--background-neutral-default;
|
|
53
53
|
border-radius: 50%;
|
|
54
54
|
content: '';
|
|
55
55
|
height: $knob-size;
|
|
@@ -29,18 +29,19 @@ $disabled-element-opacity: 0.33;
|
|
|
29
29
|
|
|
30
30
|
$shadow-opacity: 0.2;
|
|
31
31
|
|
|
32
|
-
// Link colors
|
|
32
|
+
// Link and focus colors
|
|
33
33
|
$color-link: #06c !default;
|
|
34
34
|
$color-link-visited: #7d42b8 !default;
|
|
35
35
|
$color-focus: #2e96ff !default;
|
|
36
36
|
|
|
37
37
|
$color-link-dark: #69c !default;
|
|
38
38
|
$color-link-visited-dark: #a679d2 !default;
|
|
39
|
+
$color-focus-dark: #9cf !default;
|
|
39
40
|
|
|
40
41
|
// Focus modifications to meet AA 3:1 contrast ratio against
|
|
41
|
-
// button background for positive
|
|
42
|
+
// button background for positive buttons
|
|
42
43
|
$color-focus-positive: #003008 !default;
|
|
43
|
-
$color-focus-
|
|
44
|
+
$color-focus-positive-dark: #9cf !default;
|
|
44
45
|
|
|
45
46
|
// Button background color changes
|
|
46
47
|
$input-background-opacity-amount: 0.04;
|
|
@@ -88,9 +89,11 @@ $states: (
|
|
|
88
89
|
// --text-disabled - dimmed version of default text color, to be used on disabled controls
|
|
89
90
|
// --text-muted - muted version of default text color, to be used on elements with less prominence
|
|
90
91
|
//
|
|
91
|
-
// Link colors:
|
|
92
|
+
// Link and focus colors:
|
|
92
93
|
// --link-default - default link color
|
|
93
94
|
// --link-visited - visited link color
|
|
95
|
+
// --focus - focus highlight/outline color
|
|
96
|
+
// --positive-focus - focus highlight/outline color for positive buttons
|
|
94
97
|
//
|
|
95
98
|
// Background colors:
|
|
96
99
|
// --background - default background color
|
|
@@ -111,6 +114,8 @@ $colors--light-theme--text-inactive: rgba($color-x-dark, $inactive-text-opacity-
|
|
|
111
114
|
|
|
112
115
|
$colors--light-theme--link-default: $color-link !default;
|
|
113
116
|
$colors--light-theme--link-visited: $color-link-visited !default;
|
|
117
|
+
$colors--light-theme--focus: $color-focus !default;
|
|
118
|
+
$colors--light-theme--positive-focus: $color-focus-positive !default;
|
|
114
119
|
|
|
115
120
|
$colors--light-theme--background-default: #fff !default;
|
|
116
121
|
$colors--light-theme--background-alt: #f7f7f7 !default;
|
|
@@ -170,6 +175,8 @@ $colors--dark-theme--text-inactive: rgba($colors--dark-theme--text-default, $ina
|
|
|
170
175
|
|
|
171
176
|
$colors--dark-theme--link-default: $color-link-dark !default;
|
|
172
177
|
$colors--dark-theme--link-visited: $color-link-visited-dark !default;
|
|
178
|
+
$colors--dark-theme--focus: $color-focus-dark !default;
|
|
179
|
+
$colors--dark-theme--positive-focus: $color-focus-positive-dark !default;
|
|
173
180
|
|
|
174
181
|
$colors--dark-theme--background-default: #262626 !default;
|
|
175
182
|
$colors--dark-theme--background-alt: #202020 !default;
|
|
@@ -236,6 +243,8 @@ $colors--theme--text-inactive: var(--vf-color-text-inactive);
|
|
|
236
243
|
|
|
237
244
|
$colors--theme--link-default: var(--vf-color-link-default);
|
|
238
245
|
$colors--theme--link-visited: var(--vf-color-link-visited);
|
|
246
|
+
$colors--theme--focus: var(--vf-color-focus);
|
|
247
|
+
$colors--theme--positive-focus: var(--vf-color-positive-focus);
|
|
239
248
|
|
|
240
249
|
$colors--theme--background-default: var(--vf-color-background-default);
|
|
241
250
|
$colors--theme--background-alt: var(--vf-color-background-alt);
|
|
@@ -290,6 +299,8 @@ $colors--theme--button-negative-text: var(--vf-color-button-negative-text);
|
|
|
290
299
|
|
|
291
300
|
--vf-color-link-default: #{$colors--light-theme--link-default};
|
|
292
301
|
--vf-color-link-visited: #{$colors--light-theme--link-visited};
|
|
302
|
+
--vf-color-focus: #{$colors--light-theme--focus};
|
|
303
|
+
--vf-color-positive-focus: #{$colors--light-theme--positive-focus};
|
|
293
304
|
|
|
294
305
|
--vf-color-background-default: #{$colors--light-theme--background-default};
|
|
295
306
|
--vf-color-background-alt: #{$colors--light-theme--background-alt};
|
|
@@ -344,6 +355,8 @@ $colors--theme--button-negative-text: var(--vf-color-button-negative-text);
|
|
|
344
355
|
|
|
345
356
|
--vf-color-link-default: #{$colors--dark-theme--link-default};
|
|
346
357
|
--vf-color-link-visited: #{$colors--dark-theme--link-visited};
|
|
358
|
+
--vf-color-focus: #{$colors--dark-theme--focus};
|
|
359
|
+
--vf-color-positive-focus: #{$colors--dark-theme--positive-focus};
|
|
347
360
|
|
|
348
361
|
--vf-color-background-default: #{$colors--dark-theme--background-default};
|
|
349
362
|
--vf-color-background-alt: #{$colors--dark-theme--background-alt};
|
|
@@ -396,7 +409,7 @@ $colors--theme--button-negative-text: var(--vf-color-button-negative-text);
|
|
|
396
409
|
|
|
397
410
|
// SCSS variables need to be interpolated to work in CSS custom properties
|
|
398
411
|
--vf-color-background-default: #{$color-paper};
|
|
399
|
-
--vf-color-background-alt: #{
|
|
412
|
+
--vf-color-background-alt: #{#ebebeb};
|
|
400
413
|
|
|
401
414
|
--vf-color-background-inputs: #{$colors--paper-theme--background-inputs};
|
|
402
415
|
--vf-color-background-active: #{$colors--paper-theme--background-active};
|