@asantemedia-org/leybold-design-system 1.0.9 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/ai-banner-desktop.png +0 -0
- package/dist/assets/ai-banner-mobile.png +0 -0
- package/dist/assets/carousel-card.png +0 -0
- package/dist/assets/desktop-layout-alt.svg +27 -0
- package/dist/assets/desktop-layout.svg +29 -0
- package/dist/assets/globe.svg +7 -0
- package/dist/assets/language-selector-bg.png +0 -0
- package/dist/assets/leybold-footer-logo.svg +19 -0
- package/dist/assets/leybold-white.svg +19 -0
- package/dist/assets/list-card-alt.png +0 -0
- package/dist/assets/list-card.png +0 -0
- package/dist/assets/list-link-a.png +0 -0
- package/dist/assets/list-link-b.png +0 -0
- package/dist/assets/list-link-c.png +0 -0
- package/dist/assets/list-product-overlay-tip-active.svg +3 -0
- package/dist/assets/list-product-overlay-tip.svg +3 -0
- package/dist/assets/list-product.png +0 -0
- package/dist/assets/logo-example.svg +9 -0
- package/dist/assets/logo.svg +19 -0
- package/dist/assets/phone-layout.svg +14 -0
- package/dist/assets/red-tip.svg +10 -0
- package/dist/assets/tablet-layout.svg +28 -0
- package/dist/index.esm.js +560 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.scss +1807 -85
- package/dist/index.js +600 -31
- package/dist/index.js.map +1 -1
- package/dist/index.scss +1807 -85
- package/dist/src/app/layout.d.ts +1 -0
- package/dist/src/app/page.d.ts +1 -0
- package/dist/src/components/AIBanner/AIBanner.d.ts +15 -0
- package/dist/src/components/AIBanner/AIBanner.stories.d.ts +7 -0
- package/dist/src/components/AIBanner/index.d.ts +2 -0
- package/dist/src/components/Button/Button.d.ts +50 -5
- package/dist/src/components/Button/Button.stories.d.ts +16 -3
- package/dist/src/components/LanguageSelector/LanguageSelector.d.ts +7 -0
- package/dist/src/components/LanguageSelector/LanguageSelector.stories.d.ts +32 -0
- package/dist/src/components/LanguageSelector/LanguageSelector.types.d.ts +64 -0
- package/dist/src/components/LanguageSelector/LanguageSelectorLink.d.ts +20 -0
- package/dist/src/components/LanguageSelector/LocationDropdown.d.ts +6 -0
- package/dist/src/components/LanguageSelector/LocationSelectorLink.d.ts +20 -0
- package/dist/src/components/LanguageSelector/index.d.ts +7 -0
- package/dist/src/experience/Carousel/Carousel.d.ts +36 -0
- package/dist/src/experience/Carousel/Carousel.stories.d.ts +7 -0
- package/dist/src/experience/Carousel/index.d.ts +2 -0
- package/dist/src/experience/Footer/Footer.d.ts +201 -0
- package/dist/src/experience/Footer/Footer.stories.d.ts +28 -0
- package/dist/src/experience/Footer/icons/AtlasCopcoIcon.d.ts +10 -0
- package/dist/src/experience/Footer/icons/ExternalLinkIcon.d.ts +10 -0
- package/dist/src/experience/Footer/icons/index.d.ts +2 -0
- package/dist/src/experience/Footer/index.d.ts +2 -0
- package/dist/src/experience/GeneratedList/GeneratedList.d.ts +40 -0
- package/dist/src/experience/GeneratedList/GeneratedList.stories.d.ts +7 -0
- package/dist/src/experience/GeneratedList/GeneratedList.types.d.ts +131 -0
- package/dist/src/experience/GeneratedList/GeneratedListExternalLink.stories.d.ts +7 -0
- package/dist/src/experience/GeneratedList/GeneratedListList.stories.d.ts +9 -0
- package/dist/src/experience/GeneratedList/GeneratedListProduct.stories.d.ts +7 -0
- package/dist/src/experience/GeneratedList/_Card.d.ts +8 -0
- package/dist/src/experience/GeneratedList/_CardMobile.d.ts +8 -0
- package/dist/src/experience/GeneratedList/_ExternalLink.d.ts +8 -0
- package/dist/src/experience/GeneratedList/_List.d.ts +8 -0
- package/dist/src/experience/GeneratedList/_Product.d.ts +9 -0
- package/dist/src/experience/GeneratedList/index.d.ts +2 -0
- package/dist/src/experience/Header/Header.d.ts +20 -0
- package/dist/src/experience/Header/Header.stories.d.ts +9 -0
- package/dist/src/experience/Header/HeaderNavButton.d.ts +9 -0
- package/dist/src/experience/Header/MegaMenu.d.ts +10 -0
- package/dist/src/experience/Header/MenuLink.d.ts +8 -0
- package/dist/src/experience/Header/MobileHeader.stories.d.ts +6 -0
- package/dist/src/experience/Header/MobileMenu.d.ts +9 -0
- package/dist/src/experience/Header/MobileNavBar.d.ts +13 -0
- package/dist/src/experience/Header/index.d.ts +6 -0
- package/dist/src/experience/algolia-dynamic-search/AlgoliaDynamicSearch.d.ts +1 -0
- package/dist/src/experience/qr-form-journey/QrFormJourney.d.ts +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/stories/foundation/Buttons/ButtonComponents.d.ts +56 -0
- package/dist/src/stories/foundation/Typography/TypographyComponents.d.ts +45 -0
- package/dist/src/stories/foundation/_components/StoryLayout.d.ts +11 -0
- package/dist/src/types/cards.d.ts +1 -0
- package/dist/src/types/search.d.ts +5 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -2
package/dist/index.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
5
|
+
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
6
|
+
var Slider = require('react-slick');
|
|
7
|
+
var freeBrandsSvgIcons = require('@fortawesome/free-brands-svg-icons');
|
|
8
|
+
var edwardsvacuumDesignSystem = require('@asantemedia-org/edwardsvacuum-design-system');
|
|
3
9
|
|
|
4
10
|
function _extends() {
|
|
5
11
|
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
@@ -11,7 +17,7 @@ function _extends() {
|
|
|
11
17
|
}, _extends.apply(null, arguments);
|
|
12
18
|
}
|
|
13
19
|
|
|
14
|
-
var styles$
|
|
20
|
+
var styles$h = {"button":"Button-module__button___18Bed","button--primary":"Button-module__button--primary___VuF-P","button--default":"Button-module__button--default___MDa35","button--disabled":"Button-module__button--disabled___IuOY8","button--secondary":"Button-module__button--secondary___lD5E3","button--solid-red":"Button-module__button--solid-red___YPpnL","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-red":"Button-module__button--outlined-red___cgZXa","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"};
|
|
15
21
|
|
|
16
22
|
function getDefaultExportFromCjs (x) {
|
|
17
23
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
@@ -88,6 +94,79 @@ function requireClassnames() {
|
|
|
88
94
|
var classnamesExports = requireClassnames();
|
|
89
95
|
var classNames = /*@__PURE__*/getDefaultExportFromCjs(classnamesExports);
|
|
90
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Button variant types
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Icon types for button
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Icon position
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Get the icon component based on icon type
|
|
111
|
+
*/
|
|
112
|
+
const getIcon = icon => {
|
|
113
|
+
switch (icon) {
|
|
114
|
+
case "arrow-right":
|
|
115
|
+
return /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
116
|
+
icon: freeSolidSvgIcons.faArrowRight
|
|
117
|
+
});
|
|
118
|
+
case "external":
|
|
119
|
+
return /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
120
|
+
icon: freeSolidSvgIcons.faArrowUpRightFromSquare
|
|
121
|
+
});
|
|
122
|
+
case "chevron-left":
|
|
123
|
+
return /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
124
|
+
icon: freeSolidSvgIcons.faChevronLeft
|
|
125
|
+
});
|
|
126
|
+
case "chevron-right":
|
|
127
|
+
return /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
128
|
+
icon: freeSolidSvgIcons.faChevronRight
|
|
129
|
+
});
|
|
130
|
+
default:
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Get default icon for certain variants
|
|
137
|
+
*/
|
|
138
|
+
const getDefaultIcon = variant => {
|
|
139
|
+
switch (variant) {
|
|
140
|
+
case "link-text":
|
|
141
|
+
case "link-text-alt":
|
|
142
|
+
case "text":
|
|
143
|
+
// Alias
|
|
144
|
+
return "arrow-right";
|
|
145
|
+
case "external-link":
|
|
146
|
+
return "external";
|
|
147
|
+
case "carousel-arrow-left":
|
|
148
|
+
return "chevron-left";
|
|
149
|
+
case "carousel-arrow-right":
|
|
150
|
+
return "chevron-right";
|
|
151
|
+
default:
|
|
152
|
+
return "none";
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Map alias variants to their actual CSS class variants
|
|
158
|
+
*/
|
|
159
|
+
const mapVariantToClass = variant => {
|
|
160
|
+
switch (variant) {
|
|
161
|
+
case "outline":
|
|
162
|
+
return "outlined-red";
|
|
163
|
+
case "text":
|
|
164
|
+
return "link-text";
|
|
165
|
+
default:
|
|
166
|
+
return variant;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
|
|
91
170
|
/**
|
|
92
171
|
* Primary UI component for user interaction
|
|
93
172
|
*/
|
|
@@ -99,17 +178,493 @@ const Button = ({
|
|
|
99
178
|
onClick,
|
|
100
179
|
type = "button",
|
|
101
180
|
className,
|
|
181
|
+
icon,
|
|
182
|
+
iconPosition = "right",
|
|
183
|
+
ariaLabel,
|
|
184
|
+
opensInNewTab,
|
|
102
185
|
...props
|
|
103
186
|
}) => {
|
|
104
|
-
|
|
105
|
-
|
|
187
|
+
// Map alias variants to actual class names
|
|
188
|
+
const cssVariant = mapVariantToClass(variant);
|
|
189
|
+
|
|
190
|
+
// Determine the icon to display
|
|
191
|
+
const displayIcon = icon ?? getDefaultIcon(variant);
|
|
192
|
+
const iconElement = getIcon(displayIcon);
|
|
193
|
+
|
|
194
|
+
// Check if this is an icon-only button (carousel arrows)
|
|
195
|
+
const isIconOnly = variant === "carousel-arrow-left" || variant === "carousel-arrow-right";
|
|
196
|
+
const isCarouselLeft = variant === "carousel-arrow-left";
|
|
197
|
+
const isCarouselRight = variant === "carousel-arrow-right";
|
|
198
|
+
const buttonClasses = classNames(styles$h.button, styles$h[`button--${cssVariant}`], styles$h[`button--${size}`], {
|
|
199
|
+
[styles$h["button--disabled"]]: disabled
|
|
106
200
|
}, className);
|
|
201
|
+
const iconClasses = classNames(styles$h.button__icon, styles$h[`button__icon--${iconPosition}`]);
|
|
202
|
+
|
|
203
|
+
// Generate accessible label for icon-only buttons
|
|
204
|
+
const accessibleLabel = ariaLabel || (isIconOnly ? variant === "carousel-arrow-left" ? "Previous" : "Next" : undefined);
|
|
107
205
|
return /*#__PURE__*/React.createElement("button", _extends({
|
|
108
206
|
type: type,
|
|
109
207
|
className: buttonClasses,
|
|
110
208
|
disabled: disabled,
|
|
111
|
-
onClick: onClick
|
|
112
|
-
|
|
209
|
+
onClick: onClick,
|
|
210
|
+
"aria-label": accessibleLabel,
|
|
211
|
+
"data-force-state": props['data-force-state']
|
|
212
|
+
}, props), !isIconOnly && children, isCarouselLeft && /*#__PURE__*/React.createElement("span", {
|
|
213
|
+
className: iconClasses
|
|
214
|
+
}, /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
215
|
+
icon: freeSolidSvgIcons.faArrowLeft,
|
|
216
|
+
className: styles$h.button__icon__default
|
|
217
|
+
}), /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
218
|
+
icon: freeSolidSvgIcons.faArrowLeftLong,
|
|
219
|
+
className: styles$h.button__icon__hover
|
|
220
|
+
})), isCarouselRight && /*#__PURE__*/React.createElement("span", {
|
|
221
|
+
className: iconClasses
|
|
222
|
+
}, /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
223
|
+
icon: freeSolidSvgIcons.faArrowRight,
|
|
224
|
+
className: styles$h.button__icon__default
|
|
225
|
+
}), /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
226
|
+
icon: freeSolidSvgIcons.faArrowRightLong,
|
|
227
|
+
className: styles$h.button__icon__hover
|
|
228
|
+
})), !isIconOnly && iconElement && /*#__PURE__*/React.createElement("span", {
|
|
229
|
+
className: iconClasses
|
|
230
|
+
}, iconElement));
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
var styles$g = {"carousel":"Carousel-module__carousel___hkXkF","carousel__header":"Carousel-module__carousel__header___IMcN5","carousel__headerContent":"Carousel-module__carousel__headerContent___9uU-H","carousel__title":"Carousel-module__carousel__title___CCgcY","carousel__subtitle":"Carousel-module__carousel__subtitle___aj4q1","carousel__slider":"Carousel-module__carousel__slider___b27-P","carousel__slideWrapper":"Carousel-module__carousel__slideWrapper___PjXgD","carousel__card":"Carousel-module__carousel__card___lga-D","carousel__cardContent":"Carousel-module__carousel__cardContent___v0jc-","carousel__cardImageWrapper":"Carousel-module__carousel__cardImageWrapper___aFqXD","carousel__cardImage":"Carousel-module__carousel__cardImage___4MrRU","carousel__cardTitle":"Carousel-module__carousel__cardTitle___z-mMo","carousel__navigation":"Carousel-module__carousel__navigation___dMbcP","carousel__arrows":"Carousel-module__carousel__arrows___uj5nF","carousel__dotsList":"Carousel-module__carousel__dotsList___upZ7L","carousel__dot":"Carousel-module__carousel__dot___HwZc0","carousel__dot--active":"Carousel-module__carousel__dot--active___NxRvq"};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Carousel component for displaying multiple content cards in a sliding format.
|
|
237
|
+
* Supports responsive layouts with 3 cards on desktop and 1 card on mobile.
|
|
238
|
+
*/
|
|
239
|
+
const Carousel = ({
|
|
240
|
+
title,
|
|
241
|
+
subtitle,
|
|
242
|
+
buttonText,
|
|
243
|
+
buttonUrl,
|
|
244
|
+
cards,
|
|
245
|
+
showDots = true,
|
|
246
|
+
showArrows = true,
|
|
247
|
+
className
|
|
248
|
+
}) => {
|
|
249
|
+
const sliderRef = React.useRef(null);
|
|
250
|
+
const [currentSlide, setCurrentSlide] = React.useState(0);
|
|
251
|
+
|
|
252
|
+
// Uses document.documentElement.clientWidth to work correctly in iframes (Storybook)
|
|
253
|
+
const [isMobile, setIsMobile] = React.useState(() => {
|
|
254
|
+
if (typeof window !== 'undefined') {
|
|
255
|
+
return document.documentElement.clientWidth < 768;
|
|
256
|
+
}
|
|
257
|
+
return false;
|
|
258
|
+
});
|
|
259
|
+
React.useEffect(() => {
|
|
260
|
+
const handleResize = () => {
|
|
261
|
+
setIsMobile(document.documentElement.clientWidth < 768);
|
|
262
|
+
};
|
|
263
|
+
window.addEventListener('resize', handleResize);
|
|
264
|
+
return () => window.removeEventListener('resize', handleResize);
|
|
265
|
+
}, []);
|
|
266
|
+
const handlePrev = () => sliderRef.current?.slickPrev();
|
|
267
|
+
const handleNext = () => sliderRef.current?.slickNext();
|
|
268
|
+
const goToSlide = index => sliderRef.current?.slickGoTo(index);
|
|
269
|
+
const settings = {
|
|
270
|
+
dots: false,
|
|
271
|
+
infinite: true,
|
|
272
|
+
speed: 500,
|
|
273
|
+
slidesToShow: isMobile ? 1 : 3,
|
|
274
|
+
slidesToScroll: 1,
|
|
275
|
+
arrows: false,
|
|
276
|
+
beforeChange: (_, next) => setCurrentSlide(next)
|
|
277
|
+
};
|
|
278
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
279
|
+
className: classNames(styles$g.carousel, className)
|
|
280
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
281
|
+
className: styles$g.carousel__header
|
|
282
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
283
|
+
className: styles$g.carousel__headerContent
|
|
284
|
+
}, /*#__PURE__*/React.createElement("h2", {
|
|
285
|
+
className: styles$g.carousel__title
|
|
286
|
+
}, title), subtitle && /*#__PURE__*/React.createElement("p", {
|
|
287
|
+
className: styles$g.carousel__subtitle
|
|
288
|
+
}, subtitle)), buttonText && buttonUrl && /*#__PURE__*/React.createElement(Button, {
|
|
289
|
+
variant: "outlined-black",
|
|
290
|
+
onClick: () => window.location.href = buttonUrl,
|
|
291
|
+
style: {
|
|
292
|
+
minWidth: '215px',
|
|
293
|
+
minHeight: '56px'
|
|
294
|
+
}
|
|
295
|
+
}, buttonText)), /*#__PURE__*/React.createElement(Slider, _extends({
|
|
296
|
+
ref: sliderRef
|
|
297
|
+
}, settings, {
|
|
298
|
+
className: styles$g.carousel__slider
|
|
299
|
+
}), cards.map((card, index) => /*#__PURE__*/React.createElement("div", {
|
|
300
|
+
key: index,
|
|
301
|
+
className: styles$g.carousel__slideWrapper
|
|
302
|
+
}, /*#__PURE__*/React.createElement("a", {
|
|
303
|
+
href: card.linkUrl,
|
|
304
|
+
className: styles$g.carousel__card,
|
|
305
|
+
"aria-label": `${card.title} - ${card.linkText}`
|
|
306
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
307
|
+
className: styles$g.carousel__cardImageWrapper
|
|
308
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
309
|
+
src: card.imageUrl,
|
|
310
|
+
alt: card.imageAlt,
|
|
311
|
+
className: styles$g.carousel__cardImage
|
|
312
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
313
|
+
className: styles$g.carousel__cardContent
|
|
314
|
+
}, /*#__PURE__*/React.createElement("h3", {
|
|
315
|
+
className: styles$g.carousel__cardTitle
|
|
316
|
+
}, card.title), /*#__PURE__*/React.createElement(Button, {
|
|
317
|
+
variant: "link-text-alt",
|
|
318
|
+
icon: "arrow-right"
|
|
319
|
+
}, card.linkText)))))), /*#__PURE__*/React.createElement("div", {
|
|
320
|
+
className: styles$g.carousel__navigation
|
|
321
|
+
}, !isMobile && showDots && /*#__PURE__*/React.createElement("div", {
|
|
322
|
+
className: styles$g.carousel__dotsList
|
|
323
|
+
}, cards.map((_, index) => /*#__PURE__*/React.createElement("button", {
|
|
324
|
+
key: index,
|
|
325
|
+
type: "button",
|
|
326
|
+
className: classNames(styles$g.carousel__dot, currentSlide === index && styles$g['carousel__dot--active']),
|
|
327
|
+
onClick: () => goToSlide(index),
|
|
328
|
+
"aria-label": `Go to slide ${index + 1}`
|
|
329
|
+
}))), showArrows && /*#__PURE__*/React.createElement("div", {
|
|
330
|
+
className: styles$g.carousel__arrows
|
|
331
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
332
|
+
variant: "carousel-arrow-left",
|
|
333
|
+
onClick: handlePrev,
|
|
334
|
+
ariaLabel: "Previous"
|
|
335
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
336
|
+
variant: "carousel-arrow-right",
|
|
337
|
+
onClick: handleNext,
|
|
338
|
+
ariaLabel: "Next"
|
|
339
|
+
}))));
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
var styles$f = {"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"};
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* External link icon (↗) for footer links that open in new tabs
|
|
346
|
+
*/
|
|
347
|
+
const ExternalLinkIcon = ({
|
|
348
|
+
className,
|
|
349
|
+
size = 15
|
|
350
|
+
}) => /*#__PURE__*/React.createElement("svg", {
|
|
351
|
+
width: size,
|
|
352
|
+
height: size,
|
|
353
|
+
viewBox: "0 0 15 15",
|
|
354
|
+
fill: "none",
|
|
355
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
356
|
+
className: className,
|
|
357
|
+
"aria-hidden": "true"
|
|
358
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
359
|
+
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",
|
|
360
|
+
stroke: "currentColor",
|
|
361
|
+
strokeWidth: "1.5",
|
|
362
|
+
strokeLinecap: "round",
|
|
363
|
+
strokeLinejoin: "round"
|
|
364
|
+
}));
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Atlas Copco Group badge icon (square)
|
|
368
|
+
*/
|
|
369
|
+
const AtlasCopcoIcon = ({
|
|
370
|
+
className,
|
|
371
|
+
size = 14
|
|
372
|
+
}) => /*#__PURE__*/React.createElement("svg", {
|
|
373
|
+
width: size,
|
|
374
|
+
height: size,
|
|
375
|
+
viewBox: "0 0 14 14",
|
|
376
|
+
fill: "none",
|
|
377
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
378
|
+
className: className,
|
|
379
|
+
"aria-hidden": "true"
|
|
380
|
+
}, /*#__PURE__*/React.createElement("rect", {
|
|
381
|
+
x: "0.5",
|
|
382
|
+
y: "0.5",
|
|
383
|
+
width: "13",
|
|
384
|
+
height: "13",
|
|
385
|
+
rx: "1.5",
|
|
386
|
+
fill: "#D9D9D9",
|
|
387
|
+
stroke: "#D9D9D9"
|
|
388
|
+
}));
|
|
389
|
+
|
|
390
|
+
// =============================================================================
|
|
391
|
+
// TYPE DEFINITIONS
|
|
392
|
+
// =============================================================================
|
|
393
|
+
|
|
394
|
+
// =============================================================================
|
|
395
|
+
// SOCIAL ICON COMPONENT
|
|
396
|
+
// =============================================================================
|
|
397
|
+
|
|
398
|
+
const SocialIconComponent = ({
|
|
399
|
+
platform
|
|
400
|
+
}) => {
|
|
401
|
+
const iconMap = {
|
|
402
|
+
facebook: freeBrandsSvgIcons.faFacebookF,
|
|
403
|
+
x: freeBrandsSvgIcons.faXTwitter,
|
|
404
|
+
linkedin: freeBrandsSvgIcons.faLinkedinIn,
|
|
405
|
+
youtube: freeBrandsSvgIcons.faYoutube,
|
|
406
|
+
instagram: freeBrandsSvgIcons.faInstagram
|
|
407
|
+
};
|
|
408
|
+
return /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
409
|
+
icon: iconMap[platform]
|
|
410
|
+
});
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
// =============================================================================
|
|
414
|
+
// FOOTER LINK COMPONENT
|
|
415
|
+
// =============================================================================
|
|
416
|
+
|
|
417
|
+
const FooterLink = ({
|
|
418
|
+
item,
|
|
419
|
+
className,
|
|
420
|
+
variant = 'default'
|
|
421
|
+
}) => {
|
|
422
|
+
const baseClass = variant === 'bottom' ? styles$f.footer__bottomLink : styles$f.footer__link;
|
|
423
|
+
const linkClasses = classNames(baseClass, className);
|
|
424
|
+
const handleClick = e => {
|
|
425
|
+
if (item.onClick) {
|
|
426
|
+
e.preventDefault();
|
|
427
|
+
item.onClick();
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
return /*#__PURE__*/React.createElement("a", _extends({
|
|
431
|
+
href: item.href,
|
|
432
|
+
className: linkClasses,
|
|
433
|
+
onClick: item.onClick ? handleClick : undefined
|
|
434
|
+
}, item.external && {
|
|
435
|
+
target: '_blank',
|
|
436
|
+
rel: 'noopener noreferrer'
|
|
437
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
438
|
+
className: styles$f.footer__linkText
|
|
439
|
+
}, item.label), item.external && /*#__PURE__*/React.createElement("span", {
|
|
440
|
+
className: styles$f.footer__linkIcon
|
|
441
|
+
}, /*#__PURE__*/React.createElement(ExternalLinkIcon, {
|
|
442
|
+
size: 15
|
|
443
|
+
})));
|
|
444
|
+
};
|
|
445
|
+
|
|
446
|
+
// =============================================================================
|
|
447
|
+
// FOOTER LINK GROUP COMPONENT
|
|
448
|
+
// =============================================================================
|
|
449
|
+
|
|
450
|
+
const FooterLinkGroup = ({
|
|
451
|
+
heading,
|
|
452
|
+
links,
|
|
453
|
+
className,
|
|
454
|
+
children
|
|
455
|
+
}) => {
|
|
456
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
457
|
+
className: classNames(styles$f.footer__linkGroup, className)
|
|
458
|
+
}, /*#__PURE__*/React.createElement("h3", {
|
|
459
|
+
className: styles$f.footer__linkHeading
|
|
460
|
+
}, heading), /*#__PURE__*/React.createElement("ul", {
|
|
461
|
+
className: styles$f.footer__linkList
|
|
462
|
+
}, links.map((link, index) => /*#__PURE__*/React.createElement("li", {
|
|
463
|
+
key: index
|
|
464
|
+
}, /*#__PURE__*/React.createElement(FooterLink, {
|
|
465
|
+
item: link
|
|
466
|
+
})))), children);
|
|
467
|
+
};
|
|
468
|
+
|
|
469
|
+
// =============================================================================
|
|
470
|
+
// FOOTER SOCIAL ICONS COMPONENT
|
|
471
|
+
// =============================================================================
|
|
472
|
+
|
|
473
|
+
const FooterSocialIcons = ({
|
|
474
|
+
links,
|
|
475
|
+
className
|
|
476
|
+
}) => {
|
|
477
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
478
|
+
className: classNames(styles$f.footer__socialIcons, className)
|
|
479
|
+
}, links.map((link, index) => /*#__PURE__*/React.createElement("a", {
|
|
480
|
+
key: index,
|
|
481
|
+
href: link.href,
|
|
482
|
+
className: styles$f.footer__socialIcon,
|
|
483
|
+
"aria-label": link.ariaLabel,
|
|
484
|
+
target: "_blank",
|
|
485
|
+
rel: "noopener noreferrer"
|
|
486
|
+
}, /*#__PURE__*/React.createElement(SocialIconComponent, {
|
|
487
|
+
platform: link.platform
|
|
488
|
+
}))));
|
|
489
|
+
};
|
|
490
|
+
|
|
491
|
+
// =============================================================================
|
|
492
|
+
// FOOTER SOCIAL ICON (STANDALONE) COMPONENT
|
|
493
|
+
// =============================================================================
|
|
494
|
+
|
|
495
|
+
const FooterSocialIcon = ({
|
|
496
|
+
platform,
|
|
497
|
+
className
|
|
498
|
+
}) => {
|
|
499
|
+
const iconClasses = classNames(styles$f.footer__socialIcon, className);
|
|
500
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
501
|
+
className: iconClasses
|
|
502
|
+
}, /*#__PURE__*/React.createElement(SocialIconComponent, {
|
|
503
|
+
platform: platform
|
|
504
|
+
}));
|
|
505
|
+
};
|
|
506
|
+
|
|
507
|
+
// =============================================================================
|
|
508
|
+
// FOOTER BOTTOM COMPONENT
|
|
509
|
+
// =============================================================================
|
|
510
|
+
|
|
511
|
+
const FooterBottom = ({
|
|
512
|
+
links,
|
|
513
|
+
copyright,
|
|
514
|
+
countrySelector,
|
|
515
|
+
className
|
|
516
|
+
}) => {
|
|
517
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
518
|
+
className: classNames(styles$f.footer__bottom, className)
|
|
519
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
520
|
+
className: styles$f.footer__bottomLeft
|
|
521
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
522
|
+
className: styles$f.footer__bottomLinks
|
|
523
|
+
}, links.map((link, index) => /*#__PURE__*/React.createElement(FooterLink, {
|
|
524
|
+
key: index,
|
|
525
|
+
item: link,
|
|
526
|
+
variant: "bottom"
|
|
527
|
+
}))), /*#__PURE__*/React.createElement("p", {
|
|
528
|
+
className: styles$f.footer__copyright
|
|
529
|
+
}, copyright)), countrySelector && /*#__PURE__*/React.createElement("a", {
|
|
530
|
+
href: countrySelector.href || '#',
|
|
531
|
+
className: styles$f.footer__countrySelector
|
|
532
|
+
}, countrySelector.showIcon !== false && /*#__PURE__*/React.createElement("span", {
|
|
533
|
+
className: styles$f.footer__countrySelectorIcon
|
|
534
|
+
}, /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
|
|
535
|
+
icon: freeSolidSvgIcons.faGlobe
|
|
536
|
+
})), countrySelector.label));
|
|
537
|
+
};
|
|
538
|
+
|
|
539
|
+
// =============================================================================
|
|
540
|
+
// MAIN FOOTER COMPONENT
|
|
541
|
+
// =============================================================================
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* Footer component with brand identity, navigation links, social icons, and legal information.
|
|
545
|
+
* Supports two layout variants:
|
|
546
|
+
* - desktop: Logo at top, 3-column main content
|
|
547
|
+
* - mobile: Logo at bottom, stacked layout with CTA button
|
|
548
|
+
*/
|
|
549
|
+
const Footer = ({
|
|
550
|
+
variant = 'desktop',
|
|
551
|
+
logo,
|
|
552
|
+
motto,
|
|
553
|
+
atlasCopcoBadge,
|
|
554
|
+
quickLinks,
|
|
555
|
+
quickLinksHeading = 'Quick links',
|
|
556
|
+
contactLinks,
|
|
557
|
+
contactHeading = 'Contact us',
|
|
558
|
+
socialLinks,
|
|
559
|
+
contactFormButton,
|
|
560
|
+
bottomLinks,
|
|
561
|
+
copyright,
|
|
562
|
+
countrySelector,
|
|
563
|
+
className
|
|
564
|
+
}) => {
|
|
565
|
+
const isMobile = variant === 'mobile';
|
|
566
|
+
const footerClasses = classNames(styles$f.footer, isMobile && styles$f['footer--mobile'], className);
|
|
567
|
+
const LogoWrapper = logo.href ? 'a' : 'div';
|
|
568
|
+
const logoProps = logo.href ? {
|
|
569
|
+
href: logo.href,
|
|
570
|
+
className: styles$f.footer__logo
|
|
571
|
+
} : {
|
|
572
|
+
className: styles$f.footer__logo
|
|
573
|
+
};
|
|
574
|
+
|
|
575
|
+
// Logo + Motto + Badge component (used in both layouts)
|
|
576
|
+
const LogoSection = () => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LogoWrapper, logoProps, /*#__PURE__*/React.createElement("img", {
|
|
577
|
+
src: logo.src,
|
|
578
|
+
alt: logo.alt
|
|
579
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
580
|
+
className: styles$f.footer__leftCol
|
|
581
|
+
}, /*#__PURE__*/React.createElement("h2", {
|
|
582
|
+
className: styles$f.footer__motto
|
|
583
|
+
}, motto), atlasCopcoBadge && /*#__PURE__*/React.createElement("div", {
|
|
584
|
+
className: styles$f.footer__badge
|
|
585
|
+
}, atlasCopcoBadge.showIcon !== false && /*#__PURE__*/React.createElement("span", {
|
|
586
|
+
className: styles$f.footer__badgeIcon
|
|
587
|
+
}, /*#__PURE__*/React.createElement(AtlasCopcoIcon, {
|
|
588
|
+
size: 14
|
|
589
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
590
|
+
className: styles$f.footer__badgeText
|
|
591
|
+
}, atlasCopcoBadge.text))));
|
|
592
|
+
|
|
593
|
+
// Mobile layout: Links at top, logo/motto at bottom
|
|
594
|
+
if (isMobile) {
|
|
595
|
+
return /*#__PURE__*/React.createElement("footer", {
|
|
596
|
+
className: footerClasses
|
|
597
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
598
|
+
className: styles$f.footer__container
|
|
599
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
600
|
+
className: styles$f.footer__links
|
|
601
|
+
}, /*#__PURE__*/React.createElement(FooterLinkGroup, {
|
|
602
|
+
heading: quickLinksHeading,
|
|
603
|
+
links: quickLinks
|
|
604
|
+
}), /*#__PURE__*/React.createElement(FooterLinkGroup, {
|
|
605
|
+
heading: contactHeading,
|
|
606
|
+
links: contactLinks
|
|
607
|
+
})), contactFormButton && /*#__PURE__*/React.createElement("div", {
|
|
608
|
+
className: styles$f.footer__cta
|
|
609
|
+
}, /*#__PURE__*/React.createElement("a", {
|
|
610
|
+
href: contactFormButton.href,
|
|
611
|
+
style: {
|
|
612
|
+
textDecoration: 'none',
|
|
613
|
+
width: '100%'
|
|
614
|
+
}
|
|
615
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
616
|
+
variant: "solid-red",
|
|
617
|
+
style: {
|
|
618
|
+
width: '100%'
|
|
619
|
+
}
|
|
620
|
+
}, contactFormButton.label))), socialLinks.length > 0 && /*#__PURE__*/React.createElement(FooterSocialIcons, {
|
|
621
|
+
links: socialLinks
|
|
622
|
+
}), /*#__PURE__*/React.createElement(FooterBottom, {
|
|
623
|
+
links: bottomLinks,
|
|
624
|
+
copyright: copyright,
|
|
625
|
+
countrySelector: countrySelector
|
|
626
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
627
|
+
className: styles$f.footer__brandSection
|
|
628
|
+
}, /*#__PURE__*/React.createElement(LogoSection, null))));
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
// Desktop layout: Logo at top, 3-column main content
|
|
632
|
+
return /*#__PURE__*/React.createElement("footer", {
|
|
633
|
+
className: footerClasses
|
|
634
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
635
|
+
className: styles$f.footer__container
|
|
636
|
+
}, /*#__PURE__*/React.createElement(LogoWrapper, logoProps, /*#__PURE__*/React.createElement("img", {
|
|
637
|
+
src: logo.src,
|
|
638
|
+
alt: logo.alt
|
|
639
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
640
|
+
className: styles$f.footer__main
|
|
641
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
642
|
+
className: styles$f.footer__leftCol
|
|
643
|
+
}, /*#__PURE__*/React.createElement("h2", {
|
|
644
|
+
className: styles$f.footer__motto
|
|
645
|
+
}, motto), atlasCopcoBadge && /*#__PURE__*/React.createElement("div", {
|
|
646
|
+
className: styles$f.footer__badge
|
|
647
|
+
}, atlasCopcoBadge.showIcon !== false && /*#__PURE__*/React.createElement("span", {
|
|
648
|
+
className: styles$f.footer__badgeIcon
|
|
649
|
+
}, /*#__PURE__*/React.createElement(AtlasCopcoIcon, {
|
|
650
|
+
size: 14
|
|
651
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
652
|
+
className: styles$f.footer__badgeText
|
|
653
|
+
}, atlasCopcoBadge.text))), /*#__PURE__*/React.createElement("div", {
|
|
654
|
+
className: styles$f.footer__links
|
|
655
|
+
}, /*#__PURE__*/React.createElement(FooterLinkGroup, {
|
|
656
|
+
heading: quickLinksHeading,
|
|
657
|
+
links: quickLinks
|
|
658
|
+
}), /*#__PURE__*/React.createElement(FooterLinkGroup, {
|
|
659
|
+
heading: contactHeading,
|
|
660
|
+
links: contactLinks
|
|
661
|
+
}, socialLinks.length > 0 && /*#__PURE__*/React.createElement(FooterSocialIcons, {
|
|
662
|
+
links: socialLinks
|
|
663
|
+
})))), /*#__PURE__*/React.createElement(FooterBottom, {
|
|
664
|
+
links: bottomLinks,
|
|
665
|
+
copyright: copyright,
|
|
666
|
+
countrySelector: countrySelector
|
|
667
|
+
})));
|
|
113
668
|
};
|
|
114
669
|
|
|
115
670
|
var styles$e = {"pagination":"Pagination-module__pagination___Kih79","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","navIcon":"Pagination-module__navIcon___-BVJ3","navButton--previous":"Pagination-module__navButton--previous___Cy5TE","navButton--next":"Pagination-module__navButton--next___kTmgK","navButtonDisabled":"Pagination-module__navButtonDisabled___IZK8H","ellipsis":"Pagination-module__ellipsis___iAsGN","ellipsisText":"Pagination-module__ellipsisText___fd6u1"};
|
|
@@ -275,7 +830,7 @@ const Pagination = ({
|
|
|
275
830
|
className,
|
|
276
831
|
ariaLabel = "Pagination"
|
|
277
832
|
}) => {
|
|
278
|
-
const pageNumbers = useMemo(() => generatePageNumbers(currentPage, totalPages, maxVisiblePages), [currentPage, totalPages, maxVisiblePages]);
|
|
833
|
+
const pageNumbers = React.useMemo(() => generatePageNumbers(currentPage, totalPages, maxVisiblePages), [currentPage, totalPages, maxVisiblePages]);
|
|
279
834
|
const handlePageChange = page => {
|
|
280
835
|
if (page >= 1 && page <= totalPages && page !== currentPage) {
|
|
281
836
|
onPageChange(page);
|
|
@@ -347,15 +902,15 @@ const Image = ({
|
|
|
347
902
|
srcSet,
|
|
348
903
|
sizes
|
|
349
904
|
}) => {
|
|
350
|
-
const [isLoading, setIsLoading] = useState(true);
|
|
351
|
-
const [hasError, setHasError] = useState(false);
|
|
352
|
-
const [currentSrc, setCurrentSrc] = useState(src);
|
|
353
|
-
const handleLoad = useCallback(() => {
|
|
905
|
+
const [isLoading, setIsLoading] = React.useState(true);
|
|
906
|
+
const [hasError, setHasError] = React.useState(false);
|
|
907
|
+
const [currentSrc, setCurrentSrc] = React.useState(src);
|
|
908
|
+
const handleLoad = React.useCallback(() => {
|
|
354
909
|
setIsLoading(false);
|
|
355
910
|
setHasError(false);
|
|
356
911
|
onLoad?.();
|
|
357
912
|
}, [onLoad]);
|
|
358
|
-
const handleError = useCallback(() => {
|
|
913
|
+
const handleError = React.useCallback(() => {
|
|
359
914
|
setIsLoading(false);
|
|
360
915
|
setHasError(true);
|
|
361
916
|
|
|
@@ -534,7 +1089,7 @@ const ProductCardDetails = ({
|
|
|
534
1089
|
};
|
|
535
1090
|
return /*#__PURE__*/React.createElement("div", {
|
|
536
1091
|
className: styles$b.productDetails
|
|
537
|
-
}, /*#__PURE__*/React.createElement(ProductDetailsCard, {
|
|
1092
|
+
}, /*#__PURE__*/React.createElement(edwardsvacuumDesignSystem.ProductDetailsCard, {
|
|
538
1093
|
className: `${className}`,
|
|
539
1094
|
title: title,
|
|
540
1095
|
imageUrl: imageUrl,
|
|
@@ -613,7 +1168,7 @@ const AlgoliaDynamicSearchLeybold = props => {
|
|
|
613
1168
|
ProductCard: ProductCardAdapter,
|
|
614
1169
|
ProductDetailsCard: ProductCardDetailsAdapter
|
|
615
1170
|
};
|
|
616
|
-
return /*#__PURE__*/React.createElement(AlgoliaDynamicSearchRaw, _extends({}, props, {
|
|
1171
|
+
return /*#__PURE__*/React.createElement(edwardsvacuumDesignSystem.AlgoliaDynamicSearchRaw, _extends({}, props, {
|
|
617
1172
|
innerComponents: innerComponents
|
|
618
1173
|
}));
|
|
619
1174
|
};
|
|
@@ -666,7 +1221,7 @@ const QrFormButtonAdapter = ({
|
|
|
666
1221
|
const QrFormLeybold = props => {
|
|
667
1222
|
return /*#__PURE__*/React.createElement("div", {
|
|
668
1223
|
className: "qr-journey-form-wrapper"
|
|
669
|
-
}, /*#__PURE__*/React.createElement(QrForm, _extends({}, props, {
|
|
1224
|
+
}, /*#__PURE__*/React.createElement(edwardsvacuumDesignSystem.QrForm, _extends({}, props, {
|
|
670
1225
|
ButtonComponent: QrFormButtonAdapter
|
|
671
1226
|
})));
|
|
672
1227
|
};
|
|
@@ -712,9 +1267,9 @@ const SearchModal = ({
|
|
|
712
1267
|
children,
|
|
713
1268
|
className = ''
|
|
714
1269
|
}) => {
|
|
715
|
-
const modalRef = useRef(null);
|
|
716
|
-
const previouslyFocusedElement = useRef(null);
|
|
717
|
-
useEffect(() => {
|
|
1270
|
+
const modalRef = React.useRef(null);
|
|
1271
|
+
const previouslyFocusedElement = React.useRef(null);
|
|
1272
|
+
React.useEffect(() => {
|
|
718
1273
|
if (isOpen) {
|
|
719
1274
|
// Store the previously focused element
|
|
720
1275
|
previouslyFocusedElement.current = document.activeElement;
|
|
@@ -739,7 +1294,7 @@ const SearchModal = ({
|
|
|
739
1294
|
document.body.style.overflow = '';
|
|
740
1295
|
};
|
|
741
1296
|
}, [isOpen]);
|
|
742
|
-
useEffect(() => {
|
|
1297
|
+
React.useEffect(() => {
|
|
743
1298
|
const handleEscape = event => {
|
|
744
1299
|
if (event.key === 'Escape' && isOpen) {
|
|
745
1300
|
onClose();
|
|
@@ -750,7 +1305,7 @@ const SearchModal = ({
|
|
|
750
1305
|
}, [isOpen, onClose]);
|
|
751
1306
|
|
|
752
1307
|
// Focus trap implementation
|
|
753
|
-
useEffect(() => {
|
|
1308
|
+
React.useEffect(() => {
|
|
754
1309
|
if (!isOpen || !modalRef.current) return;
|
|
755
1310
|
const modal = modalRef.current;
|
|
756
1311
|
const focusableElements = modal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
|
|
@@ -1167,10 +1722,10 @@ const FilterAccordion = ({
|
|
|
1167
1722
|
onValueToggle,
|
|
1168
1723
|
className
|
|
1169
1724
|
}) => {
|
|
1170
|
-
const [searchQuery, setSearchQuery] = useState("");
|
|
1725
|
+
const [searchQuery, setSearchQuery] = React.useState("");
|
|
1171
1726
|
|
|
1172
1727
|
// Filter facet values based on search query
|
|
1173
|
-
const filteredValues = useMemo(() => {
|
|
1728
|
+
const filteredValues = React.useMemo(() => {
|
|
1174
1729
|
if (!searchQuery.trim()) {
|
|
1175
1730
|
return facet.values;
|
|
1176
1731
|
}
|
|
@@ -1293,7 +1848,7 @@ const AppliedFilters = ({
|
|
|
1293
1848
|
className
|
|
1294
1849
|
}) => {
|
|
1295
1850
|
// Extract all refined (selected) filters
|
|
1296
|
-
const appliedFilters = useMemo(() => {
|
|
1851
|
+
const appliedFilters = React.useMemo(() => {
|
|
1297
1852
|
const filters = [];
|
|
1298
1853
|
facets.forEach(facet => {
|
|
1299
1854
|
facet.values.forEach(value => {
|
|
@@ -1358,7 +1913,7 @@ const FiltersPanel = ({
|
|
|
1358
1913
|
className
|
|
1359
1914
|
}) => {
|
|
1360
1915
|
// Track which accordions are expanded
|
|
1361
|
-
const [expandedAccordions, setExpandedAccordions] = useState(() => {
|
|
1916
|
+
const [expandedAccordions, setExpandedAccordions] = React.useState(() => {
|
|
1362
1917
|
// Initialize with default expanded facets
|
|
1363
1918
|
const expanded = new Set();
|
|
1364
1919
|
facets.forEach(facet => {
|
|
@@ -1368,7 +1923,7 @@ const FiltersPanel = ({
|
|
|
1368
1923
|
});
|
|
1369
1924
|
return expanded;
|
|
1370
1925
|
});
|
|
1371
|
-
const handleAccordionToggle = useCallback(facetId => {
|
|
1926
|
+
const handleAccordionToggle = React.useCallback(facetId => {
|
|
1372
1927
|
setExpandedAccordions(prev => {
|
|
1373
1928
|
const next = new Set(prev);
|
|
1374
1929
|
if (next.has(facetId)) {
|
|
@@ -1379,13 +1934,13 @@ const FiltersPanel = ({
|
|
|
1379
1934
|
return next;
|
|
1380
1935
|
});
|
|
1381
1936
|
}, []);
|
|
1382
|
-
const handleValueToggle = useCallback((attribute, value) => {
|
|
1937
|
+
const handleValueToggle = React.useCallback((attribute, value) => {
|
|
1383
1938
|
onFacetToggle(attribute, value);
|
|
1384
1939
|
}, [onFacetToggle]);
|
|
1385
|
-
const handleRemoveFilter = useCallback((attribute, value) => {
|
|
1940
|
+
const handleRemoveFilter = React.useCallback((attribute, value) => {
|
|
1386
1941
|
onFacetToggle(attribute, value);
|
|
1387
1942
|
}, [onFacetToggle]);
|
|
1388
|
-
const handleClearAll = useCallback(() => {
|
|
1943
|
+
const handleClearAll = React.useCallback(() => {
|
|
1389
1944
|
// Remove all refined facets
|
|
1390
1945
|
facets.forEach(facet => {
|
|
1391
1946
|
facet.values.forEach(value => {
|
|
@@ -1773,12 +2328,26 @@ const SearchTriggerButton = ({
|
|
|
1773
2328
|
}, label));
|
|
1774
2329
|
};
|
|
1775
2330
|
|
|
1776
|
-
|
|
1777
|
-
|
|
2331
|
+
exports.AlgoliaDynamicSearch = AlgoliaDynamicSearchLeybold;
|
|
2332
|
+
exports.AlgoliaDynamicSearchLeybold = AlgoliaDynamicSearchLeybold;
|
|
2333
|
+
exports.AppliedFilterTag = AppliedFilterTag;
|
|
2334
|
+
exports.AppliedFilters = AppliedFilters;
|
|
2335
|
+
exports.Button = Button;
|
|
2336
|
+
exports.Carousel = Carousel;
|
|
2337
|
+
exports.ContentCardHorizontal = ContentCardHorizontal;
|
|
2338
|
+
exports.FederatedInstantResultsLayout = FederatedInstantResultsLayout;
|
|
2339
|
+
exports.FederatedResultsView = FederatedResultsView;
|
|
2340
|
+
exports.FederatedSearchExperience = FederatedSearchExperience;
|
|
1778
2341
|
exports.FilterAccordion = FilterAccordion;
|
|
1779
2342
|
exports.FilterItem = FilterItem;
|
|
1780
2343
|
exports.FilterSearch = FilterSearch;
|
|
1781
2344
|
exports.FiltersPanel = FiltersPanel;
|
|
2345
|
+
exports.Footer = Footer;
|
|
2346
|
+
exports.FooterBottom = FooterBottom;
|
|
2347
|
+
exports.FooterLink = FooterLink;
|
|
2348
|
+
exports.FooterLinkGroup = FooterLinkGroup;
|
|
2349
|
+
exports.FooterSocialIcon = FooterSocialIcon;
|
|
2350
|
+
exports.FooterSocialIcons = FooterSocialIcons;
|
|
1782
2351
|
exports.ModalCloseButton = ModalCloseButton;
|
|
1783
2352
|
exports.Pagination = Pagination;
|
|
1784
2353
|
exports.PaginationButton = PaginationButton;
|