@dnanpm/styleguide 3.9.13 → 3.9.14

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 (45) hide show
  1. package/build/cjs/components/ButtonIcon/ButtonIcon.d.ts +4 -0
  2. package/build/cjs/components/ButtonIcon/ButtonIcon.js +49 -13
  3. package/build/cjs/components/Checkbox/Checkbox.js +1 -1
  4. package/build/cjs/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +2 -3
  5. package/build/cjs/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +15 -16
  6. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +1 -2
  7. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.d.ts +2 -2
  8. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +5 -7
  9. package/build/cjs/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +3 -5
  10. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +5 -5
  11. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -4
  12. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.d.ts +3 -2
  13. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +6 -10
  14. package/build/cjs/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +3 -3
  15. package/build/cjs/components/MainHeaderNavigation/ChildComponents/PageSearch.js +3 -5
  16. package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.d.ts +5 -1
  17. package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.js +7 -7
  18. package/build/cjs/components/MainHeaderNavigation/globalNavStyles.js +6 -0
  19. package/build/cjs/components/Pill/Pill.js +1 -1
  20. package/build/cjs/components/PriorityNavigation/PriorityNavigation.js +17 -2
  21. package/build/cjs/components/RadioButton/RadioButton.js +1 -1
  22. package/build/cjs/components/Switch/Switch.js +1 -1
  23. package/build/es/components/ButtonIcon/ButtonIcon.d.ts +4 -0
  24. package/build/es/components/ButtonIcon/ButtonIcon.js +49 -13
  25. package/build/es/components/Checkbox/Checkbox.js +1 -1
  26. package/build/es/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +2 -3
  27. package/build/es/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +15 -16
  28. package/build/es/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +1 -2
  29. package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.d.ts +2 -2
  30. package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +5 -7
  31. package/build/es/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +3 -5
  32. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +5 -5
  33. package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -4
  34. package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.d.ts +3 -2
  35. package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +6 -10
  36. package/build/es/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +3 -3
  37. package/build/es/components/MainHeaderNavigation/ChildComponents/PageSearch.js +3 -5
  38. package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.d.ts +5 -1
  39. package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.js +8 -8
  40. package/build/es/components/MainHeaderNavigation/globalNavStyles.js +6 -0
  41. package/build/es/components/Pill/Pill.js +1 -1
  42. package/build/es/components/PriorityNavigation/PriorityNavigation.js +17 -2
  43. package/build/es/components/RadioButton/RadioButton.js +1 -1
  44. package/build/es/components/Switch/Switch.js +1 -1
  45. package/package.json +1 -1
@@ -300,7 +300,7 @@ const PriorityNavigation = (_a) => {
300
300
  ]);
301
301
  const handleNavigationListKeyDown = React.useCallback((e) => {
302
302
  var _a;
303
- if (isMobile && isMobileNavigationOpen && e.key === 'Tab') {
303
+ if (isMobile && isMobileNavigationOpen) {
304
304
  const focusableElements = (_a = navigationListRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('a, button, input, [tabindex]:not([tabindex="-1"])');
305
305
  const lastElement = focusableElements === null || focusableElements === void 0 ? void 0 : focusableElements[focusableElements.length - 1];
306
306
  if (document.activeElement === lastElement) {
@@ -309,6 +309,21 @@ const PriorityNavigation = (_a) => {
309
309
  }
310
310
  }
311
311
  }, [isMobile, isMobileNavigationOpen]);
312
+ const handleNavigationListFocus = React.useCallback(() => {
313
+ if (isMobile && isMobileNavigationOpen) {
314
+ setTimeout(() => {
315
+ var _a, _b;
316
+ const focusableElements = (_a = navigationListRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('a, button, input, [tabindex]:not([tabindex="-1"])');
317
+ if (!focusableElements || focusableElements.length === 0)
318
+ return;
319
+ const lastElement = focusableElements[focusableElements.length - 1];
320
+ if (document.activeElement === lastElement) {
321
+ setIsMobileNavigationOpen(false);
322
+ (_b = dropdownButtonRef.current) === null || _b === void 0 ? void 0 : _b.focus();
323
+ }
324
+ }, 0);
325
+ }
326
+ }, [isMobile, isMobileNavigationOpen]);
312
327
  const handleItemClick = (e) => {
313
328
  setIsMobileNavigationOpen(false);
314
329
  if (props.onClick) {
@@ -324,7 +339,7 @@ const PriorityNavigation = (_a) => {
324
339
  props.categoryLabel && React__default.default.createElement(Category, null, props.categoryLabel),
325
340
  selectedItem),
326
341
  React__default.default.createElement(Icon.default, { icon: isMobileNavigationOpen ? icons.OvalChevronUp : icons.OvalChevronDown, size: "2.5rem" }))),
327
- React__default.default.createElement(NavigationList, { ref: navigationListRef, isMobileNavigationOpen: isMobileNavigationOpen, onKeyDown: handleNavigationListKeyDown }, React.Children.map([...state.navigationItems, ...(isMobile ? state.dropdownItems : [])], (navigationItem, index) => {
342
+ React__default.default.createElement(NavigationList, { ref: navigationListRef, isMobileNavigationOpen: isMobileNavigationOpen, onKeyDown: handleNavigationListKeyDown, onFocus: handleNavigationListFocus }, React.Children.map([...state.navigationItems, ...(isMobile ? state.dropdownItems : [])], (navigationItem, index) => {
328
343
  if (React.isValidElement(navigationItem) &&
329
344
  navigationItem.type === PriorityNavigationItem.default) {
330
345
  return (React__default.default.createElement(PriorityNavigationItem.default, { id: navigationItem.props.id, key: navigationItem.key, onClick: handleItemClick, onKeyDown: navigationItem.props.onKeyDown || props.onKeyDown, isActive: navigationItem.props.isActive, className: navigationItem.props.className, "data-testid": navigationItem.props['data-testid'], ref: instance => {
@@ -104,7 +104,7 @@ const RadioButtonGroup = ({ label, description, groupName, value, onChange, id,
104
104
  const descriptionId = `${baseId}-description`;
105
105
  const combinedDescribedBy = [description ? descriptionId : undefined].filter(Boolean).join(' ');
106
106
  const content = children ||
107
- (options === null || options === void 0 ? void 0 : options.map(option => (React__default.default.createElement(RadioButtonComponent, { key: option.id, id: option.id, name: groupName, value: option.value, label: option.label, disabled: option.disabled, checked: value === option.value, onChange: onChange, className: option.className, "data-testid": option['data-testid'] }))));
107
+ (options === null || options === void 0 ? void 0 : options.map(option => (React__default.default.createElement(RadioButtonComponent, { key: option.id, id: option.id, name: groupName, value: option.value, label: option.label, disabled: option.disabled, checked: value === option.value, onChange: onChange, className: option.className, "data-testid": option['data-testid'], "data-checked": value === option.value }))));
108
108
  const Wrapper = isFieldset ? StyledFieldset : 'div';
109
109
  const renderLabel = () => {
110
110
  if (!label)
@@ -115,7 +115,7 @@ const Switch = (_a) => {
115
115
  };
116
116
  const accessibleLabel = props.label ? undefined : ariaLabel || 'Toggle switch';
117
117
  return (React__namespace.createElement(Container, { className: props.className, "data-testid": dataTestId },
118
- React__namespace.createElement(Checkbox, { id: props.id, name: props.name, checked: Boolean(props.isChecked), "aria-label": accessibleLabel, disabled: props.disabled, onChange: handleChange, role: "switch", type: "checkbox" }),
118
+ React__namespace.createElement(Checkbox, { id: props.id, name: props.name, checked: Boolean(props.isChecked), "aria-label": accessibleLabel, disabled: props.disabled, onChange: handleChange, role: "switch", type: "checkbox", "data-checked": Boolean(props.isChecked) }),
119
119
  React__namespace.createElement(LabelWrapper, { htmlFor: props.id },
120
120
  React__namespace.createElement(Rail, { isChecked: props.isChecked },
121
121
  React__namespace.createElement(Button, { isChecked: props.isChecked })),
@@ -30,6 +30,10 @@ interface Props extends Omit<ButtonProps, 'fullWidth'> {
30
30
  * Screen reader label describing the purpose of the ButtonIcon,
31
31
  */
32
32
  ariaLabel?: string;
33
+ /**
34
+ * Show the element with link color (pink)
35
+ */
36
+ isLinkStyle?: boolean;
33
37
  }
34
38
  /** @visibleName Button Icon */
35
39
  declare const ButtonIcon: React.ForwardRefExoticComponent<Omit<Props, "ref"> & React.RefAttributes<HTMLButtonElement>>;
@@ -7,6 +7,47 @@ import { getDividedSize, media } from '../../utils/styledUtils.js';
7
7
  import Icon from '../Icon/Icon.js';
8
8
  import PixelLoader from '../PixelLoader/PixelLoader.js';
9
9
 
10
+ const getStandardStyle = ({ isLinkStyle }) => {
11
+ const colorValue = isLinkStyle ? theme.color.default.pink : theme.color.text.black;
12
+ const colorHoverValue = isLinkStyle ? theme.color.hover.pink : theme.color.text.black;
13
+ return `
14
+ color: ${colorValue};
15
+ &:focus-visible {
16
+ border: 2px solid ${theme.color.focus.light};
17
+ box-shadow: 0px 0px 0px 2px ${theme.color.focus.dark};
18
+ }
19
+ &:hover {
20
+ color: ${colorHoverValue};
21
+ }
22
+ &:active {
23
+ color: ${theme.color.text.black + theme.color.transparency.T80};
24
+ }
25
+ &:disabled,
26
+ &[disabled] {
27
+ color: ${theme.color.text.gray};
28
+ }
29
+ `;
30
+ };
31
+ const getDarkBgStyle = () => {
32
+ const colorValue = theme.color.text.white;
33
+ return `
34
+ color: ${colorValue};
35
+ &:focus-visible {
36
+ border: 2px solid ${theme.color.focus.dark};
37
+ box-shadow: 0px 0px 0px 2px ${theme.color.focus.light};
38
+ }
39
+ &:hover {
40
+ color: ${colorValue};
41
+ }
42
+ &:active {
43
+ color: ${colorValue + theme.color.transparency.T90};
44
+ }
45
+ &:disabled,
46
+ &[disabled] {
47
+ color: ${colorValue + theme.color.transparency.T70};
48
+ }
49
+ `;
50
+ };
10
51
  const ButtonElement = styled__default.button `
11
52
  display: inline-flex;
12
53
  align-items: center;
@@ -15,10 +56,11 @@ const ButtonElement = styled__default.button `
15
56
  font-size: ${({ small }) => (small ? theme.fontSize.s : theme.fontSize.default)};
16
57
  line-height: ${({ small }) => (small ? theme.lineHeight.xs : theme.lineHeight.default)};
17
58
  cursor: pointer;
18
- color: ${({ darkBg }) => (darkBg ? theme.color.text.white : theme.color.text.black)};
19
59
  background-color: transparent;
20
60
  border: 2px solid transparent;
21
61
  padding: ${getDividedSize(theme.base.baseWidth, 5)} 0;
62
+ text-align: left;
63
+ transition: all 0.2s ease-in-out;
22
64
 
23
65
  & svg {
24
66
  pointer-events: none;
@@ -26,29 +68,23 @@ const ButtonElement = styled__default.button `
26
68
 
27
69
  ${({ isReversed }) => isReversed && `flex-direction: row-reverse;`}
28
70
 
71
+ ${({ darkBg, isLinkStyle }) => (darkBg ? getDarkBgStyle() : getStandardStyle({ isLinkStyle }))}
72
+
29
73
  &:focus-visible {
30
74
  border-radius: ${theme.radius.s};
31
75
  text-decoration: underline;
32
- border: 2px solid
33
- ${({ darkBg }) => (darkBg ? theme.color.focus.dark : theme.color.focus.light)};
34
- box-shadow: 0px 0px 0px 2px
35
- ${({ darkBg }) => (darkBg ? theme.color.focus.light : theme.color.focus.dark)};
36
76
  outline: none;
37
77
  }
38
78
 
39
79
  &:hover {
40
80
  text-decoration: underline;
41
- }
42
-
43
- &:active {
44
- color: ${({ darkBg }) => darkBg
45
- ? theme.color.text.white + theme.color.transparency.T90
46
- : theme.color.text.black + theme.color.transparency.T80};
81
+ text-underline-offset: 0.2em;
82
+ text-decoration-skip-ink: auto;
83
+ text-decoration-thickness: from-font;
47
84
  }
48
85
 
49
86
  &:disabled,
50
87
  &[disabled] {
51
- color: ${({ darkBg }) => darkBg ? theme.color.text.white + theme.color.transparency.T70 : theme.color.text.gray};
52
88
  pointer-events: none;
53
89
  }
54
90
 
@@ -83,7 +119,7 @@ const ButtonElement = styled__default.button `
83
119
  const ButtonIcon = forwardRef((_a, ref) => {
84
120
  var { icon = EditUnderline, 'data-testid': dataTestId, 'data-no-close': dataNoClose, 'data-track-value': dataTrackValue } = _a, props = __rest(_a, ["icon", 'data-testid', 'data-no-close', 'data-track-value']);
85
121
  const position = props.isReversed ? 'right' : 'left';
86
- return (React__default.createElement(ButtonElement, Object.assign({ ref: ref, id: props.id, name: props.name, type: props.type, onClick: props.onClick, onMouseDown: props.onMouseDown, small: props.small, darkBg: props.darkBg, "$loading": props.loading, tabIndex: props.loading ? -1 : 0, "data-loading": props.loading, disabled: props.disabled, hideChildrenMobile: props.hideChildrenMobile, isReversed: props.isReversed, className: props.className, "data-testid": dataTestId, "data-no-close": dataNoClose, "data-track-value": dataTrackValue, "aria-expanded": props.ariaExpanded, "aria-label": props.ariaLabel }, props.dataAttributes), props.loading ? (React__default.createElement(PixelLoader, { color: props.darkBg ? theme.color.default.white : theme.color.default.black, label: props.loadingLabel })) : (React__default.createElement(React__default.Fragment, null,
122
+ return (React__default.createElement(ButtonElement, Object.assign({ ref: ref, id: props.id, name: props.name, type: props.type, onClick: props.onClick, onMouseDown: props.onMouseDown, small: props.small, darkBg: props.darkBg, "$loading": props.loading, tabIndex: props.loading ? -1 : 0, "data-loading": props.loading, disabled: props.disabled, hideChildrenMobile: props.hideChildrenMobile, isReversed: props.isReversed, className: props.className, "data-testid": dataTestId, "data-no-close": dataNoClose, "data-track-value": dataTrackValue, "aria-expanded": props.ariaExpanded, "aria-label": props.ariaLabel, isLinkStyle: props.isLinkStyle }, props.dataAttributes), props.loading ? (React__default.createElement(PixelLoader, { color: props.darkBg ? theme.color.default.white : theme.color.default.black, label: props.loadingLabel })) : (React__default.createElement(React__default.Fragment, null,
87
123
  React__default.createElement(Icon, { icon: icon, color: props.darkBg ? theme.color.default.white : theme.color.default.pink, size: props.small ? '1.25rem' : '1.5rem', position: props.children ? position : undefined, "aria-hidden": true }),
88
124
  props.children && (React__default.createElement("span", { "data-testid": dataTestId && `${dataTestId}-text`, "data-no-close": dataNoClose }, props.children))))));
89
125
  });
@@ -110,7 +110,7 @@ const Checkbox = (_a) => {
110
110
  };
111
111
  return (React__default.createElement(React__default.Fragment, null,
112
112
  React__default.createElement(Container, null,
113
- React__default.createElement(Input, { id: props.id, name: props.name, type: "checkbox", className: props.className, checked: Boolean(props.value), onChange: handleChange, disabled: props.disabled, "data-testid": dataTestId, "aria-required": props.required, "aria-invalid": props.error ? 'true' : undefined, "aria-errormessage": props.error && props.errorMessage ? errorId : undefined }),
113
+ React__default.createElement(Input, { id: props.id, name: props.name, type: "checkbox", className: props.className, checked: Boolean(props.value), onChange: handleChange, disabled: props.disabled, "data-testid": dataTestId, "aria-required": props.required, "aria-invalid": props.error ? 'true' : undefined, "aria-errormessage": props.error && props.errorMessage ? errorId : undefined, "data-checked": Boolean(props.value) }),
114
114
  React__default.createElement("label", { htmlFor: props.id, "data-testid": dataTestId && `${dataTestId}-label` },
115
115
  props.label,
116
116
  props.required && React__default.createElement(Mandatory, null, "*"))),
@@ -39,8 +39,7 @@ const BusinessMenuLink = styled.a `
39
39
  const BusinessMenuList = styled.nav `
40
40
  display: flex;
41
41
  gap: ${getMultipliedSize(theme.base.baseWidth, 1)};
42
- padding: ${getMultipliedSize(theme.base.baseHeight, 0.5)}
43
- ${getMultipliedSize(theme.base.baseWidth, 1)};
42
+ padding: ${getMultipliedSize(theme.base.baseHeight, 0.5)} ${getMultipliedSize(theme.base.baseWidth, 1)};
44
43
  ${media.md `
45
44
  padding: ${getMultipliedSize(theme.base.baseHeight, 1)} ${getMultipliedSize(theme.base.baseWidth, 1.5)};
46
45
  `};
@@ -49,7 +48,7 @@ const BusinessMenu = ({ ariaLabel, currentBusinessId, items, lang }) => {
49
48
  if (!(items === null || items === void 0 ? void 0 : items.length)) {
50
49
  return null;
51
50
  }
52
- return (React__default.createElement(BusinessMenuList, { "aria-label": ariaLabel, "data-testid": "business-menu", role: "navigation" }, items.map(item => (React__default.createElement(BusinessMenuLink, { className: `menu-link ${item.businessId === currentBusinessId ? 'active-site' : ''}`, href: item.urls[lang], isActive: item.businessId === currentBusinessId, key: item.businessId }, item.titles[lang])))));
51
+ return (React__default.createElement(BusinessMenuList, { "aria-label": ariaLabel, "data-testid": "business-menu" }, items.map(item => (React__default.createElement(BusinessMenuLink, { className: `menu-link ${item.businessId === currentBusinessId ? 'active-site' : ''}`, href: item.urls[lang], isActive: item.businessId === currentBusinessId, key: item.businessId }, item.titles[lang])))));
53
52
  };
54
53
 
55
54
  export { BusinessMenu as default };
@@ -28,13 +28,12 @@ const noAnimation = css `
28
28
  const MegaMenuContent = styled.ul `
29
29
  display: grid;
30
30
  grid-template-columns: 25% 25% 25% 25%;
31
- padding-left: 0;
32
31
  `;
33
- const CategoryTitle = styled.span `
32
+ const CategoryTitle = styled.h2 `
34
33
  display: flex;
35
34
  font-size: ${theme.fontSize.default};
36
35
  line-height: ${theme.lineHeight.default};
37
- font-weight: ${theme.fontWeight.bold};
36
+ margin: 0;
38
37
  padding: 0 ${getMultipliedSize(theme.base.baseHeight, 2)}
39
38
  ${getMultipliedSize(theme.base.baseWidth, 1)};
40
39
  ${media.xl `
@@ -121,21 +120,21 @@ const SubMenuLevel1 = ({ menuItem }) => {
121
120
  const pagesWithSubItems = menuItem.pages.filter(element => element.pages.length > 0);
122
121
  // Helper function to render a sub menu item
123
122
  const renderSubMenuItem = (element, index, currUrl) => (React__default.createElement(SubMenuItem, { key: element.id, isHighlighted: isSelected(currUrl, element.urls[lang], true), "data-testid": `desktop-nav-item-level-2-${index + 1}` },
124
- React__default.createElement(LinkModifier, { menuItem: element, tabIndex: false })));
123
+ React__default.createElement(LinkModifier, { menuItem: element, disabledTabIndex: false })));
125
124
  if (!level1HasElements) {
126
125
  return null;
127
126
  }
128
127
  return (React__default.createElement(SubMenuList, { "aria-hidden": false, menuStates: menuLevel, navItemId: menuItem.id, navZIndex: navZIndex },
129
- React__default.createElement(MegaMenuContent, null,
128
+ React__default.createElement(MegaMenuContent, { "aria-labelledby": `menu-id-${menuItem.id}` },
130
129
  pagesWithSubItems.slice(0, 5).map(element => (React__default.createElement(CategoryBlock, { key: element.id },
131
- React__default.createElement(CategoryTitle, null, element.titles[lang]),
132
- React__default.createElement("ul", { "data-testid": "desktop-nav-menu-ul-level-2" }, element.pages.map((subElement, index) => renderSubMenuItem(subElement, index, currentUrl)))))),
130
+ React__default.createElement(CategoryTitle, { id: `menu-id-${element.id}` }, element.titles[lang]),
131
+ React__default.createElement("ul", { "aria-labelledby": `menu-id-${element.id}`, "data-testid": "desktop-nav-menu-ul-level-2" }, element.pages.map((subElement, index) => renderSubMenuItem(subElement, index, currentUrl)))))),
133
132
  pagesWithSubItems.length > 5 && (React__default.createElement(CategoryCollectionBlock, null,
134
- React__default.createElement(CategoryTitle, null, categoryCollectionText),
135
- React__default.createElement("ul", { "data-testid": "desktop-nav-menu-ul-level-2" }, pagesWithSubItems
133
+ React__default.createElement(CategoryTitle, { id: "misc-categories" }, categoryCollectionText),
134
+ React__default.createElement("ul", { "aria-labelledby": "misc-categories", "data-testid": "desktop-nav-menu-ul-level-2" }, pagesWithSubItems
136
135
  .slice(5)
137
136
  .map((element, index) => renderSubMenuItem(element, index, currentUrl))))),
138
- React__default.createElement(FeaturedBlock, { collapseSize: collapseSize, "data-testid": "desktop-nav-menu-level-2-featured" }, menuItem.pages.map(element => element.pages.length ? null : (React__default.createElement(LinkModifier, { key: element.id, showIcon: true, menuItem: element, tabIndex: false })))))));
137
+ React__default.createElement(FeaturedBlock, { collapseSize: collapseSize, "data-testid": "desktop-nav-menu-level-2-featured" }, menuItem.pages.map(element => element.pages.length ? null : (React__default.createElement(LinkModifier, { key: element.id, showIcon: true, menuItem: element, disabledTabIndex: false })))))));
139
138
  };
140
139
  const MenuItemWithChildren = ({ menuItem, currentLevel }) => {
141
140
  const { lang, handleNavMenuClick, currentUrl, menuLevel } = useContext(NavContext);
@@ -144,9 +143,9 @@ const MenuItemWithChildren = ({ menuItem, currentLevel }) => {
144
143
  e.preventDefault();
145
144
  handleNavMenuClick(element.id, 'level1');
146
145
  };
147
- return (React__default.createElement(DesktopMenuItem, { isActive: isSelected(currentUrl, menuItem.urls[lang]), "data-testid": `desktop-nav-item-level-1-${currentLevel + 1}` },
148
- React__default.createElement(MenuLinkWithChildren, { isOpen: menuLevel.level1 === menuItem.id, onClick: menuClickMain(menuItem), "data-testid": "menu-button-with-children", href: linkUrl },
149
- React__default.createElement("span", null, menuItem.titles[lang]),
146
+ return (React__default.createElement(DesktopMenuItem, { isActive: isSelected(currentUrl, linkUrl), "data-testid": `desktop-nav-item-level-1-${currentLevel + 1}` },
147
+ React__default.createElement(MenuLinkWithChildren, { isOpen: menuLevel.level1 === menuItem.id, onClick: menuClickMain(menuItem), "data-testid": "menu-button-with-children", "aria-current": isSelected(currentUrl, linkUrl) ? 'true' : undefined, "aria-expanded": menuLevel.level1 === menuItem.id, href: linkUrl },
148
+ React__default.createElement("span", { id: `menu-id-${menuItem.id}` }, menuItem.titles[lang]),
150
149
  React__default.createElement(ChevronRight, { size: "1rem" })),
151
150
  React__default.createElement(SubMenuLevel1, { menuItem: menuItem })));
152
151
  };
@@ -166,10 +165,10 @@ const DesktopMenu = () => {
166
165
  return (React__default.createElement(MenuList, { "aria-hidden": false, ref: ref, "data-testid": "desktop-nav-menu-ul" }, mainNavigation.map((navElement, index) => {
167
166
  const displaySubMenu = !navElement.pageIsLinkInDesktopNavigation && !!navElement.pages.length;
168
167
  if (displaySubMenu) {
169
- return (React__default.createElement(MenuItemWithChildren, { menuItem: navElement, key: navElement.id, currentLevel: index }));
168
+ return (React__default.createElement(MenuItemWithChildren, { currentLevel: index, key: navElement.id, menuItem: navElement }));
170
169
  }
171
- return (React__default.createElement(DesktopMenuItem, { key: navElement.id, "data-testid": `desktop-nav-item-level-1-${index + 1}`, isActive: isSelected(currentUrl, navElement.urls[lang]) },
172
- React__default.createElement(LinkModifier, { menuItem: navElement, tabIndex: false })));
170
+ return (React__default.createElement(DesktopMenuItem, { "data-testid": `desktop-nav-item-level-1-${index + 1}`, isActive: isSelected(currentUrl, navElement.urls[lang]), key: navElement.id },
171
+ React__default.createElement(LinkModifier, { menuItem: navElement, disabledTabIndex: false })));
173
172
  })));
174
173
  };
175
174
 
@@ -4,7 +4,6 @@ import styled from '../../../themes/styled.js';
4
4
  import theme from '../../../themes/theme.js';
5
5
  import { navIconSize } from '../../../themes/themeComponents/navigation.js';
6
6
  import { getMultipliedSize } from '../../../utils/styledUtils.js';
7
- import Icon from '../../Icon/Icon.js';
8
7
  import NavContext from '../context/NavContext.js';
9
8
  import { MenuLink } from '../globalNavStyles.js';
10
9
  import MainNavTooltipMenu from './MainNavTooltipMenu.js';
@@ -24,7 +23,7 @@ const LanguageSelector = ({ currentLanguage, languagesObject, languageSelectorLa
24
23
  return null;
25
24
  }
26
25
  return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: languageSelectorLabel, closeWhenTagClicked: ['a'], contentComponent: LngComponent, contentWidth: "5rem", globalStateString: "lang", tooltipRight: isMobileMenu ? '13.8rem' : '11.8rem', zIndex: navZIndex + 1 },
27
- React__default.createElement(Icon, { icon: Globe, size: navIconSize }),
26
+ React__default.createElement(Globe, { size: navIconSize }),
28
27
  React__default.createElement("span", { "data-testid": "header-lang-label" }, currentLanguage.toUpperCase())));
29
28
  };
30
29
 
@@ -2,9 +2,9 @@ import React from 'react';
2
2
  import type { MenuLevelItem } from '../types/globalNavProps';
3
3
  interface LinkModifierProps {
4
4
  menuItem: MenuLevelItem;
5
- tabIndex: boolean;
5
+ disabledTabIndex?: boolean;
6
6
  showIcon?: boolean;
7
7
  }
8
8
  export declare const isSelected: (currentUrl: string, linkUrl: string, exactMatch?: boolean) => boolean;
9
- declare const LinkModifier: ({ menuItem, tabIndex, showIcon }: LinkModifierProps) => React.JSX.Element;
9
+ declare const LinkModifier: ({ menuItem, disabledTabIndex, showIcon }: LinkModifierProps) => React.JSX.Element;
10
10
  export default LinkModifier;
@@ -1,7 +1,5 @@
1
1
  import { Open, ArrowRight } from '@dnanpm/icons';
2
2
  import React__default, { useContext } from 'react';
3
- import theme from '../../../themes/theme.js';
4
- import Icon from '../../Icon/Icon.js';
5
3
  import NavContext from '../context/NavContext.js';
6
4
  import { MenuLink } from '../globalNavStyles.js';
7
5
 
@@ -16,12 +14,12 @@ const isSelected = (currentUrl, linkUrl, exactMatch = false) => {
16
14
  return false;
17
15
  };
18
16
  const isMenuItemLinkAbsolute = (menuItemLink) => menuItemLink.includes('http');
19
- const LinkModifier = ({ menuItem, tabIndex, showIcon }) => {
20
- const { lang, nextJSLinkComponent, resetMenuEvents } = useContext(NavContext);
21
- const menuItemLink = menuItem.urls[lang] || '';
17
+ const LinkModifier = ({ menuItem, disabledTabIndex, showIcon }) => {
18
+ const { lang, currentUrl, nextJSLinkComponent, resetMenuEvents } = useContext(NavContext);
19
+ const menuItemLink = menuItem.urls[lang];
22
20
  const isExternalLink = menuItem.target === '_blank';
23
- const MenuLinkComponent = (React__default.createElement(MenuLink, { href: menuItemLink, id: menuItem.id, onClick: resetMenuEvents, tabIndex: tabIndex ? -1 : undefined, target: isExternalLink ? '_blank' : '_self' },
24
- showIcon && (React__default.createElement(Icon, { icon: isExternalLink ? Open : ArrowRight, size: "1.25rem", color: theme.color.default.pink })),
21
+ const MenuLinkComponent = (React__default.createElement(MenuLink, { "aria-current": isSelected(currentUrl, menuItemLink) ? 'page' : undefined, href: menuItemLink, id: menuItem.id, onClick: resetMenuEvents, tabIndex: disabledTabIndex ? -1 : undefined, target: isExternalLink ? '_blank' : '_self' },
22
+ showIcon && (isExternalLink ? React__default.createElement(Open, null) : React__default.createElement(ArrowRight, null)),
25
23
  React__default.createElement("span", null, menuItem.titles[lang])));
26
24
  if (nextJSLinkComponent && !isMenuItemLinkAbsolute(menuItemLink)) {
27
25
  const NextJSLinkComponent = nextJSLinkComponent;
@@ -1,14 +1,12 @@
1
1
  import { User } from '@dnanpm/icons';
2
2
  import React__default, { useContext } from 'react';
3
- import { navIconSize } from '../../../themes/themeComponents/navigation.js';
4
- import Icon from '../../Icon/Icon.js';
5
3
  import NavContext from '../context/NavContext.js';
6
4
  import MainNavTooltipMenu from './MainNavTooltipMenu.js';
7
5
 
8
6
  const LoginTooltip = ({ isLogged, loginLabel }) => {
9
- const { navZIndex, isMobileMenu, loginComponent: LoginComponent } = useContext(NavContext);
10
- return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: loginLabel, closeWhenTagClicked: ['a', 'button'], contentComponent: LoginComponent, globalStateString: "login", tooltipRight: isMobileMenu ? '3rem' : '1rem', zIndex: navZIndex + 1 }, !isLogged ? (loginLabel) : (React__default.createElement(React__default.Fragment, null,
11
- React__default.createElement(Icon, { icon: User, size: navIconSize }),
7
+ const { navZIndex, isMobileMenu, loginComponent } = useContext(NavContext);
8
+ return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: loginLabel, closeWhenTagClicked: ['a', 'button'], contentComponent: loginComponent, globalStateString: "login", tooltipRight: isMobileMenu ? '3rem' : '1rem', zIndex: navZIndex + 1 }, !isLogged ? (loginLabel) : (React__default.createElement(React__default.Fragment, null,
9
+ React__default.createElement(User, null),
12
10
  React__default.createElement("span", { "data-testid": "header-login-label" }, loginLabel)))));
13
11
  };
14
12
 
@@ -20,19 +20,19 @@ const IconContainer = styled.div `
20
20
  min-width: ${IconContainerMinWidth};
21
21
  transition: color 0.2s ease-in-out;
22
22
 
23
- > span.dnasg-icon > svg {
23
+ > svg {
24
24
  display: block;
25
25
  height: ${navIconSize};
26
26
  width: ${navIconSize};
27
27
  }
28
- > span.dnasg-icon > svg,
29
- > span.dnasg-icon + span {
28
+ > svg,
29
+ + span {
30
30
  color: ${p => (p.isActive ? theme.color.text.pink : 'inherit')};
31
31
  }
32
32
 
33
33
  @media (min-width: ${p => p.collapseSize + 1}px) {
34
34
  min-width: ${getMultipliedSize(theme.base.baseWidth, 6)};
35
- > span.dnasg-icon + span {
35
+ + span {
36
36
  display: block;
37
37
  }
38
38
  }
@@ -103,7 +103,7 @@ const MainNavTooltipMenu = (_a) => {
103
103
  }
104
104
  });
105
105
  return (React__default.createElement(IconContainer, { "data-testid": `header-${globalStateKey}-container`, collapseSize: collapseSize, ref: ref },
106
- globalStateKey === 'login' && !isLoggedIn ? (React__default.createElement(ButtonPrimary, { onClick: ContentComponent ? toggleState : undefined, small: true }, children)) : (React__default.createElement(TooltipWrapper, { "aria-label": ariaLabel, isLoggedIn: isLoginItemAndLoggedIn, collapseSize: collapseSize, isHighlighted: tooltipItems[globalStateKey] || isLoginItemAndLoggedIn, onClick: props.onCartButtonClick || (ContentComponent ? toggleState : undefined) }, children)),
106
+ globalStateKey === 'login' && !isLoggedIn ? (React__default.createElement(ButtonPrimary, { onClick: ContentComponent ? toggleState : undefined, small: true }, children)) : (React__default.createElement(TooltipWrapper, { "aria-label": ariaLabel, "aria-expanded": tooltipItems[globalStateKey], isLoggedIn: isLoginItemAndLoggedIn, collapseSize: collapseSize, isHighlighted: tooltipItems[globalStateKey] || isLoginItemAndLoggedIn, onClick: props.onCartButtonClick || (ContentComponent ? toggleState : undefined) }, children)),
107
107
  tooltipItems[globalStateKey] && ContentComponent && (React__default.createElement(React__default.Fragment, null,
108
108
  React__default.createElement(Caret, { zIndex: zIndex, collapseSize: collapseSize }),
109
109
  React__default.createElement(Tooltip, { zIndex: zIndex, tooltipRight: tooltipRight, contentWidth: contentWidth, collapseSize: collapseSize, fullWidthDesktop: fullWidthDesktop, fullWidthBreakpoint: fullWidthBreakpoint },
@@ -20,7 +20,7 @@ const TooltipWrapper = styled.button `
20
20
  border-left: ${p => (p.isLoggedIn ? `2px solid ${theme.color.line.L03}` : 'none')};
21
21
  &:active,
22
22
  &:focus {
23
- span.dnasg-icon > svg,
23
+ > svg,
24
24
  > span {
25
25
  color: ${theme.color.text.pink};
26
26
  }
@@ -30,12 +30,12 @@ const TooltipWrapper = styled.button `
30
30
  border-radius: ${theme.radius.s};
31
31
  box-shadow: 0px 0px 0px 2px ${theme.color.focus.light},
32
32
  0px 0px 0px 4px ${theme.color.focus.dark};
33
- span.dnasg-icon > svg,
33
+ > svg,
34
34
  > span {
35
35
  color: ${theme.color.text.black};
36
36
  }
37
37
  }
38
- span.dnasg-icon > svg {
38
+ > svg {
39
39
  align-content: center;
40
40
  display: flex;
41
41
  margin: 0 auto;
@@ -44,7 +44,7 @@ const TooltipWrapper = styled.button `
44
44
  width: 1.625em;
45
45
  }
46
46
  }
47
- span.dnasg-icon + span {
47
+ > span {
48
48
  display: none;
49
49
  @media (min-width: ${p => p.collapseSize + 1}px) {
50
50
  font-size: ${theme.fontSize.xs};
@@ -2,7 +2,8 @@ import React from 'react';
2
2
  import type { MainHeaderNavigationProps } from '../MainHeaderNavigation';
3
3
  interface MinicartTooltipProps extends Pick<MainHeaderNavigationProps, 'onCartButtonClick'> {
4
4
  minicartAmount: number;
5
- minicartLabel?: string;
5
+ minicartLabel: string;
6
+ minicartAmountLabel: string;
6
7
  }
7
- declare const MinicartTooltip: ({ minicartAmount, minicartLabel, ...props }: MinicartTooltipProps) => React.JSX.Element;
8
+ declare const MinicartTooltip: ({ minicartAmount, minicartAmountLabel, minicartLabel, onCartButtonClick, }: MinicartTooltipProps) => React.JSX.Element;
8
9
  export default MinicartTooltip;
@@ -1,20 +1,16 @@
1
- import { __rest } from 'tslib';
2
1
  import { Cart } from '@dnanpm/icons';
3
2
  import React__default, { useContext } from 'react';
4
3
  import theme from '../../../themes/theme.js';
5
- import { navIconSize } from '../../../themes/themeComponents/navigation.js';
6
- import Icon from '../../Icon/Icon.js';
7
4
  import NotificationBadge from '../../NotificationBadge/NotificationBadge.js';
8
5
  import NavContext from '../context/NavContext.js';
9
6
  import MainNavTooltipMenu from './MainNavTooltipMenu.js';
10
7
 
11
- const MinicartTooltip = (_a) => {
12
- var { minicartAmount, minicartLabel } = _a, props = __rest(_a, ["minicartAmount", "minicartLabel"]);
13
- const { navZIndex, minicartComponent: MinicartComponent } = useContext(NavContext);
14
- return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: minicartLabel, closeWhenTagClicked: ['a', 'button'], onCartButtonClick: props.onCartButtonClick, contentComponent: MinicartComponent, contentWidth: "35rem", fullWidthBreakpoint: theme.breakpoints.md, globalStateString: "minicart", tooltipRight: "5rem", zIndex: navZIndex + 1 },
15
- React__default.createElement(Icon, { icon: Cart, size: navIconSize }),
16
- React__default.createElement("span", null, minicartLabel),
17
- minicartAmount > 0 && (React__default.createElement(NotificationBadge, { top: "-5px", right: "5px", "data-testid": "header-minicart-amount" }, minicartAmount))));
8
+ const MinicartTooltip = ({ minicartAmount, minicartAmountLabel, minicartLabel, onCartButtonClick, }) => {
9
+ const { navZIndex, minicartComponent } = useContext(NavContext);
10
+ return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: minicartLabel, closeWhenTagClicked: ['a', 'button'], onCartButtonClick: onCartButtonClick, contentComponent: minicartComponent, contentWidth: "35rem", fullWidthBreakpoint: theme.breakpoints.md, globalStateString: "minicart", tooltipRight: "5rem", zIndex: navZIndex + 1 },
11
+ React__default.createElement(Cart, null),
12
+ React__default.createElement("span", { "aria-hidden": true }, minicartLabel),
13
+ minicartAmount > 0 && (React__default.createElement(NotificationBadge, { "data-testid": "header-minicart-amount", right: "5px", top: "-5px", visuallyHiddenText: minicartAmountLabel }, minicartAmount))));
18
14
  };
19
15
 
20
16
  export { MinicartTooltip as default };
@@ -124,7 +124,7 @@ const CreateSubMenuItem = ({ menuItem, currentLevel, itemIndex }) => {
124
124
  menuItem.titles[lang],
125
125
  React__default.createElement(ChevronRight, { color: theme.color.default.pink })));
126
126
  }
127
- return renderMenuItem(React__default.createElement(LinkModifier, { menuItem: menuItem, tabIndex: tabNavigationDisabled }));
127
+ return renderMenuItem(React__default.createElement(LinkModifier, { menuItem: menuItem, disabledTabIndex: tabNavigationDisabled }));
128
128
  };
129
129
  const SubMenuMobile = ({ currentLevel, menuItem }) => {
130
130
  const featuredItems = menuItem.pages.filter(subMenuItem => !subMenuItem.pages.length && currentLevel === 2);
@@ -136,7 +136,7 @@ const SubMenuMobile = ({ currentLevel, menuItem }) => {
136
136
  }
137
137
  return (React__default.createElement(React__default.Fragment, null,
138
138
  currentLevel > 1 && React__default.createElement(MenuItemBackLink, { currentLevel: currentLevel }),
139
- featuredItems.length > 0 && (React__default.createElement(FeaturedBlock, { collapseSize: collapseSize }, featuredItems.map(subMenuItem => (React__default.createElement(LinkModifier, { key: subMenuItem.id, menuItem: subMenuItem, showIcon: true, tabIndex: tabNavigationDisabled }))))),
139
+ featuredItems.length > 0 && (React__default.createElement(FeaturedBlock, { collapseSize: collapseSize }, featuredItems.map(subMenuItem => (React__default.createElement(LinkModifier, { key: subMenuItem.id, menuItem: subMenuItem, showIcon: true, disabledTabIndex: tabNavigationDisabled }))))),
140
140
  menuItem.pages
141
141
  .filter(subMenuItem => !featuredItems.includes(subMenuItem))
142
142
  .map((subMenuItem, index) => (React__default.createElement(CreateSubMenuItem, { currentLevel: currentLevel, itemIndex: index, key: subMenuItem.id, menuItem: subMenuItem })))));
@@ -147,7 +147,7 @@ const NavigationMenuMobile = () => {
147
147
  if (!(mainNavigation === null || mainNavigation === void 0 ? void 0 : mainNavigation.pages.length)) {
148
148
  return null;
149
149
  }
150
- const renderMenuList = (scrollPosition, level, menuItem) => (React__default.createElement(MenuList, { role: "menu", "aria-hidden": menuLevel.scrollPosition !== scrollPosition, "aria-disabled": menuLevel.scrollPosition !== scrollPosition, "data-testid": `mobile-nav-menu-level-${level}`, isInView: menuLevel.scrollPosition === scrollPosition },
150
+ const renderMenuList = (scrollPosition, level, menuItem) => (React__default.createElement(MenuList, { "aria-hidden": menuLevel.scrollPosition !== scrollPosition, "aria-disabled": menuLevel.scrollPosition !== scrollPosition, "data-testid": `mobile-nav-menu-level-${level}`, isInView: menuLevel.scrollPosition === scrollPosition },
151
151
  React__default.createElement(SubMenuMobile, { currentLevel: level, menuItem: menuItem })));
152
152
  return (React__default.createElement(React__default.Fragment, null,
153
153
  renderMenuList(0, 1, mainNavigation),
@@ -1,14 +1,12 @@
1
1
  import { Search } from '@dnanpm/icons';
2
2
  import React__default, { useContext } from 'react';
3
- import { navIconSize } from '../../../themes/themeComponents/navigation.js';
4
- import Icon from '../../Icon/Icon.js';
5
3
  import NavContext from '../context/NavContext.js';
6
4
  import MainNavTooltipMenu from './MainNavTooltipMenu.js';
7
5
 
8
6
  const PageSearch = ({ searchLabel }) => {
9
- const { navZIndex, searchComponent: SearchComponent } = useContext(NavContext);
10
- return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: searchLabel, closeWhenTagClicked: ['a'], contentComponent: SearchComponent, contentWidth: "100%", "data-testid": "header-search-container", fullWidthDesktop: true, globalStateString: "search", tooltipRight: "0", zIndex: navZIndex + 1 },
11
- React__default.createElement(Icon, { icon: Search, size: navIconSize }),
7
+ const { navZIndex, searchComponent } = useContext(NavContext);
8
+ return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: searchLabel, closeWhenTagClicked: ['a'], contentComponent: searchComponent, contentWidth: "100%", "data-testid": "header-search-container", fullWidthDesktop: true, globalStateString: "search", tooltipRight: "0", zIndex: navZIndex + 1 },
9
+ React__default.createElement(Search, null),
12
10
  React__default.createElement("span", null, searchLabel)));
13
11
  };
14
12
 
@@ -16,6 +16,7 @@ export interface MainHeaderNavigationProps {
16
16
  minicart?: boolean;
17
17
  minicartText?: string;
18
18
  minicartAmount?: number;
19
+ minicartAmountLabel?: string;
19
20
  /**
20
21
  * Defines MinicartComponent when used. If minicart is true but component is not provided, shown as disabled element.
21
22
  *
@@ -27,6 +28,9 @@ export interface MainHeaderNavigationProps {
27
28
  * On Cart button click callback
28
29
  */
29
30
  onCartButtonClick?: (e: MouseEvent<HTMLElement>) => void;
31
+ dnaLogoLinkAriaLabel?: string;
32
+ openMainMenuAriaLabel?: string;
33
+ closeMainMenuAriaLabel?: string;
30
34
  showLoginTooltip?: boolean;
31
35
  languageSelector?: boolean;
32
36
  languageSelectorText?: string;
@@ -40,6 +44,6 @@ export interface MainHeaderNavigationProps {
40
44
  notificationText?: string;
41
45
  }
42
46
  /** @visibleName MainHeaderNavigation */
43
- declare const MainHeaderNavigation: ({ businessMenuAriaLabel, categoryCollectionText, className, collapseSize, currentUrl, isLoggedIn, items, language, languageSelector, languageSelectorText, login, loginComponent, loginText, mainMenuAriaLabel, minicart, minicartAmount, minicartComponent, minicartText, nextJSLinkComponent, notificationText, search, searchComponent, searchText, showLoginTooltip, showMinicart, zIndex, ...props }: MainHeaderNavigationProps) => React.JSX.Element;
47
+ declare const MainHeaderNavigation: ({ businessMenuAriaLabel, categoryCollectionText, closeMainMenuAriaLabel, className, collapseSize, currentUrl, dnaLogoLinkAriaLabel, isLoggedIn, items, language, languageSelector, languageSelectorText, login, loginComponent, loginText, mainMenuAriaLabel, minicart, minicartAmount, minicartAmountLabel, minicartComponent, minicartText, nextJSLinkComponent, notificationText, openMainMenuAriaLabel, search, searchComponent, searchText, showLoginTooltip, showMinicart, zIndex, ...props }: MainHeaderNavigationProps) => React.JSX.Element;
44
48
  /** @component */
45
49
  export default MainHeaderNavigation;
@@ -6,10 +6,9 @@ import useScrollPosition from '../../hooks/useScrollPosition.js';
6
6
  import useWindowSize from '../../hooks/useWindowSize.js';
7
7
  import styled, { createGlobalStyle, keyframes } from '../../themes/styled.js';
8
8
  import theme from '../../themes/theme.js';
9
- import { navMaxHeight, headerLogoSize, navIconSize } from '../../themes/themeComponents/navigation.js';
9
+ import { navMaxHeight, headerLogoSize } from '../../themes/themeComponents/navigation.js';
10
10
  import { getMultipliedSize } from '../../utils/styledUtils.js';
11
11
  import DnaLogo from '../DnaLogo/DnaLogo.js';
12
- import Icon from '../Icon/Icon.js';
13
12
  import Notification from '../Notification/Notification.js';
14
13
  import BusinessMenu from './ChildComponents/BusinessMenu.js';
15
14
  import DesktopMenu from './ChildComponents/DesktopMenu.js';
@@ -127,7 +126,7 @@ const initiateScrollToHeader = (componentRef) => {
127
126
  /** @visibleName MainHeaderNavigation */
128
127
  const MainHeaderNavigation = (_a) => {
129
128
  var _b, _c, _d;
130
- var { businessMenuAriaLabel = 'Sivustot', categoryCollectionText = 'Muut kategoriat', className, collapseSize = 767, currentUrl = '', isLoggedIn = false, items = {}, language = 'fi', languageSelector = false, languageSelectorText = 'Vaihda kieltä', login = true, loginComponent, loginText = 'Kirjaudu', mainMenuAriaLabel = 'Päänavigaatio', minicart = true, minicartAmount = 0, minicartComponent = false, minicartText = 'Ostoskori', nextJSLinkComponent = false, notificationText = '', search = true, searchComponent = false, searchText = 'Haku', showLoginTooltip = false, showMinicart = false, zIndex = 1030 } = _a, props = __rest(_a, ["businessMenuAriaLabel", "categoryCollectionText", "className", "collapseSize", "currentUrl", "isLoggedIn", "items", "language", "languageSelector", "languageSelectorText", "login", "loginComponent", "loginText", "mainMenuAriaLabel", "minicart", "minicartAmount", "minicartComponent", "minicartText", "nextJSLinkComponent", "notificationText", "search", "searchComponent", "searchText", "showLoginTooltip", "showMinicart", "zIndex"]);
129
+ var { businessMenuAriaLabel = 'Sivustot', categoryCollectionText = 'Muut kategoriat', closeMainMenuAriaLabel, className, collapseSize = 767, currentUrl = '', dnaLogoLinkAriaLabel, isLoggedIn = false, items = {}, language = 'fi', languageSelector = false, languageSelectorText = 'Vaihda kieltä', login = true, loginComponent, loginText = 'Kirjaudu', mainMenuAriaLabel = 'Päänavigaatio', minicart = true, minicartAmount = 0, minicartAmountLabel, minicartComponent = false, minicartText = 'Ostoskori', nextJSLinkComponent = false, notificationText = '', openMainMenuAriaLabel, search = true, searchComponent = false, searchText = 'Haku', showLoginTooltip = false, showMinicart = false, zIndex = 1030 } = _a, props = __rest(_a, ["businessMenuAriaLabel", "categoryCollectionText", "closeMainMenuAriaLabel", "className", "collapseSize", "currentUrl", "dnaLogoLinkAriaLabel", "isLoggedIn", "items", "language", "languageSelector", "languageSelectorText", "login", "loginComponent", "loginText", "mainMenuAriaLabel", "minicart", "minicartAmount", "minicartAmountLabel", "minicartComponent", "minicartText", "nextJSLinkComponent", "notificationText", "openMainMenuAriaLabel", "search", "searchComponent", "searchText", "showLoginTooltip", "showMinicart", "zIndex"]);
131
130
  const { isMobile } = useWindowSize(collapseSize);
132
131
  const navigationEl = useRef(null);
133
132
  const key = prop('id');
@@ -293,24 +292,25 @@ const MainHeaderNavigation = (_a) => {
293
292
  };
294
293
  return (React__default.createElement(React__default.Fragment, null,
295
294
  isPageOverlay && React__default.createElement(PageOverlay, { "data-testid": "navigation-overlay", navZIndex: zIndex }),
296
- React__default.createElement(GlobalNavigationContainer, { className: className, collapseSize: collapseSize, "data-testid": "dna-main-header", navZIndex: zIndex, ref: navigationEl, role: "banner" },
295
+ React__default.createElement(GlobalNavigationContainer, { className: className, collapseSize: collapseSize, "data-testid": "dna-main-header", navZIndex: zIndex, ref: navigationEl },
297
296
  React__default.createElement(NavContext.Provider, { value: navigationContext },
298
297
  React__default.createElement(GlobalStyle, null),
299
298
  !items.mainNavigation && notificationText && (React__default.createElement(Notification, { type: "info" }, notificationText)),
300
299
  React__default.createElement(BusinessMenu, { ariaLabel: businessMenuAriaLabel, currentBusinessId: items.businessId, items: (_d = items.businessSelector) === null || _d === void 0 ? void 0 : _d.items, lang: language }),
301
300
  React__default.createElement(NavigationWrapper, { collapseSize: collapseSize },
302
- React__default.createElement(LogoLink, { "data-testid": "dna-logo-link", href: currentBusinessSite === null || currentBusinessSite === void 0 ? void 0 : currentBusinessSite.urls[language], title: "DNA" },
301
+ React__default.createElement(LogoLink, { "data-testid": "dna-logo-link", href: currentBusinessSite === null || currentBusinessSite === void 0 ? void 0 : currentBusinessSite.urls[language], "aria-label": dnaLogoLinkAriaLabel },
303
302
  React__default.createElement(DnaLogo, { size: headerLogoSize })),
304
303
  React__default.createElement(DesktopMenuContainer, { "aria-label": mainMenuAriaLabel, collapseSize: collapseSize },
305
304
  React__default.createElement(DesktopMenu, null)),
306
305
  React__default.createElement(HeaderIconContainer, { collapseSize: collapseSize },
307
306
  languagesObject && languageSelector && (React__default.createElement(LanguageSelector, { currentLanguage: language, languagesObject: languagesObject, languageSelectorLabel: languageSelectorText })),
308
307
  search && React__default.createElement(PageSearch, { searchLabel: searchText }),
309
- minicart && (React__default.createElement(MinicartTooltip, { minicartAmount: minicartAmount, minicartLabel: minicartText, onCartButtonClick: props.onCartButtonClick })),
308
+ minicart && (React__default.createElement(MinicartTooltip, { minicartAmount: minicartAmount, minicartAmountLabel: minicartAmountLabel !== null && minicartAmountLabel !== void 0 ? minicartAmountLabel : '', minicartLabel: minicartText, onCartButtonClick: props.onCartButtonClick })),
310
309
  login && React__default.createElement(LoginTooltip, { loginLabel: loginText, isLogged: isLoggedIn }),
311
310
  React__default.createElement(IconContainer, { collapseSize: collapseSize, "data-testid": "header-mobile-menu-container" },
312
- React__default.createElement(MobileMenuButton, { "aria-expanded": isMobileMenuOpen, "aria-label": "menu toggle", "data-testid": "header-mobile-menu-toggle", onClick: handleToggleClick },
313
- React__default.createElement(Icon, { icon: isMobileMenuOpen ? Close : Menu, size: navIconSize })))),
311
+ React__default.createElement(MobileMenuButton, { "aria-expanded": isMobileMenuOpen, "aria-label": isMobileMenuOpen
312
+ ? closeMainMenuAriaLabel
313
+ : openMainMenuAriaLabel, "data-testid": "header-mobile-menu-toggle", onClick: handleToggleClick }, isMobileMenuOpen ? React__default.createElement(Close, null) : React__default.createElement(Menu, null)))),
314
314
  isMobile && React__default.createElement(RenderMobileMenu, null))))));
315
315
  };
316
316