@servicetitan/navigation 12.0.2 → 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 (201) 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-dark.js +1 -1
  12. package/dist/components/titan-layout/layout-header-dark.js.map +1 -1
  13. package/dist/components/titan-layout/layout-header-links.d.ts +3 -3
  14. package/dist/components/titan-layout/layout-header-links.d.ts.map +1 -1
  15. package/dist/components/titan-layout/layout-header-links.js.map +1 -1
  16. package/dist/components/titan-layout/layout-header.d.ts +2 -2
  17. package/dist/components/titan-layout/layout-header.d.ts.map +1 -1
  18. package/dist/components/titan-layout/layout-header.js.map +1 -1
  19. package/dist/components/titan-layout/layout-header.module.less +5 -0
  20. package/dist/components/titan-layout/layout-profile.d.ts.map +1 -1
  21. package/dist/components/titan-layout/layout-profile.js +1 -7
  22. package/dist/components/titan-layout/layout-profile.js.map +1 -1
  23. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts +10 -17
  24. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts.map +1 -1
  25. package/dist/components/titan-layout/layout-sidebar-links-internal.js +34 -41
  26. package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -1
  27. package/dist/components/titan-layout/layout-sidebar-links.d.ts +3 -3
  28. package/dist/components/titan-layout/layout-sidebar-links.d.ts.map +1 -1
  29. package/dist/components/titan-layout/layout-sidebar-links.js +13 -13
  30. package/dist/components/titan-layout/layout-sidebar-links.js.map +1 -1
  31. package/dist/components/titan-layout/layout-sidebar.js +5 -3
  32. package/dist/components/titan-layout/layout-sidebar.js.map +1 -1
  33. package/dist/components/titan-layout/titan-layout-links.d.ts +5 -0
  34. package/dist/components/titan-layout/titan-layout-links.d.ts.map +1 -0
  35. package/dist/components/titan-layout/titan-layout-links.js +34 -0
  36. package/dist/components/titan-layout/titan-layout-links.js.map +1 -0
  37. package/dist/components/titan-layout/titan-layout.d.ts +2 -3
  38. package/dist/components/titan-layout/titan-layout.d.ts.map +1 -1
  39. package/dist/components/titan-layout/titan-layout.js +3 -3
  40. package/dist/components/titan-layout/titan-layout.js.map +1 -1
  41. package/dist/components/titan-layout/titan-layout.stories.d.ts.map +1 -1
  42. package/dist/index.d.ts +1 -5
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +0 -4
  45. package/dist/index.js.map +1 -1
  46. package/dist/test/data.d.ts +27 -2
  47. package/dist/test/data.d.ts.map +1 -1
  48. package/dist/test/data.js +181 -27
  49. package/dist/test/data.js.map +1 -1
  50. package/dist/utils/navigation-context.d.ts +3 -22
  51. package/dist/utils/navigation-context.d.ts.map +1 -1
  52. package/dist/utils/navigation-context.js +2 -10
  53. package/dist/utils/navigation-context.js.map +1 -1
  54. package/dist/utils/navigation.d.ts +2 -5
  55. package/dist/utils/navigation.d.ts.map +1 -1
  56. package/dist/utils/navigation.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/components/profile-dropdown/{profile-dropdown-tiny.stories.tsx → profile-dropdown-legacy.stories.tsx} +6 -6
  59. package/src/components/profile-dropdown/profile-dropdown-stacked.stories.tsx +12 -4
  60. package/src/components/profile-dropdown/profile-dropdown.stories.tsx +16 -9
  61. package/src/components/profile-dropdown/profile-dropdown.tsx +2 -11
  62. package/src/components/titan-layout/interface.ts +19 -15
  63. package/src/components/titan-layout/layout-header-dark.tsx +1 -1
  64. package/src/components/titan-layout/layout-header-links.tsx +3 -6
  65. package/src/components/titan-layout/layout-header.module.less +5 -0
  66. package/src/components/titan-layout/layout-header.tsx +2 -2
  67. package/src/components/titan-layout/layout-profile.tsx +2 -6
  68. package/src/components/titan-layout/layout-sidebar-links-internal.tsx +69 -81
  69. package/src/components/titan-layout/layout-sidebar-links.tsx +38 -24
  70. package/src/components/titan-layout/layout-sidebar.tsx +1 -1
  71. package/src/components/titan-layout/titan-layout-links.tsx +34 -0
  72. package/src/components/titan-layout/titan-layout.stories.tsx +34 -33
  73. package/src/components/titan-layout/titan-layout.tsx +5 -4
  74. package/src/index.ts +1 -11
  75. package/src/test/data.tsx +152 -39
  76. package/src/utils/navigation-context.tsx +9 -35
  77. package/src/utils/navigation.ts +3 -7
  78. package/dist/components/header-navigation/header-navigation-content.d.ts +0 -30
  79. package/dist/components/header-navigation/header-navigation-content.d.ts.map +0 -1
  80. package/dist/components/header-navigation/header-navigation-content.js +0 -58
  81. package/dist/components/header-navigation/header-navigation-content.js.map +0 -1
  82. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.d.ts +0 -9
  83. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.d.ts.map +0 -1
  84. package/dist/components/header-navigation/header-navigation-extra.stories.d.ts +0 -12
  85. package/dist/components/header-navigation/header-navigation-extra.stories.d.ts.map +0 -1
  86. package/dist/components/header-navigation/header-navigation-links.d.ts +0 -11
  87. package/dist/components/header-navigation/header-navigation-links.d.ts.map +0 -1
  88. package/dist/components/header-navigation/header-navigation-links.js +0 -62
  89. package/dist/components/header-navigation/header-navigation-links.js.map +0 -1
  90. package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts +0 -12
  91. package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts.map +0 -1
  92. package/dist/components/header-navigation/header-navigation-stories.module.less +0 -6
  93. package/dist/components/header-navigation/header-navigation-stories.module.less.d.ts +0 -3
  94. package/dist/components/header-navigation/header-navigation.d.ts +0 -59
  95. package/dist/components/header-navigation/header-navigation.d.ts.map +0 -1
  96. package/dist/components/header-navigation/header-navigation.js +0 -228
  97. package/dist/components/header-navigation/header-navigation.js.map +0 -1
  98. package/dist/components/header-navigation/header-navigation.module.less +0 -260
  99. package/dist/components/header-navigation/header-navigation.module.less.d.ts +0 -22
  100. package/dist/components/header-navigation/header-navigation.stories.d.ts +0 -12
  101. package/dist/components/header-navigation/header-navigation.stories.d.ts.map +0 -1
  102. package/dist/components/header-navigation/index.d.ts +0 -2
  103. package/dist/components/header-navigation/index.d.ts.map +0 -1
  104. package/dist/components/header-navigation/index.js +0 -3
  105. package/dist/components/header-navigation/index.js.map +0 -1
  106. package/dist/components/header-navigation/with-tooltip.d.ts +0 -4
  107. package/dist/components/header-navigation/with-tooltip.d.ts.map +0 -1
  108. package/dist/components/header-navigation/with-tooltip.js +0 -10
  109. package/dist/components/header-navigation/with-tooltip.js.map +0 -1
  110. package/dist/components/layout.stories.d.ts +0 -13
  111. package/dist/components/layout.stories.d.ts.map +0 -1
  112. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.d.ts +0 -9
  113. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.d.ts.map +0 -1
  114. package/dist/components/left-navigation/header-navigation-tiny-links.d.ts +0 -18
  115. package/dist/components/left-navigation/header-navigation-tiny-links.d.ts.map +0 -1
  116. package/dist/components/left-navigation/header-navigation-tiny-links.js +0 -79
  117. package/dist/components/left-navigation/header-navigation-tiny-links.js.map +0 -1
  118. package/dist/components/left-navigation/header-navigation-tiny.d.ts +0 -23
  119. package/dist/components/left-navigation/header-navigation-tiny.d.ts.map +0 -1
  120. package/dist/components/left-navigation/header-navigation-tiny.js +0 -32
  121. package/dist/components/left-navigation/header-navigation-tiny.js.map +0 -1
  122. package/dist/components/left-navigation/header-navigation-tiny.module.less +0 -117
  123. package/dist/components/left-navigation/header-navigation-tiny.module.less.d.ts +0 -15
  124. package/dist/components/left-navigation/header-navigation-tiny.stories.d.ts +0 -12
  125. package/dist/components/left-navigation/header-navigation-tiny.stories.d.ts.map +0 -1
  126. package/dist/components/left-navigation/index.d.ts +0 -5
  127. package/dist/components/left-navigation/index.d.ts.map +0 -1
  128. package/dist/components/left-navigation/index.js +0 -5
  129. package/dist/components/left-navigation/index.js.map +0 -1
  130. package/dist/components/left-navigation/interface-internal.d.ts +0 -10
  131. package/dist/components/left-navigation/interface-internal.d.ts.map +0 -1
  132. package/dist/components/left-navigation/interface-internal.js +0 -3
  133. package/dist/components/left-navigation/interface-internal.js.map +0 -1
  134. package/dist/components/left-navigation/interface.d.ts +0 -20
  135. package/dist/components/left-navigation/interface.d.ts.map +0 -1
  136. package/dist/components/left-navigation/interface.js +0 -3
  137. package/dist/components/left-navigation/interface.js.map +0 -1
  138. package/dist/components/left-navigation/side-navigation-context.d.ts +0 -8
  139. package/dist/components/left-navigation/side-navigation-context.d.ts.map +0 -1
  140. package/dist/components/left-navigation/side-navigation-context.js +0 -8
  141. package/dist/components/left-navigation/side-navigation-context.js.map +0 -1
  142. package/dist/components/left-navigation/side-navigation-links-internal.d.ts +0 -28
  143. package/dist/components/left-navigation/side-navigation-links-internal.d.ts.map +0 -1
  144. package/dist/components/left-navigation/side-navigation-links-internal.js +0 -89
  145. package/dist/components/left-navigation/side-navigation-links-internal.js.map +0 -1
  146. package/dist/components/left-navigation/side-navigation-links.d.ts +0 -6
  147. package/dist/components/left-navigation/side-navigation-links.d.ts.map +0 -1
  148. package/dist/components/left-navigation/side-navigation-links.js +0 -48
  149. package/dist/components/left-navigation/side-navigation-links.js.map +0 -1
  150. package/dist/components/left-navigation/side-navigation.d.ts +0 -29
  151. package/dist/components/left-navigation/side-navigation.d.ts.map +0 -1
  152. package/dist/components/left-navigation/side-navigation.js +0 -411
  153. package/dist/components/left-navigation/side-navigation.js.map +0 -1
  154. package/dist/components/left-navigation/side-navigation.module.less +0 -530
  155. package/dist/components/left-navigation/side-navigation.module.less.d.ts +0 -48
  156. package/dist/components/left-navigation/side-navigation.stories.d.ts +0 -17
  157. package/dist/components/left-navigation/side-navigation.stories.d.ts.map +0 -1
  158. package/dist/components/left-navigation/with-tooltip.d.ts +0 -4
  159. package/dist/components/left-navigation/with-tooltip.d.ts.map +0 -1
  160. package/dist/components/left-navigation/with-tooltip.js +0 -15
  161. package/dist/components/left-navigation/with-tooltip.js.map +0 -1
  162. package/dist/components/links.d.ts +0 -5
  163. package/dist/components/links.d.ts.map +0 -1
  164. package/dist/components/links.js +0 -35
  165. package/dist/components/links.js.map +0 -1
  166. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.d.ts.map +0 -1
  167. package/dist/components/titan-layout/layout-profile.stories.d.ts +0 -13
  168. package/dist/components/titan-layout/layout-profile.stories.d.ts.map +0 -1
  169. package/src/components/header-navigation/header-navigation-content.tsx +0 -120
  170. package/src/components/header-navigation/header-navigation-extra-stacked.stories.tsx +0 -19
  171. package/src/components/header-navigation/header-navigation-extra.stories.tsx +0 -142
  172. package/src/components/header-navigation/header-navigation-links.tsx +0 -141
  173. package/src/components/header-navigation/header-navigation-stacked.stories.tsx +0 -146
  174. package/src/components/header-navigation/header-navigation-stories.module.less +0 -6
  175. package/src/components/header-navigation/header-navigation-stories.module.less.d.ts +0 -3
  176. package/src/components/header-navigation/header-navigation.module.less +0 -260
  177. package/src/components/header-navigation/header-navigation.module.less.d.ts +0 -22
  178. package/src/components/header-navigation/header-navigation.stories.tsx +0 -165
  179. package/src/components/header-navigation/header-navigation.tsx +0 -327
  180. package/src/components/header-navigation/index.ts +0 -1
  181. package/src/components/header-navigation/with-tooltip.tsx +0 -15
  182. package/src/components/layout.stories.tsx +0 -103
  183. package/src/components/left-navigation/header-navigation-extra-tiny.stories.tsx +0 -21
  184. package/src/components/left-navigation/header-navigation-tiny-links.tsx +0 -145
  185. package/src/components/left-navigation/header-navigation-tiny.module.less +0 -117
  186. package/src/components/left-navigation/header-navigation-tiny.module.less.d.ts +0 -15
  187. package/src/components/left-navigation/header-navigation-tiny.stories.tsx +0 -178
  188. package/src/components/left-navigation/header-navigation-tiny.tsx +0 -65
  189. package/src/components/left-navigation/index.ts +0 -4
  190. package/src/components/left-navigation/interface-internal.ts +0 -11
  191. package/src/components/left-navigation/interface.ts +0 -26
  192. package/src/components/left-navigation/side-navigation-context.tsx +0 -13
  193. package/src/components/left-navigation/side-navigation-links-internal.tsx +0 -151
  194. package/src/components/left-navigation/side-navigation-links.tsx +0 -57
  195. package/src/components/left-navigation/side-navigation.module.less +0 -530
  196. package/src/components/left-navigation/side-navigation.module.less.d.ts +0 -48
  197. package/src/components/left-navigation/side-navigation.stories.tsx +0 -226
  198. package/src/components/left-navigation/side-navigation.tsx +0 -543
  199. package/src/components/left-navigation/with-tooltip.tsx +0 -16
  200. package/src/components/links.tsx +0 -54
  201. 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
- }