@servicetitan/navigation 2.0.0 → 2.1.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 (85) hide show
  1. package/dist/components/header-navigation/header-navigation-content.d.ts +30 -0
  2. package/dist/components/header-navigation/header-navigation-content.d.ts.map +1 -0
  3. package/dist/components/header-navigation/header-navigation-content.js +21 -0
  4. package/dist/components/header-navigation/header-navigation-content.js.map +1 -0
  5. package/dist/components/header-navigation/header-navigation-extra.stories.d.ts +1 -1
  6. package/dist/components/header-navigation/header-navigation-extra.stories.d.ts.map +1 -1
  7. package/dist/components/header-navigation/header-navigation-extra.stories.js +6 -6
  8. package/dist/components/header-navigation/header-navigation-extra.stories.js.map +1 -1
  9. package/dist/components/header-navigation/header-navigation-links.d.ts +38 -0
  10. package/dist/components/header-navigation/header-navigation-links.d.ts.map +1 -0
  11. package/dist/components/header-navigation/header-navigation-links.js +38 -0
  12. package/dist/components/header-navigation/header-navigation-links.js.map +1 -0
  13. package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts +11 -0
  14. package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts.map +1 -0
  15. package/dist/components/header-navigation/header-navigation-stacked.stories.js +66 -0
  16. package/dist/components/header-navigation/header-navigation-stacked.stories.js.map +1 -0
  17. package/dist/components/header-navigation/header-navigation.d.ts +32 -55
  18. package/dist/components/header-navigation/header-navigation.d.ts.map +1 -1
  19. package/dist/components/header-navigation/header-navigation.js +41 -48
  20. package/dist/components/header-navigation/header-navigation.js.map +1 -1
  21. package/dist/components/header-navigation/header-navigation.module.less +172 -95
  22. package/dist/components/header-navigation/header-navigation.stories.d.ts.map +1 -1
  23. package/dist/components/header-navigation/header-navigation.stories.js +7 -7
  24. package/dist/components/header-navigation/header-navigation.stories.js.map +1 -1
  25. package/dist/components/header-navigation/index.d.ts +3 -0
  26. package/dist/components/header-navigation/index.d.ts.map +1 -0
  27. package/dist/components/header-navigation/index.js +3 -0
  28. package/dist/components/header-navigation/index.js.map +1 -0
  29. package/dist/components/logo/logo-titan-text.d.ts +21 -5
  30. package/dist/components/logo/logo-titan-text.d.ts.map +1 -1
  31. package/dist/components/logo/logo-titan-text.js +9 -3
  32. package/dist/components/logo/logo-titan-text.js.map +1 -1
  33. package/dist/components/logo/logo-titan-text.module.less +12 -9
  34. package/dist/components/logo/logo-titan.d.ts +2 -2
  35. package/dist/components/logo/logo-titan.d.ts.map +1 -1
  36. package/dist/components/logo/logo-titan.js +1 -1
  37. package/dist/components/logo/logo-titan.js.map +1 -1
  38. package/dist/components/logo/logo.stories.d.ts +2 -1
  39. package/dist/components/logo/logo.stories.d.ts.map +1 -1
  40. package/dist/components/logo/logo.stories.js +7 -5
  41. package/dist/components/logo/logo.stories.js.map +1 -1
  42. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.d.ts +15 -0
  43. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.d.ts.map +1 -0
  44. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js +51 -0
  45. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js.map +1 -0
  46. package/dist/components/profile-dropdown/profile-dropdown.d.ts +1 -0
  47. package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -1
  48. package/dist/components/profile-dropdown/profile-dropdown.js +3 -3
  49. package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -1
  50. package/dist/components/profile-dropdown/profile-dropdown.module.less +0 -2
  51. package/dist/components/profile-dropdown/profile-dropdown.stories.js +1 -1
  52. package/dist/components/profile-dropdown/profile-dropdown.stories.js.map +1 -1
  53. package/dist/components/profile-dropdown/profile-icon.d.ts +1 -1
  54. package/dist/components/profile-dropdown/profile-icon.d.ts.map +1 -1
  55. package/dist/components/profile-dropdown/profile-icon.js +1 -1
  56. package/dist/components/profile-dropdown/profile-icon.js.map +1 -1
  57. package/dist/index.d.ts +2 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +2 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/utils/with-tooltip.d.ts +3 -0
  62. package/dist/utils/with-tooltip.d.ts.map +1 -0
  63. package/dist/utils/with-tooltip.js +4 -0
  64. package/dist/utils/with-tooltip.js.map +1 -0
  65. package/package.json +2 -2
  66. package/src/components/header-navigation/header-navigation-content.tsx +118 -0
  67. package/src/components/header-navigation/header-navigation-extra.stories.tsx +12 -12
  68. package/src/components/header-navigation/header-navigation-links.tsx +143 -0
  69. package/src/components/header-navigation/header-navigation-stacked.stories.tsx +172 -0
  70. package/src/components/header-navigation/header-navigation.module.less +172 -95
  71. package/src/components/header-navigation/header-navigation.module.less.d.ts +14 -9
  72. package/src/components/header-navigation/header-navigation.stories.tsx +11 -17
  73. package/src/components/header-navigation/header-navigation.tsx +151 -266
  74. package/src/components/header-navigation/index.ts +2 -0
  75. package/src/components/logo/logo-titan-text.module.less +12 -9
  76. package/src/components/logo/logo-titan-text.tsx +62 -20
  77. package/src/components/logo/logo-titan.tsx +2 -2
  78. package/src/components/logo/logo.stories.tsx +13 -4
  79. package/src/components/profile-dropdown/profile-dropdown-stacked.stories.tsx +178 -0
  80. package/src/components/profile-dropdown/profile-dropdown.module.less +0 -2
  81. package/src/components/profile-dropdown/profile-dropdown.stories.tsx +1 -1
  82. package/src/components/profile-dropdown/profile-dropdown.tsx +5 -3
  83. package/src/components/profile-dropdown/profile-icon.tsx +2 -1
  84. package/src/index.ts +2 -1
  85. package/src/utils/with-tooltip.tsx +11 -0
@@ -0,0 +1,143 @@
1
+ import classNames from 'classnames';
2
+ import { FC, HTMLAttributeAnchorTarget, ReactNode } from 'react';
3
+ import { useNavLink } from '../../utils/navigation-context';
4
+ import { withTooltip } from '../../utils/with-tooltip';
5
+ import {
6
+ HeaderNavigationItemContent,
7
+ HeaderNavigationItemContentPropsStrict,
8
+ } from './header-navigation-content';
9
+ import * as Styles from './header-navigation.module.less';
10
+
11
+ export interface HeaderNavigationTriggerPropsStrict
12
+ extends Omit<HeaderNavigationItemContentPropsStrict, 'title' | 'size'> {
13
+ /** unique identifier */
14
+ id: string;
15
+ /** tooltip text */
16
+ tooltip?: string;
17
+ /** item description */
18
+ hint?: string;
19
+ /** container class name */
20
+ className?: string;
21
+ }
22
+
23
+ interface HeaderNavigationTriggerProps extends HeaderNavigationTriggerPropsStrict {
24
+ /** unstrict props */
25
+ [key: string]: any;
26
+ }
27
+
28
+ export interface HeaderNavigationLinkPropsStrict extends HeaderNavigationTriggerPropsStrict {
29
+ /** link href */
30
+ to: string;
31
+ /** isActive */
32
+ isActive?: boolean | ((pathname: string) => boolean);
33
+ /** link html target */
34
+ target?: HTMLAttributeAnchorTarget;
35
+ }
36
+
37
+ export interface HeaderNavigationLinkProps extends HeaderNavigationLinkPropsStrict {
38
+ /** unstrict props */
39
+ [key: string]: any;
40
+ }
41
+
42
+ /** Navigation extra item with link */
43
+ export const HeaderNavigationLink: FC<HeaderNavigationLinkProps> = ({
44
+ id,
45
+ to,
46
+ hint,
47
+ tooltip,
48
+ counter,
49
+ className,
50
+ iconClassName,
51
+ iconComponent,
52
+ iconName,
53
+ isActive,
54
+ target,
55
+ ...rest
56
+ }) => {
57
+ const NavigationComponent = useNavLink();
58
+
59
+ return withTooltip(
60
+ <NavigationComponent
61
+ data-cy={`navigation-link-${id}`}
62
+ data-pendo={`navigation-link-${id}`}
63
+ {...rest}
64
+ key={id}
65
+ to={to}
66
+ title={hint}
67
+ className={classNames(Styles.navigationLink, Styles.navigationItem, className, {
68
+ [Styles.navigationItemActive]: isActive === true,
69
+ })}
70
+ isActive={typeof isActive === 'function' ? isActive : undefined}
71
+ activeClassName={Styles.navigationItemActive}
72
+ target={target}
73
+ >
74
+ <HeaderNavigationItemContent
75
+ counter={counter}
76
+ iconComponent={iconComponent}
77
+ iconClassName={iconClassName}
78
+ iconName={iconName}
79
+ />
80
+ </NavigationComponent>,
81
+ tooltip
82
+ );
83
+ };
84
+
85
+ /** Navigation extra item with icon button */
86
+ export const HeaderNavigationTrigger: FC<HeaderNavigationTriggerProps> = ({
87
+ id,
88
+ className,
89
+ counter,
90
+ iconClassName,
91
+ iconComponent,
92
+ iconName,
93
+ hint,
94
+ tooltip,
95
+ ...rest
96
+ }) =>
97
+ withTooltip(
98
+ <div
99
+ data-cy={`navigation-trigger-${id}`}
100
+ data-pendo={`navigation-trigger-${id}`}
101
+ {...rest}
102
+ title={hint}
103
+ className={classNames(
104
+ Styles.navigationItem,
105
+ Styles.navigationLink,
106
+ 'cursor-pointer',
107
+ className
108
+ )}
109
+ >
110
+ <HeaderNavigationItemContent
111
+ counter={counter}
112
+ iconComponent={iconComponent}
113
+ iconClassName={iconClassName}
114
+ iconName={iconName}
115
+ />
116
+ </div>,
117
+ tooltip
118
+ );
119
+
120
+ /** Navigation extra item with custom content */
121
+ export const HeaderNavigationTriggerCustom: FC<
122
+ Omit<
123
+ HeaderNavigationTriggerProps,
124
+ 'counter' | 'iconSize' | 'iconName' | 'iconComponent' | 'iconClassName'
125
+ > & { children: ReactNode }
126
+ > = ({ children, id, className, tooltip, title, ...rest }) =>
127
+ withTooltip(
128
+ <div
129
+ data-cy={`navigation-custom-${id}`}
130
+ data-pendo={`navigation-custom-${id}`}
131
+ {...rest}
132
+ title={title}
133
+ className={classNames(
134
+ Styles.navigationItem,
135
+ Styles.navigationLink,
136
+ 'cursor-pointer',
137
+ className
138
+ )}
139
+ >
140
+ {children}
141
+ </div>,
142
+ tooltip
143
+ );
@@ -0,0 +1,172 @@
1
+ import { Input, Stack } from '@servicetitan/design-system';
2
+ import { FC, Fragment } from 'react';
3
+ import { HeaderNavigationItemData, NavLinkComponentProps } from '../../utils/navigation';
4
+ import { LogoCompanyTitle } from '../logo/logo-company-title';
5
+ import { LogoTitan, LogoTitanTitle } from '../logo/logo-titan-text';
6
+ import { ProfileDropdown } from '../profile-dropdown/profile-dropdown';
7
+ import { HeaderNavigationLink, HeaderNavigationStacked, HeaderNavigationTrigger } from './';
8
+
9
+ export default {
10
+ title: 'Navigation/HeaderNavigationStacked',
11
+ component: HeaderNavigationStacked,
12
+ parameters: {},
13
+ };
14
+
15
+ const getItem = (
16
+ id: string,
17
+ data: Partial<HeaderNavigationItemData>
18
+ ): HeaderNavigationItemData => ({
19
+ id,
20
+ to: '/',
21
+ title: id[0].toUpperCase() + id.substring(1),
22
+ hint: id,
23
+ ...(data ?? {}),
24
+ });
25
+
26
+ const InventoryIcon = () => (
27
+ <svg width="20" xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24" fill="currentColor">
28
+ <polyline points="-288,400.9 -282,404.3 -282,397.6 -288,394.2 -288,400.9 " />
29
+ <path d="M-272,401.5c0,0.4-0.2,0.7-0.5,0.9l-7.9,4.4c-0.2,0.1-0.4,0.2-0.6,0.2s-0.4-0.1-0.6-0.2l-7.9-4.4c-0.3-0.2-0.5-0.5-0.5-0.9v-9c0-0.4,0.2-0.7,0.5-0.9l7.9-4.4c0.2-0.1,0.4-0.2,0.6-0.2s0.4,0.1,0.6,0.2l7.9,4.4c0.3,0.2,0.5,0.5,0.5,0.9V401.5 M-287,392.5 l6,3.4l5.9-3.3l-5.9-3.4L-287,392.5 M-274,400.9v-6.7l-6,3.4v6.7L-274,400.9z" />
30
+ </svg>
31
+ );
32
+
33
+ const items = {
34
+ calendar: getItem('calendar', { iconName: 'event' }),
35
+ calls: getItem('calls', { iconName: 'local_phone', isActive: true, counter: 12 }),
36
+ dashboard: getItem('dashboard', { iconName: 'odometer', isActive: true }),
37
+ dispatch: getItem('dispatch', { iconName: 'location_disabled', counter: 1 }),
38
+ fleet: getItem('fleet', { iconName: 'fleet-pro', title: 'Fleet Pro' }),
39
+ followUps: getItem('followUps', { iconName: 'flag', title: 'Follow Ups' }),
40
+ inventory: getItem('inventory', { iconName: 'toys' }),
41
+ purchasing: getItem('purchasing', { iconComponent: InventoryIcon }),
42
+ accounting: getItem('accounting', { iconName: 'assignment' }),
43
+ marketing: getItem('marketing', { iconName: 'bullhorn' }),
44
+ priceBook: getItem('priceBook', { iconName: 'book' }),
45
+ pointOfSale: getItem('pointOfSale', { iconName: 'cash-register' }),
46
+ projects: getItem('projects', { iconName: 'folder_special' }),
47
+ reports: getItem('reports', { iconName: 'poll' }),
48
+ };
49
+
50
+ const NavLinkMock: FC<NavLinkComponentProps> = props => (
51
+ <a
52
+ href={props.to}
53
+ target={props.target}
54
+ onClick={e => {
55
+ e.preventDefault();
56
+ }}
57
+ className={props.className}
58
+ >
59
+ {props.children}
60
+ </a>
61
+ );
62
+
63
+ export const defaultNavigation = () => (
64
+ <HeaderNavigationStacked
65
+ left={<LogoCompanyTitle className="m-l-1" fill="#fff" />}
66
+ leftClassName="d-f align-items-center"
67
+ items={[
68
+ items.dashboard,
69
+ items.calendar,
70
+ items.calls,
71
+ items.accounting,
72
+ items.dispatch,
73
+ items.fleet,
74
+ ]}
75
+ navigationComponent={NavLinkMock}
76
+ />
77
+ );
78
+
79
+ export const withLogoTextAndOverflow = () => (
80
+ <HeaderNavigationStacked
81
+ left={
82
+ <Stack alignItems="center">
83
+ <LogoTitan mantleFill="#2270EE" size={44} />
84
+ <LogoTitanTitle className="c-white m-l-1">Commercial</LogoTitanTitle>
85
+ </Stack>
86
+ }
87
+ items={[
88
+ items.dashboard,
89
+ items.calendar,
90
+ items.calls,
91
+ items.accounting,
92
+ items.dispatch,
93
+ items.purchasing,
94
+ items.fleet,
95
+ ]}
96
+ itemsOverflow={[items.calls, items.accounting, items.purchasing, items.dispatch]}
97
+ navigationComponent={NavLinkMock}
98
+ />
99
+ );
100
+
101
+ const TimeZoneOffset: FC = () => (
102
+ <div className="fs-2 fw-bold p-x-1">
103
+ <span>EST (-9 hrs)</span>
104
+ </div>
105
+ );
106
+
107
+ export const withAllMonolithData = () => (
108
+ <HeaderNavigationStacked
109
+ left={<LogoCompanyTitle className="m-l-1" fill="#fff" />}
110
+ leftClassName="d-f align-items-center"
111
+ items={[
112
+ items.dashboard,
113
+ items.calendar,
114
+ items.calls,
115
+ items.accounting,
116
+ items.dispatch,
117
+
118
+ items.fleet,
119
+ items.followUps,
120
+ items.inventory,
121
+
122
+ items.marketing,
123
+ items.priceBook,
124
+ items.pointOfSale,
125
+ items.reports,
126
+ ]}
127
+ navigationComponent={NavLinkMock}
128
+ right={
129
+ <Fragment>
130
+ <TimeZoneOffset />
131
+
132
+ <HeaderNavigationTrigger id="dialpad" iconName="phone" counter={2} />
133
+
134
+ <HeaderNavigationLink
135
+ id="search"
136
+ to="https://google.com"
137
+ target="_blank"
138
+ iconName="search"
139
+ hint="Search: for all the questions"
140
+ />
141
+
142
+ <HeaderNavigationTrigger id="titanAdvisor" iconName="rocket" />
143
+
144
+ <HeaderNavigationLink
145
+ id="settings"
146
+ to="https://google.com"
147
+ target="_blank"
148
+ iconName="settings"
149
+ aria-label="search"
150
+ hint="Settings"
151
+ isActive
152
+ />
153
+
154
+ <ProfileDropdown>
155
+ <ProfileDropdown.Link id="tasks" to="https://googgle.com" counter={10}>
156
+ Task Management
157
+ </ProfileDropdown.Link>
158
+ <ProfileDropdown.Divider />
159
+ <ProfileDropdown.Link id="sign-out" to="https://googgle.com">
160
+ Sign Out{' '}
161
+ <span className="c-neutral-100 m-l-half t-truncate">James Bond</span>
162
+ </ProfileDropdown.Link>
163
+ <ProfileDropdown.Section id="userid" className="c-neutral-100 fs-1">
164
+ User ID: 007
165
+ </ProfileDropdown.Section>
166
+ </ProfileDropdown>
167
+ </Fragment>
168
+ }
169
+ center={<Input placeholder="Search smth" size="xsmall" className="w-100" />}
170
+ centerClassName="d-f align-items-center"
171
+ />
172
+ );
@@ -1,25 +1,6 @@
1
1
  /* stylelint-disable no-descending-specificity */
2
2
  @import (reference) '@servicetitan/tokens/core/tokens.less';
3
3
 
4
- .link {
5
- display: flex;
6
- align-items: center;
7
- flex-wrap: nowrap;
8
-
9
- .icon {
10
- display: inline-block;
11
- }
12
-
13
- ins {
14
- font-size: @typescale-2;
15
- }
16
-
17
- & * {
18
- text-decoration: none;
19
- white-space: nowrap;
20
- }
21
- }
22
-
23
4
  .header {
24
5
  height: 56px;
25
6
  display: flex;
@@ -29,96 +10,106 @@
29
10
  background-color: @color-neutral-300;
30
11
  box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);
31
12
 
32
- .link {
33
- max-height: 56px;
34
- font-family: @base-font-family;
35
- position: relative;
13
+ .right > * {
14
+ color: @color-white;
15
+ }
36
16
 
37
- .counter {
38
- color: @color-white;
39
- font-size: @typescale-0;
40
- font-weight: @font-weight-semibold;
17
+ .right {
18
+ .navigation-icon {
19
+ height: 24px;
20
+ width: 24px;
21
+ font-size: 24px;
41
22
  }
42
23
  }
43
24
 
44
- .link-main {
45
- // styles specific to main nav links
46
- padding: 18px 12px;
47
- }
25
+ .center {
26
+ min-width: 0;
27
+ overflow-x: hidden;
28
+ overflow-y: hidden;
48
29
 
49
- .navigation-items .link {
50
- // styles specific to main nav links and overflow nav links
51
- i {
30
+ .navigation-icon {
52
31
  height: 20px;
53
32
  width: 20px;
33
+ font-size: @typescale-4;
54
34
  }
35
+ }
36
+
37
+ .navigation-item-main {
38
+ // styles specific to main nav links
39
+ padding: 18px 12px;
40
+ }
55
41
 
56
- ins {
57
- margin-left: @spacing-half;
42
+ &.calculating {
43
+ .center {
44
+ opacity: 0;
58
45
  }
59
46
  }
60
47
 
61
- .link-main,
62
- .right .link {
63
- // styles specific to main nav links and extra nav links
64
- color: @color-white;
48
+ :global(.profile-dropdown-image) {
49
+ height: 32px;
50
+ width: 32px;
51
+ }
65
52
 
66
- &.active {
67
- color: @color-blue-200;
68
- }
53
+ :global(.profile-dropdown-svg) {
54
+ height: 28px;
55
+ width: 28px;
56
+ }
69
57
 
70
- &:hover:not(.active) {
71
- opacity: 0.7;
72
- }
58
+ .navigation-item-counter {
59
+ font-size: @typescale-0 !important;
60
+ }
73
61
 
74
- .counter {
75
- position: absolute;
76
- top: @spacing-1;
77
- right: 0;
62
+ .navigation-item-main .navigation-item-counter {
63
+ top: 8px;
64
+ right: -4px;
78
65
 
79
- &.counter-long {
80
- right: -@spacing-half;
81
- }
66
+ &.navigation-item-counter-long {
67
+ right: -8px;
82
68
  }
83
69
  }
84
70
 
85
- .link-overflow {
86
- // styles specific to overflow links
87
- display: inline-flex;
88
- color: @color-black;
89
- padding: @spacing-1 12px;
71
+ .navigation-link .navigation-item-counter {
72
+ top: 8px;
73
+ right: -4px;
74
+ }
75
+ }
90
76
 
91
- &.active:not(:hover) {
92
- color: @color-blue-500;
93
- }
77
+ .overflow-popover {
78
+ padding: @spacing-1 @spacing-0 !important;
94
79
 
95
- &:hover {
96
- background-color: @color-blue-500;
97
- color: @color-white;
98
- }
80
+ .navigation-overflow {
81
+ display: flex;
82
+ flex-direction: column;
83
+ }
84
+ }
99
85
 
100
- ins {
101
- margin-left: @spacing-1;
102
- }
86
+ .header-stacked {
87
+ display: grid;
88
+ grid-template-columns: repeat(3, 1fr);
89
+ grid-template-rows: 44px 36px;
103
90
 
104
- .counter {
105
- margin-left: @spacing-half;
106
- margin-top: -@spacing-1;
107
- }
91
+ background-color: @color-neutral-500;
92
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);
93
+
94
+ & > * {
95
+ overflow-y: hidden;
108
96
  }
109
97
 
110
- .right {
111
- .link {
112
- padding: 18px @spacing-1;
98
+ .he-top-left {
99
+ grid-column: span 1;
100
+ }
113
101
 
114
- .icon {
115
- height: 24px;
116
- width: 24px;
117
- }
102
+ .he-top-center {
103
+ grid-column: span 1;
104
+ }
105
+
106
+ .he-top-right {
107
+ grid-column: span 1;
118
108
 
119
- ins {
120
- margin-left: @spacing-half;
121
- }
109
+ .navigation-icon {
110
+ height: 20px;
111
+ width: 20px;
112
+ font-size: @typescale-4;
122
113
  }
123
114
 
124
115
  & > * {
@@ -126,30 +117,116 @@
126
117
  }
127
118
  }
128
119
 
129
- .center {
130
- min-width: 0;
131
- overflow-x: hidden;
132
- overflow-y: hidden;
120
+ .he-bottom {
121
+ grid-column: span 3;
122
+ border-top: 1px solid @color-neutral-200;
123
+
124
+ .navigation-icon {
125
+ height: 20px;
126
+ width: 20px;
127
+ font-size: @typescale-4;
128
+ }
133
129
  }
134
130
 
135
131
  &.calculating {
136
- .center {
132
+ .he-bottom {
137
133
  opacity: 0;
138
134
  }
139
135
  }
140
136
 
141
- &.minimized .link-main {
142
- ins {
143
- display: none;
137
+ :global(.profile-dropdown-image) {
138
+ height: 24px;
139
+ width: 24px;
140
+ }
141
+
142
+ :global(.profile-dropdown-svg) {
143
+ height: 20px;
144
+ width: 20px;
145
+ }
146
+
147
+ .navigation-item-counter {
148
+ font-size: 8px !important;
149
+ }
150
+
151
+ .navigation-item-main .navigation-item-counter {
152
+ top: 4px;
153
+ right: -4px;
154
+
155
+ &.navigation-item-counter-long {
156
+ right: -8px;
144
157
  }
145
158
  }
159
+
160
+ .navigation-link .navigation-item-counter {
161
+ top: 12px;
162
+ right: 0;
163
+ }
146
164
  }
147
165
 
148
- .overflow-popover {
149
- padding: @spacing-1 @spacing-0 !important;
166
+ .navigation-icon {
167
+ display: inline-block;
168
+ }
150
169
 
151
- .navigation-overflow {
152
- display: flex;
153
- flex-direction: column;
170
+ .navigation-item {
171
+ // styles specific to main nav links and extra nav links
172
+ font-family: @base-font-family;
173
+ color: @color-white;
174
+ position: relative;
175
+ display: flex;
176
+ align-items: center;
177
+ flex-wrap: nowrap;
178
+ text-wrap: nowrap;
179
+
180
+ &.navigation-item-active:not(.navigation-item-overflow) {
181
+ color: @color-blue-200 !important;
182
+ }
183
+
184
+ &:hover:not(.navigation-item-active):not(.navigation-item-overflow) {
185
+ opacity: 0.7;
186
+ }
187
+
188
+ .navigation-item-counter {
189
+ color: @color-white;
190
+ font-weight: @font-weight-semibold;
191
+ }
192
+
193
+ &:not(.navigation-item-overflow) .navigation-item-counter {
194
+ position: absolute;
195
+ }
196
+
197
+ .navigation-item-title {
198
+ font-family: @base-font-family;
199
+ font-size: @typescale-2;
200
+ margin-left: @spacing-half;
201
+ }
202
+ }
203
+
204
+ .navigation-item-main {
205
+ // styles specific to main nav links
206
+ padding: 6px 10px;
207
+ }
208
+
209
+ .navigation-item-overflow {
210
+ // styles specific to overflow links
211
+ display: inline-flex;
212
+ color: @color-black;
213
+ padding: @spacing-1 12px;
214
+
215
+ &.navigation-item-active:not(:hover) {
216
+ color: @color-blue-500;
154
217
  }
218
+
219
+ &:hover {
220
+ background-color: @color-blue-500;
221
+ color: @color-white;
222
+ }
223
+
224
+ .navigation-item-counter {
225
+ margin-left: @spacing-half;
226
+ margin-top: -@spacing-1;
227
+ }
228
+ }
229
+
230
+ .navigation-link {
231
+ padding: 18px @spacing-1;
155
232
  }
@@ -1,16 +1,21 @@
1
1
  export const __esModule: true;
2
- export const active: string;
3
2
  export const calculating: string;
4
3
  export const center: string;
5
- export const counter: string;
6
- export const counterLong: string;
4
+ export const heBottom: string;
5
+ export const heTopCenter: string;
6
+ export const heTopLeft: string;
7
+ export const heTopRight: string;
7
8
  export const header: string;
8
- export const icon: string;
9
- export const link: string;
10
- export const linkMain: string;
11
- export const linkOverflow: string;
12
- export const minimized: string;
13
- export const navigationItems: string;
9
+ export const headerStacked: string;
10
+ export const navigationIcon: string;
11
+ export const navigationItem: string;
12
+ export const navigationItemActive: string;
13
+ export const navigationItemCounter: string;
14
+ export const navigationItemCounterLong: string;
15
+ export const navigationItemMain: string;
16
+ export const navigationItemOverflow: string;
17
+ export const navigationItemTitle: string;
18
+ export const navigationLink: string;
14
19
  export const navigationOverflow: string;
15
20
  export const overflowPopover: string;
16
21
  export const right: string;