@servicetitan/navigation 11.0.0 → 11.1.1

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 (179) hide show
  1. package/dist/components/badge-tag.js +7 -2
  2. package/dist/components/badge-tag.js.map +1 -1
  3. package/dist/components/counter-tag.js +10 -2
  4. package/dist/components/counter-tag.js.map +1 -1
  5. package/dist/components/header-navigation/header-navigation-content.js +44 -8
  6. package/dist/components/header-navigation/header-navigation-content.js.map +1 -1
  7. package/dist/components/header-navigation/header-navigation-links.js +49 -13
  8. package/dist/components/header-navigation/header-navigation-links.js.map +1 -1
  9. package/dist/components/header-navigation/header-navigation-stories.module.less.d.ts +3 -0
  10. package/dist/components/header-navigation/header-navigation.js +178 -46
  11. package/dist/components/header-navigation/header-navigation.js.map +1 -1
  12. package/dist/components/header-navigation/header-navigation.module.less.d.ts +22 -0
  13. package/dist/components/header-navigation/index.js +1 -0
  14. package/dist/components/header-navigation/index.js.map +1 -1
  15. package/dist/components/header-navigation/with-tooltip.js +7 -1
  16. package/dist/components/header-navigation/with-tooltip.js.map +1 -1
  17. package/dist/components/left-navigation/header-navigation-tiny-links.js +62 -15
  18. package/dist/components/left-navigation/header-navigation-tiny-links.js.map +1 -1
  19. package/dist/components/left-navigation/header-navigation-tiny.js +27 -2
  20. package/dist/components/left-navigation/header-navigation-tiny.js.map +1 -1
  21. package/dist/components/left-navigation/header-navigation-tiny.module.less.d.ts +15 -0
  22. package/dist/components/left-navigation/index.d.ts +1 -1
  23. package/dist/components/left-navigation/index.d.ts.map +1 -1
  24. package/dist/components/left-navigation/index.js +1 -1
  25. package/dist/components/left-navigation/index.js.map +1 -1
  26. package/dist/components/left-navigation/interface-internal.js +2 -1
  27. package/dist/components/left-navigation/interface-internal.js.map +1 -1
  28. package/dist/components/left-navigation/interface.js +2 -1
  29. package/dist/components/left-navigation/interface.js.map +1 -1
  30. package/dist/components/left-navigation/side-navigation-context.js +4 -3
  31. package/dist/components/left-navigation/side-navigation-context.js.map +1 -1
  32. package/dist/components/left-navigation/side-navigation-links-internal.js +76 -16
  33. package/dist/components/left-navigation/side-navigation-links-internal.js.map +1 -1
  34. package/dist/components/left-navigation/side-navigation-links.js +34 -13
  35. package/dist/components/left-navigation/side-navigation-links.js.map +1 -1
  36. package/dist/components/left-navigation/side-navigation.js +314 -85
  37. package/dist/components/left-navigation/side-navigation.js.map +1 -1
  38. package/dist/components/left-navigation/side-navigation.module.less.d.ts +48 -0
  39. package/dist/components/left-navigation/with-tooltip.js +12 -1
  40. package/dist/components/left-navigation/with-tooltip.js.map +1 -1
  41. package/dist/components/links.js +28 -7
  42. package/dist/components/links.js.map +1 -1
  43. package/dist/components/logo/logo-company-title.js +19 -3
  44. package/dist/components/logo/logo-company-title.js.map +1 -1
  45. package/dist/components/logo/logo-titan-text.js +50 -6
  46. package/dist/components/logo/logo-titan-text.js.map +1 -1
  47. package/dist/components/logo/logo-titan-text.module.less.d.ts +6 -0
  48. package/dist/components/logo/logo-titan.d.ts +1 -0
  49. package/dist/components/logo/logo-titan.d.ts.map +1 -1
  50. package/dist/components/logo/logo-titan.js +53 -8
  51. package/dist/components/logo/logo-titan.js.map +1 -1
  52. package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -1
  53. package/dist/components/profile-dropdown/profile-dropdown.js +174 -33
  54. package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -1
  55. package/dist/components/profile-dropdown/profile-dropdown.module.less.d.ts +23 -0
  56. package/dist/components/profile-dropdown/profile-icon.js +49 -3
  57. package/dist/components/profile-dropdown/profile-icon.js.map +1 -1
  58. package/dist/components/titan-layout/index.d.ts +2 -2
  59. package/dist/components/titan-layout/index.d.ts.map +1 -1
  60. package/dist/components/titan-layout/index.js +1 -2
  61. package/dist/components/titan-layout/index.js.map +1 -1
  62. package/dist/components/titan-layout/interface-internal.js +2 -1
  63. package/dist/components/titan-layout/interface-internal.js.map +1 -1
  64. package/dist/components/titan-layout/interface.js +2 -1
  65. package/dist/components/titan-layout/interface.js.map +1 -1
  66. package/dist/components/titan-layout/layout-context.js +15 -6
  67. package/dist/components/titan-layout/layout-context.js.map +1 -1
  68. package/dist/components/titan-layout/layout-header-dark.d.ts +10 -0
  69. package/dist/components/titan-layout/layout-header-dark.d.ts.map +1 -0
  70. package/dist/components/titan-layout/layout-header-dark.js +146 -0
  71. package/dist/components/titan-layout/layout-header-dark.js.map +1 -0
  72. package/dist/components/titan-layout/layout-header-links.js +61 -15
  73. package/dist/components/titan-layout/layout-header-links.js.map +1 -1
  74. package/dist/components/titan-layout/layout-header.d.ts +2 -6
  75. package/dist/components/titan-layout/layout-header.d.ts.map +1 -1
  76. package/dist/components/titan-layout/layout-header.js +46 -2
  77. package/dist/components/titan-layout/layout-header.js.map +1 -1
  78. package/dist/components/titan-layout/layout-header.module.less +337 -83
  79. package/dist/components/titan-layout/layout-header.module.less.d.ts +35 -0
  80. package/dist/components/titan-layout/layout-logo.d.ts +5 -3
  81. package/dist/components/titan-layout/layout-logo.d.ts.map +1 -1
  82. package/dist/components/titan-layout/layout-logo.js +47 -9
  83. package/dist/components/titan-layout/layout-logo.js.map +1 -1
  84. package/dist/components/titan-layout/layout-logo.stories.d.ts +15 -4
  85. package/dist/components/titan-layout/layout-logo.stories.d.ts.map +1 -1
  86. package/dist/components/titan-layout/layout-profile.js +75 -23
  87. package/dist/components/titan-layout/layout-profile.js.map +1 -1
  88. package/dist/components/titan-layout/layout-sidebar-links-internal.js +162 -36
  89. package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -1
  90. package/dist/components/titan-layout/layout-sidebar-links.js +33 -13
  91. package/dist/components/titan-layout/layout-sidebar-links.js.map +1 -1
  92. package/dist/components/titan-layout/layout-sidebar.js +198 -34
  93. package/dist/components/titan-layout/layout-sidebar.js.map +1 -1
  94. package/dist/components/titan-layout/layout-sidebar.module.less +6 -2
  95. package/dist/components/titan-layout/layout-sidebar.module.less.d.ts +49 -0
  96. package/dist/components/titan-layout/notifications-context.js +20 -10
  97. package/dist/components/titan-layout/notifications-context.js.map +1 -1
  98. package/dist/components/titan-layout/titan-layout.d.ts +7 -8
  99. package/dist/components/titan-layout/titan-layout.d.ts.map +1 -1
  100. package/dist/components/titan-layout/titan-layout.js +271 -117
  101. package/dist/components/titan-layout/titan-layout.js.map +1 -1
  102. package/dist/components/titan-layout/titan-layout.module.less +7 -2
  103. package/dist/components/titan-layout/titan-layout.module.less.d.ts +17 -0
  104. package/dist/components/titan-layout/titan-layout.stories.d.ts +6 -0
  105. package/dist/components/titan-layout/titan-layout.stories.d.ts.map +1 -1
  106. package/dist/components/titan-layout/with-tooltip.d.ts +4 -1
  107. package/dist/components/titan-layout/with-tooltip.d.ts.map +1 -1
  108. package/dist/components/titan-layout/with-tooltip.js +13 -1
  109. package/dist/components/titan-layout/with-tooltip.js.map +1 -1
  110. package/dist/index.d.ts +4 -3
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +2 -3
  113. package/dist/index.js.map +1 -1
  114. package/dist/test/data-stories.module.less.d.ts +3 -0
  115. package/dist/test/data.js +223 -90
  116. package/dist/test/data.js.map +1 -1
  117. package/dist/utils/counter-tag.js +2 -1
  118. package/dist/utils/counter-tag.js.map +1 -1
  119. package/dist/utils/navigation-context.js +12 -6
  120. package/dist/utils/navigation-context.js.map +1 -1
  121. package/dist/utils/navigation-legacy.js +2 -1
  122. package/dist/utils/navigation-legacy.js.map +1 -1
  123. package/dist/utils/navigation.js +2 -1
  124. package/dist/utils/navigation.js.map +1 -1
  125. package/dist/utils/side-nav.js +9 -6
  126. package/dist/utils/side-nav.js.map +1 -1
  127. package/dist/utils/use-breakpoint.js +11 -8
  128. package/dist/utils/use-breakpoint.js.map +1 -1
  129. package/package.json +4 -4
  130. package/src/components/left-navigation/index.ts +1 -1
  131. package/src/components/logo/logo-titan.tsx +3 -1
  132. package/src/components/profile-dropdown/profile-dropdown.tsx +8 -4
  133. package/src/components/titan-layout/index.ts +2 -2
  134. package/src/components/titan-layout/layout-header-dark.tsx +186 -0
  135. package/src/components/titan-layout/layout-header-links.tsx +1 -1
  136. package/src/components/titan-layout/layout-header.module.less +337 -83
  137. package/src/components/titan-layout/layout-header.module.less.d.ts +19 -2
  138. package/src/components/titan-layout/layout-header.tsx +13 -16
  139. package/src/components/titan-layout/layout-logo.stories.tsx +103 -15
  140. package/src/components/titan-layout/layout-logo.tsx +33 -36
  141. package/src/components/titan-layout/layout-profile.stories.tsx +1 -1
  142. package/src/components/titan-layout/layout-sidebar.module.less +6 -2
  143. package/src/components/titan-layout/layout-sidebar.tsx +1 -1
  144. package/src/components/titan-layout/titan-layout.module.less +7 -2
  145. package/src/components/titan-layout/titan-layout.module.less.d.ts +2 -1
  146. package/src/components/titan-layout/titan-layout.stories.tsx +80 -23
  147. package/src/components/titan-layout/titan-layout.tsx +96 -85
  148. package/src/components/titan-layout/with-tooltip.tsx +5 -2
  149. package/src/index.ts +4 -5
  150. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.js +0 -13
  151. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.js.map +0 -1
  152. package/dist/components/header-navigation/header-navigation-extra.stories.js +0 -29
  153. package/dist/components/header-navigation/header-navigation-extra.stories.js.map +0 -1
  154. package/dist/components/header-navigation/header-navigation-stacked.stories.js +0 -50
  155. package/dist/components/header-navigation/header-navigation-stacked.stories.js.map +0 -1
  156. package/dist/components/header-navigation/header-navigation.stories.js +0 -54
  157. package/dist/components/header-navigation/header-navigation.stories.js.map +0 -1
  158. package/dist/components/layout.stories.js +0 -29
  159. package/dist/components/layout.stories.js.map +0 -1
  160. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.js +0 -13
  161. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.js.map +0 -1
  162. package/dist/components/left-navigation/header-navigation-tiny.stories.js +0 -30
  163. package/dist/components/left-navigation/header-navigation-tiny.stories.js.map +0 -1
  164. package/dist/components/left-navigation/side-navigation.stories.js +0 -115
  165. package/dist/components/left-navigation/side-navigation.stories.js.map +0 -1
  166. package/dist/components/logo/logo.stories.js +0 -20
  167. package/dist/components/logo/logo.stories.js.map +0 -1
  168. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js +0 -13
  169. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js.map +0 -1
  170. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.js +0 -13
  171. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.js.map +0 -1
  172. package/dist/components/profile-dropdown/profile-dropdown.stories.js +0 -51
  173. package/dist/components/profile-dropdown/profile-dropdown.stories.js.map +0 -1
  174. package/dist/components/titan-layout/layout-logo.stories.js +0 -17
  175. package/dist/components/titan-layout/layout-logo.stories.js.map +0 -1
  176. package/dist/components/titan-layout/layout-profile.stories.js +0 -13
  177. package/dist/components/titan-layout/layout-profile.stories.js.map +0 -1
  178. package/dist/components/titan-layout/titan-layout.stories.js +0 -83
  179. package/dist/components/titan-layout/titan-layout.stories.js.map +0 -1
@@ -0,0 +1,146 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createElement as _createElement } from "react";
3
+ import { ButtonCompound, Icon, Menu } from '@servicetitan/anvil2';
4
+ import SvgMoreVert from '@servicetitan/anvil2/assets/icons/material/round/more_vert.svg';
5
+ import classNames from 'classnames';
6
+ import { useCallback, useEffect, useRef, useState } from 'react';
7
+ import { LayoutHeader } from './layout-header';
8
+ import { LayoutHeaderNavigationLink } from './layout-header-links';
9
+ import * as Styles from './layout-header.module.less';
10
+ import { withTooltip } from './with-tooltip';
11
+ function useForceUpdate() {
12
+ const [, setTick] = useState(0);
13
+ return useCallback(()=>{
14
+ setTick((tick)=>tick + 1);
15
+ }, []);
16
+ }
17
+ var MinimizedState = /*#__PURE__*/ function(MinimizedState) {
18
+ MinimizedState[MinimizedState["Calculating"] = 0] = "Calculating";
19
+ MinimizedState[MinimizedState["Minimized"] = 1] = "Minimized";
20
+ MinimizedState[MinimizedState["Full"] = 2] = "Full";
21
+ return MinimizedState;
22
+ }(MinimizedState || {});
23
+ export const LayoutHeaderDark = ({ className, isMobile, navigationMainItems, navigationOverflowItems, hasNotifications, onBurgerClick, logo, profile, right, rightText, rightClassName, center, centerClassName, ...rest })=>{
24
+ return center ? /*#__PURE__*/ _jsxs("div", {
25
+ className: classNames(Styles.headerStacked, className),
26
+ "data-cy": "header-navigation",
27
+ ...rest,
28
+ children: [
29
+ /*#__PURE__*/ _jsx(LayoutHeader, {
30
+ variant: "dark",
31
+ right: right,
32
+ rightText: rightText,
33
+ rightClassName: rightClassName,
34
+ center: center,
35
+ centerClassName: centerClassName,
36
+ isMobile: isMobile,
37
+ hasNotifications: hasNotifications,
38
+ logo: logo,
39
+ profile: profile,
40
+ onBurgerClick: onBurgerClick,
41
+ "data-cy": "header-navigation-top"
42
+ }),
43
+ !isMobile && /*#__PURE__*/ _jsx(LayoutHeaderNav, {
44
+ className: Styles.headerStackedNav,
45
+ mainItems: navigationMainItems,
46
+ overflowItems: navigationOverflowItems
47
+ })
48
+ ]
49
+ }) : /*#__PURE__*/ _jsx(LayoutHeader, {
50
+ variant: "dark",
51
+ className: classNames(className, !isMobile && Styles.headerDesktopNav),
52
+ right: right,
53
+ rightText: rightText,
54
+ rightClassName: rightClassName,
55
+ center: isMobile ? undefined : /*#__PURE__*/ _jsx(LayoutHeaderNav, {
56
+ mainItems: navigationMainItems,
57
+ overflowItems: navigationOverflowItems
58
+ }),
59
+ centerClassName: centerClassName,
60
+ isMobile: isMobile,
61
+ hasNotifications: hasNotifications,
62
+ logo: logo,
63
+ profile: profile,
64
+ onBurgerClick: onBurgerClick,
65
+ ...rest
66
+ });
67
+ };
68
+ const LayoutHeaderNav = ({ className, mainItems, overflowItems })=>{
69
+ const containerRef = useRef(null);
70
+ const navigationRef = useRef(null);
71
+ const forceUpdate = useForceUpdate();
72
+ const [minimized, setMinimized] = useState(0);
73
+ useEffect(()=>{
74
+ const handleResize = ()=>{
75
+ setMinimized(0);
76
+ forceUpdate();
77
+ };
78
+ window.addEventListener('resize', handleResize);
79
+ return ()=>window.removeEventListener('resize', handleResize);
80
+ }, [
81
+ forceUpdate
82
+ ]);
83
+ const updateIsMinimized = ()=>{
84
+ if (containerRef.current && navigationRef.current) {
85
+ if (navigationRef.current.clientWidth + 16 > containerRef.current.clientWidth) {
86
+ setMinimized(1);
87
+ } else if (minimized === 0) {
88
+ setMinimized(2);
89
+ }
90
+ }
91
+ };
92
+ useEffect(()=>{
93
+ updateIsMinimized();
94
+ });
95
+ useEffect(()=>{
96
+ setMinimized(0);
97
+ forceUpdate();
98
+ }, [
99
+ forceUpdate
100
+ ]);
101
+ const isMinimized = minimized === 1;
102
+ return /*#__PURE__*/ _jsxs("div", {
103
+ ref: containerRef,
104
+ className: classNames(Styles.headerNavigationWrapper, className, {
105
+ [Styles.calculating]: minimized === 0
106
+ }),
107
+ "data-cy": "navigation-items",
108
+ children: [
109
+ /*#__PURE__*/ _jsx("div", {
110
+ ref: navigationRef,
111
+ className: classNames(Styles.headerNavigation),
112
+ children: mainItems === null || mainItems === void 0 ? void 0 : mainItems.map((item)=>withTooltip(/*#__PURE__*/ _createElement(LayoutHeaderNavigationLink, {
113
+ ...item,
114
+ label: isMinimized ? undefined : item.title,
115
+ key: item.id
116
+ }), isMinimized ? item.title : undefined, {
117
+ key: item.id
118
+ }))
119
+ }),
120
+ !!(overflowItems === null || overflowItems === void 0 ? void 0 : overflowItems.length) && /*#__PURE__*/ _jsx(LayoutHeaderNavOverflow, {
121
+ items: overflowItems
122
+ })
123
+ ]
124
+ });
125
+ };
126
+ const LayoutHeaderNavOverflow = ({ items })=>{
127
+ return /*#__PURE__*/ _jsx(Menu, {
128
+ trigger: (props)=>/*#__PURE__*/ _jsx(ButtonCompound, {
129
+ ...props,
130
+ className: Styles.headerNavigationOverflowTrigger,
131
+ children: /*#__PURE__*/ _jsx(Icon, {
132
+ svg: SvgMoreVert,
133
+ size: "medium"
134
+ })
135
+ }),
136
+ contentClassName: Styles.headerNavigationOverflow,
137
+ placement: "bottom-end",
138
+ children: items.map((item)=>/*#__PURE__*/ _createElement(LayoutHeaderNavigationLink, {
139
+ ...item,
140
+ label: item.title,
141
+ key: item.id
142
+ }))
143
+ });
144
+ };
145
+
146
+ //# sourceMappingURL=layout-header-dark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/titan-layout/layout-header-dark.tsx"],"sourcesContent":["import { ButtonCompound, Icon, Menu } from '@servicetitan/anvil2';\nimport SvgMoreVert from '@servicetitan/anvil2/assets/icons/material/round/more_vert.svg';\nimport classNames from 'classnames';\nimport { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport { NavigationItemData } from '../../utils/navigation';\nimport { LayoutHeader, LayoutHeaderProps } from './layout-header';\nimport { LayoutHeaderNavigationLink } from './layout-header-links';\nimport * as Styles from './layout-header.module.less';\nimport { withTooltip } from './with-tooltip';\n\nfunction useForceUpdate() {\n const [, setTick] = useState(0);\n return useCallback(() => {\n setTick(tick => tick + 1);\n }, []);\n}\n\nenum MinimizedState {\n Calculating,\n Minimized,\n Full,\n}\n\ninterface LayoutHeaderStackedProps extends Omit<LayoutHeaderProps, 'variant'> {\n navigationMainItems?: NavigationItemData[];\n navigationOverflowItems?: NavigationItemData[];\n}\n\nexport const LayoutHeaderDark: FC<LayoutHeaderStackedProps> = ({\n className,\n isMobile,\n navigationMainItems,\n navigationOverflowItems,\n hasNotifications,\n onBurgerClick,\n logo,\n profile,\n right,\n rightText,\n rightClassName,\n center,\n centerClassName,\n ...rest\n}) => {\n return center ? (\n <div\n className={classNames(Styles.headerStacked, className)}\n data-cy=\"header-navigation\"\n {...rest}\n >\n <LayoutHeader\n variant=\"dark\"\n right={right}\n rightText={rightText}\n rightClassName={rightClassName}\n center={center}\n centerClassName={centerClassName}\n isMobile={isMobile}\n hasNotifications={hasNotifications}\n logo={logo}\n profile={profile}\n onBurgerClick={onBurgerClick}\n data-cy=\"header-navigation-top\"\n />\n\n {!isMobile && (\n <LayoutHeaderNav\n className={Styles.headerStackedNav}\n mainItems={navigationMainItems}\n overflowItems={navigationOverflowItems}\n />\n )}\n </div>\n ) : (\n <LayoutHeader\n variant=\"dark\"\n className={classNames(className, !isMobile && Styles.headerDesktopNav)}\n right={right}\n rightText={rightText}\n rightClassName={rightClassName}\n center={\n isMobile ? undefined : (\n <LayoutHeaderNav\n mainItems={navigationMainItems}\n overflowItems={navigationOverflowItems}\n />\n )\n }\n centerClassName={centerClassName}\n isMobile={isMobile}\n hasNotifications={hasNotifications}\n logo={logo}\n profile={profile}\n onBurgerClick={onBurgerClick}\n {...rest}\n />\n );\n};\n\ninterface LayoutHeaderNavProps {\n className?: string;\n mainItems?: NavigationItemData[];\n overflowItems?: NavigationItemData[];\n}\nconst LayoutHeaderNav: FC<LayoutHeaderNavProps> = ({ className, mainItems, overflowItems }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const navigationRef = useRef<HTMLDivElement>(null);\n const forceUpdate = useForceUpdate();\n const [minimized, setMinimized] = useState(MinimizedState.Calculating);\n\n useEffect(() => {\n const handleResize = () => {\n setMinimized(MinimizedState.Calculating);\n forceUpdate();\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [forceUpdate]);\n\n const updateIsMinimized = () => {\n if (containerRef.current && navigationRef.current) {\n if (navigationRef.current.clientWidth + 16 > containerRef.current.clientWidth) {\n setMinimized(MinimizedState.Minimized);\n } else if (minimized === MinimizedState.Calculating) {\n setMinimized(MinimizedState.Full);\n }\n }\n };\n\n useEffect(() => {\n updateIsMinimized();\n });\n\n useEffect(() => {\n setMinimized(MinimizedState.Calculating);\n forceUpdate();\n }, [forceUpdate]);\n\n const isMinimized = minimized === MinimizedState.Minimized;\n\n return (\n <div\n ref={containerRef}\n className={classNames(Styles.headerNavigationWrapper, className, {\n [Styles.calculating]: minimized === MinimizedState.Calculating,\n })}\n data-cy=\"navigation-items\"\n >\n <div ref={navigationRef} className={classNames(Styles.headerNavigation)}>\n {mainItems?.map(item =>\n withTooltip(\n <LayoutHeaderNavigationLink\n {...item}\n label={isMinimized ? undefined : item.title}\n key={item.id}\n />,\n isMinimized ? item.title : undefined,\n { key: item.id }\n )\n )}\n </div>\n {!!overflowItems?.length && <LayoutHeaderNavOverflow items={overflowItems} />}\n </div>\n );\n};\n\nconst LayoutHeaderNavOverflow: FC<{\n items: NavigationItemData[];\n}> = ({ items }) => {\n return (\n <Menu\n trigger={props => (\n <ButtonCompound {...props} className={Styles.headerNavigationOverflowTrigger}>\n <Icon svg={SvgMoreVert} size=\"medium\" />\n </ButtonCompound>\n )}\n contentClassName={Styles.headerNavigationOverflow}\n placement=\"bottom-end\"\n >\n {items.map(item => (\n <LayoutHeaderNavigationLink {...item} label={item.title} key={item.id} />\n ))}\n </Menu>\n );\n};\n"],"names":["ButtonCompound","Icon","Menu","SvgMoreVert","classNames","useCallback","useEffect","useRef","useState","LayoutHeader","LayoutHeaderNavigationLink","Styles","withTooltip","useForceUpdate","setTick","tick","MinimizedState","LayoutHeaderDark","className","isMobile","navigationMainItems","navigationOverflowItems","hasNotifications","onBurgerClick","logo","profile","right","rightText","rightClassName","center","centerClassName","rest","div","headerStacked","data-cy","variant","LayoutHeaderNav","headerStackedNav","mainItems","overflowItems","headerDesktopNav","undefined","containerRef","navigationRef","forceUpdate","minimized","setMinimized","handleResize","window","addEventListener","removeEventListener","updateIsMinimized","current","clientWidth","isMinimized","ref","headerNavigationWrapper","calculating","headerNavigation","map","item","label","title","key","id","length","LayoutHeaderNavOverflow","items","trigger","props","headerNavigationOverflowTrigger","svg","size","contentClassName","headerNavigationOverflow","placement"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { createElement as _createElement } from "react";
2
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createElement as _createElement } from "react";
3
3
  import { Icon } from '@servicetitan/anvil2';
4
4
  import classNames from 'classnames';
5
5
  import { Fragment } from 'react';
@@ -9,24 +9,70 @@ import { CounterTag } from '../counter-tag';
9
9
  import { withTooltip } from '../header-navigation/with-tooltip';
10
10
  import { useTitanLayoutContext } from './layout-context';
11
11
  import * as Styles from './layout-header.module.less';
12
- /** Content for navigation items */
13
- const HeaderNavigationItemContent = ({ counterClassName, icon, iconActive, label, labelClassName, tag }) => {
14
- return (_jsxs(Fragment, { children: [!!icon && _jsx(Icon, { svg: icon, className: Styles.navigationIcon }), !!iconActive && (_jsx(Icon, { svg: iconActive, className: classNames(Styles.navigationIcon, Styles.navigationIconActive) })), !!label && (_jsx("span", { className: classNames(Styles.navigationItemLabel, labelClassName), children: label })), !!tag && (_jsx(CounterTag, { data: tag, className: classNames(Styles.navigationItemCounter, counterClassName), longClassName: Styles.navigationItemCounterLong }))] }));
12
+ /** Content for navigation items */ const HeaderNavigationItemContent = ({ counterClassName, icon, iconActive, label, labelClassName, tag })=>{
13
+ return /*#__PURE__*/ _jsxs(Fragment, {
14
+ children: [
15
+ !!icon && /*#__PURE__*/ _jsx(Icon, {
16
+ svg: icon,
17
+ className: Styles.navigationIcon
18
+ }),
19
+ !!iconActive && /*#__PURE__*/ _jsx(Icon, {
20
+ svg: iconActive,
21
+ className: classNames(Styles.navigationIcon, Styles.navigationIconActive)
22
+ }),
23
+ !!label && /*#__PURE__*/ _jsx("span", {
24
+ className: classNames(Styles.navigationItemLabel, labelClassName),
25
+ children: label
26
+ }),
27
+ !!tag && /*#__PURE__*/ _jsx(CounterTag, {
28
+ data: tag,
29
+ className: classNames(Styles.navigationItemCounter, counterClassName),
30
+ longClassName: Styles.navigationItemCounterLong
31
+ })
32
+ ]
33
+ });
15
34
  };
16
- /** Navigation extra item with link */
17
- export const LayoutHeaderNavigationLink = ({ id, to, hint, tooltip, className, counter, icon, iconActive, iconClassName, iconComponent, iconName, isActive, label, labelClassName, tag, target, ...rest }) => {
35
+ /** Navigation extra item with link */ export const LayoutHeaderNavigationLink = ({ id, to, hint, tooltip, className, counter, icon, iconActive, iconClassName, iconComponent, iconName, isActive, label, labelClassName, tag, target, title, ...rest })=>{
18
36
  const { NavigationComponent } = useTitanLayoutContext();
19
- return withTooltip(_createElement(NavigationComponent, { "data-cy": `navigation-link-${id}`, "data-pendo": `navigation-link-${id}`, ...rest, key: id, to: to, title: hint, className: classNames(Styles.navigationLink, className, {
37
+ return withTooltip(/*#__PURE__*/ _createElement(NavigationComponent, {
38
+ "data-cy": `navigation-link-${id}`,
39
+ "data-pendo": `navigation-link-${id}`,
40
+ ...rest,
41
+ key: id,
42
+ to: to,
43
+ className: classNames(Styles.navigationLink, className, {
20
44
  [Styles.navigationItemActive]: isActive === true,
21
- [Styles.navigationItemIconState]: !!icon && !!iconActive,
22
- }), isActive: typeof isActive === 'function' ? isActive : undefined, activeClassName: Styles.navigationItemActive, target: target },
23
- _jsx(HeaderNavigationItemContent, { tag: getCounterTag(counter, tag), icon: icon, iconActive: iconActive, label: label, labelClassName: labelClassName })), tooltip);
45
+ [Styles.navigationItemIconState]: !!icon && !!iconActive
46
+ }),
47
+ isActive: typeof isActive === 'function' ? isActive : undefined,
48
+ activeClassName: Styles.navigationItemActive,
49
+ target: target
50
+ }, /*#__PURE__*/ _jsx(HeaderNavigationItemContent, {
51
+ tag: getCounterTag(counter, tag),
52
+ icon: icon,
53
+ iconActive: iconActive,
54
+ label: label,
55
+ labelClassName: labelClassName
56
+ })), tooltip);
24
57
  };
25
- /** Navigation extra item with icon button */
26
- export const LayoutHeaderNavigationTrigger = ({ id, className, counter, icon, iconActive, iconName, isActive, hint, label, labelClassName, tag, tooltip, title, titleClassName, ...rest }) => {
27
- return withTooltip(_jsx("div", { "data-cy": `navigation-trigger-${id}`, "data-pendo": `navigation-trigger-${id}`, ...rest, title: hint, className: classNames(Styles.navigationLink, {
58
+ /** Navigation extra item with icon button */ export const LayoutHeaderNavigationTrigger = ({ id, className, counter, icon, iconActive, iconName, isActive, hint, label, labelClassName, tag, tooltip, title, titleClassName, ...rest })=>{
59
+ return withTooltip(/*#__PURE__*/ _jsx("div", {
60
+ "data-cy": `navigation-trigger-${id}`,
61
+ "data-pendo": `navigation-trigger-${id}`,
62
+ ...rest,
63
+ title: hint,
64
+ className: classNames(Styles.navigationLink, {
28
65
  [Styles.navigationItemActive]: isActive === true,
29
- [Styles.navigationItemIconState]: !!icon && !!iconActive,
30
- }, 'cursor-pointer', className), children: _jsx(HeaderNavigationItemContent, { tag: getCounterTag(counter, tag), icon: icon, iconActive: iconActive, label: label, labelClassName: labelClassName }) }), tooltip);
66
+ [Styles.navigationItemIconState]: !!icon && !!iconActive
67
+ }, 'cursor-pointer', className),
68
+ children: /*#__PURE__*/ _jsx(HeaderNavigationItemContent, {
69
+ tag: getCounterTag(counter, tag),
70
+ icon: icon,
71
+ iconActive: iconActive,
72
+ label: label,
73
+ labelClassName: labelClassName
74
+ })
75
+ }), tooltip);
31
76
  };
77
+
32
78
  //# sourceMappingURL=layout-header-links.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout-header-links.js","sourceRoot":"","sources":["../../../src/components/titan-layout/layout-header-links.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/titan-layout/layout-header-links.tsx"],"sourcesContent":["import { Icon, IconProps } from '@servicetitan/anvil2';\nimport classNames from 'classnames';\nimport { FC, Fragment } from 'react';\nimport {\n HeaderNavigationLinkProps,\n HeaderNavigationTriggerProps,\n} from '../../utils/navigation-legacy';\nimport { getCounterTag } from '../../utils/side-nav';\nimport { CounterTag, CounterTagProps } from '../counter-tag';\n// use v1 tooltips due to bug with v2 in monolith\nimport { withTooltip } from '../header-navigation/with-tooltip';\nimport { useTitanLayoutContext } from './layout-context';\nimport * as Styles from './layout-header.module.less';\n\n/** Content for navigation items */\nconst HeaderNavigationItemContent: FC<{\n tag?: CounterTagProps;\n counterClassName?: string;\n icon: IconProps['svg'] | undefined;\n iconActive?: IconProps['svg'];\n label?: string;\n labelClassName?: string;\n}> = ({ counterClassName, icon, iconActive, label, labelClassName, tag }) => {\n return (\n <Fragment>\n {!!icon && <Icon svg={icon} className={Styles.navigationIcon} />}\n {!!iconActive && (\n <Icon\n svg={iconActive}\n className={classNames(Styles.navigationIcon, Styles.navigationIconActive)}\n />\n )}\n\n {!!label && (\n <span className={classNames(Styles.navigationItemLabel, labelClassName)}>\n {label}\n </span>\n )}\n\n {!!tag && (\n <CounterTag\n data={tag}\n className={classNames(Styles.navigationItemCounter, counterClassName)}\n longClassName={Styles.navigationItemCounterLong}\n />\n )}\n </Fragment>\n );\n};\n\n/** Navigation extra item with link */\nexport const LayoutHeaderNavigationLink: FC<HeaderNavigationLinkProps> = ({\n id,\n to,\n hint,\n tooltip,\n className,\n counter,\n icon,\n iconActive,\n iconClassName,\n iconComponent,\n iconName,\n isActive,\n label,\n labelClassName,\n tag,\n target,\n title,\n ...rest\n}) => {\n const { NavigationComponent } = useTitanLayoutContext();\n\n return withTooltip(\n <NavigationComponent\n data-cy={`navigation-link-${id}`}\n data-pendo={`navigation-link-${id}`}\n {...rest}\n key={id}\n to={to}\n className={classNames(Styles.navigationLink, className, {\n [Styles.navigationItemActive]: isActive === true,\n [Styles.navigationItemIconState]: !!icon && !!iconActive,\n })}\n isActive={typeof isActive === 'function' ? isActive : undefined}\n activeClassName={Styles.navigationItemActive}\n target={target}\n >\n <HeaderNavigationItemContent\n tag={getCounterTag(counter, tag)}\n icon={icon}\n iconActive={iconActive}\n label={label}\n labelClassName={labelClassName}\n />\n </NavigationComponent>,\n tooltip\n );\n};\n\n/** Navigation extra item with icon button */\nexport const LayoutHeaderNavigationTrigger: FC<HeaderNavigationTriggerProps> = ({\n id,\n className,\n counter,\n icon,\n iconActive,\n iconName,\n isActive,\n hint,\n label,\n labelClassName,\n tag,\n tooltip,\n title,\n titleClassName,\n ...rest\n}) => {\n return withTooltip(\n <div\n data-cy={`navigation-trigger-${id}`}\n data-pendo={`navigation-trigger-${id}`}\n {...rest}\n title={hint}\n className={classNames(\n Styles.navigationLink,\n {\n [Styles.navigationItemActive]: isActive === true,\n [Styles.navigationItemIconState]: !!icon && !!iconActive,\n },\n 'cursor-pointer',\n className\n )}\n >\n <HeaderNavigationItemContent\n tag={getCounterTag(counter, tag)}\n icon={icon}\n iconActive={iconActive}\n label={label}\n labelClassName={labelClassName}\n />\n </div>,\n tooltip\n );\n};\n"],"names":["Icon","classNames","Fragment","getCounterTag","CounterTag","withTooltip","useTitanLayoutContext","Styles","HeaderNavigationItemContent","counterClassName","icon","iconActive","label","labelClassName","tag","svg","className","navigationIcon","navigationIconActive","span","navigationItemLabel","data","navigationItemCounter","longClassName","navigationItemCounterLong","LayoutHeaderNavigationLink","id","to","hint","tooltip","counter","iconClassName","iconComponent","iconName","isActive","target","title","rest","NavigationComponent","data-cy","data-pendo","key","navigationLink","navigationItemActive","navigationItemIconState","undefined","activeClassName","LayoutHeaderNavigationTrigger","titleClassName","div"],"mappings":";;AAAA,SAASA,IAAI,QAAmB,uBAAuB;AACvD,OAAOC,gBAAgB,aAAa;AACpC,SAAaC,QAAQ,QAAQ,QAAQ;AAKrC,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,UAAU,QAAyB,iBAAiB;AAC7D,iDAAiD;AACjD,SAASC,WAAW,QAAQ,oCAAoC;AAChE,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,YAAYC,YAAY,8BAA8B;AAEtD,iCAAiC,GACjC,MAAMC,8BAOD,CAAC,EAAEC,gBAAgB,EAAEC,IAAI,EAAEC,UAAU,EAAEC,KAAK,EAAEC,cAAc,EAAEC,GAAG,EAAE;IACpE,qBACI,MAACZ;;YACI,CAAC,CAACQ,sBAAQ,KAACV;gBAAKe,KAAKL;gBAAMM,WAAWT,OAAOU,cAAc;;YAC3D,CAAC,CAACN,4BACC,KAACX;gBACGe,KAAKJ;gBACLK,WAAWf,WAAWM,OAAOU,cAAc,EAAEV,OAAOW,oBAAoB;;YAI/E,CAAC,CAACN,uBACC,KAACO;gBAAKH,WAAWf,WAAWM,OAAOa,mBAAmB,EAAEP;0BACnDD;;YAIR,CAAC,CAACE,qBACC,KAACV;gBACGiB,MAAMP;gBACNE,WAAWf,WAAWM,OAAOe,qBAAqB,EAAEb;gBACpDc,eAAehB,OAAOiB,yBAAyB;;;;AAKnE;AAEA,oCAAoC,GACpC,OAAO,MAAMC,6BAA4D,CAAC,EACtEC,EAAE,EACFC,EAAE,EACFC,IAAI,EACJC,OAAO,EACPb,SAAS,EACTc,OAAO,EACPpB,IAAI,EACJC,UAAU,EACVoB,aAAa,EACbC,aAAa,EACbC,QAAQ,EACRC,QAAQ,EACRtB,KAAK,EACLC,cAAc,EACdC,GAAG,EACHqB,MAAM,EACNC,KAAK,EACL,GAAGC,MACN;IACG,MAAM,EAAEC,mBAAmB,EAAE,GAAGhC;IAEhC,OAAOD,0BACH,eAACiC;QACGC,WAAS,CAAC,gBAAgB,EAAEb,IAAI;QAChCc,cAAY,CAAC,gBAAgB,EAAEd,IAAI;QAClC,GAAGW,IAAI;QACRI,KAAKf;QACLC,IAAIA;QACJX,WAAWf,WAAWM,OAAOmC,cAAc,EAAE1B,WAAW;YACpD,CAACT,OAAOoC,oBAAoB,CAAC,EAAET,aAAa;YAC5C,CAAC3B,OAAOqC,uBAAuB,CAAC,EAAE,CAAC,CAAClC,QAAQ,CAAC,CAACC;QAClD;QACAuB,UAAU,OAAOA,aAAa,aAAaA,WAAWW;QACtDC,iBAAiBvC,OAAOoC,oBAAoB;QAC5CR,QAAQA;qBAER,KAAC3B;QACGM,KAAKX,cAAc2B,SAAShB;QAC5BJ,MAAMA;QACNC,YAAYA;QACZC,OAAOA;QACPC,gBAAgBA;SAGxBgB;AAER,EAAE;AAEF,2CAA2C,GAC3C,OAAO,MAAMkB,gCAAkE,CAAC,EAC5ErB,EAAE,EACFV,SAAS,EACTc,OAAO,EACPpB,IAAI,EACJC,UAAU,EACVsB,QAAQ,EACRC,QAAQ,EACRN,IAAI,EACJhB,KAAK,EACLC,cAAc,EACdC,GAAG,EACHe,OAAO,EACPO,KAAK,EACLY,cAAc,EACd,GAAGX,MACN;IACG,OAAOhC,0BACH,KAAC4C;QACGV,WAAS,CAAC,mBAAmB,EAAEb,IAAI;QACnCc,cAAY,CAAC,mBAAmB,EAAEd,IAAI;QACrC,GAAGW,IAAI;QACRD,OAAOR;QACPZ,WAAWf,WACPM,OAAOmC,cAAc,EACrB;YACI,CAACnC,OAAOoC,oBAAoB,CAAC,EAAET,aAAa;YAC5C,CAAC3B,OAAOqC,uBAAuB,CAAC,EAAE,CAAC,CAAClC,QAAQ,CAAC,CAACC;QAClD,GACA,kBACAK;kBAGJ,cAAA,KAACR;YACGM,KAAKX,cAAc2B,SAAShB;YAC5BJ,MAAMA;YACNC,YAAYA;YACZC,OAAOA;YACPC,gBAAgBA;;QAGxBgB;AAER,EAAE"}
@@ -1,10 +1,5 @@
1
1
  import { ComponentPropsWithoutRef, FC, ReactElement, ReactNode } from 'react';
2
2
  import { TitanLayoutLogoProps } from './layout-logo';
3
- export interface TitanLayoutHeaderLogoProps {
4
- title?: true | string;
5
- mantleFill?: string;
6
- to?: string;
7
- }
8
3
  export type LayoutHeaderProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'> & {
9
4
  right?: ReactNode;
10
5
  rightText?: string;
@@ -12,9 +7,10 @@ export type LayoutHeaderProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'
12
7
  id?: string;
13
8
  center?: ReactElement;
14
9
  centerClassName?: string;
15
- logo: ReactElement<TitanLayoutLogoProps>;
10
+ logo?: TitanLayoutLogoProps;
16
11
  profile?: ReactElement;
17
12
  isMobile: boolean;
13
+ variant: 'light' | 'dark';
18
14
  hasNotifications: boolean;
19
15
  onBurgerClick?: (e: MouseEvent) => void;
20
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"layout-header.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/layout-header.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,0BAA0B;IACvC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IAChF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,IAAI,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAgE9C,CAAC"}
1
+ {"version":3,"file":"layout-header.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/layout-header.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI9E,OAAO,EAAc,oBAAoB,EAAgB,MAAM,eAAe,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IAChF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAkE9C,CAAC"}
@@ -4,7 +4,51 @@ import classNames from 'classnames';
4
4
  import { LayoutPlacementContext } from './layout-context';
5
5
  import { LayoutHeaderNavigationTrigger } from './layout-header-links';
6
6
  import * as Styles from './layout-header.module.less';
7
- export const LayoutHeader = ({ className, right, rightText, rightClassName, center, centerClassName, isMobile, hasNotifications, logo, profile, onBurgerClick, ...rest }) => {
8
- return (_jsx(LayoutPlacementContext.Provider, { value: "top", children: _jsxs("div", { className: classNames(Styles.header, isMobile ? Styles.headerMobile : Styles.headerDesktop, className), ...rest, "data-cy": "header-navigation", children: [_jsxs("div", { className: classNames(Styles.heTopLeft), "data-cy": "navigation-left", children: [isMobile && (_jsx(LayoutHeaderNavigationTrigger, { id: "burger", title: "", icon: SvgBurgerMenu, iconActive: SvgBurgerMenu, className: "m-r-1", onClick: onBurgerClick, tag: { value: hasNotifications } })), logo] }), _jsx("div", { className: classNames(Styles.heTopCenter, 'd-f align-items-center justify-content-center', centerClassName), "data-cy": "navigation-center", children: center }), _jsxs("div", { className: classNames('d-f flex-row justify-content-end align-items-center', Styles.heTopRight, rightClassName), "data-cy": "navigation-right", children: [!!rightText && _jsx("div", { className: Styles.heTopRightText, children: rightText }), right, profile] })] }) }));
7
+ import { LayoutLogo, isLogoCustom } from './layout-logo';
8
+ export const LayoutHeader = ({ className, right, rightText, rightClassName, center, centerClassName, isMobile, hasNotifications, logo, profile, variant, onBurgerClick, ...rest })=>{
9
+ return /*#__PURE__*/ _jsx(LayoutPlacementContext.Provider, {
10
+ value: "top",
11
+ children: /*#__PURE__*/ _jsxs("div", {
12
+ className: classNames(Styles.header, variant === 'light' ? Styles.headerLight : Styles.headerDark, isMobile ? Styles.headerMobile : Styles.headerDesktop, isLogoCustom(logo, isMobile) && Styles.headerLogoCustom, className),
13
+ "data-cy": "header-navigation",
14
+ ...rest,
15
+ children: [
16
+ isMobile && /*#__PURE__*/ _jsx("div", {
17
+ className: Styles.burger,
18
+ children: /*#__PURE__*/ _jsx(LayoutHeaderNavigationTrigger, {
19
+ id: "burger",
20
+ title: "",
21
+ icon: SvgBurgerMenu,
22
+ iconActive: undefined,
23
+ onClick: onBurgerClick,
24
+ tag: {
25
+ value: hasNotifications
26
+ }
27
+ })
28
+ }),
29
+ /*#__PURE__*/ _jsx(LayoutLogo, {
30
+ ...logo
31
+ }),
32
+ /*#__PURE__*/ _jsx("div", {
33
+ className: classNames(Styles.heTopCenter, 'd-f align-items-center justify-content-center', centerClassName),
34
+ "data-cy": "navigation-center",
35
+ children: center
36
+ }),
37
+ /*#__PURE__*/ _jsxs("div", {
38
+ className: classNames('d-f flex-row justify-content-end align-items-center', Styles.heTopRight, rightClassName),
39
+ "data-cy": "navigation-right",
40
+ children: [
41
+ !!rightText && /*#__PURE__*/ _jsx("div", {
42
+ className: Styles.heTopRightText,
43
+ children: rightText
44
+ }),
45
+ right,
46
+ profile
47
+ ]
48
+ })
49
+ ]
50
+ })
51
+ });
9
52
  };
53
+
10
54
  //# sourceMappingURL=layout-header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout-header.js","sourceRoot":"","sources":["../../../src/components/titan-layout/layout-header.tsx"],"names":[],"mappings":";AAAA,OAAO,aAAa,MAAM,2DAA2D,CAAC;AACtF,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AA2BtD,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,EAChD,SAAS,EACT,KAAK,EACL,SAAS,EACT,cAAc,EACd,MAAM,EACN,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,IAAI,EACJ,OAAO,EACP,aAAa,EACb,GAAG,IAAI,EACV,EAAE,EAAE;IACD,OAAO,CACH,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAC,KAAK,YACxC,eACI,SAAS,EAAE,UAAU,CACjB,MAAM,CAAC,MAAM,EACb,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EACrD,SAAS,CACZ,KACG,IAAI,aACA,mBAAmB,aAE3B,eAAK,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,aAAU,iBAAiB,aAClE,QAAQ,IAAI,CACT,KAAC,6BAA6B,IAC1B,EAAE,EAAC,QAAQ,EACX,KAAK,EAAC,EAAE,EACR,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa,EACzB,SAAS,EAAC,OAAO,EACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAClC,CACL,EACA,IAAI,IACH,EACN,cACI,SAAS,EAAE,UAAU,CACjB,MAAM,CAAC,WAAW,EAClB,+CAA+C,EAC/C,eAAe,CAClB,aACO,mBAAmB,YAE1B,MAAM,GACL,EACN,eACI,SAAS,EAAE,UAAU,CACjB,qDAAqD,EACrD,MAAM,CAAC,UAAU,EACjB,cAAc,CACjB,aACO,kBAAkB,aAEzB,CAAC,CAAC,SAAS,IAAI,cAAK,SAAS,EAAE,MAAM,CAAC,cAAc,YAAG,SAAS,GAAO,EACvE,KAAK,EACL,OAAO,IACN,IACJ,GACwB,CACrC,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../../src/components/titan-layout/layout-header.tsx"],"sourcesContent":["import SvgBurgerMenu from '@servicetitan/anvil2/assets/icons/material/round/menu.svg';\nimport classNames from 'classnames';\nimport { ComponentPropsWithoutRef, FC, ReactElement, ReactNode } from 'react';\nimport { LayoutPlacementContext } from './layout-context';\nimport { LayoutHeaderNavigationTrigger } from './layout-header-links';\nimport * as Styles from './layout-header.module.less';\nimport { LayoutLogo, TitanLayoutLogoProps, isLogoCustom } from './layout-logo';\n\nexport type LayoutHeaderProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'> & {\n right?: ReactNode;\n rightText?: string;\n rightClassName?: string;\n\n id?: string;\n\n center?: ReactElement;\n centerClassName?: string;\n\n logo?: TitanLayoutLogoProps;\n profile?: ReactElement;\n\n isMobile: boolean;\n variant: 'light' | 'dark';\n hasNotifications: boolean;\n onBurgerClick?: (e: MouseEvent) => void;\n};\n\nexport const LayoutHeader: FC<LayoutHeaderProps> = ({\n className,\n right,\n rightText,\n rightClassName,\n center,\n centerClassName,\n isMobile,\n hasNotifications,\n logo,\n profile,\n variant,\n onBurgerClick,\n ...rest\n}) => {\n return (\n <LayoutPlacementContext.Provider value=\"top\">\n <div\n className={classNames(\n Styles.header,\n variant === 'light' ? Styles.headerLight : Styles.headerDark,\n isMobile ? Styles.headerMobile : Styles.headerDesktop,\n isLogoCustom(logo, isMobile) && Styles.headerLogoCustom,\n className\n )}\n data-cy=\"header-navigation\"\n {...rest}\n >\n {isMobile && (\n <div className={Styles.burger}>\n <LayoutHeaderNavigationTrigger\n id=\"burger\"\n title=\"\"\n icon={SvgBurgerMenu}\n iconActive={undefined}\n onClick={onBurgerClick}\n tag={{ value: hasNotifications }}\n />\n </div>\n )}\n <LayoutLogo {...logo} />\n <div\n className={classNames(\n Styles.heTopCenter,\n 'd-f align-items-center justify-content-center',\n centerClassName\n )}\n data-cy=\"navigation-center\"\n >\n {center}\n </div>\n <div\n className={classNames(\n 'd-f flex-row justify-content-end align-items-center',\n Styles.heTopRight,\n rightClassName\n )}\n data-cy=\"navigation-right\"\n >\n {!!rightText && <div className={Styles.heTopRightText}>{rightText}</div>}\n {right}\n {profile}\n </div>\n </div>\n </LayoutPlacementContext.Provider>\n );\n};\n"],"names":["SvgBurgerMenu","classNames","LayoutPlacementContext","LayoutHeaderNavigationTrigger","Styles","LayoutLogo","isLogoCustom","LayoutHeader","className","right","rightText","rightClassName","center","centerClassName","isMobile","hasNotifications","logo","profile","variant","onBurgerClick","rest","Provider","value","div","header","headerLight","headerDark","headerMobile","headerDesktop","headerLogoCustom","data-cy","burger","id","title","icon","iconActive","undefined","onClick","tag","heTopCenter","heTopRight","heTopRightText"],"mappings":";AAAA,OAAOA,mBAAmB,4DAA4D;AACtF,OAAOC,gBAAgB,aAAa;AAEpC,SAASC,sBAAsB,QAAQ,mBAAmB;AAC1D,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,YAAYC,YAAY,8BAA8B;AACtD,SAASC,UAAU,EAAwBC,YAAY,QAAQ,gBAAgB;AAqB/E,OAAO,MAAMC,eAAsC,CAAC,EAChDC,SAAS,EACTC,KAAK,EACLC,SAAS,EACTC,cAAc,EACdC,MAAM,EACNC,eAAe,EACfC,QAAQ,EACRC,gBAAgB,EAChBC,IAAI,EACJC,OAAO,EACPC,OAAO,EACPC,aAAa,EACb,GAAGC,MACN;IACG,qBACI,KAAClB,uBAAuBmB,QAAQ;QAACC,OAAM;kBACnC,cAAA,MAACC;YACGf,WAAWP,WACPG,OAAOoB,MAAM,EACbN,YAAY,UAAUd,OAAOqB,WAAW,GAAGrB,OAAOsB,UAAU,EAC5DZ,WAAWV,OAAOuB,YAAY,GAAGvB,OAAOwB,aAAa,EACrDtB,aAAaU,MAAMF,aAAaV,OAAOyB,gBAAgB,EACvDrB;YAEJsB,WAAQ;YACP,GAAGV,IAAI;;gBAEPN,0BACG,KAACS;oBAAIf,WAAWJ,OAAO2B,MAAM;8BACzB,cAAA,KAAC5B;wBACG6B,IAAG;wBACHC,OAAM;wBACNC,MAAMlC;wBACNmC,YAAYC;wBACZC,SAASlB;wBACTmB,KAAK;4BAAEhB,OAAOP;wBAAiB;;;8BAI3C,KAACV;oBAAY,GAAGW,IAAI;;8BACpB,KAACO;oBACGf,WAAWP,WACPG,OAAOmC,WAAW,EAClB,iDACA1B;oBAEJiB,WAAQ;8BAEPlB;;8BAEL,MAACW;oBACGf,WAAWP,WACP,uDACAG,OAAOoC,UAAU,EACjB7B;oBAEJmB,WAAQ;;wBAEP,CAAC,CAACpB,2BAAa,KAACa;4BAAIf,WAAWJ,OAAOqC,cAAc;sCAAG/B;;wBACvDD;wBACAQ;;;;;;AAKrB,EAAE"}