@phillips/seldon 1.177.0 → 1.178.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.
- package/dist/components/Navigation/NavigationList/NavigationList.js +1 -1
- package/dist/components/NotificationBanner/NotificationBanner.d.ts +18 -0
- package/dist/components/NotificationBanner/NotificationBanner.js +12 -0
- package/dist/components/NotificationBanner/NotificationBanner.stories.d.ts +19 -0
- package/dist/components/NotificationBanner/NotificationBanner.test.d.ts +1 -0
- package/dist/components/NotificationBanner/index.d.ts +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +50 -48
- package/dist/scss/_vars.scss +2 -0
- package/dist/scss/_vars.scss.js +2 -0
- package/dist/scss/componentStyles.scss +1 -0
- package/dist/scss/components/Navigation/NavigationItemTrigger/_navigationItemTrigger.scss +5 -2
- package/dist/scss/components/NotificationBanner/_notificationBanner.scss +11 -0
- package/dist/scss/site-furniture/Header/_header.scss +1 -1
- package/dist/site-furniture/Header/Header.d.ts +4 -0
- package/dist/site-furniture/Header/Header.js +100 -80
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as r, jsx as f } from "react/jsx-runtime";
|
|
2
|
+
import o from "../../../node_modules/classnames/index.js";
|
|
2
3
|
import * as a from "react";
|
|
3
4
|
import { px as n } from "../../../utils/index.js";
|
|
4
|
-
import o from "../../../node_modules/classnames/index.js";
|
|
5
5
|
import { TextVariants as d } from "../../Text/types.js";
|
|
6
6
|
import u from "../../Text/Text.js";
|
|
7
7
|
const g = a.forwardRef(
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
export type NotificationBannerProps = ComponentProps<'div'> & {
|
|
3
|
+
/**
|
|
4
|
+
* The content to display inside the notification banner.
|
|
5
|
+
*/
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* ## Overview
|
|
10
|
+
*
|
|
11
|
+
* The `NotificationBanner` component displays a prominent message at the top of the page or section to inform users about important information, updates, or alerts. It is designed to be highly visible and can contain any custom content passed as children. Use this component to draw attention to critical messages that require user awareness.
|
|
12
|
+
*
|
|
13
|
+
* [Figma Link](https://www.figma.com/design/qEd5aXjQeiboeJ8GJMOJba/Global-Notification-Banner?node-id=1-1899&m=dev)
|
|
14
|
+
*
|
|
15
|
+
* [Storybook Link](https://phillips-seldon.netlify.app/?path=/docs/components-notificationbanner--overview)
|
|
16
|
+
*/
|
|
17
|
+
declare const NotificationBanner: import('react').ForwardRefExoticComponent<Omit<NotificationBannerProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export default NotificationBanner;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import e from "../../node_modules/classnames/index.js";
|
|
3
|
+
import { forwardRef as c } from "react";
|
|
4
|
+
import { getCommonProps as f } from "../../utils/index.js";
|
|
5
|
+
const l = c(({ className: a, ...o }, i) => {
|
|
6
|
+
const { className: m, ...n } = f(o, "NotificationBanner"), { children: r, id: t } = o;
|
|
7
|
+
return /* @__PURE__ */ s("div", { ...n, ...o, className: e(m, a), ref: i, id: t, children: r });
|
|
8
|
+
});
|
|
9
|
+
l.displayName = "NotificationBanner";
|
|
10
|
+
export {
|
|
11
|
+
l as default
|
|
12
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { AuthState } from '../../patterns/UserManagement/types';
|
|
3
|
+
import { HeaderProps } from '../../site-furniture/Header/Header';
|
|
4
|
+
import { NotificationBannerProps } from './NotificationBanner';
|
|
5
|
+
declare const meta: {
|
|
6
|
+
title: string;
|
|
7
|
+
component: React.ForwardRefExoticComponent<Omit<NotificationBannerProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
};
|
|
9
|
+
export default meta;
|
|
10
|
+
export declare const Playground: {
|
|
11
|
+
(props: NotificationBannerProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
args: {
|
|
13
|
+
children: import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
};
|
|
15
|
+
argTypes: {};
|
|
16
|
+
};
|
|
17
|
+
export declare const WithHeader: ({ authState, ...props }: HeaderProps & {
|
|
18
|
+
authState?: AuthState;
|
|
19
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as NotificationBanner, type NotificationBannerProps } from './NotificationBanner';
|
package/dist/index.d.ts
CHANGED
|
@@ -78,10 +78,13 @@ export * from './components/AddToCalendar';
|
|
|
78
78
|
export * from './components/Article';
|
|
79
79
|
export * from './components/Countdown';
|
|
80
80
|
export * from './components/Countdown/types';
|
|
81
|
+
export * from './components/DescriptiveRadioButton';
|
|
82
|
+
export * from './components/DescriptiveRadioButtonGroup';
|
|
81
83
|
export * from './components/Divider';
|
|
82
84
|
export * from './components/FavoritingTileButton';
|
|
83
85
|
export * from './components/Filter';
|
|
84
86
|
export * from './components/Icon';
|
|
87
|
+
export * from './components/NotificationBanner';
|
|
85
88
|
export * from './components/Pictogram';
|
|
86
89
|
export * from './components/TextArea';
|
|
87
90
|
export * from './components/Toast';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PaddingTokens as a, SpacingTokens as f, defaultYear as s, emailValidation as l, encodeURLSearchParams as d, findChildrenExcludingTypes as m, findChildrenOfType as p, focusElementById as u, generatePaddingClassName as i, getCommonProps as x, noOp as n, px as c, useNormalizedInputProps as g } from "./utils/index.js";
|
|
2
2
|
import { default as C } from "./pages/Page.js";
|
|
3
|
-
import { SSRMediaQuery as
|
|
3
|
+
import { SSRMediaQuery as B, ssrMediaQueryStyle as P } from "./providers/SeldonProvider/utils.js";
|
|
4
4
|
import { usePendingState as A } from "./utils/hooks.js";
|
|
5
5
|
import { AuctionStatus as V, LotStatus as b, SupportedLanguages as y } from "./types/commonTypes.js";
|
|
6
6
|
import { default as v } from "./components/Button/Button.js";
|
|
@@ -27,7 +27,7 @@ import { default as ie } from "./components/Detail/Detail.js";
|
|
|
27
27
|
import { default as ne } from "./components/Drawer/Drawer.js";
|
|
28
28
|
import { default as ge } from "./components/Dropdown/Dropdown.js";
|
|
29
29
|
import { default as Ce } from "./components/ErrorBoundary/ErrorBoundary.js";
|
|
30
|
-
import { default as
|
|
30
|
+
import { default as Be } from "./components/Grid/Grid.js";
|
|
31
31
|
import { default as Ie } from "./components/GridItem/GridItem.js";
|
|
32
32
|
import { GridItemAlign as Le } from "./components/GridItem/types.js";
|
|
33
33
|
import { default as be } from "./components/Input/Input.js";
|
|
@@ -53,7 +53,7 @@ import { default as pt } from "./components/Tabs/TabsContent.js";
|
|
|
53
53
|
import { Tag as it, default as xt } from "./components/Tags/Tags.js";
|
|
54
54
|
import { TextAlignments as ct, TextVariants as gt } from "./components/Text/types.js";
|
|
55
55
|
import { default as Ct } from "./components/Text/Text.js";
|
|
56
|
-
import { TextSymbolVariants as
|
|
56
|
+
import { TextSymbolVariants as Bt } from "./components/TextSymbol/types.js";
|
|
57
57
|
import { default as It } from "./components/TextSymbol/TextSymbol.js";
|
|
58
58
|
import { default as Lt } from "./components/Video/Video.js";
|
|
59
59
|
import { default as bt } from "./patterns/DetailList/DetailList.js";
|
|
@@ -79,7 +79,7 @@ import { default as uo } from "./components/PageContentWrapper/PageContentWrappe
|
|
|
79
79
|
import { default as xo } from "./components/PhoneNumberPicker/PhoneNumberPicker.js";
|
|
80
80
|
import { default as co } from "./patterns/FiltersInline/FiltersInline.js";
|
|
81
81
|
import { FilterButtonIconType as So, FilterButtonType as Co } from "./patterns/FiltersInline/types.js";
|
|
82
|
-
import { default as
|
|
82
|
+
import { default as Bo } from "./patterns/SaleCard/SaleCard.js";
|
|
83
83
|
import { SaleCardActions as Io } from "./patterns/SaleCard/SaleCardActions.js";
|
|
84
84
|
import { SaleCardVariants as Lo } from "./patterns/SaleCard/types.js";
|
|
85
85
|
import { default as bo } from "./patterns/ViewingDetails/ViewingDetails.js";
|
|
@@ -90,39 +90,40 @@ import { default as Ho } from "./components/AddToCalendar/AddToCalendar.js";
|
|
|
90
90
|
import { default as No } from "./components/Article/Article.js";
|
|
91
91
|
import { default as Go } from "./components/Countdown/Countdown.js";
|
|
92
92
|
import { CountdownVariants as Uo } from "./components/Countdown/types.js";
|
|
93
|
-
import { default as Qo } from "./components/
|
|
94
|
-
import { default as zo } from "./components/
|
|
95
|
-
import { default as Yo } from "./components/
|
|
96
|
-
import { default as qo } from "./components/
|
|
97
|
-
import { default as Ko } from "./components/Filter/
|
|
98
|
-
import { default as _o } from "./components/
|
|
99
|
-
import { default as er } from "./components/
|
|
100
|
-
import { default as or } from "./components/
|
|
101
|
-
import {
|
|
102
|
-
import {
|
|
103
|
-
import { default as dr } from "./
|
|
104
|
-
import {
|
|
105
|
-
import {
|
|
106
|
-
import {
|
|
107
|
-
import { default as
|
|
108
|
-
import { default as
|
|
109
|
-
import {
|
|
110
|
-
import { default as Ar } from "./
|
|
111
|
-
import { default as Vr } from "./
|
|
93
|
+
import { default as Qo } from "./components/DescriptiveRadioButton/DescriptiveRadioButton.js";
|
|
94
|
+
import { default as zo } from "./components/DescriptiveRadioButtonGroup/DescriptiveRadioButtonGroup.js";
|
|
95
|
+
import { default as Yo } from "./components/Divider/Divider.js";
|
|
96
|
+
import { default as qo } from "./components/FavoritingTileButton/FavoritingTileButton.js";
|
|
97
|
+
import { default as Ko } from "./components/Filter/Filter.js";
|
|
98
|
+
import { default as _o } from "./components/Filter/FilterInput.js";
|
|
99
|
+
import { default as er } from "./components/Filter/FilterHeader.js";
|
|
100
|
+
import { default as or } from "./components/NotificationBanner/NotificationBanner.js";
|
|
101
|
+
import { default as ar } from "./components/Pictogram/Pictogram.js";
|
|
102
|
+
import { default as sr } from "./components/TextArea/TextArea.js";
|
|
103
|
+
import { default as dr } from "./components/Toast/Toast.js";
|
|
104
|
+
import { ToastProvider as pr } from "./components/Toast/ToastContextProvider.js";
|
|
105
|
+
import { useToast as ir } from "./components/Toast/useToast.js";
|
|
106
|
+
import { default as nr } from "./patterns/AccountPageHeader/AccountPageHeader.js";
|
|
107
|
+
import { default as gr } from "./patterns/BidSnapshot/BidSnapshot.js";
|
|
108
|
+
import { default as Cr } from "./patterns/BidSnapshot/BidMessage.js";
|
|
109
|
+
import { BidMessageVariants as Br, BidStatusEnum as Pr } from "./patterns/BidSnapshot/types.js";
|
|
110
|
+
import { default as Ar } from "./patterns/FilterMenu/FilterMenu.js";
|
|
111
|
+
import { default as Vr } from "./patterns/ObjectTile/ObjectTile.js";
|
|
112
|
+
import { default as yr } from "./patterns/CountryPicker/CountryPicker.js";
|
|
112
113
|
export {
|
|
113
114
|
M as Accordion,
|
|
114
115
|
E as AccordionItem,
|
|
115
116
|
R as AccordionItemVariant,
|
|
116
117
|
U as AccordionVariants,
|
|
117
|
-
|
|
118
|
+
nr as AccountPageHeader,
|
|
118
119
|
Ho as AddToCalendar,
|
|
119
120
|
No as Article,
|
|
120
121
|
V as AuctionStatus,
|
|
121
122
|
Yt as AuthState,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
Cr as BidMessage,
|
|
124
|
+
Br as BidMessageVariants,
|
|
125
|
+
gr as BidSnapshot,
|
|
126
|
+
Pr as BidStatusEnum,
|
|
126
127
|
Q as Breadcrumb,
|
|
127
128
|
v as Button,
|
|
128
129
|
w as ButtonVariants,
|
|
@@ -140,28 +141,28 @@ export {
|
|
|
140
141
|
pe as ContentPeekHeightUnits,
|
|
141
142
|
Go as Countdown,
|
|
142
143
|
Uo as CountdownVariants,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
yr as CountryPicker,
|
|
145
|
+
Qo as DescriptiveRadioButton,
|
|
146
|
+
zo as DescriptiveRadioButtonGroup,
|
|
146
147
|
ie as Detail,
|
|
147
148
|
bt as DetailList,
|
|
148
149
|
kt as DetailListAlignment,
|
|
149
|
-
|
|
150
|
+
Yo as Divider,
|
|
150
151
|
ne as Drawer,
|
|
151
152
|
ge as Dropdown,
|
|
152
153
|
Ce as ErrorBoundary,
|
|
153
154
|
so as ExitGateCard,
|
|
154
155
|
ht as FavoritesCollectionTile,
|
|
155
|
-
|
|
156
|
-
|
|
156
|
+
qo as FavoritingTileButton,
|
|
157
|
+
Ko as Filter,
|
|
157
158
|
So as FilterButtonIconType,
|
|
158
159
|
Co as FilterButtonType,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
er as FilterHeader,
|
|
161
|
+
_o as FilterInput,
|
|
162
|
+
Ar as FilterMenu,
|
|
162
163
|
co as FiltersInline,
|
|
163
164
|
ho as Footer,
|
|
164
|
-
|
|
165
|
+
Be as Grid,
|
|
165
166
|
Ie as GridItem,
|
|
166
167
|
Le as GridItemAlign,
|
|
167
168
|
Do as Header,
|
|
@@ -181,18 +182,19 @@ export {
|
|
|
181
182
|
Ue as NavigationItem,
|
|
182
183
|
Qe as NavigationItemTrigger,
|
|
183
184
|
ze as NavigationList,
|
|
184
|
-
|
|
185
|
+
or as NotificationBanner,
|
|
186
|
+
Vr as ObjectTile,
|
|
185
187
|
a as PaddingTokens,
|
|
186
188
|
C as Page,
|
|
187
189
|
uo as PageContentWrapper,
|
|
188
190
|
Ye as Pagination,
|
|
189
191
|
xo as PhoneNumberPicker,
|
|
190
|
-
|
|
192
|
+
ar as Pictogram,
|
|
191
193
|
qe as PinchZoom,
|
|
192
194
|
ko as ProgressIndicator,
|
|
193
195
|
Ke as Row,
|
|
194
|
-
|
|
195
|
-
|
|
196
|
+
B as SSRMediaQuery,
|
|
197
|
+
Bo as SaleCard,
|
|
196
198
|
Io as SaleCardActions,
|
|
197
199
|
Lo as SaleCardVariants,
|
|
198
200
|
Nt as SaleHeaderBanner,
|
|
@@ -215,12 +217,12 @@ export {
|
|
|
215
217
|
xt as TagsList,
|
|
216
218
|
Ct as Text,
|
|
217
219
|
ct as TextAlignments,
|
|
218
|
-
|
|
219
|
-
|
|
220
|
+
sr as TextArea,
|
|
221
|
+
Bt as TextSymbolVariants,
|
|
220
222
|
It as TextSymbols,
|
|
221
223
|
gt as TextVariants,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
+
dr as Toast,
|
|
225
|
+
pr as ToastProvider,
|
|
224
226
|
qt as UserManagement,
|
|
225
227
|
Lt as Video,
|
|
226
228
|
bo as ViewingDetails,
|
|
@@ -235,8 +237,8 @@ export {
|
|
|
235
237
|
x as getCommonProps,
|
|
236
238
|
n as noOp,
|
|
237
239
|
c as px,
|
|
238
|
-
|
|
240
|
+
P as ssrMediaQueryStyle,
|
|
239
241
|
g as useNormalizedInputProps,
|
|
240
242
|
A as usePendingState,
|
|
241
|
-
|
|
243
|
+
ir as useToast
|
|
242
244
|
};
|
package/dist/scss/_vars.scss
CHANGED
|
@@ -397,6 +397,7 @@ $margin-xxl: var(--spacing-xxl);
|
|
|
397
397
|
:root {
|
|
398
398
|
--header-height: 56px; // ideally we would calculate the size from the current text size plus spacing components so that it scales with the text size and spacing
|
|
399
399
|
--search-size: 2.625rem; // This should be calculated from the scaling text and scaling spacing tokens instead of hardcoding in case they change
|
|
400
|
+
--banner-height: 0px;
|
|
400
401
|
|
|
401
402
|
@media (min-width: $breakpoint-md) {
|
|
402
403
|
--header-height: 123px; // ideally we would calculate the size from the current text size plus spacing components so that it scales with the text size and spacing
|
|
@@ -418,6 +419,7 @@ $desktop-max-width: var(--desktop-max-width);
|
|
|
418
419
|
/// z-index TOKENS:
|
|
419
420
|
///////////////////////
|
|
420
421
|
$modal-z-index: 30;
|
|
422
|
+
$z-index-notification-banner: 1000;
|
|
421
423
|
|
|
422
424
|
////////////////////////
|
|
423
425
|
/// Our tokens usually support at least 4 sizes.
|
package/dist/scss/_vars.scss.js
CHANGED
|
@@ -397,6 +397,7 @@ $margin-xxl: var(--spacing-xxl);
|
|
|
397
397
|
:root {
|
|
398
398
|
--header-height: 56px; // ideally we would calculate the size from the current text size plus spacing components so that it scales with the text size and spacing
|
|
399
399
|
--search-size: 2.625rem; // This should be calculated from the scaling text and scaling spacing tokens instead of hardcoding in case they change
|
|
400
|
+
--banner-height: 0px;
|
|
400
401
|
|
|
401
402
|
@media (min-width: $breakpoint-md) {
|
|
402
403
|
--header-height: 123px; // ideally we would calculate the size from the current text size plus spacing components so that it scales with the text size and spacing
|
|
@@ -418,6 +419,7 @@ $desktop-max-width: var(--desktop-max-width);
|
|
|
418
419
|
/// z-index TOKENS:
|
|
419
420
|
///////////////////////
|
|
420
421
|
$modal-z-index: 30;
|
|
422
|
+
$z-index-notification-banner: 1000;
|
|
421
423
|
|
|
422
424
|
////////////////////////
|
|
423
425
|
/// Our tokens usually support at least 4 sizes.
|
|
@@ -41,7 +41,10 @@
|
|
|
41
41
|
pointer-events: none;
|
|
42
42
|
position: fixed; // has to bust out of the box containing it on desktop
|
|
43
43
|
right: 0;
|
|
44
|
-
top: calc(
|
|
44
|
+
top: calc(
|
|
45
|
+
var(--banner-height) + #{$header-height} + 1px
|
|
46
|
+
); // will be dynamically set again when notification banner is shown
|
|
47
|
+
|
|
45
48
|
transition:
|
|
46
49
|
max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1),
|
|
47
50
|
opacity 0.2s cubic-bezier(0.65, 0, 0.35, 1);
|
|
@@ -56,7 +59,7 @@
|
|
|
56
59
|
&--hovered &__submenu {
|
|
57
60
|
cursor: default;
|
|
58
61
|
left: 0;
|
|
59
|
-
max-height: calc(90vh - #{$header-height});
|
|
62
|
+
max-height: calc(90vh - #{$header-height} + var(--banner-height));
|
|
60
63
|
opacity: 1;
|
|
61
64
|
-ms-overflow-style: none; /* Internet Explorer 10+ */
|
|
62
65
|
overflow-y: scroll;
|
|
@@ -24,6 +24,10 @@ export interface HeaderProps extends ComponentProps<'header'> {
|
|
|
24
24
|
* Is the header disabled
|
|
25
25
|
*/
|
|
26
26
|
disabled?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Reference to the notification banner
|
|
29
|
+
*/
|
|
30
|
+
bannerRef?: React.MutableRefObject<HTMLDivElement | null>;
|
|
27
31
|
}
|
|
28
32
|
export type HeaderContextType = {
|
|
29
33
|
/**
|
|
@@ -1,88 +1,108 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { useMobileMenu as
|
|
11
|
-
import
|
|
12
|
-
const
|
|
1
|
+
import { jsxs as l, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import i from "../../node_modules/classnames/index.js";
|
|
3
|
+
import t, { createContext as k, forwardRef as q, useState as c, useEffect as B } from "react";
|
|
4
|
+
import Q from "../../components/Icon/Icon.js";
|
|
5
|
+
import b from "../../components/Navigation/Navigation.js";
|
|
6
|
+
import x from "../../patterns/LanguageSelector/LanguageSelector.js";
|
|
7
|
+
import C from "../../patterns/UserManagement/UserManagement.js";
|
|
8
|
+
import { SSRMediaQuery as U } from "../../providers/SeldonProvider/utils.js";
|
|
9
|
+
import { findChildrenOfType as m, findChildrenExcludingTypes as D, px as n } from "../../utils/index.js";
|
|
10
|
+
import { useMobileMenu as F } from "./hooks.js";
|
|
11
|
+
import { defaultHeaderContext as G } from "./utils.js";
|
|
12
|
+
const J = k(G), K = q(
|
|
13
13
|
({
|
|
14
|
-
logo:
|
|
15
|
-
logoHref:
|
|
16
|
-
className:
|
|
17
|
-
children:
|
|
18
|
-
toggleOpenText:
|
|
19
|
-
toggleCloseText:
|
|
20
|
-
logoText:
|
|
21
|
-
disabled:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
setIsSearchExpanded: N,
|
|
57
|
-
closeMenu: R
|
|
58
|
-
},
|
|
59
|
-
children: [
|
|
60
|
-
e.Children.map(
|
|
61
|
-
T,
|
|
62
|
-
(r) => e.isValidElement(r) ? e.cloneElement(r, {
|
|
14
|
+
logo: s = /* @__PURE__ */ r(Q, { icon: "PhillipsLogo" }),
|
|
15
|
+
logoHref: M = "/",
|
|
16
|
+
className: y,
|
|
17
|
+
children: a,
|
|
18
|
+
toggleOpenText: H = "Open Menu",
|
|
19
|
+
toggleCloseText: S = "Close Menu",
|
|
20
|
+
logoText: $ = "Home Page",
|
|
21
|
+
disabled: h,
|
|
22
|
+
bannerRef: o,
|
|
23
|
+
...N
|
|
24
|
+
}, O) => {
|
|
25
|
+
const u = m(a, C), T = t.isValidElement(u?.[0]) ? t.cloneElement(u[0], { disabled: h }) : "", g = m(a, x), p = t.isValidElement(g?.[0]) ? t.cloneElement(g[0], { disabled: h }) : "", [f, w] = c(!1), I = m(a, b), P = D(a, [b, C, x]), { closeMenu: j, handleMenuToggle: R, isMenuOpen: d, toggleText: V } = F({ toggleOpenText: H, toggleCloseText: S }), [z, A] = c(null), L = t.useRef(null), [_, v] = c(o?.current ? o.current.clientHeight : 0);
|
|
26
|
+
return B(() => {
|
|
27
|
+
const e = o?.current;
|
|
28
|
+
if (!e) return;
|
|
29
|
+
v(e.clientHeight);
|
|
30
|
+
const E = new window.ResizeObserver(() => {
|
|
31
|
+
v(e.clientHeight);
|
|
32
|
+
});
|
|
33
|
+
return E.observe(e), () => {
|
|
34
|
+
E.disconnect();
|
|
35
|
+
};
|
|
36
|
+
}, [o, _]), /* @__PURE__ */ l(
|
|
37
|
+
"header",
|
|
38
|
+
{
|
|
39
|
+
...N,
|
|
40
|
+
className: i(`${n}-header`, y),
|
|
41
|
+
ref: O,
|
|
42
|
+
style: { "--banner-height": `${_}px` },
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ l("div", { className: `${n}-header__top-row`, children: [
|
|
45
|
+
/* @__PURE__ */ r(U.Media, { greaterThanOrEqual: "md", children: p }),
|
|
46
|
+
/* @__PURE__ */ l(
|
|
47
|
+
"button",
|
|
48
|
+
{
|
|
49
|
+
"aria-label": V,
|
|
50
|
+
"data-testid": "mobile-menu-toggle",
|
|
51
|
+
type: "button",
|
|
52
|
+
onClick: R,
|
|
53
|
+
className: i(`${n}-header__toggle-btn`, {
|
|
54
|
+
[`${n}-header__toggle-btn--open`]: d
|
|
55
|
+
}),
|
|
63
56
|
children: [
|
|
64
|
-
|
|
65
|
-
|
|
57
|
+
/* @__PURE__ */ r("span", {}),
|
|
58
|
+
" "
|
|
66
59
|
]
|
|
67
|
-
}
|
|
60
|
+
}
|
|
68
61
|
),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
62
|
+
/* @__PURE__ */ r("h1", { "data-testid": "header-logo", className: `${n}-header__logo`, children: /* @__PURE__ */ r("a", { href: M, "aria-label": $, children: typeof s == "object" ? s : /* @__PURE__ */ r("img", { alt: "Phillips", "data-testid": "header-logo-img", src: s }) }) }),
|
|
63
|
+
T
|
|
64
|
+
] }),
|
|
65
|
+
/* @__PURE__ */ r("div", { className: i(`${n}-header__nav`, { [`${n}-header__nav--closed`]: !d }), children: /* @__PURE__ */ l(
|
|
66
|
+
J.Provider,
|
|
67
|
+
{
|
|
68
|
+
value: {
|
|
69
|
+
activeSubmenuId: z,
|
|
70
|
+
setActiveSubmenuId: A,
|
|
71
|
+
closeTimeoutRef: L,
|
|
72
|
+
isMenuOpen: d,
|
|
73
|
+
isSearchExpanded: f,
|
|
74
|
+
setIsSearchExpanded: w,
|
|
75
|
+
closeMenu: j
|
|
76
|
+
},
|
|
77
|
+
children: [
|
|
78
|
+
t.Children.map(
|
|
79
|
+
I,
|
|
80
|
+
(e) => t.isValidElement(e) ? t.cloneElement(e, {
|
|
81
|
+
children: [
|
|
82
|
+
...t.Children.toArray(e.props.children),
|
|
83
|
+
p
|
|
84
|
+
]
|
|
85
|
+
}) : e
|
|
86
|
+
),
|
|
87
|
+
P
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
) }),
|
|
91
|
+
/* @__PURE__ */ r(
|
|
92
|
+
"div",
|
|
93
|
+
{
|
|
94
|
+
className: i(`${n}-header__overlay`, {
|
|
95
|
+
[`${n}-header__overlay--active`]: f
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
);
|
|
82
102
|
}
|
|
83
103
|
);
|
|
84
|
-
|
|
104
|
+
K.displayName = "Header";
|
|
85
105
|
export {
|
|
86
|
-
|
|
87
|
-
|
|
106
|
+
J as HeaderContext,
|
|
107
|
+
K as default
|
|
88
108
|
};
|