@lightspeed/design-system-css 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,18 @@
1
+ @mixin vd-sidebar-faux-column-bg($tabs-width, $drawer-width) {
2
+ background: linear-gradient(
3
+ to right,
4
+ $vd-sidebar-tabs-background-color 0,
5
+ $vd-sidebar-tabs-background-color $tabs-width,
6
+ $vd-sidebar-drawer-background-color $tabs-width,
7
+ $vd-sidebar-drawer-background-color $drawer-width
8
+ );
9
+ }
10
+
11
+ // The sidebar contents can be hidden, if so we shouldn't show the sidebar
12
+ .vd-sidebar:empty {
13
+ display: none;
14
+ }
15
+
1
16
  .vd-sidebar {
2
17
  display: flex;
3
18
  position: relative;
@@ -7,4 +22,105 @@
7
22
  box-sizing: border-box;
8
23
  font-family: $vd-font-primary;
9
24
  line-height: normal;
25
+ max-width: $vd-sidebar-width;
26
+
27
+ transform: translateX(0);
28
+ transition: transform 0.2s ease-in-out;
29
+ z-index: $vd-sidebar-base-z-index;
30
+
31
+ .vd-sidebar-modal-close {
32
+ display: none;
33
+ top: $vd-sidebar-modal-close-base-offset;
34
+ right: $vd-sidebar-modal-close-right-offset;
35
+ }
36
+
37
+ .vd-sidebar-tabs {
38
+ height: auto;
39
+ }
40
+
41
+ .vd-sidebar-drawer {
42
+ height: auto;
43
+ }
44
+
45
+ @media print {
46
+ display: none;
47
+ }
48
+
49
+ // Required so banner does not appear over the top of the sidenav when its toggled
50
+ // on smaller devices
51
+ @include vd-viewport-media-max($vd-breakpoint-large) {
52
+ z-index: $vd-z-index-popover-base + 2;
53
+ }
54
+ }
55
+
56
+ .vd-sidebar-content {
57
+ @include vd-sidebar-faux-column-bg(
58
+ $vd-sidebar-tabs-desktop-width,
59
+ $vd-sidebar-drawer-desktop-width
60
+ );
61
+ width: auto;
62
+ overflow-y: auto;
63
+ overflow-x: hidden;
64
+ height: 100%;
65
+ display: flex;
66
+ }
67
+
68
+ .vd-sidebar--pad-drawer {
69
+ padding-right: $vd-sidebar-drawer-desktop-width;
70
+ }
71
+
72
+ // ========= Body Class Sidenav Modal State ========= //
73
+
74
+ .nv-display-sidenav-modal {
75
+ .vd-sidebar {
76
+ z-index: $vd-sidebar-modal-z-index;
77
+
78
+ .vd-sidebar-modal-close {
79
+ display: flex;
80
+ }
81
+ }
82
+ }
83
+
84
+ // ========= Responsive Breakpoint Styles ========= //
85
+
86
+ @include vd-viewport-media-max($vd-breakpoint-large) {
87
+ .vd-sidebar {
88
+ position: absolute;
89
+ left: 0;
90
+ height: 100%;
91
+ transform: translateX(
92
+ calc(-100% - #{$vd-sidebar-content-box-shadow-offset-x})
93
+ );
94
+ }
95
+
96
+ .nv-display-sidenav-modal {
97
+ .vd-sidebar {
98
+ transform: translateX(0);
99
+ }
100
+ }
101
+
102
+ .vd-sidebar--pad-drawer {
103
+ padding-right: 0;
104
+ }
105
+ }
106
+
107
+ @include vd-viewport-media-min($vd-breakpoint-xlarge-min) {
108
+ // The following styles are required to allow the sidenav modal overlay page content when no drawer is displayed
109
+ // This only applies to the nav at large desktop size
110
+ .vd-sidebar--no-drawer {
111
+ width: $vd-sidebar-tabs-desktop-width;
112
+ }
113
+
114
+ .nv-display-sidenav-modal {
115
+ .vd-sidebar--no-drawer {
116
+ .vd-sidebar-content {
117
+ position: absolute;
118
+ }
119
+
120
+ .vd-sidebar-modal-close {
121
+ right: $vd-sidebar-modal-close-right-offset -
122
+ $vd-sidebar-drawer-desktop-width;
123
+ }
124
+ }
125
+ }
10
126
  }
@@ -1,6 +1,6 @@
1
1
  $vd-sidebar-drawer-background-color: vd-colour(nav-side-drawer);
2
- $vd-sidebar-drawer-desktop-width: 145px;
2
+ $vd-sidebar-drawer-desktop-width: 176px;
3
3
 
4
- $vd-sidebar-drawer-item-font-size: 14px;
5
- $vd-sidebar-drawer-item-padding-x: 10px;
6
- $vd-sidebar-drawer-item-padding-y: 20px;
4
+ $vd-sidebar-drawer-item-font-size: 15px;
5
+ $vd-sidebar-drawer-item-padding-x: 22px;
6
+ $vd-sidebar-drawer-item-padding-y: 13px;
@@ -5,14 +5,16 @@
5
5
  width: $vd-sidebar-drawer-desktop-width;
6
6
  height: 100%;
7
7
  background-color: $vd-sidebar-drawer-background-color;
8
- border-right: 1px solid vd-colour(framing);
8
+ border-right: 1px solid vd-colour(background);
9
9
  box-sizing: border-box;
10
+ padding-top: $vd-sidebar-drawer-item-font-size;
11
+ padding-bottom: $vd-sidebar-drawer-item-font-size;
10
12
 
11
13
  .vd-nav-item {
12
14
  width: 100%;
13
15
  height: auto;
14
16
  color: vd-colour(text);
15
- font-weight: $vd-font-weight--bold;
17
+ font-weight: $vd-font-weight--regular;
16
18
 
17
19
  &:hover {
18
20
  background: vd-colour(go-highlight);
@@ -24,6 +26,7 @@
24
26
  }
25
27
 
26
28
  .vd-nav-item--active {
29
+ @include vd-sidebar-active-indicator();
27
30
  .vd-nav-item-action {
28
31
  color: vd-colour(go);
29
32
  }
@@ -1,11 +1,17 @@
1
+ @use "sass:math";
2
+
3
+ $vd-sidebar-tabs-animation-duration: 200ms;
4
+
1
5
  $vd-sidebar-tabs-background-color: vd-colour(nav-side-tabs);
2
6
 
3
- $vd-sidebar-tabs-desktop-width: 85px;
7
+ $vd-sidebar-tabs-desktop-width: 64px;
8
+ $vd-sidebar-tabs-expanded-width: 240px;
4
9
 
5
- $vd-sidebar-tab-height: 75px !default;
10
+ $vd-sidebar-tab-height: 44px !default;
6
11
  $vd-sidebar-tab-font-colour: vd-colour(text) !default;
7
- $vd-sidebar-tab-font-size: 12px !default;
12
+ $vd-sidebar-tab-font-size: 15px !default;
8
13
  $vd-sidebar-tab-icon-font-size: 20px !default;
14
+ $vd-sidebar-tab-padding-x: math.div($vd-sidebar-tabs-desktop-width - $vd-sidebar-tab-icon-font-size, 2);
9
15
 
10
16
  $vd-sidebar-tab-active-bg-colour: vd-colour(text) !default;
11
17
  $vd-sidebar-tab-active-border-width: 6px !default;
@@ -13,32 +13,31 @@
13
13
  font-size: $vd-sidebar-tab-font-size;
14
14
  color: vd-colour(text);
15
15
 
16
+ padding-top: $vd-sidebar-drawer-item-font-size;
17
+ padding-bottom: $vd-sidebar-drawer-item-font-size;
18
+
19
+ transition: width $vd-sidebar-tabs-animation-duration cubic-bezier(0.4, 0, 0.2, 1);
20
+
21
+ overflow: hidden;
22
+
23
+ &.vd-sidebar-tabs--expanded {
24
+ width: $vd-sidebar-tabs-expanded-width;
25
+
26
+ .vd-nav-item-action {
27
+ justify-content: start;
28
+ }
29
+ }
30
+
16
31
  .vd-nav-item {
17
32
  flex-shrink: 0;
18
33
  height: $vd-sidebar-tab-height;
19
- width: 100%;
20
-
21
- // Increase specificity to override colour specific selectors
22
- .vd-nav-item-icon.vd-nav-item-icon {
23
- color: inherit;
24
- }
34
+ transition: width $vd-sidebar-tabs-animation-duration cubic-bezier(0.4, 0, 0.2, 1);
25
35
 
26
36
  &:hover {
27
37
  background: vd-colour(background);
28
38
  }
29
39
  }
30
40
 
31
- .vd-nav-item-action {
32
- flex-direction: column;
33
- justify-content: center;
34
- position: relative;
35
- }
36
-
37
- .vd-nav-item--active {
38
- color: vd-colour(do);
39
- background: vd-colour(box);
40
- }
41
-
42
41
  .vd-nav-item--pending {
43
42
  background: vd-colour(background);
44
43
  }
@@ -52,22 +51,38 @@
52
51
  }
53
52
  }
54
53
 
54
+ .vd-nav-item--active {
55
+ color: vd-colour(do);
56
+ background: vd-colour(box);
57
+
58
+ &.vd-nav-item--no-children {
59
+ @include vd-sidebar-active-indicator();
60
+ }
61
+ }
62
+
63
+ .vd-nav-item-action {
64
+ flex-direction: row;
65
+ position: relative;
66
+ justify-content: start;
67
+ }
68
+
55
69
  .vd-nav-item-label {
56
- font-weight: $vd-font-weight--bold;
70
+ white-space: nowrap;
57
71
  }
58
72
 
59
73
  .vd-nav-item-icon {
74
+ flex-shrink: 0;
75
+ text-align: center;
60
76
  font-size: $vd-sidebar-tab-icon-font-size;
61
- }
77
+ min-width: $vd-sidebar-tab-icon-font-size;
78
+ padding-left: $vd-sidebar-tab-padding-x;
79
+ padding-right: $vd-sidebar-tab-padding-x;
62
80
 
63
- @each $_vd-nav-colour-name, $_vd-nav-colour in $vd-nav-item-colours {
64
- .vd-nav-item--#{$_vd-nav-colour-name} {
65
- .vd-nav-item-icon { color: $_vd-nav-colour; }
81
+ transition: padding-right $vd-sidebar-tabs-animation-duration cubic-bezier(0.4, 0, 0.2, 1);
82
+ }
66
83
 
67
- &.vd-nav-item--active,
68
- &.vd-nav-item--pending {
69
- border-color: $_vd-nav-colour;
70
- }
71
- }
84
+ .vd-nav-divider {
85
+ padding-left: $vd-sidebar-tab-padding-x;
86
+ justify-content: flex-start;
72
87
  }
73
88
  }
@@ -20,7 +20,7 @@
20
20
 
21
21
  &:hover {
22
22
  opacity: 1;
23
- }
23
+ }
24
24
  }
25
25
 
26
26
  .vd-nav-item-icon + .vd-nav-item-label {
@@ -40,6 +40,6 @@
40
40
  }
41
41
 
42
42
  .vd-logo {
43
- padding-left: 34px;
43
+ padding-left: 23px;
44
44
  }
45
45
  }
@@ -54,6 +54,7 @@
54
54
  @import '../../components/vd-section/vd-section-ns';
55
55
  @import '../../components/vd-select/vd-select-ns';
56
56
  @import '../../components/vd-section-back/vd-section-back-ns';
57
+ @import '../../components/vd-sidebar/vd-sidebar-ns';
57
58
  @import '../../components/vd-sidebar-drawer/vd-sidebar-drawer-ns';
58
59
  @import '../../components/vd-sidebar-tabs/vd-sidebar-tabs-ns';
59
60
  @import '../../components/vd-status-icon/vd-status-icon-ns';
@@ -20,3 +20,38 @@
20
20
  animation-name: vd-flash;
21
21
  animation-fill-mode:forwards;
22
22
  }
23
+
24
+ @keyframes vd-blink-highlight {
25
+ 20%,
26
+ 70% {
27
+ background-color: vd-colour(go-highlight);
28
+ }
29
+ }
30
+
31
+
32
+ @keyframes vd-shake {
33
+ 10%,
34
+ 90% {
35
+ transform: translate3d(-1px, 0, 0);
36
+ }
37
+
38
+ 20%,
39
+ 80% {
40
+ transform: translate3d(2px, 0, 0);
41
+ }
42
+
43
+ 30%,
44
+ 50%,
45
+ 70% {
46
+ transform: translate3d(-4px, 0, 0);
47
+ }
48
+
49
+ 40%,
50
+ 60% {
51
+ transform: translate3d(4px, 0, 0);
52
+ }
53
+ }
54
+
55
+ .vd-shake-highlight {
56
+ animation: vd-shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both, vd-blink-highlight 1.2s;
57
+ }
@@ -1,7 +1,6 @@
1
1
  // Modules
2
2
  @import "nv-topnav";
3
3
  @import "nv-topnav-title";
4
- @import "nv-sidenav";
5
4
  @import "nv-account-banner";
6
5
  @import "nv-notifications-item";
7
6
  @import "nv-user-sale-data";
@@ -4,17 +4,6 @@ $nv-header-font-size: 15px;
4
4
  $nv-header-logo-font-size: 42px;
5
5
  $nv-header-logo-font-size--mobile: 24px;
6
6
 
7
- // Side Navigation
8
-
9
- $nv-sidenav-base-z-index: $vd-z-index-navigation-base;
10
- $nv-sidenav-modal-z-index: $vd-modals-z-index + 1;
11
- $nv-sidenav-modal-close-base-offset: 10px;
12
- $nv-sidenav-modal-close-right-offset: -($vd-dialog-close-width + $nv-sidenav-modal-close-base-offset);
13
-
14
- $nv-sidenav-content-box-shadow-offset-x: 1px;
15
- $nv-sidenav-tabs-mobile-width: 85px;
16
- $nv-sidenav-drawer-mobile-width: 145px;
17
-
18
7
  // Notifications Side Drawer
19
8
 
20
9
  $nv-notifications-list-spacing: 20px;
@@ -58,6 +58,7 @@
58
58
  @import '../components/vd-loader/vd-loader';
59
59
  @import '../components/vd-main-content/vd-main-content';
60
60
  @import '../components/vd-modals-container/vd-modals-container';
61
+ @import '../components/vd-nav-divider/vd-nav-divider';
61
62
  @import '../components/vd-nav-item/vd-nav-item';
62
63
  @import '../components/vd-overlay/vd-overlay';
63
64
  @import '../components/vd-p/vd-p';
@@ -74,6 +75,7 @@
74
75
  @import '../components/vd-sidebar/vd-sidebar';
75
76
  @import '../components/vd-sidebar-drawer/vd-sidebar-drawer';
76
77
  @import '../components/vd-sidebar-tabs/vd-sidebar-tabs';
78
+ @import '../components/vd-sidebar/tmp-overrides'; // @REMOVEME: When flag `sidebar_new` is fully rolled out
77
79
  @import '../components/vd-splash/vd-splash';
78
80
  @import '../components/vd-status-icon/vd-status-icon';
79
81
  @import '../components/vd-suggestion/vd-suggestion-list';
@@ -1,143 +0,0 @@
1
- @mixin nv-sidenav-faux-column-bg($tabs-width, $drawer-width) {
2
- background: linear-gradient(
3
- to right,
4
- $vd-sidebar-tabs-background-color 0,
5
- $vd-sidebar-tabs-background-color $tabs-width,
6
- $vd-sidebar-drawer-background-color $tabs-width,
7
- $vd-sidebar-drawer-background-color $drawer-width
8
- );
9
- }
10
-
11
- // The sidebar contents can be hidden, if so we shouldn't show the sidebar
12
- .vd-sidebar:empty {
13
- display: none;
14
- }
15
-
16
- .nv-sidenav {
17
- transform: translateX(0);
18
- transition: transform 0.2s ease-in-out;
19
- display: block;
20
- height: calc(100% - #{$vd-topbar-height});
21
- z-index: $nv-sidenav-base-z-index;
22
-
23
- .nv-sidenav-modal-close {
24
- display: none;
25
- top: $nv-sidenav-modal-close-base-offset;
26
- right: $nv-sidenav-modal-close-right-offset;
27
- }
28
-
29
- .vd-sidebar-tabs {
30
- box-shadow: none;
31
- height: auto;
32
- }
33
-
34
- .vd-sidebar-drawer {
35
- border-right: none;
36
- height: auto;
37
- }
38
-
39
- @media print {
40
- display: none;
41
- }
42
-
43
- @supports (height: min-content) {
44
- .vd-sidebar-tabs,
45
- .vd-sidebar-drawer {
46
- height: min-content;
47
- }
48
- }
49
-
50
- // Required so banner does not appear over the top of the sidenav when its toggled
51
- // on smaller devices
52
- @include vd-viewport-media-max($vd-breakpoint-large) {
53
- z-index: $vd-z-index-popover-base + 2;
54
- }
55
- }
56
-
57
- .nv-sidenav-content {
58
- @include nv-sidenav-faux-column-bg(
59
- $vd-sidebar-tabs-desktop-width,
60
- $vd-sidebar-drawer-desktop-width
61
- );
62
- width: auto;
63
- overflow-y: auto;
64
- overflow-x: hidden;
65
- height: 100%;
66
- display: flex;
67
- box-shadow: $nv-sidenav-content-box-shadow-offset-x 0 0 0 vd-colour(framing);
68
- }
69
-
70
- .nv-sidenav--pad-drawer {
71
- padding-right: $vd-sidebar-drawer-desktop-width;
72
- }
73
-
74
- // ========= Body Class Sidenav Modal State ========= //
75
-
76
- .nv-display-sidenav-modal {
77
- .nv-sidenav {
78
- z-index: $nv-sidenav-modal-z-index;
79
-
80
- .nv-sidenav-modal-close {
81
- display: flex;
82
- }
83
- }
84
- }
85
-
86
- // ========= Responsive Breakpoint Styles ========= //
87
-
88
- @include vd-viewport-media-max($vd-breakpoint-large) {
89
- .nv-sidenav {
90
- position: absolute;
91
- left: 0;
92
- height: 100%;
93
- transform: translateX(
94
- calc(-100% - #{$nv-sidenav-content-box-shadow-offset-x})
95
- );
96
-
97
- .nv-sidenav-content {
98
- @include nv-sidenav-faux-column-bg(
99
- $nv-sidenav-tabs-mobile-width,
100
- $nv-sidenav-drawer-mobile-width
101
- );
102
- }
103
-
104
- .vd-sidebar-tabs {
105
- width: $nv-sidenav-tabs-mobile-width;
106
- }
107
-
108
- .vd-sidebar-drawer {
109
- width: $nv-sidenav-drawer-mobile-width;
110
- }
111
- }
112
-
113
- .nv-display-sidenav-modal {
114
- .nv-sidenav {
115
- transform: translateX(0);
116
- }
117
- }
118
-
119
- .nv-sidenav--pad-drawer {
120
- padding-right: 0;
121
- }
122
- }
123
-
124
- @include vd-viewport-media-min($vd-breakpoint-xlarge-min) {
125
- // The following styles are required to allow the sidenav modal overlay page content when no drawer is displayed
126
- // This only applies to the nav at large desktop size
127
- .nv-sidenav--no-drawer {
128
- width: $vd-sidebar-tabs-desktop-width;
129
- }
130
-
131
- .nv-display-sidenav-modal {
132
- .nv-sidenav--no-drawer {
133
- .nv-sidenav-content {
134
- position: absolute;
135
- }
136
-
137
- .nv-sidenav-modal-close {
138
- right: $nv-sidenav-modal-close-right-offset -
139
- $vd-sidebar-drawer-desktop-width;
140
- }
141
- }
142
- }
143
- }