@servicetitan/navigation 11.0.0-canary.237.4cefc6a.0 → 11.0.0-canary.237.64cfcfe.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 +160 -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 +17 -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 +72 -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 +20 -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 +51 -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 } 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,22 @@ 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
+ }
28
+
23
29
  export default {
24
30
  title: 'Navigation/TitanLayout',
25
- component: TitanLayout,
26
31
  decorators: [withDefaultRedirects, withMemoryRouter, withAnvil],
27
32
  parameters: {},
33
+ argTypes: {},
34
+ args: {
35
+ header: true,
36
+ sideTop: true,
37
+ extraText: true,
38
+ } as LayoutContentArgs,
28
39
  };
29
40
 
30
41
  const mainNavItems = [
@@ -131,9 +142,9 @@ const SideLinkPopoverWrapper: FC<SideNavigationLinkWrapperProps> = ({ children,
131
142
  };
132
143
 
133
144
  const sidebarTop = () => [
134
- <TitanLayout.SidebarLink key="tasks" {...items.tasks} />,
135
- <TitanLayout.SidebarLink key="calls" {...items.calls} />,
136
- <TitanLayout.SidebarTrigger
145
+ <TitanLayout.Link key="tasks" {...items.tasks} />,
146
+ <TitanLayout.Link key="calls" {...items.calls} />,
147
+ <TitanLayout.Trigger
137
148
  key="marketing"
138
149
  {...items.marketing}
139
150
  isActive={false}
@@ -142,26 +153,51 @@ const sidebarTop = () => [
142
153
  counter={50}
143
154
  />,
144
155
  ];
145
- const useLayoutProps = (): TitanLayoutProps => {
156
+ const ContentHeader = () => {
157
+ const [longInfo, setLongInfo] = useState(false);
158
+
159
+ return (
160
+ <Fragment>
161
+ <Announcement title="Some info" status="info" />
162
+ <Announcement title="Some warning" status="warning" />
163
+ <div
164
+ className="d-f justify-content-center align-items-center bg-purple-100-i"
165
+ style={{ height: longInfo ? '120px' : '48px' }}
166
+ >
167
+ <div className="d-f align-items-center gap-1">
168
+ custom content{' '}
169
+ <Button onClick={() => setLongInfo(!longInfo)} size="small" aria-label="test">
170
+ {longInfo ? '↑' : '↓'}
171
+ </Button>
172
+ </div>
173
+ </div>
174
+ </Fragment>
175
+ );
176
+ };
177
+ const useLayoutProps = (args: LayoutContentArgs): TitanLayoutProps => {
146
178
  const [state, setState] = useState<TitanLayoutState | undefined>(undefined);
147
179
 
148
180
  return {
149
181
  state,
150
182
  onStateChange: setState,
151
183
 
184
+ navigationComponent: NavLinkMock,
152
185
  navigationMainItems: mainNavItems,
186
+
153
187
  profile,
188
+
189
+ header: args.header ? <ContentHeader /> : undefined,
190
+
154
191
  extraLinks,
155
192
  extraLinksTop,
193
+ extraText: args.extraText ? 'EST (-8 hrs)' : undefined,
156
194
 
157
- sidebarTop: sidebarTop(),
158
- navigationComponent: NavLinkMock,
159
- extraText: 'EST (-8 hrs)',
195
+ sideTop: args.sideTop ? sidebarTop() : undefined,
160
196
  };
161
197
  };
162
198
 
163
- export const TitanLayoutLegacy = () => (
164
- <TitanLayout {...useLayoutProps()} appearance="legacy">
199
+ export const TitanLayoutLegacy = (args: LayoutContentArgs) => (
200
+ <TitanLayout {...useLayoutProps(args)} appearance="legacy">
165
201
  <TitanLayout.Logo title />
166
202
  <TitanLayout.Content>
167
203
  <LocationInfo />
@@ -169,8 +205,8 @@ export const TitanLayoutLegacy = () => (
169
205
  </TitanLayout>
170
206
  );
171
207
 
172
- export const TitanLayoutAnvil1 = () => (
173
- <TitanLayout {...useLayoutProps()} appearance="anvil1">
208
+ export const TitanLayoutAnvil1 = (args: LayoutContentArgs) => (
209
+ <TitanLayout {...useLayoutProps(args)} appearance="anvil1">
174
210
  <TitanLayout.Logo title />
175
211
  <TitanLayout.Content>
176
212
  <Anvil1Page>
@@ -180,8 +216,8 @@ export const TitanLayoutAnvil1 = () => (
180
216
  </TitanLayout>
181
217
  );
182
218
 
183
- export const TitanLayoutAnvil2 = () => (
184
- <TitanLayout {...useLayoutProps()} appearance="anvil2">
219
+ export const TitanLayoutAnvil2 = (args: LayoutContentArgs) => (
220
+ <TitanLayout {...useLayoutProps(args)} appearance="anvil2">
185
221
  <TitanLayout.Logo title />
186
222
  <TitanLayout.Content>
187
223
  <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
+