@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.js CHANGED
@@ -725,7 +725,7 @@ const BtIconPlayFill = (props) =>
725
725
  );
726
726
 
727
727
  var CardFooter = function (_a) {
728
- 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;
728
+ 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;
729
729
  var icons = {
730
730
  arrow: {
731
731
  regular: BtIconArrowRight,
@@ -737,16 +737,18 @@ var CardFooter = function (_a) {
737
737
  }
738
738
  };
739
739
  return (React__default["default"].createElement("div", { className: classNames("arc-CardFooter", {
740
- "arc-CardFooter--darkPathway": isDarkPathway,
741
- "arc-CardFooter--showFilledIcon": showFilledIcon
740
+ "arc-CardFooter--darkPathway": isDarkPathway
742
741
  }) },
743
742
  React__default["default"].createElement("div", { className: "arc-CardFooter-metaTextContainer" }, metaText && (React__default["default"].createElement("span", { className: "arc-CardFooter-metaText" }, metaText))),
744
743
  showButton && (React__default["default"].createElement("div", null,
745
744
  React__default["default"].createElement("div", { className: "arc-CardFooter-button" },
746
- React__default["default"].createElement("div", { className: classNames("arc-CardFooter-buttonIcon", "arc-CardFooter-buttonIcon--regular") },
747
- React__default["default"].createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 })),
748
- React__default["default"].createElement("div", { className: "arc-CardFooter-buttonIcon arc-CardFooter-buttonIcon--filled" },
749
- React__default["default"].createElement(Icon, { icon: icons[buttonIcon].filled, size: 40 })))))));
745
+ React__default["default"].createElement("div", { className: "arc-CardFooter-buttonIcon" },
746
+ React__default["default"].createElement("div", { className: classNames("arc-CardFooter-buttonIconRight", {
747
+ "arc-CardFooter-buttonIconRight--isHovered": isHovered
748
+ }) },
749
+ React__default["default"].createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 })),
750
+ React__default["default"].createElement("div", { className: "arc-CardFooter-buttonIconLeft" },
751
+ React__default["default"].createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 }))))))));
750
752
  };
751
753
 
752
754
  var ConditionalWrapper = function (_a) {
@@ -2192,7 +2194,7 @@ var FilterControl = function (_a) {
2192
2194
  return (React__default["default"].createElement("button", { className: classNames("arc-FilterControl", {
2193
2195
  "arc-FilterControl--onDarkSurface": surface === "dark",
2194
2196
  "arc-FilterControl--selected": selected
2195
- }), onClick: onClickHandler, tabIndex: 0 },
2197
+ }), onClick: onClickHandler, tabIndex: 0, "aria-pressed": selected },
2196
2198
  React__default["default"].createElement("div", { className: "arc-FilterControl-text" }, children)));
2197
2199
  };
2198
2200
 
@@ -2210,16 +2212,20 @@ var FilterItem = function (_a) {
2210
2212
  };
2211
2213
 
2212
2214
  var FilterItems = function (_a) {
2213
- var children = _a.children, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = __rest(_a, ["children", "displayType"]);
2214
- return (React__default["default"].createElement("div", __assign({ className: classNames("arc-FilterItems", {
2215
- "arc-FilterItems--list": displayType === "list",
2216
- "arc-FilterItems--grid": displayType === "grid"
2217
- }) }, filterDataAttrs(props)), displayType === "list"
2218
- ? React__default["default"].Children.toArray(children).map(function (child, index, array) { return (React__default["default"].createElement(React__default["default"].Fragment, { key: index },
2219
- child,
2220
- index !== array.length - 1 && (React__default["default"].createElement(React__default["default"].Fragment, null,
2221
- React__default["default"].createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
2222
- : children));
2215
+ var children = _a.children, error = _a.error, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = __rest(_a, ["children", "error", "displayType"]);
2216
+ return React__default["default"].Children.toArray(children).length > 0 ? (React__default["default"].createElement("div", null,
2217
+ React__default["default"].createElement("div", { className: "arc-FilterItems-offscreen", "aria-live": "assertive" }, React__default["default"].Children.toArray(children).length > 0
2218
+ ? "".concat(React__default["default"].Children.toArray(children).length, " records listed.")
2219
+ : null),
2220
+ React__default["default"].createElement("div", __assign({ className: classNames("arc-FilterItems", {
2221
+ "arc-FilterItems--list": displayType === "list",
2222
+ "arc-FilterItems--grid": displayType === "grid"
2223
+ }) }, filterDataAttrs(props)), displayType === "list"
2224
+ ? React__default["default"].Children.toArray(children).map(function (child, index, array) { return (React__default["default"].createElement(React__default["default"].Fragment, { key: index },
2225
+ child,
2226
+ index !== array.length - 1 && (React__default["default"].createElement(React__default["default"].Fragment, null,
2227
+ React__default["default"].createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
2228
+ : children))) : (React__default["default"].createElement("div", { "aria-live": "assertive" }, error));
2223
2229
  };
2224
2230
 
2225
2231
  /** use `Filter` for interactive elements that filter and categorise page content. */
@@ -2279,7 +2285,7 @@ var Filter = function (_a) {
2279
2285
  React__default["default"].createElement(FilterControls, { controlsAlignment: controlsAlignment }, controls &&
2280
2286
  React__default["default"].isValidElement(controls) &&
2281
2287
  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)); })),
2282
- 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; })))));
2288
+ React__default["default"].createElement(FilterItems, { displayType: displayType, error: error }, filteredItems.map(function (item) { return item.props.children; }))));
2283
2289
  };
2284
2290
  Filter.Controls = FilterControls;
2285
2291
  Filter.Control = FilterControl;
@@ -2419,7 +2425,8 @@ var VerticalSpace = function (_a) {
2419
2425
  };
2420
2426
 
2421
2427
  var InformationCard = function (_a) {
2422
- 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"]);
2428
+ 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"]);
2429
+ var surface = React.useContext(Context$5).surface;
2423
2430
  var isMinWidthArcBreakpointS = useMediaQuery("(min-width: ".concat(ArcBreakpointS, "px)"));
2424
2431
  var isMinWidthArcBreakpointM = useMediaQuery("(min-width: ".concat(ArcBreakpointM, "px)"));
2425
2432
  var _c = React.useState(false), showHoverState = _c[0], setShowHoverState = _c[1];
@@ -2427,8 +2434,10 @@ var InformationCard = function (_a) {
2427
2434
  var assetSpacing = isMinWidthArcBreakpointM ? "24" : "20";
2428
2435
  var containerSpacing = isMinWidthArcBreakpointS ? "32" : "24";
2429
2436
  var handleShowHoverState = function (show) { return function () { return setShowHoverState(show); }; };
2430
- return (React__default["default"].createElement("div", __assign({ className: classNames("arc-InformationCard", {
2431
- "arc-InformationCard--outlined": cardUrl && showHoverState
2437
+ return (React__default["default"].createElement("div", __assign({ style: { minHeight: minHeight }, className: classNames("arc-InformationCard", {
2438
+ "arc-InformationCard--isALink": cardUrl,
2439
+ "arc-InformationCard--outlined": cardUrl && showHoverState,
2440
+ "arc-InformationCard--onDarkSurface": surface === "dark"
2432
2441
  }) }, filterDataAttrs(props)),
2433
2442
  React__default["default"].createElement(Surface, { growVertically: true, padding: containerSpacing, background: "white" },
2434
2443
  React__default["default"].createElement("div", null,
@@ -2461,6 +2470,27 @@ var InformationCard = function (_a) {
2461
2470
  React__default["default"].createElement(Image, __assign({}, footerLogo))))))));
2462
2471
  };
2463
2472
 
2473
+ var ImpactCard = function (_a) {
2474
+ 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"]);
2475
+ var _f = React.useState(false), showHoverState = _f[0], setShowHoverState = _f[1];
2476
+ var surface = React.useContext(Context$5).surface;
2477
+ var handleShowHoverState = function (show) { return function () { return setShowHoverState(show); }; };
2478
+ var isDarkPathway = pathway === "dark";
2479
+ return (React__default["default"].createElement("div", __assign({ style: { minHeight: minHeight }, className: classNames("arc-ImpactCard", {
2480
+ "arc-ImpactCard--darkPathway": isDarkPathway,
2481
+ "arc-ImpactCard--outlined": url && showHoverState,
2482
+ "arc-ImpactCard--isHovered": showHoverState,
2483
+ "arc-ImpactCard--onDarkSurface": surface === "dark"
2484
+ }) }, filterDataAttrs(props)),
2485
+ React__default["default"].createElement("div", { className: "arc-ImpactCard-backgroundImageContainer" },
2486
+ React__default["default"].createElement(Image, __assign({ fit: "cover", alt: "" }, img))),
2487
+ React__default["default"].createElement("div", { className: "arc-ImpactCard-contentContainer" },
2488
+ label && (React__default["default"].createElement("div", { className: "arc-ImpactCard-labelContainer" },
2489
+ React__default["default"].createElement(CardLabel, { isDarkPathway: isDarkPathway, color: "supporting", isBold: true, text: label }))),
2490
+ React__default["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) })),
2491
+ React__default["default"].createElement(CardFooter, { buttonIcon: buttonIcon, showButton: true, isDarkPathway: isDarkPathway, isHovered: showHoverState })));
2492
+ };
2493
+
2464
2494
  /**
2465
2495
  * Use `Markup` to display HTML-formatted text.
2466
2496
  */
@@ -2478,14 +2508,16 @@ var Markup = function (_a) {
2478
2508
  * Use `MediaCard` to contain content and an image about a single subject.
2479
2509
  */
2480
2510
  var MediaCard = function (_a) {
2481
- 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"]);
2511
+ 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"]);
2512
+ var surface = React.useContext(Context$5).surface;
2482
2513
  var _e = React.useState(false), showHoverState = _e[0], setShowHoverState = _e[1];
2483
2514
  var isMinWidthArcBreakpointS = useMediaQuery("(min-width: ".concat(ArcBreakpointS, "px)"));
2484
2515
  var headingSpacing = isMinWidthArcBreakpointS ? "16" : "8";
2485
2516
  var handleShowHoverState = function (show) { return function () { return setShowHoverState(show); }; };
2486
- return (React__default["default"].createElement("div", __assign({ className: classNames("arc-MediaCard", {
2517
+ return (React__default["default"].createElement("div", __assign({ style: { minHeight: minHeight }, className: classNames("arc-MediaCard", {
2487
2518
  "arc-MediaCard--outlined": url && isContained && showHoverState,
2488
- "arc-MediaCard--contained": isContained
2519
+ "arc-MediaCard--contained": isContained,
2520
+ "arc-MediaCard--onDarkSurface": surface === "dark"
2489
2521
  }) }, filterDataAttrs(props)),
2490
2522
  React__default["default"].createElement(ConditionalWrapper, { condition: isContained, wrapper: function (children) { return (React__default["default"].createElement(Surface, { growVertically: true, background: "white" }, children)); } },
2491
2523
  React__default["default"].createElement("div", { className: "arc-MediaCard-imgContainer" },
@@ -2499,7 +2531,7 @@ var MediaCard = function (_a) {
2499
2531
  React__default["default"].createElement(VerticalSpace, { size: headingSpacing }),
2500
2532
  React__default["default"].createElement(Text, null, text),
2501
2533
  (url || metaText) && React__default["default"].createElement(VerticalSpace, { size: "24" })))),
2502
- React__default["default"].createElement(CardFooter, { showFilledIcon: showHoverState, buttonIcon: buttonIcon, metaText: metaText, showButton: Boolean(url) })))));
2534
+ React__default["default"].createElement(CardFooter, { buttonIcon: buttonIcon, metaText: metaText, showButton: Boolean(url), isHovered: showHoverState })))));
2503
2535
  };
2504
2536
 
2505
2537
  function _extends() {
@@ -39305,7 +39337,7 @@ var Select = function (_a) {
39305
39337
  "arc-Select-trigger--invalid": errorMessage
39306
39338
  },
39307
39339
  _b["arc-Select-trigger--size".concat(selectSize && selectSize.toUpperCase())] = selectSize && selectSize !== "m",
39308
- _b)) }, filterDataAttrs(props)),
39340
+ _b)), "aria-describedby": "".concat(id, "-helper") }, filterDataAttrs(props)),
39309
39341
  React__default["default"].createElement($cc7e05a45900e73f$export$4c8d1a57a761ef94, { className: "arc-Select-triggerText", placeholder: placeholder, "aria-label": getSelectedValueName(uncontrolledValue) }),
39310
39342
  React__default["default"].createElement($cc7e05a45900e73f$export$f04a61298a47a40f, { className: "arc-Select-triggerIcon" },
39311
39343
  React__default["default"].createElement(Icon, { icon: BtIconChevronDown2Px, size: getIconSize(selectSize) }))),
@@ -40053,8 +40085,8 @@ var Item = function (_a) {
40053
40085
  return (React__default["default"].createElement("li", __assign({ className: classNames((_b = {},
40054
40086
  _b["arc-SiteHeaderV2Item"] = true,
40055
40087
  _b["arc-SiteHeaderV2Item--emphasised"] = true,
40056
- _b)) }, filterDataAttrs(props)),
40057
- React__default["default"].createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href },
40088
+ _b)) }, filterDataAttrs(props), { role: "none" }),
40089
+ React__default["default"].createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href, role: "menuitem" },
40058
40090
  children,
40059
40091
  React__default["default"].createElement("span", { className: "arc-SiteHeaderV2Item-linkIcon" },
40060
40092
  React__default["default"].createElement(BtIconChevronRightMid, null)))));
@@ -40062,7 +40094,6 @@ var Item = function (_a) {
40062
40094
 
40063
40095
  var ItemGroup = function (_a) {
40064
40096
  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"]);
40065
- var _b = React.useState(false), hasClientSideJavaScript = _b[0], setHasClientSideJavaScript = _b[1];
40066
40097
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
40067
40098
  React.useEffect(function () {
40068
40099
  React__default["default"].Children.map(children, function (item) {
@@ -40071,27 +40102,18 @@ var ItemGroup = function (_a) {
40071
40102
  }
40072
40103
  });
40073
40104
  }, [children]);
40074
- React.useEffect(function () {
40075
- // useEffect does not run in ReactDomServer renders
40076
- setHasClientSideJavaScript(true);
40077
- }, [setHasClientSideJavaScript]);
40078
- var ElementType = "div";
40079
- if (title) {
40080
- ElementType = "details";
40081
- }
40105
+ var ElementType = title ? "details" : "div";
40082
40106
  return (React__default["default"].createElement("li", { className: "arc-SiteHeaderV2ItemGroup" },
40083
40107
  React__default["default"].createElement(ElementType, __assign({ className: "arc-SiteHeaderV2ItemGroup-details", open: Boolean(title && isMinWidthArcBreakpointL) }, filterDataAttrs(props)),
40084
40108
  title ? (React__default["default"].createElement(React__default["default"].Fragment, null,
40085
- React__default["default"].createElement("summary", { className: "arc-SiteHeaderV2ItemGroup-summary", tabIndex: isMinWidthArcBreakpointL ? -1 : 0 }, href ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
40086
- React__default["default"].createElement("a", { onClick: handleLinkClick({
40087
- handler: onClick
40088
- }), className: "arc-SiteHeaderV2ItemGroup-title", href: href, tabIndex: !hasClientSideJavaScript || isMinWidthArcBreakpointL
40089
- ? 0
40090
- : -1 }, title),
40109
+ React__default["default"].createElement("summary", { tabIndex: isMinWidthArcBreakpointL ? -1 : 0, className: "arc-SiteHeaderV2ItemGroup-summary" }, href ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
40110
+ React__default["default"].createElement(ConditionalWrapper, { condition: isMinWidthArcBreakpointL, wrapper: function (children) { return (React__default["default"].createElement("a", { onClick: handleLinkClick({
40111
+ handler: onClick
40112
+ }), className: "arc-SiteHeaderV2ItemGroup-title", href: href }, children)); }, fallback: function (children) { return (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, children)); } }, title),
40091
40113
  React__default["default"].createElement("span", { className: "arc-SiteHeaderV2ItemGroup-titleIcon" },
40092
40114
  React__default["default"].createElement(BtIconChevronRightMid, null)))) : (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, title))),
40093
40115
  React__default["default"].createElement("span", { className: "arc-SiteHeaderV2ItemGroup-subtitle" }, subtitle))) : null,
40094
- React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items" },
40116
+ React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items", role: "menubar" },
40095
40117
  children,
40096
40118
  href && title ? (React__default["default"].createElement("li", { className: "arc-SiteHeaderV2Item arc-SiteHeaderV2Item--viewAll" },
40097
40119
  React__default["default"].createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick({
@@ -40108,8 +40130,8 @@ var Column = function (_a) {
40108
40130
  }
40109
40131
  });
40110
40132
  }, [children]);
40111
- return (React__default["default"].createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props)),
40112
- React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2Column-items" }, children)));
40133
+ return (React__default["default"].createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props), { role: "none" }),
40134
+ React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2Column-items", role: "none" }, children)));
40113
40135
  };
40114
40136
 
40115
40137
  var BackButton = function (_a) {
@@ -40127,19 +40149,21 @@ var Panel = function (_a) {
40127
40149
  var _b, _c, _d, _e, _f;
40128
40150
  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"]);
40129
40151
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
40152
+ var menubarRef = useHeaderV2Context().menubarRef;
40130
40153
  React.useEffect(function () {
40131
40154
  // Where appropriate, close the Panel when clicking outside of it,
40132
40155
  // by listening to clicks on the entire document and acting accordingly.
40133
40156
  var handleClick = function (e) {
40134
- var _a, _b;
40157
+ var _a, _b, _c, _d;
40158
+ (_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");
40135
40159
  // Don't close the Panel…
40136
40160
  if (
40137
40161
  // The click is inside the current SubNavItem.
40138
- ((_a = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) ||
40162
+ ((_c = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _c === void 0 ? void 0 : _c.contains(e.target)) ||
40139
40163
  // The click is inside the current NavItem
40140
40164
  // and the Panel is not inside a SubNavItem.
40141
40165
  // and the target is not a link
40142
- (((_b = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _b === void 0 ? void 0 : _b.contains(e.target)) &&
40166
+ (((_d = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _d === void 0 ? void 0 : _d.contains(e.target)) &&
40143
40167
  !subNavItemRef &&
40144
40168
  !e.target.getAttribute("href")) ||
40145
40169
  // The Panel is inside a SubNavItem
@@ -40171,9 +40195,12 @@ var Panel = function (_a) {
40171
40195
  subNavItemRef,
40172
40196
  subNavLink,
40173
40197
  setOpenPanelOnFirstClick,
40198
+ menubarRef,
40174
40199
  ]);
40175
40200
  React.useEffect(function () {
40176
40201
  var handleClick = function (e) {
40202
+ var _a, _b;
40203
+ (_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");
40177
40204
  // Close the Panel…
40178
40205
  if (e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel")) {
40179
40206
  setOpenPanelOnFirstClick(false);
@@ -40189,9 +40216,10 @@ var Panel = function (_a) {
40189
40216
  return function () {
40190
40217
  document.removeEventListener("click", handleClick);
40191
40218
  };
40192
- }, [navItemRef, setOpenPanelOnFirstClick]);
40219
+ }, [navItemRef, setOpenPanelOnFirstClick, menubarRef]);
40193
40220
  React.useEffect(function () {
40194
40221
  var handleKeydown = function (e) {
40222
+ var _a, _b;
40195
40223
  // Check the viewport width at time of press
40196
40224
  var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(ArcBreakpointL, "px)")).matches;
40197
40225
  if (e.key === "Escape" || e.keyCode === 27) {
@@ -40202,12 +40230,15 @@ var Panel = function (_a) {
40202
40230
  }
40203
40231
  return setOpen(false);
40204
40232
  }
40233
+ if (e.key === "Tab") {
40234
+ (_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");
40235
+ }
40205
40236
  };
40206
40237
  window.addEventListener("keydown", handleKeydown);
40207
40238
  return function () {
40208
40239
  window.removeEventListener("keydown", handleKeydown);
40209
40240
  };
40210
- }, [setOpen, subNavItemRef]);
40241
+ }, [setOpen, subNavItemRef, menubarRef]);
40211
40242
  return (React__default["default"].createElement("div", { style: { display: "flex" } },
40212
40243
  React__default["default"].createElement("div", __assign({ className: classNames((_b = {},
40213
40244
  _b["arc-SiteHeaderV2Panel"] = true,
@@ -40296,8 +40327,9 @@ var NavItem = function (_a) {
40296
40327
  handler: onClick
40297
40328
  }), className: "arc-SiteHeaderV2NavItem-link", href: href }, title)) : null) : (React__default["default"].createElement(React__default["default"].Fragment, null,
40298
40329
  React__default["default"].createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
40299
- React__default["default"].createElement("button", { "aria-expanded": panelOpen, className: classNames((_c = {},
40330
+ React__default["default"].createElement("button", { "aria-expanded": panelOpen, role: "menuitem", "aria-haspopup": "true", "aria-label": title, className: classNames((_c = {},
40300
40331
  _c["arc-SiteHeaderV2NavItem-link"] = true,
40332
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
40301
40333
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
40302
40334
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
40303
40335
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
@@ -40435,10 +40467,11 @@ var NavItemWithSubNav = function (_a) {
40435
40467
  ? horizontalPanelOpen
40436
40468
  : panelOpen,
40437
40469
  _b["arc-SiteHeaderV2NavItemWithSubNav-active"] = panelOpen || (opensFirstWithPanel && openSecondaryWithSubNav),
40438
- _b)), ref: navItem }, filterDataAttrs(props)),
40470
+ _b)), role: "none", ref: navItem }, filterDataAttrs(props)),
40439
40471
  React__default["default"].createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
40440
- React__default["default"].createElement("button", { "aria-expanded": horizontalPanelOpen, className: classNames((_c = {},
40472
+ React__default["default"].createElement("button", { "aria-expanded": horizontalPanelOpen || panelOpen, role: "menuitem", "aria-label": title, "aria-haspopup": "true", tabIndex: 0, className: classNames((_c = {},
40441
40473
  _c["arc-SiteHeaderV2NavItem-link"] = true,
40474
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
40442
40475
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
40443
40476
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
40444
40477
  _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
@@ -40571,7 +40604,7 @@ var VerticalDivider = function () {
40571
40604
  return React__default["default"].createElement("li", { className: "arc-SiteHeaderV2VerticalDivider-line" });
40572
40605
  };
40573
40606
 
40574
- var defaultContext = { transparent: false };
40607
+ var defaultContext = { transparent: false, menubarRef: null };
40575
40608
  var Context = React.createContext(defaultContext);
40576
40609
  var Provider = Context.Provider;
40577
40610
  /**
@@ -40583,6 +40616,7 @@ var SiteHeaderV2 = function (_a) {
40583
40616
  var _j = React.useState(false), hasClientSideJavaScript = _j[0], setHasClientSideJavaScript = _j[1];
40584
40617
  var _k = React.useState(false), menuOpen = _k[0], setMenuOpen = _k[1];
40585
40618
  var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
40619
+ var menubarRef = React.useRef();
40586
40620
  React.useEffect(function () {
40587
40621
  React__default["default"].Children.map(children, function (item) {
40588
40622
  if (item &&
@@ -40616,6 +40650,10 @@ var SiteHeaderV2 = function (_a) {
40616
40650
  window.removeEventListener("keydown", handleKeydown);
40617
40651
  };
40618
40652
  }, [setMenuOpen]);
40653
+ React.useEffect(function () {
40654
+ var _a, _b;
40655
+ (_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");
40656
+ }, []);
40619
40657
  React.useEffect(function () {
40620
40658
  var handleClick = function (e) {
40621
40659
  if (e.target.getAttribute("href")) {
@@ -40631,7 +40669,7 @@ var SiteHeaderV2 = function (_a) {
40631
40669
  // useEffect does not run in ReactDomServer renders
40632
40670
  setHasClientSideJavaScript(true);
40633
40671
  }, [setHasClientSideJavaScript]);
40634
- return (React__default["default"].createElement(Provider, { value: { transparent: isTransparent } },
40672
+ return (React__default["default"].createElement(Provider, { value: { transparent: isTransparent, menubarRef: menubarRef } },
40635
40673
  React__default["default"].createElement("div", __assign({ className: classNames((_b = {},
40636
40674
  _b["arc-SiteHeaderV2"] = true,
40637
40675
  _b["arc-SiteHeaderV2--menuOpen"] = menuOpen,
@@ -40648,8 +40686,8 @@ var SiteHeaderV2 = function (_a) {
40648
40686
  children && (React__default["default"].createElement("nav", { className: "arc-SiteHeaderV2-nav" },
40649
40687
  React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-menuButton" },
40650
40688
  React__default["default"].createElement(MenuButton, { menuOpen: menuOpen, setMenuOpen: setMenuOpen })),
40651
- React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-main" },
40652
- React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2-navItems" }, children),
40689
+ React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-main", tabIndex: -1 },
40690
+ React__default["default"].createElement("ul", { role: "menubar", "aria-label": "navigation", ref: menubarRef, className: "arc-SiteHeaderV2-navItems" }, children),
40653
40691
  hasLogin && (React__default["default"].createElement(React__default["default"].Fragment, null, loginOnClick ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-mobileButtonContainer" },
40654
40692
  React__default["default"].createElement("button", { className: "arc-SiteHeaderV2-mobileLogin", onClick: loginOnClick },
40655
40693
  loginTitle,
@@ -40664,6 +40702,9 @@ var SiteHeaderV2 = function (_a) {
40664
40702
  basket ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-basket" }, basket)) : null,
40665
40703
  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)))))))))));
40666
40704
  };
40705
+ function useHeaderV2Context() {
40706
+ return React.useContext(Context);
40707
+ }
40667
40708
  SiteHeaderV2.Column = Column;
40668
40709
  SiteHeaderV2.Item = Item;
40669
40710
  SiteHeaderV2.ItemGroup = ItemGroup;
@@ -41675,15 +41716,16 @@ var TextArea = React.forwardRef(function (_a, ref) {
41675
41716
  return (React__default["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 &&
41676
41717
  showCharacterCount && (React__default["default"].createElement(React__default["default"].Fragment, null,
41677
41718
  React__default["default"].createElement(Text, { tone: isDisabled ? "muted" : "default" },
41678
- React__default["default"].createElement("span", { className: "arc-TextArea-characterCount" },
41719
+ React__default["default"].createElement("span", { className: "arc-TextArea-characterCount", "aria-live": "polite" },
41679
41720
  characterCount,
41680
41721
  " / ",
41681
- maxLength)))) }, filterDataAttrs(props)),
41722
+ maxLength,
41723
+ characterCount === maxLength && (React__default["default"].createElement(VisuallyHidden, null, "Maximum characters reached")))))) }, filterDataAttrs(props)),
41682
41724
  React__default["default"].createElement("textarea", { id: id, className: classNames("arc-TextArea", {
41683
41725
  "arc-TextArea--noResize": resize !== "manual",
41684
41726
  "arc-TextArea--onDarkSurface": surface === "dark",
41685
41727
  "arc-TextArea--invalid": errorMessage
41686
- }), 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 } })));
41728
+ }), 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") })));
41687
41729
  });
41688
41730
 
41689
41731
  /**
@@ -42700,20 +42742,22 @@ var Truncate = function (_a) {
42700
42742
  };
42701
42743
 
42702
42744
  var TypographyCard = function (_a) {
42703
- 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"]);
42745
+ 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"]);
42746
+ var surface = React.useContext(Context$5).surface;
42704
42747
  var _f = React.useState(false), showHoverState = _f[0], setShowHoverState = _f[1];
42705
42748
  var handleShowHoverState = function (show) { return function () { return setShowHoverState(show); }; };
42706
42749
  var isDarkPathway = pathway === "dark";
42707
- return (React__default["default"].createElement("div", __assign({ className: classNames("arc-TypographyCard", {
42750
+ return (React__default["default"].createElement("div", __assign({ style: { minHeight: minHeight }, className: classNames("arc-TypographyCard", {
42708
42751
  "arc-TypographyCard--outlined": showHoverState,
42709
42752
  "arc-TypographyCard--darkPathway": isDarkPathway,
42710
- "arc-TypographyCard--lightPathway": !isDarkPathway
42753
+ "arc-TypographyCard--lightPathway": !isDarkPathway,
42754
+ "arc-TypographyCard--onDarkSurface": surface === "dark"
42711
42755
  }) }, filterDataAttrs(props)),
42712
42756
  React__default["default"].createElement("div", { className: "arc-TypographyCard-contentContainer" },
42713
42757
  label && (React__default["default"].createElement("div", { className: "arc-TypographyCard-labelContainer" },
42714
- React__default["default"].createElement(CardLabel, { isDarkPathway: isDarkPathway, isBold: false, text: label }))),
42758
+ React__default["default"].createElement(CardLabel, { isDarkPathway: isDarkPathway, isBold: true, text: label }))),
42715
42759
  React__default["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) })),
42716
- React__default["default"].createElement(CardFooter, { showButton: true, isDarkPathway: isDarkPathway, showFilledIcon: showHoverState, buttonIcon: buttonIcon, metaText: metaText })));
42760
+ React__default["default"].createElement(CardFooter, { showButton: true, isDarkPathway: isDarkPathway, buttonIcon: buttonIcon, metaText: metaText, isHovered: showHoverState })));
42717
42761
  };
42718
42762
 
42719
42763
  /**
@@ -42766,6 +42810,7 @@ exports.Group = Group;
42766
42810
  exports.Heading = Heading;
42767
42811
  exports.Icon = Icon;
42768
42812
  exports.Image = Image;
42813
+ exports.ImpactCard = ImpactCard;
42769
42814
  exports.InformationCard = InformationCard;
42770
42815
  exports.Markup = Markup;
42771
42816
  exports.MediaCard = MediaCard;