@arc-ui/components 11.16.0 → 11.18.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 (230) hide show
  1. package/dist/Calendar/Calendar.cjs.js +21 -0
  2. package/dist/Calendar/Calendar.esm.js +13 -0
  3. package/dist/Calendar/package.json +7 -0
  4. package/dist/Checkbox/Checkbox.cjs.js +3 -2
  5. package/dist/Checkbox/Checkbox.esm.js +3 -2
  6. package/dist/DatePicker/DatePicker.cjs.js +565 -0
  7. package/dist/DatePicker/DatePicker.esm.js +552 -0
  8. package/dist/DatePicker/package.json +7 -0
  9. package/dist/FormControl/FormControl.cjs.js +2 -1
  10. package/dist/FormControl/FormControl.esm.js +2 -1
  11. package/dist/InformationCard/InformationCard.cjs.js +10 -9
  12. package/dist/InformationCard/InformationCard.esm.js +8 -7
  13. package/dist/MediaCard/MediaCard.cjs.js +56 -0
  14. package/dist/MediaCard/MediaCard.esm.js +48 -0
  15. package/dist/MediaCard/package.json +7 -0
  16. package/dist/Modal/Modal.cjs.js +13 -286
  17. package/dist/Modal/Modal.esm.js +6 -279
  18. package/dist/RadioGroup/RadioGroup.cjs.js +3 -2
  19. package/dist/RadioGroup/RadioGroup.esm.js +3 -2
  20. package/dist/Select/Select.cjs.js +31 -2705
  21. package/dist/Select/Select.esm.js +13 -2668
  22. package/dist/SiteFooter/SiteFooter.cjs.js +2 -2
  23. package/dist/SiteFooter/SiteFooter.esm.js +3 -3
  24. package/dist/SiteHeader/SiteHeader.cjs.js +2 -2
  25. package/dist/SiteHeader/SiteHeader.esm.js +2 -2
  26. package/dist/SiteHeaderV2/SiteHeaderV2.cjs.js +23 -0
  27. package/dist/SiteHeaderV2/SiteHeaderV2.esm.js +15 -0
  28. package/dist/SiteHeaderV2/package.json +7 -0
  29. package/dist/Switch/Switch.cjs.js +4 -3
  30. package/dist/Switch/Switch.esm.js +4 -3
  31. package/dist/Tabs/Tabs.cjs.js +5 -5
  32. package/dist/Tabs/Tabs.esm.js +5 -5
  33. package/dist/TextArea/TextArea.cjs.js +20 -20
  34. package/dist/TextArea/TextArea.esm.js +20 -20
  35. package/dist/TextInput/TextInput.cjs.js +3 -2
  36. package/dist/TextInput/TextInput.esm.js +3 -2
  37. package/dist/Toast/Toast.cjs.js +6 -7
  38. package/dist/Toast/Toast.esm.js +6 -7
  39. package/dist/TypographyCard/TypographyCard.cjs.js +13 -70
  40. package/dist/TypographyCard/TypographyCard.esm.js +14 -71
  41. package/dist/_shared/cjs/Calendar-18e255f8.js +4106 -0
  42. package/dist/_shared/cjs/CardFooter-43c32239.js +80 -0
  43. package/dist/_shared/cjs/CardLabel-768abf20.js +54 -0
  44. package/dist/_shared/cjs/{Checkbox-904ad028.js → Checkbox-4d4b432f.js} +1 -1
  45. package/dist/_shared/cjs/{index-3d69ea00.js → Combination-9974f2e2.js} +662 -145
  46. package/dist/_shared/cjs/{FormControl-166e0957.js → FormControl-b26ad353.js} +8 -5
  47. package/dist/_shared/cjs/{RadioGroup-1eddf86f.js → RadioGroup-23c964ae.js} +1 -1
  48. package/dist/_shared/cjs/{SiteFooter-97c27b29.js → SiteFooter-65b6360c.js} +2 -2
  49. package/dist/_shared/cjs/{SiteHeader.rehydrator-af3dddef.js → SiteHeader.rehydrator-df053a52.js} +8 -8
  50. package/dist/_shared/cjs/SiteHeaderV2-79930632.js +663 -0
  51. package/dist/_shared/cjs/{Tabs-cc77dabb.js → Tabs-34db6bc1.js} +4 -4
  52. package/dist/_shared/cjs/{TextInput-fd9c756f.js → TextInput-d0370fa8.js} +19 -6
  53. package/dist/_shared/cjs/{Toast-91e96744.js → Toast-392b1d60.js} +292 -34
  54. package/dist/_shared/cjs/{index-84e6a68f.js → index-6eb396a3.js} +1 -1
  55. package/dist/_shared/cjs/{index-6542b467.js → index-74004a9c.js} +1 -1
  56. package/dist/_shared/cjs/index-77ab5c6a.js +2180 -0
  57. package/dist/_shared/cjs/{index-d31f2b65.js → index-9f99d686.js} +1 -1
  58. package/dist/_shared/cjs/{index-1641d0b4.js → index-a31e64a9.js} +1 -1
  59. package/dist/_shared/cjs/{index-49c72a87.js → index-d38f1bd0.js} +1 -1
  60. package/dist/_shared/esm/Calendar-4033fa48.js +4093 -0
  61. package/dist/_shared/esm/CardFooter-dd8d4000.js +74 -0
  62. package/dist/_shared/esm/CardLabel-d6d71407.js +46 -0
  63. package/dist/_shared/esm/{Checkbox-8a5bb9a1.js → Checkbox-720b074d.js} +1 -1
  64. package/dist/_shared/esm/{index-3e2bc99d.js → Combination-e9f7e64e.js} +643 -132
  65. package/dist/_shared/esm/{FormControl-9d4ddfec.js → FormControl-f0b8fe91.js} +8 -5
  66. package/dist/_shared/esm/{RadioGroup-238db88d.js → RadioGroup-37fdb06b.js} +1 -1
  67. package/dist/_shared/esm/{SiteFooter-94316b8b.js → SiteFooter-38ee1536.js} +1 -1
  68. package/dist/_shared/esm/{SiteHeader.rehydrator-1b507253.js → SiteHeader.rehydrator-32bdcd88.js} +2 -2
  69. package/dist/_shared/esm/SiteHeaderV2-9e7e7d3b.js +657 -0
  70. package/dist/_shared/esm/{Tabs-8719d952.js → Tabs-df9965dd.js} +4 -4
  71. package/dist/_shared/esm/{TextInput-c1e2a1dd.js → TextInput-abbab56b.js} +19 -6
  72. package/dist/_shared/esm/{Toast-7cb1e544.js → Toast-5d66e13f.js} +264 -7
  73. package/dist/_shared/esm/{index-39019a9b.js → index-044da8d0.js} +1 -1
  74. package/dist/_shared/esm/{index-6b7b075c.js → index-25a5b393.js} +1 -1
  75. package/dist/_shared/esm/{index-246b4f18.js → index-2cfab9f2.js} +1 -1
  76. package/dist/_shared/esm/{index-12f3a407.js → index-7b531fa7.js} +68 -68
  77. package/dist/_shared/esm/index-b84a20c6.js +2155 -0
  78. package/dist/_shared/esm/{index-db47e95a.js → index-ca72c9d5.js} +1 -1
  79. package/dist/_shared/esm/{index-936b5179.js → index-efa9be1a.js} +1 -1
  80. package/dist/_shared/esm/{index.es-c552c0ea.js → use-media-query-4c807227.js} +9 -9
  81. package/dist/index.es.js +1188 -791
  82. package/dist/index.es.js.map +1 -1
  83. package/dist/index.js +1189 -791
  84. package/dist/index.js.map +1 -1
  85. package/dist/styles.css +4 -4
  86. package/dist/types/components/Calendar/Calendar.d.ts +49 -0
  87. package/dist/types/components/Calendar/Calendar.provider.d.ts +21 -0
  88. package/dist/types/components/Calendar/components/CalendarDateSelect/CalendarDateSelect.d.ts +15 -0
  89. package/dist/types/components/Calendar/components/CalendarDateSelect/index.d.ts +1 -0
  90. package/dist/types/components/Calendar/components/CalendarDayGrid/CalendarDayGrid.d.ts +6 -0
  91. package/dist/types/components/Calendar/components/CalendarDayGrid/index.d.ts +1 -0
  92. package/dist/types/components/Calendar/components/CalendarDayNumber/CalendarDayNumber.d.ts +8 -0
  93. package/dist/types/components/Calendar/components/CalendarDayNumber/index.d.ts +1 -0
  94. package/dist/types/components/Calendar/components/CalendarDoubleMonthView/CalendarDoubleMonthView.d.ts +9 -0
  95. package/dist/types/components/Calendar/components/CalendarDoubleMonthView/index.d.ts +1 -0
  96. package/dist/types/components/Calendar/components/CalendarFooter/CalendarFooter.d.ts +6 -0
  97. package/dist/types/components/Calendar/components/CalendarFooter/index.d.ts +1 -0
  98. package/dist/types/components/Calendar/components/CalendarMonthView/CalendarMonthView.d.ts +9 -0
  99. package/dist/types/components/Calendar/components/CalendarMonthView/index.d.ts +1 -0
  100. package/dist/types/components/Calendar/components/CalendarMonthYearView/CalendarMonthYearView.d.ts +11 -0
  101. package/dist/types/components/Calendar/components/CalendarMonthYearView/index.d.ts +1 -0
  102. package/dist/types/components/Calendar/components/CalendarNavButton/CalendarNavButton.d.ts +10 -0
  103. package/dist/types/components/Calendar/components/CalendarNavButton/index.d.ts +1 -0
  104. package/dist/types/components/Calendar/components/CalendarWrapper/CalendarWrapper.d.ts +5 -0
  105. package/dist/types/components/Calendar/components/CalendarWrapper/index.d.ts +1 -0
  106. package/dist/types/components/Calendar/components/index.d.ts +6 -0
  107. package/dist/types/components/Calendar/constants/day-names.d.ts +5 -0
  108. package/dist/types/components/Calendar/constants/index.d.ts +1 -0
  109. package/dist/types/components/Calendar/helpers/contains-date.d.ts +1 -0
  110. package/dist/types/components/Calendar/helpers/contains-date.test.d.ts +1 -0
  111. package/dist/types/components/Calendar/helpers/date-without-time.d.ts +1 -0
  112. package/dist/types/components/Calendar/helpers/date-without-time.test.d.ts +1 -0
  113. package/dist/types/components/Calendar/helpers/get-calendar-type.d.ts +2 -0
  114. package/dist/types/components/Calendar/helpers/get-calendar-type.test.d.ts +1 -0
  115. package/dist/types/components/Calendar/helpers/get-dates-in-month.d.ts +1 -0
  116. package/dist/types/components/Calendar/helpers/get-dates-in-month.test.d.ts +1 -0
  117. package/dist/types/components/Calendar/helpers/get-double-month-display-range.d.ts +1 -0
  118. package/dist/types/components/Calendar/helpers/get-double-month-display-range.test.d.ts +1 -0
  119. package/dist/types/components/Calendar/helpers/get-focus-date.d.ts +5 -0
  120. package/dist/types/components/Calendar/helpers/get-focus-date.test.d.ts +1 -0
  121. package/dist/types/components/Calendar/helpers/get-highlighted-range.d.ts +6 -0
  122. package/dist/types/components/Calendar/helpers/get-highlighted-range.test.d.ts +1 -0
  123. package/dist/types/components/Calendar/helpers/get-keydown-date.d.ts +6 -0
  124. package/dist/types/components/Calendar/helpers/get-keydown-date.test.d.ts +1 -0
  125. package/dist/types/components/Calendar/helpers/index.d.ts +13 -0
  126. package/dist/types/components/Calendar/helpers/is-day.d.ts +2 -0
  127. package/dist/types/components/Calendar/helpers/is-day.test.d.ts +1 -0
  128. package/dist/types/components/Calendar/helpers/is-disabled-date.d.ts +1 -0
  129. package/dist/types/components/Calendar/helpers/is-disabled-date.test.d.ts +1 -0
  130. package/dist/types/components/Calendar/helpers/is-month-after-max-date.d.ts +1 -0
  131. package/dist/types/components/Calendar/helpers/is-month-after-max-date.test.d.ts +1 -0
  132. package/dist/types/components/Calendar/helpers/is-month-before-min-date.d.ts +1 -0
  133. package/dist/types/components/Calendar/helpers/is-month-before-min-date.test.d.ts +1 -0
  134. package/dist/types/components/Calendar/helpers/process-selected-range.d.ts +9 -0
  135. package/dist/types/components/Calendar/helpers/process-selected-range.test.d.ts +1 -0
  136. package/dist/types/components/Calendar/index.d.ts +2 -0
  137. package/dist/types/components/Calendar/state/handlers/calendar-keydown-handler.d.ts +3 -0
  138. package/dist/types/components/Calendar/state/handlers/day-grid-leave-handler.d.ts +3 -0
  139. package/dist/types/components/Calendar/state/handlers/day-number-select-handler.d.ts +3 -0
  140. package/dist/types/components/Calendar/state/handlers/default-handler.d.ts +2 -0
  141. package/dist/types/components/Calendar/state/handlers/dropdown-change-month-handler.d.ts +3 -0
  142. package/dist/types/components/Calendar/state/handlers/dropdown-change-year-handler.d.ts +3 -0
  143. package/dist/types/components/Calendar/state/handlers/highlight-range-handler.d.ts +3 -0
  144. package/dist/types/components/Calendar/state/handlers/index.d.ts +12 -0
  145. package/dist/types/components/Calendar/state/handlers/range-select-handler.d.ts +3 -0
  146. package/dist/types/components/Calendar/state/handlers/show-next-double-month-handler.d.ts +3 -0
  147. package/dist/types/components/Calendar/state/handlers/show-next-month-handler.d.ts +3 -0
  148. package/dist/types/components/Calendar/state/handlers/show-previous-double-month-handler.d.ts +3 -0
  149. package/dist/types/components/Calendar/state/handlers/show-previous-month-handler.d.ts +3 -0
  150. package/dist/types/components/Calendar/state/index.d.ts +2 -0
  151. package/dist/types/components/Calendar/state/reducer.d.ts +3 -0
  152. package/dist/types/components/Calendar/state/reducer.test.d.ts +1 -0
  153. package/dist/types/components/Calendar/state/types/actions.d.ts +81 -0
  154. package/dist/types/components/Calendar/state/types/state-handler.d.ts +3 -0
  155. package/dist/types/components/Calendar/state/types/state.d.ts +5 -0
  156. package/dist/types/components/Calendar/types/calendar-type.d.ts +1 -0
  157. package/dist/types/components/Calendar/types/date-select-value.d.ts +2 -0
  158. package/dist/types/components/Calendar/types/index.d.ts +6 -0
  159. package/dist/types/components/Calendar/types/key-names.d.ts +13 -0
  160. package/dist/types/components/Calendar/types/range-selection.d.ts +10 -0
  161. package/dist/types/components/Calendar/types/selection-type.d.ts +1 -0
  162. package/dist/types/components/Calendar/types/week-days.d.ts +18 -0
  163. package/dist/types/components/DatePicker/DatePicker.d.ts +17 -0
  164. package/dist/types/components/DatePicker/constants/date-format.d.ts +1 -0
  165. package/dist/types/components/DatePicker/constants/index.d.ts +1 -0
  166. package/dist/types/components/DatePicker/helpers/convert-date-string-to-date.d.ts +1 -0
  167. package/dist/types/components/DatePicker/helpers/convert-date-string-to-date.test.d.ts +1 -0
  168. package/dist/types/components/DatePicker/helpers/convert-range-string-to-dates.d.ts +1 -0
  169. package/dist/types/components/DatePicker/helpers/convert-range-string-to-dates.test.d.ts +1 -0
  170. package/dist/types/components/DatePicker/helpers/format-date.d.ts +1 -0
  171. package/dist/types/components/DatePicker/helpers/format-date.test.d.ts +1 -0
  172. package/dist/types/components/DatePicker/helpers/index.d.ts +8 -0
  173. package/dist/types/components/DatePicker/helpers/is-date-valid.d.ts +1 -0
  174. package/dist/types/components/DatePicker/helpers/is-date-valid.test.d.ts +1 -0
  175. package/dist/types/components/DatePicker/helpers/is-disabled-date.d.ts +1 -0
  176. package/dist/types/components/DatePicker/helpers/is-disabled-date.test.d.ts +1 -0
  177. package/dist/types/components/DatePicker/helpers/is-range-valid.d.ts +1 -0
  178. package/dist/types/components/DatePicker/helpers/is-range-valid.test.d.ts +1 -0
  179. package/dist/types/components/DatePicker/helpers/parse-date-string.d.ts +5 -0
  180. package/dist/types/components/DatePicker/helpers/parse-date-string.test.d.ts +1 -0
  181. package/dist/types/components/DatePicker/helpers/parse-range-string.d.ts +14 -0
  182. package/dist/types/components/DatePicker/helpers/parse-range-string.test.d.ts +1 -0
  183. package/dist/types/components/DatePicker/index.d.ts +6 -0
  184. package/dist/types/components/FormControl/FormControl.d.ts +4 -0
  185. package/dist/types/components/RadioGroup/RadioGroup.d.ts +1 -1
  186. package/dist/types/components/SiteHeaderV2/SiteHeaderV2.d.ts +77 -0
  187. package/dist/types/components/SiteHeaderV2/components/BackButton/BackButton.d.ts +6 -0
  188. package/dist/types/components/SiteHeaderV2/components/BackButton/index.d.ts +1 -0
  189. package/dist/types/components/SiteHeaderV2/components/Column/Column.d.ts +8 -0
  190. package/dist/types/components/SiteHeaderV2/components/Column/index.d.ts +1 -0
  191. package/dist/types/components/SiteHeaderV2/components/HorizontalPanel/HorizontalPanel.d.ts +13 -0
  192. package/dist/types/components/SiteHeaderV2/components/HorizontalPanel/index.d.ts +1 -0
  193. package/dist/types/components/SiteHeaderV2/components/Item/Item.d.ts +20 -0
  194. package/dist/types/components/SiteHeaderV2/components/Item/index.d.ts +1 -0
  195. package/dist/types/components/SiteHeaderV2/components/ItemGroup/ItemGroup.d.ts +27 -0
  196. package/dist/types/components/SiteHeaderV2/components/ItemGroup/index.d.ts +1 -0
  197. package/dist/types/components/SiteHeaderV2/components/MenuButton/MenuButton.d.ts +6 -0
  198. package/dist/types/components/SiteHeaderV2/components/MenuButton/index.d.ts +1 -0
  199. package/dist/types/components/SiteHeaderV2/components/NavItem/NavItem.d.ts +41 -0
  200. package/dist/types/components/SiteHeaderV2/components/NavItem/NavItemWithSubNav.d.ts +56 -0
  201. package/dist/types/components/SiteHeaderV2/components/NavItem/index.d.ts +2 -0
  202. package/dist/types/components/SiteHeaderV2/components/NodeItem/NodeItem.d.ts +8 -0
  203. package/dist/types/components/SiteHeaderV2/components/Panel/Panel.d.ts +28 -0
  204. package/dist/types/components/SiteHeaderV2/components/Panel/index.d.ts +1 -0
  205. package/dist/types/components/SiteHeaderV2/components/SubNavItem/SubNavItem.d.ts +45 -0
  206. package/dist/types/components/SiteHeaderV2/components/SubNavItem/index.d.ts +1 -0
  207. package/dist/types/components/SiteHeaderV2/components/VerticalDivider/VerticalDivider.d.ts +1 -0
  208. package/dist/types/components/SiteHeaderV2/components/VerticalDivider/index.d.ts +1 -0
  209. package/dist/types/components/SiteHeaderV2/index.d.ts +1 -0
  210. package/dist/types/components/TextArea/TextArea.d.ts +4 -0
  211. package/dist/types/components/TextInput/TextInput.d.ts +22 -3
  212. package/dist/types/components/index.d.ts +1 -0
  213. package/dist/types/private-components/CardFooter/CardFooter.d.ts +11 -0
  214. package/dist/types/private-components/CardFooter/index.d.ts +1 -0
  215. package/dist/types/private-components/CardHeading/CardHeading.d.ts +19 -0
  216. package/dist/types/private-components/CardHeading/index.d.ts +1 -0
  217. package/dist/types/private-components/CardLabel/CardLabel.d.ts +10 -0
  218. package/dist/types/private-components/CardLabel/index.d.ts +1 -0
  219. package/dist/types/private-components/index.d.ts +4 -0
  220. package/dist/types/styles.d.ts +6 -0
  221. package/package.json +13 -4
  222. package/dist/_shared/cjs/BtIconArrowRight.esm-8e8ac316.js +0 -30
  223. package/dist/_shared/cjs/index-4ecad2dd.js +0 -273
  224. package/dist/_shared/esm/BtIconArrowRight.esm-267916a4.js +0 -24
  225. package/dist/_shared/esm/index-d0307140.js +0 -264
  226. package/dist/types/internal-components/index.d.ts +0 -1
  227. package/dist/_shared/cjs/{index-56a040f4.js → index-dd1d18ea.js} +66 -66
  228. package/dist/_shared/cjs/{index.es-26dd8c5d.js → use-media-query-e61881d8.js} +8 -8
  229. /package/dist/types/{internal-components → private-components}/ConditionalWrapper/ConditionalWrapper.d.ts +0 -0
  230. /package/dist/types/{internal-components → private-components}/ConditionalWrapper/index.d.ts +0 -0
@@ -0,0 +1,657 @@
1
+ import { _ as __rest, a as __assign, f as filterDataAttrs } from './filter-data-attrs-ea8f4ed4.js';
2
+ import { u as useMediaQuery, b as ArcBreakpointL } from './use-media-query-4c807227.js';
3
+ import { c as classNames } from './index-2e73c2e9.js';
4
+ import React__default, { useState, useEffect, Fragment, useRef, createContext, useContext } from 'react';
5
+ import { B as BrandLogo } from './BrandLogo-1af78f76.js';
6
+ import { S as Surface } from './Surface-0ca6817d.js';
7
+ import { h as handleLinkClick } from './handle-link-click-f64f55a2.js';
8
+ import { B as BtIconChevronRightMid } from './BtIconChevronRightMid.esm-32268f1a.js';
9
+ import { B as BtIconChevronLeft2Px, a as BtIconChevronRight2Px } from './BtIconChevronRight2Px.esm-75e92636.js';
10
+ import { B as Button } from './Button-a453e8e4.js';
11
+ import { s as suffixModifier } from './suffix-modifier-3d548e45.js';
12
+ import { T as Text } from './Text-14f586ac.js';
13
+ import { I as Icon } from './Icon-abd0d990.js';
14
+
15
+ var Item = function (_a) {
16
+ var _b;
17
+ var children = _a.children, href = _a.href; _a.isEmphasised; var onClick = _a.onClick, props = __rest(_a, ["children", "href", "isEmphasised", "onClick"]);
18
+ return (React__default.createElement("li", __assign({ className: classNames((_b = {},
19
+ _b["arc-SiteHeaderV2Item"] = true,
20
+ _b["arc-SiteHeaderV2Item--emphasised"] = true,
21
+ _b)) }, filterDataAttrs(props)),
22
+ React__default.createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href },
23
+ React__default.createElement("span", { className: "arc-SiteHeaderV2Item-linkIcon" },
24
+ React__default.createElement(BtIconChevronRightMid, null)),
25
+ children)));
26
+ };
27
+
28
+ var ItemGroup = function (_a) {
29
+ 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
+ var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
32
+ useEffect(function () {
33
+ React__default.Children.map(children, function (item) {
34
+ if (item && item.type !== Item && item.type !== Fragment) {
35
+ throw new Error("Illegal child passed to <SiteHeaderV2.ItemGroup />. Ensure to only use <SiteHeaderV2.Item />.");
36
+ }
37
+ });
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
+ }
47
+ return (React__default.createElement("li", { className: "arc-SiteHeaderV2ItemGroup" },
48
+ React__default.createElement(ElementType, __assign({ className: "arc-SiteHeaderV2ItemGroup-details", open: Boolean(title && isMinWidthArcBreakpointL) }, filterDataAttrs(props)),
49
+ 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),
56
+ React__default.createElement("span", { className: "arc-SiteHeaderV2ItemGroup-titleIcon" },
57
+ React__default.createElement(BtIconChevronRightMid, null)))) : (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, title))),
58
+ React__default.createElement("span", { className: "arc-SiteHeaderV2ItemGroup-subtitle" }, subtitle))) : null,
59
+ React__default.createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items" },
60
+ children,
61
+ href && title ? (React__default.createElement("li", { className: "arc-SiteHeaderV2Item arc-SiteHeaderV2Item--viewAll" },
62
+ React__default.createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick({
63
+ handler: onClick
64
+ }), href: href }, viewAllTitle || "View all ".concat(title.toLowerCase())))) : null))));
65
+ };
66
+
67
+ var Column = function (_a) {
68
+ var children = _a.children, props = __rest(_a, ["children"]);
69
+ useEffect(function () {
70
+ React__default.Children.map(children, function (item) {
71
+ if (item && item.type !== ItemGroup) {
72
+ throw new Error("Illegal child passed to <SiteHeaderV2.Column />. Ensure to only use <SiteHeaderV2.ItemGroup />.");
73
+ }
74
+ });
75
+ }, [children]);
76
+ return (React__default.createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props)),
77
+ React__default.createElement("ul", { className: "arc-SiteHeaderV2Column-items" }, children)));
78
+ };
79
+
80
+ var BackButton = function (_a) {
81
+ var setOpen = _a.setOpen, setOpenPanelOnFirstClick = _a.setOpenPanelOnFirstClick;
82
+ return (React__default.createElement("button", { className: "arc-SiteHeaderV2BackButton", onClick: function () {
83
+ setOpen(false);
84
+ setOpenPanelOnFirstClick(false);
85
+ } },
86
+ React__default.createElement("span", { className: "arc-SiteHeaderV2BackButton-icon" },
87
+ React__default.createElement(BtIconChevronLeft2Px, null)),
88
+ React__default.createElement("span", { className: "arc-SiteHeaderV2BackButton-text" }, "Back")));
89
+ };
90
+
91
+ var Panel = function (_a) {
92
+ var _b, _c, _d, _e, _f;
93
+ 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
+ var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
95
+ useEffect(function () {
96
+ // Where appropriate, close the Panel when clicking outside of it,
97
+ // by listening to clicks on the entire document and acting accordingly.
98
+ var handleClick = function (e) {
99
+ var _a, _b;
100
+ // Don't close the Panel…
101
+ if (
102
+ // 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)) ||
104
+ // The click is inside the current NavItem
105
+ // and the Panel is not inside a SubNavItem.
106
+ // 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)) &&
108
+ !subNavItemRef &&
109
+ !e.target.getAttribute("href")) ||
110
+ // The Panel is inside a SubNavItem
111
+ // and the click is not on a SubNavItem-link.
112
+ // This ensures that one SubNavItem Panel per NavItem always remains open.
113
+ (subNavItemRef &&
114
+ !e.target.classList.contains(subNavLink) &&
115
+ !e.target.classList.contains("".concat(subNavLink, "Title")) &&
116
+ !e.target.classList.contains("".concat(subNavLink, "SubTitle")) &&
117
+ !e.target.classList.contains("".concat(subNavLink, "Slot")) &&
118
+ !e.target.classList.contains("".concat(subNavLink, "SlotTitle"))) ||
119
+ // Panel is inside a SubNavItem
120
+ // and the click is not inside the Panel's NavItem parent.
121
+ // This prevents SubNavItem Panels in sibling NavItems from being closed.
122
+ (subNavItemRef && !(navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current.contains(e.target)))) {
123
+ return;
124
+ }
125
+ // Close the panel.
126
+ setOpen(false);
127
+ };
128
+ document.addEventListener("click", handleClick);
129
+ return function () {
130
+ document.removeEventListener("click", handleClick);
131
+ };
132
+ }, [
133
+ navItemRef,
134
+ setOpen,
135
+ subNavItemRef,
136
+ subNavLink,
137
+ setOpenPanelOnFirstClick,
138
+ ]);
139
+ useEffect(function () {
140
+ var handleClick = function (e) {
141
+ // Close the Panel…
142
+ if (e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel")) {
143
+ setOpenPanelOnFirstClick(false);
144
+ return;
145
+ }
146
+ if (e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel") ||
147
+ e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-primary")) {
148
+ setOpenPanelOnFirstClick(true);
149
+ return;
150
+ }
151
+ };
152
+ document.addEventListener("click", handleClick);
153
+ return function () {
154
+ document.removeEventListener("click", handleClick);
155
+ };
156
+ }, [navItemRef, setOpenPanelOnFirstClick]);
157
+ useEffect(function () {
158
+ var handleKeydown = function (e) {
159
+ // Check the viewport width at time of press
160
+ var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(ArcBreakpointL, "px)")).matches;
161
+ if (e.key === "Escape" || e.keyCode === 27) {
162
+ if (isMinWidthArcBreakpointL && subNavItemRef) {
163
+ // Don't close Panels inside SubNavItems when viewport width is above
164
+ // the "desktop" breakpoint.
165
+ return false;
166
+ }
167
+ return setOpen(false);
168
+ }
169
+ };
170
+ window.addEventListener("keydown", handleKeydown);
171
+ return function () {
172
+ window.removeEventListener("keydown", handleKeydown);
173
+ };
174
+ }, [setOpen, subNavItemRef]);
175
+ return (React__default.createElement("div", { style: { display: "flex" } },
176
+ React__default.createElement("div", __assign({ className: classNames((_b = {},
177
+ _b["arc-SiteHeaderV2Panel"] = true,
178
+ _b["arc-SiteHeaderV2Panel--open"] = open,
179
+ _b["arc-SiteHeaderV2Panel--withSubNav"] = withSubNav,
180
+ _b["arc-SiteHeaderV2Panel-onlyPanel"] = isPrimary && isNavItem,
181
+ _b)) }, filterDataAttrs(props)),
182
+ React__default.createElement(Surface, { background: "white" },
183
+ React__default.createElement(BackButton, { setOpen: setOpen, setOpenPanelOnFirstClick: setOpenPanelOnFirstClick }),
184
+ React__default.createElement("div", { className: classNames((_c = {},
185
+ _c["arc-SiteHeaderV2Panel-inner"] = !isNavItem && withSubNav,
186
+ _c["arc-SiteHeaderV2Panel-innerWithoutSubNav"] = !isNavItem && !withSubNav,
187
+ _c["arc-SiteHeaderV2NavItemWithSubNav-fadeIn"] = !isNavItem && !withSubNav,
188
+ _c["arc-SiteHeaderV2Panel-innerNavItems"] = isNavItem,
189
+ _c)) },
190
+ React__default.createElement("div", { className: classNames((_d = {},
191
+ _d["arc-SiteHeaderV2Panel-main"] = !isNavItem && !withSubNav,
192
+ _d)) },
193
+ React__default.createElement("div", { className: classNames((_e = {},
194
+ _e["arc-SiteHeaderV2Panel-mainInnerWithoutSubNav"] = !isNavItem && !withSubNav,
195
+ _e["arc-SiteHeaderV2Panel-mainInner"] = !isNavItem,
196
+ _e["arc-SiteHeaderV2Panel-mainInnerNavItems"] = isNavItem,
197
+ _e)) },
198
+ withSubNav && (React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-subNavArea" })),
199
+ !isMinWidthArcBreakpointL && title && (React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-mobileTitleBlock" },
200
+ React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-mobileTitle" },
201
+ title && (React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-title" }, title)),
202
+ React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-subTitle" }, subtitle)))),
203
+ React__default.createElement("ul", { className: classNames((_f = {},
204
+ _f["arc-SiteHeaderV2Panel-items"] = !isNavItem,
205
+ _f["arc-SiteHeaderV2Panel-itemsNavItems"] = isNavItem,
206
+ _f["arc-SiteHeaderV2NavItemWithSubNav-fadeIn"] = open && isNavItem,
207
+ _f)) }, children),
208
+ !withSubNav && viewAll)),
209
+ withSubNav && viewAll)))));
210
+ };
211
+ var ViewAll = function (_a) {
212
+ var href = _a.href, title = _a.title, onClick = _a.onClick, fill = _a.fill;
213
+ var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
214
+ if (fill === "outlined") {
215
+ return isMinWidthArcBreakpointL ? (React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-viewAllOutlined" },
216
+ React__default.createElement(Button, { fill: fill, label: title !== null && title !== void 0 ? title : "", href: href, onClick: onClick }),
217
+ " ")) : (React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-mobileViewAll arc-SiteHeaderV2Panel-mobileViewAllOutlined" },
218
+ React__default.createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick({
219
+ handler: onClick
220
+ }), href: href }, title)));
221
+ }
222
+ else {
223
+ return isMinWidthArcBreakpointL ? (React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-viewAll" },
224
+ " ",
225
+ React__default.createElement(Button, { fill: fill, label: title !== null && title !== void 0 ? title : "", isFullWidth: true, href: href, onClick: onClick }),
226
+ " ")) : (React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-mobileViewAll" },
227
+ React__default.createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick({
228
+ handler: onClick
229
+ }), href: href }, title)));
230
+ }
231
+ };
232
+ Panel.ViewAll = ViewAll;
233
+
234
+ var NavItem = function (_a) {
235
+ var _b, _c, _d, _e, _f;
236
+ var children = _a.children, href = _a.href, isCurrent = _a.isCurrent, onClick = _a.onClick, title = _a.title; _a.viewAllTitle; var isPrimary = _a.isPrimary, opensFirstWithPanel = _a.opensFirstWithPanel, subTitle = _a.subTitle, props = __rest(_a, ["children", "href", "isCurrent", "onClick", "title", "viewAllTitle", "isPrimary", "opensFirstWithPanel", "subTitle"]);
237
+ var navItem = useRef();
238
+ var _g = useState(false), panelOpen = _g[0], setPanelOpen = _g[1];
239
+ var _h = useState(true), openSecondaryWithSubNav = _h[0], setOpenSecondaryWithSubNav = _h[1];
240
+ var _j = useState(false), animation = _j[0], setAnimation = _j[1];
241
+ var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
242
+ useEffect(function () {
243
+ React__default.Children.map(children, function (item) {
244
+ if (item &&
245
+ item.type !== ItemGroup &&
246
+ item.type !== Column &&
247
+ item.type !== Fragment) {
248
+ throw new Error("Illegal child passed to <SiteHeaderV2.NavItem />. Ensure to only use <SiteHeaderV2.ItemGroup /> or <SiteHeaderV2.Column />.");
249
+ }
250
+ });
251
+ }, [children]);
252
+ return (React__default.createElement("li", __assign({ className: classNames((_b = {},
253
+ _b["arc-SiteHeaderV2NavItem-primary"] = isPrimary,
254
+ _b["arc-SiteHeaderV2NavItemWithSubNav-Secondary"] = !isPrimary,
255
+ _b["arc-SiteHeaderV2NavItem"] = !subTitle && !isPrimary,
256
+ _b["arc-SiteHeaderV2NavItem--linkSelected"] = (children && panelOpen) || (!children && href && isCurrent),
257
+ _b["arc-SiteHeaderV2NavItemWithSubNav-active"] = (!isPrimary && panelOpen) ||
258
+ (opensFirstWithPanel && openSecondaryWithSubNav),
259
+ _b)), ref: navItem }, filterDataAttrs(props)), !children ? (href ? (React__default.createElement("a", { onClick: handleLinkClick({
260
+ handler: onClick
261
+ }), className: "arc-SiteHeaderV2NavItem-link", href: href }, title)) : null) : (React__default.createElement(React__default.Fragment, null,
262
+ React__default.createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
263
+ React__default.createElement("button", { "aria-expanded": panelOpen, className: classNames((_c = {},
264
+ _c["arc-SiteHeaderV2NavItem-link"] = true,
265
+ _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
266
+ _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
267
+ _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
268
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelLink"] = !isPrimary && !isMinWidthArcBreakpointL,
269
+ _c)), onClick: function (e) {
270
+ e.preventDefault();
271
+ setPanelOpen(!panelOpen);
272
+ setAnimation(true);
273
+ }, onAnimationEnd: function () { return setAnimation(false); } },
274
+ React__default.createElement("div", { className: classNames((_d = {},
275
+ _d["arc-SiteHeaderV2NavItem-title"] = !subTitle,
276
+ _d["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
277
+ _d["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
278
+ _d)) }, title),
279
+ React__default.createElement("span", { className: "arc-SiteHeaderV2-mobileChevron" },
280
+ React__default.createElement(BtIconChevronRight2Px, null)),
281
+ subTitle && !isPrimary && isMinWidthArcBreakpointL ? (React__default.createElement("div", { className: classNames((_e = {},
282
+ _e["arc-SiteHeaderV2NavItemWithSubNav-text"] = !isPrimary,
283
+ _e["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
284
+ _e["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
285
+ _e)) }, subTitle)) : null,
286
+ React__default.createElement("div", { className: classNames((_f = {},
287
+ _f["arc-SiteHeaderV2NavItemWithSubNav-buttonUnderline"] = panelOpen ||
288
+ (opensFirstWithPanel && openSecondaryWithSubNav),
289
+ _f["arc-SiteHeaderV2NavItemWithSubNav-primaryButtonUnderline"] = isPrimary && panelOpen,
290
+ _f["arc-SiteHeaderV2NavItemWithSubNav-buttonUnderlineActive"] = !isPrimary && (panelOpen || openSecondaryWithSubNav),
291
+ _f)) }))),
292
+ React__default.createElement(Panel, { navItemRef: navItem, isNavItem: true, isPrimary: isPrimary, open: opensFirstWithPanel && isMinWidthArcBreakpointL
293
+ ? openSecondaryWithSubNav
294
+ : panelOpen, setOpenPanelOnFirstClick: setOpenSecondaryWithSubNav, setOpen: setPanelOpen, fade: animation, viewAll: href ? (React__default.createElement(Panel.ViewAll, { href: href, onClick: onClick, title: "See all solutions", fill: "solid" })) : undefined }, children)))));
295
+ };
296
+
297
+ var HorizontalPanel = function (_a) {
298
+ var _b, _c, _d;
299
+ var children = _a.children, navItemRef = _a.navItemRef, open = _a.open, setOpen = _a.setOpen, subNavItemRef = _a.subNavItemRef, _e = _a.subNavLink, subNavLink = _e === void 0 ? "" : _e, title = _a.title, withSubNav = _a.withSubNav; _a.animation; var props = __rest(_a, ["children", "navItemRef", "open", "setOpen", "subNavItemRef", "subNavLink", "title", "withSubNav", "animation"]);
300
+ useEffect(function () {
301
+ // Where appropriate, close the Panel when clicking outside of it,
302
+ // by listening to clicks on the entire document and acting accordingly.
303
+ var handleClick = function (e) {
304
+ var _a, _b;
305
+ // Don't close the Panel…
306
+ if (
307
+ // The click is inside the current SubNavItem.
308
+ ((_a = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) ||
309
+ // The click is inside the current NavItem
310
+ // and the Panel is not inside a SubNavItem.
311
+ // and the target is not a link
312
+ (((_b = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _b === void 0 ? void 0 : _b.contains(e.target)) &&
313
+ !subNavItemRef &&
314
+ !e.target.getAttribute("href")) ||
315
+ // The Panel is inside a SubNavItem
316
+ // and the click is not on a SubNavItem-link.
317
+ // This ensures that one SubNavItem Panel per NavItem always remains open.
318
+ (subNavItemRef &&
319
+ !e.target.classList.contains(subNavLink) &&
320
+ !e.target.classList.contains("".concat(subNavLink, "Title")) &&
321
+ !e.target.classList.contains("".concat(subNavLink, "SubTitle"))) ||
322
+ // Panel is inside a SubNavItem
323
+ // and the click is not inside the Panel's NavItem parent.
324
+ // This prevents SubNavItem Panels in sibling NavItems from being closed.
325
+ (subNavItemRef && !(navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current.contains(e.target)))) {
326
+ return;
327
+ }
328
+ // Close the panel.
329
+ setOpen(false);
330
+ };
331
+ document.addEventListener("click", handleClick);
332
+ return function () {
333
+ document.removeEventListener("click", handleClick);
334
+ };
335
+ }, [navItemRef, setOpen, subNavItemRef, subNavLink]);
336
+ useEffect(function () {
337
+ var handleKeydown = function (e) {
338
+ // Check the viewport width at time of press
339
+ var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(ArcBreakpointL, "px)")).matches;
340
+ if (e.key === "Escape" || e.keyCode === 27) {
341
+ if (isMinWidthArcBreakpointL && subNavItemRef) {
342
+ // Don't close Panels inside SubNavItems when viewport width is above
343
+ // the "desktop" breakpoint.
344
+ return false;
345
+ }
346
+ return setOpen(false);
347
+ }
348
+ };
349
+ window.addEventListener("keydown", handleKeydown);
350
+ return function () {
351
+ window.removeEventListener("keydown", handleKeydown);
352
+ };
353
+ }, [setOpen, subNavItemRef]);
354
+ return (React__default.createElement("div", __assign({ className: classNames((_b = {},
355
+ _b["arc-SiteHeaderV2HorizontalPanel"] = true,
356
+ _b["arc-SiteHeaderV2HorizontalPanel--open"] = open,
357
+ _b["arc-SiteHeaderV2HorizontalPanel--withSubNav"] = withSubNav,
358
+ _b)) }, filterDataAttrs(props)),
359
+ React__default.createElement(Surface, { background: "light" },
360
+ React__default.createElement("div", { className: classNames((_c = {},
361
+ _c["arc-SiteHeaderV2HorizontalPanel-container"] = true,
362
+ _c)) },
363
+ React__default.createElement(BackButton, { setOpen: setOpen, setOpenPanelOnFirstClick: function () { } }),
364
+ title && (React__default.createElement("div", { className: "arc-SiteHeaderV2Panel-selectedTitle" }, title)),
365
+ React__default.createElement("ul", { className: classNames((_d = {},
366
+ _d["arc-SiteHeaderV2HorizontalPanel-items"] = true,
367
+ _d)) }, children)))));
368
+ };
369
+
370
+ var defaultContext$1 = { navItem: null, subTitle: null };
371
+ var Context$1 = createContext(defaultContext$1);
372
+ var Provider$1 = Context$1.Provider;
373
+ var NavItemWithSubNav = function (_a) {
374
+ var _b, _c, _d, _e, _f;
375
+ var href = _a.href, slot1 = _a.slot1, slot2 = _a.slot2, slot3 = _a.slot3, slot4 = _a.slot4, slot5 = _a.slot5, slot6 = _a.slot6, _g = _a.subTitle, subTitle = _g === void 0 ? null : _g, title = _a.title, onViewAllClick = _a.onViewAllClick, isPrimary = _a.isPrimary, opensFirstWithPanel = _a.opensFirstWithPanel, viewAllTitle = _a.viewAllTitle, props = __rest(_a, ["href", "slot1", "slot2", "slot3", "slot4", "slot5", "slot6", "subTitle", "title", "onViewAllClick", "isPrimary", "opensFirstWithPanel", "viewAllTitle"]);
376
+ var navItem = useRef();
377
+ var _h = useState(true), defaultItem = _h[0], setDefaultItem = _h[1];
378
+ var _j = useState(false), panelOpen = _j[0], setPanelOpen = _j[1];
379
+ var _k = useState(false), horizontalPanelOpen = _k[0], setHorizontalPanelOpen = _k[1];
380
+ var _l = useState(false), animation = _l[0], setAnimation = _l[1];
381
+ var _m = useState(true), openSecondaryWithSubNav = _m[0], setOpenSecondaryWithSubNav = _m[1];
382
+ var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
383
+ useEffect(function () {
384
+ React__default.Children.map(slot1, function (item) {
385
+ if (item.props.isDefaultItem) {
386
+ setDefaultItem(false);
387
+ }
388
+ });
389
+ React__default.Children.map(slot2, function (item) {
390
+ if (item.props.isDefaultItem) {
391
+ setDefaultItem(false);
392
+ }
393
+ });
394
+ React__default.Children.map(slot3, function (item) {
395
+ if (item.props.isDefaultItem) {
396
+ setDefaultItem(false);
397
+ }
398
+ });
399
+ React__default.Children.map(slot4, function (item) {
400
+ if (item.props.isDefaultItem) {
401
+ setDefaultItem(false);
402
+ }
403
+ });
404
+ React__default.Children.map(slot5, function (item) {
405
+ if (item.props.isDefaultItem) {
406
+ setDefaultItem(false);
407
+ }
408
+ });
409
+ }, [slot1, slot2, slot3, slot4, slot5]);
410
+ return (React__default.createElement(Provider$1, { value: { navItem: navItem, subTitle: subTitle } },
411
+ React__default.createElement("li", __assign({ className: classNames((_b = {},
412
+ _b["arc-SiteHeaderV2NavItemWithSubNav"] = true,
413
+ _b["arc-SiteHeaderV2NavItemWithSubNav-Secondary"] = !isPrimary,
414
+ _b["arc-SiteHeaderV2NavItem-primary"] = isPrimary,
415
+ _b["arc-SiteHeaderV2NavItem--linkSelected"] = isPrimary
416
+ ? horizontalPanelOpen
417
+ : panelOpen,
418
+ _b["arc-SiteHeaderV2NavItemWithSubNav-active"] = panelOpen || (opensFirstWithPanel && openSecondaryWithSubNav),
419
+ _b)), ref: navItem }, filterDataAttrs(props)),
420
+ React__default.createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
421
+ React__default.createElement("button", { "aria-expanded": horizontalPanelOpen, className: classNames((_c = {},
422
+ _c["arc-SiteHeaderV2NavItem-link"] = true,
423
+ _c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
424
+ _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
425
+ _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
426
+ _c["arc-SiteHeaderV2NavItem-link--itemHasChildren-primary"] = isPrimary,
427
+ _c["arc-SiteHeaderV2NavItem-horizontalPanelLink"] = !isPrimary && !isMinWidthArcBreakpointL,
428
+ _c)), onClick: function (e) {
429
+ e.preventDefault();
430
+ isPrimary
431
+ ? setHorizontalPanelOpen(!horizontalPanelOpen)
432
+ : setPanelOpen(!horizontalPanelOpen);
433
+ setAnimation(true);
434
+ }, onAnimationEnd: function () { return setAnimation(false); } },
435
+ React__default.createElement("div", { className: classNames((_d = {},
436
+ _d["arc-SiteHeaderV2NavItem-title"] = isPrimary,
437
+ _d["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
438
+ _d["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
439
+ _d["arc-SiteHeaderV2NavItem-link--itemHasChildren-primary"] = isPrimary,
440
+ _d)) }, title),
441
+ React__default.createElement("span", { className: "arc-SiteHeaderV2-mobileChevron" },
442
+ React__default.createElement(BtIconChevronRight2Px, null)),
443
+ subTitle && !isPrimary && isMinWidthArcBreakpointL ? (React__default.createElement("div", { className: classNames((_e = {},
444
+ _e["arc-SiteHeaderV2NavItemWithSubNav-text"] = !isPrimary,
445
+ _e["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
446
+ _e["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
447
+ _e["arc-SiteHeaderV2NavItem-link--itemHasChildren-primary"] = isPrimary,
448
+ _e)) }, subTitle)) : null,
449
+ React__default.createElement("div", { className: classNames((_f = {},
450
+ _f["arc-SiteHeaderV2NavItemWithSubNav-buttonUnderline"] = isPrimary
451
+ ? horizontalPanelOpen
452
+ : panelOpen ||
453
+ (opensFirstWithPanel && openSecondaryWithSubNav),
454
+ _f["arc-SiteHeaderV2NavItemWithSubNav-primaryButtonUnderline"] = isPrimary && horizontalPanelOpen,
455
+ _f["arc-SiteHeaderV2NavItemWithSubNav-buttonUnderlineActive "] = !isPrimary && (panelOpen || openSecondaryWithSubNav),
456
+ _f)) }))),
457
+ isPrimary && (React__default.createElement(HorizontalPanel, { animation: animation, navItemRef: navItem, open: horizontalPanelOpen, setOpen: setHorizontalPanelOpen, title: !isMinWidthArcBreakpointL && title },
458
+ slot1,
459
+ slot2,
460
+ slot3,
461
+ slot4,
462
+ slot5)),
463
+ React__default.createElement(Panel, { navItemRef: navItem, open: opensFirstWithPanel && isMinWidthArcBreakpointL
464
+ ? openSecondaryWithSubNav
465
+ : panelOpen, fade: animation, setOpenPanelOnFirstClick: setOpenSecondaryWithSubNav, setOpen: setPanelOpen, title: !isMinWidthArcBreakpointL && title, subtitle: subTitle, navLink: "", viewAll: href ? (React__default.createElement(Panel.ViewAll, { href: href, onClick: onViewAllClick, title: viewAllTitle, fill: "solid" })) : undefined, withSubNav: true, isNavItem: false },
466
+ defaultItem
467
+ ? React__default.cloneElement(slot1, { isDefaultItem: defaultItem })
468
+ : slot1,
469
+ slot2,
470
+ slot3,
471
+ slot4,
472
+ slot5,
473
+ slot6))));
474
+ };
475
+
476
+ var NodeItem = function (_a) {
477
+ var children = _a.children, props = __rest(_a, ["children"]);
478
+ return (React__default.createElement(React__default.Fragment, __assign({}, filterDataAttrs(props)), children));
479
+ };
480
+
481
+ var MenuButton = function (_a) {
482
+ var _b;
483
+ var menuOpen = _a.menuOpen, setMenuOpen = _a.setMenuOpen;
484
+ return (React__default.createElement("button", { "aria-expanded": menuOpen, className: classNames((_b = {},
485
+ _b["arc-MenuButton"] = true,
486
+ _b["arc-MenuButton--menuOpen"] = menuOpen,
487
+ _b)), onClick: function () {
488
+ setMenuOpen(!menuOpen);
489
+ }, type: "button" },
490
+ React__default.createElement("span", { className: "arc-MenuButton-box" },
491
+ React__default.createElement("span", { className: "arc-MenuButton-inner" }),
492
+ React__default.createElement("span", { className: "arc-MenuButton-text" }, "Menu"))));
493
+ };
494
+
495
+ var SubNavItem = function (_a) {
496
+ var _b, _c;
497
+ var children = _a.children, _d = _a.isDefaultItem, isDefaultItem = _d === void 0 ? false : _d, href = _a.href, onClick = _a.onClick, offsetXL = _a.offsetXL, subTitle = _a.subTitle, title = _a.title, viewAllTitle = _a.viewAllTitle, icon = _a.icon, props = __rest(_a, ["children", "isDefaultItem", "href", "onClick", "offsetXL", "subTitle", "title", "viewAllTitle", "icon"]);
498
+ var navItem = useContext(Context$1).navItem;
499
+ var subNavItem = useRef();
500
+ var _e = useState(false), panelOpen = _e[0], setPanelOpen = _e[1];
501
+ var _f = useState(false), fade = _f[0], setFade = _f[1];
502
+ var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
503
+ useEffect(function () {
504
+ React__default.Children.map(children, function (item) {
505
+ if (item &&
506
+ item.type !== ItemGroup &&
507
+ item.type !== Column &&
508
+ item.type !== Fragment) {
509
+ throw new Error("Illegal child passed to <SiteHeaderV2.SubNavItem />. Ensure to only use <SiteHeaderV2.ItemGroup /> or <SiteHeaderV2.Column />.");
510
+ }
511
+ });
512
+ }, [children]);
513
+ useEffect(function () {
514
+ if (isDefaultItem && isMinWidthArcBreakpointL) {
515
+ setPanelOpen(true);
516
+ }
517
+ else {
518
+ setPanelOpen(false);
519
+ }
520
+ }, [isDefaultItem, isMinWidthArcBreakpointL]);
521
+ var linkTitle = (React__default.createElement(React__default.Fragment, null,
522
+ React__default.createElement("span", { className: "arc-SiteHeaderV2SubNavItem-linkTitle" }, title),
523
+ children && panelOpen && (React__default.createElement("span", { className: "arc-SiteHeaderV2SubNavItem-linkIcon" },
524
+ React__default.createElement(BtIconChevronRight2Px, null))),
525
+ children && !isMinWidthArcBreakpointL && (React__default.createElement("span", { className: "arc-SiteHeaderV2SubNavItem-linkIcon" },
526
+ React__default.createElement(BtIconChevronRight2Px, null))),
527
+ subTitle ? (React__default.createElement("span", { className: "arc-SiteHeaderV2SubNavItem-linkSubTitle" }, subTitle)) : null));
528
+ return (React__default.createElement("li", __assign({ className: classNames((_b = {},
529
+ _b["arc-SiteHeaderV2SubNavItem"] = true,
530
+ _b["arc-SiteHeaderV2SubNavItem--linkSelected"] = children && panelOpen,
531
+ _b["arc-SiteHeaderV2SubNavItem--linkNotSelected"] = children && !panelOpen,
532
+ _b[suffixModifier("arc-SiteHeaderV2SubNavItem--offsetXL", offsetXL || "")] = offsetXL,
533
+ _b)), ref: subNavItem }, filterDataAttrs(props), { "data-default-item": isDefaultItem || null }), !children ? (href ? (React__default.createElement("a", { className: "arc-SiteHeaderV2SubNavItem-link", onClick: handleLinkClick({ handler: onClick }), href: href }, linkTitle)) : null) : (React__default.createElement(React__default.Fragment, null,
534
+ React__default.createElement("button", { "aria-expanded": panelOpen, className: classNames((_c = {},
535
+ _c["arc-SiteHeaderV2SubNavItem-link"] = true,
536
+ _c["arc-SiteHeaderV2SubNavItem-link--itemHasChildren"] = children,
537
+ _c)), onClick: function (e) {
538
+ e.preventDefault();
539
+ setPanelOpen(true);
540
+ setFade(true);
541
+ }, onAnimationEnd: function () { return setFade(false); } },
542
+ React__default.createElement("div", { className: "arc-SiteHeaderV2SubNavItem-linkSlot" },
543
+ icon && isMinWidthArcBreakpointL && (React__default.createElement("div", { className: "arc-SiteHeaderV2SubNavItem-linkSlotIcon" },
544
+ React__default.createElement(Icon, { icon: icon, size: 48 }))),
545
+ React__default.createElement("span", { "data-cy": "linkTitle", className: "arc-SiteHeaderV2SubNavItem-linkSlotTitle" }, linkTitle))),
546
+ React__default.createElement(Panel, { navItemRef: navItem, open: panelOpen, setOpen: setPanelOpen, subNavItemRef: subNavItem, setOpenPanelOnFirstClick: function () { }, subNavLink: "arc-SiteHeaderV2SubNavItem-link", title: React__default.createElement("span", null,
547
+ title,
548
+ subTitle && (React__default.createElement(Text, { size: "xs", tone: "supporting" }, subTitle))), viewAll: href ? (React__default.createElement(Panel.ViewAll, { href: href, onClick: onClick, title: viewAllTitle || "See all ".concat(title), fill: "outlined" })) : undefined, isNavItem: false, fade: fade }, children)))));
549
+ };
550
+
551
+ var VerticalDivider = function () {
552
+ return React__default.createElement("li", { className: "arc-SiteHeaderV2VerticalDivider-line" });
553
+ };
554
+
555
+ var defaultContext = { transparent: false };
556
+ var Context = createContext(defaultContext);
557
+ var Provider = Context.Provider;
558
+ /**
559
+ * Use `SiteHeaderV2` to display brand logo and navigation at the top of a page.
560
+ */
561
+ var SiteHeaderV2 = function (_a) {
562
+ var _b;
563
+ var children = _a.children, basket = _a.basket, _c = _a.hasLogin, hasLogin = _c === void 0 ? true : _c, _d = _a.isTransparent, isTransparent = _d === void 0 ? false : _d, _e = _a.loginHref, loginHref = _e === void 0 ? "/login" : _e, logoOnClick = _a.logoOnClick, loginOnClick = _a.loginOnClick, _f = _a.loginTitle, loginTitle = _f === void 0 ? "Log in / Register" : _f, _g = _a.logoHref, logoHref = _g === void 0 ? "/" : _g, _h = _a.logoLabel, logoLabel = _h === void 0 ? "Home" : _h, search = _a.search, subBrand = _a.subBrand, props = __rest(_a, ["children", "basket", "hasLogin", "isTransparent", "loginHref", "logoOnClick", "loginOnClick", "loginTitle", "logoHref", "logoLabel", "search", "subBrand"]);
564
+ var _j = useState(false), hasClientSideJavaScript = _j[0], setHasClientSideJavaScript = _j[1];
565
+ var _k = useState(false), menuOpen = _k[0], setMenuOpen = _k[1];
566
+ var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
567
+ useEffect(function () {
568
+ React__default.Children.map(children, function (item) {
569
+ if (item &&
570
+ item.type !== NodeItem &&
571
+ item.type !== NavItem &&
572
+ item.type !== NavItemWithSubNav &&
573
+ item.type !== Fragment) {
574
+ throw new Error("Illegal child passed to <SiteHeaderV2 />. Ensure to only use <SiteHeaderV2.NavItem /> or <SiteHeaderV2.NavItemWithSubNav />");
575
+ }
576
+ });
577
+ }, [children]);
578
+ useEffect(function () {
579
+ if (!isMinWidthArcBreakpointL && menuOpen) {
580
+ document.body.classList.add("arc-body--overflowHidden");
581
+ }
582
+ else {
583
+ document.body.classList.remove("arc-body--overflowHidden");
584
+ }
585
+ return function () {
586
+ document.body.classList.remove("arc-body--overflowHidden");
587
+ };
588
+ }, [isMinWidthArcBreakpointL, menuOpen]);
589
+ useEffect(function () {
590
+ var handleKeydown = function (e) {
591
+ if (e.key === "Escape" || e.keyCode === 27) {
592
+ setMenuOpen(false);
593
+ }
594
+ };
595
+ window.addEventListener("keydown", handleKeydown);
596
+ return function () {
597
+ window.removeEventListener("keydown", handleKeydown);
598
+ };
599
+ }, [setMenuOpen]);
600
+ useEffect(function () {
601
+ var handleClick = function (e) {
602
+ if (e.target.getAttribute("href")) {
603
+ setMenuOpen(false);
604
+ }
605
+ };
606
+ document.addEventListener("click", handleClick);
607
+ return function () {
608
+ document.removeEventListener("click", handleClick);
609
+ };
610
+ }, [setMenuOpen]);
611
+ useEffect(function () {
612
+ // useEffect does not run in ReactDomServer renders
613
+ setHasClientSideJavaScript(true);
614
+ }, [setHasClientSideJavaScript]);
615
+ return (React__default.createElement(Provider, { value: { transparent: isTransparent } },
616
+ React__default.createElement("div", __assign({ className: classNames((_b = {},
617
+ _b["arc-SiteHeaderV2"] = true,
618
+ _b["arc-SiteHeaderV2--menuOpen"] = menuOpen,
619
+ _b["arc-no-js"] = !hasClientSideJavaScript,
620
+ _b)) }, filterDataAttrs(props), { "data-transparent": isTransparent || null }),
621
+ React__default.createElement(Surface, { background: !isTransparent || (menuOpen && !isMinWidthArcBreakpointL)
622
+ ? "brand-flat"
623
+ : undefined },
624
+ React__default.createElement("div", { className: "arc-SiteHeaderV2-inner" },
625
+ React__default.createElement("a", { className: "arc-SiteHeaderV2-brand", onClick: handleLinkClick({
626
+ handler: logoOnClick
627
+ }), href: logoHref },
628
+ React__default.createElement(BrandLogo, { label: logoLabel, subBrand: subBrand })),
629
+ children && (React__default.createElement("nav", { className: "arc-SiteHeaderV2-nav" },
630
+ React__default.createElement("div", { className: "arc-SiteHeaderV2-menuButton" },
631
+ React__default.createElement(MenuButton, { menuOpen: menuOpen, setMenuOpen: setMenuOpen })),
632
+ React__default.createElement("div", { className: "arc-SiteHeaderV2-main" },
633
+ React__default.createElement("ul", { className: "arc-SiteHeaderV2-navItems" }, children),
634
+ hasLogin && (React__default.createElement(React__default.Fragment, null, loginOnClick ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-mobileButtonContainer" },
635
+ React__default.createElement("button", { className: "arc-SiteHeaderV2-mobileLogin", onClick: loginOnClick },
636
+ loginTitle,
637
+ React__default.createElement("span", { className: "arc-SiteHeaderV2-mobileChevron" },
638
+ React__default.createElement(BtIconChevronRight2Px, null))))) : (React__default.createElement("div", { className: "arc-SiteHeaderV2-mobileButtonContainer" },
639
+ React__default.createElement("a", { className: "arc-SiteHeaderV2-mobileLogin", href: loginHref },
640
+ loginTitle,
641
+ React__default.createElement("span", { className: "arc-SiteHeaderV2-mobileChevron" },
642
+ React__default.createElement(BtIconChevronRight2Px, null)))))))))),
643
+ (basket || hasLogin || search) && (React__default.createElement("div", { className: "arc-SiteHeaderV2-secondary" },
644
+ search ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-search" }, search)) : null,
645
+ basket ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-basket" }, basket)) : null,
646
+ 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)))))))))));
647
+ };
648
+ SiteHeaderV2.Column = Column;
649
+ SiteHeaderV2.Item = Item;
650
+ SiteHeaderV2.ItemGroup = ItemGroup;
651
+ SiteHeaderV2.NavItem = NavItem;
652
+ SiteHeaderV2.NodeItem = NodeItem;
653
+ SiteHeaderV2.NavItemWithSubNav = NavItemWithSubNav;
654
+ SiteHeaderV2.SubNavItem = SubNavItem;
655
+ SiteHeaderV2.VerticalDivider = VerticalDivider;
656
+
657
+ export { SiteHeaderV2 as S };