@servicetitan/navigation 11.0.0-canary.237.ff793b3.0 → 11.1.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 (189) 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 +2 -0
  53. package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -1
  54. package/dist/components/profile-dropdown/profile-dropdown.js +176 -32
  55. package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -1
  56. package/dist/components/profile-dropdown/profile-dropdown.module.less +20 -8
  57. package/dist/components/profile-dropdown/profile-dropdown.module.less.d.ts +23 -0
  58. package/dist/components/profile-dropdown/profile-icon.js +49 -3
  59. package/dist/components/profile-dropdown/profile-icon.js.map +1 -1
  60. package/dist/components/titan-layout/index.d.ts +2 -2
  61. package/dist/components/titan-layout/index.d.ts.map +1 -1
  62. package/dist/components/titan-layout/index.js +1 -2
  63. package/dist/components/titan-layout/index.js.map +1 -1
  64. package/dist/components/titan-layout/interface-internal.js +2 -1
  65. package/dist/components/titan-layout/interface-internal.js.map +1 -1
  66. package/dist/components/titan-layout/interface.js +2 -1
  67. package/dist/components/titan-layout/interface.js.map +1 -1
  68. package/dist/components/titan-layout/layout-context.js +15 -6
  69. package/dist/components/titan-layout/layout-context.js.map +1 -1
  70. package/dist/components/titan-layout/layout-header-dark.d.ts +10 -0
  71. package/dist/components/titan-layout/layout-header-dark.d.ts.map +1 -0
  72. package/dist/components/titan-layout/layout-header-dark.js +146 -0
  73. package/dist/components/titan-layout/layout-header-dark.js.map +1 -0
  74. package/dist/components/titan-layout/layout-header-links.d.ts.map +1 -1
  75. package/dist/components/titan-layout/layout-header-links.js +61 -15
  76. package/dist/components/titan-layout/layout-header-links.js.map +1 -1
  77. package/dist/components/titan-layout/layout-header.d.ts +2 -6
  78. package/dist/components/titan-layout/layout-header.d.ts.map +1 -1
  79. package/dist/components/titan-layout/layout-header.js +46 -2
  80. package/dist/components/titan-layout/layout-header.js.map +1 -1
  81. package/dist/components/titan-layout/layout-header.module.less +320 -90
  82. package/dist/components/titan-layout/layout-header.module.less.d.ts +34 -0
  83. package/dist/components/titan-layout/layout-logo.d.ts +5 -3
  84. package/dist/components/titan-layout/layout-logo.d.ts.map +1 -1
  85. package/dist/components/titan-layout/layout-logo.js +45 -9
  86. package/dist/components/titan-layout/layout-logo.js.map +1 -1
  87. package/dist/components/titan-layout/layout-logo.stories.d.ts +15 -4
  88. package/dist/components/titan-layout/layout-logo.stories.d.ts.map +1 -1
  89. package/dist/components/titan-layout/layout-profile.d.ts.map +1 -1
  90. package/dist/components/titan-layout/layout-profile.js +87 -31
  91. package/dist/components/titan-layout/layout-profile.js.map +1 -1
  92. package/dist/components/titan-layout/layout-sidebar-links-internal.js +162 -36
  93. package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -1
  94. package/dist/components/titan-layout/layout-sidebar-links.d.ts.map +1 -1
  95. package/dist/components/titan-layout/layout-sidebar-links.js +33 -13
  96. package/dist/components/titan-layout/layout-sidebar-links.js.map +1 -1
  97. package/dist/components/titan-layout/layout-sidebar.js +198 -34
  98. package/dist/components/titan-layout/layout-sidebar.js.map +1 -1
  99. package/dist/components/titan-layout/layout-sidebar.module.less +6 -2
  100. package/dist/components/titan-layout/layout-sidebar.module.less.d.ts +49 -0
  101. package/dist/components/titan-layout/notifications-context.js +20 -10
  102. package/dist/components/titan-layout/notifications-context.js.map +1 -1
  103. package/dist/components/titan-layout/titan-layout.d.ts +7 -8
  104. package/dist/components/titan-layout/titan-layout.d.ts.map +1 -1
  105. package/dist/components/titan-layout/titan-layout.js +275 -121
  106. package/dist/components/titan-layout/titan-layout.js.map +1 -1
  107. package/dist/components/titan-layout/titan-layout.module.less +9 -2
  108. package/dist/components/titan-layout/titan-layout.module.less.d.ts +17 -0
  109. package/dist/components/titan-layout/titan-layout.stories.d.ts +6 -0
  110. package/dist/components/titan-layout/titan-layout.stories.d.ts.map +1 -1
  111. package/dist/components/titan-layout/with-tooltip.d.ts +4 -1
  112. package/dist/components/titan-layout/with-tooltip.d.ts.map +1 -1
  113. package/dist/components/titan-layout/with-tooltip.js +13 -1
  114. package/dist/components/titan-layout/with-tooltip.js.map +1 -1
  115. package/dist/index.d.ts +4 -3
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +2 -3
  118. package/dist/index.js.map +1 -1
  119. package/dist/test/data-stories.module.less.d.ts +3 -0
  120. package/dist/test/data.js +223 -90
  121. package/dist/test/data.js.map +1 -1
  122. package/dist/utils/counter-tag.js +2 -1
  123. package/dist/utils/counter-tag.js.map +1 -1
  124. package/dist/utils/navigation-context.js +12 -6
  125. package/dist/utils/navigation-context.js.map +1 -1
  126. package/dist/utils/navigation-legacy.js +2 -1
  127. package/dist/utils/navigation-legacy.js.map +1 -1
  128. package/dist/utils/navigation.js +2 -1
  129. package/dist/utils/navigation.js.map +1 -1
  130. package/dist/utils/side-nav.js +9 -6
  131. package/dist/utils/side-nav.js.map +1 -1
  132. package/dist/utils/use-breakpoint.js +12 -9
  133. package/dist/utils/use-breakpoint.js.map +1 -1
  134. package/package.json +4 -4
  135. package/src/components/left-navigation/index.ts +1 -1
  136. package/src/components/logo/logo-titan.tsx +3 -1
  137. package/src/components/profile-dropdown/profile-dropdown.module.less +20 -8
  138. package/src/components/profile-dropdown/profile-dropdown.module.less.d.ts +2 -0
  139. package/src/components/profile-dropdown/profile-dropdown.tsx +45 -13
  140. package/src/components/titan-layout/index.ts +2 -2
  141. package/src/components/titan-layout/layout-header-dark.tsx +186 -0
  142. package/src/components/titan-layout/layout-header-links.tsx +3 -2
  143. package/src/components/titan-layout/layout-header.module.less +320 -90
  144. package/src/components/titan-layout/layout-header.module.less.d.ts +20 -2
  145. package/src/components/titan-layout/layout-header.tsx +18 -17
  146. package/src/components/titan-layout/layout-logo.stories.tsx +103 -15
  147. package/src/components/titan-layout/layout-logo.tsx +33 -36
  148. package/src/components/titan-layout/layout-profile.stories.tsx +1 -1
  149. package/src/components/titan-layout/layout-profile.tsx +46 -17
  150. package/src/components/titan-layout/layout-sidebar-links.tsx +5 -1
  151. package/src/components/titan-layout/layout-sidebar.module.less +6 -2
  152. package/src/components/titan-layout/layout-sidebar.tsx +1 -1
  153. package/src/components/titan-layout/titan-layout.module.less +9 -2
  154. package/src/components/titan-layout/titan-layout.module.less.d.ts +2 -1
  155. package/src/components/titan-layout/titan-layout.stories.tsx +82 -20
  156. package/src/components/titan-layout/titan-layout.tsx +115 -125
  157. package/src/components/titan-layout/with-tooltip.tsx +5 -2
  158. package/src/index.ts +4 -5
  159. package/src/utils/use-breakpoint.ts +1 -1
  160. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.js +0 -13
  161. package/dist/components/header-navigation/header-navigation-extra-stacked.stories.js.map +0 -1
  162. package/dist/components/header-navigation/header-navigation-extra.stories.js +0 -29
  163. package/dist/components/header-navigation/header-navigation-extra.stories.js.map +0 -1
  164. package/dist/components/header-navigation/header-navigation-stacked.stories.js +0 -50
  165. package/dist/components/header-navigation/header-navigation-stacked.stories.js.map +0 -1
  166. package/dist/components/header-navigation/header-navigation.stories.js +0 -54
  167. package/dist/components/header-navigation/header-navigation.stories.js.map +0 -1
  168. package/dist/components/layout.stories.js +0 -29
  169. package/dist/components/layout.stories.js.map +0 -1
  170. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.js +0 -13
  171. package/dist/components/left-navigation/header-navigation-extra-tiny.stories.js.map +0 -1
  172. package/dist/components/left-navigation/header-navigation-tiny.stories.js +0 -30
  173. package/dist/components/left-navigation/header-navigation-tiny.stories.js.map +0 -1
  174. package/dist/components/left-navigation/side-navigation.stories.js +0 -115
  175. package/dist/components/left-navigation/side-navigation.stories.js.map +0 -1
  176. package/dist/components/logo/logo.stories.js +0 -20
  177. package/dist/components/logo/logo.stories.js.map +0 -1
  178. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js +0 -13
  179. package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js.map +0 -1
  180. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.js +0 -13
  181. package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.js.map +0 -1
  182. package/dist/components/profile-dropdown/profile-dropdown.stories.js +0 -51
  183. package/dist/components/profile-dropdown/profile-dropdown.stories.js.map +0 -1
  184. package/dist/components/titan-layout/layout-logo.stories.js +0 -17
  185. package/dist/components/titan-layout/layout-logo.stories.js.map +0 -1
  186. package/dist/components/titan-layout/layout-profile.stories.js +0 -13
  187. package/dist/components/titan-layout/layout-profile.stories.js.map +0 -1
  188. package/dist/components/titan-layout/titan-layout.stories.js +0 -83
  189. package/dist/components/titan-layout/titan-layout.stories.js.map +0 -1
@@ -1,13 +1,11 @@
1
1
  import classNames from 'classnames';
2
2
  import {
3
3
  CSSProperties,
4
- Children,
5
4
  ComponentPropsWithoutRef,
6
5
  FC,
7
6
  Fragment,
8
7
  ReactElement,
9
8
  ReactNode,
10
- isValidElement,
11
9
  useCallback,
12
10
  useEffect,
13
11
  useMemo,
@@ -25,21 +23,23 @@ import {
25
23
  TitanLayoutSidebarContextType,
26
24
  } from './layout-context';
27
25
  import { LayoutHeader } from './layout-header';
28
- import { TitanLayoutLogo, TitanLayoutLogoProps } from './layout-logo';
26
+ import { LayoutHeaderDark } from './layout-header-dark';
27
+ import { TitanLayoutLogoProps } from './layout-logo';
29
28
  import { LayoutSidebar } from './layout-sidebar';
30
29
  import { TitanLayoutSidebarLink, TitanLayoutSidebarTrigger } from './layout-sidebar-links';
31
30
  import { InternalSideNavigationTrigger } from './layout-sidebar-links-internal';
32
31
  import { useNotificationsState } from './notifications-context';
33
32
  import * as Styles from './titan-layout.module.less';
34
33
 
35
- type TitanLayoutChild = ReactElement<TitanLayoutContentProps> | ReactElement<TitanLayoutLogoProps>;
36
-
37
34
  export type TitanLayoutProps = Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'style'> & {
38
35
  /** layout appearance */
39
36
  appearance?: 'legacy' | 'anvil1' | 'anvil2';
40
37
 
38
+ /** layout navigation variant (left by default) */
39
+ navVariant?: 'left' | 'top';
40
+
41
41
  /** layout's content */
42
- children?: TitanLayoutChild | TitanLayoutChild[];
42
+ children?: ReactNode;
43
43
 
44
44
  /** show only content without side and top bars */
45
45
  contentOnly?: boolean;
@@ -50,6 +50,12 @@ export type TitanLayoutProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'
50
50
  /** data for main navigation links */
51
51
  navigationMainItems?: NavigationItemData[];
52
52
 
53
+ /** data for overflow navigation links (used only with top variant) */
54
+ navigationOverflowItems?: NavigationItemData[];
55
+
56
+ /** logo props */
57
+ logo?: TitanLayoutLogoProps;
58
+
53
59
  state?: TitanLayoutState;
54
60
  onStateChange?: (state: TitanLayoutState) => void;
55
61
 
@@ -72,7 +78,7 @@ const defaultSidebarContext: TitanLayoutSidebarContextType = {
72
78
  },
73
79
  };
74
80
 
75
- const useVariant = (appearance: TitanLayoutProps['appearance']) =>
81
+ const useAppearance = (appearance: TitanLayoutProps['appearance']) =>
76
82
  useMemo(() => {
77
83
  const isLegacy = appearance === 'legacy';
78
84
  const isAnvil1 = appearance === 'anvil1';
@@ -86,37 +92,9 @@ const useVariant = (appearance: TitanLayoutProps['appearance']) =>
86
92
  };
87
93
  }, [appearance]);
88
94
 
89
- const useLayoutChildren = (children: TitanLayoutProps['children']) =>
90
- useMemo(
91
- () =>
92
- Children.toArray(children).reduce(
93
- (out, item) => {
94
- if (
95
- item &&
96
- isValidElement(item) &&
97
- item.type &&
98
- typeof item.type !== 'string'
99
- ) {
100
- if (item.type.name === TitanLayoutContent.name) {
101
- out.content = item as any;
102
- } else if (item.type.name === TitanLayoutLogo.name) {
103
- out.logo = item as any;
104
- }
105
- }
106
- return out;
107
- },
108
- {
109
- logo: <TitanLayoutLogo />,
110
- } as {
111
- content?: ReactElement<TitanLayoutContentProps>;
112
- logo: ReactElement<TitanLayoutLogoProps>;
113
- }
114
- ),
115
- [children]
116
- );
117
-
118
95
  const TitanLayoutComponent: FC<TitanLayoutProps> = ({
119
96
  appearance = 'anvil2',
97
+ navVariant = 'left',
120
98
  id,
121
99
  children,
122
100
  contentOnly,
@@ -125,8 +103,10 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
125
103
  top,
126
104
  profile,
127
105
  state,
106
+ logo,
128
107
  onStateChange,
129
108
  navigationMainItems,
109
+ navigationOverflowItems,
130
110
  extraLinks,
131
111
  extraLinksTop,
132
112
  extraText,
@@ -143,26 +123,30 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
143
123
  }),
144
124
  [navigationComponent, breakpoint]
145
125
  );
146
- const variant = useVariant(appearance);
126
+ const view = useAppearance(appearance);
147
127
  const [mobileDrawerOpened, setMobileDrawerOpened] = useState(false);
148
- const { content, logo } = useLayoutChildren(children);
149
128
  const { hasNotifications, NotificationsContextProvider } = useNotificationsState();
150
- const [anvil2Styles, setAnvil2Styles] = useState<object>({});
129
+ const [offsetTopStyles, setOffsetTopStyles] = useState<object>({});
151
130
  const updateIndicatorsHeight = useCallback((offset: number) => {
152
- setAnvil2Styles({ '--offset': `calc(var(--nav-offset-top) + ${offset}px)` });
131
+ setOffsetTopStyles({
132
+ '--content-offset-top': `calc(var(--nav-offset-top) + ${offset}px)`,
133
+ });
153
134
  }, []);
154
135
 
155
136
  const isMobile = breakpoint.isMobile;
156
- const hasSideBar = !contentOnly && (!!navigationMainItems?.length || !!sideTop?.length);
137
+ const hasSideBar =
138
+ !contentOnly &&
139
+ (navVariant === 'left' || (navVariant === 'top' && isMobile)) &&
140
+ (!!navigationMainItems?.length || !!sideTop?.length);
157
141
  const hasTopBar = !contentOnly;
158
142
 
159
143
  useEffect(() => {
160
- if (variant.isAnvil1) {
144
+ if (view.isAnvil1) {
161
145
  const bodyClassName = 'of-hidden-i';
162
146
  document.body.classList.add(bodyClassName);
163
147
  return () => document.body.classList.remove(bodyClassName);
164
148
  }
165
- }, [variant.isAnvil1]);
149
+ }, [view.isAnvil1]);
166
150
 
167
151
  const onBurgerClick = useCallback((e: MouseEvent) => {
168
152
  setMobileDrawerOpened(true);
@@ -188,10 +172,22 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
188
172
  },
189
173
  [state, onStateChange]
190
174
  );
175
+ const sidebarNavItems = useMemo(() => {
176
+ if (!hasSideBar) {
177
+ return undefined;
178
+ }
179
+
180
+ if (navVariant === 'left') {
181
+ return navigationMainItems;
182
+ }
183
+
184
+ return [...(navigationMainItems ?? []), ...(navigationOverflowItems ?? [])];
185
+ }, [hasSideBar, navigationMainItems, navigationOverflowItems, navVariant]);
186
+
191
187
  const hasMenuNotifications = useMemo(() => {
192
188
  try {
193
189
  return (
194
- navigationMainItems?.some(item => {
190
+ sidebarNavItems?.some(item => {
195
191
  if (item.counter || item.tag?.value) {
196
192
  return true;
197
193
  } else if (item.submenu) {
@@ -205,35 +201,36 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
205
201
  } catch {
206
202
  return false;
207
203
  }
208
- }, [navigationMainItems]);
204
+ }, [sidebarNavItems]);
209
205
 
210
206
  const limitContentWidth = useMemo(() => {
211
- if (variant.isAnvil2 || !minContentWidth) {
207
+ if (view.isAnvil2 || !minContentWidth) {
212
208
  return undefined;
213
209
  }
214
210
 
215
211
  if (breakpoint.width < minContentWidth) {
216
212
  return minContentWidth;
217
213
  }
218
- }, [variant, minContentWidth, breakpoint.width]);
214
+ }, [view, minContentWidth, breakpoint.width]);
219
215
 
220
216
  const contentStyles = useMemo(() => {
221
- if (variant.isAnvil2) {
222
- return anvil2Styles;
217
+ if (view.isAnvil2) {
218
+ return offsetTopStyles;
223
219
  }
224
220
 
225
- if (variant.isLegacy && limitContentWidth) {
221
+ if (view.isLegacy) {
226
222
  return {
227
- display: 'flex',
228
- flexDirection: 'column',
229
- minHeight: '100vh',
223
+ ...(limitContentWidth
224
+ ? { display: 'flex', flexDirection: 'column', minHeight: '100vh' }
225
+ : {}),
226
+ ...offsetTopStyles,
230
227
  };
231
228
  }
232
- }, [variant, anvil2Styles, limitContentWidth]);
229
+ }, [view, offsetTopStyles, limitContentWidth]);
233
230
 
234
- const layoutClass = variant.isLegacy
231
+ const layoutClass = view.isLegacy
235
232
  ? Styles.layoutLegacy
236
- : variant.isAnvil1
233
+ : view.isAnvil1
237
234
  ? Styles.layoutAnvil1
238
235
  : Styles.layoutAnvil2;
239
236
 
@@ -245,8 +242,11 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
245
242
  className={classNames(
246
243
  Styles.layout,
247
244
  isMobile ? Styles.layoutMobile : Styles.layoutDesktop,
245
+ hasTopBar &&
246
+ (navVariant === 'left' || !top
247
+ ? Styles.layoutTopLight
248
+ : Styles.layoutTopNav),
248
249
  {
249
- [Styles.layoutTop]: hasTopBar,
250
250
  [Styles.layoutNavSlim]: !isMobile && hasSideBar && state?.navCollapsed,
251
251
  [Styles.layoutNavWide]: !isMobile && hasSideBar && !state?.navCollapsed,
252
252
  },
@@ -254,25 +254,46 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
254
254
  )}
255
255
  style={contentStyles}
256
256
  >
257
- {variant.isSequent && <div className={Styles.topPlaceholder} />}
258
- {hasTopBar && (
259
- <LayoutHeader
260
- className={Styles.top}
261
- logo={logo}
262
- profile={isMobile ? undefined : profile}
263
- center={top}
264
- rightText={isMobile ? undefined : extraText}
265
- right={
266
- <Fragment>
267
- {extraLinksTop}
268
- {!isMobile && extraLinks}
269
- </Fragment>
270
- }
271
- isMobile={isMobile}
272
- hasNotifications={hasNotifications || hasMenuNotifications}
273
- onBurgerClick={onBurgerClick}
274
- />
275
- )}
257
+ {view.isSequent && <div className={Styles.topPlaceholder} />}
258
+ {hasTopBar &&
259
+ (navVariant === 'left' ? (
260
+ <LayoutHeader
261
+ className={Styles.top}
262
+ variant="light"
263
+ logo={logo}
264
+ profile={isMobile ? undefined : profile}
265
+ center={top}
266
+ rightText={isMobile ? undefined : extraText}
267
+ right={
268
+ <Fragment>
269
+ {extraLinksTop}
270
+ {!isMobile && extraLinks}
271
+ </Fragment>
272
+ }
273
+ isMobile={isMobile}
274
+ hasNotifications={hasNotifications || hasMenuNotifications}
275
+ onBurgerClick={onBurgerClick}
276
+ />
277
+ ) : (
278
+ <LayoutHeaderDark
279
+ className={Styles.top}
280
+ logo={logo}
281
+ profile={isMobile ? undefined : profile}
282
+ center={top}
283
+ rightText={isMobile ? undefined : extraText}
284
+ right={
285
+ <Fragment>
286
+ {extraLinksTop}
287
+ {!isMobile && extraLinks}
288
+ </Fragment>
289
+ }
290
+ isMobile={isMobile}
291
+ hasNotifications={hasNotifications || hasMenuNotifications}
292
+ onBurgerClick={onBurgerClick}
293
+ navigationMainItems={navigationMainItems}
294
+ navigationOverflowItems={navigationOverflowItems}
295
+ />
296
+ ))}
276
297
 
277
298
  {hasSideBar && (
278
299
  <NotificationsContextProvider>
@@ -286,7 +307,7 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
286
307
  drawerOpened={mobileDrawerOpened}
287
308
  onDrawerOpenChange={setMobileDrawerOpened}
288
309
  top={sideTop}
289
- mainItems={navigationMainItems}
310
+ mainItems={sidebarNavItems}
290
311
  navigationComponent={context.NavigationComponent}
291
312
  bottom={
292
313
  isMobile ? (
@@ -311,21 +332,21 @@ const TitanLayoutComponent: FC<TitanLayoutProps> = ({
311
332
  </NotificationsContextProvider>
312
333
  )}
313
334
 
314
- {variant.isAnvil1 ? (
335
+ {view.isSequent && (
336
+ <TitanLayoutHeaderObserved heightChange={updateIndicatorsHeight}>
337
+ {header}
338
+ </TitanLayoutHeaderObserved>
339
+ )}
340
+ {view.isAnvil1 ? (
315
341
  <LayoutContentAnvil1 header={header} minWidth={limitContentWidth}>
316
- {content}
342
+ {children}
317
343
  </LayoutContentAnvil1>
318
- ) : variant.isLegacy ? (
319
- <LayoutContentLegacy header={header} minWidth={limitContentWidth}>
320
- {content}
344
+ ) : view.isLegacy ? (
345
+ <LayoutContentLegacy minWidth={limitContentWidth}>
346
+ {children}
321
347
  </LayoutContentLegacy>
322
348
  ) : (
323
- <LayoutContentAnvil2
324
- header={header}
325
- onHeaderHeightChange={updateIndicatorsHeight}
326
- >
327
- {content}
328
- </LayoutContentAnvil2>
349
+ children
329
350
  )}
330
351
  </div>
331
352
  </LayoutPlacementContext.Provider>
@@ -375,26 +396,6 @@ const TitanLayoutHeader: FC<{ children: ReactNode }> = ({ children }) => {
375
396
  );
376
397
  };
377
398
 
378
- export interface TitanLayoutContentProps {
379
- children: ReactNode;
380
- }
381
- const TitanLayoutContent: FC<TitanLayoutContentProps> = ({ children }) => children;
382
-
383
- const LayoutContentAnvil2: FC<{
384
- children: ReactNode;
385
- header?: ReactNode;
386
- onHeaderHeightChange?: (height: number) => void;
387
- }> = ({ children, header, onHeaderHeightChange }) => {
388
- return (
389
- <Fragment>
390
- <TitanLayoutHeaderObserved heightChange={onHeaderHeightChange}>
391
- {header}
392
- </TitanLayoutHeaderObserved>
393
- {children}
394
- </Fragment>
395
- );
396
- };
397
-
398
399
  const LayoutContentAnvil1: FC<{
399
400
  children: ReactNode;
400
401
  header?: ReactNode;
@@ -402,7 +403,7 @@ const LayoutContentAnvil1: FC<{
402
403
  }> = ({ children, header, minWidth }) => {
403
404
  const innerContentStyles: CSSProperties = useMemo(
404
405
  () => ({
405
- ...(minWidth ? { minWidth: `${minWidth}px` } : {}),
406
+ ...(minWidth ? { minWidth: `${minWidth}px`, overflowX: 'auto' } : {}),
406
407
  }),
407
408
  [minWidth]
408
409
  );
@@ -411,7 +412,7 @@ const LayoutContentAnvil1: FC<{
411
412
  <Fragment>
412
413
  <TitanLayoutHeader>{header}</TitanLayoutHeader>
413
414
  <div
414
- className={classNames(Styles.content, { 'of-x-auto': !!minWidth })}
415
+ className={classNames(Styles.content, { 'of-x-auto-i': !!minWidth })}
415
416
  data-cy="layout-content"
416
417
  >
417
418
  <div
@@ -427,9 +428,8 @@ const LayoutContentAnvil1: FC<{
427
428
 
428
429
  const LayoutContentLegacy: FC<{
429
430
  children: ReactNode;
430
- header?: ReactNode;
431
431
  minWidth: number | undefined;
432
- }> = ({ children, header, minWidth }) => {
432
+ }> = ({ children, minWidth }) => {
433
433
  const innerContentStyles: CSSProperties = useMemo(
434
434
  () => ({
435
435
  position: 'relative',
@@ -439,23 +439,13 @@ const LayoutContentLegacy: FC<{
439
439
  );
440
440
 
441
441
  return (
442
- <Fragment>
443
- <TitanLayoutHeader>{header}</TitanLayoutHeader>
444
-
445
- {minWidth ? (
446
- <div className="of-x-auto flex-basis-0 flex-grow-1">
447
- <div style={innerContentStyles}>{children}</div>
448
- </div>
449
- ) : (
450
- children
451
- )}
452
- </Fragment>
442
+ <div className={minWidth ? 'of-x-auto flex-basis-0 flex-grow-1' : undefined}>
443
+ <div style={minWidth ? innerContentStyles : undefined}>{children}</div>
444
+ </div>
453
445
  );
454
446
  };
455
447
 
456
448
  export const TitanLayout = Object.assign(TitanLayoutComponent, {
457
- Content: TitanLayoutContent,
458
- Logo: TitanLayoutLogo,
459
449
  Link: TitanLayoutSidebarLink,
460
450
  Trigger: TitanLayoutSidebarTrigger,
461
451
  });
@@ -4,10 +4,13 @@ import { ReactElement } from 'react';
4
4
  export const withTooltip = (
5
5
  element: ReactElement,
6
6
  tooltip: string | undefined,
7
- placement: TooltipProps['placement'] = 'bottom'
7
+ props: {
8
+ placement?: TooltipProps['placement'];
9
+ key?: string;
10
+ }
8
11
  ) =>
9
12
  tooltip ? (
10
- <Tooltip placement={placement}>
13
+ <Tooltip placement="bottom" {...props}>
11
14
  <Tooltip.Content>{tooltip}</Tooltip.Content>
12
15
  <Tooltip.Trigger>{element}</Tooltip.Trigger>
13
16
  </Tooltip>
package/src/index.ts CHANGED
@@ -6,15 +6,14 @@ export * from './components/counter-tag';
6
6
  export * from './components/left-navigation';
7
7
  export * from './components/titan-layout';
8
8
  export * from './components/links';
9
- export * from './utils/navigation';
10
- export {
11
- NavigationComponentContext,
9
+ export type * from './utils/navigation';
10
+ export type {
12
11
  NavLinkComponentPropsStrict,
13
12
  NavLinkComponentProps,
14
- NavigationLocationContext,
15
13
  NavigationLocationContextType,
16
14
  NavigationLocationInfo,
17
15
  NavigationActiveLinkMatcher,
18
16
  } from './utils/navigation-context';
19
- export * from './utils/navigation-legacy';
17
+ export { NavigationComponentContext, NavigationLocationContext } from './utils/navigation-context';
18
+ export type * from './utils/navigation-legacy';
20
19
  export * from './utils/use-breakpoint';
@@ -13,7 +13,7 @@ export const useTitanBreakpoint = (): TitanBreakpoint => {
13
13
  return useMemo(
14
14
  () => ({
15
15
  name: breakpoint?.name ?? 'xl',
16
- isMobile: breakpoint ? breakpoint.innerWidth <= 768 : false,
16
+ isMobile: breakpoint ? breakpoint.innerWidth < 768 : false,
17
17
  width: breakpoint?.innerWidth ?? 0,
18
18
  }),
19
19
  [breakpoint]
@@ -1,13 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { withAnvil, withMemoryRouter } from '../../test/data';
3
- import { HeaderNavigationLink } from '../links';
4
- import { HeaderNavigationStacked } from './header-navigation';
5
- const withHeaderNavigationStacked = (Story) => _jsx(HeaderNavigationStacked, { right: _jsx(Story, {}) });
6
- export default {
7
- title: 'Navigation/Extra/Stacked',
8
- component: HeaderNavigationLink,
9
- decorators: [withHeaderNavigationStacked, withMemoryRouter, withAnvil],
10
- parameters: {},
11
- };
12
- export { ExtraWithTooltip, ExtraLink, ExtraTrigger, ExtraWithLabel, } from './header-navigation-extra.stories';
13
- //# sourceMappingURL=header-navigation-extra-stacked.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"header-navigation-extra-stacked.stories.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-extra-stacked.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,2BAA2B,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,KAAC,uBAAuB,IAAC,KAAK,EAAE,KAAC,KAAK,KAAG,GAAI,CAAC;AAElG,eAAe;IACX,KAAK,EAAE,0BAA0B;IACjC,SAAS,EAAE,oBAAoB;IAC/B,UAAU,EAAE,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,SAAS,CAAC;IACtE,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,OAAO,EACH,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,cAAc,GACjB,MAAM,mCAAmC,CAAC"}
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import SvgHelp from '@servicetitan/anvil2/assets/icons/material/round/help_outline.svg';
3
- import SvgPhone from '@servicetitan/anvil2/assets/icons/material/round/phone.svg';
4
- import SvgSearch from '@servicetitan/anvil2/assets/icons/material/round/search.svg';
5
- import { Button, Popover } from '@servicetitan/design-system';
6
- import { Fragment, useState } from 'react';
7
- import { withAnvil, withMemoryRouter } from '../../test/data';
8
- import { HeaderNavigationLink, HeaderNavigationTrigger } from '../links';
9
- import { HeaderNavigation } from './';
10
- const withHeaderNavigation = (Story) => (_jsx(HeaderNavigation, { rightClassName: "m-r-1", children: _jsx(Story, {}) }));
11
- export default {
12
- title: 'Navigation/Extra/Legacy',
13
- component: HeaderNavigationLink,
14
- decorators: [withHeaderNavigation, withMemoryRouter, withAnvil],
15
- parameters: {},
16
- };
17
- export const ExtraLink = () => (_jsx(HeaderNavigationLink, { id: "search", title: "Search", to: "https://google.com", target: "_blank", iconName: "search", icon: SvgSearch, iconActive: undefined, hint: "Search: for all the questions" }));
18
- export const ExtraTrigger = () => (_jsx(HeaderNavigationTrigger, { id: "dialpad", title: "Dialpad", iconName: "phone", counter: 2, tooltip: "Phones pro", icon: SvgPhone, iconActive: undefined }));
19
- export const ExtraWithTooltip = () => (_jsxs(Fragment, { children: [_jsx(HeaderNavigationLink, { id: "search", title: "Search", to: "https://google.com", target: "_blank", iconName: "search", icon: SvgSearch, iconActive: undefined, tooltip: "Search: for all the questions", hint: "Google" }), _jsx(HeaderNavigationTrigger, { id: "dialpad", title: "Dialpad", iconName: "phone", hint: "Dialpad", counter: 2, icon: SvgPhone, iconActive: undefined }), _jsx(HelpCenterButton, {})] }));
20
- const HelpCenterButton = () => {
21
- const [open, setOpen] = useState(false);
22
- return (_jsx(Popover, { onClickOutside: () => setOpen(false), open: open, direction: "bl", width: "xs", trigger: _jsx(Button, { className: "c-inherit", iconName: "help_outline", fill: "subtle", onClick: () => setOpen(true) }), portal: true, children: "help center" }));
23
- };
24
- const HelpTrigger = () => {
25
- const [active, setActive] = useState(true);
26
- return (_jsx(HeaderNavigationTrigger, { id: "help", title: "Help", iconName: "help_outline", hint: "Help", icon: SvgHelp, iconActive: undefined, label: "Live Chat", onClick: () => setActive(!active), isActive: active }));
27
- };
28
- export const ExtraWithLabel = () => (_jsxs(Fragment, { children: [_jsx(HeaderNavigationLink, { id: "search", title: "Search", to: "https://google.com", target: "_blank", iconName: "search", icon: SvgSearch, iconActive: undefined, tooltip: "Search: for all the questions", hint: "Google" }), _jsx(HelpTrigger, {}), _jsx(HeaderNavigationTrigger, { id: "dialpad", title: "Dialpad", iconName: "phone", hint: "Dialpad", tag: { value: 2 }, icon: SvgPhone, iconActive: undefined })] }));
29
- //# sourceMappingURL=header-navigation-extra.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"header-navigation-extra.stories.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-extra.stories.tsx"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Input, Stack } from '@servicetitan/design-system';
3
- import { Fragment } from 'react';
4
- import { SearchIcon, items, withMemoryRouter } from '../../test/data';
5
- import { LogoCompanyTitle } from '../logo/logo-company-title';
6
- import { LogoTitan, LogoTitanTitle } from '../logo/logo-titan-text';
7
- import { ProfileDropdown } from '../profile-dropdown/profile-dropdown';
8
- import { HeaderNavigationLink, HeaderNavigationTrigger } from './header-navigation-links';
9
- import * as Styles from './header-navigation-stories.module.less';
10
- import { HeaderNavigationStacked } from './';
11
- export default {
12
- title: 'Navigation/HeaderNavigationStacked',
13
- component: HeaderNavigationStacked,
14
- parameters: {},
15
- decorators: [withMemoryRouter],
16
- };
17
- const SvgIcon = undefined;
18
- export const DefaultNavigation = () => (_jsx(HeaderNavigationStacked, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff", size: "150" }), leftClassName: "d-f align-items-center", items: [
19
- items.dashboard,
20
- items.calendar,
21
- items.calls,
22
- items.accounting,
23
- items.dispatch,
24
- items.fleet,
25
- ] }));
26
- export const WithLogoTextAndOverflow = () => (_jsx(HeaderNavigationStacked, { left: _jsxs(Stack, { alignItems: "center", children: [_jsx(LogoTitan, { mantleFill: "#2270EE", size: 44 }), _jsx(LogoTitanTitle, { className: "c-white m-l-1", children: "Commercial" })] }), items: [
27
- items.dashboard,
28
- items.calendar,
29
- items.calls,
30
- items.accounting,
31
- items.dispatch,
32
- items.purchasing,
33
- items.fleet,
34
- ], itemsOverflow: [items.calls, items.accounting, items.purchasing, items.dispatch] }));
35
- const TimeZoneOffset = () => (_jsx("div", { className: "fs-2 ff-default p-r-2", children: _jsx("span", { children: "EST (-9 hrs)" }) }));
36
- export const WithAllMonolithData = () => (_jsx(HeaderNavigationStacked, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff", size: "150" }), leftClassName: "d-f align-items-center", items: [
37
- items.dashboard,
38
- items.calendar,
39
- items.calls,
40
- items.accounting,
41
- items.dispatch,
42
- items.fleet,
43
- items.followUps,
44
- items.inventory,
45
- items.marketing,
46
- items.priceBook,
47
- items.pointOfSale,
48
- items.reports,
49
- ], right: _jsxs(Fragment, { children: [_jsx(TimeZoneOffset, {}), _jsx(HeaderNavigationLink, { id: "search", title: "Search", to: "https://google.com", target: "_blank", iconComponent: SearchIcon, hint: "Search: for all the questions", icon: SvgIcon, iconActive: SvgIcon }), _jsx(HeaderNavigationTrigger, { id: "dialpad", title: "Dialpad", iconName: "phone", tag: { value: 2 }, icon: SvgIcon, iconActive: SvgIcon }), _jsx(HeaderNavigationTrigger, { id: "titanAdvisor", title: "Titan Advisor", iconName: "rocket", iconClassName: Styles.rocketIcon, icon: SvgIcon, iconActive: SvgIcon }), _jsx(HeaderNavigationLink, { id: "settings", title: "Settings", to: "https://google.com", target: "_blank", iconName: "settings", "aria-label": "search", hint: "Settings", isActive: true, icon: SvgIcon, iconActive: SvgIcon }), _jsxs(ProfileDropdown, { children: [_jsx(ProfileDropdown.Link, { id: "tasks", to: "https://googgle.com", counter: 10, children: "Task Management" }), _jsx(ProfileDropdown.Divider, {}), _jsxs(ProfileDropdown.Link, { id: "sign-out", to: "https://googgle.com", text: "Sign Out", children: ["Sign Out", ' ', _jsx("span", { className: "c-neutral-100 m-l-half t-truncate", children: "James Bond" })] }), _jsx(ProfileDropdown.Section, { id: "userid", className: "c-neutral-100 fs-1", children: "User ID: 007" })] })] }), center: _jsx(Input, { placeholder: "Search smth", size: "xsmall", className: "w-100" }), centerClassName: "d-f align-items-center" }));
50
- //# sourceMappingURL=header-navigation-stacked.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"header-navigation-stacked.stories.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-stacked.stories.tsx"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Popover } from '@servicetitan/design-system';
3
- import { useState } from 'react';
4
- import { SearchIcon, items, withMemoryRouter } from '../../test/data';
5
- import { LogoCompanyTitle } from '../logo/logo-company-title';
6
- import { LogoTitanText } from '../logo/logo-titan-text';
7
- import { ProfileDropdown } from '../profile-dropdown/profile-dropdown';
8
- import { HeaderNavigationLink, HeaderNavigationTrigger } from './header-navigation-links';
9
- import * as Styles from './header-navigation-stories.module.less';
10
- import { HeaderNavigation } from './';
11
- export default {
12
- title: 'Navigation/HeaderNavigation',
13
- component: HeaderNavigation,
14
- parameters: {},
15
- decorators: [withMemoryRouter],
16
- };
17
- const SvgIcon = undefined;
18
- export const DefaultNavigation = () => (_jsx(HeaderNavigation, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff" }), items: [
19
- items.dashboard,
20
- items.calendar,
21
- items.calls,
22
- items.accounting,
23
- items.dispatch,
24
- items.fleet,
25
- ] }));
26
- export const WithLogoTextAndOverflow = () => (_jsx(HeaderNavigation, { left: _jsx(LogoTitanText, { mantleFill: "#2270EE", title: "Commercial", description: "tenant tenant tenant tenant tenant" }), items: [
27
- items.dashboard,
28
- items.calendar,
29
- items.calls,
30
- items.accounting,
31
- items.dispatch,
32
- items.purchasing,
33
- items.fleet,
34
- ], itemsOverflow: [items.calls, items.accounting, items.purchasing, items.dispatch] }));
35
- const HelpCenterButton = () => {
36
- const [open, setOpen] = useState(false);
37
- return (_jsx(Popover, { onClickOutside: () => setOpen(false), open: open, direction: "bl", width: "xs", trigger: _jsx(HeaderNavigationTrigger, { id: "help", title: "Help", iconName: "help_outline", onClick: () => setOpen(true), icon: SvgIcon, iconActive: SvgIcon }), portal: true, children: "help center" }));
38
- };
39
- const TimeZoneOffset = () => (_jsx("div", { className: "fs-2 ff-default p-r-2", children: _jsx("span", { children: "EST (-9 hrs)" }) }));
40
- export const WithAllMonolithData = () => (_jsxs(HeaderNavigation, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff" }), items: [
41
- items.dashboard,
42
- items.calendar,
43
- items.calls,
44
- items.accounting,
45
- items.dispatch,
46
- items.fleet,
47
- items.followUps,
48
- items.inventory,
49
- items.marketing,
50
- items.priceBook,
51
- items.pointOfSale,
52
- items.reports,
53
- ], children: [_jsx(TimeZoneOffset, {}), _jsx(HeaderNavigationTrigger, { id: "dialpad", title: "Dialpad", iconName: "phone", counter: 2, icon: SvgIcon, iconActive: SvgIcon }), _jsx(HeaderNavigationLink, { id: "search", title: "Search", to: "https://google.com", target: "_blank", iconComponent: SearchIcon, hint: "Search: for all the questions", icon: SvgIcon, iconActive: SvgIcon }), _jsx(HelpCenterButton, {}), _jsx(HeaderNavigationTrigger, { id: "titanAdvisor", title: "Titan Advisor", iconName: "rocket", iconClassName: Styles.rocketIcon, icon: SvgIcon, iconActive: SvgIcon }), _jsx(HeaderNavigationLink, { id: "settings", title: "Settings", to: "https://google.com", target: "_blank", iconName: "settings", "aria-label": "search", hint: "Settings", isActive: true, icon: SvgIcon, iconActive: SvgIcon }), _jsxs(ProfileDropdown, { children: [_jsx(ProfileDropdown.Link, { id: "tasks", to: "https://googgle.com", counter: 10, children: "Task Management" }), _jsx(ProfileDropdown.Divider, {}), _jsxs(ProfileDropdown.Link, { id: "sign-out", to: "https://googgle.com", text: "Sign Out", children: ["Sign Out ", _jsx("span", { className: "c-neutral-100 m-l-half t-truncate", children: "James Bond" })] }), _jsx(ProfileDropdown.Section, { id: "userid", className: "c-neutral-100 fs-1", children: "User ID: 007" })] })] }));
54
- //# sourceMappingURL=header-navigation.stories.js.map