@asante-org/leybold-design-system 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +163 -163
  2. package/dist/app/layout.d.ts +9 -0
  3. package/dist/app/page.d.ts +2 -0
  4. package/dist/assets/.gitkeep +2 -2
  5. package/dist/assets/desktop-layout-alt.svg +27 -27
  6. package/dist/assets/desktop-layout.svg +29 -29
  7. package/dist/assets/globe.svg +7 -7
  8. package/dist/assets/leybold-footer-logo.svg +19 -19
  9. package/dist/assets/leybold-white.svg +18 -18
  10. package/dist/assets/list-product-overlay-tip-active.svg +3 -3
  11. package/dist/assets/list-product-overlay-tip.svg +3 -3
  12. package/dist/assets/logo-example.svg +9 -9
  13. package/dist/assets/logo.svg +19 -19
  14. package/dist/assets/phone-layout.svg +14 -14
  15. package/dist/assets/red-tip.svg +10 -10
  16. package/dist/assets/tablet-layout.svg +28 -28
  17. package/dist/index.css +88 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.esm.css +88 -0
  20. package/dist/index.esm.js +155 -155
  21. package/dist/index.esm.js.map +1 -1
  22. package/dist/index.js +247 -289
  23. package/dist/index.js.map +1 -1
  24. package/dist/src/experience/qr-form-journey/QrFormJourney.d.ts +1 -0
  25. package/dist/stories/components/Algolia-dynamic-search/algolia-dynamic-search.d.ts +4 -0
  26. package/dist/stories/components/Algolia-dynamic-search/algolia-dynamic-search.stories.d.ts +7 -0
  27. package/dist/stories/components/Button/Button.d.ts +35 -0
  28. package/dist/stories/components/Button/Button.stories.d.ts +15 -0
  29. package/dist/stories/components/Button/index.d.ts +2 -0
  30. package/dist/stories/components/QRFormJourney/Qr-form/Qr-form.d.ts +2 -0
  31. package/dist/stories/components/QRFormJourney/Qr-form/Qr-form.stories.d.ts +7 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/dist/utils/styles/index.d.ts +1 -0
  34. package/package.json +115 -115
package/dist/index.css ADDED
@@ -0,0 +1,88 @@
1
+ .Button-module__button___yfSXe {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
6
+ font-weight: 600;
7
+ line-height: 1.5;
8
+ text-align: center;
9
+ text-decoration: none;
10
+ vertical-align: middle;
11
+ cursor: pointer;
12
+ -webkit-user-select: none;
13
+ -moz-user-select: none;
14
+ user-select: none;
15
+ border: 2px solid transparent;
16
+ border-radius: 4px;
17
+ transition: all 0.2s ease-in-out;
18
+ }
19
+ .Button-module__button___yfSXe:focus-visible {
20
+ outline: 2px solid #0066cc;
21
+ outline-offset: 2px;
22
+ }
23
+ .Button-module__button--primary___XhVfu {
24
+ color: white;
25
+ background-color: #0066cc;
26
+ border-color: #0066cc;
27
+ }
28
+ .Button-module__button--primary___XhVfu:hover:not(.Button-module__button--disabled___zC2nI) {
29
+ background-color: rgb(0, 76.5, 153);
30
+ border-color: rgb(0, 76.5, 153);
31
+ }
32
+ .Button-module__button--primary___XhVfu:active:not(.Button-module__button--disabled___zC2nI) {
33
+ background-color: rgb(0, 63.75, 127.5);
34
+ border-color: rgb(0, 63.75, 127.5);
35
+ }
36
+ .Button-module__button--secondary___iFz5O {
37
+ color: white;
38
+ background-color: #6c757d;
39
+ border-color: #6c757d;
40
+ }
41
+ .Button-module__button--secondary___iFz5O:hover:not(.Button-module__button--disabled___zC2nI) {
42
+ background-color: rgb(84.3605150215, 91.3905579399, 97.6394849785);
43
+ border-color: rgb(84.3605150215, 91.3905579399, 97.6394849785);
44
+ }
45
+ .Button-module__button--secondary___iFz5O:active:not(.Button-module__button--disabled___zC2nI) {
46
+ background-color: rgb(72.5407725322, 78.5858369099, 83.9592274678);
47
+ border-color: rgb(72.5407725322, 78.5858369099, 83.9592274678);
48
+ }
49
+ .Button-module__button--outline___G4qIX {
50
+ color: #0066cc;
51
+ background-color: transparent;
52
+ border-color: #0066cc;
53
+ }
54
+ .Button-module__button--outline___G4qIX:hover:not(.Button-module__button--disabled___zC2nI) {
55
+ color: white;
56
+ background-color: #0066cc;
57
+ }
58
+ .Button-module__button--outline___G4qIX:active:not(.Button-module__button--disabled___zC2nI) {
59
+ background-color: rgb(0, 76.5, 153);
60
+ border-color: rgb(0, 76.5, 153);
61
+ }
62
+ .Button-module__button--text___6Kh5s {
63
+ color: #0066cc;
64
+ background-color: transparent;
65
+ border-color: transparent;
66
+ }
67
+ .Button-module__button--text___6Kh5s:hover:not(.Button-module__button--disabled___zC2nI) {
68
+ background-color: rgba(0, 102, 204, 0.1);
69
+ }
70
+ .Button-module__button--text___6Kh5s:active:not(.Button-module__button--disabled___zC2nI) {
71
+ background-color: rgba(0, 102, 204, 0.2);
72
+ }
73
+ .Button-module__button--small___T4-Pw {
74
+ padding: 0.5rem 1rem;
75
+ font-size: 0.875rem;
76
+ }
77
+ .Button-module__button--medium___EwhUs {
78
+ padding: 1rem 1.5rem;
79
+ font-size: 1rem;
80
+ }
81
+ .Button-module__button--large___uuXbF {
82
+ padding: 1.5rem 2rem;
83
+ font-size: 1.125rem;
84
+ }
85
+ .Button-module__button--disabled___zC2nI {
86
+ opacity: 0.5;
87
+ cursor: not-allowed;
88
+ }
@@ -0,0 +1,3 @@
1
+ export { Button } from './stories/components/Button';
2
+ export type { ButtonProps } from './stories/components/Button';
3
+ export * from './utils/styles';
@@ -0,0 +1,88 @@
1
+ .Button-module__button___yfSXe {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
6
+ font-weight: 600;
7
+ line-height: 1.5;
8
+ text-align: center;
9
+ text-decoration: none;
10
+ vertical-align: middle;
11
+ cursor: pointer;
12
+ -webkit-user-select: none;
13
+ -moz-user-select: none;
14
+ user-select: none;
15
+ border: 2px solid transparent;
16
+ border-radius: 4px;
17
+ transition: all 0.2s ease-in-out;
18
+ }
19
+ .Button-module__button___yfSXe:focus-visible {
20
+ outline: 2px solid #0066cc;
21
+ outline-offset: 2px;
22
+ }
23
+ .Button-module__button--primary___XhVfu {
24
+ color: white;
25
+ background-color: #0066cc;
26
+ border-color: #0066cc;
27
+ }
28
+ .Button-module__button--primary___XhVfu:hover:not(.Button-module__button--disabled___zC2nI) {
29
+ background-color: rgb(0, 76.5, 153);
30
+ border-color: rgb(0, 76.5, 153);
31
+ }
32
+ .Button-module__button--primary___XhVfu:active:not(.Button-module__button--disabled___zC2nI) {
33
+ background-color: rgb(0, 63.75, 127.5);
34
+ border-color: rgb(0, 63.75, 127.5);
35
+ }
36
+ .Button-module__button--secondary___iFz5O {
37
+ color: white;
38
+ background-color: #6c757d;
39
+ border-color: #6c757d;
40
+ }
41
+ .Button-module__button--secondary___iFz5O:hover:not(.Button-module__button--disabled___zC2nI) {
42
+ background-color: rgb(84.3605150215, 91.3905579399, 97.6394849785);
43
+ border-color: rgb(84.3605150215, 91.3905579399, 97.6394849785);
44
+ }
45
+ .Button-module__button--secondary___iFz5O:active:not(.Button-module__button--disabled___zC2nI) {
46
+ background-color: rgb(72.5407725322, 78.5858369099, 83.9592274678);
47
+ border-color: rgb(72.5407725322, 78.5858369099, 83.9592274678);
48
+ }
49
+ .Button-module__button--outline___G4qIX {
50
+ color: #0066cc;
51
+ background-color: transparent;
52
+ border-color: #0066cc;
53
+ }
54
+ .Button-module__button--outline___G4qIX:hover:not(.Button-module__button--disabled___zC2nI) {
55
+ color: white;
56
+ background-color: #0066cc;
57
+ }
58
+ .Button-module__button--outline___G4qIX:active:not(.Button-module__button--disabled___zC2nI) {
59
+ background-color: rgb(0, 76.5, 153);
60
+ border-color: rgb(0, 76.5, 153);
61
+ }
62
+ .Button-module__button--text___6Kh5s {
63
+ color: #0066cc;
64
+ background-color: transparent;
65
+ border-color: transparent;
66
+ }
67
+ .Button-module__button--text___6Kh5s:hover:not(.Button-module__button--disabled___zC2nI) {
68
+ background-color: rgba(0, 102, 204, 0.1);
69
+ }
70
+ .Button-module__button--text___6Kh5s:active:not(.Button-module__button--disabled___zC2nI) {
71
+ background-color: rgba(0, 102, 204, 0.2);
72
+ }
73
+ .Button-module__button--small___T4-Pw {
74
+ padding: 0.5rem 1rem;
75
+ font-size: 0.875rem;
76
+ }
77
+ .Button-module__button--medium___EwhUs {
78
+ padding: 1rem 1.5rem;
79
+ font-size: 1rem;
80
+ }
81
+ .Button-module__button--large___uuXbF {
82
+ padding: 1.5rem 2rem;
83
+ font-size: 1.125rem;
84
+ }
85
+ .Button-module__button--disabled___zC2nI {
86
+ opacity: 0.5;
87
+ cursor: not-allowed;
88
+ }
package/dist/index.esm.js CHANGED
@@ -92,20 +92,20 @@ function requireClassnames() {
92
92
  var classnamesExports = requireClassnames();
93
93
  var classNames = /*@__PURE__*/getDefaultExportFromCjs(classnamesExports);
94
94
 
95
- /**
96
- * Button variant types
95
+ /**
96
+ * Button variant types
97
97
  */
98
98
 
99
- /**
100
- * Icon types for button
99
+ /**
100
+ * Icon types for button
101
101
  */
102
102
 
103
- /**
104
- * Icon position
103
+ /**
104
+ * Icon position
105
105
  */
106
106
 
107
- /**
108
- * Get the icon component based on icon type
107
+ /**
108
+ * Get the icon component based on icon type
109
109
  */
110
110
  const getIcon = icon => {
111
111
  switch (icon) {
@@ -130,8 +130,8 @@ const getIcon = icon => {
130
130
  }
131
131
  };
132
132
 
133
- /**
134
- * Get default icon for certain variants
133
+ /**
134
+ * Get default icon for certain variants
135
135
  */
136
136
  const getDefaultIcon = variant => {
137
137
  switch (variant) {
@@ -151,8 +151,8 @@ const getDefaultIcon = variant => {
151
151
  }
152
152
  };
153
153
 
154
- /**
155
- * Map alias variants to their actual CSS class variants
154
+ /**
155
+ * Map alias variants to their actual CSS class variants
156
156
  */
157
157
  const mapVariantToClass = variant => {
158
158
  switch (variant) {
@@ -163,8 +163,8 @@ const mapVariantToClass = variant => {
163
163
  }
164
164
  };
165
165
 
166
- /**
167
- * Primary UI component for user interaction
166
+ /**
167
+ * Primary UI component for user interaction
168
168
  */
169
169
  const Button = ({
170
170
  children,
@@ -390,8 +390,8 @@ const CarouselCard = ({
390
390
 
391
391
  var styles$j = {"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"};
392
392
 
393
- /**
394
- * External link icon (↗) for footer links that open in new tabs
393
+ /**
394
+ * External link icon (↗) for footer links that open in new tabs
395
395
  */
396
396
  const ExternalLinkIcon = ({
397
397
  className,
@@ -412,8 +412,8 @@ const ExternalLinkIcon = ({
412
412
  strokeLinejoin: "round"
413
413
  }));
414
414
 
415
- /**
416
- * Atlas Copco Group badge icon (square)
415
+ /**
416
+ * Atlas Copco Group badge icon (square)
417
417
  */
418
418
  const AtlasCopcoIcon = ({
419
419
  className,
@@ -589,11 +589,11 @@ const FooterBottom = ({
589
589
  // MAIN FOOTER COMPONENT
590
590
  // =============================================================================
591
591
 
592
- /**
593
- * Footer component with brand identity, navigation links, social icons, and legal information.
594
- * Supports two layout variants:
595
- * - desktop: Logo at top, 3-column main content
596
- * - mobile: Logo at bottom, stacked layout with CTA button
592
+ /**
593
+ * Footer component with brand identity, navigation links, social icons, and legal information.
594
+ * Supports two layout variants:
595
+ * - desktop: Logo at top, 3-column main content
596
+ * - mobile: Logo at bottom, stacked layout with CTA button
597
597
  */
598
598
  const Footer = ({
599
599
  variant = 'desktop',
@@ -793,8 +793,8 @@ const PaginationEllipsis = ({
793
793
  }, "..."));
794
794
  };
795
795
 
796
- /**
797
- * Generate page numbers to display with ellipsis logic
796
+ /**
797
+ * Generate page numbers to display with ellipsis logic
798
798
  */
799
799
  const generatePageNumbers = (currentPage, totalPages, maxVisiblePages) => {
800
800
  if (totalPages <= maxVisiblePages) {
@@ -1939,8 +1939,8 @@ const faXmark = {
1939
1939
  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"]
1940
1940
  };
1941
1941
 
1942
- /**
1943
- * FilterSearch - Search input for filtering facet values
1942
+ /**
1943
+ * FilterSearch - Search input for filtering facet values
1944
1944
  */
1945
1945
  const FilterSearch = ({
1946
1946
  value,
@@ -1988,8 +1988,8 @@ const CheckIcon = () => /*#__PURE__*/React.createElement("svg", {
1988
1988
  fill: "#E2001A"
1989
1989
  }));
1990
1990
 
1991
- /**
1992
- * FilterItem - Individual facet item with checkbox and count
1991
+ /**
1992
+ * FilterItem - Individual facet item with checkbox and count
1993
1993
  */
1994
1994
  const FilterItem = ({
1995
1995
  value,
@@ -2064,8 +2064,8 @@ const FilterItem = ({
2064
2064
  }, "(", value.count, ")"));
2065
2065
  };
2066
2066
 
2067
- /**
2068
- * FilterAccordion - Collapsible facet section with optional search
2067
+ /**
2068
+ * FilterAccordion - Collapsible facet section with optional search
2069
2069
  */
2070
2070
  const FilterAccordion = ({
2071
2071
  facet,
@@ -2149,8 +2149,8 @@ const FilterAccordion = ({
2149
2149
  }, "No results found"))));
2150
2150
  };
2151
2151
 
2152
- /**
2153
- * AppliedFilterTag - Individual removable filter tag/chip
2152
+ /**
2153
+ * AppliedFilterTag - Individual removable filter tag/chip
2154
2154
  */
2155
2155
  const AppliedFilterTag = ({
2156
2156
  attribute,
@@ -2194,8 +2194,8 @@ const AppliedFilterTag = ({
2194
2194
  }))));
2195
2195
  };
2196
2196
 
2197
- /**
2198
- * AppliedFilters - Shows all active filters as removable tags
2197
+ /**
2198
+ * AppliedFilters - Shows all active filters as removable tags
2199
2199
  */
2200
2200
  const AppliedFilters = ({
2201
2201
  facets,
@@ -2240,12 +2240,12 @@ const AppliedFilters = ({
2240
2240
  }))));
2241
2241
  };
2242
2242
 
2243
- /**
2244
- * FiltersPanel - Main container for all filters
2245
- *
2246
- * Fully controlled component - renders based on facets prop.
2247
- * When facets change (e.g., after API refetch), component re-renders with new data.
2248
- * Accordion expansion state persists across refetches, with new facets respecting defaultExpanded.
2243
+ /**
2244
+ * FiltersPanel - Main container for all filters
2245
+ *
2246
+ * Fully controlled component - renders based on facets prop.
2247
+ * When facets change (e.g., after API refetch), component re-renders with new data.
2248
+ * Accordion expansion state persists across refetches, with new facets respecting defaultExpanded.
2249
2249
  */
2250
2250
  const FiltersPanel = ({
2251
2251
  facets,
@@ -2354,23 +2354,23 @@ const isPlaceholderImg = url => {
2354
2354
  return !!url && url.includes(PLACEHOLDER_INDICATOR);
2355
2355
  };
2356
2356
 
2357
- /**
2358
- * ProductCardVertical - Vertical product card for grid layouts
2359
- *
2360
- * Used in full results view with 4-column grid (desktop) or 2-column grid (mobile).
2361
- * Figma spec: Default (no shadow) → Hover (shadow + grey button) → Focus (border + shadow)
2362
- *
2363
- * @example
2364
- * ```tsx
2365
- * <ProductCardVertical
2366
- * title="TURBOVAC i - High vacuum turbopump"
2367
- * url="/products/turbovac-i"
2368
- * imageUrl="/assets/search-product.png"
2369
- * productId="21312VISH"
2370
- * description="Premium high-performance turbomolecular pump"
2371
- * buttonLabel="BUY ONLINE"
2372
- * />
2373
- * ```
2357
+ /**
2358
+ * ProductCardVertical - Vertical product card for grid layouts
2359
+ *
2360
+ * Used in full results view with 4-column grid (desktop) or 2-column grid (mobile).
2361
+ * Figma spec: Default (no shadow) → Hover (shadow + grey button) → Focus (border + shadow)
2362
+ *
2363
+ * @example
2364
+ * ```tsx
2365
+ * <ProductCardVertical
2366
+ * title="TURBOVAC i - High vacuum turbopump"
2367
+ * url="/products/turbovac-i"
2368
+ * imageUrl="/assets/search-product.png"
2369
+ * productId="21312VISH"
2370
+ * description="Premium high-performance turbomolecular pump"
2371
+ * buttonLabel="BUY ONLINE"
2372
+ * />
2373
+ * ```
2374
2374
  */
2375
2375
  const ProductCardVertical = ({
2376
2376
  id,
@@ -2528,32 +2528,32 @@ const ResultsList = ({
2528
2528
 
2529
2529
  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"};
2530
2530
 
2531
- /**
2532
- * TabButton - Tab navigation component with result counts
2533
- *
2534
- * Supports two layout variants:
2535
- * - Desktop: Background colours, top red underline when active, rounded corners
2536
- * - Mobile: Text-only with bottom border underline when active
2537
- *
2538
- * @example
2539
- * ```tsx
2540
- * // Desktop variant
2541
- * <TabButton
2542
- * label="WEB SHOP RESULTS"
2543
- * count={542}
2544
- * isActive={true}
2545
- * onClick={() => setActiveTab('products')}
2546
- * variant="desktop"
2547
- * />
2548
- *
2549
- * // Mobile variant
2550
- * <TabButton
2551
- * label="WEB SHOP"
2552
- * isActive={false}
2553
- * onClick={() => setActiveTab('content')}
2554
- * variant="mobile"
2555
- * />
2556
- * ```
2531
+ /**
2532
+ * TabButton - Tab navigation component with result counts
2533
+ *
2534
+ * Supports two layout variants:
2535
+ * - Desktop: Background colours, top red underline when active, rounded corners
2536
+ * - Mobile: Text-only with bottom border underline when active
2537
+ *
2538
+ * @example
2539
+ * ```tsx
2540
+ * // Desktop variant
2541
+ * <TabButton
2542
+ * label="WEB SHOP RESULTS"
2543
+ * count={542}
2544
+ * isActive={true}
2545
+ * onClick={() => setActiveTab('products')}
2546
+ * variant="desktop"
2547
+ * />
2548
+ *
2549
+ * // Mobile variant
2550
+ * <TabButton
2551
+ * label="WEB SHOP"
2552
+ * isActive={false}
2553
+ * onClick={() => setActiveTab('content')}
2554
+ * variant="mobile"
2555
+ * />
2556
+ * ```
2557
2557
  */
2558
2558
  const TabButton = ({
2559
2559
  label,
@@ -2602,23 +2602,23 @@ const AssistanceIcon = props => {
2602
2602
 
2603
2603
  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"};
2604
2604
 
2605
- /**
2606
- * AssistanceBanner - Help widget for search sidebar
2607
- *
2608
- * Displays a call-to-action for users who need assistance finding products.
2609
- * Features chat icon, heading, description, and contact link with chevron.
2610
- *
2611
- * Desktop only - hidden on mobile to save space.
2612
- *
2613
- * @example
2614
- * ```tsx
2615
- * <AssistanceBanner
2616
- * title="Need Assistance?"
2617
- * description="Can't find what you're looking for? Our team is ready to help."
2618
- * linkText="Contact support"
2619
- * linkUrl="/contact"
2620
- * />
2621
- * ```
2605
+ /**
2606
+ * AssistanceBanner - Help widget for search sidebar
2607
+ *
2608
+ * Displays a call-to-action for users who need assistance finding products.
2609
+ * Features chat icon, heading, description, and contact link with chevron.
2610
+ *
2611
+ * Desktop only - hidden on mobile to save space.
2612
+ *
2613
+ * @example
2614
+ * ```tsx
2615
+ * <AssistanceBanner
2616
+ * title="Need Assistance?"
2617
+ * description="Can't find what you're looking for? Our team is ready to help."
2618
+ * linkText="Contact support"
2619
+ * linkUrl="/contact"
2620
+ * />
2621
+ * ```
2622
2622
  */
2623
2623
  const AssistanceBanner = ({
2624
2624
  title = 'Need Assistance?',
@@ -2671,25 +2671,25 @@ const OVERLAY_FADE_MS = 300;
2671
2671
  const PANEL_SLIDE_MS = 300;
2672
2672
  const CLOSE_ANIMATION_BUFFER_MS = 50;
2673
2673
 
2674
- /**
2675
- * FilterDrawer - Mobile slide-in filter panel
2676
- *
2677
- * Slides in from the right with a dark overlay. Used on mobile to show filters
2678
- * when screen space is limited. Includes focus trap, escape key handling, and
2679
- * body scroll prevention.
2680
- *
2681
- * Desktop: Hidden (filters shown in sidebar)
2682
- * Mobile: Slide-in drawer overlay
2683
- *
2684
- * @example
2685
- * ```tsx
2686
- * <FilterDrawer
2687
- * isOpen={isFilterDrawerOpen}
2688
- * onClose={() => setIsFilterDrawerOpen(false)}
2689
- * >
2690
- * <FiltersPanel facets={facets} onFacetToggle={handleToggle} />
2691
- * </FilterDrawer>
2692
- * ```
2674
+ /**
2675
+ * FilterDrawer - Mobile slide-in filter panel
2676
+ *
2677
+ * Slides in from the right with a dark overlay. Used on mobile to show filters
2678
+ * when screen space is limited. Includes focus trap, escape key handling, and
2679
+ * body scroll prevention.
2680
+ *
2681
+ * Desktop: Hidden (filters shown in sidebar)
2682
+ * Mobile: Slide-in drawer overlay
2683
+ *
2684
+ * @example
2685
+ * ```tsx
2686
+ * <FilterDrawer
2687
+ * isOpen={isFilterDrawerOpen}
2688
+ * onClose={() => setIsFilterDrawerOpen(false)}
2689
+ * >
2690
+ * <FiltersPanel facets={facets} onFacetToggle={handleToggle} />
2691
+ * </FilterDrawer>
2692
+ * ```
2693
2693
  */
2694
2694
  const FilterDrawer = ({
2695
2695
  isOpen,
@@ -3006,41 +3006,41 @@ const FederatedResultsView = ({
3006
3006
 
3007
3007
  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"};
3008
3008
 
3009
- /**
3010
- * FederatedSearchExperience - Top-level search experience component
3011
- *
3012
- * This component orchestrates the entire federated search experience, including:
3013
- * - Modal container
3014
- * - Search input
3015
- * - Instant results (2-column layout)
3016
- * - Full results view with tabs and filters
3017
- *
3018
- * The component is fully controlled and does not contain any data fetching logic.
3019
- * All data and callbacks are passed in via props, making it suitable for use in AEM
3020
- * where a controller layer will handle Algolia integration.
3021
- *
3022
- * @example
3023
- * ```tsx
3024
- * <FederatedSearchExperience
3025
- * isOpen={isOpen}
3026
- * onOpen={handleOpen}
3027
- * onClose={handleClose}
3028
- * query={query}
3029
- * onQueryChange={setQuery}
3030
- * onSearchSubmit={handleSubmit}
3031
- * products={products}
3032
- * contents={contents}
3033
- * isLoadingProducts={isLoadingProducts}
3034
- * isLoadingContents={isLoadingContents}
3035
- * onSeeAllProducts={handleSeeAllProducts}
3036
- * onSeeAllContents={handleSeeAllContents}
3037
- * onSeeAllCombined={handleSeeAllCombined}
3038
- * activeView={activeView}
3039
- * onChangeView={setActiveView}
3040
- * activeTab={activeTab}
3041
- * onTabChange={setActiveTab}
3042
- * />
3043
- * ```
3009
+ /**
3010
+ * FederatedSearchExperience - Top-level search experience component
3011
+ *
3012
+ * This component orchestrates the entire federated search experience, including:
3013
+ * - Modal container
3014
+ * - Search input
3015
+ * - Instant results (2-column layout)
3016
+ * - Full results view with tabs and filters
3017
+ *
3018
+ * The component is fully controlled and does not contain any data fetching logic.
3019
+ * All data and callbacks are passed in via props, making it suitable for use in AEM
3020
+ * where a controller layer will handle Algolia integration.
3021
+ *
3022
+ * @example
3023
+ * ```tsx
3024
+ * <FederatedSearchExperience
3025
+ * isOpen={isOpen}
3026
+ * onOpen={handleOpen}
3027
+ * onClose={handleClose}
3028
+ * query={query}
3029
+ * onQueryChange={setQuery}
3030
+ * onSearchSubmit={handleSubmit}
3031
+ * products={products}
3032
+ * contents={contents}
3033
+ * isLoadingProducts={isLoadingProducts}
3034
+ * isLoadingContents={isLoadingContents}
3035
+ * onSeeAllProducts={handleSeeAllProducts}
3036
+ * onSeeAllContents={handleSeeAllContents}
3037
+ * onSeeAllCombined={handleSeeAllCombined}
3038
+ * activeView={activeView}
3039
+ * onChangeView={setActiveView}
3040
+ * activeTab={activeTab}
3041
+ * onTabChange={setActiveTab}
3042
+ * />
3043
+ * ```
3044
3044
  */
3045
3045
  const FederatedSearchExperience = ({
3046
3046
  isOpen,