@asante-org/leybold-design-system 1.2.2 → 1.3.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/README.md +163 -163
- package/dist/.next/types/app/layout.d.ts +9 -0
- package/dist/.next/types/app/page.d.ts +9 -0
- package/dist/assets/.gitkeep +2 -2
- package/dist/assets/desktop-layout-alt.svg +27 -27
- package/dist/assets/desktop-layout.svg +29 -29
- package/dist/assets/globe.svg +7 -7
- package/dist/assets/leybold-footer-logo.svg +19 -19
- package/dist/assets/leybold-white.svg +18 -18
- package/dist/assets/list-product-overlay-tip-active.svg +3 -3
- package/dist/assets/list-product-overlay-tip.svg +3 -3
- package/dist/assets/logo-example.svg +9 -9
- package/dist/assets/logo.svg +19 -19
- package/dist/assets/phone-layout.svg +14 -14
- package/dist/assets/red-tip.svg +10 -10
- package/dist/assets/tablet-layout.svg +28 -28
- package/dist/index.esm.js +1359 -1147
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.scss +238 -35
- package/dist/index.js +1403 -1194
- package/dist/index.js.map +1 -1
- package/dist/index.scss +238 -35
- package/dist/src/components/Button/Button.d.ts +2 -2
- package/dist/src/components/ContentCardBase/ContentCardBase.d.ts +3 -0
- package/dist/src/components/ContentCardBase/index.d.ts +2 -0
- package/dist/src/components/ContentCardHorizontal/ContentCardHorizontal.d.ts +2 -2
- package/dist/src/components/ContentCardVertical/ContentCardVertical.d.ts +3 -0
- package/dist/src/components/ContentCardVertical/ContentCardVertical.stories.d.ts +9 -0
- package/dist/src/experience/algolia-dynamic-search/AlgoliaDynamicSearch.stories.d.ts +2 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/stories/foundation/Typography/TypographyComponents.d.ts +1 -0
- package/dist/src/types/cards.d.ts +28 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +115 -115
- package/dist/app/layout.d.ts +0 -9
- package/dist/app/page.d.ts +0 -2
- package/dist/index.css +0 -88
- package/dist/index.d.ts +0 -3
- package/dist/index.esm.css +0 -88
- package/dist/stories/components/Algolia-dynamic-search/algolia-dynamic-search.d.ts +0 -4
- package/dist/stories/components/Algolia-dynamic-search/algolia-dynamic-search.stories.d.ts +0 -7
- package/dist/stories/components/Button/Button.d.ts +0 -35
- package/dist/stories/components/Button/Button.stories.d.ts +0 -15
- package/dist/stories/components/Button/index.d.ts +0 -2
- package/dist/stories/components/QRFormJourney/Qr-form/Qr-form.d.ts +0 -2
- package/dist/stories/components/QRFormJourney/Qr-form/Qr-form.stories.d.ts +0 -7
- package/dist/utils/styles/index.d.ts +0 -1
package/dist/index.esm.js
CHANGED
|
@@ -15,7 +15,46 @@ function _extends() {
|
|
|
15
15
|
}, _extends.apply(null, arguments);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
/******************************************************************************
|
|
19
|
+
Copyright (c) Microsoft Corporation.
|
|
20
|
+
|
|
21
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
22
|
+
purpose with or without fee is hereby granted.
|
|
23
|
+
|
|
24
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
25
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
26
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
27
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
28
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
29
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
30
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
31
|
+
***************************************************************************** */
|
|
32
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
33
|
+
|
|
34
|
+
var __assign = function () {
|
|
35
|
+
__assign = Object.assign || function __assign(t) {
|
|
36
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
37
|
+
s = arguments[i];
|
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
39
|
+
}
|
|
40
|
+
return t;
|
|
41
|
+
};
|
|
42
|
+
return __assign.apply(this, arguments);
|
|
43
|
+
};
|
|
44
|
+
function __rest(s, e) {
|
|
45
|
+
var t = {};
|
|
46
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
47
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
48
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
49
|
+
}
|
|
50
|
+
return t;
|
|
51
|
+
}
|
|
52
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
53
|
+
var e = new Error(message);
|
|
54
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var styles$l = {"button":"Button-module__button___18Bed","button--primary":"Button-module__button--primary___VuF-P","button--disabled":"Button-module__button--disabled___IuOY8","button--secondary":"Button-module__button--secondary___lD5E3","button--solid-grey":"Button-module__button--solid-grey___oRbEy","button--solid-black":"Button-module__button--solid-black___1Ma5K","button--solid-white":"Button-module__button--solid-white___bE-Z0","button--outlined-grey":"Button-module__button--outlined-grey___xWGbB","button--outlined-black":"Button-module__button--outlined-black___qfX5o","button--outlined-white":"Button-module__button--outlined-white___QLXNP","button--link-text":"Button-module__button--link-text___R2kun","button__icon":"Button-module__button__icon___hlcHo","button--link-text-alt":"Button-module__button--link-text-alt___1p7wH","button--external-link":"Button-module__button--external-link___Mhxuk","button--carousel-arrow-left":"Button-module__button--carousel-arrow-left___Wx-Jo","button--carousel-arrow-right":"Button-module__button--carousel-arrow-right___3ZtgT","button__icon__default":"Button-module__button__icon__default___0qlF1","button__icon__hover":"Button-module__button__icon__hover___3xPGT","button--extra-small":"Button-module__button--extra-small___R0QTM","button--small":"Button-module__button--small___ADJQe","button--medium":"Button-module__button--medium___ZuR4Z","button--large":"Button-module__button--large___-FaV5","button__icon--left":"Button-module__button__icon--left___wMCeH","button__icon--right":"Button-module__button__icon--right___-pGHl"};
|
|
19
58
|
|
|
20
59
|
function getDefaultExportFromCjs (x) {
|
|
21
60
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -92,22 +131,10 @@ function requireClassnames() {
|
|
|
92
131
|
var classnamesExports = requireClassnames();
|
|
93
132
|
var classNames = /*@__PURE__*/getDefaultExportFromCjs(classnamesExports);
|
|
94
133
|
|
|
95
|
-
/**
|
|
96
|
-
*
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Icon types for button
|
|
101
|
-
*/
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Icon position
|
|
105
|
-
*/
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Get the icon component based on icon type
|
|
134
|
+
/**
|
|
135
|
+
* Get the icon component based on icon type
|
|
109
136
|
*/
|
|
110
|
-
|
|
137
|
+
var getIcon = function (icon) {
|
|
111
138
|
switch (icon) {
|
|
112
139
|
case "arrow-right":
|
|
113
140
|
return /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
@@ -129,11 +156,10 @@ const getIcon = icon => {
|
|
|
129
156
|
return null;
|
|
130
157
|
}
|
|
131
158
|
};
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
* Get default icon for certain variants
|
|
159
|
+
/**
|
|
160
|
+
* Get default icon for certain variants
|
|
135
161
|
*/
|
|
136
|
-
|
|
162
|
+
var getDefaultIcon = function (variant) {
|
|
137
163
|
switch (variant) {
|
|
138
164
|
case "link-text":
|
|
139
165
|
case "link-text-alt":
|
|
@@ -150,11 +176,10 @@ const getDefaultIcon = variant => {
|
|
|
150
176
|
return "none";
|
|
151
177
|
}
|
|
152
178
|
};
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
* Map alias variants to their actual CSS class variants
|
|
179
|
+
/**
|
|
180
|
+
* Map alias variants to their actual CSS class variants
|
|
156
181
|
*/
|
|
157
|
-
|
|
182
|
+
var mapVariantToClass = function (variant) {
|
|
158
183
|
switch (variant) {
|
|
159
184
|
case "text":
|
|
160
185
|
return "link-text";
|
|
@@ -162,130 +187,127 @@ const mapVariantToClass = variant => {
|
|
|
162
187
|
return variant;
|
|
163
188
|
}
|
|
164
189
|
};
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
* Primary UI component for user interaction
|
|
190
|
+
/**
|
|
191
|
+
* Primary UI component for user interaction
|
|
168
192
|
*/
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
193
|
+
var Button = function (_a) {
|
|
194
|
+
var _b;
|
|
195
|
+
var children = _a.children,
|
|
196
|
+
_c = _a.variant,
|
|
197
|
+
variant = _c === void 0 ? "primary" : _c,
|
|
198
|
+
_d = _a.size,
|
|
199
|
+
size = _d === void 0 ? "medium" : _d,
|
|
200
|
+
_e = _a.disabled,
|
|
201
|
+
disabled = _e === void 0 ? false : _e,
|
|
202
|
+
onClick = _a.onClick,
|
|
203
|
+
_f = _a.type,
|
|
204
|
+
type = _f === void 0 ? "button" : _f,
|
|
205
|
+
className = _a.className,
|
|
206
|
+
icon = _a.icon,
|
|
207
|
+
_g = _a.iconPosition,
|
|
208
|
+
iconPosition = _g === void 0 ? "right" : _g,
|
|
209
|
+
ariaLabel = _a.ariaLabel;
|
|
210
|
+
_a.opensInNewTab;
|
|
211
|
+
var props = __rest(_a, ["children", "variant", "size", "disabled", "onClick", "type", "className", "icon", "iconPosition", "ariaLabel", "opensInNewTab"]);
|
|
183
212
|
// Map alias variants to actual class names
|
|
184
|
-
|
|
185
|
-
|
|
213
|
+
var cssVariant = mapVariantToClass(variant);
|
|
186
214
|
// Determine the icon to display
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
215
|
+
var displayIcon = icon !== null && icon !== void 0 ? icon : getDefaultIcon(variant);
|
|
216
|
+
var iconElement = getIcon(displayIcon);
|
|
190
217
|
// Check if this is an icon-only button (carousel arrows)
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}, className);
|
|
197
|
-
const iconClasses = classNames(styles$k.button__icon, styles$k[`button__icon--${iconPosition}`]);
|
|
198
|
-
|
|
218
|
+
var isIconOnly = variant === "carousel-arrow-left" || variant === "carousel-arrow-right";
|
|
219
|
+
var isCarouselLeft = variant === "carousel-arrow-left";
|
|
220
|
+
var isCarouselRight = variant === "carousel-arrow-right";
|
|
221
|
+
var buttonClasses = classNames(styles$l.button, styles$l["button--".concat(cssVariant)], styles$l["button--".concat(size)], (_b = {}, _b[styles$l["button--disabled"]] = disabled, _b), className);
|
|
222
|
+
var iconClasses = classNames(styles$l.button__icon, styles$l["button__icon--".concat(iconPosition)]);
|
|
199
223
|
// Generate accessible label for icon-only buttons
|
|
200
|
-
|
|
224
|
+
var accessibleLabel = ariaLabel || (isIconOnly ? variant === "carousel-arrow-left" ? "Previous" : "Next" : undefined);
|
|
201
225
|
return /*#__PURE__*/React.createElement("button", _extends({
|
|
202
226
|
type: type,
|
|
203
227
|
className: buttonClasses,
|
|
204
228
|
disabled: disabled,
|
|
205
229
|
onClick: onClick,
|
|
206
230
|
"aria-label": accessibleLabel,
|
|
207
|
-
"data-force-state": props[
|
|
231
|
+
"data-force-state": props["data-force-state"]
|
|
208
232
|
}, props), !isIconOnly && children, isCarouselLeft && /*#__PURE__*/React.createElement("span", {
|
|
209
233
|
className: iconClasses
|
|
210
234
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
211
235
|
icon: faArrowLeft,
|
|
212
|
-
className: styles$
|
|
236
|
+
className: styles$l.button__icon__default
|
|
213
237
|
}), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
214
238
|
icon: faArrowLeftLong,
|
|
215
|
-
className: styles$
|
|
239
|
+
className: styles$l.button__icon__hover
|
|
216
240
|
})), isCarouselRight && /*#__PURE__*/React.createElement("span", {
|
|
217
241
|
className: iconClasses
|
|
218
242
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
219
243
|
icon: faArrowRight,
|
|
220
|
-
className: styles$
|
|
244
|
+
className: styles$l.button__icon__default
|
|
221
245
|
}), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
222
246
|
icon: faArrowRightLong,
|
|
223
|
-
className: styles$
|
|
247
|
+
className: styles$l.button__icon__hover
|
|
224
248
|
})), !isIconOnly && iconElement && /*#__PURE__*/React.createElement("span", {
|
|
225
249
|
className: iconClasses
|
|
226
250
|
}, iconElement));
|
|
227
251
|
};
|
|
228
252
|
|
|
229
|
-
var styles$
|
|
253
|
+
var styles$k = {"footer":"Footer-module__footer___Oavyx","footer--mobile":"Footer-module__footer--mobile___9HQC-","footer__container":"Footer-module__footer__container___ohvnm","footer__links":"Footer-module__footer__links___DdVK8","footer__linkGroup":"Footer-module__footer__linkGroup___1B7JA","footer__linkList":"Footer-module__footer__linkList___j-DWF","footer__linkHeading":"Footer-module__footer__linkHeading___LtE6X","footer__link":"Footer-module__footer__link___G5HPW","footer__cta":"Footer-module__footer__cta___MRJLr","footer__socialIcons":"Footer-module__footer__socialIcons___j0aRp","footer__socialIcon":"Footer-module__footer__socialIcon___1uVTm","footer__countrySelector":"Footer-module__footer__countrySelector___pVtN5","footer__bottom":"Footer-module__footer__bottom___77bPL","footer__bottomLeft":"Footer-module__footer__bottomLeft___tlst1","footer__bottomLinks":"Footer-module__footer__bottomLinks___s22h7","footer__bottomLink":"Footer-module__footer__bottomLink___SLzwY","footer__copyright":"Footer-module__footer__copyright___4bZOF","footer__brandSection":"Footer-module__footer__brandSection___BBr5f","footer__logo":"Footer-module__footer__logo___mv-9M","footer__leftCol":"Footer-module__footer__leftCol___vmKNN","footer__motto":"Footer-module__footer__motto___QtB2m","footer__main":"Footer-module__footer__main___NSU9d","footer__badge":"Footer-module__footer__badge___faejb","footer__badgeIcon":"Footer-module__footer__badgeIcon___xJ519","footer__badgeText":"Footer-module__footer__badgeText___imXgG","footer__linkText":"Footer-module__footer__linkText___Gc18Z","footer__linkIcon":"Footer-module__footer__linkIcon___IZzJM","footer__countrySelectorIcon":"Footer-module__footer__countrySelectorIcon___hhEd4"};
|
|
230
254
|
|
|
231
|
-
/**
|
|
232
|
-
* External link icon (↗) for footer links that open in new tabs
|
|
233
|
-
*/
|
|
234
|
-
const ExternalLinkIcon = ({
|
|
235
|
-
className,
|
|
236
|
-
size = 15
|
|
237
|
-
}) => /*#__PURE__*/React.createElement("svg", {
|
|
238
|
-
width: size,
|
|
239
|
-
height: size,
|
|
240
|
-
viewBox: "0 0 15 15",
|
|
241
|
-
fill: "none",
|
|
242
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
243
|
-
className: className,
|
|
244
|
-
"aria-hidden": "true"
|
|
245
|
-
}, /*#__PURE__*/React.createElement("path", {
|
|
246
|
-
d: "M11.25 8.125V11.875C11.25 12.2065 11.1183 12.5245 10.8839 12.7589C10.6495 12.9933 10.3315 13.125 10 13.125H3.125C2.79348 13.125 2.47554 12.9933 2.24112 12.7589C2.0067 12.5245 1.875 12.2065 1.875 11.875V5C1.875 4.66848 2.0067 4.35054 2.24112 4.11612C2.47554 3.8817 2.79348 3.75 3.125 3.75H6.875M9.375 1.875H13.125M13.125 1.875V5.625M13.125 1.875L6.25 8.75",
|
|
247
|
-
stroke: "currentColor",
|
|
248
|
-
strokeWidth: "1.5",
|
|
249
|
-
strokeLinecap: "round",
|
|
250
|
-
strokeLinejoin: "round"
|
|
251
|
-
}));
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Atlas Copco Group badge icon (square)
|
|
255
|
+
/**
|
|
256
|
+
* External link icon (↗) for footer links that open in new tabs
|
|
255
257
|
*/
|
|
256
|
-
|
|
257
|
-
className,
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
}
|
|
258
|
+
var ExternalLinkIcon = function (_a) {
|
|
259
|
+
var className = _a.className,
|
|
260
|
+
_b = _a.size,
|
|
261
|
+
size = _b === void 0 ? 15 : _b;
|
|
262
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
263
|
+
width: size,
|
|
264
|
+
height: size,
|
|
265
|
+
viewBox: "0 0 15 15",
|
|
266
|
+
fill: "none",
|
|
267
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
268
|
+
className: className,
|
|
269
|
+
"aria-hidden": "true"
|
|
270
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
271
|
+
d: "M11.25 8.125V11.875C11.25 12.2065 11.1183 12.5245 10.8839 12.7589C10.6495 12.9933 10.3315 13.125 10 13.125H3.125C2.79348 13.125 2.47554 12.9933 2.24112 12.7589C2.0067 12.5245 1.875 12.2065 1.875 11.875V5C1.875 4.66848 2.0067 4.35054 2.24112 4.11612C2.47554 3.8817 2.79348 3.75 3.125 3.75H6.875M9.375 1.875H13.125M13.125 1.875V5.625M13.125 1.875L6.25 8.75",
|
|
272
|
+
stroke: "currentColor",
|
|
273
|
+
strokeWidth: "1.5",
|
|
274
|
+
strokeLinecap: "round",
|
|
275
|
+
strokeLinejoin: "round"
|
|
276
|
+
}));
|
|
277
|
+
};
|
|
276
278
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
279
|
+
/**
|
|
280
|
+
* Atlas Copco Group badge icon (square)
|
|
281
|
+
*/
|
|
282
|
+
var AtlasCopcoIcon = function (_a) {
|
|
283
|
+
var className = _a.className,
|
|
284
|
+
_b = _a.size,
|
|
285
|
+
size = _b === void 0 ? 14 : _b;
|
|
286
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
287
|
+
width: size,
|
|
288
|
+
height: size,
|
|
289
|
+
viewBox: "0 0 14 14",
|
|
290
|
+
fill: "none",
|
|
291
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
292
|
+
className: className,
|
|
293
|
+
"aria-hidden": "true"
|
|
294
|
+
}, /*#__PURE__*/React.createElement("rect", {
|
|
295
|
+
x: "0.5",
|
|
296
|
+
y: "0.5",
|
|
297
|
+
width: "13",
|
|
298
|
+
height: "13",
|
|
299
|
+
rx: "1.5",
|
|
300
|
+
fill: "#D9D9D9",
|
|
301
|
+
stroke: "#D9D9D9"
|
|
302
|
+
}));
|
|
303
|
+
};
|
|
280
304
|
|
|
281
305
|
// =============================================================================
|
|
282
306
|
// SOCIAL ICON COMPONENT
|
|
283
307
|
// =============================================================================
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}) => {
|
|
288
|
-
const iconMap = {
|
|
308
|
+
var SocialIconComponent = function (_a) {
|
|
309
|
+
var platform = _a.platform;
|
|
310
|
+
var iconMap = {
|
|
289
311
|
facebook: faFacebookF,
|
|
290
312
|
x: faXTwitter,
|
|
291
313
|
linkedin: faLinkedinIn,
|
|
@@ -296,19 +318,14 @@ const SocialIconComponent = ({
|
|
|
296
318
|
icon: iconMap[platform]
|
|
297
319
|
});
|
|
298
320
|
};
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
variant = 'default'
|
|
308
|
-
}) => {
|
|
309
|
-
const baseClass = variant === 'bottom' ? styles$j.footer__bottomLink : styles$j.footer__link;
|
|
310
|
-
const linkClasses = classNames(baseClass, className);
|
|
311
|
-
const handleClick = e => {
|
|
321
|
+
var FooterLink = function (_a) {
|
|
322
|
+
var item = _a.item,
|
|
323
|
+
className = _a.className,
|
|
324
|
+
_b = _a.variant,
|
|
325
|
+
variant = _b === void 0 ? 'default' : _b;
|
|
326
|
+
var baseClass = variant === 'bottom' ? styles$k.footer__bottomLink : styles$k.footer__link;
|
|
327
|
+
var linkClasses = classNames(baseClass, className);
|
|
328
|
+
var handleClick = function (e) {
|
|
312
329
|
if (item.onClick) {
|
|
313
330
|
e.preventDefault();
|
|
314
331
|
item.onClick();
|
|
@@ -322,169 +339,151 @@ const FooterLink = ({
|
|
|
322
339
|
target: '_blank',
|
|
323
340
|
rel: 'noopener noreferrer'
|
|
324
341
|
}), /*#__PURE__*/React.createElement("span", {
|
|
325
|
-
className: styles$
|
|
342
|
+
className: styles$k.footer__linkText
|
|
326
343
|
}, item.label), item.external && /*#__PURE__*/React.createElement("span", {
|
|
327
|
-
className: styles$
|
|
344
|
+
className: styles$k.footer__linkIcon
|
|
328
345
|
}, /*#__PURE__*/React.createElement(ExternalLinkIcon, {
|
|
329
346
|
size: 15
|
|
330
347
|
})));
|
|
331
348
|
};
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
const FooterLinkGroup = ({
|
|
338
|
-
heading,
|
|
339
|
-
links,
|
|
340
|
-
className,
|
|
341
|
-
children
|
|
342
|
-
}) => {
|
|
349
|
+
var FooterLinkGroup = function (_a) {
|
|
350
|
+
var heading = _a.heading,
|
|
351
|
+
links = _a.links,
|
|
352
|
+
className = _a.className,
|
|
353
|
+
children = _a.children;
|
|
343
354
|
return /*#__PURE__*/React.createElement("div", {
|
|
344
|
-
className: classNames(styles$
|
|
355
|
+
className: classNames(styles$k.footer__linkGroup, className)
|
|
345
356
|
}, /*#__PURE__*/React.createElement("h3", {
|
|
346
|
-
className: styles$
|
|
357
|
+
className: styles$k.footer__linkHeading
|
|
347
358
|
}, heading), /*#__PURE__*/React.createElement("ul", {
|
|
348
|
-
className: styles$
|
|
349
|
-
}, links.map((link, index)
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
359
|
+
className: styles$k.footer__linkList
|
|
360
|
+
}, links.map(function (link, index) {
|
|
361
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
362
|
+
key: index
|
|
363
|
+
}, /*#__PURE__*/React.createElement(FooterLink, {
|
|
364
|
+
item: link
|
|
365
|
+
}));
|
|
366
|
+
})), children);
|
|
354
367
|
};
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
// =============================================================================
|
|
359
|
-
|
|
360
|
-
const FooterSocialIcons = ({
|
|
361
|
-
links,
|
|
362
|
-
className
|
|
363
|
-
}) => {
|
|
368
|
+
var FooterSocialIcons = function (_a) {
|
|
369
|
+
var links = _a.links,
|
|
370
|
+
className = _a.className;
|
|
364
371
|
return /*#__PURE__*/React.createElement("div", {
|
|
365
|
-
className: classNames(styles$
|
|
366
|
-
}, links.map((link, index)
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
372
|
+
className: classNames(styles$k.footer__socialIcons, className)
|
|
373
|
+
}, links.map(function (link, index) {
|
|
374
|
+
return /*#__PURE__*/React.createElement("a", {
|
|
375
|
+
key: index,
|
|
376
|
+
href: link.href,
|
|
377
|
+
className: styles$k.footer__socialIcon,
|
|
378
|
+
"aria-label": link.ariaLabel,
|
|
379
|
+
target: "_blank",
|
|
380
|
+
rel: "noopener noreferrer"
|
|
381
|
+
}, /*#__PURE__*/React.createElement(SocialIconComponent, {
|
|
382
|
+
platform: link.platform
|
|
383
|
+
}));
|
|
384
|
+
}));
|
|
376
385
|
};
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
const FooterSocialIcon = ({
|
|
383
|
-
platform,
|
|
384
|
-
className
|
|
385
|
-
}) => {
|
|
386
|
-
const iconClasses = classNames(styles$j.footer__socialIcon, className);
|
|
386
|
+
var FooterSocialIcon = function (_a) {
|
|
387
|
+
var platform = _a.platform,
|
|
388
|
+
className = _a.className;
|
|
389
|
+
var iconClasses = classNames(styles$k.footer__socialIcon, className);
|
|
387
390
|
return /*#__PURE__*/React.createElement("span", {
|
|
388
391
|
className: iconClasses
|
|
389
392
|
}, /*#__PURE__*/React.createElement(SocialIconComponent, {
|
|
390
393
|
platform: platform
|
|
391
394
|
}));
|
|
392
395
|
};
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
const FooterBottom = ({
|
|
399
|
-
links,
|
|
400
|
-
copyright,
|
|
401
|
-
countrySelector,
|
|
402
|
-
className
|
|
403
|
-
}) => {
|
|
396
|
+
var FooterBottom = function (_a) {
|
|
397
|
+
var links = _a.links,
|
|
398
|
+
copyright = _a.copyright,
|
|
399
|
+
countrySelector = _a.countrySelector,
|
|
400
|
+
className = _a.className;
|
|
404
401
|
return /*#__PURE__*/React.createElement("div", {
|
|
405
|
-
className: classNames(styles$
|
|
402
|
+
className: classNames(styles$k.footer__bottom, className)
|
|
406
403
|
}, /*#__PURE__*/React.createElement("div", {
|
|
407
|
-
className: styles$
|
|
404
|
+
className: styles$k.footer__bottomLeft
|
|
408
405
|
}, /*#__PURE__*/React.createElement("div", {
|
|
409
|
-
className: styles$
|
|
410
|
-
}, links.map((link, index)
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
406
|
+
className: styles$k.footer__bottomLinks
|
|
407
|
+
}, links.map(function (link, index) {
|
|
408
|
+
return /*#__PURE__*/React.createElement(FooterLink, {
|
|
409
|
+
key: index,
|
|
410
|
+
item: link,
|
|
411
|
+
variant: "bottom"
|
|
412
|
+
});
|
|
413
|
+
})), /*#__PURE__*/React.createElement("p", {
|
|
414
|
+
className: styles$k.footer__copyright
|
|
416
415
|
}, copyright)), countrySelector && /*#__PURE__*/React.createElement("a", {
|
|
417
416
|
href: countrySelector.href || '#',
|
|
418
|
-
className: styles$
|
|
417
|
+
className: styles$k.footer__countrySelector
|
|
419
418
|
}, countrySelector.showIcon !== false && /*#__PURE__*/React.createElement("span", {
|
|
420
|
-
className: styles$
|
|
419
|
+
className: styles$k.footer__countrySelectorIcon
|
|
421
420
|
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
422
421
|
icon: faGlobe
|
|
423
422
|
})), countrySelector.label));
|
|
424
423
|
};
|
|
425
|
-
|
|
426
424
|
// =============================================================================
|
|
427
425
|
// MAIN FOOTER COMPONENT
|
|
428
426
|
// =============================================================================
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
*
|
|
432
|
-
*
|
|
433
|
-
* -
|
|
434
|
-
* - mobile: Logo at bottom, stacked layout with CTA button
|
|
427
|
+
/**
|
|
428
|
+
* Footer component with brand identity, navigation links, social icons, and legal information.
|
|
429
|
+
* Supports two layout variants:
|
|
430
|
+
* - desktop: Logo at top, 3-column main content
|
|
431
|
+
* - mobile: Logo at bottom, stacked layout with CTA button
|
|
435
432
|
*/
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
433
|
+
var Footer = function (_a) {
|
|
434
|
+
var _b = _a.variant,
|
|
435
|
+
variant = _b === void 0 ? 'desktop' : _b,
|
|
436
|
+
logo = _a.logo,
|
|
437
|
+
motto = _a.motto,
|
|
438
|
+
atlasCopcoBadge = _a.atlasCopcoBadge,
|
|
439
|
+
quickLinks = _a.quickLinks,
|
|
440
|
+
_c = _a.quickLinksHeading,
|
|
441
|
+
quickLinksHeading = _c === void 0 ? 'Quick links' : _c,
|
|
442
|
+
contactLinks = _a.contactLinks,
|
|
443
|
+
_d = _a.contactHeading,
|
|
444
|
+
contactHeading = _d === void 0 ? 'Contact us' : _d,
|
|
445
|
+
socialLinks = _a.socialLinks,
|
|
446
|
+
contactFormButton = _a.contactFormButton,
|
|
447
|
+
bottomLinks = _a.bottomLinks,
|
|
448
|
+
copyright = _a.copyright,
|
|
449
|
+
countrySelector = _a.countrySelector,
|
|
450
|
+
className = _a.className;
|
|
451
|
+
var isMobile = variant === 'mobile';
|
|
452
|
+
var footerClasses = classNames(styles$k.footer, isMobile && styles$k['footer--mobile'], className);
|
|
453
|
+
var LogoWrapper = logo.href ? 'a' : 'div';
|
|
454
|
+
var logoProps = logo.href ? {
|
|
456
455
|
href: logo.href,
|
|
457
|
-
className: styles$
|
|
456
|
+
className: styles$k.footer__logo
|
|
458
457
|
} : {
|
|
459
|
-
className: styles$
|
|
458
|
+
className: styles$k.footer__logo
|
|
460
459
|
};
|
|
461
|
-
|
|
462
460
|
// Logo + Motto + Badge component (used in both layouts)
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
461
|
+
var LogoSection = function () {
|
|
462
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LogoWrapper, logoProps, /*#__PURE__*/React.createElement("img", {
|
|
463
|
+
src: logo.src,
|
|
464
|
+
alt: logo.alt
|
|
465
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
466
|
+
className: styles$k.footer__leftCol
|
|
467
|
+
}, /*#__PURE__*/React.createElement("h2", {
|
|
468
|
+
className: styles$k.footer__motto
|
|
469
|
+
}, motto), atlasCopcoBadge && /*#__PURE__*/React.createElement("div", {
|
|
470
|
+
className: styles$k.footer__badge
|
|
471
|
+
}, atlasCopcoBadge.showIcon !== false && /*#__PURE__*/React.createElement("span", {
|
|
472
|
+
className: styles$k.footer__badgeIcon
|
|
473
|
+
}, /*#__PURE__*/React.createElement(AtlasCopcoIcon, {
|
|
474
|
+
size: 14
|
|
475
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
476
|
+
className: styles$k.footer__badgeText
|
|
477
|
+
}, atlasCopcoBadge.text))));
|
|
478
|
+
};
|
|
480
479
|
// Mobile layout: Links at top, logo/motto at bottom
|
|
481
480
|
if (isMobile) {
|
|
482
481
|
return /*#__PURE__*/React.createElement("footer", {
|
|
483
482
|
className: footerClasses
|
|
484
483
|
}, /*#__PURE__*/React.createElement("div", {
|
|
485
|
-
className: styles$
|
|
484
|
+
className: styles$k.footer__container
|
|
486
485
|
}, /*#__PURE__*/React.createElement("div", {
|
|
487
|
-
className: styles$
|
|
486
|
+
className: styles$k.footer__links
|
|
488
487
|
}, /*#__PURE__*/React.createElement(FooterLinkGroup, {
|
|
489
488
|
heading: quickLinksHeading,
|
|
490
489
|
links: quickLinks
|
|
@@ -492,7 +491,7 @@ const Footer = ({
|
|
|
492
491
|
heading: contactHeading,
|
|
493
492
|
links: contactLinks
|
|
494
493
|
})), contactFormButton && /*#__PURE__*/React.createElement("div", {
|
|
495
|
-
className: styles$
|
|
494
|
+
className: styles$k.footer__cta
|
|
496
495
|
}, /*#__PURE__*/React.createElement("a", {
|
|
497
496
|
href: contactFormButton.href,
|
|
498
497
|
style: {
|
|
@@ -511,34 +510,33 @@ const Footer = ({
|
|
|
511
510
|
copyright: copyright,
|
|
512
511
|
countrySelector: countrySelector
|
|
513
512
|
}), /*#__PURE__*/React.createElement("div", {
|
|
514
|
-
className: styles$
|
|
513
|
+
className: styles$k.footer__brandSection
|
|
515
514
|
}, /*#__PURE__*/React.createElement(LogoSection, null))));
|
|
516
515
|
}
|
|
517
|
-
|
|
518
516
|
// Desktop layout: Logo at top, 3-column main content
|
|
519
517
|
return /*#__PURE__*/React.createElement("footer", {
|
|
520
518
|
className: footerClasses
|
|
521
519
|
}, /*#__PURE__*/React.createElement("div", {
|
|
522
|
-
className: styles$
|
|
520
|
+
className: styles$k.footer__container
|
|
523
521
|
}, /*#__PURE__*/React.createElement(LogoWrapper, logoProps, /*#__PURE__*/React.createElement("img", {
|
|
524
522
|
src: logo.src,
|
|
525
523
|
alt: logo.alt
|
|
526
524
|
})), /*#__PURE__*/React.createElement("div", {
|
|
527
|
-
className: styles$
|
|
525
|
+
className: styles$k.footer__main
|
|
528
526
|
}, /*#__PURE__*/React.createElement("div", {
|
|
529
|
-
className: styles$
|
|
527
|
+
className: styles$k.footer__leftCol
|
|
530
528
|
}, /*#__PURE__*/React.createElement("h2", {
|
|
531
|
-
className: styles$
|
|
529
|
+
className: styles$k.footer__motto
|
|
532
530
|
}, motto), atlasCopcoBadge && /*#__PURE__*/React.createElement("div", {
|
|
533
|
-
className: styles$
|
|
531
|
+
className: styles$k.footer__badge
|
|
534
532
|
}, atlasCopcoBadge.showIcon !== false && /*#__PURE__*/React.createElement("span", {
|
|
535
|
-
className: styles$
|
|
533
|
+
className: styles$k.footer__badgeIcon
|
|
536
534
|
}, /*#__PURE__*/React.createElement(AtlasCopcoIcon, {
|
|
537
535
|
size: 14
|
|
538
536
|
})), /*#__PURE__*/React.createElement("span", {
|
|
539
|
-
className: styles$
|
|
537
|
+
className: styles$k.footer__badgeText
|
|
540
538
|
}, atlasCopcoBadge.text))), /*#__PURE__*/React.createElement("div", {
|
|
541
|
-
className: styles$
|
|
539
|
+
className: styles$k.footer__links
|
|
542
540
|
}, /*#__PURE__*/React.createElement(FooterLinkGroup, {
|
|
543
541
|
heading: quickLinksHeading,
|
|
544
542
|
links: quickLinks
|
|
@@ -554,48 +552,46 @@ const Footer = ({
|
|
|
554
552
|
})));
|
|
555
553
|
};
|
|
556
554
|
|
|
557
|
-
var styles$
|
|
555
|
+
var styles$j = {"pagination":"Pagination-module__pagination___Kih79","dividerLine":"Pagination-module__dividerLine___85LAX","paginationList":"Pagination-module__paginationList___-lZpm","paginationItem":"Pagination-module__paginationItem___VsGFa","pageButton":"Pagination-module__pageButton___b6UNF","pageButtonActive":"Pagination-module__pageButtonActive___D9m18","navButton":"Pagination-module__navButton___ZCIai","navButtonDisabled":"Pagination-module__navButtonDisabled___IZK8H","navIcon":"Pagination-module__navIcon___-BVJ3","ellipsis":"Pagination-module__ellipsis___iAsGN","ellipsisText":"Pagination-module__ellipsisText___fd6u1"};
|
|
558
556
|
|
|
559
|
-
|
|
560
|
-
page,
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
const handleClick = () => {
|
|
557
|
+
var PaginationItem = function (_a) {
|
|
558
|
+
var page = _a.page,
|
|
559
|
+
isActive = _a.isActive,
|
|
560
|
+
onClick = _a.onClick,
|
|
561
|
+
className = _a.className;
|
|
562
|
+
var handleClick = function () {
|
|
566
563
|
if (!isActive) {
|
|
567
564
|
onClick(page);
|
|
568
565
|
}
|
|
569
566
|
};
|
|
570
|
-
|
|
567
|
+
var handleKeyDown = function (event) {
|
|
571
568
|
if (event.key === "Enter" || event.key === " ") {
|
|
572
569
|
event.preventDefault();
|
|
573
570
|
handleClick();
|
|
574
571
|
}
|
|
575
572
|
};
|
|
576
573
|
return /*#__PURE__*/React.createElement("li", {
|
|
577
|
-
className: styles$
|
|
574
|
+
className: styles$j.paginationItem
|
|
578
575
|
}, /*#__PURE__*/React.createElement("button", {
|
|
579
576
|
type: "button",
|
|
580
577
|
onClick: handleClick,
|
|
581
578
|
onKeyDown: handleKeyDown,
|
|
582
|
-
className:
|
|
579
|
+
className: "".concat(styles$j.pageButton, " ").concat(isActive ? styles$j.pageButtonActive : "", " ").concat(className || ""),
|
|
583
580
|
"aria-current": isActive ? "page" : undefined,
|
|
584
|
-
"aria-label":
|
|
581
|
+
"aria-label": "Page ".concat(page),
|
|
585
582
|
disabled: isActive,
|
|
586
583
|
tabIndex: isActive ? -1 : 0
|
|
587
584
|
}, page));
|
|
588
585
|
};
|
|
589
586
|
|
|
590
|
-
|
|
591
|
-
label,
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
const handleKeyDown = event => {
|
|
587
|
+
var PaginationButton = function (_a) {
|
|
588
|
+
var label = _a.label,
|
|
589
|
+
disabled = _a.disabled,
|
|
590
|
+
onClick = _a.onClick,
|
|
591
|
+
direction = _a.direction,
|
|
592
|
+
className = _a.className,
|
|
593
|
+
ariaLabel = _a.ariaLabel;
|
|
594
|
+
var handleKeyDown = function (event) {
|
|
599
595
|
if (event.key === "Enter" || event.key === " ") {
|
|
600
596
|
event.preventDefault();
|
|
601
597
|
if (!disabled) {
|
|
@@ -604,130 +600,130 @@ const PaginationButton = ({
|
|
|
604
600
|
}
|
|
605
601
|
};
|
|
606
602
|
return /*#__PURE__*/React.createElement("li", {
|
|
607
|
-
className: styles$
|
|
603
|
+
className: styles$j.paginationItem
|
|
608
604
|
}, /*#__PURE__*/React.createElement("button", {
|
|
609
605
|
type: "button",
|
|
610
606
|
onClick: onClick,
|
|
611
607
|
onKeyDown: handleKeyDown,
|
|
612
608
|
disabled: disabled,
|
|
613
|
-
className:
|
|
609
|
+
className: "".concat(styles$j.navButton, " ").concat(styles$j["navButton--".concat(direction)], " ").concat(disabled ? styles$j.navButtonDisabled : "", " ").concat(className || ""),
|
|
614
610
|
"aria-label": ariaLabel || label,
|
|
615
611
|
tabIndex: disabled ? -1 : 0
|
|
616
612
|
}, /*#__PURE__*/React.createElement("span", null, label), direction === "next" && /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
617
613
|
icon: faChevronRight$1,
|
|
618
|
-
className: styles$
|
|
614
|
+
className: styles$j.navIcon,
|
|
619
615
|
"aria-hidden": "true"
|
|
620
616
|
})));
|
|
621
617
|
};
|
|
622
618
|
|
|
623
|
-
|
|
624
|
-
className
|
|
625
|
-
}) => {
|
|
619
|
+
var PaginationEllipsis = function (_a) {
|
|
620
|
+
var className = _a.className;
|
|
626
621
|
return /*#__PURE__*/React.createElement("li", {
|
|
627
|
-
className:
|
|
622
|
+
className: "".concat(styles$j.paginationItem, " ").concat(styles$j.ellipsis),
|
|
628
623
|
"aria-hidden": "true"
|
|
629
624
|
}, /*#__PURE__*/React.createElement("span", {
|
|
630
|
-
className:
|
|
625
|
+
className: "".concat(styles$j.ellipsisText, " ").concat(className || "")
|
|
631
626
|
}, "..."));
|
|
632
627
|
};
|
|
633
628
|
|
|
634
|
-
/**
|
|
635
|
-
* Generate page numbers to display with ellipsis logic
|
|
629
|
+
/**
|
|
630
|
+
* Generate page numbers to display with ellipsis logic
|
|
636
631
|
*/
|
|
637
|
-
|
|
632
|
+
var generatePageNumbers = function (currentPage, totalPages, maxVisiblePages) {
|
|
638
633
|
if (totalPages <= maxVisiblePages) {
|
|
639
634
|
return Array.from({
|
|
640
635
|
length: totalPages
|
|
641
|
-
}, (_, i)
|
|
636
|
+
}, function (_, i) {
|
|
637
|
+
return i + 1;
|
|
638
|
+
});
|
|
642
639
|
}
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
640
|
+
var pages = [];
|
|
641
|
+
var halfVisible = Math.floor(maxVisiblePages / 2);
|
|
646
642
|
// Always show first page
|
|
647
643
|
pages.push(1);
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
644
|
+
var startPage = Math.max(2, currentPage - halfVisible);
|
|
645
|
+
var endPage = Math.min(totalPages - 1, currentPage + halfVisible);
|
|
651
646
|
// Adjust if we're near the start
|
|
652
647
|
if (currentPage <= halfVisible + 1) {
|
|
653
648
|
endPage = Math.min(maxVisiblePages - 1, totalPages - 1);
|
|
654
649
|
startPage = 2;
|
|
655
650
|
}
|
|
656
|
-
|
|
657
651
|
// Adjust if we're near the end
|
|
658
652
|
if (currentPage >= totalPages - halfVisible) {
|
|
659
653
|
startPage = Math.max(2, totalPages - maxVisiblePages + 2);
|
|
660
654
|
endPage = totalPages - 1;
|
|
661
655
|
}
|
|
662
|
-
|
|
663
656
|
// Add ellipsis after first page if needed
|
|
664
657
|
if (startPage > 2) {
|
|
665
658
|
pages.push("ellipsis-start");
|
|
666
659
|
}
|
|
667
|
-
|
|
668
660
|
// Add middle pages
|
|
669
|
-
for (
|
|
661
|
+
for (var i = startPage; i <= endPage; i++) {
|
|
670
662
|
pages.push(i);
|
|
671
663
|
}
|
|
672
|
-
|
|
673
664
|
// Add ellipsis before last page if needed
|
|
674
665
|
if (endPage < totalPages - 1) {
|
|
675
666
|
pages.push("ellipsis-end");
|
|
676
667
|
}
|
|
677
|
-
|
|
678
668
|
// Always show last page
|
|
679
669
|
if (totalPages > 1) {
|
|
680
670
|
pages.push(totalPages);
|
|
681
671
|
}
|
|
682
672
|
return pages;
|
|
683
673
|
};
|
|
684
|
-
|
|
685
|
-
currentPage,
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
674
|
+
var Pagination = function (_a) {
|
|
675
|
+
var currentPage = _a.currentPage,
|
|
676
|
+
totalPages = _a.totalPages,
|
|
677
|
+
onPageChange = _a.onPageChange,
|
|
678
|
+
_b = _a.maxVisiblePages,
|
|
679
|
+
maxVisiblePages = _b === void 0 ? 10 : _b,
|
|
680
|
+
_c = _a.showPrevious,
|
|
681
|
+
showPrevious = _c === void 0 ? true : _c,
|
|
682
|
+
_d = _a.showNext,
|
|
683
|
+
showNext = _d === void 0 ? true : _d,
|
|
684
|
+
_e = _a.previousLabel,
|
|
685
|
+
previousLabel = _e === void 0 ? "Previous" : _e,
|
|
686
|
+
_f = _a.nextLabel,
|
|
687
|
+
nextLabel = _f === void 0 ? "Next" : _f,
|
|
688
|
+
className = _a.className,
|
|
689
|
+
_g = _a.ariaLabel,
|
|
690
|
+
ariaLabel = _g === void 0 ? "Pagination" : _g;
|
|
691
|
+
var pageNumbers = useMemo(function () {
|
|
692
|
+
return generatePageNumbers(currentPage, totalPages, maxVisiblePages);
|
|
693
|
+
}, [currentPage, totalPages, maxVisiblePages]);
|
|
694
|
+
var handlePageChange = function (page) {
|
|
698
695
|
if (page >= 1 && page <= totalPages && page !== currentPage) {
|
|
699
696
|
onPageChange(page);
|
|
700
697
|
}
|
|
701
698
|
};
|
|
702
|
-
|
|
699
|
+
var handlePrevious = function () {
|
|
703
700
|
handlePageChange(currentPage - 1);
|
|
704
701
|
};
|
|
705
|
-
|
|
702
|
+
var handleNext = function () {
|
|
706
703
|
handlePageChange(currentPage + 1);
|
|
707
704
|
};
|
|
708
|
-
|
|
709
705
|
// Don't render if there's only one page or no pages
|
|
710
706
|
if (totalPages <= 1) {
|
|
711
707
|
return null;
|
|
712
708
|
}
|
|
713
709
|
return /*#__PURE__*/React.createElement("nav", {
|
|
714
|
-
className:
|
|
710
|
+
className: "".concat(styles$j.pagination, " ").concat(className || ""),
|
|
715
711
|
"aria-label": ariaLabel,
|
|
716
712
|
role: "navigation"
|
|
717
713
|
}, /*#__PURE__*/React.createElement("div", {
|
|
718
|
-
className: styles$
|
|
714
|
+
className: styles$j.dividerLine
|
|
719
715
|
}), /*#__PURE__*/React.createElement("ul", {
|
|
720
|
-
className: styles$
|
|
716
|
+
className: styles$j.paginationList
|
|
721
717
|
}, showPrevious && /*#__PURE__*/React.createElement(PaginationButton, {
|
|
722
718
|
label: previousLabel,
|
|
723
719
|
disabled: currentPage === 1,
|
|
724
720
|
onClick: handlePrevious,
|
|
725
721
|
direction: "previous",
|
|
726
722
|
ariaLabel: "Go to previous page"
|
|
727
|
-
}), pageNumbers.map((page, index)
|
|
723
|
+
}), pageNumbers.map(function (page, index) {
|
|
728
724
|
if (page === "ellipsis-start" || page === "ellipsis-end") {
|
|
729
725
|
return /*#__PURE__*/React.createElement(PaginationEllipsis, {
|
|
730
|
-
key:
|
|
726
|
+
key: "ellipsis-".concat(index)
|
|
731
727
|
});
|
|
732
728
|
}
|
|
733
729
|
return /*#__PURE__*/React.createElement(PaginationItem, {
|
|
@@ -745,83 +741,88 @@ const Pagination = ({
|
|
|
745
741
|
})));
|
|
746
742
|
};
|
|
747
743
|
|
|
748
|
-
var styles$
|
|
749
|
-
|
|
750
|
-
var styles$
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
src,
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
744
|
+
var styles$i = {"productCard":"ProductCardHorizontal-module__productCard___Nl4jK","productWrapper":"ProductCardHorizontal-module__productWrapper___gs8fn","withImage":"ProductCardHorizontal-module__withImage___pPFw2","withPlaceholder":"ProductCardHorizontal-module__withPlaceholder___x8IUh","productTitle":"ProductCardHorizontal-module__productTitle___xBuu7","productPrice":"ProductCardHorizontal-module__productPrice___lf32A","productImage":"ProductCardHorizontal-module__productImage___sQsUO","placeholderImage":"ProductCardHorizontal-module__placeholderImage___kT1sp","productId":"ProductCardHorizontal-module__productId___3oOQV","productTitleDescriptionWrapper":"ProductCardHorizontal-module__productTitleDescriptionWrapper___Obv-j","productPriceCtaWrapper":"ProductCardHorizontal-module__productPriceCtaWrapper___Npkfl","productArrowIcon":"ProductCardHorizontal-module__productArrowIcon___1-A76"};
|
|
745
|
+
|
|
746
|
+
var styles$h = {"imageContainer":"Image-module__imageContainer___iD5Kd","loading":"Image-module__loading___Sh1zO","image":"Image-module__image___1pa50","error":"Image-module__error___0LGZ2","skeleton":"Image-module__skeleton___0bGS6","shimmer":"Image-module__shimmer___aanrl","errorState":"Image-module__errorState___TjV-8","errorIcon":"Image-module__errorIcon___QCKvj","errorText":"Image-module__errorText___Q8pnb"};
|
|
747
|
+
|
|
748
|
+
var Image = function (_a) {
|
|
749
|
+
var src = _a.src,
|
|
750
|
+
alt = _a.alt,
|
|
751
|
+
width = _a.width,
|
|
752
|
+
height = _a.height,
|
|
753
|
+
_b = _a.loading,
|
|
754
|
+
loading = _b === void 0 ? "lazy" : _b,
|
|
755
|
+
_c = _a.decoding,
|
|
756
|
+
decoding = _c === void 0 ? "async" : _c,
|
|
757
|
+
_d = _a.objectFit,
|
|
758
|
+
objectFit = _d === void 0 ? "cover" : _d,
|
|
759
|
+
_e = _a.objectPosition,
|
|
760
|
+
objectPosition = _e === void 0 ? "center" : _e,
|
|
761
|
+
aspectRatio = _a.aspectRatio,
|
|
762
|
+
_f = _a.isDecorative,
|
|
763
|
+
isDecorative = _f === void 0 ? false : _f,
|
|
764
|
+
fallbackSrc = _a.fallbackSrc,
|
|
765
|
+
onLoad = _a.onLoad,
|
|
766
|
+
onError = _a.onError,
|
|
767
|
+
_g = _a.className,
|
|
768
|
+
className = _g === void 0 ? "" : _g,
|
|
769
|
+
srcSet = _a.srcSet,
|
|
770
|
+
sizes = _a.sizes;
|
|
771
|
+
var _h = useState(true),
|
|
772
|
+
isLoading = _h[0],
|
|
773
|
+
setIsLoading = _h[1];
|
|
774
|
+
var _j = useState(false),
|
|
775
|
+
hasError = _j[0],
|
|
776
|
+
setHasError = _j[1];
|
|
777
|
+
var _k = useState(src),
|
|
778
|
+
currentSrc = _k[0],
|
|
779
|
+
setCurrentSrc = _k[1];
|
|
780
|
+
var handleLoad = useCallback(function () {
|
|
774
781
|
setIsLoading(false);
|
|
775
782
|
setHasError(false);
|
|
776
|
-
onLoad
|
|
783
|
+
onLoad === null || onLoad === void 0 ? void 0 : onLoad();
|
|
777
784
|
}, [onLoad]);
|
|
778
|
-
|
|
785
|
+
var handleError = useCallback(function () {
|
|
779
786
|
setIsLoading(false);
|
|
780
787
|
setHasError(true);
|
|
781
|
-
|
|
782
788
|
// Try fallback if available and not already using it
|
|
783
789
|
if (fallbackSrc && currentSrc !== fallbackSrc) {
|
|
784
790
|
setCurrentSrc(fallbackSrc);
|
|
785
791
|
setHasError(false);
|
|
786
792
|
setIsLoading(true);
|
|
787
793
|
} else {
|
|
788
|
-
onError
|
|
794
|
+
onError === null || onError === void 0 ? void 0 : onError();
|
|
789
795
|
}
|
|
790
796
|
}, [fallbackSrc, currentSrc, onError]);
|
|
791
|
-
|
|
792
797
|
// Accessibility: decorative images should have empty alt and be hidden from screen readers
|
|
793
|
-
|
|
798
|
+
var accessibilityProps = isDecorative ? {
|
|
794
799
|
alt: "",
|
|
795
800
|
"aria-hidden": true,
|
|
796
801
|
role: "presentation"
|
|
797
802
|
} : {
|
|
798
|
-
alt
|
|
799
|
-
};
|
|
800
|
-
const containerStyle = {
|
|
801
|
-
...(aspectRatio && {
|
|
802
|
-
aspectRatio
|
|
803
|
-
}),
|
|
804
|
-
...(width && {
|
|
805
|
-
width: typeof width === "number" ? `${width}px` : width
|
|
806
|
-
}),
|
|
807
|
-
...(height && {
|
|
808
|
-
height: typeof height === "number" ? `${height}px` : height
|
|
809
|
-
})
|
|
803
|
+
alt: alt
|
|
810
804
|
};
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
805
|
+
var containerStyle = __assign(__assign(__assign({}, aspectRatio && {
|
|
806
|
+
aspectRatio: aspectRatio
|
|
807
|
+
}), width && {
|
|
808
|
+
width: typeof width === "number" ? "".concat(width, "px") : width
|
|
809
|
+
}), height && {
|
|
810
|
+
height: typeof height === "number" ? "".concat(height, "px") : height
|
|
811
|
+
});
|
|
812
|
+
var imageStyle = {
|
|
813
|
+
objectFit: objectFit,
|
|
814
|
+
objectPosition: objectPosition
|
|
814
815
|
};
|
|
815
816
|
return /*#__PURE__*/React.createElement("div", {
|
|
816
|
-
className:
|
|
817
|
+
className: "".concat(styles$h.imageContainer, " ").concat(className, " ").concat(isLoading ? styles$h.loading : "", " ").concat(hasError ? styles$h.error : ""),
|
|
817
818
|
style: containerStyle
|
|
818
819
|
}, isLoading && /*#__PURE__*/React.createElement("div", {
|
|
819
|
-
className: styles$
|
|
820
|
+
className: styles$h.skeleton,
|
|
820
821
|
"aria-hidden": "true"
|
|
821
822
|
}, /*#__PURE__*/React.createElement("div", {
|
|
822
|
-
className: styles$
|
|
823
|
+
className: styles$h.shimmer
|
|
823
824
|
})), hasError && !fallbackSrc ? /*#__PURE__*/React.createElement("div", {
|
|
824
|
-
className: styles$
|
|
825
|
+
className: styles$h.errorState,
|
|
825
826
|
role: "img",
|
|
826
827
|
"aria-label": alt || "Image failed to load"
|
|
827
828
|
}, /*#__PURE__*/React.createElement("svg", {
|
|
@@ -832,7 +833,7 @@ const Image = ({
|
|
|
832
833
|
strokeWidth: "1.5",
|
|
833
834
|
strokeLinecap: "round",
|
|
834
835
|
strokeLinejoin: "round",
|
|
835
|
-
className: styles$
|
|
836
|
+
className: styles$h.errorIcon,
|
|
836
837
|
"aria-hidden": "true"
|
|
837
838
|
}, /*#__PURE__*/React.createElement("rect", {
|
|
838
839
|
x: "3",
|
|
@@ -848,7 +849,7 @@ const Image = ({
|
|
|
848
849
|
}), /*#__PURE__*/React.createElement("polyline", {
|
|
849
850
|
points: "21 15 16 10 5 21"
|
|
850
851
|
})), /*#__PURE__*/React.createElement("span", {
|
|
851
|
-
className: styles$
|
|
852
|
+
className: styles$h.errorText
|
|
852
853
|
}, "Image unavailable")) : /*#__PURE__*/React.createElement("img", _extends({
|
|
853
854
|
src: currentSrc
|
|
854
855
|
}, accessibilityProps, {
|
|
@@ -858,7 +859,7 @@ const Image = ({
|
|
|
858
859
|
decoding: decoding,
|
|
859
860
|
onLoad: handleLoad,
|
|
860
861
|
onError: handleError,
|
|
861
|
-
className: styles$
|
|
862
|
+
className: styles$h.image,
|
|
862
863
|
style: imageStyle,
|
|
863
864
|
srcSet: srcSet,
|
|
864
865
|
sizes: sizes
|
|
@@ -876,144 +877,285 @@ const faArrowUpRight = {
|
|
|
876
877
|
icon: [384, 512, [], "e09f", "M328 96c13.3 0 24 10.7 24 24l0 240c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-182.1L73 409c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l231-231L88 144c-13.3 0-24-10.7-24-24s10.7-24 24-24l240 0z"]
|
|
877
878
|
};
|
|
878
879
|
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
880
|
+
var PLACEHOLDER_INDICATOR = "?placeholder-storybook";
|
|
881
|
+
var PLACEHOLDER_SVG = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"440\" height=\"133\" viewBox=\"218.446 219.139 440 133\" role=\"img\" aria-label=\"Leybold placeholder logo\"><g fill=\"#ffff\"><path d=\"M290.317,313.442h37.784v12.782h-53.654v-70.62h15.87V313.442z\"/><path d=\"M386.309,310.883c-3.912,12.593-15.135,16.722-24.761,16.722c-15.878,0-28.046-7.084-28.046-28.62c0-6.296,2.322-26.458,26.98-26.458c11.116,0,26.457,4.917,26.457,28.819v2.457h-38.626c0.428,3.935,1.274,12.785,13.232,12.785c4.125,0,8.356-1.965,9.521-5.704L386.309,310.883L386.309,310.883z M371.709,294.852c-0.85-8.456-6.666-11.017-11.434-11.017c-6.979,0-10.686,4.129-11.532,11.017H371.709z\"/><path d=\"M423.556,325.343c-6.986,19.374-8.892,21.932-21.799,21.932c-2.014,0-4.553-0.096-6.665-0.194v-11.02c0.629,0.104,1.582,0.197,2.854,0.197c5.397,0,8.36-0.688,9.737-7.864l-20.741-54.488h16.508l12.062,38.553h0.209l11.539-38.553h15.658L423.556,325.343z\"/><path d=\"M463.54,280.689h0.213c2.328-3.344,6.775-8.164,16.297-8.164c12.385,0,23.389,8.854,23.389,26.949c0,14.359-6.98,28.129-23.703,28.129c-6.141,0-12.701-2.067-16.299-7.968h-0.211v6.589h-14.498v-70.62h14.812V280.689z M475.604,284.427c-10.158,0-12.701,8.455-12.701,16.815c0,7.773,3.707,15.049,13.129,15.049c9.521,0,12.168-9.641,12.168-15.83C488.198,292.192,485.02,284.427,475.604,284.427z\"/><path d=\"M538.094,327.604c-15.141,0-28.787-8.652-28.787-27.542c0-18.881,13.646-27.536,28.787-27.536c15.129,0,28.785,8.655,28.785,27.536C566.88,318.95,553.223,327.604,538.094,327.604z M538.094,284.129c-11.434,0-13.547,9.244-13.547,15.934c0,6.691,2.113,15.939,13.547,15.939c11.426,0,13.547-9.248,13.547-15.939C551.641,293.373,549.52,284.129,538.094,284.129z\"/><path d=\"M588.811,326.225h-14.814v-70.62h14.814V326.225z\"/><path d=\"M651.969,326.225h-14.5v-6.589h-0.213c-3.598,5.898-10.156,7.968-16.295,7.968c-16.727,0-23.703-13.77-23.703-28.129c0-18.097,11.004-26.949,23.381-26.949c9.523,0,13.975,4.82,16.295,8.164h0.221v-25.085h14.814V326.225z M624.663,316.291c9.418,0,13.121-7.273,13.121-15.05c0-8.359-2.537-16.814-12.703-16.814c-9.416,0-12.592,7.767-12.592,16.034C612.49,306.651,615.135,316.291,624.663,316.291z\"/></g><g fill=\"#ffff\"><path d=\"M268.323,226.771h-41.551v39.685C230.996,246.516,247.442,230.811,268.323,226.771z\"/><path d=\"M226.771,286.726v39.688h41.551C247.442,322.371,230.996,306.67,226.771,286.726z\"/><path d=\"M331.122,266.455V226.77h-41.552C310.449,230.811,326.892,246.516,331.122,266.455z\"/></g></svg>";
|
|
882
|
+
var PLACEHOLDER_IMAGE_DATA_URI = "data:image/svg+xml,".concat(encodeURIComponent(PLACEHOLDER_SVG));
|
|
883
|
+
var isPlaceholderImg = function (url) {
|
|
884
|
+
return !!url && url.includes(PLACEHOLDER_INDICATOR);
|
|
885
|
+
};
|
|
886
|
+
var ProductCardHorizontal = function (_a) {
|
|
887
|
+
_a.id;
|
|
888
|
+
var imageUrl = _a.imageUrl,
|
|
889
|
+
_b = _a.showProductImage,
|
|
890
|
+
showProductImage = _b === void 0 ? true : _b,
|
|
891
|
+
url = _a.url,
|
|
892
|
+
title = _a.title;
|
|
893
|
+
_a.description;
|
|
894
|
+
var price = _a.price,
|
|
895
|
+
productId = _a.productId,
|
|
896
|
+
button = _a.button,
|
|
897
|
+
utm = _a.utm,
|
|
898
|
+
_c = _a.className,
|
|
899
|
+
className = _c === void 0 ? "" : _c,
|
|
900
|
+
style = _a.style,
|
|
901
|
+
code = _a.code,
|
|
902
|
+
showProductPrice = _a.showProductPrice;
|
|
891
903
|
if (!title) {
|
|
892
904
|
return null;
|
|
893
905
|
}
|
|
894
|
-
|
|
906
|
+
console.log("Rendering ProductCardHorizontal with props:", {
|
|
907
|
+
showProductPrice: showProductPrice,
|
|
908
|
+
price: price
|
|
909
|
+
});
|
|
910
|
+
var hasPlaceholderImage = showProductImage && (!imageUrl || isPlaceholderImg(imageUrl));
|
|
911
|
+
var productImage = hasPlaceholderImage ? PLACEHOLDER_IMAGE_DATA_URI : imageUrl;
|
|
912
|
+
var href = !utm || url && url.indexOf("utm") > -1 ? url : url + "?utm_source=".concat(utm.utmSource, "&utm_medium=").concat(utm.utmMedium, "&utm_campaign=").concat(utm.utmCampaign);
|
|
895
913
|
return /*#__PURE__*/React.createElement("a", {
|
|
896
914
|
href: href,
|
|
897
|
-
className:
|
|
898
|
-
"aria-label":
|
|
915
|
+
className: "".concat(styles$i.productCard, " ").concat(className),
|
|
916
|
+
"aria-label": "View product: ".concat(title)
|
|
899
917
|
}, /*#__PURE__*/React.createElement("div", {
|
|
900
|
-
className:
|
|
901
|
-
|
|
902
|
-
|
|
918
|
+
className: "".concat(styles$i.productWrapper, " ").concat(showProductImage ? hasPlaceholderImage ? styles$i.withPlaceholder : styles$i.withImage : ""),
|
|
919
|
+
style: style
|
|
920
|
+
}, showProductImage && /*#__PURE__*/React.createElement("div", {
|
|
921
|
+
className: styles$i.productImage
|
|
903
922
|
}, /*#__PURE__*/React.createElement(Image, {
|
|
904
|
-
src:
|
|
905
|
-
alt: title
|
|
923
|
+
src: productImage || PLACEHOLDER_IMAGE_DATA_URI,
|
|
924
|
+
alt: title,
|
|
925
|
+
className: hasPlaceholderImage ? styles$i.placeholderImage : "",
|
|
926
|
+
objectFit: hasPlaceholderImage ? "contain" : "cover",
|
|
927
|
+
fallbackSrc: PLACEHOLDER_IMAGE_DATA_URI
|
|
906
928
|
})), /*#__PURE__*/React.createElement("div", {
|
|
907
|
-
className: styles$
|
|
929
|
+
className: styles$i.productTitleDescriptionWrapper
|
|
908
930
|
}, /*#__PURE__*/React.createElement("h3", {
|
|
909
|
-
className: styles$
|
|
910
|
-
}, title), productId
|
|
911
|
-
className: styles$
|
|
912
|
-
}, productId)), /*#__PURE__*/React.createElement("div", {
|
|
913
|
-
className: styles$
|
|
931
|
+
className: styles$i.productTitle
|
|
932
|
+
}, title), productId || code ? /*#__PURE__*/React.createElement("p", {
|
|
933
|
+
className: styles$i.productId
|
|
934
|
+
}, productId || code) : null), /*#__PURE__*/React.createElement("div", {
|
|
935
|
+
className: styles$i.productPriceCtaWrapper
|
|
914
936
|
}, /*#__PURE__*/React.createElement("p", {
|
|
915
|
-
className: styles$
|
|
916
|
-
}, price || " "), button ? /*#__PURE__*/React.createElement(Button, {
|
|
917
|
-
className: styles$
|
|
937
|
+
className: styles$i.productPrice
|
|
938
|
+
}, showProductPrice ? price || "" : ""), button ? /*#__PURE__*/React.createElement(Button, {
|
|
939
|
+
className: styles$i.productButton,
|
|
918
940
|
onClick: button.onClick,
|
|
919
941
|
size: "extra-small"
|
|
920
942
|
}, button.label) : /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
921
943
|
icon: faArrowUpRight,
|
|
922
|
-
className: styles$
|
|
944
|
+
className: styles$i.productArrowIcon,
|
|
923
945
|
"aria-hidden": "true"
|
|
924
946
|
}))));
|
|
925
947
|
};
|
|
926
|
-
|
|
927
948
|
// Alias for backward compatibility
|
|
928
|
-
|
|
949
|
+
var ProductCardHorizontalParts = ProductCardHorizontal;
|
|
929
950
|
|
|
930
|
-
var styles$
|
|
951
|
+
var styles$g = {"productDetails":"ProductCardDetails-module__productDetails___-sx2l","spareCard":"ProductCardDetails-module__spareCard___vC1Ju"};
|
|
931
952
|
|
|
932
953
|
// Adapter to map design system props to ProductCardHorizontalParts props
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
spare
|
|
936
|
-
...rest
|
|
937
|
-
} = props;
|
|
954
|
+
var SpareCardAdapter = function (props) {
|
|
955
|
+
var spare = props.spare,
|
|
956
|
+
rest = __rest(props, ["spare"]);
|
|
938
957
|
return /*#__PURE__*/React.createElement(ProductCardHorizontalParts, {
|
|
939
|
-
className: styles$
|
|
940
|
-
url: spare
|
|
941
|
-
title: spare
|
|
942
|
-
description: spare
|
|
943
|
-
price: spare
|
|
944
|
-
imageUrl
|
|
958
|
+
className: styles$g.spareCard,
|
|
959
|
+
url: (spare === null || spare === void 0 ? void 0 : spare.url) || (spare === null || spare === void 0 ? void 0 : spare.link) || "#",
|
|
960
|
+
title: (spare === null || spare === void 0 ? void 0 : spare.name) || (spare === null || spare === void 0 ? void 0 : spare.title) || "",
|
|
961
|
+
description: (spare === null || spare === void 0 ? void 0 : spare.description) || "",
|
|
962
|
+
price: (spare === null || spare === void 0 ? void 0 : spare.priceValue) || (spare === null || spare === void 0 ? void 0 : spare.price) || (props === null || props === void 0 ? void 0 : props.productPrice) || ""
|
|
963
|
+
// imageUrl={spare?.["img-product"] || spare?.image || ""}
|
|
964
|
+
,
|
|
945
965
|
utm: props.utm,
|
|
966
|
+
showProductPrice: props.showProductPrice,
|
|
967
|
+
showProductImage: false,
|
|
946
968
|
button: {
|
|
947
969
|
label: rest.cta || "View Product",
|
|
948
|
-
onClick: ()
|
|
970
|
+
onClick: function () {
|
|
971
|
+
return window.open((spare === null || spare === void 0 ? void 0 : spare.url) || (spare === null || spare === void 0 ? void 0 : spare.link) || "#", "_blank");
|
|
972
|
+
}
|
|
949
973
|
}
|
|
950
974
|
});
|
|
951
975
|
};
|
|
952
|
-
|
|
953
976
|
// Re-export the design system component with Leybold styling
|
|
954
|
-
|
|
955
|
-
id,
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
977
|
+
var ProductCardDetails = function (_a) {
|
|
978
|
+
var id = _a.id,
|
|
979
|
+
imageUrl = _a.imageUrl,
|
|
980
|
+
title = _a.title,
|
|
981
|
+
description = _a.description,
|
|
982
|
+
price = _a.price,
|
|
983
|
+
code = _a.code,
|
|
984
|
+
facets = _a.facets,
|
|
985
|
+
hit = _a.hit,
|
|
986
|
+
utm = _a.utm,
|
|
987
|
+
_b = _a.className,
|
|
988
|
+
className = _b === void 0 ? "" : _b,
|
|
989
|
+
ProductCardComponent = _a.ProductCardComponent,
|
|
990
|
+
hidespares = _a.hidespares,
|
|
991
|
+
showProductPrice = _a.showProductPrice,
|
|
992
|
+
_c = _a.showProductImage,
|
|
993
|
+
showProductImage = _c === void 0 ? true : _c;
|
|
968
994
|
// Build the hit object expected by ProductDetailsCard
|
|
969
|
-
|
|
970
|
-
id,
|
|
971
|
-
title,
|
|
972
|
-
description,
|
|
973
|
-
price,
|
|
974
|
-
code,
|
|
995
|
+
var hitData = hit || {
|
|
996
|
+
id: id,
|
|
997
|
+
title: title,
|
|
998
|
+
description: description,
|
|
999
|
+
price: price,
|
|
1000
|
+
code: code,
|
|
975
1001
|
image: imageUrl
|
|
976
1002
|
};
|
|
977
1003
|
return /*#__PURE__*/React.createElement("div", {
|
|
978
|
-
className: styles$
|
|
1004
|
+
className: styles$g.productDetails
|
|
979
1005
|
}, /*#__PURE__*/React.createElement(ProductDetailsCard, {
|
|
980
|
-
className:
|
|
1006
|
+
className: "".concat(className),
|
|
981
1007
|
title: title,
|
|
982
|
-
imageUrl: imageUrl,
|
|
1008
|
+
imageUrl: showProductImage ? imageUrl : "",
|
|
983
1009
|
imageAlt: title,
|
|
984
1010
|
hit: hitData,
|
|
985
1011
|
utm: utm,
|
|
986
1012
|
facets: facets,
|
|
987
1013
|
usePlainClasses: true,
|
|
988
1014
|
ProductCardComponent: ProductCardComponent || SpareCardAdapter,
|
|
989
|
-
hidespares: hidespares
|
|
1015
|
+
hidespares: hidespares,
|
|
1016
|
+
showProductPrice: showProductPrice,
|
|
1017
|
+
showProductImage: showProductImage
|
|
990
1018
|
}));
|
|
991
1019
|
};
|
|
992
1020
|
|
|
1021
|
+
var ContentCardBase = function (_a) {
|
|
1022
|
+
var title = _a.title,
|
|
1023
|
+
variant = _a.variant,
|
|
1024
|
+
url = _a.url,
|
|
1025
|
+
imageUrl = _a.imageUrl,
|
|
1026
|
+
category = _a.category,
|
|
1027
|
+
meta = _a.meta,
|
|
1028
|
+
excerpt = _a.excerpt,
|
|
1029
|
+
_b = _a.className,
|
|
1030
|
+
className = _b === void 0 ? "" : _b,
|
|
1031
|
+
style = _a.style,
|
|
1032
|
+
ariaLabel = _a.ariaLabel,
|
|
1033
|
+
contentMetaClassName = _a.contentMetaClassName,
|
|
1034
|
+
contentCategoryClassName = _a.contentCategoryClassName,
|
|
1035
|
+
contentMetaTextClassName = _a.contentMetaTextClassName,
|
|
1036
|
+
contentTitleClassName = _a.contentTitleClassName,
|
|
1037
|
+
contentExcerptClassName = _a.contentExcerptClassName;
|
|
1038
|
+
console.log("variant in ContentCardBase:", variant);
|
|
1039
|
+
var fallbackImage = "/assets/list-card.png";
|
|
1040
|
+
var isCareerView = variant === "career-view";
|
|
1041
|
+
var defaultAriaLabel = isCareerView ? "View career opportunity: ".concat(title) : "View content: ".concat(title);
|
|
1042
|
+
return /*#__PURE__*/React.createElement("a", {
|
|
1043
|
+
href: url,
|
|
1044
|
+
className: className,
|
|
1045
|
+
style: style,
|
|
1046
|
+
"aria-label": ariaLabel || defaultAriaLabel
|
|
1047
|
+
}, imageUrl && /*#__PURE__*/React.createElement("div", {
|
|
1048
|
+
className: "content-card-image-wrapper"
|
|
1049
|
+
}, /*#__PURE__*/React.createElement(Image, {
|
|
1050
|
+
src: imageUrl,
|
|
1051
|
+
alt: title,
|
|
1052
|
+
className: "content-card-image",
|
|
1053
|
+
aspectRatio: "16 / 9",
|
|
1054
|
+
loading: "lazy",
|
|
1055
|
+
decoding: "async",
|
|
1056
|
+
fallbackSrc: fallbackImage
|
|
1057
|
+
})), isCareerView ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h3", {
|
|
1058
|
+
className: contentTitleClassName
|
|
1059
|
+
}, title), category && /*#__PURE__*/React.createElement("span", {
|
|
1060
|
+
className: contentCategoryClassName
|
|
1061
|
+
}, category), meta && /*#__PURE__*/React.createElement("span", {
|
|
1062
|
+
className: contentMetaTextClassName
|
|
1063
|
+
}, meta), /*#__PURE__*/React.createElement(Button, {
|
|
1064
|
+
"aria-label": ariaLabel || defaultAriaLabel,
|
|
1065
|
+
variant: "link-text-alt",
|
|
1066
|
+
className: "career-button"
|
|
1067
|
+
}, "See more")) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
1068
|
+
className: contentMetaClassName
|
|
1069
|
+
}, category && /*#__PURE__*/React.createElement("span", {
|
|
1070
|
+
className: contentCategoryClassName
|
|
1071
|
+
}, category), meta && /*#__PURE__*/React.createElement("span", {
|
|
1072
|
+
className: contentMetaTextClassName
|
|
1073
|
+
}, meta)), /*#__PURE__*/React.createElement("h3", {
|
|
1074
|
+
className: contentTitleClassName
|
|
1075
|
+
}, title), excerpt && /*#__PURE__*/React.createElement("p", {
|
|
1076
|
+
className: contentExcerptClassName
|
|
1077
|
+
}, excerpt), /*#__PURE__*/React.createElement(Button, {
|
|
1078
|
+
"aria-label": ariaLabel || defaultAriaLabel
|
|
1079
|
+
}, "Read More")));
|
|
1080
|
+
};
|
|
1081
|
+
|
|
1082
|
+
var styles$f = {"contentCard":"ContentCardVertical-module__contentCard___EoYej","contentCard--instant-view":"ContentCardVertical-module__contentCard--instant-view___dsIUf","contentCard--results-view":"ContentCardVertical-module__contentCard--results-view___6mSHQ","contentMeta":"ContentCardVertical-module__contentMeta___l2GtO","contentCategory":"ContentCardVertical-module__contentCategory___78vrj","contentMetaText":"ContentCardVertical-module__contentMetaText___Rl-ln","contentTitle":"ContentCardVertical-module__contentTitle___rEiHm","contentExcerpt":"ContentCardVertical-module__contentExcerpt___5Gb2G"};
|
|
1083
|
+
|
|
1084
|
+
var ContentCardVertical = function (_a) {
|
|
1085
|
+
var id = _a.id,
|
|
1086
|
+
title = _a.title,
|
|
1087
|
+
url = _a.url,
|
|
1088
|
+
imageUrl = _a.imageUrl,
|
|
1089
|
+
category = _a.category,
|
|
1090
|
+
meta = _a.meta,
|
|
1091
|
+
excerpt = _a.excerpt,
|
|
1092
|
+
_b = _a.className,
|
|
1093
|
+
className = _b === void 0 ? "" : _b,
|
|
1094
|
+
variant = _a.variant;
|
|
1095
|
+
var cardClasses = classNames(styles$f.contentCard, styles$f["contentCard--".concat(variant)], className);
|
|
1096
|
+
console.log("Rendering ContentCardVertical with variant:", variant);
|
|
1097
|
+
return /*#__PURE__*/React.createElement(ContentCardBase, {
|
|
1098
|
+
id: id,
|
|
1099
|
+
variant: variant,
|
|
1100
|
+
title: title,
|
|
1101
|
+
url: url,
|
|
1102
|
+
imageUrl: imageUrl,
|
|
1103
|
+
category: category,
|
|
1104
|
+
meta: meta,
|
|
1105
|
+
excerpt: excerpt,
|
|
1106
|
+
className: cardClasses,
|
|
1107
|
+
contentMetaClassName: styles$f.contentMeta,
|
|
1108
|
+
contentCategoryClassName: styles$f.contentCategory,
|
|
1109
|
+
contentMetaTextClassName: styles$f.contentMetaText,
|
|
1110
|
+
contentTitleClassName: styles$f.contentTitle,
|
|
1111
|
+
contentExcerptClassName: styles$f.contentExcerpt
|
|
1112
|
+
});
|
|
1113
|
+
};
|
|
1114
|
+
|
|
993
1115
|
// Adapter component that maps props from AlgoliaDynamicSearchRaw to ProductCardHorizontal
|
|
994
1116
|
// AlgoliaDynamicSearchRaw passes: title, cardLink, productPrice, cta, hit (original data)
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1117
|
+
var cardAdapter = function (props) {
|
|
1118
|
+
var hit = props.hit,
|
|
1119
|
+
title = props.title,
|
|
1120
|
+
cardLink = props.cardLink,
|
|
1121
|
+
productPrice = props.productPrice;
|
|
1122
|
+
props.cta;
|
|
1123
|
+
var showProductPrice = props.showProductPrice,
|
|
1124
|
+
className = props.className,
|
|
1125
|
+
queryType = props.queryType;
|
|
1126
|
+
return /*#__PURE__*/React.createElement(ContentCardVertical, {
|
|
1127
|
+
id: (hit === null || hit === void 0 ? void 0 : hit.id) || "",
|
|
1128
|
+
variant: queryType && queryType === "careers" ? "career-view" : "content-view",
|
|
1129
|
+
title: title || (hit === null || hit === void 0 ? void 0 : hit.title) || "",
|
|
1130
|
+
url: cardLink || (hit === null || hit === void 0 ? void 0 : hit.link) || "#",
|
|
1131
|
+
imageUrl: (hit === null || hit === void 0 ? void 0 : hit.image) || "",
|
|
1132
|
+
category: (hit === null || hit === void 0 ? void 0 : hit.category) || "",
|
|
1133
|
+
meta: showProductPrice ? productPrice || (hit === null || hit === void 0 ? void 0 : hit.price) || "" : "",
|
|
1134
|
+
excerpt: (hit === null || hit === void 0 ? void 0 : hit.description) || "",
|
|
1135
|
+
className: className
|
|
1136
|
+
});
|
|
1137
|
+
};
|
|
1138
|
+
var ProductCardAdapter = function (props) {
|
|
1139
|
+
var hit = props.hit,
|
|
1140
|
+
title = props.title,
|
|
1141
|
+
cardLink = props.cardLink,
|
|
1142
|
+
productPrice = props.productPrice,
|
|
1143
|
+
cta = props.cta,
|
|
1144
|
+
showProductPrice = props.showProductPrice,
|
|
1145
|
+
showProductImage = props.showProductImage,
|
|
1146
|
+
className = props.className,
|
|
1147
|
+
code = props.code,
|
|
1148
|
+
utm = props.utm;
|
|
1008
1149
|
// Get values from direct props or fallback to hit object
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1150
|
+
var url = cardLink || (hit === null || hit === void 0 ? void 0 : hit.link) || "#";
|
|
1151
|
+
var imageUrl = (hit === null || hit === void 0 ? void 0 : hit.image) || "";
|
|
1152
|
+
var price = showProductPrice ? productPrice || (hit === null || hit === void 0 ? void 0 : hit.price) || "" : "";
|
|
1153
|
+
var productTitle = title || (hit === null || hit === void 0 ? void 0 : hit.title) || "";
|
|
1154
|
+
var productCode = code || (hit === null || hit === void 0 ? void 0 : hit.code) || "";
|
|
1155
|
+
var buttonLabel = cta || "View Product";
|
|
1015
1156
|
return /*#__PURE__*/React.createElement(ProductCardHorizontalParts, {
|
|
1016
1157
|
imageUrl: imageUrl,
|
|
1158
|
+
showProductImage: showProductImage,
|
|
1017
1159
|
url: url,
|
|
1018
1160
|
utm: utm,
|
|
1019
1161
|
title: productTitle,
|
|
@@ -1021,69 +1163,99 @@ const ProductCardAdapter = props => {
|
|
|
1021
1163
|
price: price,
|
|
1022
1164
|
button: {
|
|
1023
1165
|
label: buttonLabel,
|
|
1024
|
-
onClick: ()
|
|
1166
|
+
onClick: function () {
|
|
1167
|
+
return window.open(url, "_blank");
|
|
1168
|
+
}
|
|
1025
1169
|
},
|
|
1026
|
-
className: className
|
|
1170
|
+
className: className,
|
|
1171
|
+
style: __assign({}, showProductImage ? {
|
|
1172
|
+
minHeight: "130px"
|
|
1173
|
+
} : {}),
|
|
1174
|
+
code: productCode,
|
|
1175
|
+
showProductPrice: showProductPrice
|
|
1027
1176
|
});
|
|
1028
1177
|
};
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
className,
|
|
1038
|
-
code,
|
|
1039
|
-
utm,
|
|
1040
|
-
facets,
|
|
1041
|
-
related_products,
|
|
1042
|
-
hidespares
|
|
1043
|
-
} = props;
|
|
1178
|
+
var ProductCardDetailsAdapter = function (props) {
|
|
1179
|
+
var hit = props.hit,
|
|
1180
|
+
title = props.title;
|
|
1181
|
+
props.cardLink;
|
|
1182
|
+
var productPrice = props.productPrice;
|
|
1183
|
+
props.cta;
|
|
1184
|
+
var showProductPrice = props.showProductPrice,
|
|
1185
|
+
showProductImage = props.showProductImage,
|
|
1186
|
+
className = props.className,
|
|
1187
|
+
code = props.code,
|
|
1188
|
+
utm = props.utm,
|
|
1189
|
+
facets = props.facets,
|
|
1190
|
+
related_products = props.related_products,
|
|
1191
|
+
hidespares = props.hidespares;
|
|
1044
1192
|
if (!title) {
|
|
1045
1193
|
return null;
|
|
1046
1194
|
}
|
|
1047
1195
|
return /*#__PURE__*/React.createElement(ProductCardDetails, {
|
|
1048
|
-
imageUrl: hit
|
|
1196
|
+
imageUrl: (hit === null || hit === void 0 ? void 0 : hit.image) || "",
|
|
1049
1197
|
title: title,
|
|
1050
|
-
description: hit
|
|
1051
|
-
price: hit
|
|
1052
|
-
code: hit
|
|
1198
|
+
description: (hit === null || hit === void 0 ? void 0 : hit.description) || "",
|
|
1199
|
+
price: (hit === null || hit === void 0 ? void 0 : hit.price) || "" || productPrice,
|
|
1200
|
+
code: (hit === null || hit === void 0 ? void 0 : hit.code) || "" || code,
|
|
1053
1201
|
hit: hit,
|
|
1054
1202
|
utm: utm,
|
|
1055
1203
|
className: className,
|
|
1056
1204
|
facets: facets,
|
|
1057
|
-
relatedProducts: hit
|
|
1058
|
-
hidespares: hidespares
|
|
1205
|
+
relatedProducts: (hit === null || hit === void 0 ? void 0 : hit.related_products) || related_products,
|
|
1206
|
+
hidespares: hidespares,
|
|
1207
|
+
showProductPrice: showProductPrice,
|
|
1208
|
+
showProductImage: showProductImage
|
|
1059
1209
|
});
|
|
1060
1210
|
};
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1211
|
+
var ButtonAdapter = function (props) {
|
|
1212
|
+
var label = props.label,
|
|
1213
|
+
onClick = props.onClick,
|
|
1214
|
+
className = props.className;
|
|
1215
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
1216
|
+
className: className,
|
|
1217
|
+
onClick: onClick
|
|
1218
|
+
}, label);
|
|
1219
|
+
};
|
|
1220
|
+
var AlgoliaDynamicSearchLeybold = function (props) {
|
|
1221
|
+
var parentComponentProps = {
|
|
1222
|
+
queryType: props === null || props === void 0 ? void 0 : props.queryType,
|
|
1223
|
+
showProductPrice: props === null || props === void 0 ? void 0 : props.showProductPrice,
|
|
1224
|
+
showProductImage: props === null || props === void 0 ? void 0 : props.showProductImage,
|
|
1225
|
+
hitCta: props === null || props === void 0 ? void 0 : props.hitCta,
|
|
1226
|
+
hidespares: props === null || props === void 0 ? void 0 : props.hidespares
|
|
1227
|
+
};
|
|
1228
|
+
var innerComponents = {
|
|
1229
|
+
Card: function (innerProps) {
|
|
1230
|
+
return cardAdapter(__assign(__assign({}, parentComponentProps), innerProps));
|
|
1231
|
+
},
|
|
1232
|
+
ProductCard: function (innerProps) {
|
|
1233
|
+
return ProductCardAdapter(__assign(__assign({}, parentComponentProps), innerProps));
|
|
1234
|
+
},
|
|
1235
|
+
ProductDetailsCard: function (innerProps) {
|
|
1236
|
+
return ProductCardDetailsAdapter(__assign(__assign({}, parentComponentProps), innerProps));
|
|
1237
|
+
},
|
|
1238
|
+
Button: ButtonAdapter
|
|
1065
1239
|
};
|
|
1066
1240
|
return /*#__PURE__*/React.createElement(AlgoliaDynamicSearchRaw, _extends({}, props, {
|
|
1067
1241
|
innerComponents: innerComponents
|
|
1068
1242
|
}));
|
|
1069
1243
|
};
|
|
1070
1244
|
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
}) => {
|
|
1245
|
+
var QrFormButtonAdapter = function (_a) {
|
|
1246
|
+
var label = _a.label,
|
|
1247
|
+
onClick = _a.onClick,
|
|
1248
|
+
_b = _a.buttonStyle,
|
|
1249
|
+
buttonStyle = _b === void 0 ? "primary" : _b,
|
|
1250
|
+
href = _a.href,
|
|
1251
|
+
target = _a.target,
|
|
1252
|
+
_c = _a.type,
|
|
1253
|
+
type = _c === void 0 ? "button" : _c,
|
|
1254
|
+
element = _a.element,
|
|
1255
|
+
pageTarget = _a["data-page_target"],
|
|
1256
|
+
className = _a.className;
|
|
1084
1257
|
// Map buttonStyle to our variant
|
|
1085
|
-
|
|
1086
|
-
|
|
1258
|
+
var variant = buttonStyle === "secondary" ? "secondary" : "primary";
|
|
1087
1259
|
// If it's an anchor element (has href or element='a'), render as link
|
|
1088
1260
|
if (element === "a" || href) {
|
|
1089
1261
|
return /*#__PURE__*/React.createElement("a", {
|
|
@@ -1102,18 +1274,19 @@ const QrFormButtonAdapter = ({
|
|
|
1102
1274
|
size: "small"
|
|
1103
1275
|
}, label));
|
|
1104
1276
|
}
|
|
1105
|
-
|
|
1106
1277
|
// Otherwise render as button
|
|
1107
1278
|
return /*#__PURE__*/React.createElement(Button, {
|
|
1108
1279
|
variant: variant,
|
|
1109
1280
|
type: type,
|
|
1110
|
-
onClick: onClick ?
|
|
1281
|
+
onClick: onClick ? function (e) {
|
|
1282
|
+
return onClick(e);
|
|
1283
|
+
} : undefined,
|
|
1111
1284
|
className: className,
|
|
1112
1285
|
"data-page_target": pageTarget,
|
|
1113
1286
|
size: "small"
|
|
1114
1287
|
}, label);
|
|
1115
1288
|
};
|
|
1116
|
-
|
|
1289
|
+
var QrFormLeybold = function (props) {
|
|
1117
1290
|
return /*#__PURE__*/React.createElement("div", {
|
|
1118
1291
|
className: "qr-journey-form-wrapper"
|
|
1119
1292
|
}, /*#__PURE__*/React.createElement(QrForm, _extends({}, props, {
|
|
@@ -1123,16 +1296,17 @@ const QrFormLeybold = props => {
|
|
|
1123
1296
|
|
|
1124
1297
|
var styles$e = {"overlay":"SearchModal-module__overlay___Vbvg9","modal":"SearchModal-module__modal___1k5gO","closeButton":"SearchModal-module__closeButton___AN0zt","closeButton__icon":"SearchModal-module__closeButton__icon___vISSw","closeButton__text":"SearchModal-module__closeButton__text___-4EH1","closeButtonDesktop":"SearchModal-module__closeButtonDesktop___Lxxb0","closeButtonMobile":"SearchModal-module__closeButtonMobile___WIIMS","stickyHeader":"SearchModal-module__stickyHeader___wp-gA","scrollableContent":"SearchModal-module__scrollableContent___lrZP3"};
|
|
1125
1298
|
|
|
1126
|
-
|
|
1127
|
-
onClick,
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1299
|
+
var ModalCloseButton = function (_a) {
|
|
1300
|
+
var onClick = _a.onClick,
|
|
1301
|
+
_b = _a.ariaLabel,
|
|
1302
|
+
ariaLabel = _b === void 0 ? 'Close search' : _b,
|
|
1303
|
+
_c = _a.className,
|
|
1304
|
+
className = _c === void 0 ? '' : _c;
|
|
1131
1305
|
return /*#__PURE__*/React.createElement("button", {
|
|
1132
1306
|
type: "button",
|
|
1133
1307
|
onClick: onClick,
|
|
1134
1308
|
"aria-label": ariaLabel,
|
|
1135
|
-
className:
|
|
1309
|
+
className: "".concat(styles$e.closeButton, " ").concat(className)
|
|
1136
1310
|
}, /*#__PURE__*/React.createElement("span", {
|
|
1137
1311
|
className: styles$e.closeButton__icon
|
|
1138
1312
|
}, /*#__PURE__*/React.createElement("svg", {
|
|
@@ -1159,79 +1333,80 @@ const ModalCloseButton = ({
|
|
|
1159
1333
|
}, "CLOSE X"));
|
|
1160
1334
|
};
|
|
1161
1335
|
|
|
1162
|
-
|
|
1163
|
-
isOpen,
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1336
|
+
var SearchModal = function (_a) {
|
|
1337
|
+
var isOpen = _a.isOpen,
|
|
1338
|
+
onClose = _a.onClose,
|
|
1339
|
+
_b = _a.title,
|
|
1340
|
+
title = _b === void 0 ? 'Search' : _b,
|
|
1341
|
+
children = _a.children,
|
|
1342
|
+
_c = _a.className,
|
|
1343
|
+
className = _c === void 0 ? '' : _c,
|
|
1344
|
+
stickyHeaderContent = _a.stickyHeaderContent;
|
|
1345
|
+
var modalRef = useRef(null);
|
|
1346
|
+
var previouslyFocusedElement = useRef(null);
|
|
1347
|
+
useEffect(function () {
|
|
1173
1348
|
if (isOpen) {
|
|
1174
1349
|
// Store the previously focused element
|
|
1175
1350
|
previouslyFocusedElement.current = document.activeElement;
|
|
1176
|
-
|
|
1177
1351
|
// Focus the modal
|
|
1178
1352
|
if (modalRef.current) {
|
|
1179
1353
|
modalRef.current.focus();
|
|
1180
1354
|
}
|
|
1181
|
-
|
|
1182
1355
|
// Prevent body scroll
|
|
1183
1356
|
document.body.style.overflow = 'hidden';
|
|
1184
1357
|
} else {
|
|
1185
1358
|
// Restore body scroll
|
|
1186
1359
|
document.body.style.overflow = '';
|
|
1187
|
-
|
|
1188
1360
|
// Return focus to previously focused element
|
|
1189
1361
|
if (previouslyFocusedElement.current) {
|
|
1190
1362
|
previouslyFocusedElement.current.focus();
|
|
1191
1363
|
}
|
|
1192
1364
|
}
|
|
1193
|
-
return ()
|
|
1365
|
+
return function () {
|
|
1194
1366
|
document.body.style.overflow = '';
|
|
1195
1367
|
};
|
|
1196
1368
|
}, [isOpen]);
|
|
1197
|
-
useEffect(()
|
|
1198
|
-
|
|
1369
|
+
useEffect(function () {
|
|
1370
|
+
var handleEscape = function (event) {
|
|
1199
1371
|
if (event.key === 'Escape' && isOpen) {
|
|
1200
1372
|
onClose();
|
|
1201
1373
|
}
|
|
1202
1374
|
};
|
|
1203
1375
|
document.addEventListener('keydown', handleEscape);
|
|
1204
|
-
return ()
|
|
1376
|
+
return function () {
|
|
1377
|
+
return document.removeEventListener('keydown', handleEscape);
|
|
1378
|
+
};
|
|
1205
1379
|
}, [isOpen, onClose]);
|
|
1206
|
-
|
|
1207
1380
|
// Focus trap implementation
|
|
1208
|
-
useEffect(()
|
|
1381
|
+
useEffect(function () {
|
|
1209
1382
|
if (!isOpen || !modalRef.current) return;
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1383
|
+
var modal = modalRef.current;
|
|
1384
|
+
var focusableElements = modal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
1385
|
+
var firstElement = focusableElements[0];
|
|
1386
|
+
var lastElement = focusableElements[focusableElements.length - 1];
|
|
1387
|
+
var handleTab = function (event) {
|
|
1215
1388
|
if (event.key !== 'Tab') return;
|
|
1216
1389
|
if (event.shiftKey) {
|
|
1217
1390
|
// Shift + Tab
|
|
1218
1391
|
if (document.activeElement === firstElement) {
|
|
1219
1392
|
event.preventDefault();
|
|
1220
|
-
lastElement
|
|
1393
|
+
lastElement === null || lastElement === void 0 ? void 0 : lastElement.focus();
|
|
1221
1394
|
}
|
|
1222
1395
|
} else {
|
|
1223
1396
|
// Tab
|
|
1224
1397
|
if (document.activeElement === lastElement) {
|
|
1225
1398
|
event.preventDefault();
|
|
1226
|
-
firstElement
|
|
1399
|
+
firstElement === null || firstElement === void 0 ? void 0 : firstElement.focus();
|
|
1227
1400
|
}
|
|
1228
1401
|
}
|
|
1229
1402
|
};
|
|
1230
1403
|
modal.addEventListener('keydown', handleTab);
|
|
1231
|
-
return ()
|
|
1404
|
+
return function () {
|
|
1405
|
+
return modal.removeEventListener('keydown', handleTab);
|
|
1406
|
+
};
|
|
1232
1407
|
}, [isOpen]);
|
|
1233
1408
|
if (!isOpen) return null;
|
|
1234
|
-
|
|
1409
|
+
var handleOverlayClick = function (event) {
|
|
1235
1410
|
if (event.target === event.currentTarget) {
|
|
1236
1411
|
onClose();
|
|
1237
1412
|
}
|
|
@@ -1246,7 +1421,7 @@ const SearchModal = ({
|
|
|
1246
1421
|
"aria-modal": "true",
|
|
1247
1422
|
"aria-label": title,
|
|
1248
1423
|
tabIndex: -1,
|
|
1249
|
-
className:
|
|
1424
|
+
className: "".concat(styles$e.modal, " ").concat(className)
|
|
1250
1425
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1251
1426
|
className: styles$e.stickyHeader
|
|
1252
1427
|
}, /*#__PURE__*/React.createElement(ModalCloseButton, {
|
|
@@ -1262,11 +1437,11 @@ const SearchModal = ({
|
|
|
1262
1437
|
|
|
1263
1438
|
var styles$d = {"searchBar":"SearchBar-module__searchBar___5ak1g","inputWrapper":"SearchBar-module__inputWrapper___-4wrM","searchIcon":"SearchBar-module__searchIcon___VAuDz","searchInput":"SearchBar-module__searchInput___1K4GN","clearButton":"SearchBar-module__clearButton___JQYg-","submitButton":"SearchBar-module__submitButton___DZWsQ","submitButton__text":"SearchBar-module__submitButton__text___WkUsL","submitButton__icon":"SearchBar-module__submitButton__icon___s-ltv"};
|
|
1264
1439
|
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1440
|
+
var SearchIcon = function (_a) {
|
|
1441
|
+
var _b = _a.className,
|
|
1442
|
+
className = _b === void 0 ? '' : _b;
|
|
1268
1443
|
return /*#__PURE__*/React.createElement("svg", {
|
|
1269
|
-
className:
|
|
1444
|
+
className: "".concat(styles$d.searchIcon, " ").concat(className),
|
|
1270
1445
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1271
1446
|
viewBox: "0 0 24 24",
|
|
1272
1447
|
fill: "none",
|
|
@@ -1284,15 +1459,17 @@ const SearchIcon = ({
|
|
|
1284
1459
|
}));
|
|
1285
1460
|
};
|
|
1286
1461
|
|
|
1287
|
-
|
|
1288
|
-
value,
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1462
|
+
var SearchInput = function (_a) {
|
|
1463
|
+
var value = _a.value,
|
|
1464
|
+
onChange = _a.onChange,
|
|
1465
|
+
onKeyDown = _a.onKeyDown,
|
|
1466
|
+
_b = _a.placeholder,
|
|
1467
|
+
placeholder = _b === void 0 ? 'Discover products, innovations, and resources...' : _b,
|
|
1468
|
+
_c = _a.autoFocus,
|
|
1469
|
+
autoFocus = _c === void 0 ? false : _c,
|
|
1470
|
+
_d = _a.className,
|
|
1471
|
+
className = _d === void 0 ? '' : _d;
|
|
1472
|
+
var handleChange = function (event) {
|
|
1296
1473
|
onChange(event.target.value);
|
|
1297
1474
|
};
|
|
1298
1475
|
return /*#__PURE__*/React.createElement("input", {
|
|
@@ -1303,24 +1480,27 @@ const SearchInput = ({
|
|
|
1303
1480
|
placeholder: placeholder,
|
|
1304
1481
|
autoFocus: autoFocus,
|
|
1305
1482
|
"aria-label": "Search",
|
|
1306
|
-
className:
|
|
1483
|
+
className: "".concat(styles$d.searchInput, " ").concat(className)
|
|
1307
1484
|
});
|
|
1308
1485
|
};
|
|
1309
1486
|
|
|
1310
|
-
|
|
1311
|
-
onClick,
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1487
|
+
var SearchSubmitButton = function (_a) {
|
|
1488
|
+
var onClick = _a.onClick,
|
|
1489
|
+
_b = _a.disabled,
|
|
1490
|
+
disabled = _b === void 0 ? false : _b,
|
|
1491
|
+
_c = _a.ariaLabel,
|
|
1492
|
+
ariaLabel = _c === void 0 ? 'Search' : _c,
|
|
1493
|
+
_d = _a.label,
|
|
1494
|
+
label = _d === void 0 ? 'Search' : _d;
|
|
1495
|
+
_a.variant;
|
|
1496
|
+
var _f = _a.className,
|
|
1497
|
+
className = _f === void 0 ? '' : _f;
|
|
1318
1498
|
return /*#__PURE__*/React.createElement("button", {
|
|
1319
1499
|
type: "submit",
|
|
1320
1500
|
onClick: onClick,
|
|
1321
1501
|
disabled: disabled,
|
|
1322
1502
|
"aria-label": ariaLabel,
|
|
1323
|
-
className:
|
|
1503
|
+
className: "".concat(styles$d.submitButton, " ").concat(className)
|
|
1324
1504
|
}, /*#__PURE__*/React.createElement("span", {
|
|
1325
1505
|
className: styles$d.submitButton__text
|
|
1326
1506
|
}, label), /*#__PURE__*/React.createElement("span", {
|
|
@@ -1328,32 +1508,34 @@ const SearchSubmitButton = ({
|
|
|
1328
1508
|
}, /*#__PURE__*/React.createElement(SearchIcon, null)));
|
|
1329
1509
|
};
|
|
1330
1510
|
|
|
1331
|
-
|
|
1332
|
-
value,
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1511
|
+
var SearchBar = function (_a) {
|
|
1512
|
+
var value = _a.value,
|
|
1513
|
+
onChange = _a.onChange,
|
|
1514
|
+
onSubmit = _a.onSubmit,
|
|
1515
|
+
placeholder = _a.placeholder,
|
|
1516
|
+
_b = _a.autoFocus,
|
|
1517
|
+
autoFocus = _b === void 0 ? false : _b,
|
|
1518
|
+
_c = _a.className,
|
|
1519
|
+
className = _c === void 0 ? '' : _c,
|
|
1520
|
+
_d = _a.variant,
|
|
1521
|
+
variant = _d === void 0 ? 'instant' : _d;
|
|
1522
|
+
var handleSubmit = function (event) {
|
|
1341
1523
|
event.preventDefault();
|
|
1342
1524
|
onSubmit();
|
|
1343
1525
|
};
|
|
1344
|
-
|
|
1526
|
+
var handleKeyDown = function (event) {
|
|
1345
1527
|
if (event.key === 'Enter') {
|
|
1346
1528
|
event.preventDefault();
|
|
1347
1529
|
onSubmit();
|
|
1348
1530
|
}
|
|
1349
1531
|
};
|
|
1350
|
-
|
|
1532
|
+
var handleClear = function () {
|
|
1351
1533
|
onChange('');
|
|
1352
1534
|
};
|
|
1353
|
-
|
|
1535
|
+
var showClearButton = value.length > 0;
|
|
1354
1536
|
return /*#__PURE__*/React.createElement("form", {
|
|
1355
1537
|
onSubmit: handleSubmit,
|
|
1356
|
-
className:
|
|
1538
|
+
className: "".concat(styles$d.searchBar, " ").concat(className)
|
|
1357
1539
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1358
1540
|
className: styles$d.inputWrapper
|
|
1359
1541
|
}, /*#__PURE__*/React.createElement(SearchIcon, null), /*#__PURE__*/React.createElement(SearchInput, {
|
|
@@ -1376,53 +1558,51 @@ const SearchBar = ({
|
|
|
1376
1558
|
|
|
1377
1559
|
var styles$c = {"contentCard":"ContentCardHorizontal-module__contentCard___l-Kim","contentCard--instant-view":"ContentCardHorizontal-module__contentCard--instant-view___4wK9-","contentExcerpt":"ContentCardHorizontal-module__contentExcerpt___tqg1v","contentCard--results-view":"ContentCardHorizontal-module__contentCard--results-view___oBP2u","contentMeta":"ContentCardHorizontal-module__contentMeta___rEW-X","contentCategory":"ContentCardHorizontal-module__contentCategory___NssVD","contentMetaText":"ContentCardHorizontal-module__contentMetaText___muYBN","contentTitle":"ContentCardHorizontal-module__contentTitle___54gEo"};
|
|
1378
1560
|
|
|
1379
|
-
|
|
1380
|
-
id,
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1561
|
+
var ContentCardHorizontal = function (_a) {
|
|
1562
|
+
var id = _a.id,
|
|
1563
|
+
title = _a.title,
|
|
1564
|
+
url = _a.url,
|
|
1565
|
+
category = _a.category,
|
|
1566
|
+
meta = _a.meta,
|
|
1567
|
+
excerpt = _a.excerpt,
|
|
1568
|
+
_b = _a.className,
|
|
1569
|
+
className = _b === void 0 ? "" : _b,
|
|
1570
|
+
_c = _a.variant,
|
|
1571
|
+
variant = _c === void 0 ? "instant-view" : _c;
|
|
1572
|
+
var cardClasses = classNames(styles$c.contentCard, styles$c["contentCard--".concat(variant)], className);
|
|
1573
|
+
return /*#__PURE__*/React.createElement(ContentCardBase, {
|
|
1574
|
+
id: id,
|
|
1575
|
+
title: title,
|
|
1576
|
+
url: url,
|
|
1577
|
+
category: category,
|
|
1578
|
+
meta: meta,
|
|
1579
|
+
excerpt: excerpt,
|
|
1392
1580
|
className: cardClasses,
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
}
|
|
1399
|
-
className: styles$c.contentMetaText
|
|
1400
|
-
}, meta)), /*#__PURE__*/React.createElement("h3", {
|
|
1401
|
-
className: styles$c.contentTitle
|
|
1402
|
-
}, title), excerpt && /*#__PURE__*/React.createElement("p", {
|
|
1403
|
-
className: styles$c.contentExcerpt
|
|
1404
|
-
}, excerpt));
|
|
1581
|
+
contentMetaClassName: styles$c.contentMeta,
|
|
1582
|
+
contentCategoryClassName: styles$c.contentCategory,
|
|
1583
|
+
contentMetaTextClassName: styles$c.contentMetaText,
|
|
1584
|
+
contentTitleClassName: styles$c.contentTitle,
|
|
1585
|
+
contentExcerptClassName: styles$c.contentExcerpt
|
|
1586
|
+
});
|
|
1405
1587
|
};
|
|
1406
1588
|
|
|
1407
1589
|
var styles$b = {"instantResultsLayout":"InstantResults-module__instantResultsLayout___oy-o4","columnsGrid":"InstantResults-module__columnsGrid___bHRUM","resultsColumn":"InstantResults-module__resultsColumn___ZBSlT","columnHeader":"InstantResults-module__columnHeader___VYYhi","showingText":"InstantResults-module__showingText___lECiA","seeAllButton":"InstantResults-module__seeAllButton___xEDAX","chevronIcon":"InstantResults-module__chevronIcon___bjb3q","resultsList":"InstantResults-module__resultsList___7s3PT","divider":"InstantResults-module__divider___Ky6zK","loadingState":"InstantResults-module__loadingState___l0fMq","errorState":"InstantResults-module__errorState___hTBbE","spinner":"InstantResults-module__spinner___85jF-"};
|
|
1408
1590
|
|
|
1409
|
-
|
|
1410
|
-
query
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
}) => {
|
|
1591
|
+
var FederatedInstantResultsLayout = function (_a) {
|
|
1592
|
+
_a.query;
|
|
1593
|
+
var products = _a.products,
|
|
1594
|
+
contents = _a.contents,
|
|
1595
|
+
isLoadingProducts = _a.isLoadingProducts,
|
|
1596
|
+
isLoadingContents = _a.isLoadingContents,
|
|
1597
|
+
productsError = _a.productsError,
|
|
1598
|
+
contentsError = _a.contentsError,
|
|
1599
|
+
onSeeAllProducts = _a.onSeeAllProducts,
|
|
1600
|
+
onSeeAllContents = _a.onSeeAllContents;
|
|
1601
|
+
_a.onSeeAllCombined;
|
|
1421
1602
|
products.length + contents.length;
|
|
1422
|
-
|
|
1423
1603
|
// Show first 3 results from each category
|
|
1424
|
-
|
|
1425
|
-
|
|
1604
|
+
var displayProducts = products.slice(0, 3);
|
|
1605
|
+
var displayContents = contents.slice(0, 3);
|
|
1426
1606
|
return /*#__PURE__*/React.createElement("div", {
|
|
1427
1607
|
className: styles$b.instantResultsLayout
|
|
1428
1608
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1460,11 +1640,13 @@ const FederatedInstantResultsLayout = ({
|
|
|
1460
1640
|
className: styles$b.errorState
|
|
1461
1641
|
}, /*#__PURE__*/React.createElement("p", null, productsError)) : displayProducts.length > 0 ? /*#__PURE__*/React.createElement("div", {
|
|
1462
1642
|
className: styles$b.resultsList
|
|
1463
|
-
}, displayProducts.map((product, index)
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1643
|
+
}, displayProducts.map(function (product, index) {
|
|
1644
|
+
return /*#__PURE__*/React.createElement(React.Fragment, {
|
|
1645
|
+
key: product.id
|
|
1646
|
+
}, /*#__PURE__*/React.createElement(ProductCardHorizontal, product), index < displayProducts.length - 1 && /*#__PURE__*/React.createElement("hr", {
|
|
1647
|
+
className: styles$b.divider
|
|
1648
|
+
}));
|
|
1649
|
+
})) : null), /*#__PURE__*/React.createElement("div", {
|
|
1468
1650
|
className: styles$b.resultsColumn
|
|
1469
1651
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1470
1652
|
className: styles$b.columnHeader
|
|
@@ -1497,39 +1679,42 @@ const FederatedInstantResultsLayout = ({
|
|
|
1497
1679
|
className: styles$b.errorState
|
|
1498
1680
|
}, /*#__PURE__*/React.createElement("p", null, contentsError)) : displayContents.length > 0 ? /*#__PURE__*/React.createElement("div", {
|
|
1499
1681
|
className: styles$b.resultsList
|
|
1500
|
-
}, displayContents.map((content, index)
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1682
|
+
}, displayContents.map(function (content, index) {
|
|
1683
|
+
return /*#__PURE__*/React.createElement(React.Fragment, {
|
|
1684
|
+
key: content.id
|
|
1685
|
+
}, /*#__PURE__*/React.createElement(ContentCardHorizontal, _extends({}, content, {
|
|
1686
|
+
variant: "instant-view"
|
|
1687
|
+
})), index < displayContents.length - 1 && /*#__PURE__*/React.createElement("hr", {
|
|
1688
|
+
className: styles$b.divider
|
|
1689
|
+
}));
|
|
1690
|
+
})) : null)));
|
|
1507
1691
|
};
|
|
1508
1692
|
|
|
1509
1693
|
var styles$a = {"resultsCount":"ResultsCount-module__resultsCount___cNM6f"};
|
|
1510
1694
|
|
|
1511
|
-
|
|
1512
|
-
count,
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1695
|
+
var ResultsCount = function (_a) {
|
|
1696
|
+
var count = _a.count,
|
|
1697
|
+
type = _a.type,
|
|
1698
|
+
_b = _a.className,
|
|
1699
|
+
className = _b === void 0 ? '' : _b;
|
|
1700
|
+
var label = count === 1 ? type.slice(0, -1) : type;
|
|
1517
1701
|
return /*#__PURE__*/React.createElement("span", {
|
|
1518
|
-
className:
|
|
1702
|
+
className: "".concat(styles$a.resultsCount, " ").concat(className)
|
|
1519
1703
|
}, count, " ", label);
|
|
1520
1704
|
};
|
|
1521
1705
|
|
|
1522
1706
|
var styles$9 = {"seeAllButton":"SeeAllLinkButton-module__seeAllButton___eAQqJ"};
|
|
1523
1707
|
|
|
1524
|
-
|
|
1525
|
-
onClick,
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1708
|
+
var SeeAllLinkButton = function (_a) {
|
|
1709
|
+
var onClick = _a.onClick,
|
|
1710
|
+
_b = _a.label,
|
|
1711
|
+
label = _b === void 0 ? 'See all results' : _b,
|
|
1712
|
+
_c = _a.className,
|
|
1713
|
+
className = _c === void 0 ? '' : _c;
|
|
1529
1714
|
return /*#__PURE__*/React.createElement("button", {
|
|
1530
1715
|
type: "button",
|
|
1531
1716
|
onClick: onClick,
|
|
1532
|
-
className:
|
|
1717
|
+
className: "".concat(styles$9.seeAllButton, " ").concat(className)
|
|
1533
1718
|
}, label, /*#__PURE__*/React.createElement("svg", {
|
|
1534
1719
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1535
1720
|
viewBox: "0 0 24 24",
|
|
@@ -1546,17 +1731,17 @@ const SeeAllLinkButton = ({
|
|
|
1546
1731
|
|
|
1547
1732
|
var styles$8 = {"resultsColumn":"ResultsColumn-module__resultsColumn___AexF5","columnHeader":"ResultsColumn-module__columnHeader___-aUWU","columnTitle":"ResultsColumn-module__columnTitle___Gddr-","resultsList":"ResultsColumn-module__resultsList___BkEie","columnFooter":"ResultsColumn-module__columnFooter___4zJUp","loadingState":"ResultsColumn-module__loadingState___wme5F","errorState":"ResultsColumn-module__errorState___NI4fW","emptyState":"ResultsColumn-module__emptyState___tvefj","spinner":"ResultsColumn-module__spinner___hhntn"};
|
|
1548
1733
|
|
|
1549
|
-
|
|
1550
|
-
title,
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1734
|
+
var ResultsColumn = function (_a) {
|
|
1735
|
+
var title = _a.title,
|
|
1736
|
+
count = _a.count,
|
|
1737
|
+
isLoading = _a.isLoading,
|
|
1738
|
+
error = _a.error,
|
|
1739
|
+
onSeeAll = _a.onSeeAll,
|
|
1740
|
+
children = _a.children,
|
|
1741
|
+
_b = _a.className,
|
|
1742
|
+
className = _b === void 0 ? '' : _b;
|
|
1558
1743
|
return /*#__PURE__*/React.createElement("div", {
|
|
1559
|
-
className:
|
|
1744
|
+
className: "".concat(styles$8.resultsColumn, " ").concat(className)
|
|
1560
1745
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1561
1746
|
className: styles$8.columnHeader
|
|
1562
1747
|
}, /*#__PURE__*/React.createElement("h3", {
|
|
@@ -1579,7 +1764,7 @@ const ResultsColumn = ({
|
|
|
1579
1764
|
className: styles$8.columnFooter
|
|
1580
1765
|
}, /*#__PURE__*/React.createElement(SeeAllLinkButton, {
|
|
1581
1766
|
onClick: onSeeAll,
|
|
1582
|
-
label:
|
|
1767
|
+
label: "See all ".concat(title.toLowerCase())
|
|
1583
1768
|
}))));
|
|
1584
1769
|
};
|
|
1585
1770
|
|
|
@@ -1601,23 +1786,23 @@ const faXmark = {
|
|
|
1601
1786
|
icon: [384, 512, [128473, 10005, 10006, 10060, 215, "close", "multiply", "remove", "times"], "f00d", "M324.5 411.1c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L214.6 256 347.1 123.5c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L192 233.4 59.6 100.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L169.4 256 36.9 388.5c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L192 278.6 324.5 411.1z"]
|
|
1602
1787
|
};
|
|
1603
1788
|
|
|
1604
|
-
/**
|
|
1605
|
-
* FilterSearch - Search input for filtering facet values
|
|
1789
|
+
/**
|
|
1790
|
+
* FilterSearch - Search input for filtering facet values
|
|
1606
1791
|
*/
|
|
1607
|
-
|
|
1608
|
-
value,
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1792
|
+
var FilterSearch = function (_a) {
|
|
1793
|
+
var value = _a.value,
|
|
1794
|
+
onChange = _a.onChange,
|
|
1795
|
+
_b = _a.placeholder,
|
|
1796
|
+
placeholder = _b === void 0 ? "Search" : _b,
|
|
1797
|
+
className = _a.className;
|
|
1798
|
+
var handleChange = function (e) {
|
|
1614
1799
|
onChange(e.target.value);
|
|
1615
1800
|
};
|
|
1616
|
-
|
|
1801
|
+
var handleClear = function () {
|
|
1617
1802
|
onChange("");
|
|
1618
1803
|
};
|
|
1619
1804
|
return /*#__PURE__*/React.createElement("div", {
|
|
1620
|
-
className:
|
|
1805
|
+
className: "".concat(styles$7.filterSearch, " ").concat(className || "")
|
|
1621
1806
|
}, !value && /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
1622
1807
|
icon: faMagnifyingGlass,
|
|
1623
1808
|
className: styles$7.searchIcon,
|
|
@@ -1639,42 +1824,43 @@ const FilterSearch = ({
|
|
|
1639
1824
|
})));
|
|
1640
1825
|
};
|
|
1641
1826
|
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1827
|
+
var CheckIcon = function () {
|
|
1828
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
1829
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1830
|
+
width: "9",
|
|
1831
|
+
height: "7",
|
|
1832
|
+
viewBox: "0 0 9 7",
|
|
1833
|
+
fill: "none"
|
|
1834
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
1835
|
+
d: "M8.73456 0.104504C9.02185 0.279451 9.08614 0.615889 8.8772 0.856441L3.7342 6.77774C3.62371 6.90558 3.45294 6.98465 3.2641 6.99811C3.07525 7.01156 2.89244 6.95269 2.75984 6.84166L0.188342 4.68846C-0.0627808 4.47819 -0.0627808 4.13671 0.188342 3.92643C0.439465 3.71616 0.847289 3.71616 1.09841 3.92643L3.13753 5.63385L7.83856 0.222257C8.04749 -0.0182957 8.44929 -0.0721258 8.73658 0.102822L8.73456 0.104504Z",
|
|
1836
|
+
fill: "#E2001A"
|
|
1837
|
+
}));
|
|
1838
|
+
};
|
|
1839
|
+
/**
|
|
1840
|
+
* FilterItem - Individual facet item with checkbox and count
|
|
1655
1841
|
*/
|
|
1656
|
-
|
|
1657
|
-
value,
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1842
|
+
var FilterItem = function (_a) {
|
|
1843
|
+
var value = _a.value,
|
|
1844
|
+
onToggle = _a.onToggle,
|
|
1845
|
+
className = _a.className,
|
|
1846
|
+
_b = _a.variant,
|
|
1847
|
+
variant = _b === void 0 ? 'desktop' : _b,
|
|
1848
|
+
_c = _a.showCheckbox,
|
|
1849
|
+
showCheckbox = _c === void 0 ? true : _c;
|
|
1850
|
+
var handleChange = function () {
|
|
1664
1851
|
onToggle(value.value);
|
|
1665
1852
|
};
|
|
1666
|
-
|
|
1853
|
+
var handleKeyDown = function (e) {
|
|
1667
1854
|
if (e.key === "Enter" || e.key === " ") {
|
|
1668
1855
|
e.preventDefault();
|
|
1669
1856
|
onToggle(value.value);
|
|
1670
1857
|
}
|
|
1671
1858
|
};
|
|
1672
|
-
|
|
1673
1859
|
// Mobile variant: Plain button (no checkbox)
|
|
1674
1860
|
if (variant === 'mobile') {
|
|
1675
1861
|
return /*#__PURE__*/React.createElement("button", {
|
|
1676
1862
|
type: "button",
|
|
1677
|
-
className:
|
|
1863
|
+
className: "".concat(styles$7.filterItemMobile, " ").concat(value.isRefined ? styles$7.filterItemMobileRefined : '', " ").concat(className || ""),
|
|
1678
1864
|
onClick: handleChange,
|
|
1679
1865
|
onKeyDown: handleKeyDown,
|
|
1680
1866
|
"aria-pressed": value.isRefined
|
|
@@ -1684,12 +1870,11 @@ const FilterItem = ({
|
|
|
1684
1870
|
className: styles$7.filterCount
|
|
1685
1871
|
}, "(", value.count, ")"));
|
|
1686
1872
|
}
|
|
1687
|
-
|
|
1688
1873
|
// Desktop without checkbox (Content tab): Plain button with red text when selected
|
|
1689
1874
|
if (!showCheckbox) {
|
|
1690
1875
|
return /*#__PURE__*/React.createElement("button", {
|
|
1691
1876
|
type: "button",
|
|
1692
|
-
className:
|
|
1877
|
+
className: "".concat(styles$7.filterItemDesktopNoCheckbox, " ").concat(value.isRefined ? styles$7.filterItemDesktopRefined : '', " ").concat(className || ""),
|
|
1693
1878
|
onClick: handleChange,
|
|
1694
1879
|
onKeyDown: handleKeyDown,
|
|
1695
1880
|
"aria-pressed": value.isRefined
|
|
@@ -1699,17 +1884,16 @@ const FilterItem = ({
|
|
|
1699
1884
|
className: styles$7.filterCount
|
|
1700
1885
|
}, "(", value.count, ")"));
|
|
1701
1886
|
}
|
|
1702
|
-
|
|
1703
1887
|
// Desktop with checkbox (Products tab): Multi-select checkboxes
|
|
1704
1888
|
return /*#__PURE__*/React.createElement("label", {
|
|
1705
|
-
className:
|
|
1889
|
+
className: "".concat(styles$7.filterItem, " ").concat(className || ""),
|
|
1706
1890
|
onKeyDown: handleKeyDown
|
|
1707
1891
|
}, /*#__PURE__*/React.createElement("input", {
|
|
1708
1892
|
type: "checkbox",
|
|
1709
1893
|
checked: value.isRefined,
|
|
1710
1894
|
onChange: handleChange,
|
|
1711
1895
|
className: styles$7.filterCheckboxInput,
|
|
1712
|
-
"aria-label":
|
|
1896
|
+
"aria-label": "".concat(value.value, " (").concat(value.count, " results)")
|
|
1713
1897
|
}), /*#__PURE__*/React.createElement("div", {
|
|
1714
1898
|
className: styles$7.filterCheckbox
|
|
1715
1899
|
}, value.isRefined && /*#__PURE__*/React.createElement(CheckIcon, null)), /*#__PURE__*/React.createElement("span", {
|
|
@@ -1719,57 +1903,61 @@ const FilterItem = ({
|
|
|
1719
1903
|
}, "(", value.count, ")"));
|
|
1720
1904
|
};
|
|
1721
1905
|
|
|
1722
|
-
/**
|
|
1723
|
-
* FilterAccordion - Collapsible facet section with optional search
|
|
1906
|
+
/**
|
|
1907
|
+
* FilterAccordion - Collapsible facet section with optional search
|
|
1724
1908
|
*/
|
|
1725
|
-
|
|
1726
|
-
facet,
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1909
|
+
var FilterAccordion = function (_a) {
|
|
1910
|
+
var facet = _a.facet,
|
|
1911
|
+
isExpanded = _a.isExpanded,
|
|
1912
|
+
onToggle = _a.onToggle,
|
|
1913
|
+
onValueToggle = _a.onValueToggle,
|
|
1914
|
+
className = _a.className,
|
|
1915
|
+
_b = _a.variant,
|
|
1916
|
+
variant = _b === void 0 ? 'desktop' : _b,
|
|
1917
|
+
_c = _a.showCheckbox,
|
|
1918
|
+
showCheckbox = _c === void 0 ? true : _c;
|
|
1919
|
+
var _d = useState(""),
|
|
1920
|
+
searchQuery = _d[0],
|
|
1921
|
+
setSearchQuery = _d[1];
|
|
1736
1922
|
// Filter facet values based on search query
|
|
1737
|
-
|
|
1923
|
+
var filteredValues = useMemo(function () {
|
|
1738
1924
|
if (!searchQuery.trim()) {
|
|
1739
1925
|
return facet.values;
|
|
1740
1926
|
}
|
|
1741
|
-
|
|
1742
|
-
return facet.values.filter(
|
|
1927
|
+
var query = searchQuery.toLowerCase();
|
|
1928
|
+
return facet.values.filter(function (value) {
|
|
1929
|
+
return value.value.toLowerCase().includes(query);
|
|
1930
|
+
});
|
|
1743
1931
|
}, [facet.values, searchQuery]);
|
|
1744
|
-
|
|
1932
|
+
var handleToggle = function () {
|
|
1745
1933
|
onToggle();
|
|
1746
1934
|
// Clear search when collapsing
|
|
1747
1935
|
if (isExpanded) {
|
|
1748
1936
|
setSearchQuery("");
|
|
1749
1937
|
}
|
|
1750
1938
|
};
|
|
1751
|
-
|
|
1939
|
+
var handleKeyDown = function (e) {
|
|
1752
1940
|
if (e.key === "Enter" || e.key === " ") {
|
|
1753
1941
|
e.preventDefault();
|
|
1754
1942
|
handleToggle();
|
|
1755
1943
|
}
|
|
1756
1944
|
};
|
|
1757
|
-
|
|
1945
|
+
var handleValueToggle = function (value) {
|
|
1758
1946
|
onValueToggle(facet.attribute, value);
|
|
1759
1947
|
};
|
|
1760
1948
|
return /*#__PURE__*/React.createElement("div", {
|
|
1761
|
-
className:
|
|
1949
|
+
className: "".concat(styles$7.filterAccordion, " ").concat(className || "")
|
|
1762
1950
|
}, /*#__PURE__*/React.createElement("button", {
|
|
1763
1951
|
type: "button",
|
|
1764
|
-
className:
|
|
1952
|
+
className: "".concat(styles$7.accordionHeader, " ").concat(isExpanded ? styles$7.accordionHeaderExpanded : ""),
|
|
1765
1953
|
onClick: handleToggle,
|
|
1766
1954
|
onKeyDown: handleKeyDown,
|
|
1767
1955
|
"aria-expanded": isExpanded,
|
|
1768
|
-
"aria-controls":
|
|
1956
|
+
"aria-controls": "accordion-".concat(facet.id)
|
|
1769
1957
|
}, /*#__PURE__*/React.createElement("span", {
|
|
1770
1958
|
className: styles$7.accordionTitle
|
|
1771
1959
|
}, facet.label), /*#__PURE__*/React.createElement("svg", {
|
|
1772
|
-
className:
|
|
1960
|
+
className: "".concat(styles$7.accordionIcon, " ").concat(isExpanded ? styles$7.accordionIconExpanded : ""),
|
|
1773
1961
|
width: "16",
|
|
1774
1962
|
height: "16",
|
|
1775
1963
|
viewBox: "0 0 16 16",
|
|
@@ -1783,7 +1971,7 @@ const FilterAccordion = ({
|
|
|
1783
1971
|
strokeLinecap: "round",
|
|
1784
1972
|
strokeLinejoin: "round"
|
|
1785
1973
|
}))), isExpanded && /*#__PURE__*/React.createElement("div", {
|
|
1786
|
-
id:
|
|
1974
|
+
id: "accordion-".concat(facet.id),
|
|
1787
1975
|
className: styles$7.accordionContent
|
|
1788
1976
|
}, variant === 'desktop' && facet.searchable && facet.values.length > 5 && /*#__PURE__*/React.createElement("div", {
|
|
1789
1977
|
className: styles$7.accordionSearch
|
|
@@ -1793,38 +1981,39 @@ const FilterAccordion = ({
|
|
|
1793
1981
|
placeholder: "Search"
|
|
1794
1982
|
})), /*#__PURE__*/React.createElement("div", {
|
|
1795
1983
|
className: styles$7.filterList
|
|
1796
|
-
}, filteredValues.length > 0 ? filteredValues.map(
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1984
|
+
}, filteredValues.length > 0 ? filteredValues.map(function (value) {
|
|
1985
|
+
return /*#__PURE__*/React.createElement(FilterItem, {
|
|
1986
|
+
key: value.value,
|
|
1987
|
+
value: value,
|
|
1988
|
+
onToggle: handleValueToggle,
|
|
1989
|
+
variant: variant,
|
|
1990
|
+
showCheckbox: showCheckbox
|
|
1991
|
+
});
|
|
1992
|
+
}) : /*#__PURE__*/React.createElement("div", {
|
|
1803
1993
|
className: styles$7.noResults
|
|
1804
1994
|
}, "No results found"))));
|
|
1805
1995
|
};
|
|
1806
1996
|
|
|
1807
|
-
/**
|
|
1808
|
-
* AppliedFilterTag - Individual removable filter tag/chip
|
|
1997
|
+
/**
|
|
1998
|
+
* AppliedFilterTag - Individual removable filter tag/chip
|
|
1809
1999
|
*/
|
|
1810
|
-
|
|
1811
|
-
attribute,
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
const handleRemove = () => {
|
|
2000
|
+
var AppliedFilterTag = function (_a) {
|
|
2001
|
+
var attribute = _a.attribute,
|
|
2002
|
+
value = _a.value,
|
|
2003
|
+
label = _a.label,
|
|
2004
|
+
onRemove = _a.onRemove,
|
|
2005
|
+
className = _a.className;
|
|
2006
|
+
var handleRemove = function () {
|
|
1818
2007
|
onRemove(attribute, value);
|
|
1819
2008
|
};
|
|
1820
|
-
|
|
2009
|
+
var handleKeyDown = function (e) {
|
|
1821
2010
|
if (e.key === "Enter" || e.key === " ") {
|
|
1822
2011
|
e.preventDefault();
|
|
1823
2012
|
handleRemove();
|
|
1824
2013
|
}
|
|
1825
2014
|
};
|
|
1826
2015
|
return /*#__PURE__*/React.createElement("div", {
|
|
1827
|
-
className:
|
|
2016
|
+
className: "".concat(styles$7.appliedFilterTag, " ").concat(className || "")
|
|
1828
2017
|
}, /*#__PURE__*/React.createElement("span", {
|
|
1829
2018
|
className: styles$7.tagLabel
|
|
1830
2019
|
}, label || value), /*#__PURE__*/React.createElement("button", {
|
|
@@ -1832,7 +2021,7 @@ const AppliedFilterTag = ({
|
|
|
1832
2021
|
onClick: handleRemove,
|
|
1833
2022
|
onKeyDown: handleKeyDown,
|
|
1834
2023
|
className: styles$7.tagRemoveButton,
|
|
1835
|
-
"aria-label":
|
|
2024
|
+
"aria-label": "Remove ".concat(label || value, " filter")
|
|
1836
2025
|
}, /*#__PURE__*/React.createElement("svg", {
|
|
1837
2026
|
width: "10",
|
|
1838
2027
|
height: "10",
|
|
@@ -1849,20 +2038,19 @@ const AppliedFilterTag = ({
|
|
|
1849
2038
|
}))));
|
|
1850
2039
|
};
|
|
1851
2040
|
|
|
1852
|
-
/**
|
|
1853
|
-
* AppliedFilters - Shows all active filters as removable tags
|
|
2041
|
+
/**
|
|
2042
|
+
* AppliedFilters - Shows all active filters as removable tags
|
|
1854
2043
|
*/
|
|
1855
|
-
|
|
1856
|
-
facets,
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
}) => {
|
|
2044
|
+
var AppliedFilters = function (_a) {
|
|
2045
|
+
var facets = _a.facets,
|
|
2046
|
+
onRemove = _a.onRemove;
|
|
2047
|
+
_a.onClearAll;
|
|
2048
|
+
var className = _a.className;
|
|
1861
2049
|
// Extract all refined (selected) filters
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
facets.forEach(facet
|
|
1865
|
-
facet.values.forEach(value
|
|
2050
|
+
var appliedFilters = useMemo(function () {
|
|
2051
|
+
var filters = [];
|
|
2052
|
+
facets.forEach(function (facet) {
|
|
2053
|
+
facet.values.forEach(function (value) {
|
|
1866
2054
|
if (value.isRefined) {
|
|
1867
2055
|
filters.push({
|
|
1868
2056
|
attribute: facet.attribute,
|
|
@@ -1875,66 +2063,72 @@ const AppliedFilters = ({
|
|
|
1875
2063
|
});
|
|
1876
2064
|
return filters;
|
|
1877
2065
|
}, [facets]);
|
|
1878
|
-
|
|
1879
2066
|
// Don't render if no filters are applied
|
|
1880
2067
|
if (appliedFilters.length === 0) {
|
|
1881
2068
|
return null;
|
|
1882
2069
|
}
|
|
1883
2070
|
return /*#__PURE__*/React.createElement("div", {
|
|
1884
|
-
className:
|
|
2071
|
+
className: "".concat(styles$7.appliedFilters, " ").concat(className || "")
|
|
1885
2072
|
}, /*#__PURE__*/React.createElement("h4", {
|
|
1886
2073
|
className: styles$7.appliedFiltersTitle
|
|
1887
2074
|
}, "Applied filters"), /*#__PURE__*/React.createElement("div", {
|
|
1888
2075
|
className: styles$7.appliedFiltersList
|
|
1889
|
-
}, appliedFilters.map(
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
2076
|
+
}, appliedFilters.map(function (filter) {
|
|
2077
|
+
return /*#__PURE__*/React.createElement(AppliedFilterTag, {
|
|
2078
|
+
key: "".concat(filter.attribute, "-").concat(filter.value),
|
|
2079
|
+
attribute: filter.attribute,
|
|
2080
|
+
value: filter.value,
|
|
2081
|
+
label: filter.label,
|
|
2082
|
+
onRemove: onRemove
|
|
2083
|
+
});
|
|
2084
|
+
})));
|
|
1896
2085
|
};
|
|
1897
2086
|
|
|
1898
|
-
/**
|
|
1899
|
-
* FiltersPanel - Main container for all filters
|
|
1900
|
-
*
|
|
1901
|
-
* Fully controlled component - renders based on facets prop.
|
|
1902
|
-
* When facets change (e.g., after API refetch), component re-renders with new data.
|
|
1903
|
-
* Accordion expansion state persists across refetches, with new facets respecting defaultExpanded.
|
|
2087
|
+
/**
|
|
2088
|
+
* FiltersPanel - Main container for all filters
|
|
2089
|
+
*
|
|
2090
|
+
* Fully controlled component - renders based on facets prop.
|
|
2091
|
+
* When facets change (e.g., after API refetch), component re-renders with new data.
|
|
2092
|
+
* Accordion expansion state persists across refetches, with new facets respecting defaultExpanded.
|
|
1904
2093
|
*/
|
|
1905
|
-
|
|
1906
|
-
facets,
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
2094
|
+
var FiltersPanel = function (_a) {
|
|
2095
|
+
var facets = _a.facets,
|
|
2096
|
+
onFacetToggle = _a.onFacetToggle,
|
|
2097
|
+
_b = _a.isLoading,
|
|
2098
|
+
isLoading = _b === void 0 ? false : _b,
|
|
2099
|
+
className = _a.className,
|
|
2100
|
+
_c = _a.variant,
|
|
2101
|
+
variant = _c === void 0 ? 'desktop' : _c,
|
|
2102
|
+
_d = _a.showCheckbox,
|
|
2103
|
+
showCheckbox = _d === void 0 ? true : _d;
|
|
1913
2104
|
// Track which accordions are expanded (transient UI state)
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
2105
|
+
var _e = useState(function () {
|
|
2106
|
+
// Initialize with default expanded facets
|
|
2107
|
+
var expanded = new Set();
|
|
2108
|
+
facets.forEach(function (facet) {
|
|
2109
|
+
if (facet.defaultExpanded) {
|
|
2110
|
+
expanded.add(facet.id);
|
|
2111
|
+
}
|
|
2112
|
+
});
|
|
2113
|
+
return expanded;
|
|
2114
|
+
}),
|
|
2115
|
+
expandedAccordions = _e[0],
|
|
2116
|
+
setExpandedAccordions = _e[1];
|
|
1925
2117
|
// Sync expansion state when facets change (e.g., new facets appear after refetch)
|
|
1926
|
-
useEffect(()
|
|
1927
|
-
setExpandedAccordions(prev
|
|
1928
|
-
|
|
2118
|
+
useEffect(function () {
|
|
2119
|
+
setExpandedAccordions(function (prev) {
|
|
2120
|
+
var next = new Set(prev);
|
|
1929
2121
|
// Add new facets with defaultExpanded
|
|
1930
|
-
facets.forEach(facet
|
|
2122
|
+
facets.forEach(function (facet) {
|
|
1931
2123
|
if (facet.defaultExpanded && !next.has(facet.id)) {
|
|
1932
2124
|
next.add(facet.id);
|
|
1933
2125
|
}
|
|
1934
2126
|
});
|
|
1935
2127
|
// Remove facets that no longer exist
|
|
1936
|
-
|
|
1937
|
-
|
|
2128
|
+
var currentFacetIds = new Set(facets.map(function (f) {
|
|
2129
|
+
return f.id;
|
|
2130
|
+
}));
|
|
2131
|
+
next.forEach(function (id) {
|
|
1938
2132
|
if (!currentFacetIds.has(id)) {
|
|
1939
2133
|
next.delete(id);
|
|
1940
2134
|
}
|
|
@@ -1942,9 +2136,9 @@ const FiltersPanel = ({
|
|
|
1942
2136
|
return next;
|
|
1943
2137
|
});
|
|
1944
2138
|
}, [facets]);
|
|
1945
|
-
|
|
1946
|
-
setExpandedAccordions(prev
|
|
1947
|
-
|
|
2139
|
+
var handleAccordionToggle = useCallback(function (facetId) {
|
|
2140
|
+
setExpandedAccordions(function (prev) {
|
|
2141
|
+
var next = new Set(prev);
|
|
1948
2142
|
if (next.has(facetId)) {
|
|
1949
2143
|
next.delete(facetId);
|
|
1950
2144
|
} else {
|
|
@@ -1953,16 +2147,16 @@ const FiltersPanel = ({
|
|
|
1953
2147
|
return next;
|
|
1954
2148
|
});
|
|
1955
2149
|
}, []);
|
|
1956
|
-
|
|
2150
|
+
var handleValueToggle = useCallback(function (attribute, value) {
|
|
1957
2151
|
onFacetToggle(attribute, value);
|
|
1958
2152
|
}, [onFacetToggle]);
|
|
1959
|
-
|
|
2153
|
+
var handleRemoveFilter = useCallback(function (attribute, value) {
|
|
1960
2154
|
onFacetToggle(attribute, value);
|
|
1961
2155
|
}, [onFacetToggle]);
|
|
1962
|
-
|
|
2156
|
+
var handleClearAll = useCallback(function () {
|
|
1963
2157
|
// Remove all refined facets
|
|
1964
|
-
facets.forEach(facet
|
|
1965
|
-
facet.values.forEach(value
|
|
2158
|
+
facets.forEach(function (facet) {
|
|
2159
|
+
facet.values.forEach(function (value) {
|
|
1966
2160
|
if (value.isRefined) {
|
|
1967
2161
|
onFacetToggle(facet.attribute, value.value);
|
|
1968
2162
|
}
|
|
@@ -1971,7 +2165,7 @@ const FiltersPanel = ({
|
|
|
1971
2165
|
}, [facets, onFacetToggle]);
|
|
1972
2166
|
if (isLoading) {
|
|
1973
2167
|
return /*#__PURE__*/React.createElement("div", {
|
|
1974
|
-
className:
|
|
2168
|
+
className: "".concat(styles$7.filtersPanel, " ").concat(className || "")
|
|
1975
2169
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1976
2170
|
className: styles$7.loadingState
|
|
1977
2171
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1982,70 +2176,73 @@ const FiltersPanel = ({
|
|
|
1982
2176
|
return null;
|
|
1983
2177
|
}
|
|
1984
2178
|
return /*#__PURE__*/React.createElement("div", {
|
|
1985
|
-
className:
|
|
2179
|
+
className: "".concat(styles$7.filtersPanel, " ").concat(className || "")
|
|
1986
2180
|
}, showCheckbox && /*#__PURE__*/React.createElement(AppliedFilters, {
|
|
1987
2181
|
facets: facets,
|
|
1988
2182
|
onRemove: handleRemoveFilter,
|
|
1989
2183
|
onClearAll: handleClearAll
|
|
1990
2184
|
}), /*#__PURE__*/React.createElement("div", {
|
|
1991
2185
|
className: styles$7.filtersList
|
|
1992
|
-
}, facets.map(
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2186
|
+
}, facets.map(function (facet) {
|
|
2187
|
+
return /*#__PURE__*/React.createElement(FilterAccordion, {
|
|
2188
|
+
key: facet.id,
|
|
2189
|
+
facet: facet,
|
|
2190
|
+
isExpanded: expandedAccordions.has(facet.id),
|
|
2191
|
+
onToggle: function () {
|
|
2192
|
+
return handleAccordionToggle(facet.id);
|
|
2193
|
+
},
|
|
2194
|
+
onValueToggle: handleValueToggle,
|
|
2195
|
+
variant: variant,
|
|
2196
|
+
showCheckbox: showCheckbox
|
|
2197
|
+
});
|
|
2198
|
+
})));
|
|
2001
2199
|
};
|
|
2002
2200
|
|
|
2003
2201
|
var styles$6 = {"productCardVertical":"ProductCardVertical-module__productCardVertical___kXgmt","productCardVertical--hover":"ProductCardVertical-module__productCardVertical--hover___8Nsyp","productCardVertical__button":"ProductCardVertical-module__productCardVertical__button___oQPJG","productCardVertical--focus":"ProductCardVertical-module__productCardVertical--focus___8U57I","productCardVertical__imageWrapper":"ProductCardVertical-module__productCardVertical__imageWrapper___SgKoZ","productCardVertical__image":"ProductCardVertical-module__productCardVertical__image___kg-QU","productCardVertical__content":"ProductCardVertical-module__productCardVertical__content___sZdOs","productCardVertical__title":"ProductCardVertical-module__productCardVertical__title___PPKWb","productCardVertical__description":"ProductCardVertical-module__productCardVertical__description___Ai90p","productCardVertical__footer":"ProductCardVertical-module__productCardVertical__footer___rv6BH"};
|
|
2004
2202
|
|
|
2005
|
-
/**
|
|
2006
|
-
* ProductCardVertical - Vertical product card for grid layouts
|
|
2007
|
-
*
|
|
2008
|
-
* Used in full results view with 4-column grid (desktop) or 2-column grid (mobile).
|
|
2009
|
-
* Figma spec: Default (no shadow) → Hover (shadow + grey button) → Focus (border + shadow)
|
|
2010
|
-
*
|
|
2011
|
-
* @example
|
|
2012
|
-
* ```tsx
|
|
2013
|
-
* <ProductCardVertical
|
|
2014
|
-
* title="TURBOVAC i - High vacuum turbopump"
|
|
2015
|
-
* url="/products/turbovac-i"
|
|
2016
|
-
* imageUrl="/assets/search-product.png"
|
|
2017
|
-
* productId="21312VISH"
|
|
2018
|
-
* description="Premium high-performance turbomolecular pump"
|
|
2019
|
-
* buttonLabel="BUY ONLINE"
|
|
2020
|
-
* />
|
|
2021
|
-
* ```
|
|
2203
|
+
/**
|
|
2204
|
+
* ProductCardVertical - Vertical product card for grid layouts
|
|
2205
|
+
*
|
|
2206
|
+
* Used in full results view with 4-column grid (desktop) or 2-column grid (mobile).
|
|
2207
|
+
* Figma spec: Default (no shadow) → Hover (shadow + grey button) → Focus (border + shadow)
|
|
2208
|
+
*
|
|
2209
|
+
* @example
|
|
2210
|
+
* ```tsx
|
|
2211
|
+
* <ProductCardVertical
|
|
2212
|
+
* title="TURBOVAC i - High vacuum turbopump"
|
|
2213
|
+
* url="/products/turbovac-i"
|
|
2214
|
+
* imageUrl="/assets/search-product.png"
|
|
2215
|
+
* productId="21312VISH"
|
|
2216
|
+
* description="Premium high-performance turbomolecular pump"
|
|
2217
|
+
* buttonLabel="BUY ONLINE"
|
|
2218
|
+
* />
|
|
2219
|
+
* ```
|
|
2022
2220
|
*/
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2221
|
+
var ProductCardVertical = function (_a) {
|
|
2222
|
+
var _b;
|
|
2223
|
+
var id = _a.id,
|
|
2224
|
+
title = _a.title,
|
|
2225
|
+
url = _a.url,
|
|
2226
|
+
imageUrl = _a.imageUrl;
|
|
2227
|
+
_a.productId;
|
|
2228
|
+
var description = _a.description,
|
|
2229
|
+
_c = _a.buttonLabel,
|
|
2230
|
+
buttonLabel = _c === void 0 ? 'BUY ONLINE' : _c,
|
|
2231
|
+
onButtonClick = _a.onButtonClick,
|
|
2232
|
+
className = _a.className,
|
|
2233
|
+
_d = _a.variant,
|
|
2234
|
+
variant = _d === void 0 ? 'desktop' : _d,
|
|
2235
|
+
forceState = _a["data-force-state"];
|
|
2236
|
+
var handleButtonClick = function (e) {
|
|
2037
2237
|
e.preventDefault(); // Prevent card link navigation
|
|
2038
2238
|
e.stopPropagation(); // Stop event bubbling
|
|
2039
|
-
onButtonClick
|
|
2239
|
+
onButtonClick === null || onButtonClick === void 0 ? void 0 : onButtonClick();
|
|
2040
2240
|
};
|
|
2041
|
-
|
|
2042
|
-
[styles$6['productCardVertical--hover']]: forceState === 'hover',
|
|
2043
|
-
[styles$6['productCardVertical--focus']]: forceState === 'focus'
|
|
2044
|
-
}, className);
|
|
2241
|
+
var cardClasses = classNames(styles$6.productCardVertical, styles$6["productCardVertical--".concat(variant)], (_b = {}, _b[styles$6['productCardVertical--hover']] = forceState === 'hover', _b[styles$6['productCardVertical--focus']] = forceState === 'focus', _b), className);
|
|
2045
2242
|
return /*#__PURE__*/React.createElement("a", {
|
|
2046
2243
|
href: url,
|
|
2047
2244
|
className: cardClasses,
|
|
2048
|
-
"aria-label":
|
|
2245
|
+
"aria-label": "View product: ".concat(title),
|
|
2049
2246
|
"data-product-id": id
|
|
2050
2247
|
}, imageUrl && /*#__PURE__*/React.createElement("div", {
|
|
2051
2248
|
className: styles$6.productCardVertical__imageWrapper
|
|
@@ -2066,7 +2263,7 @@ const ProductCardVertical = ({
|
|
|
2066
2263
|
type: "button",
|
|
2067
2264
|
onClick: handleButtonClick,
|
|
2068
2265
|
className: styles$6.productCardVertical__button,
|
|
2069
|
-
"aria-label":
|
|
2266
|
+
"aria-label": "".concat(buttonLabel, " - ").concat(title),
|
|
2070
2267
|
tabIndex: -1
|
|
2071
2268
|
}, /*#__PURE__*/React.createElement("span", null, buttonLabel), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
2072
2269
|
icon: faArrowUpRightFromSquare$1,
|
|
@@ -2076,17 +2273,19 @@ const ProductCardVertical = ({
|
|
|
2076
2273
|
|
|
2077
2274
|
var styles$5 = {"resultsView":"ResultsView-module__resultsView___S4Wh2","searchBarWrapper":"ResultsView-module__searchBarWrapper___XNtwR","tabsContainer":"ResultsView-module__tabsContainer___mB-Q2","tabs":"ResultsView-module__tabs___rOexd","tabSeparator":"ResultsView-module__tabSeparator___MSq9p","mobileFilterButton":"ResultsView-module__mobileFilterButton___ZrMQY","resultsContainer":"ResultsView-module__resultsContainer___J4URa","sidebar":"ResultsView-module__sidebar___nQq5J","assistanceBanner":"ResultsView-module__assistanceBanner___1r72a","mainContent":"ResultsView-module__mainContent___S9eIG","productsGrid":"ResultsView-module__productsGrid___gnAQ-","contentsList":"ResultsView-module__contentsList___tcfNG","contentDivider":"ResultsView-module__contentDivider___5n6sl","resultsList":"ResultsView-module__resultsList___8eYNX","resultsSection":"ResultsView-module__resultsSection___sCUaO","sectionTitle":"ResultsView-module__sectionTitle___mfvH3","loadingState":"ResultsView-module__loadingState___W5YXx","errorState":"ResultsView-module__errorState___UkkG-","emptyState":"ResultsView-module__emptyState___D0Iyn","spinner":"ResultsView-module__spinner___nk8E5","emptyIcon":"ResultsView-module__emptyIcon___fes8T","paginationWrapper":"ResultsView-module__paginationWrapper___mDTyl","searchBarDesktopOnly":"ResultsView-module__searchBarDesktopOnly___dZHUw","tabsContainerDesktopOnly":"ResultsView-module__tabsContainerDesktopOnly___-MQpa"};
|
|
2078
2275
|
|
|
2079
|
-
|
|
2080
|
-
type,
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2276
|
+
var ResultsList = function (_a) {
|
|
2277
|
+
var type = _a.type,
|
|
2278
|
+
_b = _a.products,
|
|
2279
|
+
products = _b === void 0 ? [] : _b,
|
|
2280
|
+
_c = _a.contents,
|
|
2281
|
+
contents = _c === void 0 ? [] : _c,
|
|
2282
|
+
isLoading = _a.isLoading,
|
|
2283
|
+
error = _a.error,
|
|
2284
|
+
_d = _a.className,
|
|
2285
|
+
className = _d === void 0 ? '' : _d;
|
|
2087
2286
|
if (isLoading) {
|
|
2088
2287
|
return /*#__PURE__*/React.createElement("div", {
|
|
2089
|
-
className:
|
|
2288
|
+
className: "".concat(styles$5.loadingState, " ").concat(className)
|
|
2090
2289
|
}, /*#__PURE__*/React.createElement("div", {
|
|
2091
2290
|
className: styles$5.spinner,
|
|
2092
2291
|
"aria-label": "Loading..."
|
|
@@ -2094,15 +2293,15 @@ const ResultsList = ({
|
|
|
2094
2293
|
}
|
|
2095
2294
|
if (error) {
|
|
2096
2295
|
return /*#__PURE__*/React.createElement("div", {
|
|
2097
|
-
className:
|
|
2296
|
+
className: "".concat(styles$5.errorState, " ").concat(className)
|
|
2098
2297
|
}, /*#__PURE__*/React.createElement("p", null, error));
|
|
2099
2298
|
}
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2299
|
+
var hasProducts = products.length > 0;
|
|
2300
|
+
var hasContents = contents.length > 0;
|
|
2301
|
+
var hasResults = hasProducts || hasContents;
|
|
2103
2302
|
if (!hasResults) {
|
|
2104
2303
|
return /*#__PURE__*/React.createElement("div", {
|
|
2105
|
-
className:
|
|
2304
|
+
className: "".concat(styles$5.emptyState, " ").concat(className)
|
|
2106
2305
|
}, /*#__PURE__*/React.createElement("svg", {
|
|
2107
2306
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2108
2307
|
viewBox: "0 0 24 24",
|
|
@@ -2120,107 +2319,111 @@ const ResultsList = ({
|
|
|
2120
2319
|
d: "m21 21-4.35-4.35"
|
|
2121
2320
|
})), /*#__PURE__*/React.createElement("h3", null, "No results found"), /*#__PURE__*/React.createElement("p", null, "Try adjusting your search or filters to find what you're looking for."));
|
|
2122
2321
|
}
|
|
2123
|
-
|
|
2124
2322
|
// Render based on type
|
|
2125
2323
|
if (type === 'products') {
|
|
2126
2324
|
return /*#__PURE__*/React.createElement("div", {
|
|
2127
|
-
className:
|
|
2128
|
-
}, products.map(
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2325
|
+
className: "".concat(styles$5.productsGrid, " ").concat(className)
|
|
2326
|
+
}, products.map(function (product) {
|
|
2327
|
+
return /*#__PURE__*/React.createElement(ProductCardVertical, _extends({
|
|
2328
|
+
key: product.id
|
|
2329
|
+
}, product, {
|
|
2330
|
+
buttonLabel: "BUY ONLINE"
|
|
2331
|
+
}));
|
|
2332
|
+
}));
|
|
2133
2333
|
}
|
|
2134
2334
|
if (type === 'content') {
|
|
2135
2335
|
return /*#__PURE__*/React.createElement("div", {
|
|
2136
|
-
className:
|
|
2137
|
-
}, contents.map((content, index)
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2336
|
+
className: "".concat(styles$5.contentsList, " ").concat(className)
|
|
2337
|
+
}, contents.map(function (content, index) {
|
|
2338
|
+
return /*#__PURE__*/React.createElement(React.Fragment, {
|
|
2339
|
+
key: content.id
|
|
2340
|
+
}, index > 0 && /*#__PURE__*/React.createElement("hr", {
|
|
2341
|
+
className: styles$5.contentDivider
|
|
2342
|
+
}), /*#__PURE__*/React.createElement(ContentCardHorizontal, _extends({}, content, {
|
|
2343
|
+
variant: "results-view"
|
|
2344
|
+
})));
|
|
2345
|
+
}));
|
|
2144
2346
|
}
|
|
2145
|
-
|
|
2146
2347
|
// type === 'all' - Show mixed results (not in current Figma design, but keep for compatibility)
|
|
2147
2348
|
return /*#__PURE__*/React.createElement("div", {
|
|
2148
|
-
className:
|
|
2349
|
+
className: "".concat(styles$5.resultsList, " ").concat(className)
|
|
2149
2350
|
}, hasProducts && /*#__PURE__*/React.createElement("div", {
|
|
2150
2351
|
className: styles$5.resultsSection
|
|
2151
2352
|
}, /*#__PURE__*/React.createElement("h3", {
|
|
2152
2353
|
className: styles$5.sectionTitle
|
|
2153
2354
|
}, "Products (", products.length, ")"), /*#__PURE__*/React.createElement("div", {
|
|
2154
2355
|
className: styles$5.productsGrid
|
|
2155
|
-
}, products.map(
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2356
|
+
}, products.map(function (product) {
|
|
2357
|
+
return /*#__PURE__*/React.createElement(ProductCardVertical, _extends({
|
|
2358
|
+
key: product.id
|
|
2359
|
+
}, product, {
|
|
2360
|
+
buttonLabel: "BUY ONLINE"
|
|
2361
|
+
}));
|
|
2362
|
+
}))), hasContents && /*#__PURE__*/React.createElement("div", {
|
|
2160
2363
|
className: styles$5.resultsSection
|
|
2161
2364
|
}, /*#__PURE__*/React.createElement("h3", {
|
|
2162
2365
|
className: styles$5.sectionTitle
|
|
2163
2366
|
}, "Content (", contents.length, ")"), /*#__PURE__*/React.createElement("div", {
|
|
2164
2367
|
className: styles$5.contentsList
|
|
2165
|
-
}, contents.map((content, index)
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2368
|
+
}, contents.map(function (content, index) {
|
|
2369
|
+
return /*#__PURE__*/React.createElement(React.Fragment, {
|
|
2370
|
+
key: content.id
|
|
2371
|
+
}, index > 0 && /*#__PURE__*/React.createElement("hr", {
|
|
2372
|
+
className: styles$5.contentDivider
|
|
2373
|
+
}), /*#__PURE__*/React.createElement(ContentCardHorizontal, _extends({}, content, {
|
|
2374
|
+
variant: "results-view"
|
|
2375
|
+
})));
|
|
2376
|
+
}))));
|
|
2172
2377
|
};
|
|
2173
2378
|
|
|
2174
2379
|
var styles$4 = {"tabButton":"TabButton-module__tabButton___cMU45","tabButton__count":"TabButton-module__tabButton__count___nlS1p","tabButton__label":"TabButton-module__tabButton__label___YGpiC","tabButton__results":"TabButton-module__tabButton__results___Nr6gr","tabButton--desktop":"TabButton-module__tabButton--desktop___fbAaC","tabButton--active":"TabButton-module__tabButton--active___gj6Jp","tabButton--mobile":"TabButton-module__tabButton--mobile___AnLwy"};
|
|
2175
2380
|
|
|
2176
|
-
/**
|
|
2177
|
-
* TabButton - Tab navigation component with result counts
|
|
2178
|
-
*
|
|
2179
|
-
* Supports two layout variants:
|
|
2180
|
-
* - Desktop: Background colours, top red underline when active, rounded corners
|
|
2181
|
-
* - Mobile: Text-only with bottom border underline when active
|
|
2182
|
-
*
|
|
2183
|
-
* @example
|
|
2184
|
-
* ```tsx
|
|
2185
|
-
* // Desktop variant
|
|
2186
|
-
* <TabButton
|
|
2187
|
-
* label="WEB SHOP RESULTS"
|
|
2188
|
-
* count={542}
|
|
2189
|
-
* isActive={true}
|
|
2190
|
-
* onClick={() => setActiveTab('products')}
|
|
2191
|
-
* variant="desktop"
|
|
2192
|
-
* />
|
|
2193
|
-
*
|
|
2194
|
-
* // Mobile variant
|
|
2195
|
-
* <TabButton
|
|
2196
|
-
* label="WEB SHOP"
|
|
2197
|
-
* isActive={false}
|
|
2198
|
-
* onClick={() => setActiveTab('content')}
|
|
2199
|
-
* variant="mobile"
|
|
2200
|
-
* />
|
|
2201
|
-
* ```
|
|
2381
|
+
/**
|
|
2382
|
+
* TabButton - Tab navigation component with result counts
|
|
2383
|
+
*
|
|
2384
|
+
* Supports two layout variants:
|
|
2385
|
+
* - Desktop: Background colours, top red underline when active, rounded corners
|
|
2386
|
+
* - Mobile: Text-only with bottom border underline when active
|
|
2387
|
+
*
|
|
2388
|
+
* @example
|
|
2389
|
+
* ```tsx
|
|
2390
|
+
* // Desktop variant
|
|
2391
|
+
* <TabButton
|
|
2392
|
+
* label="WEB SHOP RESULTS"
|
|
2393
|
+
* count={542}
|
|
2394
|
+
* isActive={true}
|
|
2395
|
+
* onClick={() => setActiveTab('products')}
|
|
2396
|
+
* variant="desktop"
|
|
2397
|
+
* />
|
|
2398
|
+
*
|
|
2399
|
+
* // Mobile variant
|
|
2400
|
+
* <TabButton
|
|
2401
|
+
* label="WEB SHOP"
|
|
2402
|
+
* isActive={false}
|
|
2403
|
+
* onClick={() => setActiveTab('content')}
|
|
2404
|
+
* variant="mobile"
|
|
2405
|
+
* />
|
|
2406
|
+
* ```
|
|
2202
2407
|
*/
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
}, className);
|
|
2214
|
-
|
|
2408
|
+
var TabButton = function (_a) {
|
|
2409
|
+
var _b;
|
|
2410
|
+
var label = _a.label,
|
|
2411
|
+
count = _a.count,
|
|
2412
|
+
isActive = _a.isActive,
|
|
2413
|
+
onClick = _a.onClick,
|
|
2414
|
+
_c = _a.variant,
|
|
2415
|
+
variant = _c === void 0 ? 'desktop' : _c,
|
|
2416
|
+
className = _a.className;
|
|
2417
|
+
var buttonClasses = classNames(styles$4.tabButton, styles$4["tabButton--".concat(variant)], (_b = {}, _b[styles$4['tabButton--active']] = isActive, _b), className);
|
|
2215
2418
|
// Split label to hide " RESULTS" on mobile
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2419
|
+
var labelParts = label.split(' RESULTS');
|
|
2420
|
+
var mainLabel = labelParts[0];
|
|
2421
|
+
var hasResults = labelParts.length > 1;
|
|
2219
2422
|
return /*#__PURE__*/React.createElement("button", {
|
|
2220
2423
|
type: "button",
|
|
2221
2424
|
role: "tab",
|
|
2222
2425
|
"aria-selected": isActive,
|
|
2223
|
-
"aria-controls":
|
|
2426
|
+
"aria-controls": "tabpanel-".concat(label.toLowerCase().replace(/\s+/g, '-')),
|
|
2224
2427
|
onClick: onClick,
|
|
2225
2428
|
className: buttonClasses
|
|
2226
2429
|
}, count !== undefined && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
@@ -2232,7 +2435,7 @@ const TabButton = ({
|
|
|
2232
2435
|
}, " RESULTS")));
|
|
2233
2436
|
};
|
|
2234
2437
|
|
|
2235
|
-
|
|
2438
|
+
var AssistanceIcon = function (props) {
|
|
2236
2439
|
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
2237
2440
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2238
2441
|
width: "87",
|
|
@@ -2247,39 +2450,42 @@ const AssistanceIcon = props => {
|
|
|
2247
2450
|
|
|
2248
2451
|
var styles$3 = {"assistanceBanner":"AssistanceBanner-module__assistanceBanner___b97es","assistanceBanner__icon":"AssistanceBanner-module__assistanceBanner__icon___8NzJj","assistanceBanner__title":"AssistanceBanner-module__assistanceBanner__title___Wtkkt","assistanceBanner__description":"AssistanceBanner-module__assistanceBanner__description___AjoOr","assistanceBanner__link":"AssistanceBanner-module__assistanceBanner__link___5L45N","assistanceBanner__chevron":"AssistanceBanner-module__assistanceBanner__chevron___4km-f"};
|
|
2249
2452
|
|
|
2250
|
-
/**
|
|
2251
|
-
* AssistanceBanner - Help widget for search sidebar
|
|
2252
|
-
*
|
|
2253
|
-
* Displays a call-to-action for users who need assistance finding products.
|
|
2254
|
-
* Features chat icon, heading, description, and contact link with chevron.
|
|
2255
|
-
*
|
|
2256
|
-
* Desktop only - hidden on mobile to save space.
|
|
2257
|
-
*
|
|
2258
|
-
* @example
|
|
2259
|
-
* ```tsx
|
|
2260
|
-
* <AssistanceBanner
|
|
2261
|
-
* title="Need Assistance?"
|
|
2262
|
-
* description="Can't find what you're looking for? Our team is ready to help."
|
|
2263
|
-
* linkText="Contact support"
|
|
2264
|
-
* linkUrl="/contact"
|
|
2265
|
-
* />
|
|
2266
|
-
* ```
|
|
2453
|
+
/**
|
|
2454
|
+
* AssistanceBanner - Help widget for search sidebar
|
|
2455
|
+
*
|
|
2456
|
+
* Displays a call-to-action for users who need assistance finding products.
|
|
2457
|
+
* Features chat icon, heading, description, and contact link with chevron.
|
|
2458
|
+
*
|
|
2459
|
+
* Desktop only - hidden on mobile to save space.
|
|
2460
|
+
*
|
|
2461
|
+
* @example
|
|
2462
|
+
* ```tsx
|
|
2463
|
+
* <AssistanceBanner
|
|
2464
|
+
* title="Need Assistance?"
|
|
2465
|
+
* description="Can't find what you're looking for? Our team is ready to help."
|
|
2466
|
+
* linkText="Contact support"
|
|
2467
|
+
* linkUrl="/contact"
|
|
2468
|
+
* />
|
|
2469
|
+
* ```
|
|
2267
2470
|
*/
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2471
|
+
var AssistanceBanner = function (_a) {
|
|
2472
|
+
var _b = _a.title,
|
|
2473
|
+
title = _b === void 0 ? 'Need Assistance?' : _b,
|
|
2474
|
+
_c = _a.description,
|
|
2475
|
+
description = _c === void 0 ? "Can't find what you're looking for? Our team is ready to help." : _c,
|
|
2476
|
+
_d = _a.linkText,
|
|
2477
|
+
linkText = _d === void 0 ? 'Contact support' : _d,
|
|
2478
|
+
_e = _a.linkUrl,
|
|
2479
|
+
linkUrl = _e === void 0 ? '/contact' : _e,
|
|
2480
|
+
onLinkClick = _a.onLinkClick,
|
|
2481
|
+
className = _a.className;
|
|
2482
|
+
var handleLinkClick = function (e) {
|
|
2277
2483
|
if (onLinkClick) {
|
|
2278
2484
|
e.preventDefault();
|
|
2279
2485
|
onLinkClick();
|
|
2280
2486
|
}
|
|
2281
2487
|
};
|
|
2282
|
-
|
|
2488
|
+
var bannerClasses = classNames(styles$3.assistanceBanner, className);
|
|
2283
2489
|
return /*#__PURE__*/React.createElement("div", {
|
|
2284
2490
|
className: bannerClasses
|
|
2285
2491
|
}, /*#__PURE__*/React.createElement(AssistanceIcon, {
|
|
@@ -2312,111 +2518,105 @@ const AssistanceBanner = ({
|
|
|
2312
2518
|
|
|
2313
2519
|
var styles$2 = {"drawerOverlay":"FilterDrawer-module__drawerOverlay___P6M4y","drawerOverlay--open":"FilterDrawer-module__drawerOverlay--open___blJZo","drawerPanel":"FilterDrawer-module__drawerPanel___35h-U","drawerPanel--open":"FilterDrawer-module__drawerPanel--open___Fw1SY","drawerCloseButton":"FilterDrawer-module__drawerCloseButton___cfMmf","drawerContent":"FilterDrawer-module__drawerContent___KBff6"};
|
|
2314
2520
|
|
|
2315
|
-
/**
|
|
2316
|
-
* FilterDrawer - Mobile slide-in filter panel
|
|
2317
|
-
*
|
|
2318
|
-
* Slides in from the right with a dark overlay. Used on mobile to show filters
|
|
2319
|
-
* when screen space is limited. Includes focus trap, escape key handling, and
|
|
2320
|
-
* body scroll prevention.
|
|
2321
|
-
*
|
|
2322
|
-
* Desktop: Hidden (filters shown in sidebar)
|
|
2323
|
-
* Mobile: Slide-in drawer overlay
|
|
2324
|
-
*
|
|
2325
|
-
* @example
|
|
2326
|
-
* ```tsx
|
|
2327
|
-
* <FilterDrawer
|
|
2328
|
-
* isOpen={isFilterDrawerOpen}
|
|
2329
|
-
* onClose={() => setIsFilterDrawerOpen(false)}
|
|
2330
|
-
* >
|
|
2331
|
-
* <FiltersPanel facets={facets} onFacetToggle={handleToggle} />
|
|
2332
|
-
* </FilterDrawer>
|
|
2333
|
-
* ```
|
|
2521
|
+
/**
|
|
2522
|
+
* FilterDrawer - Mobile slide-in filter panel
|
|
2523
|
+
*
|
|
2524
|
+
* Slides in from the right with a dark overlay. Used on mobile to show filters
|
|
2525
|
+
* when screen space is limited. Includes focus trap, escape key handling, and
|
|
2526
|
+
* body scroll prevention.
|
|
2527
|
+
*
|
|
2528
|
+
* Desktop: Hidden (filters shown in sidebar)
|
|
2529
|
+
* Mobile: Slide-in drawer overlay
|
|
2530
|
+
*
|
|
2531
|
+
* @example
|
|
2532
|
+
* ```tsx
|
|
2533
|
+
* <FilterDrawer
|
|
2534
|
+
* isOpen={isFilterDrawerOpen}
|
|
2535
|
+
* onClose={() => setIsFilterDrawerOpen(false)}
|
|
2536
|
+
* >
|
|
2537
|
+
* <FiltersPanel facets={facets} onFacetToggle={handleToggle} />
|
|
2538
|
+
* </FilterDrawer>
|
|
2539
|
+
* ```
|
|
2334
2540
|
*/
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2541
|
+
var FilterDrawer = function (_a) {
|
|
2542
|
+
var _b, _c;
|
|
2543
|
+
var isOpen = _a.isOpen,
|
|
2544
|
+
onClose = _a.onClose,
|
|
2545
|
+
children = _a.children,
|
|
2546
|
+
className = _a.className;
|
|
2547
|
+
var drawerRef = useRef(null);
|
|
2548
|
+
var previouslyFocusedElement = useRef(null);
|
|
2344
2549
|
// Focus management
|
|
2345
|
-
useEffect(()
|
|
2550
|
+
useEffect(function () {
|
|
2346
2551
|
if (isOpen) {
|
|
2347
2552
|
// Store previously focused element
|
|
2348
2553
|
previouslyFocusedElement.current = document.activeElement;
|
|
2349
|
-
|
|
2350
2554
|
// Focus the drawer
|
|
2351
2555
|
if (drawerRef.current) {
|
|
2352
2556
|
drawerRef.current.focus();
|
|
2353
2557
|
}
|
|
2354
|
-
|
|
2355
2558
|
// Prevent body scroll
|
|
2356
2559
|
document.body.style.overflow = 'hidden';
|
|
2357
2560
|
} else {
|
|
2358
2561
|
// Restore body scroll
|
|
2359
2562
|
document.body.style.overflow = '';
|
|
2360
|
-
|
|
2361
2563
|
// Return focus to previously focused element
|
|
2362
2564
|
if (previouslyFocusedElement.current) {
|
|
2363
2565
|
previouslyFocusedElement.current.focus();
|
|
2364
2566
|
}
|
|
2365
2567
|
}
|
|
2366
|
-
return ()
|
|
2568
|
+
return function () {
|
|
2367
2569
|
document.body.style.overflow = '';
|
|
2368
2570
|
};
|
|
2369
2571
|
}, [isOpen]);
|
|
2370
|
-
|
|
2371
2572
|
// Escape key handler
|
|
2372
|
-
useEffect(()
|
|
2373
|
-
|
|
2573
|
+
useEffect(function () {
|
|
2574
|
+
var handleEscape = function (event) {
|
|
2374
2575
|
if (event.key === 'Escape' && isOpen) {
|
|
2375
2576
|
onClose();
|
|
2376
2577
|
}
|
|
2377
2578
|
};
|
|
2378
2579
|
document.addEventListener('keydown', handleEscape);
|
|
2379
|
-
return ()
|
|
2580
|
+
return function () {
|
|
2581
|
+
return document.removeEventListener('keydown', handleEscape);
|
|
2582
|
+
};
|
|
2380
2583
|
}, [isOpen, onClose]);
|
|
2381
|
-
|
|
2382
2584
|
// Focus trap implementation
|
|
2383
|
-
useEffect(()
|
|
2585
|
+
useEffect(function () {
|
|
2384
2586
|
if (!isOpen || !drawerRef.current) return;
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2587
|
+
var drawer = drawerRef.current;
|
|
2588
|
+
var focusableElements = drawer.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
2589
|
+
var firstElement = focusableElements[0];
|
|
2590
|
+
var lastElement = focusableElements[focusableElements.length - 1];
|
|
2591
|
+
var handleTab = function (event) {
|
|
2390
2592
|
if (event.key !== 'Tab') return;
|
|
2391
2593
|
if (event.shiftKey) {
|
|
2392
2594
|
// Shift + Tab
|
|
2393
2595
|
if (document.activeElement === firstElement) {
|
|
2394
2596
|
event.preventDefault();
|
|
2395
|
-
lastElement
|
|
2597
|
+
lastElement === null || lastElement === void 0 ? void 0 : lastElement.focus();
|
|
2396
2598
|
}
|
|
2397
2599
|
} else {
|
|
2398
2600
|
// Tab
|
|
2399
2601
|
if (document.activeElement === lastElement) {
|
|
2400
2602
|
event.preventDefault();
|
|
2401
|
-
firstElement
|
|
2603
|
+
firstElement === null || firstElement === void 0 ? void 0 : firstElement.focus();
|
|
2402
2604
|
}
|
|
2403
2605
|
}
|
|
2404
2606
|
};
|
|
2405
2607
|
drawer.addEventListener('keydown', handleTab);
|
|
2406
|
-
return ()
|
|
2608
|
+
return function () {
|
|
2609
|
+
return drawer.removeEventListener('keydown', handleTab);
|
|
2610
|
+
};
|
|
2407
2611
|
}, [isOpen]);
|
|
2408
2612
|
if (!isOpen) return null;
|
|
2409
|
-
|
|
2613
|
+
var handleOverlayClick = function (event) {
|
|
2410
2614
|
if (event.target === event.currentTarget) {
|
|
2411
2615
|
onClose();
|
|
2412
2616
|
}
|
|
2413
2617
|
};
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
});
|
|
2417
|
-
const panelClasses = classNames(styles$2.drawerPanel, {
|
|
2418
|
-
[styles$2['drawerPanel--open']]: isOpen
|
|
2419
|
-
}, className);
|
|
2618
|
+
var overlayClasses = classNames(styles$2.drawerOverlay, (_b = {}, _b[styles$2['drawerOverlay--open']] = isOpen, _b));
|
|
2619
|
+
var panelClasses = classNames(styles$2.drawerPanel, (_c = {}, _c[styles$2['drawerPanel--open']] = isOpen, _c), className);
|
|
2420
2620
|
return /*#__PURE__*/React.createElement("div", {
|
|
2421
2621
|
className: overlayClasses,
|
|
2422
2622
|
onClick: handleOverlayClick,
|
|
@@ -2440,63 +2640,63 @@ const FilterDrawer = ({
|
|
|
2440
2640
|
}, children)));
|
|
2441
2641
|
};
|
|
2442
2642
|
|
|
2443
|
-
|
|
2444
|
-
query,
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
const error = activeTab === "products" ? productsError : contentsError;
|
|
2466
|
-
|
|
2643
|
+
var FederatedResultsView = function (_a) {
|
|
2644
|
+
var query = _a.query,
|
|
2645
|
+
onQueryChange = _a.onQueryChange,
|
|
2646
|
+
onSearchSubmit = _a.onSearchSubmit,
|
|
2647
|
+
activeTab = _a.activeTab,
|
|
2648
|
+
onTabChange = _a.onTabChange,
|
|
2649
|
+
products = _a.products,
|
|
2650
|
+
contents = _a.contents,
|
|
2651
|
+
isLoadingProducts = _a.isLoadingProducts,
|
|
2652
|
+
isLoadingContents = _a.isLoadingContents,
|
|
2653
|
+
productsError = _a.productsError,
|
|
2654
|
+
contentsError = _a.contentsError,
|
|
2655
|
+
currentPage = _a.currentPage,
|
|
2656
|
+
totalPages = _a.totalPages,
|
|
2657
|
+
onPageChange = _a.onPageChange,
|
|
2658
|
+
facets = _a.facets,
|
|
2659
|
+
onFacetToggle = _a.onFacetToggle,
|
|
2660
|
+
isFilterDrawerOpen = _a.isFilterDrawerOpen,
|
|
2661
|
+
onFilterDrawerToggle = _a.onFilterDrawerToggle,
|
|
2662
|
+
onFilterDrawerClose = _a.onFilterDrawerClose;
|
|
2663
|
+
var isLoading = activeTab === "products" && isLoadingProducts || activeTab === "content" && isLoadingContents;
|
|
2664
|
+
var error = activeTab === "products" ? productsError : contentsError;
|
|
2467
2665
|
// Filter results based on active tab
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2666
|
+
var displayProducts = activeTab === "content" ? [] : products;
|
|
2667
|
+
var displayContents = activeTab === "products" ? [] : contents;
|
|
2471
2668
|
// Content tab single-select handler (clears all others when selecting)
|
|
2472
|
-
|
|
2473
|
-
|
|
2669
|
+
var handleContentCategorySelect = useCallback(function (attribute, value) {
|
|
2670
|
+
var facet = facets.find(function (f) {
|
|
2671
|
+
return f.attribute === attribute;
|
|
2672
|
+
});
|
|
2474
2673
|
if (!facet) return;
|
|
2475
|
-
|
|
2476
2674
|
// Clear ALL values in this facet first
|
|
2477
|
-
facet.values.forEach(v
|
|
2675
|
+
facet.values.forEach(function (v) {
|
|
2478
2676
|
if (v.isRefined) {
|
|
2479
2677
|
onFacetToggle(attribute, v.value); // Unselect
|
|
2480
2678
|
}
|
|
2481
2679
|
});
|
|
2482
|
-
|
|
2483
2680
|
// Then select the clicked value (if not already selected)
|
|
2484
|
-
|
|
2681
|
+
var clickedValue = facet.values.find(function (v) {
|
|
2682
|
+
return v.value === value;
|
|
2683
|
+
});
|
|
2485
2684
|
if (clickedValue && !clickedValue.isRefined) {
|
|
2486
2685
|
onFacetToggle(attribute, value); // Select
|
|
2487
2686
|
}
|
|
2488
2687
|
}, [facets, onFacetToggle]);
|
|
2489
|
-
|
|
2490
2688
|
// Track if any filters applied
|
|
2491
|
-
|
|
2492
|
-
return facets.some(
|
|
2689
|
+
var hasAppliedFilters = useMemo(function () {
|
|
2690
|
+
return facets.some(function (facet) {
|
|
2691
|
+
return facet.values.some(function (value) {
|
|
2692
|
+
return value.isRefined;
|
|
2693
|
+
});
|
|
2694
|
+
});
|
|
2493
2695
|
}, [facets]);
|
|
2494
|
-
|
|
2495
2696
|
// Track previous filter state to detect transitions
|
|
2496
|
-
|
|
2497
|
-
|
|
2697
|
+
var prevHasAppliedFilters = useRef(hasAppliedFilters);
|
|
2498
2698
|
// Auto-close drawer when transitioning FROM filters applied TO no filters (mobile only)
|
|
2499
|
-
useEffect(()
|
|
2699
|
+
useEffect(function () {
|
|
2500
2700
|
// Only close if we HAD filters and now have NONE (not on initial open)
|
|
2501
2701
|
if (prevHasAppliedFilters.current && !hasAppliedFilters && isFilterDrawerOpen && onFilterDrawerClose) {
|
|
2502
2702
|
onFilterDrawerClose();
|
|
@@ -2506,7 +2706,7 @@ const FederatedResultsView = ({
|
|
|
2506
2706
|
return /*#__PURE__*/React.createElement("div", {
|
|
2507
2707
|
className: styles$5.resultsView
|
|
2508
2708
|
}, /*#__PURE__*/React.createElement("div", {
|
|
2509
|
-
className:
|
|
2709
|
+
className: "".concat(styles$5.searchBarWrapper, " ").concat(styles$5.searchBarDesktopOnly)
|
|
2510
2710
|
}, /*#__PURE__*/React.createElement(SearchBar, {
|
|
2511
2711
|
value: query,
|
|
2512
2712
|
onChange: onQueryChange,
|
|
@@ -2514,7 +2714,7 @@ const FederatedResultsView = ({
|
|
|
2514
2714
|
placeholder: "Refine your search...",
|
|
2515
2715
|
variant: "results"
|
|
2516
2716
|
})), /*#__PURE__*/React.createElement("div", {
|
|
2517
|
-
className:
|
|
2717
|
+
className: "".concat(styles$5.tabsContainer, " ").concat(styles$5.tabsContainerDesktopOnly)
|
|
2518
2718
|
}, /*#__PURE__*/React.createElement("div", {
|
|
2519
2719
|
className: styles$5.tabs,
|
|
2520
2720
|
role: "tablist"
|
|
@@ -2522,7 +2722,9 @@ const FederatedResultsView = ({
|
|
|
2522
2722
|
label: "WEB SHOP RESULTS",
|
|
2523
2723
|
count: products.length,
|
|
2524
2724
|
isActive: activeTab === "products",
|
|
2525
|
-
onClick: ()
|
|
2725
|
+
onClick: function () {
|
|
2726
|
+
return onTabChange("products");
|
|
2727
|
+
},
|
|
2526
2728
|
variant: "desktop"
|
|
2527
2729
|
}), /*#__PURE__*/React.createElement("div", {
|
|
2528
2730
|
className: styles$5.tabSeparator
|
|
@@ -2530,7 +2732,9 @@ const FederatedResultsView = ({
|
|
|
2530
2732
|
label: "WEBSITE RESULTS",
|
|
2531
2733
|
count: contents.length,
|
|
2532
2734
|
isActive: activeTab === "content",
|
|
2533
|
-
onClick: ()
|
|
2735
|
+
onClick: function () {
|
|
2736
|
+
return onTabChange("content");
|
|
2737
|
+
},
|
|
2534
2738
|
variant: "desktop"
|
|
2535
2739
|
})), onFilterDrawerToggle && /*#__PURE__*/React.createElement("button", {
|
|
2536
2740
|
type: "button",
|
|
@@ -2559,9 +2763,9 @@ const FederatedResultsView = ({
|
|
|
2559
2763
|
})), /*#__PURE__*/React.createElement("main", {
|
|
2560
2764
|
className: styles$5.mainContent
|
|
2561
2765
|
}, /*#__PURE__*/React.createElement("div", {
|
|
2562
|
-
id:
|
|
2766
|
+
id: "tabpanel-".concat(activeTab),
|
|
2563
2767
|
role: "tabpanel",
|
|
2564
|
-
"aria-labelledby":
|
|
2768
|
+
"aria-labelledby": "tab-".concat(activeTab)
|
|
2565
2769
|
}, /*#__PURE__*/React.createElement(ResultsList, {
|
|
2566
2770
|
type: activeTab,
|
|
2567
2771
|
products: displayProducts,
|
|
@@ -2576,7 +2780,7 @@ const FederatedResultsView = ({
|
|
|
2576
2780
|
onPageChange: onPageChange,
|
|
2577
2781
|
maxVisiblePages: 10,
|
|
2578
2782
|
showPrevious: false,
|
|
2579
|
-
ariaLabel:
|
|
2783
|
+
ariaLabel: "".concat(activeTab === "products" ? "Products" : "Content", " pagination")
|
|
2580
2784
|
}))))), onFilterDrawerClose && /*#__PURE__*/React.createElement(FilterDrawer, {
|
|
2581
2785
|
isOpen: isFilterDrawerOpen || false,
|
|
2582
2786
|
onClose: onFilterDrawerClose
|
|
@@ -2590,73 +2794,76 @@ const FederatedResultsView = ({
|
|
|
2590
2794
|
|
|
2591
2795
|
var styles$1 = {"searchExperience":"FederatedSearchExperience-module__searchExperience___gug9X","searchBarSection":"FederatedSearchExperience-module__searchBarSection___f0Ykq","searchBarDesktopOnly":"FederatedSearchExperience-module__searchBarDesktopOnly___CetKZ","searchBarMobileOnly":"FederatedSearchExperience-module__searchBarMobileOnly___Ityxp","resultsHeaderMobileOnly":"FederatedSearchExperience-module__resultsHeaderMobileOnly___09ef-","tabsContainerSticky":"FederatedSearchExperience-module__tabsContainerSticky___-HdY5","tabs":"FederatedSearchExperience-module__tabs___Vatv8","tabSeparator":"FederatedSearchExperience-module__tabSeparator___AUjhW","mobileFilterButtonWrapper":"FederatedSearchExperience-module__mobileFilterButtonWrapper___JkRtk","mobileFilterButton":"FederatedSearchExperience-module__mobileFilterButton___sRc-w","filterIndicatorDot":"FederatedSearchExperience-module__filterIndicatorDot___vqVi2","instantResultsSection":"FederatedSearchExperience-module__instantResultsSection___AG3qn","fullResultsSection":"FederatedSearchExperience-module__fullResultsSection___NH16U"};
|
|
2592
2796
|
|
|
2593
|
-
/**
|
|
2594
|
-
* FederatedSearchExperience - Top-level search experience component
|
|
2595
|
-
*
|
|
2596
|
-
* This component orchestrates the entire federated search experience, including:
|
|
2597
|
-
* - Modal container
|
|
2598
|
-
* - Search input
|
|
2599
|
-
* - Instant results (2-column layout)
|
|
2600
|
-
* - Full results view with tabs and filters
|
|
2601
|
-
*
|
|
2602
|
-
* The component is fully controlled and does not contain any data fetching logic.
|
|
2603
|
-
* All data and callbacks are passed in via props, making it suitable for use in AEM
|
|
2604
|
-
* where a controller layer will handle Algolia integration.
|
|
2605
|
-
*
|
|
2606
|
-
* @example
|
|
2607
|
-
* ```tsx
|
|
2608
|
-
* <FederatedSearchExperience
|
|
2609
|
-
* isOpen={isOpen}
|
|
2610
|
-
* onOpen={handleOpen}
|
|
2611
|
-
* onClose={handleClose}
|
|
2612
|
-
* query={query}
|
|
2613
|
-
* onQueryChange={setQuery}
|
|
2614
|
-
* onSearchSubmit={handleSubmit}
|
|
2615
|
-
* products={products}
|
|
2616
|
-
* contents={contents}
|
|
2617
|
-
* isLoadingProducts={isLoadingProducts}
|
|
2618
|
-
* isLoadingContents={isLoadingContents}
|
|
2619
|
-
* onSeeAllProducts={handleSeeAllProducts}
|
|
2620
|
-
* onSeeAllContents={handleSeeAllContents}
|
|
2621
|
-
* onSeeAllCombined={handleSeeAllCombined}
|
|
2622
|
-
* activeView={activeView}
|
|
2623
|
-
* onChangeView={setActiveView}
|
|
2624
|
-
* activeTab={activeTab}
|
|
2625
|
-
* onTabChange={setActiveTab}
|
|
2626
|
-
* />
|
|
2627
|
-
* ```
|
|
2797
|
+
/**
|
|
2798
|
+
* FederatedSearchExperience - Top-level search experience component
|
|
2799
|
+
*
|
|
2800
|
+
* This component orchestrates the entire federated search experience, including:
|
|
2801
|
+
* - Modal container
|
|
2802
|
+
* - Search input
|
|
2803
|
+
* - Instant results (2-column layout)
|
|
2804
|
+
* - Full results view with tabs and filters
|
|
2805
|
+
*
|
|
2806
|
+
* The component is fully controlled and does not contain any data fetching logic.
|
|
2807
|
+
* All data and callbacks are passed in via props, making it suitable for use in AEM
|
|
2808
|
+
* where a controller layer will handle Algolia integration.
|
|
2809
|
+
*
|
|
2810
|
+
* @example
|
|
2811
|
+
* ```tsx
|
|
2812
|
+
* <FederatedSearchExperience
|
|
2813
|
+
* isOpen={isOpen}
|
|
2814
|
+
* onOpen={handleOpen}
|
|
2815
|
+
* onClose={handleClose}
|
|
2816
|
+
* query={query}
|
|
2817
|
+
* onQueryChange={setQuery}
|
|
2818
|
+
* onSearchSubmit={handleSubmit}
|
|
2819
|
+
* products={products}
|
|
2820
|
+
* contents={contents}
|
|
2821
|
+
* isLoadingProducts={isLoadingProducts}
|
|
2822
|
+
* isLoadingContents={isLoadingContents}
|
|
2823
|
+
* onSeeAllProducts={handleSeeAllProducts}
|
|
2824
|
+
* onSeeAllContents={handleSeeAllContents}
|
|
2825
|
+
* onSeeAllCombined={handleSeeAllCombined}
|
|
2826
|
+
* activeView={activeView}
|
|
2827
|
+
* onChangeView={setActiveView}
|
|
2828
|
+
* activeTab={activeTab}
|
|
2829
|
+
* onTabChange={setActiveTab}
|
|
2830
|
+
* />
|
|
2831
|
+
* ```
|
|
2628
2832
|
*/
|
|
2629
|
-
|
|
2630
|
-
isOpen,
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
}) => {
|
|
2833
|
+
var FederatedSearchExperience = function (_a) {
|
|
2834
|
+
var isOpen = _a.isOpen,
|
|
2835
|
+
onClose = _a.onClose,
|
|
2836
|
+
query = _a.query,
|
|
2837
|
+
onQueryChange = _a.onQueryChange,
|
|
2838
|
+
onSearchSubmit = _a.onSearchSubmit,
|
|
2839
|
+
products = _a.products,
|
|
2840
|
+
contents = _a.contents,
|
|
2841
|
+
isLoadingProducts = _a.isLoadingProducts,
|
|
2842
|
+
isLoadingContents = _a.isLoadingContents,
|
|
2843
|
+
productsError = _a.productsError,
|
|
2844
|
+
contentsError = _a.contentsError,
|
|
2845
|
+
onSeeAllProducts = _a.onSeeAllProducts,
|
|
2846
|
+
onSeeAllContents = _a.onSeeAllContents,
|
|
2847
|
+
onSeeAllCombined = _a.onSeeAllCombined,
|
|
2848
|
+
activeView = _a.activeView;
|
|
2849
|
+
_a.onChangeView;
|
|
2850
|
+
var activeTab = _a.activeTab,
|
|
2851
|
+
onTabChange = _a.onTabChange,
|
|
2852
|
+
currentPage = _a.currentPage,
|
|
2853
|
+
totalPages = _a.totalPages,
|
|
2854
|
+
onPageChange = _a.onPageChange,
|
|
2855
|
+
facets = _a.facets,
|
|
2856
|
+
onFacetToggle = _a.onFacetToggle,
|
|
2857
|
+
isFilterDrawerOpen = _a.isFilterDrawerOpen,
|
|
2858
|
+
onFilterDrawerToggle = _a.onFilterDrawerToggle,
|
|
2859
|
+
onFilterDrawerClose = _a.onFilterDrawerClose;
|
|
2657
2860
|
// Track if any filters are active (for red dot indicator)
|
|
2658
|
-
|
|
2659
|
-
return facets.some(
|
|
2861
|
+
var hasAppliedFilters = useMemo(function () {
|
|
2862
|
+
return facets.some(function (facet) {
|
|
2863
|
+
return facet.values.some(function (value) {
|
|
2864
|
+
return value.isRefined;
|
|
2865
|
+
});
|
|
2866
|
+
});
|
|
2660
2867
|
}, [facets]);
|
|
2661
2868
|
return /*#__PURE__*/React.createElement(SearchModal, {
|
|
2662
2869
|
isOpen: isOpen,
|
|
@@ -2688,7 +2895,9 @@ const FederatedSearchExperience = ({
|
|
|
2688
2895
|
label: "WEB SHOP RESULTS",
|
|
2689
2896
|
count: products.length,
|
|
2690
2897
|
isActive: activeTab === "products",
|
|
2691
|
-
onClick: ()
|
|
2898
|
+
onClick: function () {
|
|
2899
|
+
return onTabChange("products");
|
|
2900
|
+
},
|
|
2692
2901
|
variant: "mobile"
|
|
2693
2902
|
}), /*#__PURE__*/React.createElement("div", {
|
|
2694
2903
|
className: styles$1.tabSeparator
|
|
@@ -2696,7 +2905,9 @@ const FederatedSearchExperience = ({
|
|
|
2696
2905
|
label: "WEBSITE RESULTS",
|
|
2697
2906
|
count: contents.length,
|
|
2698
2907
|
isActive: activeTab === "content",
|
|
2699
|
-
onClick: ()
|
|
2908
|
+
onClick: function () {
|
|
2909
|
+
return onTabChange("content");
|
|
2910
|
+
},
|
|
2700
2911
|
variant: "mobile"
|
|
2701
2912
|
})), /*#__PURE__*/React.createElement("div", {
|
|
2702
2913
|
className: styles$1.mobileFilterButtonWrapper
|
|
@@ -2721,7 +2932,7 @@ const FederatedSearchExperience = ({
|
|
|
2721
2932
|
}, /*#__PURE__*/React.createElement("div", {
|
|
2722
2933
|
className: styles$1.searchExperience
|
|
2723
2934
|
}, activeView === "instant" && /*#__PURE__*/React.createElement("div", {
|
|
2724
|
-
className:
|
|
2935
|
+
className: "".concat(styles$1.searchBarSection, " ").concat(styles$1.searchBarDesktopOnly)
|
|
2725
2936
|
}, /*#__PURE__*/React.createElement(SearchBar, {
|
|
2726
2937
|
value: query,
|
|
2727
2938
|
onChange: onQueryChange,
|
|
@@ -2789,13 +3000,14 @@ const FederatedSearchExperience = ({
|
|
|
2789
3000
|
|
|
2790
3001
|
var styles = {"searchTrigger":"SearchTriggerButton-module__searchTrigger___PDbDB","searchIcon":"SearchTriggerButton-module__searchIcon___izByW","label":"SearchTriggerButton-module__label___mkS7T"};
|
|
2791
3002
|
|
|
2792
|
-
|
|
2793
|
-
onOpen,
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
3003
|
+
var SearchTriggerButton = function (_a) {
|
|
3004
|
+
var onOpen = _a.onOpen,
|
|
3005
|
+
_b = _a.ariaLabel,
|
|
3006
|
+
ariaLabel = _b === void 0 ? 'Open search' : _b,
|
|
3007
|
+
label = _a.label,
|
|
3008
|
+
_c = _a.className,
|
|
3009
|
+
className = _c === void 0 ? '' : _c;
|
|
3010
|
+
var handleKeyDown = function (event) {
|
|
2799
3011
|
if (event.key === 'Enter' || event.key === ' ') {
|
|
2800
3012
|
event.preventDefault();
|
|
2801
3013
|
onOpen();
|
|
@@ -2806,7 +3018,7 @@ const SearchTriggerButton = ({
|
|
|
2806
3018
|
onClick: onOpen,
|
|
2807
3019
|
onKeyDown: handleKeyDown,
|
|
2808
3020
|
"aria-label": ariaLabel,
|
|
2809
|
-
className:
|
|
3021
|
+
className: "".concat(styles.searchTrigger, " ").concat(className)
|
|
2810
3022
|
}, /*#__PURE__*/React.createElement("svg", {
|
|
2811
3023
|
className: styles.searchIcon,
|
|
2812
3024
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2828,5 +3040,5 @@ const SearchTriggerButton = ({
|
|
|
2828
3040
|
}, label));
|
|
2829
3041
|
};
|
|
2830
3042
|
|
|
2831
|
-
export { AlgoliaDynamicSearchLeybold as AlgoliaDynamicSearch, AlgoliaDynamicSearchLeybold, AppliedFilterTag, AppliedFilters, Button, ContentCardHorizontal, FederatedInstantResultsLayout, FederatedResultsView, FederatedSearchExperience, FilterAccordion, FilterItem, FilterSearch, FiltersPanel, Footer, FooterBottom, FooterLink, FooterLinkGroup, FooterSocialIcon, FooterSocialIcons, ModalCloseButton, Pagination, PaginationButton, PaginationEllipsis, PaginationItem, ProductCardHorizontal, ProductCardVertical, QrFormLeybold as QrForm, QrFormLeybold, ResultsColumn, ResultsCount, ResultsList, SearchBar, SearchIcon, SearchInput, SearchModal, SearchSubmitButton, SearchTriggerButton, SeeAllLinkButton };
|
|
3043
|
+
export { AlgoliaDynamicSearchLeybold as AlgoliaDynamicSearch, AlgoliaDynamicSearchLeybold, AppliedFilterTag, AppliedFilters, Button, ContentCardBase, ContentCardHorizontal, FederatedInstantResultsLayout, FederatedResultsView, FederatedSearchExperience, FilterAccordion, FilterItem, FilterSearch, FiltersPanel, Footer, FooterBottom, FooterLink, FooterLinkGroup, FooterSocialIcon, FooterSocialIcons, ModalCloseButton, Pagination, PaginationButton, PaginationEllipsis, PaginationItem, ProductCardHorizontal, ProductCardVertical, QrFormLeybold as QrForm, QrFormLeybold, ResultsColumn, ResultsCount, ResultsList, SearchBar, SearchIcon, SearchInput, SearchModal, SearchSubmitButton, SearchTriggerButton, SeeAllLinkButton };
|
|
2832
3044
|
//# sourceMappingURL=index.esm.js.map
|