@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
package/dist/index.es.js CHANGED
@@ -699,7 +699,7 @@ const BtIconPlayFill = (props) =>
699
699
  );
700
700
 
701
701
  var CardFooter = function (_a) {
702
- 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;
702
+ 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;
703
703
  var icons = {
704
704
  arrow: {
705
705
  regular: BtIconArrowRight,
@@ -711,16 +711,18 @@ var CardFooter = function (_a) {
711
711
  }
712
712
  };
713
713
  return (React__default.createElement("div", { className: classNames("arc-CardFooter", {
714
- "arc-CardFooter--darkPathway": isDarkPathway,
715
- "arc-CardFooter--showFilledIcon": showFilledIcon
714
+ "arc-CardFooter--darkPathway": isDarkPathway
716
715
  }) },
717
716
  React__default.createElement("div", { className: "arc-CardFooter-metaTextContainer" }, metaText && (React__default.createElement("span", { className: "arc-CardFooter-metaText" }, metaText))),
718
717
  showButton && (React__default.createElement("div", null,
719
718
  React__default.createElement("div", { className: "arc-CardFooter-button" },
720
- React__default.createElement("div", { className: classNames("arc-CardFooter-buttonIcon", "arc-CardFooter-buttonIcon--regular") },
721
- React__default.createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 })),
722
- React__default.createElement("div", { className: "arc-CardFooter-buttonIcon arc-CardFooter-buttonIcon--filled" },
723
- React__default.createElement(Icon, { icon: icons[buttonIcon].filled, size: 40 })))))));
719
+ React__default.createElement("div", { className: "arc-CardFooter-buttonIcon" },
720
+ React__default.createElement("div", { className: classNames("arc-CardFooter-buttonIconRight", {
721
+ "arc-CardFooter-buttonIconRight--isHovered": isHovered
722
+ }) },
723
+ React__default.createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 })),
724
+ React__default.createElement("div", { className: "arc-CardFooter-buttonIconLeft" },
725
+ React__default.createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 }))))))));
724
726
  };
725
727
 
726
728
  var ConditionalWrapper = function (_a) {
@@ -2166,7 +2168,7 @@ var FilterControl = function (_a) {
2166
2168
  return (React__default.createElement("button", { className: classNames("arc-FilterControl", {
2167
2169
  "arc-FilterControl--onDarkSurface": surface === "dark",
2168
2170
  "arc-FilterControl--selected": selected
2169
- }), onClick: onClickHandler, tabIndex: 0 },
2171
+ }), onClick: onClickHandler, tabIndex: 0, "aria-pressed": selected },
2170
2172
  React__default.createElement("div", { className: "arc-FilterControl-text" }, children)));
2171
2173
  };
2172
2174
 
@@ -2184,16 +2186,20 @@ var FilterItem = function (_a) {
2184
2186
  };
2185
2187
 
2186
2188
  var FilterItems = function (_a) {
2187
- var children = _a.children, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = __rest(_a, ["children", "displayType"]);
2188
- return (React__default.createElement("div", __assign({ className: classNames("arc-FilterItems", {
2189
- "arc-FilterItems--list": displayType === "list",
2190
- "arc-FilterItems--grid": displayType === "grid"
2191
- }) }, filterDataAttrs(props)), displayType === "list"
2192
- ? React__default.Children.toArray(children).map(function (child, index, array) { return (React__default.createElement(React__default.Fragment, { key: index },
2193
- child,
2194
- index !== array.length - 1 && (React__default.createElement(React__default.Fragment, null,
2195
- React__default.createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
2196
- : children));
2189
+ var children = _a.children, error = _a.error, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = __rest(_a, ["children", "error", "displayType"]);
2190
+ return React__default.Children.toArray(children).length > 0 ? (React__default.createElement("div", null,
2191
+ React__default.createElement("div", { className: "arc-FilterItems-offscreen", "aria-live": "assertive" }, React__default.Children.toArray(children).length > 0
2192
+ ? "".concat(React__default.Children.toArray(children).length, " records listed.")
2193
+ : null),
2194
+ React__default.createElement("div", __assign({ className: classNames("arc-FilterItems", {
2195
+ "arc-FilterItems--list": displayType === "list",
2196
+ "arc-FilterItems--grid": displayType === "grid"
2197
+ }) }, filterDataAttrs(props)), displayType === "list"
2198
+ ? React__default.Children.toArray(children).map(function (child, index, array) { return (React__default.createElement(React__default.Fragment, { key: index },
2199
+ child,
2200
+ index !== array.length - 1 && (React__default.createElement(React__default.Fragment, null,
2201
+ React__default.createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
2202
+ : children))) : (React__default.createElement("div", { "aria-live": "assertive" }, error));
2197
2203
  };
2198
2204
 
2199
2205
  /** use `Filter` for interactive elements that filter and categorise page content. */
@@ -2253,7 +2259,7 @@ var Filter = function (_a) {
2253
2259
  React__default.createElement(FilterControls, { controlsAlignment: controlsAlignment }, controls &&
2254
2260
  React__default.isValidElement(controls) &&
2255
2261
  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)); })),
2256
- 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; })))));
2262
+ React__default.createElement(FilterItems, { displayType: displayType, error: error }, filteredItems.map(function (item) { return item.props.children; }))));
2257
2263
  };
2258
2264
  Filter.Controls = FilterControls;
2259
2265
  Filter.Control = FilterControl;
@@ -2393,7 +2399,8 @@ var VerticalSpace = function (_a) {
2393
2399
  };
2394
2400
 
2395
2401
  var InformationCard = function (_a) {
2396
- var cardUrl = _a.cardUrl, onClick = _a.onClick, heading = _a.heading, text = _a.text, label = _a.label, footerLogo = _a.footerLogo, button = _a.button, image = _a.image, tags = _a.tags, icon = _a.icon, _b = _a.headingLevel, headingLevel = _b === void 0 ? "2" : _b, props = __rest(_a, ["cardUrl", "onClick", "heading", "text", "label", "footerLogo", "button", "image", "tags", "icon", "headingLevel"]);
2402
+ var cardUrl = _a.cardUrl, onClick = _a.onClick, heading = _a.heading, text = _a.text, label = _a.label, footerLogo = _a.footerLogo, button = _a.button, image = _a.image, tags = _a.tags, icon = _a.icon, minHeight = _a.minHeight, _b = _a.headingLevel, headingLevel = _b === void 0 ? "2" : _b, props = __rest(_a, ["cardUrl", "onClick", "heading", "text", "label", "footerLogo", "button", "image", "tags", "icon", "minHeight", "headingLevel"]);
2403
+ var surface = useContext(Context$5).surface;
2397
2404
  var isMinWidthArcBreakpointS = useMediaQuery("(min-width: ".concat(ArcBreakpointS, "px)"));
2398
2405
  var isMinWidthArcBreakpointM = useMediaQuery("(min-width: ".concat(ArcBreakpointM, "px)"));
2399
2406
  var _c = useState(false), showHoverState = _c[0], setShowHoverState = _c[1];
@@ -2401,8 +2408,10 @@ var InformationCard = function (_a) {
2401
2408
  var assetSpacing = isMinWidthArcBreakpointM ? "24" : "20";
2402
2409
  var containerSpacing = isMinWidthArcBreakpointS ? "32" : "24";
2403
2410
  var handleShowHoverState = function (show) { return function () { return setShowHoverState(show); }; };
2404
- return (React__default.createElement("div", __assign({ className: classNames("arc-InformationCard", {
2405
- "arc-InformationCard--outlined": cardUrl && showHoverState
2411
+ return (React__default.createElement("div", __assign({ style: { minHeight: minHeight }, className: classNames("arc-InformationCard", {
2412
+ "arc-InformationCard--isALink": cardUrl,
2413
+ "arc-InformationCard--outlined": cardUrl && showHoverState,
2414
+ "arc-InformationCard--onDarkSurface": surface === "dark"
2406
2415
  }) }, filterDataAttrs(props)),
2407
2416
  React__default.createElement(Surface, { growVertically: true, padding: containerSpacing, background: "white" },
2408
2417
  React__default.createElement("div", null,
@@ -2435,6 +2444,27 @@ var InformationCard = function (_a) {
2435
2444
  React__default.createElement(Image, __assign({}, footerLogo))))))));
2436
2445
  };
2437
2446
 
2447
+ var ImpactCard = function (_a) {
2448
+ var url = _a.url, onClick = _a.onClick, heading = _a.heading, img = _a.img, label = _a.label, minHeight = _a.minHeight, _b = _a.linkData, linkData = _b === void 0 ? {} : _b, _c = _a.pathway, pathway = _c === void 0 ? "light" : _c, _d = _a.headingLevel, headingLevel = _d === void 0 ? "2" : _d, _e = _a.buttonIcon, buttonIcon = _e === void 0 ? "arrow" : _e, props = __rest(_a, ["url", "onClick", "heading", "img", "label", "minHeight", "linkData", "pathway", "headingLevel", "buttonIcon"]);
2449
+ var _f = useState(false), showHoverState = _f[0], setShowHoverState = _f[1];
2450
+ var surface = useContext(Context$5).surface;
2451
+ var handleShowHoverState = function (show) { return function () { return setShowHoverState(show); }; };
2452
+ var isDarkPathway = pathway === "dark";
2453
+ return (React__default.createElement("div", __assign({ style: { minHeight: minHeight }, className: classNames("arc-ImpactCard", {
2454
+ "arc-ImpactCard--darkPathway": isDarkPathway,
2455
+ "arc-ImpactCard--outlined": url && showHoverState,
2456
+ "arc-ImpactCard--isHovered": showHoverState,
2457
+ "arc-ImpactCard--onDarkSurface": surface === "dark"
2458
+ }) }, filterDataAttrs(props)),
2459
+ React__default.createElement("div", { className: "arc-ImpactCard-backgroundImageContainer" },
2460
+ React__default.createElement(Image, __assign({ fit: "cover", alt: "" }, img))),
2461
+ React__default.createElement("div", { className: "arc-ImpactCard-contentContainer" },
2462
+ label && (React__default.createElement("div", { className: "arc-ImpactCard-labelContainer" },
2463
+ React__default.createElement(CardLabel, { isDarkPathway: isDarkPathway, color: "supporting", isBold: true, text: label }))),
2464
+ React__default.createElement(CardHeading, { heading: heading, headingLevel: headingLevel, linkData: linkData, href: url, onClick: onClick, onMouseEnter: handleShowHoverState(true), onMouseLeave: handleShowHoverState(false), onFocus: handleShowHoverState(true), onBlur: handleShowHoverState(false) })),
2465
+ React__default.createElement(CardFooter, { buttonIcon: buttonIcon, showButton: true, isDarkPathway: isDarkPathway, isHovered: showHoverState })));
2466
+ };
2467
+
2438
2468
  /**
2439
2469
  * Use `Markup` to display HTML-formatted text.
2440
2470
  */
@@ -2452,14 +2482,16 @@ var Markup = function (_a) {
2452
2482
  * Use `MediaCard` to contain content and an image about a single subject.
2453
2483
  */
2454
2484
  var MediaCard = function (_a) {
2455
- var img = _a.img, url = _a.url, onClick = _a.onClick, heading = _a.heading, label = _a.label, text = _a.text, metaText = _a.metaText, _b = _a.buttonIcon, buttonIcon = _b === void 0 ? "arrow" : _b, _c = _a.isContained, isContained = _c === void 0 ? true : _c, _d = _a.headingLevel, headingLevel = _d === void 0 ? "2" : _d, props = __rest(_a, ["img", "url", "onClick", "heading", "label", "text", "metaText", "buttonIcon", "isContained", "headingLevel"]);
2485
+ var img = _a.img, url = _a.url, onClick = _a.onClick, heading = _a.heading, label = _a.label, text = _a.text, metaText = _a.metaText, minHeight = _a.minHeight, _b = _a.buttonIcon, buttonIcon = _b === void 0 ? "arrow" : _b, _c = _a.isContained, isContained = _c === void 0 ? true : _c, _d = _a.headingLevel, headingLevel = _d === void 0 ? "2" : _d, props = __rest(_a, ["img", "url", "onClick", "heading", "label", "text", "metaText", "minHeight", "buttonIcon", "isContained", "headingLevel"]);
2486
+ var surface = useContext(Context$5).surface;
2456
2487
  var _e = useState(false), showHoverState = _e[0], setShowHoverState = _e[1];
2457
2488
  var isMinWidthArcBreakpointS = useMediaQuery("(min-width: ".concat(ArcBreakpointS, "px)"));
2458
2489
  var headingSpacing = isMinWidthArcBreakpointS ? "16" : "8";
2459
2490
  var handleShowHoverState = function (show) { return function () { return setShowHoverState(show); }; };
2460
- return (React__default.createElement("div", __assign({ className: classNames("arc-MediaCard", {
2491
+ return (React__default.createElement("div", __assign({ style: { minHeight: minHeight }, className: classNames("arc-MediaCard", {
2461
2492
  "arc-MediaCard--outlined": url && isContained && showHoverState,
2462
- "arc-MediaCard--contained": isContained
2493
+ "arc-MediaCard--contained": isContained,
2494
+ "arc-MediaCard--onDarkSurface": surface === "dark"
2463
2495
  }) }, filterDataAttrs(props)),
2464
2496
  React__default.createElement(ConditionalWrapper, { condition: isContained, wrapper: function (children) { return (React__default.createElement(Surface, { growVertically: true, background: "white" }, children)); } },
2465
2497
  React__default.createElement("div", { className: "arc-MediaCard-imgContainer" },
@@ -2473,7 +2505,7 @@ var MediaCard = function (_a) {
2473
2505
  React__default.createElement(VerticalSpace, { size: headingSpacing }),
2474
2506
  React__default.createElement(Text, null, text),
2475
2507
  (url || metaText) && React__default.createElement(VerticalSpace, { size: "24" })))),
2476
- React__default.createElement(CardFooter, { showFilledIcon: showHoverState, buttonIcon: buttonIcon, metaText: metaText, showButton: Boolean(url) })))));
2508
+ React__default.createElement(CardFooter, { buttonIcon: buttonIcon, metaText: metaText, showButton: Boolean(url), isHovered: showHoverState })))));
2477
2509
  };
2478
2510
 
2479
2511
  function _extends() {
@@ -39279,7 +39311,7 @@ var Select = function (_a) {
39279
39311
  "arc-Select-trigger--invalid": errorMessage
39280
39312
  },
39281
39313
  _b["arc-Select-trigger--size".concat(selectSize && selectSize.toUpperCase())] = selectSize && selectSize !== "m",
39282
- _b)) }, filterDataAttrs(props)),
39314
+ _b)), "aria-describedby": "".concat(id, "-helper") }, filterDataAttrs(props)),
39283
39315
  React__default.createElement($cc7e05a45900e73f$export$4c8d1a57a761ef94, { className: "arc-Select-triggerText", placeholder: placeholder, "aria-label": getSelectedValueName(uncontrolledValue) }),
39284
39316
  React__default.createElement($cc7e05a45900e73f$export$f04a61298a47a40f, { className: "arc-Select-triggerIcon" },
39285
39317
  React__default.createElement(Icon, { icon: BtIconChevronDown2Px, size: getIconSize(selectSize) }))),
@@ -40027,8 +40059,8 @@ var Item = function (_a) {
40027
40059
  return (React__default.createElement("li", __assign({ className: classNames((_b = {},
40028
40060
  _b["arc-SiteHeaderV2Item"] = true,
40029
40061
  _b["arc-SiteHeaderV2Item--emphasised"] = true,
40030
- _b)) }, filterDataAttrs(props)),
40031
- React__default.createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href },
40062
+ _b)) }, filterDataAttrs(props), { role: "none" }),
40063
+ React__default.createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href, role: "menuitem" },
40032
40064
  children,
40033
40065
  React__default.createElement("span", { className: "arc-SiteHeaderV2Item-linkIcon" },
40034
40066
  React__default.createElement(BtIconChevronRightMid, null)))));
@@ -40036,7 +40068,6 @@ var Item = function (_a) {
40036
40068
 
40037
40069
  var ItemGroup = function (_a) {
40038
40070
  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"]);
40039
- var _b = useState(false), hasClientSideJavaScript = _b[0], setHasClientSideJavaScript = _b[1];
40040
40071
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
40041
40072
  useEffect(function () {
40042
40073
  React__default.Children.map(children, function (item) {
@@ -40045,27 +40076,18 @@ var ItemGroup = function (_a) {
40045
40076
  }
40046
40077
  });
40047
40078
  }, [children]);
40048
- useEffect(function () {
40049
- // useEffect does not run in ReactDomServer renders
40050
- setHasClientSideJavaScript(true);
40051
- }, [setHasClientSideJavaScript]);
40052
- var ElementType = "div";
40053
- if (title) {
40054
- ElementType = "details";
40055
- }
40079
+ var ElementType = title ? "details" : "div";
40056
40080
  return (React__default.createElement("li", { className: "arc-SiteHeaderV2ItemGroup" },
40057
40081
  React__default.createElement(ElementType, __assign({ className: "arc-SiteHeaderV2ItemGroup-details", open: Boolean(title && isMinWidthArcBreakpointL) }, filterDataAttrs(props)),
40058
40082
  title ? (React__default.createElement(React__default.Fragment, null,
40059
- React__default.createElement("summary", { className: "arc-SiteHeaderV2ItemGroup-summary", tabIndex: isMinWidthArcBreakpointL ? -1 : 0 }, href ? (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
40060
- React__default.createElement("a", { onClick: handleLinkClick({
40061
- handler: onClick
40062
- }), className: "arc-SiteHeaderV2ItemGroup-title", href: href, tabIndex: !hasClientSideJavaScript || isMinWidthArcBreakpointL
40063
- ? 0
40064
- : -1 }, title),
40083
+ React__default.createElement("summary", { tabIndex: isMinWidthArcBreakpointL ? -1 : 0, className: "arc-SiteHeaderV2ItemGroup-summary" }, href ? (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
40084
+ React__default.createElement(ConditionalWrapper, { condition: isMinWidthArcBreakpointL, wrapper: function (children) { return (React__default.createElement("a", { onClick: handleLinkClick({
40085
+ handler: onClick
40086
+ }), className: "arc-SiteHeaderV2ItemGroup-title", href: href }, children)); }, fallback: function (children) { return (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, children)); } }, title),
40065
40087
  React__default.createElement("span", { className: "arc-SiteHeaderV2ItemGroup-titleIcon" },
40066
40088
  React__default.createElement(BtIconChevronRightMid, null)))) : (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, title))),
40067
40089
  React__default.createElement("span", { className: "arc-SiteHeaderV2ItemGroup-subtitle" }, subtitle))) : null,
40068
- React__default.createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items" },
40090
+ React__default.createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items", role: "menubar" },
40069
40091
  children,
40070
40092
  href && title ? (React__default.createElement("li", { className: "arc-SiteHeaderV2Item arc-SiteHeaderV2Item--viewAll" },
40071
40093
  React__default.createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick({
@@ -40082,8 +40104,8 @@ var Column = function (_a) {
40082
40104
  }
40083
40105
  });
40084
40106
  }, [children]);
40085
- return (React__default.createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props)),
40086
- React__default.createElement("ul", { className: "arc-SiteHeaderV2Column-items" }, children)));
40107
+ return (React__default.createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props), { role: "none" }),
40108
+ React__default.createElement("ul", { className: "arc-SiteHeaderV2Column-items", role: "none" }, children)));
40087
40109
  };
40088
40110
 
40089
40111
  var BackButton = function (_a) {
@@ -40101,19 +40123,21 @@ var Panel = function (_a) {
40101
40123
  var _b, _c, _d, _e, _f;
40102
40124
  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"]);
40103
40125
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
40126
+ var menubarRef = useHeaderV2Context().menubarRef;
40104
40127
  useEffect(function () {
40105
40128
  // Where appropriate, close the Panel when clicking outside of it,
40106
40129
  // by listening to clicks on the entire document and acting accordingly.
40107
40130
  var handleClick = function (e) {
40108
- var _a, _b;
40131
+ var _a, _b, _c, _d;
40132
+ (_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");
40109
40133
  // Don't close the Panel…
40110
40134
  if (
40111
40135
  // The click is inside the current SubNavItem.
40112
- ((_a = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) ||
40136
+ ((_c = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _c === void 0 ? void 0 : _c.contains(e.target)) ||
40113
40137
  // The click is inside the current NavItem
40114
40138
  // and the Panel is not inside a SubNavItem.
40115
40139
  // and the target is not a link
40116
- (((_b = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _b === void 0 ? void 0 : _b.contains(e.target)) &&
40140
+ (((_d = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _d === void 0 ? void 0 : _d.contains(e.target)) &&
40117
40141
  !subNavItemRef &&
40118
40142
  !e.target.getAttribute("href")) ||
40119
40143
  // The Panel is inside a SubNavItem
@@ -40145,9 +40169,12 @@ var Panel = function (_a) {
40145
40169
  subNavItemRef,
40146
40170
  subNavLink,
40147
40171
  setOpenPanelOnFirstClick,
40172
+ menubarRef,
40148
40173
  ]);
40149
40174
  useEffect(function () {
40150
40175
  var handleClick = function (e) {
40176
+ var _a, _b;
40177
+ (_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");
40151
40178
  // Close the Panel…
40152
40179
  if (e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel")) {
40153
40180
  setOpenPanelOnFirstClick(false);
@@ -40163,9 +40190,10 @@ var Panel = function (_a) {
40163
40190
  return function () {
40164
40191
  document.removeEventListener("click", handleClick);
40165
40192
  };
40166
- }, [navItemRef, setOpenPanelOnFirstClick]);
40193
+ }, [navItemRef, setOpenPanelOnFirstClick, menubarRef]);
40167
40194
  useEffect(function () {
40168
40195
  var handleKeydown = function (e) {
40196
+ var _a, _b;
40169
40197
  // Check the viewport width at time of press
40170
40198
  var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(ArcBreakpointL, "px)")).matches;
40171
40199
  if (e.key === "Escape" || e.keyCode === 27) {
@@ -40176,12 +40204,15 @@ var Panel = function (_a) {
40176
40204
  }
40177
40205
  return setOpen(false);
40178
40206
  }
40207
+ if (e.key === "Tab") {
40208
+ (_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");
40209
+ }
40179
40210
  };
40180
40211
  window.addEventListener("keydown", handleKeydown);
40181
40212
  return function () {
40182
40213
  window.removeEventListener("keydown", handleKeydown);
40183
40214
  };
40184
- }, [setOpen, subNavItemRef]);
40215
+ }, [setOpen, subNavItemRef, menubarRef]);
40185
40216
  return (React__default.createElement("div", { style: { display: "flex" } },
40186
40217
  React__default.createElement("div", __assign({ className: classNames((_b = {},
40187
40218
  _b["arc-SiteHeaderV2Panel"] = true,
@@ -40270,8 +40301,9 @@ var NavItem = function (_a) {
40270
40301
  handler: onClick
40271
40302
  }), className: "arc-SiteHeaderV2NavItem-link", href: href }, title)) : null) : (React__default.createElement(React__default.Fragment, null,
40272
40303
  React__default.createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
40273
- React__default.createElement("button", { "aria-expanded": panelOpen, className: classNames((_c = {},
40304
+ React__default.createElement("button", { "aria-expanded": panelOpen, role: "menuitem", "aria-haspopup": "true", "aria-label": title, className: classNames((_c = {},
40274
40305
  _c["arc-SiteHeaderV2NavItem-link"] = true,
40306
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
40275
40307
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
40276
40308
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
40277
40309
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
@@ -40409,10 +40441,11 @@ var NavItemWithSubNav = function (_a) {
40409
40441
  ? horizontalPanelOpen
40410
40442
  : panelOpen,
40411
40443
  _b["arc-SiteHeaderV2NavItemWithSubNav-active"] = panelOpen || (opensFirstWithPanel && openSecondaryWithSubNav),
40412
- _b)), ref: navItem }, filterDataAttrs(props)),
40444
+ _b)), role: "none", ref: navItem }, filterDataAttrs(props)),
40413
40445
  React__default.createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
40414
- React__default.createElement("button", { "aria-expanded": horizontalPanelOpen, className: classNames((_c = {},
40446
+ React__default.createElement("button", { "aria-expanded": horizontalPanelOpen || panelOpen, role: "menuitem", "aria-label": title, "aria-haspopup": "true", tabIndex: 0, className: classNames((_c = {},
40415
40447
  _c["arc-SiteHeaderV2NavItem-link"] = true,
40448
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
40416
40449
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
40417
40450
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
40418
40451
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
@@ -40545,7 +40578,7 @@ var VerticalDivider = function () {
40545
40578
  return React__default.createElement("li", { className: "arc-SiteHeaderV2VerticalDivider-line" });
40546
40579
  };
40547
40580
 
40548
- var defaultContext = { transparent: false };
40581
+ var defaultContext = { transparent: false, menubarRef: null };
40549
40582
  var Context = createContext(defaultContext);
40550
40583
  var Provider = Context.Provider;
40551
40584
  /**
@@ -40557,6 +40590,7 @@ var SiteHeaderV2 = function (_a) {
40557
40590
  var _j = useState(false), hasClientSideJavaScript = _j[0], setHasClientSideJavaScript = _j[1];
40558
40591
  var _k = useState(false), menuOpen = _k[0], setMenuOpen = _k[1];
40559
40592
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
40593
+ var menubarRef = useRef();
40560
40594
  useEffect(function () {
40561
40595
  React__default.Children.map(children, function (item) {
40562
40596
  if (item &&
@@ -40590,6 +40624,10 @@ var SiteHeaderV2 = function (_a) {
40590
40624
  window.removeEventListener("keydown", handleKeydown);
40591
40625
  };
40592
40626
  }, [setMenuOpen]);
40627
+ useEffect(function () {
40628
+ var _a, _b;
40629
+ (_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");
40630
+ }, []);
40593
40631
  useEffect(function () {
40594
40632
  var handleClick = function (e) {
40595
40633
  if (e.target.getAttribute("href")) {
@@ -40605,7 +40643,7 @@ var SiteHeaderV2 = function (_a) {
40605
40643
  // useEffect does not run in ReactDomServer renders
40606
40644
  setHasClientSideJavaScript(true);
40607
40645
  }, [setHasClientSideJavaScript]);
40608
- return (React__default.createElement(Provider, { value: { transparent: isTransparent } },
40646
+ return (React__default.createElement(Provider, { value: { transparent: isTransparent, menubarRef: menubarRef } },
40609
40647
  React__default.createElement("div", __assign({ className: classNames((_b = {},
40610
40648
  _b["arc-SiteHeaderV2"] = true,
40611
40649
  _b["arc-SiteHeaderV2--menuOpen"] = menuOpen,
@@ -40622,8 +40660,8 @@ var SiteHeaderV2 = function (_a) {
40622
40660
  children && (React__default.createElement("nav", { className: "arc-SiteHeaderV2-nav" },
40623
40661
  React__default.createElement("div", { className: "arc-SiteHeaderV2-menuButton" },
40624
40662
  React__default.createElement(MenuButton, { menuOpen: menuOpen, setMenuOpen: setMenuOpen })),
40625
- React__default.createElement("div", { className: "arc-SiteHeaderV2-main" },
40626
- React__default.createElement("ul", { className: "arc-SiteHeaderV2-navItems" }, children),
40663
+ React__default.createElement("div", { className: "arc-SiteHeaderV2-main", tabIndex: -1 },
40664
+ React__default.createElement("ul", { role: "menubar", "aria-label": "navigation", ref: menubarRef, className: "arc-SiteHeaderV2-navItems" }, children),
40627
40665
  hasLogin && (React__default.createElement(React__default.Fragment, null, loginOnClick ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-mobileButtonContainer" },
40628
40666
  React__default.createElement("button", { className: "arc-SiteHeaderV2-mobileLogin", onClick: loginOnClick },
40629
40667
  loginTitle,
@@ -40638,6 +40676,9 @@ var SiteHeaderV2 = function (_a) {
40638
40676
  basket ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-basket" }, basket)) : null,
40639
40677
  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)))))))))));
40640
40678
  };
40679
+ function useHeaderV2Context() {
40680
+ return useContext(Context);
40681
+ }
40641
40682
  SiteHeaderV2.Column = Column;
40642
40683
  SiteHeaderV2.Item = Item;
40643
40684
  SiteHeaderV2.ItemGroup = ItemGroup;
@@ -41649,15 +41690,16 @@ var TextArea = forwardRef(function (_a, ref) {
41649
41690
  return (React__default.createElement(FormControl, __assign({ errorMessage: errorMessage, helper: helper, htmlFor: id, isDisabled: isDisabled, label: label, hideLabel: hideLabel, labelSize: labelSize, requirementStatus: isRequired ? "required" : "optional", disclosureTitle: disclosureTitle, disclosureText: disclosureText, onClickDisclosure: onClickDisclosure, supplementaryInfo: maxLength &&
41650
41691
  showCharacterCount && (React__default.createElement(React__default.Fragment, null,
41651
41692
  React__default.createElement(Text, { tone: isDisabled ? "muted" : "default" },
41652
- React__default.createElement("span", { className: "arc-TextArea-characterCount" },
41693
+ React__default.createElement("span", { className: "arc-TextArea-characterCount", "aria-live": "polite" },
41653
41694
  characterCount,
41654
41695
  " / ",
41655
- maxLength)))) }, filterDataAttrs(props)),
41696
+ maxLength,
41697
+ characterCount === maxLength && (React__default.createElement(VisuallyHidden, null, "Maximum characters reached")))))) }, filterDataAttrs(props)),
41656
41698
  React__default.createElement("textarea", { id: id, className: classNames("arc-TextArea", {
41657
41699
  "arc-TextArea--noResize": resize !== "manual",
41658
41700
  "arc-TextArea--onDarkSurface": surface === "dark",
41659
41701
  "arc-TextArea--invalid": errorMessage
41660
- }), defaultValue: typeof value !== "undefined" ? undefined : defaultValue, disabled: isDisabled, value: value, readOnly: isReadOnly, maxLength: maxLength, name: name, onChange: handleOnChange, onBlur: onBlur, ref: getTextAreaRef, style: { width: width } })));
41702
+ }), defaultValue: typeof value !== "undefined" ? undefined : defaultValue, disabled: isDisabled, value: value, readOnly: isReadOnly, maxLength: maxLength, name: name, onChange: handleOnChange, onBlur: onBlur, ref: getTextAreaRef, style: { width: width }, "aria-describedby": "".concat(id, "-helper") })));
41661
41703
  });
41662
41704
 
41663
41705
  /**
@@ -42674,20 +42716,22 @@ var Truncate = function (_a) {
42674
42716
  };
42675
42717
 
42676
42718
  var TypographyCard = function (_a) {
42677
- var url = _a.url, onClick = _a.onClick, heading = _a.heading, metaText = _a.metaText, label = _a.label, _b = _a.linkData, linkData = _b === void 0 ? {} : _b, _c = _a.pathway, pathway = _c === void 0 ? "light" : _c, _d = _a.buttonIcon, buttonIcon = _d === void 0 ? "arrow" : _d, _e = _a.headingLevel, headingLevel = _e === void 0 ? "2" : _e, props = __rest(_a, ["url", "onClick", "heading", "metaText", "label", "linkData", "pathway", "buttonIcon", "headingLevel"]);
42719
+ var url = _a.url, onClick = _a.onClick, heading = _a.heading, metaText = _a.metaText, label = _a.label, minHeight = _a.minHeight, _b = _a.linkData, linkData = _b === void 0 ? {} : _b, _c = _a.pathway, pathway = _c === void 0 ? "light" : _c, _d = _a.buttonIcon, buttonIcon = _d === void 0 ? "arrow" : _d, _e = _a.headingLevel, headingLevel = _e === void 0 ? "2" : _e, props = __rest(_a, ["url", "onClick", "heading", "metaText", "label", "minHeight", "linkData", "pathway", "buttonIcon", "headingLevel"]);
42720
+ var surface = useContext(Context$5).surface;
42678
42721
  var _f = useState(false), showHoverState = _f[0], setShowHoverState = _f[1];
42679
42722
  var handleShowHoverState = function (show) { return function () { return setShowHoverState(show); }; };
42680
42723
  var isDarkPathway = pathway === "dark";
42681
- return (React__default.createElement("div", __assign({ className: classNames("arc-TypographyCard", {
42724
+ return (React__default.createElement("div", __assign({ style: { minHeight: minHeight }, className: classNames("arc-TypographyCard", {
42682
42725
  "arc-TypographyCard--outlined": showHoverState,
42683
42726
  "arc-TypographyCard--darkPathway": isDarkPathway,
42684
- "arc-TypographyCard--lightPathway": !isDarkPathway
42727
+ "arc-TypographyCard--lightPathway": !isDarkPathway,
42728
+ "arc-TypographyCard--onDarkSurface": surface === "dark"
42685
42729
  }) }, filterDataAttrs(props)),
42686
42730
  React__default.createElement("div", { className: "arc-TypographyCard-contentContainer" },
42687
42731
  label && (React__default.createElement("div", { className: "arc-TypographyCard-labelContainer" },
42688
- React__default.createElement(CardLabel, { isDarkPathway: isDarkPathway, isBold: false, text: label }))),
42732
+ React__default.createElement(CardLabel, { isDarkPathway: isDarkPathway, isBold: true, text: label }))),
42689
42733
  React__default.createElement(CardHeading, { size: "m", linkData: linkData, heading: heading, headingLevel: headingLevel, href: url, onClick: onClick, isDarkPathway: isDarkPathway, onMouseEnter: handleShowHoverState(true), onMouseLeave: handleShowHoverState(false), onFocus: handleShowHoverState(true), onBlur: handleShowHoverState(false) })),
42690
- React__default.createElement(CardFooter, { showButton: true, isDarkPathway: isDarkPathway, showFilledIcon: showHoverState, buttonIcon: buttonIcon, metaText: metaText })));
42734
+ React__default.createElement(CardFooter, { showButton: true, isDarkPathway: isDarkPathway, buttonIcon: buttonIcon, metaText: metaText, isHovered: showHoverState })));
42691
42735
  };
42692
42736
 
42693
42737
  /**
@@ -42715,5 +42759,5 @@ var UniversalHeaderItem = function (_a) {
42715
42759
  };
42716
42760
  UniversalHeader.Item = UniversalHeaderItem;
42717
42761
 
42718
- export { Alert, Align, Avatar, AvatarGroup, Badge, Base, Box, BrandLogo, Breadcrumbs, Button, Card, Checkbox, Clock, Clock_rehydrator as ClockRehydrator, Columns, Curve, Disclosure, DisclosureMini, Elevation, Filter, FormControl, Group, Heading, Icon, Image, InformationCard, Markup, MediaCard, Modal, Pagination, PaginationSimple, Poster, ProgressBar, ProgressStepper, RadioGroup, Rule, ScrollToTop, Section, Select, SiteFooter, SiteFooter_rehydrator as SiteFooterRehydrator, SiteHeader, SiteHeaderRehydrator, SiteHeaderV2, Surface, Context$5 as SurfaceContext, Switch, Tabs, Tag, Text, TextArea, TextInput, Toast, Truncate, TypographyCard, UniversalHeader, VerticalSpace, VisuallyHidden };
42762
+ export { Alert, Align, Avatar, AvatarGroup, Badge, Base, Box, BrandLogo, Breadcrumbs, Button, Card, Checkbox, Clock, Clock_rehydrator as ClockRehydrator, Columns, Curve, Disclosure, DisclosureMini, Elevation, Filter, FormControl, Group, Heading, Icon, Image, ImpactCard, InformationCard, Markup, MediaCard, Modal, Pagination, PaginationSimple, Poster, ProgressBar, ProgressStepper, RadioGroup, Rule, ScrollToTop, Section, Select, SiteFooter, SiteFooter_rehydrator as SiteFooterRehydrator, SiteHeader, SiteHeaderRehydrator, SiteHeaderV2, Surface, Context$5 as SurfaceContext, Switch, Tabs, Tag, Text, TextArea, TextInput, Toast, Truncate, TypographyCard, UniversalHeader, VerticalSpace, VisuallyHidden };
42719
42763
  //# sourceMappingURL=index.es.js.map