@servicetitan/navigation 11.0.0-canary.237.c90556e.0 → 11.0.0-canary.237.fef17f5.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 (266) hide show
  1. package/dist/components/badge-tag.d.ts +12 -0
  2. package/dist/components/badge-tag.d.ts.map +1 -0
  3. package/dist/components/badge-tag.js +8 -0
  4. package/dist/components/badge-tag.js.map +1 -0
  5. package/dist/components/counter-tag.d.ts +12 -0
  6. package/dist/components/counter-tag.d.ts.map +1 -0
  7. package/dist/components/counter-tag.js +8 -0
  8. package/dist/components/counter-tag.js.map +1 -0
  9. package/dist/components/header-navigation/header-navigation-content.d.ts +30 -0
  10. package/dist/components/header-navigation/header-navigation-content.d.ts.map +1 -0
  11. package/dist/components/header-navigation/header-navigation-content.js +22 -0
  12. package/dist/components/header-navigation/header-navigation-content.js.map +1 -0
  13. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.d.ts +9 -0
  14. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.d.ts.map +1 -0
  15. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.js +13 -0
  16. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.js.map +1 -0
  17. package/dist/components/header-navigation/header-navigation-extra.stories.d.ts +12 -0
  18. package/dist/components/header-navigation/header-navigation-extra.stories.d.ts.map +1 -0
  19. package/dist/components/header-navigation/header-navigation-extra.stories.js +29 -0
  20. package/dist/components/header-navigation/header-navigation-extra.stories.js.map +1 -0
  21. package/dist/components/header-navigation/header-navigation-links.d.ts +11 -0
  22. package/dist/components/header-navigation/header-navigation-links.d.ts.map +1 -0
  23. package/dist/components/header-navigation/header-navigation-links.js +26 -0
  24. package/dist/components/header-navigation/header-navigation-links.js.map +1 -0
  25. package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts +12 -0
  26. package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts.map +1 -0
  27. package/dist/components/header-navigation/header-navigation-stacked.stories.js +50 -0
  28. package/dist/components/header-navigation/header-navigation-stacked.stories.js.map +1 -0
  29. package/dist/components/header-navigation/header-navigation-stories.module.less +6 -0
  30. package/dist/components/header-navigation/header-navigation.d.ts +59 -0
  31. package/dist/components/header-navigation/header-navigation.d.ts.map +1 -0
  32. package/dist/components/header-navigation/header-navigation.js +96 -0
  33. package/dist/components/header-navigation/header-navigation.js.map +1 -0
  34. package/dist/components/header-navigation/header-navigation.module.less +260 -0
  35. package/dist/components/header-navigation/header-navigation.stories.d.ts +12 -0
  36. package/dist/components/header-navigation/header-navigation.stories.d.ts.map +1 -0
  37. package/dist/components/header-navigation/header-navigation.stories.js +54 -0
  38. package/dist/components/header-navigation/header-navigation.stories.js.map +1 -0
  39. package/dist/components/header-navigation/index.d.ts +2 -0
  40. package/dist/components/header-navigation/index.d.ts.map +1 -0
  41. package/dist/components/header-navigation/index.js +2 -0
  42. package/dist/components/header-navigation/index.js.map +1 -0
  43. package/dist/components/header-navigation/with-tooltip.d.ts +4 -0
  44. package/dist/components/header-navigation/with-tooltip.d.ts.map +1 -0
  45. package/dist/components/header-navigation/with-tooltip.js +4 -0
  46. package/dist/components/header-navigation/with-tooltip.js.map +1 -0
  47. package/dist/components/layout.stories.d.ts +13 -0
  48. package/dist/components/layout.stories.d.ts.map +1 -0
  49. package/dist/components/layout.stories.js +29 -0
  50. package/dist/components/layout.stories.js.map +1 -0
  51. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.d.ts +9 -0
  52. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.d.ts.map +1 -0
  53. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.js +13 -0
  54. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.js.map +1 -0
  55. package/dist/components/left-navigation/header-navigation-tiny-links.d.ts +18 -0
  56. package/dist/components/left-navigation/header-navigation-tiny-links.d.ts.map +1 -0
  57. package/dist/components/left-navigation/header-navigation-tiny-links.js +32 -0
  58. package/dist/components/left-navigation/header-navigation-tiny-links.js.map +1 -0
  59. package/dist/components/left-navigation/header-navigation-tiny.d.ts +23 -0
  60. package/dist/components/left-navigation/header-navigation-tiny.d.ts.map +1 -0
  61. package/dist/components/left-navigation/header-navigation-tiny.js +7 -0
  62. package/dist/components/left-navigation/header-navigation-tiny.js.map +1 -0
  63. package/dist/components/left-navigation/header-navigation-tiny.module.less +117 -0
  64. package/dist/components/left-navigation/header-navigation-tiny.stories.d.ts +12 -0
  65. package/dist/components/left-navigation/header-navigation-tiny.stories.d.ts.map +1 -0
  66. package/dist/components/left-navigation/header-navigation-tiny.stories.js +30 -0
  67. package/dist/components/left-navigation/header-navigation-tiny.stories.js.map +1 -0
  68. package/dist/components/left-navigation/index.d.ts +5 -0
  69. package/dist/components/left-navigation/index.d.ts.map +1 -0
  70. package/dist/components/left-navigation/index.js +5 -0
  71. package/dist/components/left-navigation/index.js.map +1 -0
  72. package/dist/components/left-navigation/interface-internal.d.ts +10 -0
  73. package/dist/components/left-navigation/interface-internal.d.ts.map +1 -0
  74. package/dist/components/left-navigation/interface-internal.js +2 -0
  75. package/dist/components/left-navigation/interface-internal.js.map +1 -0
  76. package/dist/components/left-navigation/interface.d.ts +20 -0
  77. package/dist/components/left-navigation/interface.d.ts.map +1 -0
  78. package/dist/components/left-navigation/interface.js +2 -0
  79. package/dist/components/left-navigation/interface.js.map +1 -0
  80. package/dist/components/left-navigation/side-navigation-context.d.ts +8 -0
  81. package/dist/components/left-navigation/side-navigation-context.d.ts.map +1 -0
  82. package/dist/components/left-navigation/side-navigation-context.js +7 -0
  83. package/dist/components/left-navigation/side-navigation-context.js.map +1 -0
  84. package/dist/components/left-navigation/side-navigation-links-internal.d.ts +28 -0
  85. package/dist/components/left-navigation/side-navigation-links-internal.d.ts.map +1 -0
  86. package/dist/components/left-navigation/side-navigation-links-internal.js +29 -0
  87. package/dist/components/left-navigation/side-navigation-links-internal.js.map +1 -0
  88. package/dist/components/left-navigation/side-navigation-links.d.ts +6 -0
  89. package/dist/components/left-navigation/side-navigation-links.d.ts.map +1 -0
  90. package/dist/components/left-navigation/side-navigation-links.js +27 -0
  91. package/dist/components/left-navigation/side-navigation-links.js.map +1 -0
  92. package/dist/components/left-navigation/side-navigation.d.ts +29 -0
  93. package/dist/components/left-navigation/side-navigation.d.ts.map +1 -0
  94. package/dist/components/left-navigation/side-navigation.js +182 -0
  95. package/dist/components/left-navigation/side-navigation.js.map +1 -0
  96. package/dist/components/left-navigation/side-navigation.module.less +530 -0
  97. package/dist/components/left-navigation/side-navigation.stories.d.ts +17 -0
  98. package/dist/components/left-navigation/side-navigation.stories.d.ts.map +1 -0
  99. package/dist/components/left-navigation/side-navigation.stories.js +115 -0
  100. package/dist/components/left-navigation/side-navigation.stories.js.map +1 -0
  101. package/dist/components/left-navigation/with-tooltip.d.ts +4 -0
  102. package/dist/components/left-navigation/with-tooltip.d.ts.map +1 -0
  103. package/dist/components/left-navigation/with-tooltip.js +4 -0
  104. package/dist/components/left-navigation/with-tooltip.js.map +1 -0
  105. package/dist/components/links.d.ts +5 -0
  106. package/dist/components/links.d.ts.map +1 -0
  107. package/dist/components/links.js +14 -0
  108. package/dist/components/links.js.map +1 -0
  109. package/dist/components/logo/logo-company-title.d.ts +8 -0
  110. package/dist/components/logo/logo-company-title.d.ts.map +1 -0
  111. package/dist/components/logo/logo-company-title.js +6 -0
  112. package/dist/components/logo/logo-company-title.js.map +1 -0
  113. package/dist/components/logo/logo-titan-text.d.ts +29 -0
  114. package/dist/components/logo/logo-titan-text.d.ts.map +1 -0
  115. package/dist/components/logo/logo-titan-text.js +13 -0
  116. package/dist/components/logo/logo-titan-text.js.map +1 -0
  117. package/dist/components/logo/logo-titan-text.module.less +31 -0
  118. package/dist/components/logo/logo-titan.d.ts +9 -0
  119. package/dist/components/logo/logo-titan.d.ts.map +1 -0
  120. package/dist/components/logo/logo-titan.js +13 -0
  121. package/dist/components/logo/logo-titan.js.map +1 -0
  122. package/dist/components/logo/logo.stories.d.ts +14 -0
  123. package/dist/components/logo/logo.stories.d.ts.map +1 -0
  124. package/dist/components/logo/logo.stories.js +20 -0
  125. package/dist/components/logo/logo.stories.js.map +1 -0
  126. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.d.ts +9 -0
  127. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.d.ts.map +1 -0
  128. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js +13 -0
  129. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js.map +1 -0
  130. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.d.ts +9 -0
  131. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.d.ts.map +1 -0
  132. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.js +13 -0
  133. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.js.map +1 -0
  134. package/dist/components/profile-dropdown/profile-dropdown.d.ts +77 -0
  135. package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -0
  136. package/dist/components/profile-dropdown/profile-dropdown.js +85 -0
  137. package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -0
  138. package/dist/components/profile-dropdown/profile-dropdown.module.less +171 -0
  139. package/dist/components/profile-dropdown/profile-dropdown.stories.d.ts +16 -0
  140. package/dist/components/profile-dropdown/profile-dropdown.stories.d.ts.map +1 -0
  141. package/dist/components/profile-dropdown/profile-dropdown.stories.js +51 -0
  142. package/dist/components/profile-dropdown/profile-dropdown.stories.js.map +1 -0
  143. package/dist/components/profile-dropdown/profile-icon.d.ts +3 -0
  144. package/dist/components/profile-dropdown/profile-icon.d.ts.map +1 -0
  145. package/dist/components/profile-dropdown/profile-icon.js +5 -0
  146. package/dist/components/profile-dropdown/profile-icon.js.map +1 -0
  147. package/dist/components/titan-layout/index.d.ts +6 -0
  148. package/dist/components/titan-layout/index.d.ts.map +1 -0
  149. package/dist/components/titan-layout/index.js +6 -0
  150. package/dist/components/titan-layout/index.js.map +1 -0
  151. package/dist/components/titan-layout/interface-internal.d.ts +6 -0
  152. package/dist/components/titan-layout/interface-internal.d.ts.map +1 -0
  153. package/dist/components/titan-layout/interface-internal.js +2 -0
  154. package/dist/components/titan-layout/interface-internal.js.map +1 -0
  155. package/dist/components/titan-layout/interface.d.ts +21 -0
  156. package/dist/components/titan-layout/interface.d.ts.map +1 -0
  157. package/dist/components/titan-layout/interface.js +2 -0
  158. package/dist/components/titan-layout/interface.js.map +1 -0
  159. package/dist/components/titan-layout/layout-context.d.ts +20 -0
  160. package/dist/components/titan-layout/layout-context.d.ts.map +1 -0
  161. package/dist/components/titan-layout/layout-context.js +12 -0
  162. package/dist/components/titan-layout/layout-context.js.map +1 -0
  163. package/dist/components/titan-layout/layout-header-links.d.ts +7 -0
  164. package/dist/components/titan-layout/layout-header-links.d.ts.map +1 -0
  165. package/dist/components/titan-layout/layout-header-links.js +32 -0
  166. package/dist/components/titan-layout/layout-header-links.js.map +1 -0
  167. package/dist/components/titan-layout/layout-header.d.ts +20 -0
  168. package/dist/components/titan-layout/layout-header.d.ts.map +1 -0
  169. package/dist/components/titan-layout/layout-header.js +11 -0
  170. package/dist/components/titan-layout/layout-header.js.map +1 -0
  171. package/dist/components/titan-layout/layout-header.module.less +170 -0
  172. package/dist/components/titan-layout/layout-logo.d.ts +12 -0
  173. package/dist/components/titan-layout/layout-logo.d.ts.map +1 -0
  174. package/dist/components/titan-layout/layout-logo.js +15 -0
  175. package/dist/components/titan-layout/layout-logo.js.map +1 -0
  176. package/dist/components/titan-layout/layout-logo.stories.d.ts +13 -0
  177. package/dist/components/titan-layout/layout-logo.stories.d.ts.map +1 -0
  178. package/dist/components/titan-layout/layout-logo.stories.js +17 -0
  179. package/dist/components/titan-layout/layout-logo.stories.js.map +1 -0
  180. package/dist/components/titan-layout/layout-profile.d.ts +9 -0
  181. package/dist/components/titan-layout/layout-profile.d.ts.map +1 -0
  182. package/dist/components/titan-layout/layout-profile.js +44 -0
  183. package/dist/components/titan-layout/layout-profile.js.map +1 -0
  184. package/dist/components/titan-layout/layout-profile.stories.d.ts +13 -0
  185. package/dist/components/titan-layout/layout-profile.stories.d.ts.map +1 -0
  186. package/dist/components/titan-layout/layout-profile.stories.js +13 -0
  187. package/dist/components/titan-layout/layout-profile.stories.js.map +1 -0
  188. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts +46 -0
  189. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts.map +1 -0
  190. package/dist/components/titan-layout/layout-sidebar-links-internal.js +61 -0
  191. package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -0
  192. package/dist/components/titan-layout/layout-sidebar-links.d.ts +6 -0
  193. package/dist/components/titan-layout/layout-sidebar-links.d.ts.map +1 -0
  194. package/dist/components/titan-layout/layout-sidebar-links.js +21 -0
  195. package/dist/components/titan-layout/layout-sidebar-links.js.map +1 -0
  196. package/dist/components/titan-layout/layout-sidebar.d.ts +17 -0
  197. package/dist/components/titan-layout/layout-sidebar.d.ts.map +1 -0
  198. package/dist/components/titan-layout/layout-sidebar.js +65 -0
  199. package/dist/components/titan-layout/layout-sidebar.js.map +1 -0
  200. package/dist/components/titan-layout/layout-sidebar.module.less +516 -0
  201. package/dist/components/titan-layout/titan-layout.d.ts +37 -0
  202. package/dist/components/titan-layout/titan-layout.d.ts.map +1 -0
  203. package/dist/components/titan-layout/titan-layout.js +137 -0
  204. package/dist/components/titan-layout/titan-layout.js.map +1 -0
  205. package/dist/components/titan-layout/titan-layout.module.less +84 -0
  206. package/dist/components/titan-layout/titan-layout.stories.d.ts +18 -0
  207. package/dist/components/titan-layout/titan-layout.stories.d.ts.map +1 -0
  208. package/dist/components/titan-layout/titan-layout.stories.js +75 -0
  209. package/dist/components/titan-layout/titan-layout.stories.js.map +1 -0
  210. package/dist/components/titan-layout/with-tooltip.d.ts +4 -0
  211. package/dist/components/titan-layout/with-tooltip.d.ts.map +1 -0
  212. package/dist/components/titan-layout/with-tooltip.js +4 -0
  213. package/dist/components/titan-layout/with-tooltip.js.map +1 -0
  214. package/dist/index.d.ts +13 -0
  215. package/dist/index.d.ts.map +1 -0
  216. package/dist/index.js +13 -0
  217. package/dist/index.js.map +1 -0
  218. package/dist/test/data-stories.module.less +8 -0
  219. package/dist/test/data.d.ts +32 -0
  220. package/dist/test/data.d.ts.map +1 -0
  221. package/dist/test/data.js +244 -0
  222. package/dist/test/data.js.map +1 -0
  223. package/dist/utils/counter-tag.d.ts +5 -0
  224. package/dist/utils/counter-tag.d.ts.map +1 -0
  225. package/dist/utils/counter-tag.js +2 -0
  226. package/dist/utils/counter-tag.js.map +1 -0
  227. package/dist/utils/navigation-context.d.ts +27 -0
  228. package/dist/utils/navigation-context.d.ts.map +1 -0
  229. package/dist/utils/navigation-context.js +10 -0
  230. package/dist/utils/navigation-context.js.map +1 -0
  231. package/dist/utils/navigation-legacy.d.ts +88 -0
  232. package/dist/utils/navigation-legacy.d.ts.map +1 -0
  233. package/dist/utils/navigation-legacy.js +2 -0
  234. package/dist/utils/navigation-legacy.js.map +1 -0
  235. package/dist/utils/navigation.d.ts +48 -0
  236. package/dist/utils/navigation.d.ts.map +1 -0
  237. package/dist/utils/navigation.js +2 -0
  238. package/dist/utils/navigation.js.map +1 -0
  239. package/dist/utils/side-nav.d.ts +6 -0
  240. package/dist/utils/side-nav.d.ts.map +1 -0
  241. package/dist/utils/side-nav.js +28 -0
  242. package/dist/utils/side-nav.js.map +1 -0
  243. package/dist/utils/use-breakpoint.d.ts +7 -0
  244. package/dist/utils/use-breakpoint.d.ts.map +1 -0
  245. package/dist/utils/use-breakpoint.js +13 -0
  246. package/dist/utils/use-breakpoint.js.map +1 -0
  247. package/package.json +3 -4
  248. package/src/components/header-navigation/header-navigation-stories.module.less.d.ts +3 -0
  249. package/src/components/header-navigation/header-navigation.module.less.d.ts +22 -0
  250. package/src/components/left-navigation/header-navigation-tiny.module.less.d.ts +15 -0
  251. package/src/components/left-navigation/side-navigation-links.tsx +1 -1
  252. package/src/components/left-navigation/side-navigation.module.less.d.ts +48 -0
  253. package/src/components/logo/logo-titan-text.module.less.d.ts +6 -0
  254. package/src/components/profile-dropdown/profile-dropdown.module.less.d.ts +21 -0
  255. package/src/components/titan-layout/layout-header.module.less +30 -13
  256. package/src/components/titan-layout/layout-header.module.less.d.ts +16 -0
  257. package/src/components/titan-layout/layout-header.tsx +5 -1
  258. package/src/components/titan-layout/layout-sidebar-links.tsx +6 -3
  259. package/src/components/titan-layout/layout-sidebar.module.less +4 -16
  260. package/src/components/titan-layout/layout-sidebar.module.less.d.ts +48 -0
  261. package/src/components/titan-layout/layout-sidebar.tsx +1 -4
  262. package/src/components/titan-layout/titan-layout.module.less +45 -14
  263. package/src/components/titan-layout/titan-layout.module.less.d.ts +15 -0
  264. package/src/components/titan-layout/titan-layout.stories.tsx +55 -15
  265. package/src/components/titan-layout/titan-layout.tsx +78 -17
  266. package/src/test/data-stories.module.less.d.ts +3 -0
@@ -31,7 +31,6 @@ export interface LayoutSidebarProps {
31
31
  top?: ReactElement[];
32
32
  bottom?: ReactElement;
33
33
  mainItems?: NavigationItemData[];
34
- flex: boolean;
35
34
  barExpanded: boolean;
36
35
  submenuExpanded: string | undefined;
37
36
  mobile: boolean;
@@ -42,7 +41,6 @@ export interface LayoutSidebarProps {
42
41
 
43
42
  export const LayoutSidebar: FC<LayoutSidebarProps> = ({
44
43
  className,
45
- flex,
46
44
  mobile,
47
45
  barExpanded,
48
46
  submenuExpanded,
@@ -65,7 +63,6 @@ export const LayoutSidebar: FC<LayoutSidebarProps> = ({
65
63
  mobile && Styles.navDrawer,
66
64
  mobile && barExpanded && Styles.navDrawerOpened,
67
65
  !mobile && (barExpanded ? Styles.navWide : Styles.navSlim),
68
- !mobile && (flex ? Styles.navFlex : Styles.navFixed),
69
66
  className
70
67
  )}
71
68
  data-cy="side-navigation"
@@ -82,7 +79,7 @@ export const LayoutSidebar: FC<LayoutSidebarProps> = ({
82
79
  </div>
83
80
  </div>
84
81
  )}
85
- {top?.length && <SidebarTop>{top}</SidebarTop>}
82
+ {!!top?.length && <SidebarTop>{top}</SidebarTop>}
86
83
 
87
84
  <div data-cy="navigation-items">
88
85
  {mainItems?.map(item =>
@@ -8,30 +8,53 @@
8
8
  @bg-color-hover: rgba(255, 255, 255, 0.08);
9
9
  @bg-color-active: rgba(120, 187, 250, 0.2);
10
10
 
11
- .layout-legacy {
12
- padding-left: var(--nav-offset-left);
13
- }
14
-
15
11
  .layout-anvil1 {
16
- display: block;
12
+ height: calc(100vh - var(--nav-offset-top));
13
+ margin-top: var(--nav-offset-top);
14
+
15
+ display: flex;
16
+ flex-direction: row;
17
+
18
+ .side {
19
+ flex-basis: var(--nav-offset-left);
20
+ flex-grow: 0;
21
+ flex-shrink: 0;
22
+ }
23
+
24
+ .content {
25
+ flex-grow: 1;
26
+
27
+ display: flex;
28
+ flex-direction: column;
29
+ overflow: hidden;
30
+ }
17
31
  }
18
32
 
19
33
  .layout-anvil2 {
20
- display: block;
34
+ .header {
35
+ position: sticky;
36
+ top: var(--nav-offset-top);
37
+ z-index: 989;
38
+ }
21
39
  }
22
40
 
23
41
  .layout-legacy,
24
42
  .layout-anvil2 {
43
+ padding-left: var(--nav-offset-left);
44
+
25
45
  .top-placeholder {
26
46
  height: var(--nav-offset-top);
27
47
  }
28
48
 
29
- .top {
30
- position: fixed;
31
- top: 0;
32
- left: 0;
33
- right: 0;
34
- z-index: 991;
49
+ &.layout-desktop {
50
+ .side {
51
+ position: fixed;
52
+ top: var(--nav-offset-top);
53
+ bottom: 0;
54
+ left: 0;
55
+ right: 0;
56
+ z-index: @z-index-global-nav;
57
+ }
35
58
  }
36
59
  }
37
60
 
@@ -43,11 +66,19 @@
43
66
  --nav-offset-left: 0;
44
67
  }
45
68
 
46
- &.layout-nav-slim {
69
+ &.layout-desktop.layout-nav-slim {
47
70
  --nav-offset-left: 64px;
48
71
  }
49
72
 
50
- &.layout-nav-wide {
73
+ &.layout-desktop.layout-nav-wide {
51
74
  --nav-offset-left: 212px;
52
75
  }
76
+
77
+ .top {
78
+ position: fixed;
79
+ top: 0;
80
+ left: 0;
81
+ right: 0;
82
+ z-index: 991;
83
+ }
53
84
  }
@@ -0,0 +1,15 @@
1
+ export const __esModule: true;
2
+ export const content: string;
3
+ export const header: string;
4
+ export const layout: string;
5
+ export const layoutAnvil1: string;
6
+ export const layoutAnvil2: string;
7
+ export const layoutDesktop: string;
8
+ export const layoutLegacy: string;
9
+ export const layoutMobile: string;
10
+ export const layoutNavSlim: string;
11
+ export const layoutNavWide: string;
12
+ export const side: string;
13
+ export const top: string;
14
+ export const topPlaceholder: string;
15
+
@@ -1,4 +1,4 @@
1
- import { Page as Anvil2Page, Popover } from '@servicetitan/anvil2';
1
+ import { Announcement, Page as Anvil2Page, Button, Popover, TextField } from '@servicetitan/anvil2';
2
2
  import SvgSearch from '@servicetitan/anvil2/assets/icons/material/round/search.svg';
3
3
  import SvgAtlas from '@servicetitan/anvil2/assets/icons/st/atlas_logo.svg';
4
4
  import SvgSettingsActive from '@servicetitan/anvil2/assets/icons/st/gnav_settings_active.svg';
@@ -20,11 +20,24 @@ import { SideNavigationLinkWrapperProps } from '../left-navigation';
20
20
  import { HeaderNavigationLink, HeaderNavigationTrigger } from '../links';
21
21
  import { ProfileDropdown, TitanLayout, TitanLayoutProps, TitanLayoutState } from './';
22
22
 
23
+ interface LayoutContentArgs {
24
+ header: boolean;
25
+ sideTop: boolean;
26
+ extraText: boolean;
27
+ search: boolean;
28
+ }
29
+
23
30
  export default {
24
31
  title: 'Navigation/TitanLayout',
25
- component: TitanLayout,
26
32
  decorators: [withDefaultRedirects, withMemoryRouter, withAnvil],
27
33
  parameters: {},
34
+ argTypes: {},
35
+ args: {
36
+ header: true,
37
+ sideTop: true,
38
+ extraText: true,
39
+ search: true,
40
+ } as LayoutContentArgs,
28
41
  };
29
42
 
30
43
  const mainNavItems = [
@@ -131,9 +144,9 @@ const SideLinkPopoverWrapper: FC<SideNavigationLinkWrapperProps> = ({ children,
131
144
  };
132
145
 
133
146
  const sidebarTop = () => [
134
- <TitanLayout.SidebarLink key="tasks" {...items.tasks} />,
135
- <TitanLayout.SidebarLink key="calls" {...items.calls} />,
136
- <TitanLayout.SidebarTrigger
147
+ <TitanLayout.Link key="tasks" {...items.tasks} />,
148
+ <TitanLayout.Link key="calls" {...items.calls} />,
149
+ <TitanLayout.Trigger
137
150
  key="marketing"
138
151
  {...items.marketing}
139
152
  isActive={false}
@@ -142,26 +155,53 @@ const sidebarTop = () => [
142
155
  counter={50}
143
156
  />,
144
157
  ];
145
- const useLayoutProps = (): TitanLayoutProps => {
158
+ const ContentHeader = () => {
159
+ const [longInfo, setLongInfo] = useState(false);
160
+
161
+ return (
162
+ <Fragment>
163
+ <Announcement title="Some info" status="info" />
164
+ <Announcement title="Some warning" status="warning" />
165
+ <div
166
+ className="d-f justify-content-center align-items-center bg-purple-100-i"
167
+ style={{ height: longInfo ? '120px' : '48px' }}
168
+ >
169
+ <div className="d-f align-items-center gap-1">
170
+ custom content{' '}
171
+ <Button onClick={() => setLongInfo(!longInfo)} size="small" aria-label="test">
172
+ {longInfo ? '↑' : '↓'}
173
+ </Button>
174
+ </div>
175
+ </div>
176
+ </Fragment>
177
+ );
178
+ };
179
+ const SearchBar = () => <TextField size="small" placeholder="Search" className="w-100-i" />;
180
+
181
+ const useLayoutProps = (args: LayoutContentArgs): TitanLayoutProps => {
146
182
  const [state, setState] = useState<TitanLayoutState | undefined>(undefined);
147
183
 
148
184
  return {
149
185
  state,
150
186
  onStateChange: setState,
151
187
 
188
+ navigationComponent: NavLinkMock,
152
189
  navigationMainItems: mainNavItems,
190
+
153
191
  profile,
192
+ top: args.search ? <SearchBar /> : undefined,
193
+ header: args.header ? <ContentHeader /> : undefined,
194
+
154
195
  extraLinks,
155
196
  extraLinksTop,
197
+ extraText: args.extraText ? 'EST (-8 hrs)' : undefined,
156
198
 
157
- sidebarTop: sidebarTop(),
158
- navigationComponent: NavLinkMock,
159
- extraText: 'EST (-8 hrs)',
199
+ sideTop: args.sideTop ? sidebarTop() : undefined,
160
200
  };
161
201
  };
162
202
 
163
- export const TitanLayoutLegacy = () => (
164
- <TitanLayout {...useLayoutProps()} appearance="legacy">
203
+ export const TitanLayoutLegacy = (args: LayoutContentArgs) => (
204
+ <TitanLayout {...useLayoutProps(args)} appearance="legacy">
165
205
  <TitanLayout.Logo title />
166
206
  <TitanLayout.Content>
167
207
  <LocationInfo />
@@ -169,8 +209,8 @@ export const TitanLayoutLegacy = () => (
169
209
  </TitanLayout>
170
210
  );
171
211
 
172
- export const TitanLayoutAnvil1 = () => (
173
- <TitanLayout {...useLayoutProps()} appearance="anvil1">
212
+ export const TitanLayoutAnvil1 = (args: LayoutContentArgs) => (
213
+ <TitanLayout {...useLayoutProps(args)} appearance="anvil1">
174
214
  <TitanLayout.Logo title />
175
215
  <TitanLayout.Content>
176
216
  <Anvil1Page>
@@ -180,8 +220,8 @@ export const TitanLayoutAnvil1 = () => (
180
220
  </TitanLayout>
181
221
  );
182
222
 
183
- export const TitanLayoutAnvil2 = () => (
184
- <TitanLayout {...useLayoutProps()} appearance="anvil2">
223
+ export const TitanLayoutAnvil2 = (args: LayoutContentArgs) => (
224
+ <TitanLayout {...useLayoutProps(args)} appearance="anvil2">
185
225
  <TitanLayout.Logo title />
186
226
  <TitanLayout.Content>
187
227
  <Anvil2Page>
@@ -11,6 +11,7 @@ import {
11
11
  useCallback,
12
12
  useEffect,
13
13
  useMemo,
14
+ useRef,
14
15
  useState,
15
16
  } from 'react';
16
17
  import { NavigationItemData } from '../../utils/navigation';
@@ -50,11 +51,12 @@ export type TitanLayoutProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'
50
51
  onStateChange?: (state: TitanLayoutState) => void;
51
52
 
52
53
  header?: ReactElement;
54
+ top?: ReactElement;
55
+ sideTop?: ReactElement[];
53
56
  profile?: ReactElement;
54
57
  extraLinks?: ReactElement;
55
58
  extraLinksTop?: ReactElement;
56
59
  extraText?: string;
57
- sidebarTop?: ReactElement[];
58
60
  };
59
61
 
60
62
  const defaultSidebarContext: TitanLayoutSidebarContextType = {
@@ -76,7 +78,7 @@ const useVariant = (appearance: TitanLayoutProps['appearance']) =>
76
78
  isLegacy,
77
79
  isAnvil1,
78
80
  isAnvil2,
79
- isSequent: isLegacy || isAnvil1,
81
+ isSequent: isLegacy || isAnvil2,
80
82
  };
81
83
  }, [appearance]);
82
84
 
@@ -115,6 +117,7 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
115
117
  children,
116
118
  navigationComponent,
117
119
  header,
120
+ top,
118
121
  profile,
119
122
  state,
120
123
  onStateChange,
@@ -122,7 +125,7 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
122
125
  extraLinks,
123
126
  extraLinksTop,
124
127
  extraText,
125
- sidebarTop,
128
+ sideTop,
126
129
  }) => {
127
130
  const breakpoint = useTitanBreakpoint();
128
131
  const isMobile = breakpoint.isMobile;
@@ -179,8 +182,6 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
179
182
  [state, onStateChange]
180
183
  );
181
184
 
182
- const [layoutStyles] = useState<object>({});
183
-
184
185
  const layoutClass = variant.isLegacy
185
186
  ? Styles.layoutLegacy
186
187
  : variant.isAnvil1
@@ -194,21 +195,19 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
194
195
  id={id}
195
196
  className={classNames(
196
197
  Styles.layout,
197
- isMobile
198
- ? Styles.layoutMobile
199
- : state?.navCollapsed
200
- ? Styles.layoutNavSlim
201
- : Styles.layoutNavWide,
198
+ isMobile ? Styles.layoutMobile : Styles.layoutDesktop,
199
+ !isMobile && state?.navCollapsed
200
+ ? Styles.layoutNavSlim
201
+ : Styles.layoutNavWide,
202
202
  layoutClass
203
203
  )}
204
- style={layoutStyles}
205
204
  >
206
205
  {variant.isSequent && <div className={Styles.topPlaceholder} />}
207
206
  <LayoutHeader
208
207
  className={Styles.top}
209
208
  logo={logo}
210
209
  profile={isMobile ? undefined : profile}
211
- center={header}
210
+ center={top}
212
211
  rightText={isMobile ? undefined : extraText}
213
212
  right={
214
213
  <Fragment>
@@ -220,13 +219,13 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
220
219
  />
221
220
 
222
221
  <LayoutSidebar
223
- flex={!variant.isSequent}
222
+ className={Styles.side}
224
223
  mobile={breakpoint.isMobile}
225
224
  barExpanded={isMobile ? mobileDrawerOpened : !state?.navCollapsed}
226
225
  submenuExpanded={state?.submenuExpanded}
227
226
  onBarExpandChange={onBarExpandChange}
228
227
  onSubmenuExpandChange={onSubmenuExpandChange}
229
- top={sidebarTop}
228
+ top={sideTop}
230
229
  mainItems={navigationMainItems}
231
230
  navigationComponent={context.NavigationComponent}
232
231
  bottom={
@@ -250,21 +249,83 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
250
249
  }
251
250
  />
252
251
 
253
- {content}
252
+ <LayoutContent header={header} anvil2={variant.isAnvil2}>
253
+ {content}
254
+ </LayoutContent>
254
255
  </div>
255
256
  </LayoutPlacementContext.Provider>
256
257
  </LayoutContext.Provider>
257
258
  );
258
259
  };
259
260
 
261
+ const TitanLayoutHeaderObserved: FC<{
262
+ children: ReactNode;
263
+ heightChange?(value: number): void;
264
+ }> = ({ children, heightChange }) => {
265
+ const ref = useRef<HTMLDivElement>(null);
266
+
267
+ useEffect(() => {
268
+ if (ref.current) {
269
+ const updatePosition = () => {
270
+ if (ref.current && heightChange) {
271
+ const pos = ref.current.getBoundingClientRect();
272
+ heightChange(pos.height);
273
+ }
274
+ };
275
+
276
+ const observer = new ResizeObserver(updatePosition);
277
+ observer.observe(ref.current);
278
+
279
+ updatePosition();
280
+ return () => observer.disconnect();
281
+ }
282
+ }, [heightChange]);
283
+
284
+ useEffect(() => {
285
+ return () => {
286
+ heightChange?.(0);
287
+ };
288
+ }, [heightChange]);
289
+ return (
290
+ <div ref={ref} className={Styles.header}>
291
+ {children}
292
+ </div>
293
+ );
294
+ };
295
+
260
296
  export interface TitanLayoutContentProps {
261
297
  children: ReactNode;
262
298
  }
263
299
  const TitanLayoutContent: FC<TitanLayoutContentProps> = ({ children }) => children;
264
300
 
301
+ const LayoutContent: FC<{ children: ReactNode; header?: ReactNode; anvil2: boolean }> = ({
302
+ anvil2,
303
+ children,
304
+ header,
305
+ }) => {
306
+ const [anvil2Styles, setAnvil2Styles] = useState<object>({});
307
+ const updateIndicatorsHeight = useCallback((offset: number) => {
308
+ setAnvil2Styles({ '--offset': `calc(var(--nav-offset-top) + ${offset}px)` });
309
+ }, []);
310
+
311
+ return (
312
+ <div className={Styles.content} style={anvil2Styles}>
313
+ {!!header &&
314
+ (anvil2 ? (
315
+ <TitanLayoutHeaderObserved heightChange={updateIndicatorsHeight}>
316
+ {header}
317
+ </TitanLayoutHeaderObserved>
318
+ ) : (
319
+ header
320
+ ))}
321
+ {children}
322
+ </div>
323
+ );
324
+ };
325
+
265
326
  export const TitanLayout = Object.assign(TitanLayoutComponent, {
266
327
  Content: TitanLayoutContent,
267
328
  Logo: TitanLayoutLogo,
268
- SidebarLink: TitanLayoutSidebarLink,
269
- SidebarTrigger: TitanLayoutSidebarTrigger,
329
+ Link: TitanLayoutSidebarLink,
330
+ Trigger: TitanLayoutSidebarTrigger,
270
331
  });
@@ -0,0 +1,3 @@
1
+ export const __esModule: true;
2
+ export const fixIcons: string;
3
+