@arc-ui/components 11.21.0 → 11.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/Filter/Filter.cjs.js +1 -1
  2. package/dist/Filter/Filter.esm.js +1 -1
  3. package/dist/ImpactCard/ImpactCard.cjs.js +41 -0
  4. package/dist/ImpactCard/ImpactCard.esm.js +33 -0
  5. package/dist/ImpactCard/package.json +7 -0
  6. package/dist/InformationCard/InformationCard.cjs.js +6 -3
  7. package/dist/InformationCard/InformationCard.esm.js +8 -5
  8. package/dist/MediaCard/MediaCard.cjs.js +7 -5
  9. package/dist/MediaCard/MediaCard.esm.js +9 -7
  10. package/dist/Select/Select.cjs.js +1 -1
  11. package/dist/Select/Select.esm.js +1 -1
  12. package/dist/SiteHeaderV2/SiteHeaderV2.cjs.js +2 -1
  13. package/dist/SiteHeaderV2/SiteHeaderV2.esm.js +2 -1
  14. package/dist/TextArea/TextArea.cjs.js +8 -6
  15. package/dist/TextArea/TextArea.esm.js +8 -6
  16. package/dist/TypographyCard/TypographyCard.cjs.js +9 -7
  17. package/dist/TypographyCard/TypographyCard.esm.js +10 -8
  18. package/dist/_shared/cjs/{CardFooter-4a68a862.js → CardFooter-ff015d7d.js} +9 -7
  19. package/dist/_shared/cjs/{Filter-1bde635c.js → Filter-f4b73f5d.js} +16 -12
  20. package/dist/_shared/cjs/{SiteHeaderV2-301c765c.js → SiteHeaderV2-e0735a9d.js} +42 -32
  21. package/dist/_shared/esm/{CardFooter-a08b70ee.js → CardFooter-e13f77b0.js} +9 -7
  22. package/dist/_shared/esm/{Filter-58a42358.js → Filter-ad254e3d.js} +16 -12
  23. package/dist/_shared/esm/{SiteHeaderV2-0096e25b.js → SiteHeaderV2-c74b811b.js} +43 -33
  24. package/dist/index.es.js +112 -68
  25. package/dist/index.es.js.map +1 -1
  26. package/dist/index.js +112 -67
  27. package/dist/index.js.map +1 -1
  28. package/dist/styles.css +4 -4
  29. package/dist/types/components/Filter/FilterItems/FilterItems.d.ts +1 -0
  30. package/dist/types/components/ImpactCard/ImpactCard.d.ts +52 -0
  31. package/dist/types/components/ImpactCard/index.d.ts +1 -0
  32. package/dist/types/components/InformationCard/InformationCard.d.ts +4 -0
  33. package/dist/types/components/MediaCard/MediaCard.d.ts +4 -0
  34. package/dist/types/components/SiteHeaderV2/SiteHeaderV2.d.ts +5 -0
  35. package/dist/types/components/TypographyCard/TypographyCard.d.ts +4 -0
  36. package/dist/types/components/index.d.ts +1 -0
  37. package/dist/types/private-components/CardFooter/CardFooter.d.ts +1 -1
  38. package/dist/types/styles.d.ts +1 -0
  39. package/package.json +1 -1
@@ -20,7 +20,7 @@ var FilterControl = function (_a) {
20
20
  return (React__default["default"].createElement("button", { className: index.classNames("arc-FilterControl", {
21
21
  "arc-FilterControl--onDarkSurface": surface === "dark",
22
22
  "arc-FilterControl--selected": selected
23
- }), onClick: onClickHandler, tabIndex: 0 },
23
+ }), onClick: onClickHandler, tabIndex: 0, "aria-pressed": selected },
24
24
  React__default["default"].createElement("div", { className: "arc-FilterControl-text" }, children)));
25
25
  };
26
26
 
@@ -38,16 +38,20 @@ var FilterItem = function (_a) {
38
38
  };
39
39
 
40
40
  var FilterItems = function (_a) {
41
- var children = _a.children, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = filterDataAttrs.__rest(_a, ["children", "displayType"]);
42
- return (React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames("arc-FilterItems", {
43
- "arc-FilterItems--list": displayType === "list",
44
- "arc-FilterItems--grid": displayType === "grid"
45
- }) }, filterDataAttrs.filterDataAttrs(props)), displayType === "list"
46
- ? React__default["default"].Children.toArray(children).map(function (child, index, array) { return (React__default["default"].createElement(React__default["default"].Fragment, { key: index },
47
- child,
48
- index !== array.length - 1 && (React__default["default"].createElement(React__default["default"].Fragment, null,
49
- React__default["default"].createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
50
- : children));
41
+ var children = _a.children, error = _a.error, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = filterDataAttrs.__rest(_a, ["children", "error", "displayType"]);
42
+ return React__default["default"].Children.toArray(children).length > 0 ? (React__default["default"].createElement("div", null,
43
+ React__default["default"].createElement("div", { className: "arc-FilterItems-offscreen", "aria-live": "assertive" }, React__default["default"].Children.toArray(children).length > 0
44
+ ? "".concat(React__default["default"].Children.toArray(children).length, " records listed.")
45
+ : null),
46
+ React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames("arc-FilterItems", {
47
+ "arc-FilterItems--list": displayType === "list",
48
+ "arc-FilterItems--grid": displayType === "grid"
49
+ }) }, filterDataAttrs.filterDataAttrs(props)), displayType === "list"
50
+ ? React__default["default"].Children.toArray(children).map(function (child, index, array) { return (React__default["default"].createElement(React__default["default"].Fragment, { key: index },
51
+ child,
52
+ index !== array.length - 1 && (React__default["default"].createElement(React__default["default"].Fragment, null,
53
+ React__default["default"].createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
54
+ : children))) : (React__default["default"].createElement("div", { "aria-live": "assertive" }, error));
51
55
  };
52
56
 
53
57
  /** use `Filter` for interactive elements that filter and categorise page content. */
@@ -107,7 +111,7 @@ var Filter = function (_a) {
107
111
  React__default["default"].createElement(FilterControls, { controlsAlignment: controlsAlignment }, controls &&
108
112
  React__default["default"].isValidElement(controls) &&
109
113
  React__default["default"].Children.map(controls.props.children, function (control, index) { return (React__default["default"].createElement(FilterControl, { key: index, onClick: function () { return handleControlClick(control.props.children); }, isSelected: control.props.isSelected }, control.props.children)); })),
110
- filteredItems.length === 0 ? (React__default["default"].createElement(React__default["default"].Fragment, null, error)) : (React__default["default"].createElement(FilterItems, { displayType: displayType }, filteredItems.map(function (item) { return item.props.children; })))));
114
+ React__default["default"].createElement(FilterItems, { displayType: displayType, error: error }, filteredItems.map(function (item) { return item.props.children; }))));
111
115
  };
112
116
  Filter.Controls = FilterControls;
113
117
  Filter.Control = FilterControl;
@@ -8,6 +8,7 @@ var BrandLogo = require('./BrandLogo-aea340c8.js');
8
8
  var Surface = require('./Surface-038db6e1.js');
9
9
  var handleLinkClick = require('./handle-link-click-17a44cf4.js');
10
10
  var BtIconChevronRightMid_esm = require('./BtIconChevronRightMid.esm-d01ebbd4.js');
11
+ var ConditionalWrapper = require('./ConditionalWrapper-be3b2625.js');
11
12
  var BtIconChevronRight2Px_esm = require('./BtIconChevronRight2Px.esm-dbf8cbee.js');
12
13
  var Button = require('./Button-84533dc8.js');
13
14
  var suffixModifier = require('./suffix-modifier-64dcd338.js');
@@ -24,8 +25,8 @@ var Item = function (_a) {
24
25
  return (React__default["default"].createElement("li", filterDataAttrs.__assign({ className: index.classNames((_b = {},
25
26
  _b["arc-SiteHeaderV2Item"] = true,
26
27
  _b["arc-SiteHeaderV2Item--emphasised"] = true,
27
- _b)) }, filterDataAttrs.filterDataAttrs(props)),
28
- React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href },
28
+ _b)) }, filterDataAttrs.filterDataAttrs(props), { role: "none" }),
29
+ React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href, role: "menuitem" },
29
30
  children,
30
31
  React__default["default"].createElement("span", { className: "arc-SiteHeaderV2Item-linkIcon" },
31
32
  React__default["default"].createElement(BtIconChevronRightMid_esm.BtIconChevronRightMid, null)))));
@@ -33,7 +34,6 @@ var Item = function (_a) {
33
34
 
34
35
  var ItemGroup = function (_a) {
35
36
  var children = _a.children, href = _a.href, title = _a.title, subtitle = _a.subtitle, onClick = _a.onClick, viewAllTitle = _a.viewAllTitle, props = filterDataAttrs.__rest(_a, ["children", "href", "title", "subtitle", "onClick", "viewAllTitle"]);
36
- var _b = React.useState(false), hasClientSideJavaScript = _b[0], setHasClientSideJavaScript = _b[1];
37
37
  var isMinWidthArcBreakpointL = useMediaQuery.useMediaQuery("(min-width: ".concat(useMediaQuery.ArcBreakpointL, "px)"));
38
38
  React.useEffect(function () {
39
39
  React__default["default"].Children.map(children, function (item) {
@@ -42,27 +42,18 @@ var ItemGroup = function (_a) {
42
42
  }
43
43
  });
44
44
  }, [children]);
45
- React.useEffect(function () {
46
- // useEffect does not run in ReactDomServer renders
47
- setHasClientSideJavaScript(true);
48
- }, [setHasClientSideJavaScript]);
49
- var ElementType = "div";
50
- if (title) {
51
- ElementType = "details";
52
- }
45
+ var ElementType = title ? "details" : "div";
53
46
  return (React__default["default"].createElement("li", { className: "arc-SiteHeaderV2ItemGroup" },
54
47
  React__default["default"].createElement(ElementType, filterDataAttrs.__assign({ className: "arc-SiteHeaderV2ItemGroup-details", open: Boolean(title && isMinWidthArcBreakpointL) }, filterDataAttrs.filterDataAttrs(props)),
55
48
  title ? (React__default["default"].createElement(React__default["default"].Fragment, null,
56
- React__default["default"].createElement("summary", { className: "arc-SiteHeaderV2ItemGroup-summary", tabIndex: isMinWidthArcBreakpointL ? -1 : 0 }, href ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
57
- React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({
58
- handler: onClick
59
- }), className: "arc-SiteHeaderV2ItemGroup-title", href: href, tabIndex: !hasClientSideJavaScript || isMinWidthArcBreakpointL
60
- ? 0
61
- : -1 }, title),
49
+ React__default["default"].createElement("summary", { tabIndex: isMinWidthArcBreakpointL ? -1 : 0, className: "arc-SiteHeaderV2ItemGroup-summary" }, href ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
50
+ React__default["default"].createElement(ConditionalWrapper.ConditionalWrapper, { condition: isMinWidthArcBreakpointL, wrapper: function (children) { return (React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({
51
+ handler: onClick
52
+ }), className: "arc-SiteHeaderV2ItemGroup-title", href: href }, children)); }, fallback: function (children) { return (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, children)); } }, title),
62
53
  React__default["default"].createElement("span", { className: "arc-SiteHeaderV2ItemGroup-titleIcon" },
63
54
  React__default["default"].createElement(BtIconChevronRightMid_esm.BtIconChevronRightMid, null)))) : (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, title))),
64
55
  React__default["default"].createElement("span", { className: "arc-SiteHeaderV2ItemGroup-subtitle" }, subtitle))) : null,
65
- React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items" },
56
+ React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items", role: "menubar" },
66
57
  children,
67
58
  href && title ? (React__default["default"].createElement("li", { className: "arc-SiteHeaderV2Item arc-SiteHeaderV2Item--viewAll" },
68
59
  React__default["default"].createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick.handleLinkClick({
@@ -79,8 +70,8 @@ var Column = function (_a) {
79
70
  }
80
71
  });
81
72
  }, [children]);
82
- return (React__default["default"].createElement("li", filterDataAttrs.__assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs.filterDataAttrs(props)),
83
- React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2Column-items" }, children)));
73
+ return (React__default["default"].createElement("li", filterDataAttrs.__assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs.filterDataAttrs(props), { role: "none" }),
74
+ React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2Column-items", role: "none" }, children)));
84
75
  };
85
76
 
86
77
  var BackButton = function (_a) {
@@ -98,19 +89,21 @@ var Panel = function (_a) {
98
89
  var _b, _c, _d, _e, _f;
99
90
  var children = _a.children, navItemRef = _a.navItemRef, isNavItem = _a.isNavItem, open = _a.open, setOpen = _a.setOpen, setOpenPanelOnFirstClick = _a.setOpenPanelOnFirstClick, subNavItemRef = _a.subNavItemRef; _a.navLink; var _h = _a.subNavLink, subNavLink = _h === void 0 ? "" : _h, title = _a.title, subtitle = _a.subtitle, viewAll = _a.viewAll, withSubNav = _a.withSubNav; _a.fade; var isPrimary = _a.isPrimary, props = filterDataAttrs.__rest(_a, ["children", "navItemRef", "isNavItem", "open", "setOpen", "setOpenPanelOnFirstClick", "subNavItemRef", "navLink", "subNavLink", "title", "subtitle", "viewAll", "withSubNav", "fade", "isPrimary"]);
100
91
  var isMinWidthArcBreakpointL = useMediaQuery.useMediaQuery("(min-width: ".concat(useMediaQuery.ArcBreakpointL, "px)"));
92
+ var menubarRef = useHeaderV2Context().menubarRef;
101
93
  React.useEffect(function () {
102
94
  // Where appropriate, close the Panel when clicking outside of it,
103
95
  // by listening to clicks on the entire document and acting accordingly.
104
96
  var handleClick = function (e) {
105
- var _a, _b;
97
+ var _a, _b, _c, _d;
98
+ (_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
106
99
  // Don't close the Panel…
107
100
  if (
108
101
  // The click is inside the current SubNavItem.
109
- ((_a = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) ||
102
+ ((_c = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _c === void 0 ? void 0 : _c.contains(e.target)) ||
110
103
  // The click is inside the current NavItem
111
104
  // and the Panel is not inside a SubNavItem.
112
105
  // and the target is not a link
113
- (((_b = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _b === void 0 ? void 0 : _b.contains(e.target)) &&
106
+ (((_d = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _d === void 0 ? void 0 : _d.contains(e.target)) &&
114
107
  !subNavItemRef &&
115
108
  !e.target.getAttribute("href")) ||
116
109
  // The Panel is inside a SubNavItem
@@ -142,9 +135,12 @@ var Panel = function (_a) {
142
135
  subNavItemRef,
143
136
  subNavLink,
144
137
  setOpenPanelOnFirstClick,
138
+ menubarRef,
145
139
  ]);
146
140
  React.useEffect(function () {
147
141
  var handleClick = function (e) {
142
+ var _a, _b;
143
+ (_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
148
144
  // Close the Panel…
149
145
  if (e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel")) {
150
146
  setOpenPanelOnFirstClick(false);
@@ -160,9 +156,10 @@ var Panel = function (_a) {
160
156
  return function () {
161
157
  document.removeEventListener("click", handleClick);
162
158
  };
163
- }, [navItemRef, setOpenPanelOnFirstClick]);
159
+ }, [navItemRef, setOpenPanelOnFirstClick, menubarRef]);
164
160
  React.useEffect(function () {
165
161
  var handleKeydown = function (e) {
162
+ var _a, _b;
166
163
  // Check the viewport width at time of press
167
164
  var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(useMediaQuery.ArcBreakpointL, "px)")).matches;
168
165
  if (e.key === "Escape" || e.keyCode === 27) {
@@ -173,12 +170,15 @@ var Panel = function (_a) {
173
170
  }
174
171
  return setOpen(false);
175
172
  }
173
+ if (e.key === "Tab") {
174
+ (_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.remove("noFocus");
175
+ }
176
176
  };
177
177
  window.addEventListener("keydown", handleKeydown);
178
178
  return function () {
179
179
  window.removeEventListener("keydown", handleKeydown);
180
180
  };
181
- }, [setOpen, subNavItemRef]);
181
+ }, [setOpen, subNavItemRef, menubarRef]);
182
182
  return (React__default["default"].createElement("div", { style: { display: "flex" } },
183
183
  React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames((_b = {},
184
184
  _b["arc-SiteHeaderV2Panel"] = true,
@@ -267,8 +267,9 @@ var NavItem = function (_a) {
267
267
  handler: onClick
268
268
  }), className: "arc-SiteHeaderV2NavItem-link", href: href }, title)) : null) : (React__default["default"].createElement(React__default["default"].Fragment, null,
269
269
  React__default["default"].createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
270
- React__default["default"].createElement("button", { "aria-expanded": panelOpen, className: index.classNames((_c = {},
270
+ React__default["default"].createElement("button", { "aria-expanded": panelOpen, role: "menuitem", "aria-haspopup": "true", "aria-label": title, className: index.classNames((_c = {},
271
271
  _c["arc-SiteHeaderV2NavItem-link"] = true,
272
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
272
273
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
273
274
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
274
275
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
@@ -406,10 +407,11 @@ var NavItemWithSubNav = function (_a) {
406
407
  ? horizontalPanelOpen
407
408
  : panelOpen,
408
409
  _b["arc-SiteHeaderV2NavItemWithSubNav-active"] = panelOpen || (opensFirstWithPanel && openSecondaryWithSubNav),
409
- _b)), ref: navItem }, filterDataAttrs.filterDataAttrs(props)),
410
+ _b)), role: "none", ref: navItem }, filterDataAttrs.filterDataAttrs(props)),
410
411
  React__default["default"].createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
411
- React__default["default"].createElement("button", { "aria-expanded": horizontalPanelOpen, className: index.classNames((_c = {},
412
+ React__default["default"].createElement("button", { "aria-expanded": horizontalPanelOpen || panelOpen, role: "menuitem", "aria-label": title, "aria-haspopup": "true", tabIndex: 0, className: index.classNames((_c = {},
412
413
  _c["arc-SiteHeaderV2NavItem-link"] = true,
414
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
413
415
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
414
416
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
415
417
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
@@ -542,7 +544,7 @@ var VerticalDivider = function () {
542
544
  return React__default["default"].createElement("li", { className: "arc-SiteHeaderV2VerticalDivider-line" });
543
545
  };
544
546
 
545
- var defaultContext = { transparent: false };
547
+ var defaultContext = { transparent: false, menubarRef: null };
546
548
  var Context = React.createContext(defaultContext);
547
549
  var Provider = Context.Provider;
548
550
  /**
@@ -554,6 +556,7 @@ var SiteHeaderV2 = function (_a) {
554
556
  var _j = React.useState(false), hasClientSideJavaScript = _j[0], setHasClientSideJavaScript = _j[1];
555
557
  var _k = React.useState(false), menuOpen = _k[0], setMenuOpen = _k[1];
556
558
  var isMinWidthArcBreakpointL = useMediaQuery.useMediaQuery("(min-width: ".concat(useMediaQuery.ArcBreakpointL, "px)"));
559
+ var menubarRef = React.useRef();
557
560
  React.useEffect(function () {
558
561
  React__default["default"].Children.map(children, function (item) {
559
562
  if (item &&
@@ -587,6 +590,10 @@ var SiteHeaderV2 = function (_a) {
587
590
  window.removeEventListener("keydown", handleKeydown);
588
591
  };
589
592
  }, [setMenuOpen]);
593
+ React.useEffect(function () {
594
+ var _a, _b;
595
+ (_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
596
+ }, []);
590
597
  React.useEffect(function () {
591
598
  var handleClick = function (e) {
592
599
  if (e.target.getAttribute("href")) {
@@ -602,7 +609,7 @@ var SiteHeaderV2 = function (_a) {
602
609
  // useEffect does not run in ReactDomServer renders
603
610
  setHasClientSideJavaScript(true);
604
611
  }, [setHasClientSideJavaScript]);
605
- return (React__default["default"].createElement(Provider, { value: { transparent: isTransparent } },
612
+ return (React__default["default"].createElement(Provider, { value: { transparent: isTransparent, menubarRef: menubarRef } },
606
613
  React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames((_b = {},
607
614
  _b["arc-SiteHeaderV2"] = true,
608
615
  _b["arc-SiteHeaderV2--menuOpen"] = menuOpen,
@@ -619,8 +626,8 @@ var SiteHeaderV2 = function (_a) {
619
626
  children && (React__default["default"].createElement("nav", { className: "arc-SiteHeaderV2-nav" },
620
627
  React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-menuButton" },
621
628
  React__default["default"].createElement(MenuButton, { menuOpen: menuOpen, setMenuOpen: setMenuOpen })),
622
- React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-main" },
623
- React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2-navItems" }, children),
629
+ React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-main", tabIndex: -1 },
630
+ React__default["default"].createElement("ul", { role: "menubar", "aria-label": "navigation", ref: menubarRef, className: "arc-SiteHeaderV2-navItems" }, children),
624
631
  hasLogin && (React__default["default"].createElement(React__default["default"].Fragment, null, loginOnClick ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-mobileButtonContainer" },
625
632
  React__default["default"].createElement("button", { className: "arc-SiteHeaderV2-mobileLogin", onClick: loginOnClick },
626
633
  loginTitle,
@@ -635,6 +642,9 @@ var SiteHeaderV2 = function (_a) {
635
642
  basket ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-basket" }, basket)) : null,
636
643
  hasLogin && (React__default["default"].createElement(React__default["default"].Fragment, null, loginOnClick ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-loginLink arc-SiteHeaderV2-loginLink--function", onClick: loginOnClick }, loginTitle)) : (React__default["default"].createElement("a", { className: "arc-SiteHeaderV2-loginLink", href: loginHref }, loginTitle)))))))))));
637
644
  };
645
+ function useHeaderV2Context() {
646
+ return React.useContext(Context);
647
+ }
638
648
  SiteHeaderV2.Column = Column;
639
649
  SiteHeaderV2.Item = Item;
640
650
  SiteHeaderV2.ItemGroup = ItemGroup;
@@ -47,7 +47,7 @@ const BtIconPlayFill = (props) =>
47
47
  );
48
48
 
49
49
  var CardFooter = function (_a) {
50
- var metaText = _a.metaText, _b = _a.buttonIcon, buttonIcon = _b === void 0 ? "arrow" : _b, _c = _a.isDarkPathway, isDarkPathway = _c === void 0 ? false : _c, _d = _a.showButton, showButton = _d === void 0 ? true : _d, _e = _a.showFilledIcon, showFilledIcon = _e === void 0 ? false : _e;
50
+ var metaText = _a.metaText, _b = _a.buttonIcon, buttonIcon = _b === void 0 ? "arrow" : _b, _c = _a.isDarkPathway, isDarkPathway = _c === void 0 ? false : _c, _d = _a.showButton, showButton = _d === void 0 ? true : _d, _e = _a.isHovered, isHovered = _e === void 0 ? false : _e;
51
51
  var icons = {
52
52
  arrow: {
53
53
  regular: BtIconArrowRight,
@@ -59,16 +59,18 @@ var CardFooter = function (_a) {
59
59
  }
60
60
  };
61
61
  return (React__default.createElement("div", { className: classNames("arc-CardFooter", {
62
- "arc-CardFooter--darkPathway": isDarkPathway,
63
- "arc-CardFooter--showFilledIcon": showFilledIcon
62
+ "arc-CardFooter--darkPathway": isDarkPathway
64
63
  }) },
65
64
  React__default.createElement("div", { className: "arc-CardFooter-metaTextContainer" }, metaText && (React__default.createElement("span", { className: "arc-CardFooter-metaText" }, metaText))),
66
65
  showButton && (React__default.createElement("div", null,
67
66
  React__default.createElement("div", { className: "arc-CardFooter-button" },
68
- React__default.createElement("div", { className: classNames("arc-CardFooter-buttonIcon", "arc-CardFooter-buttonIcon--regular") },
69
- React__default.createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 })),
70
- React__default.createElement("div", { className: "arc-CardFooter-buttonIcon arc-CardFooter-buttonIcon--filled" },
71
- React__default.createElement(Icon, { icon: icons[buttonIcon].filled, size: 40 })))))));
67
+ React__default.createElement("div", { className: "arc-CardFooter-buttonIcon" },
68
+ React__default.createElement("div", { className: classNames("arc-CardFooter-buttonIconRight", {
69
+ "arc-CardFooter-buttonIconRight--isHovered": isHovered
70
+ }) },
71
+ React__default.createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 })),
72
+ React__default.createElement("div", { className: "arc-CardFooter-buttonIconLeft" },
73
+ React__default.createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 }))))))));
72
74
  };
73
75
 
74
76
  export { CardFooter as C };
@@ -14,7 +14,7 @@ var FilterControl = function (_a) {
14
14
  return (React__default.createElement("button", { className: classNames("arc-FilterControl", {
15
15
  "arc-FilterControl--onDarkSurface": surface === "dark",
16
16
  "arc-FilterControl--selected": selected
17
- }), onClick: onClickHandler, tabIndex: 0 },
17
+ }), onClick: onClickHandler, tabIndex: 0, "aria-pressed": selected },
18
18
  React__default.createElement("div", { className: "arc-FilterControl-text" }, children)));
19
19
  };
20
20
 
@@ -32,16 +32,20 @@ var FilterItem = function (_a) {
32
32
  };
33
33
 
34
34
  var FilterItems = function (_a) {
35
- var children = _a.children, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = __rest(_a, ["children", "displayType"]);
36
- return (React__default.createElement("div", __assign({ className: classNames("arc-FilterItems", {
37
- "arc-FilterItems--list": displayType === "list",
38
- "arc-FilterItems--grid": displayType === "grid"
39
- }) }, filterDataAttrs(props)), displayType === "list"
40
- ? React__default.Children.toArray(children).map(function (child, index, array) { return (React__default.createElement(React__default.Fragment, { key: index },
41
- child,
42
- index !== array.length - 1 && (React__default.createElement(React__default.Fragment, null,
43
- React__default.createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
44
- : children));
35
+ var children = _a.children, error = _a.error, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = __rest(_a, ["children", "error", "displayType"]);
36
+ return React__default.Children.toArray(children).length > 0 ? (React__default.createElement("div", null,
37
+ React__default.createElement("div", { className: "arc-FilterItems-offscreen", "aria-live": "assertive" }, React__default.Children.toArray(children).length > 0
38
+ ? "".concat(React__default.Children.toArray(children).length, " records listed.")
39
+ : null),
40
+ React__default.createElement("div", __assign({ className: classNames("arc-FilterItems", {
41
+ "arc-FilterItems--list": displayType === "list",
42
+ "arc-FilterItems--grid": displayType === "grid"
43
+ }) }, filterDataAttrs(props)), displayType === "list"
44
+ ? React__default.Children.toArray(children).map(function (child, index, array) { return (React__default.createElement(React__default.Fragment, { key: index },
45
+ child,
46
+ index !== array.length - 1 && (React__default.createElement(React__default.Fragment, null,
47
+ React__default.createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
48
+ : children))) : (React__default.createElement("div", { "aria-live": "assertive" }, error));
45
49
  };
46
50
 
47
51
  /** use `Filter` for interactive elements that filter and categorise page content. */
@@ -101,7 +105,7 @@ var Filter = function (_a) {
101
105
  React__default.createElement(FilterControls, { controlsAlignment: controlsAlignment }, controls &&
102
106
  React__default.isValidElement(controls) &&
103
107
  React__default.Children.map(controls.props.children, function (control, index) { return (React__default.createElement(FilterControl, { key: index, onClick: function () { return handleControlClick(control.props.children); }, isSelected: control.props.isSelected }, control.props.children)); })),
104
- filteredItems.length === 0 ? (React__default.createElement(React__default.Fragment, null, error)) : (React__default.createElement(FilterItems, { displayType: displayType }, filteredItems.map(function (item) { return item.props.children; })))));
108
+ React__default.createElement(FilterItems, { displayType: displayType, error: error }, filteredItems.map(function (item) { return item.props.children; }))));
105
109
  };
106
110
  Filter.Controls = FilterControls;
107
111
  Filter.Control = FilterControl;
@@ -1,11 +1,12 @@
1
1
  import { _ as __rest, a as __assign, f as filterDataAttrs } from './filter-data-attrs-ea8f4ed4.js';
2
2
  import { u as useMediaQuery, b as ArcBreakpointL } from './use-media-query-4c807227.js';
3
3
  import { c as classNames } from './index-2e73c2e9.js';
4
- import React__default, { useState, useEffect, Fragment, useRef, createContext, useContext } from 'react';
4
+ import React__default, { useEffect, Fragment, useRef, useState, createContext, useContext } from 'react';
5
5
  import { B as BrandLogo } from './BrandLogo-1af78f76.js';
6
6
  import { S as Surface } from './Surface-0ca6817d.js';
7
7
  import { h as handleLinkClick } from './handle-link-click-f64f55a2.js';
8
8
  import { B as BtIconChevronRightMid } from './BtIconChevronRightMid.esm-32268f1a.js';
9
+ import { C as ConditionalWrapper } from './ConditionalWrapper-59be8f35.js';
9
10
  import { B as BtIconChevronLeft2Px, a as BtIconChevronRight2Px } from './BtIconChevronRight2Px.esm-75e92636.js';
10
11
  import { B as Button } from './Button-3f294e64.js';
11
12
  import { s as suffixModifier } from './suffix-modifier-3d548e45.js';
@@ -18,8 +19,8 @@ var Item = function (_a) {
18
19
  return (React__default.createElement("li", __assign({ className: classNames((_b = {},
19
20
  _b["arc-SiteHeaderV2Item"] = true,
20
21
  _b["arc-SiteHeaderV2Item--emphasised"] = true,
21
- _b)) }, filterDataAttrs(props)),
22
- React__default.createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href },
22
+ _b)) }, filterDataAttrs(props), { role: "none" }),
23
+ React__default.createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href, role: "menuitem" },
23
24
  children,
24
25
  React__default.createElement("span", { className: "arc-SiteHeaderV2Item-linkIcon" },
25
26
  React__default.createElement(BtIconChevronRightMid, null)))));
@@ -27,7 +28,6 @@ var Item = function (_a) {
27
28
 
28
29
  var ItemGroup = function (_a) {
29
30
  var children = _a.children, href = _a.href, title = _a.title, subtitle = _a.subtitle, onClick = _a.onClick, viewAllTitle = _a.viewAllTitle, props = __rest(_a, ["children", "href", "title", "subtitle", "onClick", "viewAllTitle"]);
30
- var _b = useState(false), hasClientSideJavaScript = _b[0], setHasClientSideJavaScript = _b[1];
31
31
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
32
32
  useEffect(function () {
33
33
  React__default.Children.map(children, function (item) {
@@ -36,27 +36,18 @@ var ItemGroup = function (_a) {
36
36
  }
37
37
  });
38
38
  }, [children]);
39
- useEffect(function () {
40
- // useEffect does not run in ReactDomServer renders
41
- setHasClientSideJavaScript(true);
42
- }, [setHasClientSideJavaScript]);
43
- var ElementType = "div";
44
- if (title) {
45
- ElementType = "details";
46
- }
39
+ var ElementType = title ? "details" : "div";
47
40
  return (React__default.createElement("li", { className: "arc-SiteHeaderV2ItemGroup" },
48
41
  React__default.createElement(ElementType, __assign({ className: "arc-SiteHeaderV2ItemGroup-details", open: Boolean(title && isMinWidthArcBreakpointL) }, filterDataAttrs(props)),
49
42
  title ? (React__default.createElement(React__default.Fragment, null,
50
- React__default.createElement("summary", { className: "arc-SiteHeaderV2ItemGroup-summary", tabIndex: isMinWidthArcBreakpointL ? -1 : 0 }, href ? (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
51
- React__default.createElement("a", { onClick: handleLinkClick({
52
- handler: onClick
53
- }), className: "arc-SiteHeaderV2ItemGroup-title", href: href, tabIndex: !hasClientSideJavaScript || isMinWidthArcBreakpointL
54
- ? 0
55
- : -1 }, title),
43
+ React__default.createElement("summary", { tabIndex: isMinWidthArcBreakpointL ? -1 : 0, className: "arc-SiteHeaderV2ItemGroup-summary" }, href ? (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
44
+ React__default.createElement(ConditionalWrapper, { condition: isMinWidthArcBreakpointL, wrapper: function (children) { return (React__default.createElement("a", { onClick: handleLinkClick({
45
+ handler: onClick
46
+ }), className: "arc-SiteHeaderV2ItemGroup-title", href: href }, children)); }, fallback: function (children) { return (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, children)); } }, title),
56
47
  React__default.createElement("span", { className: "arc-SiteHeaderV2ItemGroup-titleIcon" },
57
48
  React__default.createElement(BtIconChevronRightMid, null)))) : (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, title))),
58
49
  React__default.createElement("span", { className: "arc-SiteHeaderV2ItemGroup-subtitle" }, subtitle))) : null,
59
- React__default.createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items" },
50
+ React__default.createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items", role: "menubar" },
60
51
  children,
61
52
  href && title ? (React__default.createElement("li", { className: "arc-SiteHeaderV2Item arc-SiteHeaderV2Item--viewAll" },
62
53
  React__default.createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick({
@@ -73,8 +64,8 @@ var Column = function (_a) {
73
64
  }
74
65
  });
75
66
  }, [children]);
76
- return (React__default.createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props)),
77
- React__default.createElement("ul", { className: "arc-SiteHeaderV2Column-items" }, children)));
67
+ return (React__default.createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props), { role: "none" }),
68
+ React__default.createElement("ul", { className: "arc-SiteHeaderV2Column-items", role: "none" }, children)));
78
69
  };
79
70
 
80
71
  var BackButton = function (_a) {
@@ -92,19 +83,21 @@ var Panel = function (_a) {
92
83
  var _b, _c, _d, _e, _f;
93
84
  var children = _a.children, navItemRef = _a.navItemRef, isNavItem = _a.isNavItem, open = _a.open, setOpen = _a.setOpen, setOpenPanelOnFirstClick = _a.setOpenPanelOnFirstClick, subNavItemRef = _a.subNavItemRef; _a.navLink; var _h = _a.subNavLink, subNavLink = _h === void 0 ? "" : _h, title = _a.title, subtitle = _a.subtitle, viewAll = _a.viewAll, withSubNav = _a.withSubNav; _a.fade; var isPrimary = _a.isPrimary, props = __rest(_a, ["children", "navItemRef", "isNavItem", "open", "setOpen", "setOpenPanelOnFirstClick", "subNavItemRef", "navLink", "subNavLink", "title", "subtitle", "viewAll", "withSubNav", "fade", "isPrimary"]);
94
85
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
86
+ var menubarRef = useHeaderV2Context().menubarRef;
95
87
  useEffect(function () {
96
88
  // Where appropriate, close the Panel when clicking outside of it,
97
89
  // by listening to clicks on the entire document and acting accordingly.
98
90
  var handleClick = function (e) {
99
- var _a, _b;
91
+ var _a, _b, _c, _d;
92
+ (_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
100
93
  // Don't close the Panel…
101
94
  if (
102
95
  // The click is inside the current SubNavItem.
103
- ((_a = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) ||
96
+ ((_c = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _c === void 0 ? void 0 : _c.contains(e.target)) ||
104
97
  // The click is inside the current NavItem
105
98
  // and the Panel is not inside a SubNavItem.
106
99
  // and the target is not a link
107
- (((_b = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _b === void 0 ? void 0 : _b.contains(e.target)) &&
100
+ (((_d = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _d === void 0 ? void 0 : _d.contains(e.target)) &&
108
101
  !subNavItemRef &&
109
102
  !e.target.getAttribute("href")) ||
110
103
  // The Panel is inside a SubNavItem
@@ -136,9 +129,12 @@ var Panel = function (_a) {
136
129
  subNavItemRef,
137
130
  subNavLink,
138
131
  setOpenPanelOnFirstClick,
132
+ menubarRef,
139
133
  ]);
140
134
  useEffect(function () {
141
135
  var handleClick = function (e) {
136
+ var _a, _b;
137
+ (_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
142
138
  // Close the Panel…
143
139
  if (e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel")) {
144
140
  setOpenPanelOnFirstClick(false);
@@ -154,9 +150,10 @@ var Panel = function (_a) {
154
150
  return function () {
155
151
  document.removeEventListener("click", handleClick);
156
152
  };
157
- }, [navItemRef, setOpenPanelOnFirstClick]);
153
+ }, [navItemRef, setOpenPanelOnFirstClick, menubarRef]);
158
154
  useEffect(function () {
159
155
  var handleKeydown = function (e) {
156
+ var _a, _b;
160
157
  // Check the viewport width at time of press
161
158
  var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(ArcBreakpointL, "px)")).matches;
162
159
  if (e.key === "Escape" || e.keyCode === 27) {
@@ -167,12 +164,15 @@ var Panel = function (_a) {
167
164
  }
168
165
  return setOpen(false);
169
166
  }
167
+ if (e.key === "Tab") {
168
+ (_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.remove("noFocus");
169
+ }
170
170
  };
171
171
  window.addEventListener("keydown", handleKeydown);
172
172
  return function () {
173
173
  window.removeEventListener("keydown", handleKeydown);
174
174
  };
175
- }, [setOpen, subNavItemRef]);
175
+ }, [setOpen, subNavItemRef, menubarRef]);
176
176
  return (React__default.createElement("div", { style: { display: "flex" } },
177
177
  React__default.createElement("div", __assign({ className: classNames((_b = {},
178
178
  _b["arc-SiteHeaderV2Panel"] = true,
@@ -261,8 +261,9 @@ var NavItem = function (_a) {
261
261
  handler: onClick
262
262
  }), className: "arc-SiteHeaderV2NavItem-link", href: href }, title)) : null) : (React__default.createElement(React__default.Fragment, null,
263
263
  React__default.createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
264
- React__default.createElement("button", { "aria-expanded": panelOpen, className: classNames((_c = {},
264
+ React__default.createElement("button", { "aria-expanded": panelOpen, role: "menuitem", "aria-haspopup": "true", "aria-label": title, className: classNames((_c = {},
265
265
  _c["arc-SiteHeaderV2NavItem-link"] = true,
266
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
266
267
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
267
268
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
268
269
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
@@ -400,10 +401,11 @@ var NavItemWithSubNav = function (_a) {
400
401
  ? horizontalPanelOpen
401
402
  : panelOpen,
402
403
  _b["arc-SiteHeaderV2NavItemWithSubNav-active"] = panelOpen || (opensFirstWithPanel && openSecondaryWithSubNav),
403
- _b)), ref: navItem }, filterDataAttrs(props)),
404
+ _b)), role: "none", ref: navItem }, filterDataAttrs(props)),
404
405
  React__default.createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
405
- React__default.createElement("button", { "aria-expanded": horizontalPanelOpen, className: classNames((_c = {},
406
+ React__default.createElement("button", { "aria-expanded": horizontalPanelOpen || panelOpen, role: "menuitem", "aria-label": title, "aria-haspopup": "true", tabIndex: 0, className: classNames((_c = {},
406
407
  _c["arc-SiteHeaderV2NavItem-link"] = true,
408
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
407
409
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
408
410
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
409
411
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
@@ -536,7 +538,7 @@ var VerticalDivider = function () {
536
538
  return React__default.createElement("li", { className: "arc-SiteHeaderV2VerticalDivider-line" });
537
539
  };
538
540
 
539
- var defaultContext = { transparent: false };
541
+ var defaultContext = { transparent: false, menubarRef: null };
540
542
  var Context = createContext(defaultContext);
541
543
  var Provider = Context.Provider;
542
544
  /**
@@ -548,6 +550,7 @@ var SiteHeaderV2 = function (_a) {
548
550
  var _j = useState(false), hasClientSideJavaScript = _j[0], setHasClientSideJavaScript = _j[1];
549
551
  var _k = useState(false), menuOpen = _k[0], setMenuOpen = _k[1];
550
552
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
553
+ var menubarRef = useRef();
551
554
  useEffect(function () {
552
555
  React__default.Children.map(children, function (item) {
553
556
  if (item &&
@@ -581,6 +584,10 @@ var SiteHeaderV2 = function (_a) {
581
584
  window.removeEventListener("keydown", handleKeydown);
582
585
  };
583
586
  }, [setMenuOpen]);
587
+ useEffect(function () {
588
+ var _a, _b;
589
+ (_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
590
+ }, []);
584
591
  useEffect(function () {
585
592
  var handleClick = function (e) {
586
593
  if (e.target.getAttribute("href")) {
@@ -596,7 +603,7 @@ var SiteHeaderV2 = function (_a) {
596
603
  // useEffect does not run in ReactDomServer renders
597
604
  setHasClientSideJavaScript(true);
598
605
  }, [setHasClientSideJavaScript]);
599
- return (React__default.createElement(Provider, { value: { transparent: isTransparent } },
606
+ return (React__default.createElement(Provider, { value: { transparent: isTransparent, menubarRef: menubarRef } },
600
607
  React__default.createElement("div", __assign({ className: classNames((_b = {},
601
608
  _b["arc-SiteHeaderV2"] = true,
602
609
  _b["arc-SiteHeaderV2--menuOpen"] = menuOpen,
@@ -613,8 +620,8 @@ var SiteHeaderV2 = function (_a) {
613
620
  children && (React__default.createElement("nav", { className: "arc-SiteHeaderV2-nav" },
614
621
  React__default.createElement("div", { className: "arc-SiteHeaderV2-menuButton" },
615
622
  React__default.createElement(MenuButton, { menuOpen: menuOpen, setMenuOpen: setMenuOpen })),
616
- React__default.createElement("div", { className: "arc-SiteHeaderV2-main" },
617
- React__default.createElement("ul", { className: "arc-SiteHeaderV2-navItems" }, children),
623
+ React__default.createElement("div", { className: "arc-SiteHeaderV2-main", tabIndex: -1 },
624
+ React__default.createElement("ul", { role: "menubar", "aria-label": "navigation", ref: menubarRef, className: "arc-SiteHeaderV2-navItems" }, children),
618
625
  hasLogin && (React__default.createElement(React__default.Fragment, null, loginOnClick ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-mobileButtonContainer" },
619
626
  React__default.createElement("button", { className: "arc-SiteHeaderV2-mobileLogin", onClick: loginOnClick },
620
627
  loginTitle,
@@ -629,6 +636,9 @@ var SiteHeaderV2 = function (_a) {
629
636
  basket ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-basket" }, basket)) : null,
630
637
  hasLogin && (React__default.createElement(React__default.Fragment, null, loginOnClick ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-loginLink arc-SiteHeaderV2-loginLink--function", onClick: loginOnClick }, loginTitle)) : (React__default.createElement("a", { className: "arc-SiteHeaderV2-loginLink", href: loginHref }, loginTitle)))))))))));
631
638
  };
639
+ function useHeaderV2Context() {
640
+ return useContext(Context);
641
+ }
632
642
  SiteHeaderV2.Column = Column;
633
643
  SiteHeaderV2.Item = Item;
634
644
  SiteHeaderV2.ItemGroup = ItemGroup;