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