@lendi/navbar 7.15.13 → 7.16.0-alpha.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 (92) hide show
  1. package/dist/navbar.cjs.d.ts +11 -1
  2. package/dist/navbar.cjs.js +15 -6
  3. package/dist/navbar.esm.js +15 -3838
  4. package/package.json +3 -3
  5. package/dist/declarations/src/CustomerCommPanel/SidePanel/ChatLink/ChatIcon/index.d.ts +0 -4
  6. package/dist/declarations/src/CustomerCommPanel/SidePanel/ChatLink/ChatIcon/style.d.ts +0 -2
  7. package/dist/declarations/src/CustomerCommPanel/SidePanel/ChatLink/index.d.ts +0 -8
  8. package/dist/declarations/src/CustomerCommPanel/SidePanel/ChatLink/style.d.ts +0 -10
  9. package/dist/declarations/src/CustomerCommPanel/SidePanel/FullViewChatHeader/ChatHeaderTeamMemberAvatar/index.d.ts +0 -6
  10. package/dist/declarations/src/CustomerCommPanel/SidePanel/FullViewChatHeader/ChatHeaderTeamMemberAvatar/style.d.ts +0 -10
  11. package/dist/declarations/src/CustomerCommPanel/SidePanel/FullViewChatHeader/index.d.ts +0 -7
  12. package/dist/declarations/src/CustomerCommPanel/SidePanel/FullViewChatHeader/style.d.ts +0 -4
  13. package/dist/declarations/src/CustomerCommPanel/SidePanel/PanelLinks/index.d.ts +0 -7
  14. package/dist/declarations/src/CustomerCommPanel/SidePanel/TeamMemberInfo/index.d.ts +0 -7
  15. package/dist/declarations/src/CustomerCommPanel/SidePanel/TeamMemberInfo/style.d.ts +0 -16
  16. package/dist/declarations/src/CustomerCommPanel/SidePanel/index.d.ts +0 -7
  17. package/dist/declarations/src/CustomerCommPanel/SidePanel/interface.d.ts +0 -3
  18. package/dist/declarations/src/CustomerCommPanel/SidePanel/style.d.ts +0 -5
  19. package/dist/declarations/src/CustomerCommPanel/WithChatView/index.d.ts +0 -9
  20. package/dist/declarations/src/CustomerCommPanel/WithChatView/style.d.ts +0 -1
  21. package/dist/declarations/src/CustomerCommPanel/index.d.ts +0 -2
  22. package/dist/declarations/src/CustomerCommPanel/style.d.ts +0 -1
  23. package/dist/declarations/src/CustomerCommPanel/types.d.ts +0 -8
  24. package/dist/declarations/src/GuestNavbar/index.d.ts +0 -2
  25. package/dist/declarations/src/Header/Dropdown.d.ts +0 -10
  26. package/dist/declarations/src/Header/Header.d.ts +0 -14
  27. package/dist/declarations/src/Header/HeaderBase.d.ts +0 -9
  28. package/dist/declarations/src/Header/MenuLink.d.ts +0 -26
  29. package/dist/declarations/src/Header/Nav.d.ts +0 -35
  30. package/dist/declarations/src/Header/NavButtons.d.ts +0 -15
  31. package/dist/declarations/src/Header/NavDropdown.d.ts +0 -10
  32. package/dist/declarations/src/Header/PrimaryCTA.d.ts +0 -6
  33. package/dist/declarations/src/Header/SlideoutMenu.d.ts +0 -29
  34. package/dist/declarations/src/Header/aussie/AccountMenu.d.ts +0 -16
  35. package/dist/declarations/src/Header/aussie/ApplyNow.d.ts +0 -10
  36. package/dist/declarations/src/Header/aussie/CtaNav.d.ts +0 -2
  37. package/dist/declarations/src/Header/aussie/HamburgerMenu.d.ts +0 -7
  38. package/dist/declarations/src/Header/aussie/TalkToExpert.d.ts +0 -6
  39. package/dist/declarations/src/Header/index.d.ts +0 -1
  40. package/dist/declarations/src/Header/shared.styles.d.ts +0 -21
  41. package/dist/declarations/src/MultiNavbar/components/HamBurgerMenu/index.d.ts +0 -7
  42. package/dist/declarations/src/MultiNavbar/components/LeftSidabar/Content/index.d.ts +0 -2
  43. package/dist/declarations/src/MultiNavbar/components/LeftSidabar/Content/index.style.d.ts +0 -21
  44. package/dist/declarations/src/MultiNavbar/components/LeftSidabar/FooterCTA/index.d.ts +0 -9
  45. package/dist/declarations/src/MultiNavbar/components/LeftSidabar/index.d.ts +0 -14
  46. package/dist/declarations/src/MultiNavbar/components/MultiOptions/index.d.ts +0 -7
  47. package/dist/declarations/src/MultiNavbar/components/MultiOptions/index.style.d.ts +0 -22
  48. package/dist/declarations/src/MultiNavbar/index.d.ts +0 -3
  49. package/dist/declarations/src/MultiNavbar/menuData.d.ts +0 -12
  50. package/dist/declarations/src/SimpleNavbar/components/CTA/index.d.ts +0 -6
  51. package/dist/declarations/src/SimpleNavbar/components/CTA/index.style.d.ts +0 -2
  52. package/dist/declarations/src/SimpleNavbar/components/DesktopAction/index.d.ts +0 -4
  53. package/dist/declarations/src/SimpleNavbar/components/MobileAction/index.d.ts +0 -4
  54. package/dist/declarations/src/SimpleNavbar/index.d.ts +0 -3
  55. package/dist/declarations/src/hooks/useDisableChat.d.ts +0 -1
  56. package/dist/declarations/src/index.d.ts +0 -6
  57. package/dist/declarations/src/shared/CommPanelProvider/index.d.ts +0 -18
  58. package/dist/declarations/src/shared/ErrorProvider/context.d.ts +0 -6
  59. package/dist/declarations/src/shared/ErrorProvider/provider.d.ts +0 -3
  60. package/dist/declarations/src/shared/RestrictionProvider/index.d.ts +0 -11
  61. package/dist/declarations/src/shared/SlideoutMenuBase/SlideoutMenuBase.d.ts +0 -16
  62. package/dist/declarations/src/shared/components/CTA/DesktopActions/index.d.ts +0 -3
  63. package/dist/declarations/src/shared/components/CTA/DesktopActions/style.d.ts +0 -1
  64. package/dist/declarations/src/shared/components/CTA/LogoutComponent/DropdownMenu/context.d.ts +0 -4
  65. package/dist/declarations/src/shared/components/CTA/LogoutComponent/DropdownMenu/index.d.ts +0 -1
  66. package/dist/declarations/src/shared/components/CTA/LogoutComponent/DropdownMenu/provider.d.ts +0 -3
  67. package/dist/declarations/src/shared/components/CTA/LogoutComponent/DropdownMenu/state.d.ts +0 -6
  68. package/dist/declarations/src/shared/components/CTA/LogoutComponent/DropdownMenu/style.d.ts +0 -5
  69. package/dist/declarations/src/shared/components/CTA/LogoutComponent/index.d.ts +0 -1
  70. package/dist/declarations/src/shared/components/CTA/LogoutComponent/style.d.ts +0 -1
  71. package/dist/declarations/src/shared/components/CTA/MobileActions/index.d.ts +0 -3
  72. package/dist/declarations/src/shared/components/CTA/MobileActions/style.d.ts +0 -1
  73. package/dist/declarations/src/shared/components/CTA/index.d.ts +0 -15
  74. package/dist/declarations/src/shared/components/CTA/style.d.ts +0 -7
  75. package/dist/declarations/src/shared/components/Logo/index.d.ts +0 -7
  76. package/dist/declarations/src/shared/components/Logo/style.d.ts +0 -10
  77. package/dist/declarations/src/shared/constants/index.d.ts +0 -20
  78. package/dist/declarations/src/shared/hooks/useApplication/api/index.d.ts +0 -7
  79. package/dist/declarations/src/shared/hooks/useApplication/index.d.ts +0 -4
  80. package/dist/declarations/src/shared/hooks/useApplication/types.d.ts +0 -5
  81. package/dist/declarations/src/shared/hooks/useDomain.d.ts +0 -3
  82. package/dist/declarations/src/shared/hooks/withErrorProvider.d.ts +0 -3
  83. package/dist/declarations/src/shared/hooks/withRestrictionProvider.d.ts +0 -2
  84. package/dist/declarations/src/shared/styles.d.ts +0 -24
  85. package/dist/declarations/src/shared/types.d.ts +0 -86
  86. package/dist/declarations/src/shared/utils/getEnvFromHostname/index.d.ts +0 -2
  87. package/dist/declarations/src/shared/utils/getURLWithReturn/index.d.ts +0 -2
  88. package/dist/declarations/src/types.d.ts +0 -37
  89. package/dist/declarations/src/utils/Analytics/index.d.ts +0 -5
  90. package/dist/declarations/src/utils/theming.d.ts +0 -1
  91. package/dist/navbar.cjs.dev.js +0 -3882
  92. package/dist/navbar.cjs.prod.js +0 -2639
@@ -1,3838 +1,15 @@
1
- import React, { useState, useEffect, useRef, forwardRef } from 'react';
2
- import NavbarBase, { useNavbarBaseContext } from '@lendi-ui/navbar-base';
3
- import { trackEvent, EventCategory, ButtonType, CustomerType } from '@lendi/analytics';
4
- import { gte, between, useBreakpoint, map } from '@lendi-ui/breakpoint';
5
- import Logo from '@lendi-ui/logo';
6
- import { mb, ml, pl, pr, mr, p, px, py, mx, mt, m, pb, pt, my } from '@lendi-ui/spacing';
7
- import { select, useTheme } from '@lendi/ui/Theme';
8
- import styled, { css, keyframes, createGlobalStyle } from 'styled-components';
9
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
- import { Button, IconButton } from '@lendi-ui/button';
11
- import UnreadMessage from '@lendi-ui/icon/UnreadMessage';
12
- import { display, normalise, deriveSize } from '@lendi-ui/utils';
13
- import MoreVert from '@lendi-ui/icon/MoreVert';
14
- import { getRadius, getFocusRing } from '@lendi-ui/commons/borders';
15
- import getColour, { getColour as getColour$1 } from '@lendi-ui/commons/colours';
16
- import { depth } from '@lendi-ui/depth';
17
- import Launch from '@lendi-ui/icon/Launch';
18
- import { Body, Link, Heading } from '@lendi-ui/typography';
19
- import { getBrandFromHostname, Brand as Brand$1, getURLs, getAPIBaseURL } from '@lendi/lala-utils';
20
- import { useFlags, withLendiLDProvider } from '@lendi/launchdarkly';
21
- import { useSession, Brand, Type, Environment, Status } from '@lendi/lala-react';
22
- import { useBootstrappedChatState, Chat as Chat$1, withCustomerChatProvider, ChatDataExposureContext } from '@lendi/chat';
23
- export { CustomerChatBootstrapperProvider as CommPanelProvider, useBootstrappedChatState as useCommPanel } from '@lendi/chat';
24
- import Close from '@lendi-ui/icon/Close';
25
- import { color, bg, fg } from '@lendi-ui/color';
26
- import Face from '@lendi-ui/icon/Face';
27
- import getTypography from '@lendi-ui/commons/typography';
28
- import { getThemeName, pxToRem, filterGlobalProps, srOnly } from '@lendi-ui/commons/utils';
29
- import Phone from '@lendi-ui/icon/Phone';
30
- import Calendar from '@lendi-ui/icon/Calendar';
31
- import { LendiGroupLeads } from '@lendi/lendigroup-leads-library';
32
- import Chat from '@lendi-ui/icon/Chat';
33
- import KeyboardArrowDown from '@lendi-ui/icon/KeyboardArrowDown';
34
- import KeyboardArrowRight from '@lendi-ui/icon/KeyboardArrowRight';
35
- import KeyboardArrowLeft from '@lendi-ui/icon/KeyboardArrowLeft';
36
- import FocusLock from 'react-focus-lock';
37
- import Menu from '@lendi-ui/icon/Menu';
38
- import Sidebar from '@lendi-ui/sidebar';
39
- import ArrowDropDown from '@lendi-ui/icon/ArrowDropDown';
40
- import ExitToApp from '@lendi-ui/icon/ExitToApp';
41
- import ExpandMore from '@lendi-ui/icon/ExpandMore';
42
- import { grid, unit } from '@lendi-ui/grid';
43
- import ChevronDown from '@lendi-ui/icon/ChevronDown';
44
- import ChevronUp from '@lendi-ui/icon/ChevronUp';
45
- import { Wrapper, Spacer } from '@lendi/ui/Layout';
46
- import ArrowForward from '@lendi-ui/icon/ArrowForward';
47
- import { Text } from '@lendi/ui/Typography';
48
- import { Button as Button$1, AnchorButton } from '@lendi/ui/Button';
49
- import axios from 'axios';
50
-
51
- function _toPrimitive(input, hint) {
52
- if (typeof input !== "object" || input === null) return input;
53
- var prim = input[Symbol.toPrimitive];
54
- if (prim !== undefined) {
55
- var res = prim.call(input, hint || "default");
56
- if (typeof res !== "object") return res;
57
- throw new TypeError("@@toPrimitive must return a primitive value.");
58
- }
59
- return (hint === "string" ? String : Number)(input);
60
- }
61
-
62
- function _toPropertyKey(arg) {
63
- var key = _toPrimitive(arg, "string");
64
- return typeof key === "symbol" ? key : String(key);
65
- }
66
-
67
- function _defineProperty(obj, key, value) {
68
- key = _toPropertyKey(key);
69
- if (key in obj) {
70
- Object.defineProperty(obj, key, {
71
- value: value,
72
- enumerable: true,
73
- configurable: true,
74
- writable: true
75
- });
76
- } else {
77
- obj[key] = value;
78
- }
79
- return obj;
80
- }
81
-
82
- function ownKeys(object, enumerableOnly) {
83
- var keys = Object.keys(object);
84
- if (Object.getOwnPropertySymbols) {
85
- var symbols = Object.getOwnPropertySymbols(object);
86
- enumerableOnly && (symbols = symbols.filter(function (sym) {
87
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
88
- })), keys.push.apply(keys, symbols);
89
- }
90
- return keys;
91
- }
92
- function _objectSpread2(target) {
93
- for (var i = 1; i < arguments.length; i++) {
94
- var source = null != arguments[i] ? arguments[i] : {};
95
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
96
- _defineProperty(target, key, source[key]);
97
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
98
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
99
- });
100
- }
101
- return target;
102
- }
103
-
104
- var analytics = navbarAnalyticsEvent => {
105
- if (window && window.analytics) {
106
- trackEvent(_objectSpread2({}, navbarAnalyticsEvent));
107
- } else {
108
- if (process.env.NODE_ENV === 'development') {
109
- // gives us the indication of what events are being fired
110
- // eslint-disable-next-line no-console
111
- console.log('event', _objectSpread2({}, navbarAnalyticsEvent));
112
- } else {
113
- // eslint-disable-next-line no-console
114
- console.error('Segment is not loaded');
115
- }
116
- }
117
- };
118
-
119
- function _taggedTemplateLiteral(strings, raw) {
120
- if (!raw) {
121
- raw = strings.slice(0);
122
- }
123
- return Object.freeze(Object.defineProperties(strings, {
124
- raw: {
125
- value: Object.freeze(raw)
126
- }
127
- }));
128
- }
129
-
130
- var _templateObject$f, _templateObject2$5, _templateObject3$2, _templateObject4$1, _templateObject5$1;
131
- var StyledHeaderLogo = styled(Logo).withConfig({
132
- displayName: "style__StyledHeaderLogo",
133
- componentId: "lui__sc-17ip4hk-0"
134
- })(["", ";width:auto;height:28px;color:", ";", ";"], _ref => {
135
- var {
136
- isHref
137
- } = _ref;
138
- return isHref ? css(["cursor:pointer;"]) : css(["cursor:auto;"]);
139
- }, _ref2 => {
140
- var {
141
- variant
142
- } = _ref2;
143
- return variant === 'dark' ? 'secondary.900' : 'shade.0';
144
- }, _ref3 => {
145
- var {
146
- theme
147
- } = _ref3;
148
- return select('logo.logoName')({
149
- theme
150
- }) === 'LendiLogo' ? css(["", ";", ";"], gte('tablet')(_templateObject$f || (_templateObject$f = _taggedTemplateLiteral(["\n width: auto;\n height: 28px;\n "]))), gte('desktop')(_templateObject2$5 || (_templateObject2$5 = _taggedTemplateLiteral(["\n width: auto;\n height: 36px;\n "])))) : css(["", ";", ";"], gte('tablet')(_templateObject3$2 || (_templateObject3$2 = _taggedTemplateLiteral(["\n width: auto;\n height: 28px;\n "]))), gte('desktop')(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteral(["\n width: auto;\n height: 36px;\n "]))));
151
- });
152
- var LogoLink$1 = styled.a.withConfig({
153
- displayName: "style__LogoLink",
154
- componentId: "lui__sc-17ip4hk-1"
155
- })([""]);
156
- var LogoWrapper = styled.div.withConfig({
157
- displayName: "style__LogoWrapper",
158
- componentId: "lui__sc-17ip4hk-2"
159
- })(["", ";", ";", ";"], mb('xxxs'), _ref4 => {
160
- var {
161
- hasHamburgerMenu
162
- } = _ref4;
163
- return hasHamburgerMenu ? css(["", ""], ml('xs')) : css(["", ""], ml('nil'));
164
- }, gte('desktop')(_templateObject5$1 || (_templateObject5$1 = _taggedTemplateLiteral(["\n ", "\n margin-bottom: 5px;\n "])), ml('nil')));
165
-
166
- var LogoComponent = _ref => {
167
- var {
168
- homeURL,
169
- params,
170
- hasHamburgerMenu = true
171
- } = _ref;
172
- var {
173
- isTransparent
174
- } = useNavbarBaseContext();
175
- var variant = isTransparent ? 'light' : 'dark';
176
- return /*#__PURE__*/jsx(LogoWrapper, {
177
- hasHamburgerMenu: hasHamburgerMenu,
178
- children: homeURL ? /*#__PURE__*/jsx(LogoLink$1, {
179
- href: "".concat(homeURL).concat(params),
180
- "aria-label": "Logo",
181
- onClick: () => {
182
- var event = {
183
- event_name: 'Link Clicked',
184
- category: EventCategory.NAVBAR,
185
- text: 'Logo',
186
- linkType: 'Logo'
187
- };
188
- analytics(event);
189
- },
190
- children: /*#__PURE__*/jsx(StyledHeaderLogo, {
191
- variant: variant,
192
- isHref: true
193
- })
194
- }) : /*#__PURE__*/jsx(LogoLink$1, {
195
- children: /*#__PURE__*/jsx(StyledHeaderLogo, {
196
- variant: variant,
197
- "aria-label": "Logo",
198
- isHref: false
199
- })
200
- })
201
- });
202
- };
203
- var LogoComponent$1 = LogoComponent;
204
-
205
- var _templateObject$e;
206
- var navTokens = {
207
- size: {
208
- height: {
209
- navbar: {
210
- mobile: {
211
- value: '3.5rem'
212
- },
213
- desktop: {
214
- value: '5.5rem'
215
- }
216
- }
217
- }
218
- }
219
- };
220
- var NavbarWrapper = styled(NavbarBase).withConfig({
221
- displayName: "styles__NavbarWrapper",
222
- componentId: "lui__sc-ej7i4l-0"
223
- })(["", ";", " height:", ";", ";"], pl({
224
- mobile: 'sm',
225
- tablet: 'sm',
226
- desktop: 'lg'
227
- }), _ref => {
228
- var {
229
- isAuthenticated
230
- } = _ref;
231
- return isAuthenticated ? css(["", ";"], pr('nil')) : css(["", ";"], pr({
232
- mobile: 'sm',
233
- tablet: 'sm',
234
- desktop: 'lg'
235
- }));
236
- }, navTokens.size.height.navbar.mobile.value, gte('desktop')(_templateObject$e || (_templateObject$e = _taggedTemplateLiteral(["\n height: ", "\n "])), navTokens.size.height.navbar.desktop.value));
237
- var Container = styled.div.withConfig({
238
- displayName: "styles__Container",
239
- componentId: "lui__sc-ej7i4l-1"
240
- })(["display:flex;align-items:center;"]);
241
- var MenuLogoWrapper = styled.div.withConfig({
242
- displayName: "styles__MenuLogoWrapper",
243
- componentId: "lui__sc-ej7i4l-2"
244
- })(["display:flex;align-items:center;"]);
245
- var NavbarLeftWrapper = styled.div.withConfig({
246
- displayName: "styles__NavbarLeftWrapper",
247
- componentId: "lui__sc-ej7i4l-3"
248
- })(["flex:1 0 auto;"]);
249
- var NavbarRightWrapper = styled.div.withConfig({
250
- displayName: "styles__NavbarRightWrapper",
251
- componentId: "lui__sc-ej7i4l-4"
252
- })([""]);
253
-
254
- var _templateObject$d, _templateObject2$4;
255
- var TalkExpertAction$1 = styled(Button).withConfig({
256
- displayName: "style__TalkExpertAction",
257
- componentId: "lui__sc-9anjvz-0"
258
- })(["width:100%;", " ", ";min-width:180px;", ""], mr('sm'), between('mobile', 'desktop')(_templateObject$d || (_templateObject$d = _taggedTemplateLiteral(["\n border: none;\n "]))), _ref => {
259
- var {
260
- bigLabelAccomodate
261
- } = _ref;
262
- return bigLabelAccomodate && css(["min-width:202px;"]);
263
- });
264
- var TalkExpertActionMobile = styled(Button).withConfig({
265
- displayName: "style__TalkExpertActionMobile",
266
- componentId: "lui__sc-9anjvz-1"
267
- })(["", " ", ";min-width:102px;padding:0;line-height:1.33;", ""], mr('sm'), between('mobile', 'desktop')(_templateObject2$4 || (_templateObject2$4 = _taggedTemplateLiteral(["\n border: none;\n "]))), _ref2 => {
268
- var {
269
- isContinue
270
- } = _ref2;
271
- return isContinue && css(["min-width:90px;"]);
272
- });
273
- var SecondaryAction = styled(Button).withConfig({
274
- displayName: "style__SecondaryAction",
275
- componentId: "lui__sc-9anjvz-2"
276
- })(["min-width:180px;", " word-wrap:break-word;"], _ref3 => {
277
- var {
278
- bigLabelAccomodate
279
- } = _ref3;
280
- return bigLabelAccomodate && css(["min-width:202px;"]);
281
- });
282
- var SecondaryActionMobile = styled(Button).withConfig({
283
- displayName: "style__SecondaryActionMobile",
284
- componentId: "lui__sc-9anjvz-3"
285
- })(["width:90px;padding:0;"]);
286
- styled.div.withConfig({
287
- displayName: "style__DesktopLogoutWrapper",
288
- componentId: "lui__sc-9anjvz-4"
289
- })(["", ""], display({
290
- mobile: 'none',
291
- desktop: 'block'
292
- }));
293
- var UnreadMessageWrapper = styled(UnreadMessage).withConfig({
294
- displayName: "style__UnreadMessageWrapper",
295
- componentId: "lui__sc-9anjvz-5"
296
- })(["margin-top:-0.4em;margin-right:0.5em;margin-left:-0.5em;"]);
297
-
298
- var BOOK_AN_APPOINTMENT = 'BOOK AN APPOINTMENT';
299
- var UNREAD_MESSAGE = 'YOU HAVE AN UNREAD MESSAGE';
300
- var UNREAD_MESSAGE_MOBILE = 'UNREAD MESSAGE';
301
- var CONTACT_US = 'CONTACT US';
302
- var LABEL_TALK_TO_EXPERT = 'TALK TO AN EXPERT';
303
- var LABEL_SIGN_IN = 'SIGN IN';
304
- var LABEL_CONTINUE = 'CONTINUE';
305
- var LABEL_APPLICATIONS = 'Applications';
306
- var LABEL_DASHBOARD = 'Dashboard';
307
- var LABEL_PROPERTY_REPORT = 'Property reports';
308
- var LABEL_LOG_OUT = 'Sign out';
309
- var LABEL_MORE_OPTIONS = 'More options';
310
- var DASHBOARD_V2_PATH = '/v2/dashboard';
311
- var PATH_LENDI = '';
312
- var PATH_DOMAIN = '/loanfinder';
313
- var ROUTE_SIGN_IN = '/sign-in';
314
- var ROUTE_BOOK_APPOINTMENT = '/book-appointment/';
315
- var ROUTE_APPLICATIONS = '/dashboard/applications';
316
- var ROUTE_PROPERTY_REPORT = '/dashboard/my-property-report';
317
- var ROUTE_NEW_PROPERTY_REPORT = '/property-report/my-properties';
318
-
319
- var _templateObject$c;
320
- var TalkExpertAction = styled(Button).withConfig({
321
- displayName: "indexstyle__TalkExpertAction",
322
- componentId: "lui__sc-altm9z-0"
323
- })(["", ";", " min-width:202px;", ";", ""], mr('sm'), _ref => {
324
- var {
325
- dashboardVariant
326
- } = _ref;
327
- return dashboardVariant && css(["", ""], mr('nil'));
328
- }, between('mobile', 'desktop')(_templateObject$c || (_templateObject$c = _taggedTemplateLiteral(["\n min-width: 90px;\n border: none;\n ", "\n "])), p('nil')), _ref2 => {
329
- var {
330
- continueExist
331
- } = _ref2;
332
- return continueExist && css(["min-width:180px;"]);
333
- });
334
- var ContinueAction = styled(Button).withConfig({
335
- displayName: "indexstyle__ContinueAction",
336
- componentId: "lui__sc-altm9z-1"
337
- })(["width:90px;padding:0;"]);
338
-
339
- var _templateObject$b;
340
- var LogoutWrapper = styled.div.withConfig({
341
- displayName: "style__LogoutWrapper",
342
- componentId: "lui__sc-t6my6e-0"
343
- })(["position:absolute;right:5px;top:56px;", ";display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:", ";border-radius:", ";", ""], gte('desktop')(_templateObject$b || (_templateObject$b = _taggedTemplateLiteral(["top: 70px;"]))), _ref => {
344
- var {
345
- theme
346
- } = _ref;
347
- return theme.color.text.inverse;
348
- }, () => getRadius(), depth(2));
349
- var MenuItem$1 = css(["", " ", ""], px('sm'), py('sm'));
350
- var MyAccountTitle = styled(Body).withConfig({
351
- displayName: "style__MyAccountTitle",
352
- componentId: "lui__sc-t6my6e-1"
353
- })(["", ";font-weight:bold;width:100%;box-sizing:border-box;border-bottom:1px solid ", ";"], MenuItem$1, () => getColour('shade', 100));
354
- var LinkWrapper$1 = styled(Link).withConfig({
355
- displayName: "style__LinkWrapper",
356
- componentId: "lui__sc-t6my6e-2"
357
- })(["", ";overflow:hidden;text-decoration:none;font-weight:normal;width:100%;text-align:left;box-sizing:border-box;background-color:transparent;"], MenuItem$1);
358
- var LaunchIcon = styled(Launch).withConfig({
359
- displayName: "style__LaunchIcon",
360
- componentId: "lui__sc-t6my6e-3"
361
- })(["", ""], mx('xl'));
362
-
363
- var initialState = {
364
- hideDashboardItem: false,
365
- hideManageApplicationsItem: false,
366
- onLogout: undefined
367
- };
368
-
369
- var DropdownMenuContext = /*#__PURE__*/React.createContext(initialState);
370
- var useDropdownMenu = () => {
371
- var state = React.useContext(DropdownMenuContext);
372
- if (!state) {
373
- throw new Error('Please setup <DropdownMenuProvider /> as a parent component, before using useDropdownMenu().');
374
- }
375
- return state;
376
- };
377
-
378
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
379
- try {
380
- var info = gen[key](arg);
381
- var value = info.value;
382
- } catch (error) {
383
- reject(error);
384
- return;
385
- }
386
- if (info.done) {
387
- resolve(value);
388
- } else {
389
- Promise.resolve(value).then(_next, _throw);
390
- }
391
- }
392
- function _asyncToGenerator(fn) {
393
- return function () {
394
- var self = this,
395
- args = arguments;
396
- return new Promise(function (resolve, reject) {
397
- var gen = fn.apply(self, args);
398
- function _next(value) {
399
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
400
- }
401
- function _throw(err) {
402
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
403
- }
404
- _next(undefined);
405
- });
406
- };
407
- }
408
-
409
- var RestrictionContext = /*#__PURE__*/React.createContext({
410
- isRestricted: false
411
- });
412
- var useRestriction = () => {
413
- var restrictionState = React.useContext(RestrictionContext);
414
- if (!restrictionState) {
415
- throw new Error('Please setup <RestrictionProvider /> as a parent component, before using useRestriction().');
416
- }
417
- return restrictionState;
418
- };
419
-
420
- /**
421
- * RestrictionProvider check the restrictionStatus for FAB/Aussie Ready Customer.
422
- * @todo This should be removed after Aussire Ready.
423
- */
424
- var RestrictionProvider = _ref => {
425
- var {
426
- children
427
- } = _ref;
428
- var [isRestricted, setIsRestricted] = useState(false);
429
- var session = useSession();
430
- useEffect(() => {
431
- // declare the data fetching function
432
- var fetchStatus = /*#__PURE__*/function () {
433
- var _ref2 = _asyncToGenerator(function* () {
434
- var restrictionStatus = yield session.getRestrictionStatusForFAB();
435
- setIsRestricted(restrictionStatus === 'Restricted');
436
- });
437
- return function fetchStatus() {
438
- return _ref2.apply(this, arguments);
439
- };
440
- }();
441
-
442
- /**
443
- * For Aussie Customer, between FAB & AussieReady, we need to fetch their restriction status.
444
- * @todo Remove the following after Aussie Ready.
445
- */
446
- if (session.brand === Brand.Aussie) {
447
- fetchStatus()
448
- // make sure to catch any error
449
- .catch(console.error);
450
- }
451
- }, [session]);
452
- return /*#__PURE__*/jsx(RestrictionContext.Provider, {
453
- value: {
454
- isRestricted
455
- },
456
- children: children
457
- });
458
- };
459
-
460
- var DropdownMenu = () => {
461
- var isDomain = getBrandFromHostname() === Brand$1.Domain;
462
- var path = isDomain ? PATH_DOMAIN : PATH_LENDI;
463
- var {
464
- hideDashboardItem,
465
- hideManageApplicationsItem,
466
- onLogout
467
- } = useDropdownMenu();
468
- var {
469
- newPropertyReports
470
- } = useFlags();
471
- var {
472
- isRestricted
473
- } = useRestriction();
474
- return /*#__PURE__*/jsxs(LogoutWrapper, {
475
- children: [/*#__PURE__*/jsx(MyAccountTitle, {
476
- children: "My account"
477
- }), !hideManageApplicationsItem && !isRestricted && /*#__PURE__*/jsx(LinkWrapper$1, {
478
- color: "shade.700",
479
- onClick: () => {
480
- var event = {
481
- event_name: 'Menu Element Clicked',
482
- category: EventCategory.NAVBAR,
483
- menuName: 'Kebab Menu',
484
- text: LABEL_APPLICATIONS
485
- };
486
- analytics(event);
487
- },
488
- href: "".concat(path).concat(ROUTE_APPLICATIONS),
489
- "aria-label": LABEL_APPLICATIONS,
490
- children: LABEL_APPLICATIONS
491
- }), !hideDashboardItem && !isRestricted && /*#__PURE__*/jsx(LinkWrapper$1, {
492
- color: "shade.700",
493
- onClick: () => {
494
- var event = {
495
- event_name: 'Menu Element Clicked',
496
- category: EventCategory.NAVBAR,
497
- menuName: 'Kebab Menu',
498
- text: LABEL_DASHBOARD
499
- };
500
- analytics(event);
501
- },
502
- href: "".concat(path).concat(DASHBOARD_V2_PATH),
503
- "aria-label": LABEL_DASHBOARD,
504
- children: LABEL_DASHBOARD
505
- }), !isDomain && /*#__PURE__*/jsxs(LinkWrapper$1, {
506
- color: "shade.700",
507
- onClick: () => {
508
- var event = {
509
- event_name: 'Menu Element Clicked',
510
- category: EventCategory.NAVBAR,
511
- menuName: 'Kebab Menu',
512
- text: LABEL_PROPERTY_REPORT
513
- };
514
- analytics(event);
515
- },
516
- href: newPropertyReports ? "".concat(ROUTE_NEW_PROPERTY_REPORT) : "".concat(path).concat(ROUTE_PROPERTY_REPORT),
517
- target: "_blank",
518
- "aria-label": LABEL_PROPERTY_REPORT,
519
- children: [LABEL_PROPERTY_REPORT, /*#__PURE__*/jsx(LaunchIcon, {
520
- width: "18px",
521
- height: "18px"
522
- })]
523
- }), /*#__PURE__*/jsx(LinkWrapper$1, {
524
- color: "shade.700",
525
- onClick: () => {
526
- if (onLogout) onLogout();
527
- var event = {
528
- event_name: 'Menu Element Clicked',
529
- category: EventCategory.NAVBAR,
530
- menuName: 'Kebab Menu',
531
- text: LABEL_LOG_OUT
532
- };
533
- analytics(event);
534
- },
535
- "aria-label": LABEL_LOG_OUT,
536
- children: LABEL_LOG_OUT
537
- })]
538
- });
539
- };
540
-
541
- var KebabMenu = styled(IconButton).withConfig({
542
- displayName: "style__KebabMenu",
543
- componentId: "lui__sc-1kjveb6-0"
544
- })(["", ""], ml('xxxs'));
545
-
546
- var LogoutComponent = () => {
547
- var {
548
- isTransparent
549
- } = useNavbarBaseContext();
550
- var [isLogoutDisplay, setIsLogoutDisplay] = React.useState(false);
551
- var logoutPanel = React.useRef();
552
- var hasWindow = typeof window !== 'undefined';
553
- var theme = useTheme();
554
- var closeLogoutPanel = e => {
555
- if (logoutPanel && logoutPanel.current && !logoutPanel.current.contains(e.target)) {
556
- setIsLogoutDisplay(false);
557
- }
558
- };
559
- React.useEffect(() => {
560
- if (hasWindow) {
561
- window.addEventListener('mousedown', closeLogoutPanel);
562
- }
563
- return () => {
564
- if (hasWindow) {
565
- window.removeEventListener('mousedown', closeLogoutPanel);
566
- }
567
- };
568
- });
569
- return /*#__PURE__*/jsxs("div", {
570
- ref: logoutPanel,
571
- children: [/*#__PURE__*/jsx(KebabMenu, {
572
- size: "sm",
573
- color: isTransparent ? theme.color.interaction.subtle : theme.color.interaction.main,
574
- onClick: () => {
575
- setIsLogoutDisplay(!isLogoutDisplay);
576
- var event = {
577
- event_name: 'Menu Clicked',
578
- menuName: 'Kebab Menu',
579
- category: EventCategory.NAVBAR
580
- };
581
- analytics(event);
582
- },
583
- "aria-label": LABEL_MORE_OPTIONS,
584
- icon: MoreVert
585
- }), isLogoutDisplay && /*#__PURE__*/jsx(DropdownMenu, {})]
586
- });
587
- };
588
-
589
- var _templateObject$a;
590
- var DesktopActionsWrapper = styled.div.withConfig({
591
- displayName: "style__DesktopActionsWrapper",
592
- componentId: "lui__sc-jh42qz-0"
593
- })(["display:flex;", ";"], between('mobile', 'desktop')(_templateObject$a || (_templateObject$a = _taggedTemplateLiteral(["\n display: none;\n "]))));
594
-
595
- var DEFAULT_DASHBOARD_URL = '/v2/dashboard/';
596
- var getSignInURL = (brand, env, returnURL) => {
597
- var urls = getURLs(brand, Type.Customer, env);
598
- var dashboardReturnURL = brand === Brand.Domain ? "/loanfinder".concat(DEFAULT_DASHBOARD_URL) : DEFAULT_DASHBOARD_URL;
599
- // Confirmed with CMS team, all Lendi and Aussie landing pages will under /lp/ route.
600
- var lendiOrAussieLandingPageRoute = "".concat(urls.origin, "lp/");
601
- var hasNoReturnURL = returnURL === undefined || returnURL === '';
602
- var isReturnURLOrigin = returnURL === urls.origin;
603
- var isReturnURLLendiOrAussieLandingPage = (returnURL === null || returnURL === void 0 ? void 0 : returnURL.includes(lendiOrAussieLandingPageRoute)) && brand !== Brand.Domain;
604
-
605
- /**
606
- * The return URL should be based on origin
607
- * If origin is homepage, not given, or Lendi & Aussie marketing landing page, then return URL should be dashboard
608
- * else, whatever is given.
609
- */
610
- var newReturnURL = hasNoReturnURL || isReturnURLOrigin || isReturnURLLendiOrAussieLandingPage ? dashboardReturnURL : returnURL;
611
- return "".concat(urls.authenticate, "?returnURL=").concat(encodeURIComponent(newReturnURL));
612
- };
613
-
614
- var getEnvFromHostname = hostname => {
615
- if (hostname !== null && hostname !== void 0 && hostname.includes('dev.')) {
616
- return Environment.Development;
617
- } else if (hostname !== null && hostname !== void 0 && hostname.includes('stg.') || hostname !== null && hostname !== void 0 && hostname.includes('stage.')) {
618
- return Environment.Staging;
619
- } else if (hostname !== null && hostname !== void 0 && hostname.includes('preprod.')) {
620
- return Environment.Preproduction;
621
- } else if (hostname !== null && hostname !== void 0 && hostname.includes('lendi.com.au') || hostname !== null && hostname !== void 0 && hostname.includes('domain.com.au') || hostname !== null && hostname !== void 0 && hostname.includes('aussie.com.au')) {
622
- return Environment.Production;
623
- } else {
624
- return Environment.Development;
625
- }
626
- };
627
-
628
- var RenderChatOrSideBar = _ref => {
629
- var {
630
- openCommPanel = () => {},
631
- teamMember,
632
- dashboardVariant,
633
- hasUnreadMessages
634
- } = _ref;
635
- var primaryLabel = teamMember !== null && teamMember !== void 0 && teamMember.firstName ? "Talk to ".concat(teamMember.firstName) : LABEL_TALK_TO_EXPERT;
636
- return /*#__PURE__*/jsx(TalkExpertAction, {
637
- dashboardVariant: dashboardVariant,
638
- size: "sm",
639
- variant: "secondary",
640
- onClick: () => {
641
- openCommPanel();
642
- var event = {
643
- event_name: 'Button Clicked',
644
- category: EventCategory.NAVBAR,
645
- buttonType: ButtonType.SECONDARY,
646
- text: hasUnreadMessages ? 'You have an unread message' : 'Talk to an expert'
647
- };
648
- analytics(event);
649
- },
650
- children: hasUnreadMessages ? /*#__PURE__*/jsxs(Fragment, {
651
- children: [/*#__PURE__*/jsx(UnreadMessageWrapper, {
652
- "data-testid": "customer-view-unread-icon",
653
- color: getColour$1('interaction', 'main'),
654
- height: "2em",
655
- width: "2em"
656
- }), UNREAD_MESSAGE]
657
- }) : /*#__PURE__*/jsx(Fragment, {
658
- children: primaryLabel
659
- })
660
- });
661
- };
662
- var RenderDesktopAction = _ref2 => {
663
- var _window, _window$location, _window2, _window2$location;
664
- var {
665
- dashboardVariant,
666
- isAuthenticated,
667
- continueURL,
668
- showContinueAction = false,
669
- showTalkToExpertCta = true,
670
- showBookanAppointmentCta = true,
671
- openCommPanel = () => {},
672
- teamMember,
673
- hasUnreadMessages,
674
- utmCampaign
675
- } = _ref2;
676
- var brand = getBrandFromHostname();
677
- var env = getEnvFromHostname((_window = window) === null || _window === void 0 ? void 0 : (_window$location = _window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname);
678
- var signInURL = getSignInURL(brand, env, (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$location = _window2.location) === null || _window2$location === void 0 ? void 0 : _window2$location.href);
679
- var isDomain = brand === Brand$1.Domain;
680
- var path = isDomain ? PATH_DOMAIN : PATH_LENDI;
681
- var renderSecondaryBtn = (utmCampaign, isAuthenticated, showBookanAppointmentCta, showContinueAction) => {
682
- return /*#__PURE__*/jsxs(Fragment, {
683
- children: [(utmCampaign || showContinueAction) && isAuthenticated && /*#__PURE__*/jsx(SecondaryAction, {
684
- size: "sm",
685
- variant: 'emphasis',
686
- href: continueURL,
687
- onClick: () => {
688
- var event = {
689
- event_name: 'Button Clicked',
690
- buttonType: ButtonType.EMPHASIS,
691
- text: 'Continue',
692
- category: EventCategory.NAVBAR
693
- };
694
- analytics(event);
695
- },
696
- "aria-label": continueURL,
697
- children: LABEL_CONTINUE
698
- }), (utmCampaign || showContinueAction) && !isAuthenticated && /*#__PURE__*/jsx(SecondaryAction, {
699
- size: "sm",
700
- variant: 'primary',
701
- href: signInURL,
702
- onClick: () => {
703
- var event = {
704
- event_name: 'Button Clicked',
705
- buttonType: ButtonType.PRIMARY,
706
- text: 'Sign In',
707
- category: EventCategory.NAVBAR
708
- };
709
- analytics(event);
710
- },
711
- "aria-label": signInURL,
712
- children: LABEL_SIGN_IN
713
- }), !(utmCampaign || showContinueAction) && showBookanAppointmentCta && /*#__PURE__*/jsx(SecondaryAction, {
714
- size: "sm",
715
- variant: 'primary',
716
- href: "".concat(path).concat(ROUTE_BOOK_APPOINTMENT),
717
- onClick: () => {
718
- var event = {
719
- event_name: 'Button Clicked',
720
- buttonType: ButtonType.PRIMARY,
721
- text: 'Book an Appointment',
722
- category: EventCategory.NAVBAR
723
- };
724
- analytics(event);
725
- },
726
- "aria-label": "".concat(path).concat(ROUTE_BOOK_APPOINTMENT),
727
- children: BOOK_AN_APPOINTMENT
728
- })]
729
- });
730
- };
731
- return /*#__PURE__*/jsxs(DesktopActionsWrapper, {
732
- children: [showTalkToExpertCta && /*#__PURE__*/jsx(RenderChatOrSideBar, {
733
- openCommPanel: openCommPanel,
734
- teamMember: teamMember,
735
- dashboardVariant: dashboardVariant,
736
- hasUnreadMessages: hasUnreadMessages
737
- }), renderSecondaryBtn(utmCampaign, isAuthenticated, showBookanAppointmentCta, showContinueAction), isAuthenticated && /*#__PURE__*/jsx(LogoutComponent, {})]
738
- });
739
- };
740
- var RenderDesktopAction$1 = RenderDesktopAction;
741
-
742
- var _templateObject$9;
743
- var MobileActionsWrapper = styled.div.withConfig({
744
- displayName: "style__MobileActionsWrapper",
745
- componentId: "lui__sc-jzhj4e-0"
746
- })(["display:flex;", ";.noHover{", ";:hover{box-shadow:none;}}"], gte('desktop')(_templateObject$9 || (_templateObject$9 = _taggedTemplateLiteral(["\n display: none;\n "]))), mr('nil'));
747
-
748
- var RenderMobileAction = _ref => {
749
- var _window, _window$location, _window2, _window2$location;
750
- var {
751
- isAuthenticated,
752
- continueURL,
753
- teamMember,
754
- openCommPanel = () => {},
755
- showContinueAction = false,
756
- showTalkToExpertCta = true,
757
- hasUnreadMessages,
758
- utmCampaign
759
- } = _ref;
760
- var {
761
- isTransparent
762
- } = useNavbarBaseContext();
763
- var needToContinue = () => isAuthenticated && showContinueAction;
764
- var needToSignIn = () => !isAuthenticated && utmCampaign;
765
- var brand = getBrandFromHostname();
766
- var env = getEnvFromHostname((_window = window) === null || _window === void 0 ? void 0 : (_window$location = _window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname);
767
- var signInURL = getSignInURL(brand, env, (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$location = _window2.location) === null || _window2$location === void 0 ? void 0 : _window2$location.href);
768
- var primaryLabel = teamMember !== null && teamMember !== void 0 && teamMember.firstName ? "Talk to ".concat(teamMember.firstName) : needToContinue() ? CONTACT_US : LABEL_TALK_TO_EXPERT;
769
- return /*#__PURE__*/jsxs(MobileActionsWrapper, {
770
- children: [showTalkToExpertCta && /*#__PURE__*/jsx(TalkExpertAction, {
771
- size: "sm",
772
- isInverse: isTransparent,
773
- className: "noHover",
774
- variant: "secondary",
775
- onClick: () => {
776
- openCommPanel();
777
- var event = {
778
- event_name: 'Button Clicked',
779
- category: EventCategory.NAVBAR,
780
- buttonType: ButtonType.SECONDARY,
781
- text: hasUnreadMessages ? 'You have an unread message' : 'Talk to an expert'
782
- };
783
- analytics(event);
784
- },
785
- children: hasUnreadMessages ? /*#__PURE__*/jsxs(Fragment, {
786
- children: [/*#__PURE__*/jsx(UnreadMessageWrapper, {
787
- "data-testid": "customer-view-unread-icon",
788
- color: getColour$1('interaction', 'main'),
789
- height: "2em",
790
- width: "2em"
791
- }), UNREAD_MESSAGE_MOBILE]
792
- }) : /*#__PURE__*/jsx(Fragment, {
793
- children: primaryLabel
794
- })
795
- }), needToSignIn() && /*#__PURE__*/jsx(SecondaryActionMobile, {
796
- size: "sm",
797
- variant: isAuthenticated ? 'emphasis' : 'primary',
798
- href: signInURL,
799
- onClick: () => {
800
- var event = {
801
- event_name: 'Button Clicked',
802
- buttonType: isAuthenticated ? ButtonType.EMPHASIS : ButtonType.PRIMARY,
803
- text: 'Sign In',
804
- category: EventCategory.NAVBAR
805
- };
806
- analytics(event);
807
- },
808
- "aria-label": signInURL,
809
- children: LABEL_SIGN_IN
810
- }), needToContinue() && /*#__PURE__*/jsx(ContinueAction, {
811
- variant: "emphasis",
812
- href: continueURL,
813
- "aria-label": LABEL_CONTINUE,
814
- size: "sm",
815
- onClick: () => {
816
- var event = {
817
- event_name: 'Button Clicked',
818
- category: EventCategory.NAVBAR,
819
- text: 'Continue',
820
- buttonType: ButtonType.EMPHASIS
821
- };
822
- analytics(event);
823
- },
824
- children: LABEL_CONTINUE
825
- }), isAuthenticated && /*#__PURE__*/jsx(LogoutComponent, {})]
826
- });
827
- };
828
- var RenderMobileAction$1 = RenderMobileAction;
829
-
830
- var CTAButtons$2 = props => {
831
- return /*#__PURE__*/jsxs(Fragment, {
832
- children: [/*#__PURE__*/jsx(RenderDesktopAction$1, _objectSpread2({
833
- hasUnreadMessages: props.hasUnreadMessages
834
- }, props)), /*#__PURE__*/jsx(RenderMobileAction$1, _objectSpread2({
835
- hasUnreadMessages: props.hasUnreadMessages
836
- }, props))]
837
- });
838
- };
839
- var CTAButtons$3 = CTAButtons$2;
840
-
841
- function _objectWithoutPropertiesLoose(source, excluded) {
842
- if (source == null) return {};
843
- var target = {};
844
- var sourceKeys = Object.keys(source);
845
- var key, i;
846
- for (i = 0; i < sourceKeys.length; i++) {
847
- key = sourceKeys[i];
848
- if (excluded.indexOf(key) >= 0) continue;
849
- target[key] = source[key];
850
- }
851
- return target;
852
- }
853
-
854
- function _objectWithoutProperties(source, excluded) {
855
- if (source == null) return {};
856
- var target = _objectWithoutPropertiesLoose(source, excluded);
857
- var key, i;
858
- if (Object.getOwnPropertySymbols) {
859
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
860
- for (i = 0; i < sourceSymbolKeys.length; i++) {
861
- key = sourceSymbolKeys[i];
862
- if (excluded.indexOf(key) >= 0) continue;
863
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
864
- target[key] = source[key];
865
- }
866
- }
867
- return target;
868
- }
869
-
870
- var _excluded$a = ["showTalkToExpertCta"];
871
- var withDomainChat = Component => _ref => {
872
- var {
873
- showTalkToExpertCta = true
874
- } = _ref,
875
- otherProps = _objectWithoutProperties(_ref, _excluded$a);
876
- var session = useSession();
877
- var isAuthenticated = session.status === Status.Authenticated;
878
- var isDomain = getBrandFromHostname() === Brand$1.Domain;
879
- var isDomainUnauthenticated = isDomain && !isAuthenticated;
880
- var shouldShowChat = showTalkToExpertCta && !isDomainUnauthenticated;
881
- return /*#__PURE__*/jsx(Component, _objectSpread2(_objectSpread2({}, otherProps), {}, {
882
- showTalkToExpertCta: shouldShowChat
883
- }));
884
- };
885
-
886
- var DropdownProvider = _ref => {
887
- var {
888
- children,
889
- hideDashboardItem,
890
- hideManageApplicationsItem,
891
- onLogout
892
- } = _ref;
893
- return /*#__PURE__*/jsx(DropdownMenuContext.Provider, {
894
- value: {
895
- hideDashboardItem,
896
- hideManageApplicationsItem,
897
- onLogout
898
- },
899
- children: children
900
- });
901
- };
902
-
903
- var ErrorContext = /*#__PURE__*/React.createContext(undefined);
904
- var useError = () => {
905
- var errorState = React.useContext(ErrorContext);
906
- if (!errorState) {
907
- throw new Error('Please setup <ErrorProvider /> as a parent component, before using useError().');
908
- }
909
- return errorState;
910
- };
911
-
912
- var ErrorProvider = _ref => {
913
- var {
914
- children,
915
- onException
916
- } = _ref;
917
- return /*#__PURE__*/jsx(ErrorContext.Provider, {
918
- value: {
919
- onException
920
- },
921
- children: children
922
- });
923
- };
924
-
925
- var withErrorProvider = Component => props => /*#__PURE__*/jsx(ErrorProvider, {
926
- onException: props.onException,
927
- children: /*#__PURE__*/jsx(Component, _objectSpread2({}, props))
928
- });
929
-
930
- var CommPanelWrapper$1 = styled.div.withConfig({
931
- displayName: "style__CommPanelWrapper",
932
- componentId: "lui__sc-no953w-0"
933
- })(["", ";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;display:flex;flex-direction:column;height:100%;"], normalise);
934
-
935
- var HeadWrapper = styled.div.withConfig({
936
- displayName: "style__HeadWrapper",
937
- componentId: "lui__sc-zy0mzz-0"
938
- })(["border-bottom:1px solid ", ";", ";"], color('shade.100'), mt('xxl'));
939
- var BrokerWrapper = styled.div.withConfig({
940
- displayName: "style__BrokerWrapper",
941
- componentId: "lui__sc-zy0mzz-1"
942
- })(["display:flex;align-items:center;", ";"], ml('xl'));
943
- var BrokerImgWrapper = styled.div.withConfig({
944
- displayName: "style__BrokerImgWrapper",
945
- componentId: "lui__sc-zy0mzz-2"
946
- })(["", ";position:relative;"], mr('xs'));
947
- var BrokerFace$1 = styled.img.withConfig({
948
- displayName: "style__BrokerFace",
949
- componentId: "lui__sc-zy0mzz-3"
950
- })(["width:65px;height:65px;border-radius:50%;border:1px solid ", ";margin:auto;"], color('shade.100'));
951
- var BrokerDetail = styled.div.withConfig({
952
- displayName: "style__BrokerDetail",
953
- componentId: "lui__sc-zy0mzz-4"
954
- })(["display:flex;flex-direction:column;justify-content:space-between;", ";"], ml('xxs'));
955
- var BrokerName = styled(Heading).withConfig({
956
- displayName: "style__BrokerName",
957
- componentId: "lui__sc-zy0mzz-5"
958
- })(["font-weight:bold;"]);
959
- var StyledFace$1 = styled(Face).withConfig({
960
- displayName: "style__StyledFace",
961
- componentId: "lui__sc-zy0mzz-6"
962
- })(["width:4.5em;height:4.5em;"]);
963
- var StatusIcon$1 = styled.div.withConfig({
964
- displayName: "style__StatusIcon",
965
- componentId: "lui__sc-zy0mzz-7"
966
- })(["width:17px;height:17px;border-radius:50%;position:absolute;right:1px;bottom:8px;", ";"], props => props.isOnline ? bg('success.600') : bg('shade.400'));
967
- var StyledBrokerFaces = styled.img.withConfig({
968
- displayName: "style__StyledBrokerFaces",
969
- componentId: "lui__sc-zy0mzz-8"
970
- })(["width:191px;display:block;margin-left:56px;"]);
971
- var StyledBody = styled(Body).withConfig({
972
- displayName: "style__StyledBody",
973
- componentId: "lui__sc-zy0mzz-9"
974
- })(["margin-top:4px;"]);
975
-
976
- var IMAGE_CDN = 'https://lendicdn.net/327bd43fb6e1de7a0a3f44af5ad14156/71ccb7a35a452ea8153b6d920f9f190e'; // This is the production CDN link for Shaka Storybook, which hosts static images
977
-
978
- var mapProfileToTitle = profile => {
979
- switch (profile) {
980
- case 'Associate':
981
- return 'Home Loan Associate';
982
- case 'Broker':
983
- return 'Home Loan Specialist';
984
- case 'Broker Manager':
985
- return 'Home Loan Specialist';
986
- case 'Customer Solutions':
987
- return 'Customer Solutions';
988
- case 'Offboarded User':
989
- return 'Home Loan Specialist';
990
- case 'Partner Broker':
991
- return 'Home Loan Consultant';
992
- case 'Relationship Manager':
993
- return 'Relationship Manager';
994
- case 'Senior Relationship Manager':
995
- return 'Relationship Manager';
996
- }
997
- };
998
- var TeamMemberInfo = /*#__PURE__*/React.memo(_ref => {
999
- var {
1000
- teamMember,
1001
- isOtherUserOnline
1002
- } = _ref;
1003
- var {
1004
- brand
1005
- } = useSession();
1006
- return /*#__PURE__*/jsxs(HeadWrapper, {
1007
- children: [/*#__PURE__*/jsx(BrokerWrapper, {
1008
- children: teamMember ? /*#__PURE__*/jsxs(Fragment, {
1009
- children: [/*#__PURE__*/jsxs(BrokerImgWrapper, {
1010
- children: [teamMember.profilePictureURL ? /*#__PURE__*/jsx(BrokerFace$1, {
1011
- src: teamMember.profilePictureURL
1012
- }) : /*#__PURE__*/jsx(StyledFace$1, {}), /*#__PURE__*/jsx(StatusIcon$1, {
1013
- isOnline: isOtherUserOnline,
1014
- "aria-label": isOtherUserOnline ? 'Online' : 'Offline'
1015
- })]
1016
- }), /*#__PURE__*/jsxs(BrokerDetail, {
1017
- children: [/*#__PURE__*/jsx(BrokerName, {
1018
- size: "sm",
1019
- color: "shade.700",
1020
- children: teamMember.firstName
1021
- }), /*#__PURE__*/jsx(BrokerName, {
1022
- size: "sm",
1023
- color: "shade.700",
1024
- children: teamMember.lastName
1025
- }), /*#__PURE__*/jsx(StyledBody, {
1026
- size: "xs",
1027
- color: "shade.400",
1028
- mb: "xs",
1029
- children: mapProfileToTitle(teamMember.profile) || 'Home Loan Specialist'
1030
- })]
1031
- })]
1032
- }) : /*#__PURE__*/jsx(StyledBrokerFaces, {
1033
- src: "".concat(IMAGE_CDN, "/images/").concat(brand, ".png"),
1034
- alt: "Friendly broker image"
1035
- })
1036
- }), /*#__PURE__*/jsx(Body, {
1037
- size: "md",
1038
- align: "center",
1039
- mx: "lg",
1040
- color: "shade.700",
1041
- mb: "sm",
1042
- mt: "sm",
1043
- children: teamMember ? "I'm here to support your loan journey. Got a question? Just ask!" : 'Get in touch with one of our experts who can answer all your home loan related questions.'
1044
- })]
1045
- });
1046
- });
1047
-
1048
- // LUI-465 we are hard-coding theming for this component as not all colours are part of our semantic palette
1049
- var theming = {
1050
- lendi: {
1051
- background: '#E6EEF0',
1052
- foreground: '#0D5A6D'
1053
- },
1054
- domain: {
1055
- background: '#E6E8EC',
1056
- foreground: '#06193A'
1057
- },
1058
- aussie: {
1059
- background: '#EEEAF1',
1060
- foreground: '#522B6F'
1061
- }
1062
- };
1063
- var getThemedColour = property => {
1064
- var theTheme = getThemeName();
1065
- var theme = theTheme === 'lendi-next' ? theming.lendi : theming[theTheme];
1066
- return theme[property];
1067
- };
1068
-
1069
- var ULOptions = styled.ul.withConfig({
1070
- displayName: "style__ULOptions",
1071
- componentId: "lui__sc-absiyo-0"
1072
- })(["list-style-type:none;width:100%;", " ", " ", ";"], m('nil'), p('nil'), pb('xxs'));
1073
- var selectedStyle = css(["background-color:", ";p{", ";}svg{fill:", ";}"], () => getThemedColour('background'), fg('shade.0'), color('shade.0'));
1074
- var ItemWrapper = styled.li.withConfig({
1075
- displayName: "style__ItemWrapper",
1076
- componentId: "lui__sc-absiyo-1"
1077
- })(["list-style-type:none;width:100%;border-bottom:1px solid ", ";:focus,:hover,:visited{text-decoration:none;}:hover{", "}"], color('shade.100'), selectedStyle);
1078
- var LinkWrapper = styled(Link).withConfig({
1079
- displayName: "style__LinkWrapper",
1080
- componentId: "lui__sc-absiyo-2"
1081
- })(["color:", ";width:100%;display:flex;align-items:center;text-decoration:none;font-weight:600;:focus,:hover{background-color:", ";color:", ";text-decoration:none;}padding-left:20px;", ";"], () => getThemedColour('foreground'), () => getColour('fill', 'contrast'), () => getColour('text', 'inverse'), py('xs'));
1082
- var BodyWrapper = styled(Body).withConfig({
1083
- displayName: "style__BodyWrapper",
1084
- componentId: "lui__sc-absiyo-3"
1085
- })(["", ";color:", ";font-family:", ";font-size:16px;font-weight:bold;"], pl('sm'), () => getColour('interaction', 'secondary'), getTypography('body1', 'fontFamily'));
1086
- var ChatBodyWrapper = styled.div.withConfig({
1087
- displayName: "style__ChatBodyWrapper",
1088
- componentId: "lui__sc-absiyo-4"
1089
- })(["display:flex;justify-content:space-between;align-items:center;", ";"], pr('md'));
1090
-
1091
- var CONTACT_NUMBERS = {
1092
- lendi: '1300 323 181',
1093
- domain: '1300 525 454',
1094
- aussie: '13 13 33'
1095
- };
1096
- var BOOKING_PATHS = {
1097
- lendi: '',
1098
- domain: '/loanfinder',
1099
- aussie: ''
1100
- };
1101
- var toTel = phoneNumber => "tel:+61".concat(phoneNumber.replace(/ /g, ''));
1102
- var PanelLinks = _ref => {
1103
- var _teamMember$phoneNumb;
1104
- var {
1105
- teamMember,
1106
- store,
1107
- broker
1108
- } = _ref;
1109
- var {
1110
- name
1111
- } = useTheme();
1112
- var currentTheme = name;
1113
- if (currentTheme === 'lendi-next') currentTheme = 'lendi';
1114
- var path = BOOKING_PATHS[currentTheme];
1115
- var phoneLabel = (_teamMember$phoneNumb = teamMember === null || teamMember === void 0 ? void 0 : teamMember.phoneNumber) !== null && _teamMember$phoneNumb !== void 0 ? _teamMember$phoneNumb : CONTACT_NUMBERS[currentTheme];
1116
- var phoneLink = teamMember !== null && teamMember !== void 0 && teamMember.phoneNumber ? toTel(teamMember.phoneNumber) : "tel:".concat(phoneLabel.replace(/ /g, ''));
1117
- return /*#__PURE__*/jsxs(Fragment, {
1118
- children: [/*#__PURE__*/jsx(ItemWrapper, {
1119
- children: /*#__PURE__*/jsxs(LinkWrapper, {
1120
- href: phoneLink,
1121
- "aria-label": "contact us by phone",
1122
- "data-testid": "customer-view-phone-link",
1123
- onClick: () => {
1124
- var levent = {
1125
- event_name: 'Link Clicked',
1126
- text: phoneLabel,
1127
- category: EventCategory.COMMSPANEL,
1128
- linkType: 'link',
1129
- position: 'Contact Us',
1130
- customerType: CustomerType.CUSTOMER
1131
- };
1132
- analytics(levent);
1133
- },
1134
- children: [/*#__PURE__*/jsx(Phone, {
1135
- "data-testid": "customer-view-phone-icon",
1136
- height: "18px",
1137
- width: "18px"
1138
- }), /*#__PURE__*/jsx(BodyWrapper, {
1139
- size: "md",
1140
- children: phoneLabel
1141
- })]
1142
- })
1143
- }), /*#__PURE__*/jsx(ItemWrapper, {
1144
- children: /*#__PURE__*/jsxs(LinkWrapper, {
1145
- href: "".concat(path, "/book-appointment/"),
1146
- "aria-label": "book an appointment",
1147
- "data-testid": "customer-view-appointment-link",
1148
- onClick: () => {
1149
- // Set Leads if customer clicked on BookApointment from Store page.
1150
- // Unset Leads (to undefined) if customer clicked on BookApointment from non-Store page.
1151
- store !== null && store !== void 0 && store.id ? LendiGroupLeads.setStoreId(store === null || store === void 0 ? void 0 : store.id) : LendiGroupLeads.unsetStoreId();
1152
- // Set and Unset Leads if customer clicked on BookApointment from Broker page.
1153
- // Unset Leads (to undefined) if customer clicked on BookApointment from non-Broker page.
1154
- // @ts-ignore As of coding, @lendi/lendigroup-leads-library does NOT support setting leads to undefined. ts-ignoring it.
1155
- broker !== null && broker !== void 0 && broker.id ? LendiGroupLeads.setBrokerId(broker === null || broker === void 0 ? void 0 : broker.id) : LendiGroupLeads.unsetBrokerId();
1156
- // Analytics
1157
- var linkEvent = {
1158
- event_name: 'Link Clicked',
1159
- text: 'Book an appointment',
1160
- category: EventCategory.COMMSPANEL,
1161
- linkType: 'link',
1162
- customerType: CustomerType.CUSTOMER
1163
- };
1164
- analytics(linkEvent);
1165
- },
1166
- children: [/*#__PURE__*/jsx(Calendar, {
1167
- "data-testid": "customer-view-calendar-icon",
1168
- height: "18px",
1169
- width: "18px"
1170
- }), /*#__PURE__*/jsx(BodyWrapper, {
1171
- size: "md",
1172
- children: "Book an appointment"
1173
- })]
1174
- })
1175
- })]
1176
- });
1177
- };
1178
-
1179
- var UnReadDot = styled.div.withConfig({
1180
- displayName: "style__UnReadDot",
1181
- componentId: "lui__sc-10i6qtc-0"
1182
- })(["width:7px;height:7px;border-radius:50%;position:absolute;right:-2px;top:-2px;", ";"], bg('error.600'));
1183
- var StyledChatIcon = styled.span.withConfig({
1184
- displayName: "style__StyledChatIcon",
1185
- componentId: "lui__sc-10i6qtc-1"
1186
- })(["position:relative;"]);
1187
-
1188
- var ChatIcon = _ref => {
1189
- var {
1190
- hasNew
1191
- } = _ref;
1192
- return /*#__PURE__*/jsxs(StyledChatIcon, {
1193
- children: [/*#__PURE__*/jsx(Chat, {
1194
- color: getColour$1('interaction', 'secondary'),
1195
- height: "18px",
1196
- width: "18px"
1197
- }), hasNew ? /*#__PURE__*/jsx(UnReadDot, {}) : /*#__PURE__*/jsx(Fragment, {})]
1198
- });
1199
- };
1200
-
1201
- var ChatLinKWrapper = styled(ItemWrapper).withConfig({
1202
- displayName: "style__ChatLinKWrapper",
1203
- componentId: "lui__sc-1pa95jd-0"
1204
- })(["", ";", ";"], _ref => {
1205
- var {
1206
- disabled
1207
- } = _ref;
1208
- return disabled && css(["pointer-events:none;opacity:0.6;"]);
1209
- }, _ref2 => {
1210
- var {
1211
- isChatOpen
1212
- } = _ref2;
1213
- return isChatOpen && css(["background-color:", ";p{color:", ";}svg{fill:", ";}"], getColour('fill', 'contrast'), getColour('interaction', 'subtle'), getColour('interaction', 'subtle'));
1214
- });
1215
- var positionedRight = css(["position:absolute;right:10px;"]);
1216
- styled(KeyboardArrowDown).withConfig({
1217
- displayName: "style__ChevronUpDownIcon",
1218
- componentId: "lui__sc-1pa95jd-1"
1219
- })(["", ";", ""], positionedRight, _ref3 => {
1220
- var {
1221
- isChatOpen
1222
- } = _ref3;
1223
- return css(["transition:transform 0.25s;transform:rotate(", ");"], isChatOpen ? '180deg' : '0deg');
1224
- });
1225
- var ChevronRightIcon = styled(KeyboardArrowRight).withConfig({
1226
- displayName: "style__ChevronRightIcon",
1227
- componentId: "lui__sc-1pa95jd-2"
1228
- })([""]);
1229
- var StyledChevronRightIcon = styled(ChevronRightIcon).withConfig({
1230
- displayName: "style__StyledChevronRightIcon",
1231
- componentId: "lui__sc-1pa95jd-3"
1232
- })(["", ";"], positionedRight);
1233
-
1234
- var ChatLink = _ref => {
1235
- var {
1236
- disabled,
1237
- onChatLinkClick,
1238
- teamMember,
1239
- hasNew,
1240
- isChatOpen
1241
- } = _ref;
1242
- return /*#__PURE__*/jsx(ChatLinKWrapper, {
1243
- disabled: disabled,
1244
- isChatOpen: isChatOpen,
1245
- children: /*#__PURE__*/jsxs(LinkWrapper, {
1246
- onClick: onChatLinkClick,
1247
- "aria-label": "Chat Online",
1248
- children: [/*#__PURE__*/jsx(ChatIcon, {
1249
- hasNew: hasNew
1250
- }), /*#__PURE__*/jsxs(ChatBodyWrapper, {
1251
- children: [/*#__PURE__*/jsx(BodyWrapper, {
1252
- size: "md",
1253
- children: teamMember && !disabled ? /*#__PURE__*/jsxs(Fragment, {
1254
- children: ["Chat with ", teamMember.firstName]
1255
- }) : /*#__PURE__*/jsx(Fragment, {
1256
- children: "Chat online"
1257
- })
1258
- }), /*#__PURE__*/jsx(StyledChevronRightIcon, {
1259
- color: getColour$1('interaction', 'main'),
1260
- height: "24px",
1261
- width: "24px"
1262
- })]
1263
- })]
1264
- })
1265
- });
1266
- };
1267
-
1268
- var SidePanel = _ref => {
1269
- var {
1270
- teamMember,
1271
- broker,
1272
- store,
1273
- hasChat,
1274
- isChatOpen,
1275
- onChatLinkClick,
1276
- disabled,
1277
- isOtherUserOnline,
1278
- hasNew
1279
- } = _ref;
1280
- return /*#__PURE__*/jsxs(Fragment, {
1281
- children: [/*#__PURE__*/jsx(TeamMemberInfo, {
1282
- teamMember: teamMember,
1283
- isOtherUserOnline: isOtherUserOnline
1284
- }), /*#__PURE__*/jsxs(ULOptions, {
1285
- children: [/*#__PURE__*/jsx(PanelLinks, {
1286
- teamMember: teamMember,
1287
- broker: broker,
1288
- store: store
1289
- }), hasChat && /*#__PURE__*/jsx(ChatLink, {
1290
- isChatOpen: isChatOpen,
1291
- disabled: disabled,
1292
- onChatLinkClick: onChatLinkClick,
1293
- teamMember: teamMember,
1294
- hasNew: hasNew
1295
- })]
1296
- })]
1297
- });
1298
- };
1299
-
1300
- styled.div.withConfig({
1301
- displayName: "style__MobileBrokerInfoWrapper",
1302
- componentId: "lui__sc-18wuygo-0"
1303
- })(["display:flex;align-items:center;"]);
1304
- var FaceWrapper = styled.span.withConfig({
1305
- displayName: "style__FaceWrapper",
1306
- componentId: "lui__sc-18wuygo-1"
1307
- })(["position:relative;"]);
1308
- var BrokerFace = styled.img.withConfig({
1309
- displayName: "style__BrokerFace",
1310
- componentId: "lui__sc-18wuygo-2"
1311
- })(["width:20px;height:20px;border-radius:50%;border:1px solid ", ";"], color('shade.100'));
1312
- var StatusIcon = styled.span.withConfig({
1313
- displayName: "style__StatusIcon",
1314
- componentId: "lui__sc-18wuygo-3"
1315
- })(["width:8px;height:8px;border-radius:50%;position:absolute;right:-1px;bottom:4px;", ";"], props => props.isOnline ? bg('success.600') : bg('shade.400'));
1316
- var StyledFace = styled(Face).withConfig({
1317
- displayName: "style__StyledFace",
1318
- componentId: "lui__sc-18wuygo-4"
1319
- })(["height:26px;width:22px;"]);
1320
-
1321
- var ChatHeaderTeamMemberAvatar = _ref => {
1322
- var {
1323
- teamMember,
1324
- isBrokerOnline
1325
- } = _ref;
1326
- return /*#__PURE__*/jsxs(FaceWrapper, {
1327
- children: [teamMember !== null && teamMember !== void 0 && teamMember.profilePictureURL ? /*#__PURE__*/jsx(BrokerFace, {
1328
- src: teamMember.profilePictureURL
1329
- }) : /*#__PURE__*/jsx(StyledFace, {}), /*#__PURE__*/jsx(StatusIcon, {
1330
- isOnline: isBrokerOnline,
1331
- "aria-label": isBrokerOnline ? 'Online' : 'Offline'
1332
- })]
1333
- });
1334
- };
1335
-
1336
- var StickyHeader = styled.div.withConfig({
1337
- displayName: "style__StickyHeader",
1338
- componentId: "lui__sc-1pqeqpe-0"
1339
- })(["top:0;position:relative;display:flex;flex-direction:row;z-index:3;width:100%;background-color:", ";align-items:center;padding-left:10px;", " ", " border-bottom:1px solid ", ";cursor:pointer;"], getColour('interaction', 'subtle'), pt('xs'), pb('xxs'), getColour('background', 'surface'));
1340
- var TeamMemberBodyWrapper = styled(Body).withConfig({
1341
- displayName: "style__TeamMemberBodyWrapper",
1342
- componentId: "lui__sc-1pqeqpe-1"
1343
- })(["", ";font-size:16px;font-weight:bold;"], pl('xxs'));
1344
- var ChevronLeftIcon = styled(KeyboardArrowLeft).withConfig({
1345
- displayName: "style__ChevronLeftIcon",
1346
- componentId: "lui__sc-1pqeqpe-2"
1347
- })([""]);
1348
-
1349
- var FullViewChatHeader = _ref => {
1350
- var {
1351
- onClick,
1352
- teamMember,
1353
- isOtherUserOnline
1354
- } = _ref;
1355
- return /*#__PURE__*/jsx(StickyHeader, {
1356
- onClick: onClick,
1357
- children: /*#__PURE__*/jsx(Fragment, {
1358
- children: teamMember ? /*#__PURE__*/jsxs(Fragment, {
1359
- children: [/*#__PURE__*/jsx(ChevronLeftIcon, {
1360
- color: getColour$1('interaction', 'secondary'),
1361
- height: "24px",
1362
- width: "24px"
1363
- }), /*#__PURE__*/jsx(ChatHeaderTeamMemberAvatar, {
1364
- teamMember: teamMember,
1365
- isBrokerOnline: isOtherUserOnline
1366
- }), /*#__PURE__*/jsx(ChatBodyWrapper, {
1367
- children: /*#__PURE__*/jsx(TeamMemberBodyWrapper, {
1368
- size: "md",
1369
- color: "secondary.500",
1370
- children: teamMember ? "".concat(teamMember.firstName, " ").concat(teamMember.lastName) : 'Home Loan Specialist'
1371
- })
1372
- })]
1373
- }) : /*#__PURE__*/jsxs(Fragment, {
1374
- children: [/*#__PURE__*/jsx(KeyboardArrowLeft, {
1375
- color: getColour$1('interaction', 'secondary'),
1376
- height: "24px",
1377
- width: "24px"
1378
- }), /*#__PURE__*/jsx(BodyWrapper, {
1379
- size: "md",
1380
- children: "Chat online"
1381
- })]
1382
- })
1383
- })
1384
- });
1385
- };
1386
-
1387
- var StyledClose = styled(IconButton).withConfig({
1388
- displayName: "style__StyledClose",
1389
- componentId: "lui__sc-qeih4b-0"
1390
- })(["position:absolute;"]);
1391
-
1392
- var useDisableChat = () => {
1393
- var [isChatDisabled, setIsChatDisabled] = useState(true);
1394
- var {
1395
- disableChat,
1396
- enableAussieChat
1397
- } = useFlags();
1398
- var {
1399
- brand
1400
- } = useSession();
1401
- useEffect(() => {
1402
- if (brand === Brand$1.Aussie) {
1403
- if (enableAussieChat !== undefined) setIsChatDisabled(!enableAussieChat);
1404
- } else {
1405
- if (disableChat !== undefined) setIsChatDisabled(disableChat);
1406
- }
1407
- }, [disableChat, enableAussieChat, brand]);
1408
- return isChatDisabled;
1409
- };
1410
-
1411
- var WithChatView = _ref => {
1412
- var {
1413
- legacySupport,
1414
- userType,
1415
- isOtherUserOnline,
1416
- hasNew,
1417
- onException
1418
- } = _ref;
1419
- var {
1420
- closeCommPanel,
1421
- isChatOpen,
1422
- openChat,
1423
- closeChat,
1424
- teamMember,
1425
- broker,
1426
- store,
1427
- channelId,
1428
- migratedToConversation
1429
- } = useBootstrappedChatState();
1430
- var [breakpoint, setBreakpoint] = React.useState();
1431
- useBreakpoint(setBreakpoint);
1432
- var isMobile = breakpoint === 'mobile';
1433
- var hasChat = !useDisableChat();
1434
- return /*#__PURE__*/jsxs(Fragment, {
1435
- children: [!legacySupport && !(isChatOpen && isMobile) && /*#__PURE__*/jsx(StyledClose, {
1436
- color: "shade.300",
1437
- onClick: closeCommPanel,
1438
- size: "md",
1439
- "aria-label": "Close comm panel",
1440
- icon: Close
1441
- }), isChatOpen ? /*#__PURE__*/jsx(FullViewChatHeader, {
1442
- teamMember: teamMember,
1443
- isOtherUserOnline: isOtherUserOnline,
1444
- onClick: closeChat
1445
- }) : /*#__PURE__*/jsx(SidePanel, {
1446
- teamMember: teamMember,
1447
- store: store,
1448
- broker: broker,
1449
- hasChat: hasChat,
1450
- isChatOpen: isChatOpen,
1451
- disabled: false,
1452
- onChatLinkClick: openChat,
1453
- isOtherUserOnline: isOtherUserOnline,
1454
- hasNew: hasNew
1455
- }), hasChat && /*#__PURE__*/jsx(Chat$1, {
1456
- openChat: isChatOpen,
1457
- userType: userType,
1458
- teamMember: teamMember,
1459
- channelId: channelId,
1460
- migratedToConversation: migratedToConversation,
1461
- onException: onException
1462
- })]
1463
- });
1464
- };
1465
-
1466
- var CustomerCommPanel = _ref => {
1467
- var {
1468
- legacySupport = false,
1469
- isOtherUserOnline = false,
1470
- hasNew,
1471
- onException
1472
- } = _ref;
1473
- return /*#__PURE__*/jsx(CommPanelWrapper$1, {
1474
- children: /*#__PURE__*/jsx(WithChatView, {
1475
- legacySupport: legacySupport,
1476
- userType: 'customer',
1477
- isOtherUserOnline: isOtherUserOnline,
1478
- hasNew: hasNew,
1479
- onException: onException
1480
- })
1481
- });
1482
- };
1483
-
1484
- var _excluded$9 = ["children", "className", "isOpen", "handleClose", "topOffset"];
1485
- var _templateObject$8, _templateObject2$3;
1486
- var IS_OPEN_DATA_ATTRIBUTE = 'data-slideout-isOpen';
1487
- var slideInRight = keyframes(["0%{transform:translate3d(100%,0,0);}100%{transform:translate3d(0,0,0);}"]);
1488
- var slideOutRight = keyframes(["0%{transform:translate3d(0,0,0);}100%{transform:translate3d(100%,0,0);}"]);
1489
-
1490
- /**
1491
- * @todo z-index: tokenise z-index to make it easier to manage levels
1492
- */
1493
-
1494
- var StyledSlideoutMenu$1 = styled.div.withConfig({
1495
- displayName: "SlideoutMenuBase__StyledSlideoutMenu",
1496
- componentId: "lui__sc-msuqad-0"
1497
- })(["display:none;width:100%;position:fixed;top:0;bottom:0;right:0;z-index:2;animation-fill-mode:forwards;animation-duration:0.3s;animation-timing-function:ease;", " &.is-open{transform:translate3d(0,0,0);display:block;}&.slide-in-right{animation-name:", ";}&.slide-out-right{animation-name:", ";}", ""], gte('sm')(_templateObject$8 || (_templateObject$8 = _taggedTemplateLiteral(["\n width: ", ";;\n "])), pxToRem(375)), slideInRight, slideOutRight, _ref => {
1498
- var {
1499
- topOffset
1500
- } = _ref;
1501
- return topOffset && map(topOffset, value => value && "top: ".concat(value));
1502
- });
1503
-
1504
- // Sorry, 'any' typing hack to get rid of 'not a valid JSX element' warning when using in component return block
1505
- // @todo this is also an issue in the Theme component with global styles
1506
- // https://github.com/styled-components/styled-components/issues/3738
1507
- var BodyStyles = createGlobalStyle(["", ""], _ref2 => {
1508
- var {
1509
- isOpen
1510
- } = _ref2;
1511
- return isOpen && css(["[data-slideout-isOpen]{", "}"], between('xs', 'sm')(_templateObject2$3 || (_templateObject2$3 = _taggedTemplateLiteral(["\n overflow: hidden; \n "]))));
1512
- });
1513
- var useSlideoutMenu = () => {
1514
- var [showMenu, setShowMenu] = useState(false);
1515
- var toggleMenu = () => setShowMenu(!showMenu);
1516
- return {
1517
- showMenu,
1518
- toggleMenu
1519
- };
1520
- };
1521
- var SlideoutMenuBase = _ref3 => {
1522
- var {
1523
- children,
1524
- className,
1525
- isOpen,
1526
- handleClose,
1527
- topOffset
1528
- } = _ref3,
1529
- props = _objectWithoutProperties(_ref3, _excluded$9);
1530
- var globalProps = filterGlobalProps(props);
1531
- var slideoutRef = useRef(null);
1532
- var animationClassnames = isOpen ? "is-open slide-in-right" : 'slide-out-right';
1533
- var classNames = className ? "".concat(className, " ").concat(animationClassnames) : animationClassnames;
1534
-
1535
- // If the item is open listen for escape key
1536
- useEffect(() => {
1537
- var escapeEvent = event => {
1538
- if (event.key === 'Escape') {
1539
- // if there are multiple menus open, make sure we only close the one that is currently focused
1540
- if (slideoutRef.current !== null && slideoutRef !== null && slideoutRef !== void 0 && slideoutRef.current.contains(document.activeElement)) {
1541
- handleClose();
1542
- }
1543
- }
1544
- };
1545
- if (isOpen) {
1546
- window.addEventListener('keydown', escapeEvent);
1547
- if (slideoutRef !== null && slideoutRef !== void 0 && slideoutRef.current) slideoutRef.current.style.display = 'block';
1548
- }
1549
- return () => {
1550
- window.removeEventListener('keydown', escapeEvent);
1551
- };
1552
- }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps
1553
-
1554
- // Add data attribute to body as hook for indicating a slideout menu is open
1555
- useEffect(() => {
1556
- var allMenus = document.querySelectorAll('[data-is-open]');
1557
- var atLeastOneIsOpen = Array.from(allMenus).some(item => item.getAttribute('data-is-open') === 'true');
1558
- if (isOpen) {
1559
- document.body.setAttribute(IS_OPEN_DATA_ATTRIBUTE, '');
1560
- } else {
1561
- // If multiple menus are open, we only want to remove the open attribute when they are all closed
1562
- if (!atLeastOneIsOpen) {
1563
- document.body.removeAttribute(IS_OPEN_DATA_ATTRIBUTE);
1564
- }
1565
- }
1566
- }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps
1567
-
1568
- var onAnimationEnd = () => {
1569
- if (!isOpen) {
1570
- var _slideoutRef$current, _slideoutRef$current$;
1571
- // happens after close
1572
- slideoutRef === null || slideoutRef === void 0 ? void 0 : (_slideoutRef$current = slideoutRef.current) === null || _slideoutRef$current === void 0 ? void 0 : (_slideoutRef$current$ = _slideoutRef$current.classList) === null || _slideoutRef$current$ === void 0 ? void 0 : _slideoutRef$current$.remove("slide-out-right");
1573
- if (slideoutRef !== null && slideoutRef !== void 0 && slideoutRef.current) slideoutRef.current.style.display = 'none';
1574
- } else {
1575
- var _slideoutRef$current2;
1576
- // happens after open
1577
- slideoutRef === null || slideoutRef === void 0 ? void 0 : (_slideoutRef$current2 = slideoutRef.current) === null || _slideoutRef$current2 === void 0 ? void 0 : _slideoutRef$current2.classList.remove("slide-in-right");
1578
- }
1579
- };
1580
- return /*#__PURE__*/jsxs(FocusLock, {
1581
- disabled: !isOpen,
1582
- returnFocus: true,
1583
- children: [/*#__PURE__*/jsx(BodyStyles, {
1584
- isOpen: isOpen
1585
- }), /*#__PURE__*/jsx(StyledSlideoutMenu$1, _objectSpread2(_objectSpread2({
1586
- className: classNames,
1587
- topOffset: topOffset
1588
- }, globalProps), {}, {
1589
- onAnimationEnd: onAnimationEnd,
1590
- ref: slideoutRef,
1591
- "data-is-open": isOpen,
1592
- children: children
1593
- }))]
1594
- });
1595
- };
1596
-
1597
- var _templateObject$7;
1598
- var CommPanelWrapper = styled(SlideoutMenuBase).withConfig({
1599
- displayName: "CommPanelProvider__CommPanelWrapper",
1600
- componentId: "lui__sc-jqofne-0"
1601
- })(["max-width:", ";background-color:", ";box-shadow:0px 4px 4px 0px ", ";", " ", ";"], pxToRem(375), getColour('shade', 0), getColour('shade', 200), _ref => {
1602
- var {
1603
- topOffset,
1604
- toTheTop
1605
- } = _ref;
1606
- if (!toTheTop) {
1607
- if (topOffset) {
1608
- return map(topOffset, value => value && "top: ".concat(value, ";"));
1609
- } else {
1610
- return css(["top:", ";", ";"], navTokens.size.height.navbar.mobile.value, gte('desktop')(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteral(["\n top: ", ";\n "])), navTokens.size.height.navbar.desktop.value));
1611
- }
1612
- }
1613
- }, _ref2 => {
1614
- var {
1615
- toTheTop
1616
- } = _ref2;
1617
- return toTheTop && css(["top:0;z-index:999;"]);
1618
- });
1619
- var withCommPanelWrapper = Component =>
1620
- // eslint-disable-next-line react/display-name
1621
- props => {
1622
- var {
1623
- onException
1624
- } = useError();
1625
- var {
1626
- isCommPanelOpen,
1627
- openCommPanel,
1628
- closeCommPanel,
1629
- teamMember,
1630
- channelId
1631
- } = useBootstrappedChatState();
1632
- var [hasUnread, setHasUnread] = React.useState(false);
1633
- var [isOtherUserOnline, setIsOtherUserOnline] = React.useState(false);
1634
- var [breakpoint, setBreakpoint] = React.useState();
1635
- useBreakpoint(setBreakpoint);
1636
- var theme = getThemeName();
1637
- var shouldFullScreen = theme === 'aussie' || breakpoint === 'mobile';
1638
- return /*#__PURE__*/jsxs(ChatDataExposureContext.Provider, {
1639
- value: {
1640
- setHasUnReadMessage: hasUnreadMessages => setHasUnread(hasUnreadMessages),
1641
- setStatus: status => setIsOtherUserOnline(status)
1642
- },
1643
- children: [/*#__PURE__*/jsx(Component, _objectSpread2(_objectSpread2({}, props), {}, {
1644
- isCommPanelOpen: isCommPanelOpen,
1645
- hasUnread: hasUnread,
1646
- closeCommPanel: closeCommPanel,
1647
- openCommPanel: openCommPanel,
1648
- latestTeamMember: teamMember
1649
- })), /*#__PURE__*/jsx(CommPanelWrapper, _objectSpread2(_objectSpread2({
1650
- isOpen: isCommPanelOpen,
1651
- handleClose: closeCommPanel,
1652
- toTheTop: shouldFullScreen,
1653
- topOffset: props === null || props === void 0 ? void 0 : props.topOffset
1654
- }, props), {}, {
1655
- children: /*#__PURE__*/jsx(CustomerCommPanel, {
1656
- channelId: channelId,
1657
- hasNew: hasUnread,
1658
- isOtherUserOnline: isOtherUserOnline,
1659
- onException: onException
1660
- })
1661
- }))]
1662
- });
1663
- };
1664
- var withCommPanel = Component => withCustomerChatProvider(withCommPanelWrapper(Component));
1665
-
1666
- var withRestrictionProvider = Component => props => /*#__PURE__*/jsx(RestrictionProvider, {
1667
- children: /*#__PURE__*/jsx(Component, _objectSpread2({}, props))
1668
- });
1669
-
1670
- var SimpleNavbarComponent = _ref => {
1671
- var {
1672
- // Public props
1673
- useTransparent = false,
1674
- showBookanAppointmentCta = true,
1675
- showTalkToExpertCta = true,
1676
- homeURL,
1677
- params = '',
1678
- continueURL = '/',
1679
- onLogout,
1680
- showContinueAction = false,
1681
- hideDashboardItem,
1682
- hideManageApplicationsItem,
1683
- // Internal props, from ChatProps
1684
- isCommPanelOpen,
1685
- hasUnread,
1686
- closeCommPanel,
1687
- openCommPanel: _openCommPanel,
1688
- latestTeamMember
1689
- } = _ref;
1690
- var session = useSession();
1691
- var isAuthenticated = session.status === Status.Authenticated;
1692
- var hasWindow = typeof window !== 'undefined';
1693
- var utmCampaign = hasWindow ? new URLSearchParams(window.location.search).get('utm_campaign') : null;
1694
- return /*#__PURE__*/jsxs(NavbarWrapper, {
1695
- isTransparent: useTransparent,
1696
- isAuthenticated: isAuthenticated,
1697
- children: [/*#__PURE__*/jsx(NavbarLeftWrapper, {
1698
- children: /*#__PURE__*/jsx(LogoComponent$1, {
1699
- homeURL: homeURL,
1700
- params: params,
1701
- "aria-label": "Logo",
1702
- hasHamburgerMenu: false
1703
- })
1704
- }), /*#__PURE__*/jsx(NavbarRightWrapper, {
1705
- children: /*#__PURE__*/jsx(DropdownProvider, {
1706
- hideDashboardItem: hideDashboardItem,
1707
- hideManageApplicationsItem: hideManageApplicationsItem,
1708
- onLogout: onLogout,
1709
- children: /*#__PURE__*/jsx(CTAButtons$3, {
1710
- showTalkToExpertCta: showTalkToExpertCta,
1711
- showBookanAppointmentCta: showBookanAppointmentCta,
1712
- isAuthenticated: isAuthenticated,
1713
- continueURL: continueURL,
1714
- utmCampaign: utmCampaign,
1715
- showContinueAction: showContinueAction,
1716
- openCommPanel: () => isCommPanelOpen ? closeCommPanel() : _openCommPanel(),
1717
- teamMember: latestTeamMember,
1718
- hasUnreadMessages: hasUnread
1719
- })
1720
- })
1721
- })]
1722
- });
1723
- };
1724
- var SimpleNavbar = withErrorProvider(withRestrictionProvider(withLendiLDProvider(withCommPanel(withDomainChat(SimpleNavbarComponent)))));
1725
-
1726
- var GuestNavbar = _ref => {
1727
- var {
1728
- useTransparent = false,
1729
- homeURL,
1730
- params = ''
1731
- } = _ref;
1732
- return /*#__PURE__*/jsx(NavbarWrapper, {
1733
- isTransparent: useTransparent,
1734
- isAuthenticated: false,
1735
- children: /*#__PURE__*/jsx(NavbarLeftWrapper, {
1736
- children: /*#__PURE__*/jsx(LogoComponent$1, {
1737
- homeURL: homeURL,
1738
- params: params,
1739
- "aria-label": "Logo",
1740
- hasHamburgerMenu: false
1741
- })
1742
- })
1743
- });
1744
- };
1745
-
1746
- var MULTI_MENU_OPTIONS = [{
1747
- label: 'Home loans',
1748
- link: '/home-loans/',
1749
- children: [{
1750
- label: 'Find your home loan',
1751
- link: '/home-loans/basics/'
1752
- }, {
1753
- label: 'Refinance your loan',
1754
- link: '/home-loans/refinance/'
1755
- }, {
1756
- label: 'Buy your first home',
1757
- link: '/home-loans/first-home-buyer/'
1758
- }, {
1759
- label: 'Buy your next home',
1760
- link: '/home-loans/buying/'
1761
- }, {
1762
- label: 'Invest in property',
1763
- link: '/home-loans/investment/'
1764
- }, {
1765
- label: 'Build your home',
1766
- link: '/home-loans/construction/'
1767
- }, {
1768
- label: 'Property value report',
1769
- link: '/property-report/'
1770
- }]
1771
- }, {
1772
- label: 'Calculators',
1773
- link: '/calculators/',
1774
- children: [{
1775
- label: 'Property report',
1776
- link: '/property-report/'
1777
- }, {
1778
- label: 'Borrowing power calculator',
1779
- link: '/home-loans/calculators/borrowing-power-calculator/'
1780
- }, {
1781
- label: 'Repayment calculator',
1782
- link: '/calculators/home-loan-repayment-calculator/'
1783
- }, {
1784
- label: 'Stamp duty calculator',
1785
- link: '/home-loans/stamp-duty/calculator/?page=0'
1786
- }, {
1787
- label: 'Offset calculator',
1788
- link: '/calculators/offset-calculator/'
1789
- }, {
1790
- label: 'Equity calculator',
1791
- link: '/calculators/equity-calculator/'
1792
- }, {
1793
- label: 'LMI Calculator',
1794
- link: '/calculators/home-loans/lmi-calculator/'
1795
- }, {
1796
- label: 'Debt consolidation calculator',
1797
- link: '/calculators/home-loans/debt-consolidation-calculator/'
1798
- }]
1799
- }, {
1800
- label: 'Blog',
1801
- link: '/inspire/',
1802
- children: [{
1803
- label: 'Insights',
1804
- link: '/inspire/category/insights/'
1805
- }, {
1806
- label: 'Finance',
1807
- link: '/inspire/category/finance/'
1808
- }, {
1809
- label: 'Lifestyle',
1810
- link: '/inspire/category/lifestyle/'
1811
- }, {
1812
- label: 'Lendi homes',
1813
- link: '/inspire/category/lendi-homes/'
1814
- }, {
1815
- label: 'Property',
1816
- link: '/inspire/category/property/'
1817
- }, {
1818
- label: 'Design',
1819
- link: '/inspire/category/design/'
1820
- }, {
1821
- label: 'Life at Lendi',
1822
- link: '/inspire/category/life-at-lendi/'
1823
- }]
1824
- }];
1825
-
1826
- var DesktopActions = _ref => {
1827
- var _window, _window$location, _window2, _window2$location;
1828
- var {
1829
- isAuthenticated,
1830
- continueURL,
1831
- showContinueAction = false,
1832
- openCommPanel = () => {},
1833
- teamMember,
1834
- hasUnreadMessages,
1835
- showTalkToExpertCta
1836
- } = _ref;
1837
- var brand = getBrandFromHostname();
1838
- var env = getEnvFromHostname((_window = window) === null || _window === void 0 ? void 0 : (_window$location = _window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname);
1839
- var signInURL = getSignInURL(brand, env, (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$location = _window2.location) === null || _window2$location === void 0 ? void 0 : _window2$location.href);
1840
- var primaryLabel = teamMember !== null && teamMember !== void 0 && teamMember.firstName ? "Talk to ".concat(teamMember.firstName) : LABEL_TALK_TO_EXPERT;
1841
- return /*#__PURE__*/jsxs(DesktopActionsWrapper, {
1842
- children: [showTalkToExpertCta && /*#__PURE__*/jsx(TalkExpertAction$1, {
1843
- variant: "secondary",
1844
- onClick: () => {
1845
- openCommPanel();
1846
- var event = {
1847
- event_name: 'Button Clicked',
1848
- category: EventCategory.NAVBAR,
1849
- buttonType: ButtonType.SECONDARY,
1850
- text: hasUnreadMessages ? 'You have an unread message' : 'Talk to an expert'
1851
- };
1852
- analytics(event);
1853
- },
1854
- size: "sm",
1855
- bigLabelAccomodate: isAuthenticated ? !showContinueAction : false,
1856
- children: hasUnreadMessages ? /*#__PURE__*/jsxs(Fragment, {
1857
- children: [/*#__PURE__*/jsx(UnreadMessageWrapper, {
1858
- "data-testid": "customer-view-unread-icon",
1859
- color: getColour$1('interaction', 'main'),
1860
- height: "2em",
1861
- width: "2em"
1862
- }), UNREAD_MESSAGE]
1863
- }) : /*#__PURE__*/jsx(Fragment, {
1864
- children: primaryLabel
1865
- })
1866
- }), /*#__PURE__*/jsx(SecondaryAction, {
1867
- bigLabelAccomodate: isAuthenticated ? !showContinueAction : false,
1868
- size: "sm",
1869
- variant: isAuthenticated ? showContinueAction ? 'emphasis' : 'primary' : 'primary',
1870
- href: isAuthenticated ? showContinueAction ? continueURL : ROUTE_BOOK_APPOINTMENT : signInURL,
1871
- onClick: () => {
1872
- var event = {
1873
- event_name: 'Button Clicked',
1874
- category: EventCategory.NAVBAR,
1875
- text: isAuthenticated ? showContinueAction ? 'Continue' : 'Book an Appointment' : 'Sign In',
1876
- buttonType: isAuthenticated ? showContinueAction ? ButtonType.EMPHASIS : ButtonType.PRIMARY : ButtonType.PRIMARY
1877
- };
1878
- analytics(event);
1879
- },
1880
- "aria-label": isAuthenticated ? showContinueAction ? LABEL_CONTINUE : BOOK_AN_APPOINTMENT : signInURL,
1881
- children: isAuthenticated ? showContinueAction ? LABEL_CONTINUE : BOOK_AN_APPOINTMENT : LABEL_SIGN_IN
1882
- }), isAuthenticated && /*#__PURE__*/jsx(LogoutComponent, {})]
1883
- });
1884
- };
1885
-
1886
- var MobileActions = _ref => {
1887
- var _window, _window$location, _window2, _window2$location;
1888
- var {
1889
- isAuthenticated,
1890
- continueURL,
1891
- showContinueAction = false,
1892
- openCommPanel = () => {},
1893
- teamMember,
1894
- hasUnreadMessages,
1895
- showTalkToExpertCta
1896
- } = _ref;
1897
- var brand = getBrandFromHostname();
1898
- var env = getEnvFromHostname((_window = window) === null || _window === void 0 ? void 0 : (_window$location = _window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname);
1899
- var signInURL = getSignInURL(brand, env, (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$location = _window2.location) === null || _window2$location === void 0 ? void 0 : _window2$location.href);
1900
- var {
1901
- isTransparent
1902
- } = useNavbarBaseContext();
1903
- var secondaryLabel = teamMember !== null && teamMember !== void 0 && teamMember.firstName ? "Talk to ".concat(teamMember.firstName) : CONTACT_US;
1904
- return /*#__PURE__*/jsxs(MobileActionsWrapper, {
1905
- children: [showTalkToExpertCta && /*#__PURE__*/jsx(TalkExpertActionMobile, {
1906
- className: "noHover",
1907
- variant: "secondary",
1908
- onClick: () => {
1909
- openCommPanel();
1910
- var event = {
1911
- event_name: 'Button Clicked',
1912
- category: EventCategory.NAVBAR,
1913
- buttonType: ButtonType.SECONDARY,
1914
- text: hasUnreadMessages ? 'You have an unread message' : 'Contact us'
1915
- };
1916
- analytics(event);
1917
- },
1918
- "aria-label": CONTACT_US,
1919
- size: "sm",
1920
- isInverse: isTransparent,
1921
- isContinue: showContinueAction,
1922
- children: hasUnreadMessages ? /*#__PURE__*/jsxs(Fragment, {
1923
- children: [/*#__PURE__*/jsx(UnreadMessageWrapper, {
1924
- "data-testid": "customer-view-unread-icon",
1925
- color: getColour$1('interaction', 'main'),
1926
- height: "2em",
1927
- width: "2em"
1928
- }), UNREAD_MESSAGE_MOBILE]
1929
- }) : /*#__PURE__*/jsxs(Fragment, {
1930
- children: [" ", secondaryLabel]
1931
- })
1932
- }), isAuthenticated ? /*#__PURE__*/jsx(Fragment, {
1933
- children: showContinueAction && /*#__PURE__*/jsx(SecondaryActionMobile, {
1934
- size: "sm",
1935
- variant: 'emphasis',
1936
- href: continueURL,
1937
- "aria-label": LABEL_CONTINUE,
1938
- onClick: () => {
1939
- var event = {
1940
- event_name: 'Button Clicked',
1941
- category: EventCategory.NAVBAR,
1942
- text: 'Continue',
1943
- buttonType: ButtonType.EMPHASIS
1944
- };
1945
- analytics(event);
1946
- },
1947
- children: LABEL_CONTINUE
1948
- })
1949
- }) : /*#__PURE__*/jsx(SecondaryActionMobile, {
1950
- size: "sm",
1951
- variant: 'primary',
1952
- href: signInURL,
1953
- "aria-label": signInURL,
1954
- onClick: () => {
1955
- var event = {
1956
- event_name: 'Button Clicked',
1957
- category: EventCategory.NAVBAR,
1958
- text: 'Sign In',
1959
- buttonType: ButtonType.PRIMARY
1960
- };
1961
- analytics(event);
1962
- },
1963
- children: LABEL_SIGN_IN
1964
- })]
1965
- });
1966
- };
1967
-
1968
- var CTAButtons = props => {
1969
- return /*#__PURE__*/jsxs(Fragment, {
1970
- children: [/*#__PURE__*/jsx(DesktopActions, _objectSpread2({}, props)), /*#__PURE__*/jsx(MobileActions, _objectSpread2({}, props))]
1971
- });
1972
- };
1973
- var CTAButtons$1 = CTAButtons;
1974
-
1975
- var _templateObject$6;
1976
- var HamBurgerMenu = _ref => {
1977
- var {
1978
- toggleSidebar,
1979
- leftSidebarState
1980
- } = _ref;
1981
- var {
1982
- isTransparent
1983
- } = useNavbarBaseContext();
1984
- var commonButtonStyle = css(["height:", ";width:", ";color:", ";"], deriveSize(1.6), deriveSize(1.6), _ref2 => {
1985
- var {
1986
- theme
1987
- } = _ref2;
1988
- return isTransparent ? theme.color.interaction.subtle : theme.color.interaction.main;
1989
- });
1990
- var CloseButton = styled(Close).withConfig({
1991
- displayName: "HamBurgerMenu__CloseButton",
1992
- componentId: "lui__sc-y1cjve-0"
1993
- })(["", ""], commonButtonStyle);
1994
- var MenuButton = styled(Menu).withConfig({
1995
- displayName: "HamBurgerMenu__MenuButton",
1996
- componentId: "lui__sc-y1cjve-1"
1997
- })(["", ""], commonButtonStyle);
1998
- return /*#__PURE__*/jsx(HamBurgerWrapper, {
1999
- onClick: () => {
2000
- toggleSidebar(!leftSidebarState);
2001
- var event = {
2002
- event_name: 'Menu Clicked',
2003
- category: EventCategory.NAVBAR,
2004
- menuName: 'Hamburger Menu'
2005
- };
2006
- analytics(event);
2007
- },
2008
- children: leftSidebarState ? /*#__PURE__*/jsx(CloseButton, {
2009
- "aria-label": "close menu"
2010
- }) : /*#__PURE__*/jsx(MenuButton, {
2011
- "aria-label": "open menu"
2012
- })
2013
- });
2014
- };
2015
- var HamBurgerWrapper = styled.a.withConfig({
2016
- displayName: "HamBurgerMenu__HamBurgerWrapper",
2017
- componentId: "lui__sc-y1cjve-2"
2018
- })(["", ";cursor:pointer;"], gte('desktop')(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteral(["\n display: none;\n "]))));
2019
- var HamBurgerMenu$1 = HamBurgerMenu;
2020
-
2021
- var ITEM_HEIGHT = '40px';
2022
- var ItemsWrapper = styled.ul.withConfig({
2023
- displayName: "indexstyle__ItemsWrapper",
2024
- componentId: "lui__sc-1j3tn22-0"
2025
- })(["", ";", ";list-style:none;height:100%;overflow-y:scroll;overflow-x:hidden;"], my('nil'), pl('nil'));
2026
- var Item = styled.button.withConfig({
2027
- displayName: "indexstyle__Item",
2028
- componentId: "lui__sc-1j3tn22-1"
2029
- })([":last-child{border-bottom:1px solid ", ";}background-color:inherit;border:none;text-align:left;cursor:pointer;border-top:1px solid ", ";font-family:", ";font-weight:600;font-size:11px;text-transform:uppercase;", ";width:100%;height:", ";line-height:", ";", ";:hover{", ";}"], color('shade.100'), color('shade.100'), select('typography.body.fontFamily'), fg('secondary.500'), ITEM_HEIGHT, ITEM_HEIGHT, pl('sm'), bg('shade.25'));
2030
- var RightArrow = styled(ArrowDropDown).attrs({
2031
- color: 'secondary.500'
2032
- }).withConfig({
2033
- displayName: "indexstyle__RightArrow",
2034
- componentId: "lui__sc-1j3tn22-2"
2035
- })(["line-height:0;", ";transform:rotate(-90deg);height:18px;width:18px;transition:transform 0.5s;", ""], mr('sm'), _ref => {
2036
- var {
2037
- shouldRotate
2038
- } = _ref;
2039
- return css(["transform:rotate(", ");"], shouldRotate ? '0deg' : '-90deg');
2040
- });
2041
- var Accordion = styled.ul.withConfig({
2042
- displayName: "indexstyle__Accordion",
2043
- componentId: "lui__sc-1j3tn22-3"
2044
- })(["", ";list-style:none;height:0px;width:100%;transition:height 0.3s linear;overflow:hidden;", ""], pl('nil'), _ref2 => {
2045
- var {
2046
- isVisible,
2047
- children
2048
- } = _ref2;
2049
- return isVisible && css(["height:calc(", " * ", ");"], React.Children.count(children), ITEM_HEIGHT);
2050
- });
2051
- var SubItem = styled.li.withConfig({
2052
- displayName: "indexstyle__SubItem",
2053
- componentId: "lui__sc-1j3tn22-4"
2054
- })(["font-family:", ";font-size:12px;width:100%;", ";height:", ";transition:height 1s ease-out;line-height:", ";background-color:", ";"], select('typography.body.fontFamily'), pl('nil'), ITEM_HEIGHT, ITEM_HEIGHT, color('shade.25'));
2055
- var ItemLink = styled.a.withConfig({
2056
- displayName: "indexstyle__ItemLink",
2057
- componentId: "lui__sc-1j3tn22-5"
2058
- })(["text-decoration:none;color:", ";width:100%;"], color('secondary.500'));
2059
- var SubItemLink = styled.a.withConfig({
2060
- displayName: "indexstyle__SubItemLink",
2061
- componentId: "lui__sc-1j3tn22-6"
2062
- })(["text-decoration:none;color:", ";display:block;padding-left:48px;"], color('shade.900'));
2063
- var ListItem$1 = styled.li.withConfig({
2064
- displayName: "indexstyle__ListItem",
2065
- componentId: "lui__sc-1j3tn22-7"
2066
- })([""]);
2067
-
2068
- var LeftSidebarContent = _ref => {
2069
- var {
2070
- menuOptions: MENU_OPTIONS
2071
- } = _ref;
2072
- var [selected, setSelected] = React.useState(-1);
2073
- return /*#__PURE__*/jsx(ItemsWrapper, {
2074
- role: "menu",
2075
- children: MENU_OPTIONS.map((item, index) => item.children.length > 0 ? /*#__PURE__*/jsxs(ListItem$1, {
2076
- children: [/*#__PURE__*/jsxs(Item, {
2077
- onClick: () => {
2078
- setSelected(index);
2079
- var event = {
2080
- event_name: 'Menu Clicked',
2081
- menuName: item.label,
2082
- category: EventCategory.NAVBAR
2083
- };
2084
- analytics(event);
2085
- },
2086
- "aria-label": item.label,
2087
- children: [/*#__PURE__*/jsx(RightArrow, {
2088
- shouldRotate: selected === index
2089
- }), /*#__PURE__*/jsx("span", {
2090
- children: item.label
2091
- })]
2092
- }), /*#__PURE__*/jsx(Accordion, {
2093
- isVisible: selected === index,
2094
- "aria-expanded": selected === index,
2095
- children: item.children.map((child, childIndex) => /*#__PURE__*/jsx(SubItem, {
2096
- role: "none",
2097
- children: /*#__PURE__*/jsx(SubItemLink, {
2098
- role: "menuitem",
2099
- href: child.link,
2100
- "aria-label": child.label,
2101
- onClick: () => {
2102
- var event = {
2103
- event_name: 'Menu Element Clicked',
2104
- menuName: item.label,
2105
- text: child.label,
2106
- category: EventCategory.NAVBAR
2107
- };
2108
- analytics(event);
2109
- },
2110
- children: child.label
2111
- })
2112
- }, index + '-' + childIndex))
2113
- })]
2114
- }, index) : /*#__PURE__*/jsx(ListItem$1, {
2115
- role: "none",
2116
- children: item.link ? /*#__PURE__*/jsx(Item, {
2117
- children: /*#__PURE__*/jsx(ItemLink, {
2118
- role: "menuitem",
2119
- href: item.link,
2120
- "aria-label": item.label,
2121
- onClick: () => {
2122
- var event = {
2123
- event_name: 'Menu Element Clicked',
2124
- menuName: item.label,
2125
- text: '',
2126
- category: EventCategory.NAVBAR
2127
- };
2128
- analytics(event);
2129
- },
2130
- children: /*#__PURE__*/jsx("span", {
2131
- children: item.label
2132
- })
2133
- })
2134
- }) : /*#__PURE__*/jsx(Item, {
2135
- "aria-label": item.label,
2136
- children: /*#__PURE__*/jsx("span", {
2137
- children: item.label
2138
- })
2139
- })
2140
- }, index))
2141
- });
2142
- };
2143
-
2144
- var FooterCTA = _ref => {
2145
- var {
2146
- isAuthenticated = false,
2147
- continueURL = '/',
2148
- onLogout = () => {},
2149
- showContinueAction = false
2150
- } = _ref;
2151
- var theme = useTheme();
2152
- return /*#__PURE__*/jsxs(FooterWrapper, {
2153
- children: [/*#__PURE__*/jsx(FooterAction, {
2154
- variant: isAuthenticated ? showContinueAction ? 'emphasis' : 'primary' : 'primary',
2155
- isFullWidth: true,
2156
- href: isAuthenticated ? showContinueAction ? continueURL : ROUTE_BOOK_APPOINTMENT : ROUTE_SIGN_IN,
2157
- onClick: () => {
2158
- var event = {
2159
- event_name: 'Button Clicked',
2160
- buttonType: isAuthenticated ? showContinueAction ? ButtonType.EMPHASIS : ButtonType.PRIMARY : ButtonType.PRIMARY,
2161
- text: isAuthenticated ? showContinueAction ? 'Continue' : 'Book an Appointment' : 'Sign In',
2162
- category: EventCategory.NAVBAR
2163
- };
2164
- analytics(event);
2165
- },
2166
- "aria-label": isAuthenticated ? showContinueAction ? LABEL_CONTINUE : BOOK_AN_APPOINTMENT : LABEL_SIGN_IN,
2167
- children: isAuthenticated ? showContinueAction ? LABEL_CONTINUE : BOOK_AN_APPOINTMENT : LABEL_SIGN_IN
2168
- }), isAuthenticated && /*#__PURE__*/jsxs(FooterAction, {
2169
- variant: "empty",
2170
- onClick: () => {
2171
- onLogout();
2172
- var event = {
2173
- event_name: 'Button Clicked',
2174
- buttonType: ButtonType.EMPTY,
2175
- text: 'Log Out',
2176
- category: EventCategory.NAVBAR
2177
- };
2178
- analytics(event);
2179
- },
2180
- "aria-label": LABEL_LOG_OUT,
2181
- children: [/*#__PURE__*/jsx(ExitToApp, {
2182
- color: theme.color.interaction.main
2183
- }), LABEL_LOG_OUT]
2184
- })]
2185
- });
2186
- };
2187
- var FooterAction = styled(Button).withConfig({
2188
- displayName: "FooterCTA__FooterAction",
2189
- componentId: "lui__sc-uimopi-0"
2190
- })(["width:100%;border:none;line-height:1.1;"]);
2191
- var FooterWrapper = styled.div.withConfig({
2192
- displayName: "FooterCTA__FooterWrapper",
2193
- componentId: "lui__sc-uimopi-1"
2194
- })(["display:flex;flex-direction:column;justify-content:center;align-items:center;box-shadow:0 3px 5px 0 rgba(0,0,0,0.14),0 1px 18px 0 rgba(0,0,0,0.12),0 6px 10px 0 rgba(0,0,0,0.14);", ";", ""], px('sm'), py('sm'));
2195
- var FooterCTA$1 = FooterCTA;
2196
-
2197
- var LeftSidebar = _ref => {
2198
- var {
2199
- openSidebar,
2200
- closeSidebar,
2201
- isAuthenticated,
2202
- onLogout,
2203
- continueURL,
2204
- showContinueAction,
2205
- menuOptions
2206
- } = _ref;
2207
- // Left sidebar only appears for mobile/tablet and navbar-base height will be 56px, which could be offsetTop value for left-sidebar.
2208
- return /*#__PURE__*/jsxs(Sidebar, {
2209
- isVisible: openSidebar,
2210
- onHide: closeSidebar,
2211
- top: 56,
2212
- children: [/*#__PURE__*/jsx(Sidebar.Content, {
2213
- children: /*#__PURE__*/jsx(LeftSidebarContent, {
2214
- menuOptions: menuOptions
2215
- })
2216
- }), /*#__PURE__*/jsx(Sidebar.Footer, {
2217
- children: /*#__PURE__*/jsx(FooterCTA$1, {
2218
- isAuthenticated: isAuthenticated,
2219
- onLogout: onLogout,
2220
- continueURL: continueURL,
2221
- showContinueAction: showContinueAction
2222
- })
2223
- })]
2224
- });
2225
- };
2226
- var LeftSidebar$1 = LeftSidebar;
2227
-
2228
- var _templateObject$5;
2229
- var PanelLink = styled(Link).withConfig({
2230
- displayName: "indexstyle__PanelLink",
2231
- componentId: "lui__sc-56jb5a-0"
2232
- })(["text-decoration:none;overflow:hidden;font-weight:normal;:hover,:focus,:active{", "}"], fg('shade.700'));
2233
- var PanelButton = styled(Button).withConfig({
2234
- displayName: "indexstyle__PanelButton",
2235
- componentId: "lui__sc-56jb5a-1"
2236
- })(["", ""], ml('sm'));
2237
- var LinksGroup = styled.ul.withConfig({
2238
- displayName: "indexstyle__LinksGroup",
2239
- componentId: "lui__sc-56jb5a-2"
2240
- })(["list-style-type:none;", " ", " ", ""], grid(), p('nil'), m('nil'));
2241
- var LinkItem = styled.li.withConfig({
2242
- displayName: "indexstyle__LinkItem",
2243
- componentId: "lui__sc-56jb5a-3"
2244
- })(["", " ", " ", ""], unit({
2245
- size: 1 / 4
2246
- }), py('xxs'), pr('xs'));
2247
- var HeadingWrapper = styled.div.withConfig({
2248
- displayName: "indexstyle__HeadingWrapper",
2249
- componentId: "lui__sc-56jb5a-4"
2250
- })(["display:flex;flex-direction:row;align-items:center;", ""], mb('xs'));
2251
- var HeadingLink = styled(Link).withConfig({
2252
- displayName: "indexstyle__HeadingLink",
2253
- componentId: "lui__sc-56jb5a-5"
2254
- })(["display:flex;flex-direction:row;align-items:center;overflow:hidden;text-decoration:none;:hover,:focus,:active{", "}"], fg('secondary.500'));
2255
- var DisplayPanel = styled.div.withConfig({
2256
- displayName: "indexstyle__DisplayPanel",
2257
- componentId: "lui__sc-56jb5a-6"
2258
- })(["width:100%;position:absolute;margin-top:10px;border-radius:", ";max-width:500px;left:0;", " ", " ", ""], select('borderRadius'), depth(4), bg('shade.0'), p('md'));
2259
- var Bar = styled.div.withConfig({
2260
- displayName: "indexstyle__Bar",
2261
- componentId: "lui__sc-56jb5a-7"
2262
- })(["height:2px;width:", ";transition:width ease-in-out 300ms;", ""], _ref => {
2263
- var {
2264
- isSelected
2265
- } = _ref;
2266
- return isSelected ? 'calc(100% - 16px)' : '0';
2267
- }, _ref2 => {
2268
- var {
2269
- isTransparent
2270
- } = _ref2;
2271
- return isTransparent ? css(["", ""], bg('shade.0')) : css(["", ";"], bg('secondary.500'));
2272
- });
2273
- var UnOrderedList = styled.ul.withConfig({
2274
- displayName: "indexstyle__UnOrderedList",
2275
- componentId: "lui__sc-56jb5a-8"
2276
- })(["list-style-type:none;display:flex;flex-direction:row;justify-content:center;align-items:center;", " ", ""], p('nil'), m('nil'));
2277
- var ListItem = styled.li.withConfig({
2278
- displayName: "indexstyle__ListItem",
2279
- componentId: "lui__sc-56jb5a-9"
2280
- })(["list-style-type:none;"]);
2281
- var LinkOption = styled(Link).withConfig({
2282
- displayName: "indexstyle__LinkOption",
2283
- componentId: "lui__sc-56jb5a-10"
2284
- })(["display:inline-flex;flex-direction:column;overflow:hidden;", ";", ";text-decoration:none;:hover,:focus,:active{text-decoration:none;}color:", ";"], pr('md'), pl('nil'), _ref3 => {
2285
- var {
2286
- theme,
2287
- isTransparent
2288
- } = _ref3;
2289
- if (isTransparent) return theme.color.text.inverse;
2290
- if (theme.name === 'lendi') return theme.color.text.contrast;
2291
- return theme.color.text.contrast;
2292
- });
2293
- var ExpandMoreWrapper = styled(ExpandMore).withConfig({
2294
- displayName: "indexstyle__ExpandMoreWrapper",
2295
- componentId: "lui__sc-56jb5a-11"
2296
- })(["& svg{display:block;}font-weight:bold;transform:", ";transition:transform ease-in-out 300ms;color:", ";"], _ref4 => {
2297
- var {
2298
- isSelected
2299
- } = _ref4;
2300
- return isSelected ? 'rotate(180deg)' : undefined;
2301
- }, _ref5 => {
2302
- var {
2303
- theme,
2304
- isTransparent
2305
- } = _ref5;
2306
- if (isTransparent) return theme.color.text.inverse;
2307
- return theme.color.text.contrast;
2308
- });
2309
- var BarWrapper = styled.div.withConfig({
2310
- displayName: "indexstyle__BarWrapper",
2311
- componentId: "lui__sc-56jb5a-12"
2312
- })(["display:inline-flex;align-items:center;"]);
2313
- var Label = styled(Body).withConfig({
2314
- displayName: "indexstyle__Label",
2315
- componentId: "lui__sc-56jb5a-13"
2316
- })(["text-transform:uppercase;font-weight:bold;letter-spacing:0.8px;line-height:1;"]);
2317
- var OptionsContainer = styled.div.withConfig({
2318
- displayName: "indexstyle__OptionsContainer",
2319
- componentId: "lui__sc-56jb5a-14"
2320
- })(["width:100%;display:none;flex-direction:row;justify-content:space-between;align-items:center;", " ", ""], ml('lg'), gte('desktop')(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteral(["\n display: flex;\n position: relative;\n"]))));
2321
-
2322
- var prevSelected = '';
2323
- var MenuOptions = props => {
2324
- var {
2325
- isTransparent
2326
- } = useNavbarBaseContext();
2327
- var {
2328
- isAuthenticated,
2329
- params,
2330
- continueURL
2331
- } = props;
2332
- var [currentSelected, setCurrentSelected] = React.useState('');
2333
- var displayPanel = React.useRef(null);
2334
- var selectedItem = MULTI_MENU_OPTIONS.find(menuItem => menuItem.label === currentSelected);
2335
- var hasWindow = typeof window !== 'undefined';
2336
- useTheme();
2337
- React.useEffect(() => {
2338
- if (hasWindow) {
2339
- window.addEventListener('mousedown', closeDisplayPanel);
2340
- }
2341
- return () => {
2342
- if (hasWindow) {
2343
- window.removeEventListener('mousedown', closeDisplayPanel);
2344
- }
2345
- };
2346
- });
2347
- var closeDisplayPanel = e => {
2348
- prevSelected = currentSelected;
2349
- if (displayPanel && displayPanel.current && !displayPanel.current.contains(e.target)) {
2350
- setCurrentSelected('');
2351
- }
2352
- };
2353
- return /*#__PURE__*/jsx(OptionsContainer, {
2354
- children: /*#__PURE__*/jsx(UnOrderedList, {
2355
- children: MULTI_MENU_OPTIONS.map(_ref => {
2356
- var {
2357
- label,
2358
- children
2359
- } = _ref;
2360
- return /*#__PURE__*/jsxs(ListItem, {
2361
- children: [/*#__PURE__*/jsxs(LinkOption, {
2362
- onClick: () => {
2363
- onClickOption(label, setCurrentSelected);
2364
- var event = {
2365
- event_name: 'Menu Clicked',
2366
- category: EventCategory.NAVBAR,
2367
- menuName: label
2368
- };
2369
- analytics(event);
2370
- },
2371
- isTransparent: isTransparent,
2372
- type: "button",
2373
- children: [/*#__PURE__*/jsxs(BarWrapper, {
2374
- children: [/*#__PURE__*/jsx(Label, {
2375
- size: "xs",
2376
- children: label
2377
- }), children && /*#__PURE__*/jsx(ExpandMoreWrapper, {
2378
- isSelected: currentSelected === label,
2379
- isTransparent: isTransparent
2380
- })]
2381
- }), children && /*#__PURE__*/jsx(Bar, {
2382
- isSelected: currentSelected === label,
2383
- isTransparent: isTransparent
2384
- })]
2385
- }), currentSelected === label && /*#__PURE__*/jsxs(DisplayPanel, {
2386
- ref: displayPanel,
2387
- children: [/*#__PURE__*/jsxs(HeadingWrapper, {
2388
- children: [/*#__PURE__*/jsxs(HeadingLink, {
2389
- href: "".concat(selectedItem.link || '').concat(params),
2390
- onClick: () => {
2391
- var event = {
2392
- event_name: 'Menu Element Clicked',
2393
- menuName: currentSelected,
2394
- text: selectedItem.label,
2395
- category: EventCategory.NAVBAR
2396
- };
2397
- analytics(event);
2398
- },
2399
- children: [/*#__PURE__*/jsx(Heading, {
2400
- size: "md",
2401
- color: "secondary.500",
2402
- mr: "xxs",
2403
- children: currentSelected
2404
- }), /*#__PURE__*/jsx(KeyboardArrowRight, {
2405
- color: "secondary.500"
2406
- })]
2407
- }), currentSelected === 'Home loans' && /*#__PURE__*/jsx(PanelButton, {
2408
- size: "xs",
2409
- variant: isAuthenticated ? 'emphasis' : 'primary',
2410
- href: isAuthenticated ? continueURL : ROUTE_SIGN_IN,
2411
- onClick: () => {
2412
- var event = {
2413
- event_name: 'Menu Element Clicked',
2414
- category: EventCategory.NAVBAR,
2415
- menuName: currentSelected,
2416
- text: isAuthenticated ? 'Continue' : 'Sign In'
2417
- };
2418
- analytics(event);
2419
- },
2420
- children: isAuthenticated ? LABEL_CONTINUE : LABEL_SIGN_IN
2421
- })]
2422
- }), /*#__PURE__*/jsx(LinksGroup, {
2423
- children: selectedItem.children.map(child => /*#__PURE__*/jsx(LinkItem, {
2424
- children: /*#__PURE__*/jsx(PanelLink, {
2425
- size: "sm",
2426
- color: "shade.700",
2427
- href: "".concat(child.link).concat(params),
2428
- onClick: () => {
2429
- var event = {
2430
- event_name: 'Menu Element Clicked',
2431
- menuName: selectedItem.label,
2432
- text: child.label,
2433
- category: EventCategory.NAVBAR
2434
- };
2435
- analytics(event);
2436
- },
2437
- children: child.label
2438
- })
2439
- }, child.label))
2440
- })]
2441
- })]
2442
- }, label);
2443
- })
2444
- })
2445
- });
2446
- };
2447
- var onClickOption = (label, setCurrentSelected) => {
2448
- if (prevSelected === label) {
2449
- setCurrentSelected('');
2450
- } else {
2451
- setCurrentSelected(label);
2452
- }
2453
- };
2454
- var MenuOptions$1 = MenuOptions;
2455
-
2456
- var _excluded$8 = ["useTransparent", "homeURL", "params", "continueURL", "onLogout", "application", "showContinueAction", "showTalkToExpertCta", "hideDashboardItem", "hideManageApplicationsItem", "isCommPanelOpen", "hasUnread", "closeCommPanel", "openCommPanel", "latestTeamMember"];
2457
- var MultiNavbarComponent = _ref => {
2458
- var {
2459
- // Public props
2460
- useTransparent = false,
2461
- homeURL,
2462
- params = '',
2463
- continueURL = '/',
2464
- onLogout = () => {},
2465
- application,
2466
- showContinueAction,
2467
- showTalkToExpertCta,
2468
- hideDashboardItem,
2469
- hideManageApplicationsItem,
2470
- // Internal props, from ChatProps
2471
- isCommPanelOpen,
2472
- hasUnread,
2473
- closeCommPanel,
2474
- openCommPanel: _openCommPanel,
2475
- latestTeamMember
2476
- } = _ref,
2477
- otherProps = _objectWithoutProperties(_ref, _excluded$8);
2478
- var session = useSession();
2479
- var isAuthenticated = session.status === Status.Authenticated;
2480
- var [leftSidebarState, setLeftSidebarState] = React.useState(false);
2481
- return /*#__PURE__*/jsxs(Fragment, {
2482
- children: [/*#__PURE__*/jsx(LeftSidebar$1, {
2483
- menuOptions: MULTI_MENU_OPTIONS,
2484
- openSidebar: leftSidebarState,
2485
- closeSidebar: () => setLeftSidebarState(false),
2486
- isAuthenticated: isAuthenticated,
2487
- continueURL: continueURL,
2488
- onLogout: onLogout,
2489
- showContinueAction: showContinueAction
2490
- }), /*#__PURE__*/jsxs(NavbarWrapper, _objectSpread2(_objectSpread2({
2491
- isTransparent: useTransparent,
2492
- isAuthenticated: isAuthenticated
2493
- }, otherProps), {}, {
2494
- children: [/*#__PURE__*/jsx(NavbarLeftWrapper, {
2495
- children: /*#__PURE__*/jsxs(Container, {
2496
- children: [/*#__PURE__*/jsxs(MenuLogoWrapper, {
2497
- children: [/*#__PURE__*/jsx(HamBurgerMenu$1, {
2498
- toggleSidebar: toggle => setLeftSidebarState(toggle),
2499
- leftSidebarState: leftSidebarState
2500
- }), /*#__PURE__*/jsx(LogoComponent$1, {
2501
- homeURL: homeURL,
2502
- params: params
2503
- })]
2504
- }), /*#__PURE__*/jsx(MenuOptions$1, {
2505
- isAuthenticated: isAuthenticated,
2506
- continueURL: continueURL,
2507
- params: params
2508
- })]
2509
- })
2510
- }), /*#__PURE__*/jsx(NavbarRightWrapper, {
2511
- children: /*#__PURE__*/jsx(DropdownProvider, {
2512
- hideDashboardItem: hideDashboardItem,
2513
- hideManageApplicationsItem: hideManageApplicationsItem,
2514
- onLogout: onLogout,
2515
- children: /*#__PURE__*/jsx(CTAButtons$1, {
2516
- showTalkToExpertCta: showTalkToExpertCta,
2517
- isAuthenticated: isAuthenticated,
2518
- continueURL: continueURL,
2519
- showContinueAction: showContinueAction,
2520
- openCommPanel: () => isCommPanelOpen ? closeCommPanel() : _openCommPanel(),
2521
- teamMember: latestTeamMember,
2522
- hasUnreadMessages: hasUnread
2523
- })
2524
- })
2525
- })]
2526
- }))]
2527
- });
2528
- };
2529
- var MultiNavbar = withErrorProvider(withRestrictionProvider(withLendiLDProvider(withCommPanel(withDomainChat(MultiNavbarComponent)))));
2530
-
2531
- var _templateObject$4, _templateObject2$2, _templateObject3$1, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
2532
- var LargeTweakpoint = '67rem';
2533
- var Px = css(["padding-left:", ";padding-right:", ";"], pxToRem(16), pxToRem(16));
2534
- var Py = css(["padding-top:", ";padding-bottom:", ";"], pxToRem(24), pxToRem(24));
2535
- var MenuPadding = styled.div.withConfig({
2536
- displayName: "sharedstyles__MenuPadding",
2537
- componentId: "lui__sc-631j2u-0"
2538
- })(["", ";", ";"], Px, Py);
2539
- var MenuPaddingAlt = styled.div.withConfig({
2540
- displayName: "sharedstyles__MenuPaddingAlt",
2541
- componentId: "lui__sc-631j2u-1"
2542
- })(["padding-top:", ";padding-bottom:", ";", ";"], pxToRem(24), pxToRem(12), Px);
2543
- var listReset = css(["margin:0;list-style:none;padding:0;"]);
2544
- var buttonReset = css(["border:0;border-radius:0;background:none;width:100%;white-space:nowrap;text-decoration:none;margin:0;cursor:pointer;"]);
2545
- var insetFocusVisible = css(["&:focus-visible{background-color:#331745;outline:0;box-shadow:inset ", " 0.125rem 0.125rem 0 0,inset ", " -0.125rem -0.125rem 0 0,inset ", " 0.25rem 0.25rem 0 0,inset ", " -0.25rem -0.25rem 0 0;}"], _ref => {
2546
- var {
2547
- theme
2548
- } = _ref;
2549
- return theme.color.border.interaction.focus;
2550
- }, _ref2 => {
2551
- var {
2552
- theme
2553
- } = _ref2;
2554
- return theme.color.border.interaction.focus;
2555
- }, _ref3 => {
2556
- var {
2557
- theme
2558
- } = _ref3;
2559
- return theme.color.fill.main;
2560
- }, _ref4 => {
2561
- var {
2562
- theme
2563
- } = _ref4;
2564
- return theme.color.fill.main;
2565
- });
2566
- var focusVisible = css(["&:focus-visible{outline:0;box-shadow:", ";}"], getFocusRing());
2567
- var StyledHR = styled.hr.withConfig({
2568
- displayName: "sharedstyles__StyledHR",
2569
- componentId: "lui__sc-631j2u-2"
2570
- })(["margin-top:", ";margin-bottom:", ";&:last-child{margin-bottom:0;}"], pxToRem(24), pxToRem(24));
2571
- styled.div.withConfig({
2572
- displayName: "sharedstyles__HideFromLarge",
2573
- componentId: "lui__sc-631j2u-3"
2574
- })(["display:block;", ""], gte('lg')(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteral(["\n display: none;\n "]))));
2575
- var HideFromTweakLarge = styled.div.withConfig({
2576
- displayName: "sharedstyles__HideFromTweakLarge",
2577
- componentId: "lui__sc-631j2u-4"
2578
- })(["display:block;@media (min-width:", "){display:none;}"], LargeTweakpoint);
2579
- var ShowFromTweakLarge = styled.div.withConfig({
2580
- displayName: "sharedstyles__ShowFromTweakLarge",
2581
- componentId: "lui__sc-631j2u-5"
2582
- })(["display:none;@media (min-width:", "){display:block;}"], LargeTweakpoint);
2583
- styled.div.withConfig({
2584
- displayName: "sharedstyles__ShowFromLarge",
2585
- componentId: "lui__sc-631j2u-6"
2586
- })(["display:none;", ""], gte('lg')(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteral(["\n display: block;\n "]))));
2587
- var HideFromMedium = styled.div.withConfig({
2588
- displayName: "sharedstyles__HideFromMedium",
2589
- componentId: "lui__sc-631j2u-7"
2590
- })(["display:block;", ""], gte('md')(_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteral(["\n display: none;\n "]))));
2591
- var ShowFromMedium = styled.div.withConfig({
2592
- displayName: "sharedstyles__ShowFromMedium",
2593
- componentId: "lui__sc-631j2u-8"
2594
- })(["display:none;", ""], gte('md')(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: block;\n "]))));
2595
- var ShowFromSmall = styled.div.withConfig({
2596
- displayName: "sharedstyles__ShowFromSmall",
2597
- componentId: "lui__sc-631j2u-9"
2598
- })(["display:none;", ""], gte('sm')(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: block;\n "]))));
2599
- styled.div.withConfig({
2600
- displayName: "sharedstyles__HideFromSmall",
2601
- componentId: "lui__sc-631j2u-10"
2602
- })(["display:block;", ""], gte('sm')(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: none;\n "]))));
2603
- var ShowAtSmallOnly = styled.div.withConfig({
2604
- displayName: "sharedstyles__ShowAtSmallOnly",
2605
- componentId: "lui__sc-631j2u-11"
2606
- })(["display:none;", ";"], between('xs', 'sm')(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n display: block;\n "]))));
2607
- var ShowAtMediumOnly = styled.div.withConfig({
2608
- displayName: "sharedstyles__ShowAtMediumOnly",
2609
- componentId: "lui__sc-631j2u-12"
2610
- })(["display:none;", ";"], between('sm', 'lg')(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n display: block;\n "]))));
2611
- var SrOnlySpan = styled.span.withConfig({
2612
- displayName: "sharedstyles__SrOnlySpan",
2613
- componentId: "lui__sc-631j2u-13"
2614
- })(["", ";"], srOnly);
2615
-
2616
- var _excluded$7 = ["children", "isOpen", "onClick"],
2617
- _excluded2$1 = ["children", "href", "onClick", "isActive"];
2618
- /**
2619
- * @todo Line-height: prefer to use token but the current one is not accessible here
2620
- * @todo Helper functions: getTypography you have to specify each property of the font you need should this be simpler
2621
- * @todo Colors: Access the color pallett or update to semantic values
2622
- * @todo Remove font smoothing when wider solution reached for when we remove it globally
2623
- */
2624
-
2625
- var StyledNavButton = styled.button.withConfig({
2626
- displayName: "NavButtons__StyledNavButton",
2627
- componentId: "lui__sc-1rf7mpw-0"
2628
- })(["", ";color:", ";background-color:", ";font-family:", ";font-weight:", ";font-size:", ";line-height:1.5;padding:", " ", ";display:flex;align-items:center;justify-content:space-between;&:hover{color:", ";}", " ", ""], buttonReset, _ref => {
2629
- var {
2630
- theme
2631
- } = _ref;
2632
- return theme.color.text.inverse;
2633
- }, _ref2 => {
2634
- var {
2635
- theme
2636
- } = _ref2;
2637
- return theme.color.interaction.main;
2638
- }, () => getTypography('button1', 'fontFamily'), () => getTypography('button1', 'fontWeight'), pxToRem(16), pxToRem(12), pxToRem(16), _ref3 => {
2639
- var {
2640
- theme
2641
- } = _ref3;
2642
- return theme.color.interaction.emphasis;
2643
- }, _ref4 => {
2644
- var {
2645
- isOpen,
2646
- isActive,
2647
- theme
2648
- } = _ref4;
2649
- return (isOpen !== null && isOpen !== void 0 ? isOpen : isActive) ? "color: ".concat(theme.color.interaction.emphasis, ";") : null;
2650
- }, insetFocusVisible);
2651
- var StyledNavButtonText = styled.span.withConfig({
2652
- displayName: "NavButtons__StyledNavButtonText",
2653
- componentId: "lui__sc-1rf7mpw-1"
2654
- })(["margin-right:", ";"], pxToRem(4));
2655
- var NavButton = _ref5 => {
2656
- var {
2657
- children,
2658
- isOpen = false,
2659
- onClick
2660
- } = _ref5,
2661
- props = _objectWithoutProperties(_ref5, _excluded$7);
2662
- var globalProps = filterGlobalProps(props);
2663
- return /*#__PURE__*/jsxs(StyledNavButton, _objectSpread2(_objectSpread2({
2664
- type: "button",
2665
- "aria-expanded": isOpen,
2666
- isOpen: isOpen,
2667
- onClick: onClick
2668
- }, globalProps), {}, {
2669
- children: [/*#__PURE__*/jsx(StyledNavButtonText, {
2670
- children: children
2671
- }), !isOpen ? /*#__PURE__*/jsx(ChevronDown, {
2672
- width: "21px",
2673
- height: "21px"
2674
- }) : /*#__PURE__*/jsx(ChevronUp, {
2675
- width: "21px",
2676
- height: "21px"
2677
- })]
2678
- }));
2679
- };
2680
- var NavLink = _ref6 => {
2681
- var {
2682
- children,
2683
- href,
2684
- onClick,
2685
- isActive
2686
- } = _ref6,
2687
- props = _objectWithoutProperties(_ref6, _excluded2$1);
2688
- var globalProps = filterGlobalProps(props);
2689
- return /*#__PURE__*/jsx(StyledNavButton, _objectSpread2(_objectSpread2({
2690
- href: href,
2691
- as: "a",
2692
- onClick: onClick,
2693
- isActive: isActive
2694
- }, globalProps), {}, {
2695
- children: /*#__PURE__*/jsx("span", {
2696
- children: children
2697
- })
2698
- }));
2699
- };
2700
-
2701
- var _excluded$6 = ["children", "align", "minWidth", "className"];
2702
- /**
2703
- * @todo Border radius: Update border radius to use tokens or replace with exisiting mechanism
2704
- * @todo Colors: Access the color pallett or update to semantic values
2705
- */
2706
-
2707
- var StyledDropdown$1 = styled.div.withConfig({
2708
- displayName: "Dropdown__StyledDropdown",
2709
- componentId: "lui__sc-1mv978l-0"
2710
- })(["display:block;position:absolute;background:#4b1f68;border-radius:0px 0px ", " ", ";top:100%;", ";min-width:", ";max-width:", ";overflow:hidden;"], pxToRem(16), pxToRem(16), _ref => {
2711
- var {
2712
- align
2713
- } = _ref;
2714
- return align === 'right' ? "right: 0" : "left: 0";
2715
- }, _ref2 => {
2716
- var {
2717
- minWidth
2718
- } = _ref2;
2719
- return minWidth !== null && minWidth !== void 0 ? minWidth : pxToRem(222);
2720
- }, pxToRem(300));
2721
- var DropdownComponent = (_ref3, ref) => {
2722
- var {
2723
- children,
2724
- align,
2725
- minWidth,
2726
- className
2727
- } = _ref3,
2728
- props = _objectWithoutProperties(_ref3, _excluded$6);
2729
- var globalProps = filterGlobalProps(props);
2730
- return /*#__PURE__*/jsx(StyledDropdown$1, _objectSpread2(_objectSpread2({
2731
- className: className,
2732
- align: align,
2733
- minWidth: minWidth,
2734
- role: "menu",
2735
- ref: ref
2736
- }, globalProps), {}, {
2737
- children: children
2738
- }));
2739
- };
2740
- var Dropdown = /*#__PURE__*/forwardRef(DropdownComponent);
2741
-
2742
- var _excluded$5 = ["navSlot", "ctaSlot"];
2743
- var _templateObject$3, _templateObject2$1;
2744
- var HeaderPaddingSmall = 10;
2745
- var HeaderPaddingLarge = 24;
2746
-
2747
- /**
2748
- * @todo z-index: tokenise z-index to make it easier to manage levels
2749
- */
2750
- var StyledHeader = styled.header.withConfig({
2751
- displayName: "HeaderBase__StyledHeader",
2752
- componentId: "lui__sc-1ik75ai-0"
2753
- })(["background:", ";position:sticky;top:0;z-index:999;padding:", " 0;", ""], _ref => {
2754
- var {
2755
- theme
2756
- } = _ref;
2757
- return theme.color.fill.contrast;
2758
- }, pxToRem(HeaderPaddingSmall), gte('md')(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteral(["\n padding: ", " 0;\n "])), pxToRem(HeaderPaddingLarge)));
2759
- var HeaderInner = styled.div.withConfig({
2760
- displayName: "HeaderBase__HeaderInner",
2761
- componentId: "lui__sc-1ik75ai-1"
2762
- })(["display:flex;align-items:center;"]);
2763
- var LogoLink = styled.a.withConfig({
2764
- displayName: "HeaderBase__LogoLink",
2765
- componentId: "lui__sc-1ik75ai-2"
2766
- })(["width:", ";height:", ";order:1;flex:0 0 auto;", " ", ""], pxToRem(87), pxToRem(16), gte('md')(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral(["\n width: ", ";\n height: ", ";\n margin-right: ", ";\n "])), pxToRem(150), pxToRem(28), pxToRem(32)), focusVisible);
2767
- var StyledNavSlot = styled.div.withConfig({
2768
- displayName: "HeaderBase__StyledNavSlot",
2769
- componentId: "lui__sc-1ik75ai-3"
2770
- })(["order:3;@media (min-width:", "){order:2;}"], LargeTweakpoint);
2771
- var StyledCtaSlot = styled.div.withConfig({
2772
- displayName: "HeaderBase__StyledCtaSlot",
2773
- componentId: "lui__sc-1ik75ai-4"
2774
- })(["margin-left:auto;order:2;@media (min-width:", "){order:3;}"], LargeTweakpoint);
2775
- var HeaderBase = _ref2 => {
2776
- var {
2777
- navSlot,
2778
- ctaSlot
2779
- } = _ref2,
2780
- props = _objectWithoutProperties(_ref2, _excluded$5);
2781
- var globalProps = filterGlobalProps(props);
2782
- return /*#__PURE__*/jsx(StyledHeader, _objectSpread2(_objectSpread2({
2783
- role: "banner"
2784
- }, globalProps), {}, {
2785
- children: /*#__PURE__*/jsx(Wrapper, {
2786
- children: /*#__PURE__*/jsxs(HeaderInner, {
2787
- children: [/*#__PURE__*/jsxs(LogoLink, {
2788
- href: "/",
2789
- onClick: () => {
2790
- var event = {
2791
- event_name: 'Link Clicked',
2792
- category: EventCategory.NAVBAR,
2793
- position: EventCategory.CMS,
2794
- text: 'Logo',
2795
- linkType: 'Logo',
2796
- customerType: CustomerType.CUSTOMER
2797
- };
2798
- analytics(event);
2799
- },
2800
- children: [/*#__PURE__*/jsx(Logo, {
2801
- variant: "light",
2802
- width: "100%",
2803
- height: "auto",
2804
- brand: "aussie"
2805
- }), /*#__PURE__*/jsx(SrOnlySpan, {
2806
- children: "Go to Aussie homepage"
2807
- })]
2808
- }), /*#__PURE__*/jsx(StyledNavSlot, {
2809
- children: navSlot
2810
- }), /*#__PURE__*/jsx(StyledCtaSlot, {
2811
- children: ctaSlot
2812
- })]
2813
- })
2814
- })
2815
- }));
2816
- };
2817
-
2818
- var _excluded$4 = ["label", "children", "onClick", "minDropdownWidth", "align"];
2819
- var _templateObject$2;
2820
- // Make dropdown content flush to the bottom of the header not it's trigger button
2821
- var StyledDropdown = styled(Dropdown).withConfig({
2822
- displayName: "NavDropdown__StyledDropdown",
2823
- componentId: "lui__sc-1xymxh7-0"
2824
- })(["", ";", " ", ""], _ref => {
2825
- var {
2826
- minWidth
2827
- } = _ref;
2828
- return minWidth && "min-width: ".concat(minWidth);
2829
- }, () => css(["top:calc(100% + ", ");"], pxToRem(HeaderPaddingSmall)), () => css(["", ""], gte('md')(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n top: calc(100% + ", ");\n "])), pxToRem(HeaderPaddingLarge))));
2830
- var NavDropdown = _ref2 => {
2831
- var {
2832
- label,
2833
- children,
2834
- onClick,
2835
- minDropdownWidth,
2836
- align = 'left'
2837
- } = _ref2,
2838
- props = _objectWithoutProperties(_ref2, _excluded$4);
2839
- var globalProps = filterGlobalProps(props);
2840
- var dropdownRef = useRef(null);
2841
- var [isOpen, setIsOpen] = useState(false);
2842
- var handleClick = event => {
2843
- setIsOpen(!isOpen);
2844
- onClick === null || onClick === void 0 ? void 0 : onClick(event, !isOpen);
2845
- };
2846
- useEffect(() => {
2847
- var pageClickEvent = event => {
2848
- if (dropdownRef.current !== null && !dropdownRef.current.contains(event.target)) {
2849
- setIsOpen(!isOpen);
2850
- }
2851
- };
2852
- var escapeEvent = event => {
2853
- if (event.key === 'Escape' && isOpen) {
2854
- setIsOpen(!isOpen);
2855
- }
2856
- };
2857
-
2858
- // If the item is open listen for clicks or escape key
2859
- if (isOpen) {
2860
- window.addEventListener('click', pageClickEvent);
2861
- window.addEventListener('keydown', escapeEvent);
2862
- }
2863
- return () => {
2864
- window.removeEventListener('click', pageClickEvent);
2865
- window.removeEventListener('keydown', escapeEvent);
2866
- };
2867
- }, [isOpen]);
2868
- return (
2869
- /*#__PURE__*/
2870
- // Needs to be relative so we position the dropdown content relative to this wrapper
2871
- jsxs("div", _objectSpread2(_objectSpread2({}, globalProps), {}, {
2872
- style: {
2873
- position: 'relative'
2874
- },
2875
- children: [/*#__PURE__*/jsx(NavButton, {
2876
- isOpen: isOpen,
2877
- onClick: e => handleClick(e),
2878
- children: label
2879
- }), /*#__PURE__*/jsx(FocusLock, {
2880
- disabled: !isOpen,
2881
- returnFocus: true,
2882
- children: isOpen && /*#__PURE__*/jsx(StyledDropdown, {
2883
- minWidth: minDropdownWidth,
2884
- align: align,
2885
- ref: dropdownRef,
2886
- children: children
2887
- })
2888
- })]
2889
- }))
2890
- );
2891
- };
2892
-
2893
- var _excluded$3 = ["children", "href", "background", "isActive", "isExternal", "onClick"],
2894
- _excluded2 = ["children", "onClick"];
2895
- /**
2896
- * @todo Line-height: prefer to use token but the current one is not accessible here
2897
- * @todo Helper functions: getTypography you have to specify each property of the font you need should this be simpler
2898
- * @todo Colors: Access the color palette or update to semantic values
2899
- */
2900
-
2901
- var MenuItemStyles = css(["padding:", " ", ";color:", ";font-family:", ";font-weight:", ";font-size:", ";line-height:1.5;text-decoration:none;&:hover{background-color:#633482;}", ""], pxToRem(12), pxToRem(16), _ref => {
2902
- var {
2903
- theme
2904
- } = _ref;
2905
- return theme.color.text.inverse;
2906
- }, () => getTypography('body1', 'fontFamily'), () => getTypography('body1', 'fontWeight'), pxToRem(16), insetFocusVisible);
2907
- var StyledMenuLink = styled.a.withConfig({
2908
- displayName: "MenuLink__StyledMenuLink",
2909
- componentId: "lui__sc-dpbddc-0"
2910
- })(["", " background-color:", ";display:flex;align-items:center;justify-content:space-between;position:relative;", ""], () => MenuItemStyles, _ref2 => {
2911
- var {
2912
- background,
2913
- theme
2914
- } = _ref2;
2915
- return background === 'darker' ? '#331745' : theme.color.interaction.main;
2916
- }, _ref3 => {
2917
- var {
2918
- isActive,
2919
- theme
2920
- } = _ref3;
2921
- return isActive && "background-color: #633482;\n font-weight: bold;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background-color: ".concat(theme.color.interaction.emphasis, ";\n }\n\n ");
2922
- });
2923
- var ExternalIcon = styled.span.withConfig({
2924
- displayName: "MenuLink__ExternalIcon",
2925
- componentId: "lui__sc-dpbddc-1"
2926
- })(["transform:rotate(-45deg);width:", ";height:", ";"], pxToRem(24), pxToRem(24));
2927
- var MenuLink = _ref4 => {
2928
- var {
2929
- children,
2930
- href,
2931
- background,
2932
- isActive = false,
2933
- isExternal = false,
2934
- onClick
2935
- } = _ref4,
2936
- props = _objectWithoutProperties(_ref4, _excluded$3);
2937
- var globalProps = filterGlobalProps(props);
2938
- var conditionalProps = {};
2939
- if (isExternal) {
2940
- conditionalProps = {
2941
- target: '_blank',
2942
- rel: 'noopener'
2943
- };
2944
- }
2945
- if (isActive) {
2946
- conditionalProps = {
2947
- 'aria-current': 'page'
2948
- };
2949
- }
2950
- return /*#__PURE__*/jsxs(StyledMenuLink, _objectSpread2(_objectSpread2(_objectSpread2({
2951
- href: href,
2952
- isActive: isActive,
2953
- onClick: onClick,
2954
- background: background
2955
- }, conditionalProps), globalProps), {}, {
2956
- children: [/*#__PURE__*/jsx("span", {
2957
- children: children
2958
- }), isExternal && /*#__PURE__*/jsxs(ExternalIcon, {
2959
- children: [/*#__PURE__*/jsx(ArrowForward, {
2960
- width: pxToRem(24),
2961
- height: pxToRem(24)
2962
- }), /*#__PURE__*/jsx(SrOnlySpan, {
2963
- children: " (Opens in new window)"
2964
- })]
2965
- })]
2966
- }));
2967
- };
2968
- /**
2969
- * @todo Colors: Access the color palette or update to semantic values
2970
- */
2971
-
2972
- var StyledMenuButton = styled.button.withConfig({
2973
- displayName: "MenuLink__StyledMenuButton",
2974
- componentId: "lui__sc-dpbddc-2"
2975
- })(["", ";", ";text-align:left;"], () => buttonReset, () => MenuItemStyles);
2976
- var MenuButton = _ref5 => {
2977
- var {
2978
- children,
2979
- onClick
2980
- } = _ref5,
2981
- props = _objectWithoutProperties(_ref5, _excluded2);
2982
- var globalProps = filterGlobalProps(props);
2983
- return /*#__PURE__*/jsx(StyledMenuButton, _objectSpread2(_objectSpread2({
2984
- type: "button",
2985
- onClick: onClick
2986
- }, globalProps), {}, {
2987
- children: children
2988
- }));
2989
- };
2990
-
2991
- var _excluded$2 = ["navOptions", "isSlideout", "isRestricted"];
2992
- var NavMobileStyled = css(["ul{", "}"], listReset);
2993
- var NavDesktopStyled = css(["ul{", ";display:flex;align-items:center;}"], listReset);
2994
- var NavElement = styled.nav.withConfig({
2995
- displayName: "Nav__NavElement",
2996
- componentId: "lui__sc-zq7yzs-0"
2997
- })(["", ""], _ref => {
2998
- var {
2999
- isSlideout
3000
- } = _ref;
3001
- return isSlideout ? NavMobileStyled : NavDesktopStyled;
3002
- });
3003
- var StyledChildrenWrapper = styled.div.withConfig({
3004
- displayName: "Nav__StyledChildrenWrapper",
3005
- componentId: "lui__sc-zq7yzs-1"
3006
- })(["::after{content:'';display:block;", "}"], _ref2 => {
3007
- var {
3008
- isOpen,
3009
- theme
3010
- } = _ref2;
3011
- return isOpen && "height: 0.0625rem; background-color: ".concat(theme.color.text.inverse, "; margin: .75rem 1rem;");
3012
- });
3013
- var MenuItem = _ref3 => {
3014
- var {
3015
- label,
3016
- children
3017
- } = _ref3;
3018
- var [isOpen, setIsOpen] = useState(false);
3019
- var handleClick = () => {
3020
- setIsOpen(!isOpen);
3021
- var event = {
3022
- event_name: 'Menu Clicked',
3023
- category: EventCategory.NAVBAR,
3024
- menuName: label,
3025
- position: 'CMS',
3026
- customerType: CustomerType.CUSTOMER
3027
- };
3028
- analytics(event);
3029
- };
3030
- return /*#__PURE__*/jsxs(Fragment, {
3031
- children: [/*#__PURE__*/jsx(NavButton, {
3032
- onClick: () => handleClick(),
3033
- isOpen: isOpen,
3034
- children: label
3035
- }), isOpen && /*#__PURE__*/jsx(StyledChildrenWrapper, {
3036
- isOpen: isOpen,
3037
- children: children
3038
- })]
3039
- });
3040
- };
3041
- var Nav = _ref4 => {
3042
- var {
3043
- navOptions,
3044
- isSlideout,
3045
- isRestricted
3046
- } = _ref4,
3047
- props = _objectWithoutProperties(_ref4, _excluded$2);
3048
- var globalProps = filterGlobalProps(props);
3049
- var listItems = navOptions.map((item, index) => {
3050
- var _item$children, _item$children2;
3051
- var hideItem = isRestricted && item.hasRestriction;
3052
- var navItems = isSlideout ? /*#__PURE__*/jsx(MenuItem, {
3053
- label: item.label,
3054
- children: (_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.map((childItem, index) => {
3055
- var hideChildItem = isRestricted && childItem.hasRestriction;
3056
- return !hideChildItem && /*#__PURE__*/jsx(MenuLink, {
3057
- href: childItem.link,
3058
- isActive: childItem.isActive,
3059
- onClick: () => {
3060
- var event = {
3061
- category: EventCategory.NAVBAR,
3062
- event_name: 'Menu Element Clicked',
3063
- menuName: item.label,
3064
- text: childItem.label,
3065
- position: EventCategory.CMS,
3066
- customerType: CustomerType.CUSTOMER
3067
- };
3068
- analytics(event);
3069
- },
3070
- children: childItem.label
3071
- }, index);
3072
- })
3073
- }) : /*#__PURE__*/jsx(NavDropdown, {
3074
- label: item.label,
3075
- minDropdownWidth: item === null || item === void 0 ? void 0 : item.minDropdownWidth,
3076
- onClick: () => {
3077
- var event = {
3078
- event_name: 'Menu Clicked',
3079
- category: EventCategory.NAVBAR,
3080
- menuName: item.label,
3081
- position: 'CMS',
3082
- customerType: CustomerType.CUSTOMER
3083
- };
3084
- analytics(event);
3085
- },
3086
- children: (_item$children2 = item.children) === null || _item$children2 === void 0 ? void 0 : _item$children2.map((childItem, index) => {
3087
- var hideChildItem = isRestricted && childItem.hasRestriction;
3088
- return !hideChildItem && /*#__PURE__*/jsx(MenuLink, {
3089
- href: childItem.link,
3090
- isActive: childItem.isActive,
3091
- onClick: () => {
3092
- var event = {
3093
- category: EventCategory.NAVBAR,
3094
- event_name: 'Menu Element Clicked',
3095
- menuName: item.label,
3096
- text: childItem.label,
3097
- position: EventCategory.CMS,
3098
- customerType: CustomerType.CUSTOMER
3099
- };
3100
- analytics(event);
3101
- },
3102
- children: childItem.label
3103
- }, index);
3104
- })
3105
- });
3106
- if (Object.prototype.hasOwnProperty.call(item, 'children')) {
3107
- return /*#__PURE__*/jsx("li", {
3108
- children: navItems
3109
- }, index);
3110
- }
3111
- return item.link && !hideItem && /*#__PURE__*/jsx("li", {
3112
- children: /*#__PURE__*/jsx(NavLink, {
3113
- href: item.link,
3114
- isActive: item.isActive,
3115
- onClick: () => {
3116
- var event = {
3117
- event_name: 'Link Clicked',
3118
- category: EventCategory.NAVBAR,
3119
- text: item.label,
3120
- linkType: 'LinkToPage',
3121
- position: EventCategory.CMS,
3122
- customerType: CustomerType.CUSTOMER
3123
- };
3124
- analytics(event);
3125
- },
3126
- children: item.label
3127
- })
3128
- }, index);
3129
- });
3130
- return /*#__PURE__*/jsx(NavElement, _objectSpread2(_objectSpread2({
3131
- isSlideout: isSlideout
3132
- }, globalProps), {}, {
3133
- children: /*#__PURE__*/jsx("ul", {
3134
- children: listItems
3135
- })
3136
- }));
3137
- };
3138
-
3139
- var _excluded$1 = ["title", "children", "className", "isOpen", "hasTitleDivider", "handleClose"];
3140
- var _templateObject$1, _templateObject2, _templateObject3;
3141
- var headerTokens = {
3142
- size: {
3143
- height: {
3144
- navbar: {
3145
- default: {
3146
- value: pxToRem(64)
3147
- },
3148
- sm: {
3149
- value: pxToRem(72)
3150
- },
3151
- md: {
3152
- value: pxToRem(96)
3153
- }
3154
- }
3155
- }
3156
- }
3157
- };
3158
- var StyledCloseButton = styled.button.withConfig({
3159
- displayName: "SlideoutMenu__StyledCloseButton",
3160
- componentId: "lui__sc-8pev43-0"
3161
- })(["background-color:", ";border:0;margin:0;padding:0;width:", ";height:", ";color:", ";position:absolute;top:", ";right:", ";", " &:hover{background-color:#633482;}"], _ref => {
3162
- var {
3163
- theme
3164
- } = _ref;
3165
- return theme.color.interaction.main;
3166
- }, pxToRem(40), pxToRem(40), _ref2 => {
3167
- var {
3168
- theme
3169
- } = _ref2;
3170
- return theme.color.text.inverse;
3171
- }, pxToRem(16), pxToRem(16), gte('md')(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n top: ", ";\n "])), pxToRem(28)));
3172
-
3173
- /**
3174
- * @todo z-index: tokenise z-index to make it easier to manage levels
3175
- */
3176
-
3177
- var StyledSlideoutMenu = styled(SlideoutMenuBase).withConfig({
3178
- displayName: "SlideoutMenu__StyledSlideoutMenu",
3179
- componentId: "lui__sc-8pev43-1"
3180
- })(["background-color:", ";overflow-y:scroll;color:", ";z-index:999;"], _ref3 => {
3181
- var {
3182
- theme
3183
- } = _ref3;
3184
- return theme.color.fill.contrast;
3185
- }, _ref4 => {
3186
- var {
3187
- theme
3188
- } = _ref4;
3189
- return theme.color.text.inverse;
3190
- });
3191
- var StyledSlideoutHR = styled.hr.withConfig({
3192
- displayName: "SlideoutMenu__StyledSlideoutHR",
3193
- componentId: "lui__sc-8pev43-2"
3194
- })(["margin:0 ", " ", " ", ";border:0;height:0;border-top:1px solid ", ";"], pxToRem(16), pxToRem(12), pxToRem(16), _ref5 => {
3195
- var {
3196
- theme
3197
- } = _ref5;
3198
- return theme.color.text.inverse;
3199
- });
3200
- var StyledSlideoutHeader = styled.div.withConfig({
3201
- displayName: "SlideoutMenu__StyledSlideoutHeader",
3202
- componentId: "lui__sc-8pev43-3"
3203
- })(["padding-right:", ";padding-left:", ";min-height:", ";display:flex;align-items:center;", " ", ""], pxToRem(72), pxToRem(16), headerTokens.size.height.navbar.default.value, gte('sm')(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n min-height: ", ";\n "])), headerTokens.size.height.navbar.sm.value), gte('md')(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n min-height: ", ";\n "])), headerTokens.size.height.navbar.md.value));
3204
- var StyledSlideoutContent = styled.div.withConfig({
3205
- displayName: "SlideoutMenu__StyledSlideoutContent",
3206
- componentId: "lui__sc-8pev43-4"
3207
- })(["display:flex;flex-direction:column;height:100%;"]);
3208
- var SlideoutMenu = _ref6 => {
3209
- var {
3210
- title,
3211
- children,
3212
- className,
3213
- isOpen,
3214
- hasTitleDivider = true,
3215
- handleClose
3216
- } = _ref6,
3217
- props = _objectWithoutProperties(_ref6, _excluded$1);
3218
- var globalProps = filterGlobalProps(props);
3219
- var theme = useTheme();
3220
- return /*#__PURE__*/jsxs(StyledSlideoutMenu, _objectSpread2(_objectSpread2(_objectSpread2({
3221
- handleClose: handleClose,
3222
- isOpen: isOpen
3223
- }, globalProps), props), {}, {
3224
- children: [/*#__PURE__*/jsxs(StyledSlideoutContent, {
3225
- children: [/*#__PURE__*/jsx(StyledSlideoutHeader, {
3226
- children: /*#__PURE__*/jsx(Text, {
3227
- variant: "title2",
3228
- tag: "h2",
3229
- isInverse: true,
3230
- children: title
3231
- })
3232
- }), hasTitleDivider && /*#__PURE__*/jsx(StyledSlideoutHR, {}), children]
3233
- }), /*#__PURE__*/jsxs(StyledCloseButton, {
3234
- type: "button",
3235
- onClick: handleClose,
3236
- children: [/*#__PURE__*/jsx(Close, {
3237
- color: theme.color.text.inverse,
3238
- width: "1.5rem",
3239
- height: "1.5rem"
3240
- }), /*#__PURE__*/jsxs(SrOnlySpan, {
3241
- children: ["Close ", title]
3242
- })]
3243
- })]
3244
- }));
3245
- };
3246
-
3247
- var TalkToExpertButton = _ref => {
3248
- var {
3249
- openCommPanel,
3250
- teamMember
3251
- } = _ref;
3252
- var buttonText = teamMember !== null && teamMember !== void 0 && teamMember.firstName ? "Talk to ".concat(teamMember.firstName) : 'Talk to an expert';
3253
- var handleClick = () => {
3254
- openCommPanel();
3255
- var event = {
3256
- event_name: 'Button Clicked',
3257
- category: EventCategory.NAVBAR,
3258
- text: buttonText,
3259
- position: EventCategory.CMS,
3260
- customerType: CustomerType.CUSTOMER,
3261
- buttonType: ButtonType.SECONDARY
3262
- };
3263
- analytics(event);
3264
- };
3265
- return /*#__PURE__*/jsx(Button$1, {
3266
- variant: "secondary",
3267
- isInverse: true,
3268
- width: "100%",
3269
- onPress: handleClick,
3270
- minWidth: pxToRem(152),
3271
- children: buttonText
3272
- });
3273
- };
3274
-
3275
- var APPLY_HREF = '/home-loans/basics';
3276
- var ApplyNowButton = _ref => {
3277
- var {
3278
- onClick,
3279
- width,
3280
- size
3281
- } = _ref;
3282
- var handleClick = () => {
3283
- onClick === null || onClick === void 0 ? void 0 : onClick();
3284
- var event = {
3285
- event_name: 'Button Clicked',
3286
- category: EventCategory.NAVBAR,
3287
- text: 'Apply now',
3288
- position: EventCategory.CMS,
3289
- customerType: CustomerType.CUSTOMER,
3290
- buttonType: ButtonType.PRIMARY
3291
- };
3292
- analytics(event);
3293
- };
3294
- return /*#__PURE__*/jsx(AnchorButton, {
3295
- width: width,
3296
- onPress: handleClick,
3297
- href: APPLY_HREF,
3298
- variant: "primary",
3299
- isInverse: true,
3300
- size: size,
3301
- children: "Apply now"
3302
- });
3303
- };
3304
-
3305
- var PrimaryCTA = _ref => {
3306
- var {
3307
- application,
3308
- handleApplyNowClick
3309
- } = _ref;
3310
- var {
3311
- isRestricted
3312
- } = useRestriction();
3313
- return !(application !== null && application !== void 0 && application.id) ? /*#__PURE__*/jsx(ApplyNowButton, {
3314
- onClick: handleApplyNowClick,
3315
- width: "100%"
3316
- }) : !isRestricted ? /*#__PURE__*/jsx(AnchorButton, {
3317
- onPress: () => {
3318
- var event = {
3319
- event_name: 'Button Clicked',
3320
- category: EventCategory.NAVBAR,
3321
- text: 'Continue Application',
3322
- position: EventCategory.CMS,
3323
- customerType: CustomerType.CUSTOMER,
3324
- buttonType: ButtonType.PRIMARY
3325
- };
3326
- analytics(event);
3327
- },
3328
- href: "/v2/dashboard/application/".concat(application.id),
3329
- variant: "primary",
3330
- isInverse: true,
3331
- width: "100%",
3332
- children: "Continue Application"
3333
- }) : /*#__PURE__*/jsx(Fragment, {});
3334
- };
3335
-
3336
- var _excluded = ["isRestricted", "navOptions"];
3337
- var _templateObject;
3338
- var HamburgerCtaBlock = _ref => {
3339
- var {
3340
- handleApplyNowClick,
3341
- teamMember,
3342
- application,
3343
- openCommPanel
3344
- } = _ref;
3345
- return /*#__PURE__*/jsx(MenuPadding, {
3346
- children: /*#__PURE__*/jsxs(Spacer, {
3347
- ygap: "12",
3348
- children: [/*#__PURE__*/jsx(PrimaryCTA, {
3349
- handleApplyNowClick: handleApplyNowClick,
3350
- application: application
3351
- }), /*#__PURE__*/jsx(TalkToExpertButton, {
3352
- teamMember: teamMember,
3353
- openCommPanel: openCommPanel
3354
- })]
3355
- })
3356
- });
3357
- };
3358
- var StyledWrapperForButtonHack = styled.div.withConfig({
3359
- displayName: "HamburgerMenu__StyledWrapperForButtonHack",
3360
- componentId: "lui__sc-302min-0"
3361
- })(["button{padding:0;margin-left:0.75rem;", "}"], gte('sm')(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n margin-left: .25rem; // Make sure focus outline doesn't get cut off by preceding links with bg colour\n "]))));
3362
- var HamburgerMenu = _ref2 => {
3363
- var {
3364
- isRestricted,
3365
- navOptions
3366
- } = _ref2,
3367
- props = _objectWithoutProperties(_ref2, _excluded);
3368
- var {
3369
- showMenu,
3370
- toggleMenu
3371
- } = useSlideoutMenu();
3372
- var theme = useTheme();
3373
- var handleClick = () => {
3374
- toggleMenu();
3375
- var event = {
3376
- event_name: 'Menu Clicked',
3377
- category: EventCategory.NAVBAR,
3378
- menuName: 'Hamburger Menu',
3379
- position: EventCategory.CMS,
3380
- customerType: CustomerType.CUSTOMER
3381
- };
3382
- analytics(event);
3383
- };
3384
- return /*#__PURE__*/jsxs(Fragment, {
3385
- children: [/*#__PURE__*/jsx(StyledWrapperForButtonHack, {
3386
- children: /*#__PURE__*/jsxs(Button$1, {
3387
- onPress: handleClick,
3388
- ariaExpanded: showMenu,
3389
- variant: "text",
3390
- size: "sm",
3391
- isInverse: true,
3392
- width: "auto",
3393
- minWidth: "auto",
3394
- children: [/*#__PURE__*/jsx(SrOnlySpan, {
3395
- children: "Open main menu"
3396
- }), /*#__PURE__*/jsx(Menu, {
3397
- width: "1.5rem",
3398
- height: "1.5rem",
3399
- color: theme.color.text.inverse
3400
- })]
3401
- })
3402
- }), /*#__PURE__*/jsxs(SlideoutMenu, {
3403
- isOpen: showMenu,
3404
- handleClose: toggleMenu,
3405
- title: "Menu",
3406
- children: [/*#__PURE__*/jsx(HamburgerCtaBlock, _objectSpread2({}, props)), /*#__PURE__*/jsx(Nav, {
3407
- navOptions: navOptions,
3408
- isSlideout: true,
3409
- isRestricted: isRestricted
3410
- })]
3411
- })]
3412
- });
3413
- };
3414
-
3415
- var DropdownPrimaryContent = styled.div.withConfig({
3416
- displayName: "AccountMenu__DropdownPrimaryContent",
3417
- componentId: "lui__sc-4ssigl-0"
3418
- })(["", ";padding-top:", ";background-color:", ";flex-grow:1;"], Px, pxToRem(16), _ref => {
3419
- var {
3420
- theme
3421
- } = _ref;
3422
- return theme.color.fill.contrast;
3423
- });
3424
- var DropwdownSecondaryContent = styled.div.withConfig({
3425
- displayName: "AccountMenu__DropwdownSecondaryContent",
3426
- componentId: "lui__sc-4ssigl-1"
3427
- })(["padding-bottom:", ";background-color:#331745;"], pxToRem(24));
3428
- var LOGGEDIN_TEXT = 'My Account';
3429
- var LOGGEDOUT_TEXT = 'Login';
3430
- var MANAGE_APP_TEXT = 'Manage application';
3431
- var DropdownHeader = () => /*#__PURE__*/jsx(Fragment, {
3432
- children: /*#__PURE__*/jsx(Text, {
3433
- tag: "h2",
3434
- variant: "title4",
3435
- isInverse: true,
3436
- children: "Loan application login"
3437
- })
3438
- });
3439
- var DropdownHeaderLoggedIn = () => /*#__PURE__*/jsxs(Fragment, {
3440
- children: [/*#__PURE__*/jsx(Text, {
3441
- tag: "h2",
3442
- variant: "title4",
3443
- isInverse: true,
3444
- children: "Manage your loan applications"
3445
- }), /*#__PURE__*/jsx(StyledHR, {})]
3446
- });
3447
- var LoggedInContent = _ref2 => {
3448
- var {
3449
- isRestricted,
3450
- handleApplyNowClick,
3451
- application,
3452
- teamMember,
3453
- openCommPanel,
3454
- onLogout
3455
- } = _ref2;
3456
- return /*#__PURE__*/jsxs(Fragment, {
3457
- children: [/*#__PURE__*/jsxs(DropdownPrimaryContent, {
3458
- style: {
3459
- flexGrow: '0'
3460
- },
3461
- children: [/*#__PURE__*/jsx(DropdownHeaderLoggedIn, {}), /*#__PURE__*/jsx("div", {
3462
- style: {
3463
- marginBottom: '.75rem'
3464
- },
3465
- children: /*#__PURE__*/jsx(PrimaryCTA, {
3466
- handleApplyNowClick: handleApplyNowClick,
3467
- application: application
3468
- })
3469
- }), /*#__PURE__*/jsx(TalkToExpertButton, {
3470
- teamMember: teamMember,
3471
- openCommPanel: openCommPanel
3472
- })]
3473
- }), /*#__PURE__*/jsxs("div", {
3474
- style: {
3475
- marginTop: '.75rem'
3476
- },
3477
- children: [!isRestricted && /*#__PURE__*/jsx(MenuLink, {
3478
- href: "/dashboard/applications",
3479
- onClick: () => {
3480
- var event = {
3481
- event_name: 'Link Clicked',
3482
- category: EventCategory.NAVBAR,
3483
- position: EventCategory.CMS,
3484
- text: 'My Applications',
3485
- linkType: 'LinkToPage',
3486
- customerType: CustomerType.CUSTOMER
3487
- };
3488
- analytics(event);
3489
- },
3490
- children: "My Applications"
3491
- }), /*#__PURE__*/jsx(MenuLink, {
3492
- href: "/property-report/my-properties",
3493
- onClick: () => {
3494
- var event = {
3495
- event_name: 'Link Clicked',
3496
- category: EventCategory.NAVBAR,
3497
- position: EventCategory.CMS,
3498
- text: 'Property reports',
3499
- linkType: 'LinkToPage',
3500
- customerType: CustomerType.CUSTOMER
3501
- };
3502
- analytics(event);
3503
- },
3504
- children: "Property reports"
3505
- }), /*#__PURE__*/jsx(MenuButton, {
3506
- onClick: onLogout,
3507
- children: "Sign out"
3508
- })]
3509
- })]
3510
- });
3511
- };
3512
- var MENU_LINKS = [{
3513
- label: 'Aussie Select',
3514
- link: 'https://online.aussie.com.au/AHL/BankFast-Username-Logon#sst'
3515
- }, {
3516
- label: 'Aussie Elevate',
3517
- link: 'https://www.adelaidebank.com.au/mortgage-managers/aussieelevate/home/'
3518
- }, {
3519
- label: 'Aussie Activate',
3520
- link: 'https://www.lsn.com.au/LsnWeb/faces/LsnrLogin.jsp?EWF_FORM_NAME=0001939&EWF_BUTTON_Submit=Submit'
3521
- }, {
3522
- label: 'Aussie Edge',
3523
- link: 'https://www.adelaidebank.com.au/mortgage-managers/aussieedge/home/home/'
3524
- }, {
3525
- label: 'All online banking logins',
3526
- link: 'https://www.aussie.com.au/get-in-touch/log-in-page/'
3527
- }
3528
- // {
3529
- // label: 'Aussie IQ, Aussie Optimizer and all other Aussie Home Loans settled before 2012',
3530
- // link: 'https://aussie.openportal.com.au/portal/ahl/#/',
3531
- // },
3532
- ];
3533
-
3534
- var LoggedOutContent = () => {
3535
- var _window, _window$location, _window2, _window2$location;
3536
- var brand = getBrandFromHostname();
3537
- var env = getEnvFromHostname((_window = window) === null || _window === void 0 ? void 0 : (_window$location = _window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname);
3538
- var signInURL = getSignInURL(brand, env, (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$location = _window2.location) === null || _window2$location === void 0 ? void 0 : _window2$location.href);
3539
- return /*#__PURE__*/jsxs(Fragment, {
3540
- children: [/*#__PURE__*/jsxs(DropwdownSecondaryContent, {
3541
- children: [/*#__PURE__*/jsx(MenuPaddingAlt, {
3542
- children: /*#__PURE__*/jsx(Text, {
3543
- tag: "h2",
3544
- variant: "title4",
3545
- isInverse: true,
3546
- children: "Online banking login"
3547
- })
3548
- }), MENU_LINKS.map((menuLink, i) => /*#__PURE__*/jsx(MenuLink, {
3549
- href: menuLink.link,
3550
- isExternal: true,
3551
- background: "darker",
3552
- onClick: () => {
3553
- var event = {
3554
- event_name: 'Link Clicked',
3555
- category: EventCategory.NAVBAR,
3556
- position: EventCategory.CMS,
3557
- text: menuLink.label,
3558
- linkType: 'LinkToPage',
3559
- customerType: CustomerType.CUSTOMER
3560
- };
3561
- analytics(event);
3562
- },
3563
- children: menuLink.label
3564
- }, i))]
3565
- }), /*#__PURE__*/jsxs(DropdownPrimaryContent, {
3566
- children: [/*#__PURE__*/jsx(DropdownHeader, {}), /*#__PURE__*/jsx("div", {
3567
- style: {
3568
- marginTop: '1.5rem',
3569
- marginBottom: '1.5rem'
3570
- },
3571
- children: /*#__PURE__*/jsx(AnchorButton, {
3572
- width: "100%",
3573
- variant: "secondary",
3574
- isInverse: true,
3575
- href: signInURL,
3576
- onPress: () => {
3577
- var event = {
3578
- event_name: 'Button Clicked',
3579
- category: EventCategory.NAVBAR,
3580
- text: MANAGE_APP_TEXT,
3581
- position: EventCategory.CMS,
3582
- customerType: CustomerType.CUSTOMER,
3583
- buttonType: ButtonType.SECONDARY
3584
- };
3585
- analytics(event);
3586
- },
3587
- children: MANAGE_APP_TEXT
3588
- })
3589
- })]
3590
- })]
3591
- });
3592
- };
3593
- var AccountDropdown = _ref3 => {
3594
- var {
3595
- isRestricted,
3596
- application,
3597
- session,
3598
- handleApplyNowClick,
3599
- teamMember,
3600
- openCommPanel,
3601
- onLogout
3602
- } = _ref3;
3603
- var isAuthenticated = (session === null || session === void 0 ? void 0 : session.status) === Status.Authenticated;
3604
- return /*#__PURE__*/jsx(NavDropdown, {
3605
- label: isAuthenticated ? LOGGEDIN_TEXT : LOGGEDOUT_TEXT,
3606
- align: "right",
3607
- minDropdownWidth: "18.75rem",
3608
- onClick: () => {
3609
- var event = {
3610
- event_name: 'Menu Clicked',
3611
- category: EventCategory.NAVBAR,
3612
- menuName: isAuthenticated ? LOGGEDIN_TEXT : LOGGEDOUT_TEXT,
3613
- position: 'CMS',
3614
- customerType: CustomerType.CUSTOMER
3615
- };
3616
- analytics(event);
3617
- },
3618
- children: isAuthenticated ? /*#__PURE__*/jsx(LoggedInContent, {
3619
- isRestricted: isRestricted,
3620
- teamMember: teamMember,
3621
- application: application,
3622
- handleApplyNowClick: handleApplyNowClick,
3623
- openCommPanel: openCommPanel,
3624
- onLogout: onLogout
3625
- }) : /*#__PURE__*/jsx(LoggedOutContent, {})
3626
- });
3627
- };
3628
- var AccountSlideoutMenu = _ref4 => {
3629
- var {
3630
- isRestricted,
3631
- session,
3632
- application,
3633
- teamMember,
3634
- handleApplyNowClick,
3635
- openCommPanel,
3636
- onLogout
3637
- } = _ref4;
3638
- var {
3639
- showMenu,
3640
- toggleMenu
3641
- } = useSlideoutMenu();
3642
- var isAuthenticated = (session === null || session === void 0 ? void 0 : session.status) === Status.Authenticated;
3643
- var loggedInOutText = isAuthenticated ? LOGGEDIN_TEXT : LOGGEDOUT_TEXT;
3644
- var handleClick = () => {
3645
- toggleMenu();
3646
- var event = {
3647
- event_name: 'Menu Clicked',
3648
- category: EventCategory.NAVBAR,
3649
- menuName: loggedInOutText,
3650
- position: 'CMS',
3651
- customerType: CustomerType.CUSTOMER
3652
- };
3653
- analytics(event);
3654
- };
3655
- return /*#__PURE__*/jsxs(Fragment, {
3656
- children: [/*#__PURE__*/jsx(ShowAtMediumOnly, {
3657
- children: /*#__PURE__*/jsx(NavButton, {
3658
- "aria-expanded": showMenu,
3659
- onClick: handleClick,
3660
- isOpen: showMenu,
3661
- children: loggedInOutText
3662
- })
3663
- }), /*#__PURE__*/jsx(ShowAtSmallOnly, {
3664
- children: /*#__PURE__*/jsx(Button$1, {
3665
- ariaExpanded: showMenu,
3666
- onPress: handleClick,
3667
- variant: "primary",
3668
- size: "sm",
3669
- isInverse: true,
3670
- children: loggedInOutText
3671
- })
3672
- }), /*#__PURE__*/jsx(SlideoutMenu, {
3673
- isOpen: showMenu,
3674
- handleClose: toggleMenu,
3675
- title: loggedInOutText,
3676
- hasTitleDivider: false,
3677
- children: isAuthenticated ? /*#__PURE__*/jsx(LoggedInContent, {
3678
- isRestricted: isRestricted,
3679
- teamMember: teamMember,
3680
- application: application,
3681
- handleApplyNowClick: handleApplyNowClick,
3682
- openCommPanel: openCommPanel,
3683
- onLogout: onLogout
3684
- }) : /*#__PURE__*/jsx(LoggedOutContent, {})
3685
- })]
3686
- });
3687
- };
3688
-
3689
- var CtaNav = _ref => {
3690
- var {
3691
- handleApplyNowClick,
3692
- session,
3693
- application,
3694
- teamMember,
3695
- isRestricted,
3696
- openCommPanel,
3697
- onLogout
3698
- } = _ref;
3699
- return /*#__PURE__*/jsxs(Spacer, {
3700
- xalign: "center",
3701
- children: [/*#__PURE__*/jsx(ShowFromTweakLarge, {
3702
- children: /*#__PURE__*/jsx(TalkToExpertButton, {
3703
- openCommPanel: openCommPanel
3704
- })
3705
- }), /*#__PURE__*/jsx(ShowFromSmall, {
3706
- children: /*#__PURE__*/jsx(PrimaryCTA, {
3707
- handleApplyNowClick: handleApplyNowClick,
3708
- application: application
3709
- })
3710
- }), /*#__PURE__*/jsx(ShowFromMedium, {
3711
- children: /*#__PURE__*/jsx(AccountDropdown, {
3712
- handleApplyNowClick: handleApplyNowClick,
3713
- session: session,
3714
- teamMember: teamMember,
3715
- application: application,
3716
- isRestricted: isRestricted,
3717
- openCommPanel: openCommPanel,
3718
- onLogout: onLogout
3719
- })
3720
- }), /*#__PURE__*/jsx(HideFromMedium, {
3721
- children: /*#__PURE__*/jsx(AccountSlideoutMenu, {
3722
- handleApplyNowClick: handleApplyNowClick,
3723
- session: session,
3724
- teamMember: teamMember,
3725
- application: application,
3726
- isRestricted: isRestricted,
3727
- openCommPanel: openCommPanel,
3728
- onLogout: onLogout
3729
- })
3730
- })]
3731
- });
3732
- };
3733
-
3734
- var getApplications = /*#__PURE__*/function () {
3735
- var _ref = _asyncToGenerator(function* (session, customerId, limit, orderBy) {
3736
- var response = yield axios.get("/v1/applications/", {
3737
- baseURL: getAPIBaseURL(session.environment),
3738
- headers: {
3739
- Authorization: "Bearer ".concat(session.token),
3740
- 'Content-Type': 'application/json'
3741
- },
3742
- params: _objectSpread2(_objectSpread2(_objectSpread2({}, customerId && {
3743
- customerId
3744
- }), limit && {
3745
- limit
3746
- }), orderBy && {
3747
- orderBy
3748
- })
3749
- });
3750
- return response.data;
3751
- });
3752
- return function getApplications(_x, _x2, _x3, _x4) {
3753
- return _ref.apply(this, arguments);
3754
- };
3755
- }();
3756
-
3757
- var useApplication = session => {
3758
- var [application, setApplication] = React.useState();
3759
- var {
3760
- onException
3761
- } = useError();
3762
- React.useEffect(() => {
3763
- if (session.status === Status.Authenticated) {
3764
- var _session$identity;
3765
- getApplications(session, (_session$identity = session.identity) === null || _session$identity === void 0 ? void 0 : _session$identity.id, 1, 'updatedAt').then(res => {
3766
- var applications = res.data;
3767
- var mostRecentlyUpdatedApplication = applications[0];
3768
- setApplication(mostRecentlyUpdatedApplication);
3769
- }).catch(error => {
3770
- onException(new Error("@lendi/navbar: unable to fetch application: ".concat(error)));
3771
- });
3772
- } else {
3773
- setApplication(undefined);
3774
- }
3775
- }, [session, onException]);
3776
- return application;
3777
- };
3778
-
3779
- var HeaderWithContext = _ref => {
3780
- var {
3781
- // Public props
3782
- handleApplyNow,
3783
- onLogout,
3784
- navOptions = [],
3785
- // Internal props, from ChatProps
3786
- isCommPanelOpen,
3787
- closeCommPanel,
3788
- openCommPanel: _openCommPanel,
3789
- latestTeamMember
3790
- } = _ref;
3791
- var session = useSession();
3792
- var application = useApplication(session);
3793
- var {
3794
- isRestricted
3795
- } = useRestriction();
3796
- return /*#__PURE__*/jsx(HeaderBase, {
3797
- navSlot: /*#__PURE__*/jsxs(Fragment, {
3798
- children: [/*#__PURE__*/jsx(ShowFromTweakLarge, {
3799
- children: /*#__PURE__*/jsx(Nav, {
3800
- navOptions: navOptions,
3801
- isRestricted: isRestricted
3802
- })
3803
- }), /*#__PURE__*/jsx(HideFromTweakLarge, {
3804
- children: /*#__PURE__*/jsx(HamburgerMenu, {
3805
- handleApplyNowClick: handleApplyNow,
3806
- application: application,
3807
- teamMember: latestTeamMember,
3808
- navOptions: navOptions,
3809
- openCommPanel: () => isCommPanelOpen ? closeCommPanel() : _openCommPanel(),
3810
- isRestricted: isRestricted
3811
- })
3812
- })]
3813
- }),
3814
- ctaSlot: /*#__PURE__*/jsx(CtaNav, {
3815
- handleApplyNowClick: handleApplyNow,
3816
- application: application,
3817
- session: session,
3818
- teamMember: latestTeamMember,
3819
- openCommPanel: () => isCommPanelOpen ? closeCommPanel() : _openCommPanel(),
3820
- isRestricted: isRestricted,
3821
- onLogout: onLogout
3822
- })
3823
- });
3824
- };
3825
- var Header = withErrorProvider(withRestrictionProvider(withLendiLDProvider(withCommPanel(HeaderWithContext))));
3826
-
3827
- /* eslint-disable camelcase */
3828
-
3829
- var ApplicationStage;
3830
- (function (ApplicationStage) {
3831
- ApplicationStage["started_application"] = "started_application";
3832
- ApplicationStage["finished_funnel2"] = "finished_funnel2";
3833
- ApplicationStage["finished_funnel3"] = "finished_funnel3";
3834
- ApplicationStage["finalised_application"] = "finalised_application";
3835
- ApplicationStage["loan_selected"] = "loan_selected";
3836
- })(ApplicationStage || (ApplicationStage = {}));
3837
-
3838
- export { ApplicationStage, GuestNavbar, Header, MultiNavbar, SimpleNavbar };
1
+ // 👋 hey!!
2
+ // you might be reading this and seeing .esm in the filename
3
+ // and being confused why there is commonjs below this filename
4
+ // DON'T WORRY!
5
+ // this is intentional
6
+ // it's only commonjs with `preconstruct dev`
7
+ // when you run `preconstruct build`, it will be ESM
8
+ // why is it commonjs?
9
+ // we need to re-export every export from the source file
10
+ // but we can't do that with ESM without knowing what the exports are (because default exports aren't included in export/import *)
11
+ // and they could change after running `preconstruct dev` so we can't look at the file without forcing people to
12
+ // run preconstruct dev again which wouldn't be ideal
13
+ // this solution could change but for now, it's working
14
+
15
+ module.exports = require("../src/index.tsx")