@lightspeed/design-system-css 1.1.2 → 1.2.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.
@@ -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
- }