@servicetitan/navigation 12.0.3 → 13.0.0-canary.256.b43c6d7.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 (196) hide show
  1. package/dist/components/profile-dropdown/{profile-dropdown-tiny.stories.d.ts → profile-dropdown-legacy.stories.d.ts} +1 -1
  2. package/dist/components/profile-dropdown/profile-dropdown-legacy.stories.d.ts.map +1 -0
  3. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.d.ts.map +1 -1
  4. package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -1
  5. package/dist/components/profile-dropdown/profile-dropdown.js +5 -8
  6. package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -1
  7. package/dist/components/profile-dropdown/profile-dropdown.stories.d.ts.map +1 -1
  8. package/dist/components/titan-layout/interface.d.ts +14 -12
  9. package/dist/components/titan-layout/interface.d.ts.map +1 -1
  10. package/dist/components/titan-layout/interface.js.map +1 -1
  11. package/dist/components/titan-layout/layout-header-links.d.ts +3 -3
  12. package/dist/components/titan-layout/layout-header-links.d.ts.map +1 -1
  13. package/dist/components/titan-layout/layout-header-links.js.map +1 -1
  14. package/dist/components/titan-layout/layout-header.d.ts +2 -2
  15. package/dist/components/titan-layout/layout-header.d.ts.map +1 -1
  16. package/dist/components/titan-layout/layout-header.js.map +1 -1
  17. package/dist/components/titan-layout/layout-profile.d.ts.map +1 -1
  18. package/dist/components/titan-layout/layout-profile.js +1 -7
  19. package/dist/components/titan-layout/layout-profile.js.map +1 -1
  20. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts +10 -17
  21. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts.map +1 -1
  22. package/dist/components/titan-layout/layout-sidebar-links-internal.js +34 -41
  23. package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -1
  24. package/dist/components/titan-layout/layout-sidebar-links.d.ts +3 -3
  25. package/dist/components/titan-layout/layout-sidebar-links.d.ts.map +1 -1
  26. package/dist/components/titan-layout/layout-sidebar-links.js +13 -13
  27. package/dist/components/titan-layout/layout-sidebar-links.js.map +1 -1
  28. package/dist/components/titan-layout/layout-sidebar.js +5 -3
  29. package/dist/components/titan-layout/layout-sidebar.js.map +1 -1
  30. package/dist/components/titan-layout/titan-layout-links.d.ts +5 -0
  31. package/dist/components/titan-layout/titan-layout-links.d.ts.map +1 -0
  32. package/dist/components/titan-layout/titan-layout-links.js +34 -0
  33. package/dist/components/titan-layout/titan-layout-links.js.map +1 -0
  34. package/dist/components/titan-layout/titan-layout.d.ts +2 -3
  35. package/dist/components/titan-layout/titan-layout.d.ts.map +1 -1
  36. package/dist/components/titan-layout/titan-layout.js +3 -3
  37. package/dist/components/titan-layout/titan-layout.js.map +1 -1
  38. package/dist/components/titan-layout/titan-layout.stories.d.ts.map +1 -1
  39. package/dist/index.d.ts +1 -5
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +0 -4
  42. package/dist/index.js.map +1 -1
  43. package/dist/test/data.d.ts +27 -2
  44. package/dist/test/data.d.ts.map +1 -1
  45. package/dist/test/data.js +181 -27
  46. package/dist/test/data.js.map +1 -1
  47. package/dist/utils/navigation-context.d.ts +3 -22
  48. package/dist/utils/navigation-context.d.ts.map +1 -1
  49. package/dist/utils/navigation-context.js +2 -10
  50. package/dist/utils/navigation-context.js.map +1 -1
  51. package/dist/utils/navigation.d.ts +2 -5
  52. package/dist/utils/navigation.d.ts.map +1 -1
  53. package/dist/utils/navigation.js.map +1 -1
  54. package/package.json +2 -2
  55. package/src/components/profile-dropdown/{profile-dropdown-tiny.stories.tsx → profile-dropdown-legacy.stories.tsx} +6 -6
  56. package/src/components/profile-dropdown/profile-dropdown-stacked.stories.tsx +12 -4
  57. package/src/components/profile-dropdown/profile-dropdown.stories.tsx +16 -9
  58. package/src/components/profile-dropdown/profile-dropdown.tsx +2 -11
  59. package/src/components/titan-layout/interface.ts +19 -15
  60. package/src/components/titan-layout/layout-header-links.tsx +3 -6
  61. package/src/components/titan-layout/layout-header.tsx +2 -2
  62. package/src/components/titan-layout/layout-profile.tsx +2 -6
  63. package/src/components/titan-layout/layout-sidebar-links-internal.tsx +69 -81
  64. package/src/components/titan-layout/layout-sidebar-links.tsx +38 -24
  65. package/src/components/titan-layout/layout-sidebar.tsx +1 -1
  66. package/src/components/titan-layout/titan-layout-links.tsx +34 -0
  67. package/src/components/titan-layout/titan-layout.stories.tsx +34 -33
  68. package/src/components/titan-layout/titan-layout.tsx +5 -4
  69. package/src/index.ts +1 -11
  70. package/src/test/data.tsx +152 -39
  71. package/src/utils/navigation-context.tsx +9 -35
  72. package/src/utils/navigation.ts +3 -7
  73. package/dist/components/header-navigation/header-navigation-content.d.ts +0 -30
  74. package/dist/components/header-navigation/header-navigation-content.d.ts.map +0 -1
  75. package/dist/components/header-navigation/header-navigation-content.js +0 -58
  76. package/dist/components/header-navigation/header-navigation-content.js.map +0 -1
  77. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.d.ts +0 -9
  78. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.d.ts.map +0 -1
  79. package/dist/components/header-navigation/header-navigation-extra.stories.d.ts +0 -12
  80. package/dist/components/header-navigation/header-navigation-extra.stories.d.ts.map +0 -1
  81. package/dist/components/header-navigation/header-navigation-links.d.ts +0 -11
  82. package/dist/components/header-navigation/header-navigation-links.d.ts.map +0 -1
  83. package/dist/components/header-navigation/header-navigation-links.js +0 -62
  84. package/dist/components/header-navigation/header-navigation-links.js.map +0 -1
  85. package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts +0 -12
  86. package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts.map +0 -1
  87. package/dist/components/header-navigation/header-navigation-stories.module.less +0 -6
  88. package/dist/components/header-navigation/header-navigation-stories.module.less.d.ts +0 -3
  89. package/dist/components/header-navigation/header-navigation.d.ts +0 -59
  90. package/dist/components/header-navigation/header-navigation.d.ts.map +0 -1
  91. package/dist/components/header-navigation/header-navigation.js +0 -228
  92. package/dist/components/header-navigation/header-navigation.js.map +0 -1
  93. package/dist/components/header-navigation/header-navigation.module.less +0 -260
  94. package/dist/components/header-navigation/header-navigation.module.less.d.ts +0 -22
  95. package/dist/components/header-navigation/header-navigation.stories.d.ts +0 -12
  96. package/dist/components/header-navigation/header-navigation.stories.d.ts.map +0 -1
  97. package/dist/components/header-navigation/index.d.ts +0 -2
  98. package/dist/components/header-navigation/index.d.ts.map +0 -1
  99. package/dist/components/header-navigation/index.js +0 -3
  100. package/dist/components/header-navigation/index.js.map +0 -1
  101. package/dist/components/header-navigation/with-tooltip.d.ts +0 -4
  102. package/dist/components/header-navigation/with-tooltip.d.ts.map +0 -1
  103. package/dist/components/header-navigation/with-tooltip.js +0 -10
  104. package/dist/components/header-navigation/with-tooltip.js.map +0 -1
  105. package/dist/components/layout.stories.d.ts +0 -13
  106. package/dist/components/layout.stories.d.ts.map +0 -1
  107. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.d.ts +0 -9
  108. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.d.ts.map +0 -1
  109. package/dist/components/left-navigation/header-navigation-tiny-links.d.ts +0 -18
  110. package/dist/components/left-navigation/header-navigation-tiny-links.d.ts.map +0 -1
  111. package/dist/components/left-navigation/header-navigation-tiny-links.js +0 -79
  112. package/dist/components/left-navigation/header-navigation-tiny-links.js.map +0 -1
  113. package/dist/components/left-navigation/header-navigation-tiny.d.ts +0 -23
  114. package/dist/components/left-navigation/header-navigation-tiny.d.ts.map +0 -1
  115. package/dist/components/left-navigation/header-navigation-tiny.js +0 -32
  116. package/dist/components/left-navigation/header-navigation-tiny.js.map +0 -1
  117. package/dist/components/left-navigation/header-navigation-tiny.module.less +0 -117
  118. package/dist/components/left-navigation/header-navigation-tiny.module.less.d.ts +0 -15
  119. package/dist/components/left-navigation/header-navigation-tiny.stories.d.ts +0 -12
  120. package/dist/components/left-navigation/header-navigation-tiny.stories.d.ts.map +0 -1
  121. package/dist/components/left-navigation/index.d.ts +0 -5
  122. package/dist/components/left-navigation/index.d.ts.map +0 -1
  123. package/dist/components/left-navigation/index.js +0 -5
  124. package/dist/components/left-navigation/index.js.map +0 -1
  125. package/dist/components/left-navigation/interface-internal.d.ts +0 -10
  126. package/dist/components/left-navigation/interface-internal.d.ts.map +0 -1
  127. package/dist/components/left-navigation/interface-internal.js +0 -3
  128. package/dist/components/left-navigation/interface-internal.js.map +0 -1
  129. package/dist/components/left-navigation/interface.d.ts +0 -20
  130. package/dist/components/left-navigation/interface.d.ts.map +0 -1
  131. package/dist/components/left-navigation/interface.js +0 -3
  132. package/dist/components/left-navigation/interface.js.map +0 -1
  133. package/dist/components/left-navigation/side-navigation-context.d.ts +0 -8
  134. package/dist/components/left-navigation/side-navigation-context.d.ts.map +0 -1
  135. package/dist/components/left-navigation/side-navigation-context.js +0 -8
  136. package/dist/components/left-navigation/side-navigation-context.js.map +0 -1
  137. package/dist/components/left-navigation/side-navigation-links-internal.d.ts +0 -28
  138. package/dist/components/left-navigation/side-navigation-links-internal.d.ts.map +0 -1
  139. package/dist/components/left-navigation/side-navigation-links-internal.js +0 -89
  140. package/dist/components/left-navigation/side-navigation-links-internal.js.map +0 -1
  141. package/dist/components/left-navigation/side-navigation-links.d.ts +0 -6
  142. package/dist/components/left-navigation/side-navigation-links.d.ts.map +0 -1
  143. package/dist/components/left-navigation/side-navigation-links.js +0 -48
  144. package/dist/components/left-navigation/side-navigation-links.js.map +0 -1
  145. package/dist/components/left-navigation/side-navigation.d.ts +0 -29
  146. package/dist/components/left-navigation/side-navigation.d.ts.map +0 -1
  147. package/dist/components/left-navigation/side-navigation.js +0 -411
  148. package/dist/components/left-navigation/side-navigation.js.map +0 -1
  149. package/dist/components/left-navigation/side-navigation.module.less +0 -530
  150. package/dist/components/left-navigation/side-navigation.module.less.d.ts +0 -48
  151. package/dist/components/left-navigation/side-navigation.stories.d.ts +0 -17
  152. package/dist/components/left-navigation/side-navigation.stories.d.ts.map +0 -1
  153. package/dist/components/left-navigation/with-tooltip.d.ts +0 -4
  154. package/dist/components/left-navigation/with-tooltip.d.ts.map +0 -1
  155. package/dist/components/left-navigation/with-tooltip.js +0 -15
  156. package/dist/components/left-navigation/with-tooltip.js.map +0 -1
  157. package/dist/components/links.d.ts +0 -5
  158. package/dist/components/links.d.ts.map +0 -1
  159. package/dist/components/links.js +0 -35
  160. package/dist/components/links.js.map +0 -1
  161. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.d.ts.map +0 -1
  162. package/dist/components/titan-layout/layout-profile.stories.d.ts +0 -13
  163. package/dist/components/titan-layout/layout-profile.stories.d.ts.map +0 -1
  164. package/src/components/header-navigation/header-navigation-content.tsx +0 -120
  165. package/src/components/header-navigation/header-navigation-extra-stacked.stories.tsx +0 -19
  166. package/src/components/header-navigation/header-navigation-extra.stories.tsx +0 -142
  167. package/src/components/header-navigation/header-navigation-links.tsx +0 -141
  168. package/src/components/header-navigation/header-navigation-stacked.stories.tsx +0 -146
  169. package/src/components/header-navigation/header-navigation-stories.module.less +0 -6
  170. package/src/components/header-navigation/header-navigation-stories.module.less.d.ts +0 -3
  171. package/src/components/header-navigation/header-navigation.module.less +0 -260
  172. package/src/components/header-navigation/header-navigation.module.less.d.ts +0 -22
  173. package/src/components/header-navigation/header-navigation.stories.tsx +0 -165
  174. package/src/components/header-navigation/header-navigation.tsx +0 -327
  175. package/src/components/header-navigation/index.ts +0 -1
  176. package/src/components/header-navigation/with-tooltip.tsx +0 -15
  177. package/src/components/layout.stories.tsx +0 -103
  178. package/src/components/left-navigation/header-navigation-extra-tiny.stories.tsx +0 -21
  179. package/src/components/left-navigation/header-navigation-tiny-links.tsx +0 -145
  180. package/src/components/left-navigation/header-navigation-tiny.module.less +0 -117
  181. package/src/components/left-navigation/header-navigation-tiny.module.less.d.ts +0 -15
  182. package/src/components/left-navigation/header-navigation-tiny.stories.tsx +0 -178
  183. package/src/components/left-navigation/header-navigation-tiny.tsx +0 -65
  184. package/src/components/left-navigation/index.ts +0 -4
  185. package/src/components/left-navigation/interface-internal.ts +0 -11
  186. package/src/components/left-navigation/interface.ts +0 -26
  187. package/src/components/left-navigation/side-navigation-context.tsx +0 -13
  188. package/src/components/left-navigation/side-navigation-links-internal.tsx +0 -151
  189. package/src/components/left-navigation/side-navigation-links.tsx +0 -57
  190. package/src/components/left-navigation/side-navigation.module.less +0 -530
  191. package/src/components/left-navigation/side-navigation.module.less.d.ts +0 -48
  192. package/src/components/left-navigation/side-navigation.stories.tsx +0 -226
  193. package/src/components/left-navigation/side-navigation.tsx +0 -543
  194. package/src/components/left-navigation/with-tooltip.tsx +0 -16
  195. package/src/components/links.tsx +0 -54
  196. package/src/components/titan-layout/layout-profile.stories.tsx +0 -46
@@ -1,117 +0,0 @@
1
- /* stylelint-disable no-descending-specificity */
2
- @import (reference) '@servicetitan/tokens/core/tokens.less';
3
-
4
- @size-links-tiny: 24px;
5
-
6
- .header-tiny {
7
- display: grid;
8
- grid-template-columns: repeat(3, 1fr);
9
- grid-template-rows: 48px;
10
-
11
- background-color: @color-white;
12
- color: @color-black;
13
-
14
- & > * {
15
- overflow-y: hidden;
16
- }
17
-
18
- .he-top-left {
19
- grid-column: span 1;
20
- }
21
-
22
- .he-top-center {
23
- grid-column: span 1;
24
- }
25
-
26
- .he-top-right {
27
- grid-column: span 1;
28
-
29
- & > * {
30
- color: @color-black;
31
- }
32
- }
33
-
34
- :global(.profile-dropdown-image) {
35
- height: 24px;
36
- width: 24px;
37
- }
38
-
39
- :global(.profile-dropdown-trigger) {
40
- height: 32px;
41
- font-size: @size-links-tiny;
42
- }
43
-
44
- .navigation-link {
45
- margin: 6px 2px;
46
- padding: 6px 6px;
47
- border-radius: 12px;
48
- font-size: @size-links-tiny;
49
- color: inherit;
50
-
51
- &.navigation-item-active:not(.navigation-item-overflow) {
52
- background-color: @color-blue-100 !important;
53
- color: @color-blue-500 !important;
54
- }
55
- &:hover:not(.navigation-item-active):not(.navigation-item-overflow) {
56
- background-color: rgba(0, 0, 0, 0.12) !important;
57
- }
58
-
59
- &.navigation-item-icon-state.navigation-item-active {
60
- .navigation-icon:not(.navigation-icon-active) {
61
- display: none;
62
- }
63
-
64
- .navigation-icon.navigation-icon-active[data-anv][data-anv] {
65
- display: block;
66
- }
67
- }
68
- }
69
-
70
- .navigation-icon[data-anv][data-anv] {
71
- display: inline-block;
72
- color: inherit;
73
- height: 24px;
74
- width: 24px;
75
-
76
- > svg {
77
- height: @size-links-tiny;
78
- width: @size-links-tiny;
79
- }
80
-
81
- &.navigation-icon-active {
82
- display: none;
83
- }
84
- }
85
- }
86
-
87
- .navigation-link {
88
- // styles specific to extra nav links
89
- color: @color-black;
90
- position: relative;
91
- display: flex;
92
- align-items: center;
93
- flex-wrap: nowrap;
94
- text-wrap: nowrap;
95
-
96
- .navigation-item-counter {
97
- color: @color-white;
98
- font-weight: @font-weight-semibold;
99
- font-size: 8px !important;
100
- min-width: 12px;
101
- position: absolute;
102
- top: 4px;
103
- right: -2px;
104
- }
105
-
106
- .navigation-item-label {
107
- color: inherit;
108
- font-size: @typescale-1;
109
- font-family: @base-font-family;
110
- font-weight: @font-weight-semibold;
111
- margin-left: @spacing-half;
112
- }
113
-
114
- &.navigation-item-counter-long {
115
- right: -8px;
116
- }
117
- }
@@ -1,15 +0,0 @@
1
- export const __esModule: true;
2
- export const heTopCenter: string;
3
- export const heTopLeft: string;
4
- export const heTopRight: string;
5
- export const headerTiny: string;
6
- export const navigationIcon: string;
7
- export const navigationIconActive: string;
8
- export const navigationItemActive: string;
9
- export const navigationItemCounter: string;
10
- export const navigationItemCounterLong: string;
11
- export const navigationItemIconState: string;
12
- export const navigationItemLabel: string;
13
- export const navigationItemOverflow: string;
14
- export const navigationLink: string;
15
-
@@ -1,178 +0,0 @@
1
- import { Flex, TextField } from '@servicetitan/anvil2';
2
- import SvgSearch from '@servicetitan/anvil2/assets/icons/material/round/search.svg';
3
- import SvgSettingsActive from '@servicetitan/anvil2/assets/icons/st/gnav_settings_active.svg';
4
- import SvgSettings from '@servicetitan/anvil2/assets/icons/st/gnav_settings_inactive.svg';
5
- import SvgRocketActive from '@servicetitan/anvil2/assets/icons/st/gnav_titan_advisor_active.svg';
6
- import SvgRocket from '@servicetitan/anvil2/assets/icons/st/gnav_titan_advisor_inactive.svg';
7
-
8
- import { FC, Fragment } from 'react';
9
- import { CallsNavigationTrigger, SearchIcon, withAnvil, withMemoryRouter } from '../../test/data';
10
- import * as Styles from '../header-navigation/header-navigation-stories.module.less';
11
- import { LogoCompanyTitle } from '../logo/logo-company-title';
12
- import { LogoTitan, LogoTitanTitle } from '../logo/logo-titan-text';
13
- import { ProfileDropdown } from '../profile-dropdown/profile-dropdown';
14
- import { HeaderNavigationTiny } from './header-navigation-tiny';
15
- import { HeaderNavigationLink } from './header-navigation-tiny-links';
16
-
17
- export default {
18
- title: 'Navigation/HeaderNavigationTiny',
19
- component: HeaderNavigationTiny,
20
- parameters: {},
21
- decorators: [
22
- withMemoryRouter,
23
- withAnvil,
24
- (Story: any) => (
25
- <div className="border" style={{ height: '500px' }}>
26
- <Story />
27
- </div>
28
- ),
29
- ],
30
- };
31
-
32
- export const DefaultTinyNavigation = () => (
33
- <HeaderNavigationTiny
34
- className="border-bottom"
35
- left={<LogoCompanyTitle className="m-l-1" size="150" />}
36
- leftClassName="d-f align-items-center"
37
- />
38
- );
39
-
40
- const TimeZoneOffset: FC = () => (
41
- <div className="fs-2 ff-default fw-bold p-r-1">
42
- <span>EST (-9 hrs)</span>
43
- </div>
44
- );
45
-
46
- export const WithAllMonolithData = () => (
47
- <HeaderNavigationTiny
48
- className="border-bottom"
49
- left={<LogoCompanyTitle className="m-l-1" size="150" />}
50
- leftClassName="d-f align-items-center"
51
- right={
52
- <Fragment>
53
- <TimeZoneOffset />
54
-
55
- <HeaderNavigationLink
56
- id="search"
57
- title="Search"
58
- to="https://google.com"
59
- target="_blank"
60
- iconComponent={SearchIcon}
61
- hint="Search: for all the questions"
62
- tooltip="Search"
63
- icon={SvgSearch}
64
- iconActive={SvgSearch}
65
- />
66
-
67
- <CallsNavigationTrigger />
68
-
69
- <HeaderNavigationLink
70
- id="titanAdvisor"
71
- title="Titan Advisor"
72
- to="titanAdvisor"
73
- iconName="rocket"
74
- iconClassName={Styles.rocketIcon}
75
- icon={SvgRocket}
76
- iconActive={SvgRocketActive}
77
- />
78
-
79
- <HeaderNavigationLink
80
- id="settings"
81
- title="Settings"
82
- to="settings"
83
- target="_blank"
84
- iconName="settings"
85
- aria-label="search"
86
- hint="Settings"
87
- icon={SvgSettings}
88
- iconActive={SvgSettingsActive}
89
- />
90
-
91
- <ProfileDropdown>
92
- <ProfileDropdown.Link id="tasks" to="https://googgle.com" counter={10}>
93
- Task Management
94
- </ProfileDropdown.Link>
95
- <ProfileDropdown.Divider />
96
- <ProfileDropdown.Link id="sign-out" to="https://googgle.com" text="Sign Out">
97
- Sign Out{' '}
98
- <span className="c-neutral-100 m-l-half t-truncate">James Bond</span>
99
- </ProfileDropdown.Link>
100
- <ProfileDropdown.Section id="userid" className="c-neutral-100 fs-1">
101
- User ID: 007
102
- </ProfileDropdown.Section>
103
- </ProfileDropdown>
104
- </Fragment>
105
- }
106
- center={<TextField placeholder="Search smth" size="small" className="w-100-i" />}
107
- centerClassName="d-f align-items-center p-x-1"
108
- />
109
- );
110
-
111
- export const WithAllMonolithDataCommercial = () => (
112
- <HeaderNavigationTiny
113
- className="border-bottom z-global-nav"
114
- left={
115
- <Flex alignItems="center">
116
- <LogoTitan mantleFill="#2270EE" className="p-x-half" size={48} />
117
- <LogoTitanTitle>Commercial</LogoTitanTitle>
118
- </Flex>
119
- }
120
- leftClassName="d-f align-items-center"
121
- right={
122
- <Fragment>
123
- <TimeZoneOffset />
124
-
125
- <HeaderNavigationLink
126
- id="search"
127
- title="Search"
128
- to="https://google.com"
129
- target="_blank"
130
- iconComponent={SearchIcon}
131
- hint="Search: for all the questions"
132
- icon={SvgSearch}
133
- iconActive={SvgSearch}
134
- />
135
-
136
- <CallsNavigationTrigger />
137
-
138
- <HeaderNavigationLink
139
- id="titanAdvisor"
140
- title="Titan Advisor"
141
- to="titanAdvisor"
142
- iconName="rocket"
143
- iconClassName={Styles.rocketIcon}
144
- icon={SvgRocket}
145
- iconActive={SvgRocketActive}
146
- />
147
-
148
- <HeaderNavigationLink
149
- id="settings"
150
- title="Settings"
151
- to="settings"
152
- iconName="settings"
153
- aria-label="search"
154
- hint="Settings"
155
- tooltip="Settings"
156
- icon={SvgSettings}
157
- iconActive={SvgSettingsActive}
158
- />
159
-
160
- <ProfileDropdown>
161
- <ProfileDropdown.Link id="tasks" to="https://googgle.com" counter={10}>
162
- Task Management
163
- </ProfileDropdown.Link>
164
- <ProfileDropdown.Divider />
165
- <ProfileDropdown.Link id="sign-out" to="https://googgle.com" text="Sign Out">
166
- Sign Out{' '}
167
- <span className="c-neutral-100 m-l-half t-truncate">James Bond</span>
168
- </ProfileDropdown.Link>
169
- <ProfileDropdown.Section id="userid" className="c-neutral-100 fs-1">
170
- User ID: 007
171
- </ProfileDropdown.Section>
172
- </ProfileDropdown>
173
- </Fragment>
174
- }
175
- center={<TextField placeholder="Search smth" size="small" className="w-100-i" />}
176
- centerClassName="d-f align-items-center p-x-1"
177
- />
178
- );
@@ -1,65 +0,0 @@
1
- import classNames from 'classnames';
2
- import { FC, ReactElement, ReactNode } from 'react';
3
- import * as Styles from './header-navigation-tiny.module.less';
4
-
5
- export interface HeaderNavigationTinyProps {
6
- /** container class name */
7
- className?: string;
8
- /** extra navigation */
9
- right?: ReactNode;
10
- /** extra navigation container class name */
11
- rightClassName?: string;
12
- /** container id */
13
- id?: string;
14
- /** left content (usually used for logo) */
15
- left?: ReactElement;
16
- /** left container class name */
17
- leftClassName?: string;
18
- /** center content */
19
- center?: ReactElement;
20
- /** center container class name */
21
- centerClassName?: string;
22
- /** minimal width for navigation bar */
23
- minWidth?: number;
24
- }
25
-
26
- export const HeaderNavigationTiny: FC<HeaderNavigationTinyProps> = ({
27
- className,
28
- id,
29
- left,
30
- leftClassName,
31
- right,
32
- rightClassName,
33
- center,
34
- centerClassName,
35
- minWidth = 800,
36
- }) => {
37
- return (
38
- <div
39
- className={classNames(Styles.headerTiny, className)}
40
- style={{ minWidth: `${minWidth}px` }}
41
- id={id}
42
- data-cy="header-navigation"
43
- >
44
- <div className={classNames(Styles.heTopLeft, leftClassName)} data-cy="navigation-left">
45
- {left}
46
- </div>
47
- <div
48
- className={classNames(Styles.heTopCenter, centerClassName)}
49
- data-cy="navigation-center"
50
- >
51
- {center}
52
- </div>
53
- <div
54
- className={classNames(
55
- 'd-f flex-row justify-content-end align-items-center',
56
- Styles.heTopRight,
57
- rightClassName
58
- )}
59
- data-cy="navigation-right"
60
- >
61
- {right}
62
- </div>
63
- </div>
64
- );
65
- };
@@ -1,4 +0,0 @@
1
- export * from './header-navigation-tiny';
2
- export * from './side-navigation';
3
- export * from './side-navigation-links';
4
- export type * from './interface';
@@ -1,11 +0,0 @@
1
- import { FC } from 'react';
2
- import { NavLinkComponentProps } from '../../utils/navigation-context';
3
- import { SideNavigationExpandedState } from './interface';
4
-
5
- export interface NavigationComponentProps {
6
- navigationComponent: FC<NavLinkComponentProps>;
7
- }
8
-
9
- export interface SideNavigationExpandedProps {
10
- expanded?: SideNavigationExpandedState;
11
- }
@@ -1,26 +0,0 @@
1
- import { FC, ReactElement } from 'react';
2
- import { NavigationItemData } from '../../utils/navigation';
3
- import { SideNavigationContextType } from './side-navigation-context';
4
-
5
- export interface SideNavigationExpandedState {
6
- // expanded bar (classic)
7
- bar: boolean;
8
- // expanded submenu item (classic)
9
- expandedSubmenu?: string;
10
- // collapsed bar (experimental submenu bar)
11
- collapsedBar?: boolean;
12
- }
13
-
14
- export interface SideNavigationLinkWrapperProps {
15
- children: ReactElement<SideNavigationLinkProps> | ReactElement<SideNavigationTriggerProps>;
16
- context: SideNavigationContextType;
17
- }
18
-
19
- export interface SideNavigationLinkProps extends Omit<NavigationItemData, 'submenu'> {
20
- wrapper?: FC<SideNavigationLinkWrapperProps>;
21
- }
22
- export interface SideNavigationTriggerProps
23
- extends Omit<SideNavigationLinkProps, 'to' | 'isActive'> {
24
- isActive?: boolean;
25
- wrapper?: FC<SideNavigationLinkWrapperProps>;
26
- }
@@ -1,13 +0,0 @@
1
- import { CSSProperties, createContext } from 'react';
2
-
3
- export interface SideNavigationContextType {
4
- styles: {
5
- popoverContent: CSSProperties;
6
- };
7
- }
8
-
9
- export const SideNavigationContext = createContext<SideNavigationContextType>({
10
- styles: {
11
- popoverContent: {},
12
- },
13
- });
@@ -1,151 +0,0 @@
1
- import { Icon } from '@servicetitan/anvil2';
2
- import SvgGroupCollapse from '@servicetitan/anvil2/assets/icons/material/round/expand_less.svg';
3
- import SvgGroupExpand from '@servicetitan/anvil2/assets/icons/material/round/expand_more.svg';
4
-
5
- import classNames from 'classnames';
6
- import { FC, Fragment, MouseEvent } from 'react';
7
- import { NavigationItemData } from '../../utils/navigation';
8
- import { BadgeTag, BadgeTagProps } from '../badge-tag';
9
- import { SideNavigationTriggerProps } from './interface';
10
- import { NavigationComponentProps, SideNavigationExpandedProps } from './interface-internal';
11
- import * as Styles from './side-navigation.module.less';
12
-
13
- export interface InternalSideNavigationItemContentProps
14
- extends Omit<NavigationItemData, 'iconName' | 'to' | 'counter' | 'tag'> {
15
- submenuExpanded: boolean | undefined;
16
- tag: BadgeTagProps | undefined;
17
- onExpandToggle?: (e: MouseEvent<never>) => void;
18
- }
19
-
20
- export const InternalSideNavigationItemContent: FC<InternalSideNavigationItemContentProps> = ({
21
- icon,
22
- iconActive,
23
- iconClassName,
24
- iconComponent: IconComponent,
25
- tag,
26
- title,
27
- submenuExpanded,
28
- onExpandToggle,
29
- }) => (
30
- <Fragment>
31
- <div className={Styles.navigationItemIconWrapper}>
32
- {IconComponent ? (
33
- <i className={classNames(Styles.navigationIcon, iconClassName)}>
34
- <IconComponent />
35
- </i>
36
- ) : (
37
- <Fragment>
38
- {icon && (
39
- <Icon
40
- svg={icon}
41
- className={classNames(
42
- Styles.navigationIcon,
43
- Styles.navigationIconInactive,
44
- iconClassName
45
- )}
46
- />
47
- )}
48
- {iconActive && (
49
- <Icon
50
- svg={iconActive}
51
- className={classNames(
52
- Styles.navigationIcon,
53
- Styles.navigationIconActive,
54
- iconClassName
55
- )}
56
- />
57
- )}
58
- </Fragment>
59
- )}
60
-
61
- <div className={Styles.navigationItemTextExpanded}>{title}</div>
62
- {!!tag && (
63
- <BadgeTag
64
- data={tag}
65
- className={Styles.navigationItemCounter}
66
- longClassName={Styles.navigationItemCounterLong}
67
- />
68
- )}
69
- {typeof submenuExpanded === 'boolean' && (
70
- <div className={Styles.navigationItemGroupToggleWrapper}>
71
- <Icon
72
- svg={submenuExpanded ? SvgGroupCollapse : SvgGroupExpand}
73
- className={Styles.navigationItemGroupToggle}
74
- onClick={onExpandToggle}
75
- />
76
- <div
77
- className={Styles.navigationItemGroupToggleClick}
78
- onClick={onExpandToggle}
79
- />
80
- </div>
81
- )}
82
- </div>
83
-
84
- <div
85
- className={classNames(Styles.navigationItemTextCollapsed, {
86
- [Styles.navigationItemTextSmall]: title.length >= 10,
87
- })}
88
- >
89
- {title}
90
- </div>
91
- </Fragment>
92
- );
93
-
94
- export interface InternalSideNavigationLinkProps
95
- extends Omit<NavigationItemData, 'iconName' | 'counter' | 'tag'>,
96
- NavigationComponentProps,
97
- SideNavigationExpandedProps {
98
- submenuExpanded: boolean | undefined;
99
- dataPrefix?: string;
100
- tag: BadgeTagProps | undefined;
101
- onExpandToggle?: (e: MouseEvent<never>) => void;
102
- }
103
-
104
- export const internalNavigationContentContainerProps = ({
105
- className,
106
- icon,
107
- iconActive,
108
- iconComponent,
109
- id,
110
- isActive,
111
- prefix,
112
- }: Omit<SideNavigationTriggerProps, 'isActive' | 'tag'> & { prefix: string; isActive?: any }) => ({
113
- 'data-cy': `${prefix}-${id}`,
114
- 'data-pendo': `${prefix}-${id}`,
115
- 'className': classNames(Styles.navigationItem, className, {
116
- [Styles.navigationItemActive]: isActive === true,
117
- [Styles.navigationItemIconSwitch]: !!icon && !!iconActive && !iconComponent,
118
- }),
119
- });
120
-
121
- /** Side Navigation menu item (for internal usage) */
122
- export const InternalSideNavigationLink: FC<InternalSideNavigationLinkProps> = ({
123
- to,
124
- className,
125
- dataPrefix,
126
- isActive,
127
- navigationComponent: NavigationComponent,
128
- submenuExpanded,
129
- onExpandToggle,
130
- ...props
131
- }) => {
132
- return (
133
- <NavigationComponent
134
- {...internalNavigationContentContainerProps({
135
- ...props,
136
- prefix: dataPrefix ?? 'navigation-item',
137
- className,
138
- isActive,
139
- })}
140
- to={to}
141
- isActive={typeof isActive === 'function' ? isActive : undefined}
142
- activeClassName={Styles.navigationItemActive}
143
- >
144
- <InternalSideNavigationItemContent
145
- submenuExpanded={submenuExpanded}
146
- onExpandToggle={onExpandToggle}
147
- {...props}
148
- />
149
- </NavigationComponent>
150
- );
151
- };
@@ -1,57 +0,0 @@
1
- import classNames from 'classnames';
2
- import { FC, ReactElement, useContext } from 'react';
3
- import { NavigationComponentContext } from '../../utils/navigation-context';
4
- import { getCounterTag } from '../../utils/side-nav';
5
- import { SideNavigationLinkProps, SideNavigationTriggerProps } from './interface';
6
- import { SideNavigationContext } from './side-navigation-context';
7
- import {
8
- InternalSideNavigationItemContent,
9
- InternalSideNavigationLink,
10
- internalNavigationContentContainerProps,
11
- } from './side-navigation-links-internal';
12
-
13
- const WrappedLink: FC<{
14
- children: ReactElement<any>;
15
- wrapper: NonNullable<SideNavigationLinkProps['wrapper']>;
16
- }> = ({ children, wrapper: WrapperComponent }) => {
17
- return (
18
- <WrapperComponent context={useContext(SideNavigationContext)}>{children}</WrapperComponent>
19
- );
20
- };
21
- /** Side Navigation menu link */
22
- export function SideNavigationLink({ wrapper, ...props }: SideNavigationLinkProps) {
23
- const NavigationComponent = useContext(NavigationComponentContext);
24
-
25
- const element = (
26
- <InternalSideNavigationLink
27
- {...props}
28
- navigationComponent={NavigationComponent}
29
- submenuExpanded={undefined}
30
- dataPrefix="navigation-link"
31
- tag={getCounterTag(props.counter, props.tag)}
32
- />
33
- );
34
-
35
- return wrapper ? <WrappedLink wrapper={wrapper}>{element}</WrappedLink> : element;
36
- }
37
-
38
- /** Side Navigation menu trigger */
39
- export function SideNavigationTrigger({ wrapper, ...props }: SideNavigationTriggerProps) {
40
- const element = (
41
- <div
42
- {...internalNavigationContentContainerProps({
43
- ...props,
44
- prefix: 'navigation-trigger',
45
- className: classNames(props.className, 'cursor-pointer'),
46
- isActive: props.isActive,
47
- })}
48
- >
49
- <InternalSideNavigationItemContent
50
- submenuExpanded={undefined}
51
- {...props}
52
- tag={getCounterTag(props.counter, props.tag)}
53
- />
54
- </div>
55
- );
56
- return wrapper ? <WrappedLink wrapper={wrapper}>{element}</WrappedLink> : element;
57
- }