@arc-ui/components 10.8.0 → 11.0.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 (253) hide show
  1. package/dist/Align/{index.d.ts → Align.cjs.d.ts} +0 -0
  2. package/dist/Align/Align.cjs.js +33 -0
  3. package/dist/Align/Align.esm.d.ts +25 -0
  4. package/dist/Align/{index.js → Align.esm.js} +3 -3
  5. package/dist/Align/package.json +7 -0
  6. package/dist/Base/{index.d.ts → Base.cjs.d.ts} +0 -0
  7. package/dist/Base/Base.cjs.js +23 -0
  8. package/dist/Base/Base.esm.d.ts +16 -0
  9. package/dist/Base/{index.js → Base.esm.js} +1 -1
  10. package/dist/Base/package.json +7 -0
  11. package/dist/BrandLogo/BrandLogo.cjs.d.ts +1 -0
  12. package/dist/BrandLogo/BrandLogo.cjs.js +14 -0
  13. package/dist/BrandLogo/BrandLogo.esm.d.ts +1 -0
  14. package/dist/BrandLogo/BrandLogo.esm.js +6 -0
  15. package/dist/BrandLogo/package.json +7 -0
  16. package/dist/Breadcrumbs/{index.d.ts → Breadcrumbs.cjs.d.ts} +0 -0
  17. package/dist/Breadcrumbs/Breadcrumbs.cjs.js +650 -0
  18. package/dist/Breadcrumbs/Breadcrumbs.esm.d.ts +61 -0
  19. package/dist/Breadcrumbs/{index.js → Breadcrumbs.esm.js} +9 -9
  20. package/dist/Breadcrumbs/package.json +7 -0
  21. package/dist/Button/Button.cjs.d.ts +1 -0
  22. package/dist/Button/Button.cjs.js +16 -0
  23. package/dist/Button/Button.esm.d.ts +1 -0
  24. package/dist/Button/Button.esm.js +8 -0
  25. package/dist/Button/package.json +7 -0
  26. package/dist/Card/{index.d.ts → Card.cjs.d.ts} +0 -0
  27. package/dist/Card/Card.cjs.js +126 -0
  28. package/dist/Card/Card.esm.d.ts +130 -0
  29. package/dist/Card/{index.js → Card.esm.js} +10 -10
  30. package/dist/Card/package.json +7 -0
  31. package/dist/Checkbox/{index.d.ts → Checkbox.cjs.d.ts} +0 -0
  32. package/dist/Checkbox/Checkbox.cjs.js +78 -0
  33. package/dist/Checkbox/Checkbox.esm.d.ts +59 -0
  34. package/dist/Checkbox/Checkbox.esm.js +70 -0
  35. package/dist/Checkbox/package.json +7 -0
  36. package/dist/Clock/{index.d.ts → Clock.cjs.d.ts} +0 -0
  37. package/dist/Clock/Clock.cjs.js +43 -0
  38. package/dist/Clock/Clock.esm.d.ts +15 -0
  39. package/dist/Clock/{index.js → Clock.esm.js} +1 -1
  40. package/dist/Clock/package.json +7 -0
  41. package/dist/Columns/{index.d.ts → Columns.cjs.d.ts} +0 -0
  42. package/dist/Columns/Columns.cjs.js +59 -0
  43. package/dist/Columns/Columns.esm.d.ts +76 -0
  44. package/dist/Columns/{index.js → Columns.esm.js} +3 -3
  45. package/dist/Columns/package.json +7 -0
  46. package/dist/Curve/Curve.cjs.d.ts +1 -0
  47. package/dist/Curve/Curve.cjs.js +13 -0
  48. package/dist/Curve/Curve.esm.d.ts +1 -0
  49. package/dist/Curve/Curve.esm.js +5 -0
  50. package/dist/Curve/package.json +7 -0
  51. package/dist/Disclosure/{index.d.ts → Disclosure.cjs.d.ts} +1 -1
  52. package/dist/Disclosure/Disclosure.cjs.js +36 -0
  53. package/dist/Disclosure/Disclosure.esm.d.ts +31 -0
  54. package/dist/Disclosure/{index.js → Disclosure.esm.js} +8 -5
  55. package/dist/Disclosure/package.json +7 -0
  56. package/dist/Elevation/{index.d.ts → Elevation.cjs.d.ts} +0 -0
  57. package/dist/Elevation/Elevation.cjs.js +25 -0
  58. package/dist/Elevation/Elevation.esm.d.ts +16 -0
  59. package/dist/Elevation/{index.js → Elevation.esm.js} +2 -2
  60. package/dist/Elevation/package.json +7 -0
  61. package/dist/FormControl/FormControl.cjs.d.ts +1 -0
  62. package/dist/FormControl/FormControl.cjs.js +14 -0
  63. package/dist/FormControl/FormControl.esm.d.ts +1 -0
  64. package/dist/FormControl/FormControl.esm.js +5 -0
  65. package/dist/FormControl/package.json +7 -0
  66. package/dist/Group/{index.d.ts → Group.cjs.d.ts} +0 -0
  67. package/dist/Group/Group.cjs.js +50 -0
  68. package/dist/Group/Group.esm.d.ts +46 -0
  69. package/dist/Group/{index.js → Group.esm.js} +3 -3
  70. package/dist/Group/package.json +7 -0
  71. package/dist/Heading/Heading.cjs.d.ts +1 -0
  72. package/dist/Heading/Heading.cjs.js +14 -0
  73. package/dist/Heading/Heading.esm.d.ts +1 -0
  74. package/dist/Heading/Heading.esm.js +6 -0
  75. package/dist/Heading/package.json +7 -0
  76. package/dist/Icon/Icon.cjs.d.ts +1 -0
  77. package/dist/Icon/Icon.cjs.js +14 -0
  78. package/dist/Icon/Icon.esm.d.ts +1 -0
  79. package/dist/Icon/Icon.esm.js +6 -0
  80. package/dist/Icon/package.json +7 -0
  81. package/dist/Image/Image.cjs.d.ts +1 -0
  82. package/dist/Image/Image.cjs.js +13 -0
  83. package/dist/Image/Image.esm.d.ts +1 -0
  84. package/dist/Image/Image.esm.js +5 -0
  85. package/dist/Image/package.json +7 -0
  86. package/dist/Markup/{index.d.ts → Markup.cjs.d.ts} +0 -0
  87. package/dist/Markup/Markup.cjs.js +27 -0
  88. package/dist/Markup/Markup.esm.d.ts +16 -0
  89. package/dist/Markup/{index.js → Markup.esm.js} +3 -3
  90. package/dist/Markup/package.json +7 -0
  91. package/dist/Poster/{index.d.ts → Poster.cjs.d.ts} +2 -2
  92. package/dist/Poster/Poster.cjs.js +52 -0
  93. package/dist/Poster/Poster.esm.d.ts +81 -0
  94. package/dist/Poster/{index.js → Poster.esm.js} +5 -5
  95. package/dist/Poster/package.json +7 -0
  96. package/dist/RadioGroup/{index.d.ts → RadioGroup.cjs.d.ts} +1 -1
  97. package/dist/RadioGroup/RadioGroup.cjs.js +72 -0
  98. package/dist/RadioGroup/RadioGroup.esm.d.ts +85 -0
  99. package/dist/RadioGroup/{index.js → RadioGroup.esm.js} +4 -4
  100. package/dist/RadioGroup/package.json +7 -0
  101. package/dist/Rule/{index.d.ts → Rule.cjs.d.ts} +0 -0
  102. package/dist/Rule/Rule.cjs.js +25 -0
  103. package/dist/Rule/Rule.esm.d.ts +8 -0
  104. package/dist/Rule/{index.js → Rule.esm.js} +3 -3
  105. package/dist/Rule/package.json +7 -0
  106. package/dist/Section/Section.cjs.d.ts +1 -0
  107. package/dist/Section/Section.cjs.js +12 -0
  108. package/dist/Section/Section.esm.d.ts +1 -0
  109. package/dist/Section/Section.esm.js +4 -0
  110. package/dist/Section/package.json +7 -0
  111. package/dist/SiteFooter/{index.d.ts → SiteFooter.cjs.d.ts} +0 -0
  112. package/dist/SiteFooter/SiteFooter.cjs.js +99 -0
  113. package/dist/SiteFooter/SiteFooter.esm.d.ts +64 -0
  114. package/dist/SiteFooter/{index.js → SiteFooter.esm.js} +12 -10
  115. package/dist/SiteFooter/package.json +7 -0
  116. package/dist/SiteHeader/{index.d.ts → SiteHeader.cjs.d.ts} +1 -1
  117. package/dist/SiteHeader/SiteHeader.cjs.js +669 -0
  118. package/dist/SiteHeader/SiteHeader.esm.d.ts +252 -0
  119. package/dist/SiteHeader/{index.js → SiteHeader.esm.js} +39 -17
  120. package/dist/SiteHeader/package.json +7 -0
  121. package/dist/Surface/{index.d.ts → Surface.cjs.d.ts} +1 -1
  122. package/dist/Surface/Surface.cjs.js +15 -0
  123. package/dist/Surface/Surface.esm.d.ts +1 -0
  124. package/dist/Surface/Surface.esm.js +4 -0
  125. package/dist/Surface/package.json +7 -0
  126. package/dist/Text/Text.cjs.d.ts +1 -0
  127. package/dist/Text/Text.cjs.js +14 -0
  128. package/dist/Text/Text.esm.d.ts +1 -0
  129. package/dist/Text/Text.esm.js +6 -0
  130. package/dist/Text/package.json +7 -0
  131. package/dist/TextInput/{index.d.ts → TextInput.cjs.d.ts} +1 -1
  132. package/dist/TextInput/TextInput.cjs.js +64 -0
  133. package/dist/TextInput/TextInput.esm.d.ts +71 -0
  134. package/dist/TextInput/{index.js → TextInput.esm.js} +4 -4
  135. package/dist/TextInput/package.json +7 -0
  136. package/dist/UniversalHeader/{index.d.ts → UniversalHeader.cjs.d.ts} +0 -0
  137. package/dist/UniversalHeader/UniversalHeader.cjs.js +38 -0
  138. package/dist/UniversalHeader/UniversalHeader.esm.d.ts +26 -0
  139. package/dist/UniversalHeader/{index.js → UniversalHeader.esm.js} +3 -3
  140. package/dist/UniversalHeader/package.json +7 -0
  141. package/dist/VerticalSpace/{index.d.ts → VerticalSpace.cjs.d.ts} +0 -0
  142. package/dist/VerticalSpace/VerticalSpace.cjs.js +27 -0
  143. package/dist/VerticalSpace/VerticalSpace.esm.d.ts +18 -0
  144. package/dist/VerticalSpace/{index.js → VerticalSpace.esm.js} +2 -2
  145. package/dist/VerticalSpace/package.json +7 -0
  146. package/dist/VisuallyHidden/{index.d.ts → VisuallyHidden.cjs.d.ts} +0 -0
  147. package/dist/VisuallyHidden/VisuallyHidden.cjs.js +19 -0
  148. package/dist/VisuallyHidden/VisuallyHidden.esm.d.ts +12 -0
  149. package/dist/VisuallyHidden/{index.js → VisuallyHidden.esm.js} +0 -0
  150. package/dist/VisuallyHidden/package.json +7 -0
  151. package/dist/_shared/{BrandLogo-6cc8202e.d.ts → cjs/BrandLogo-3c6102ef.d.ts} +0 -0
  152. package/dist/_shared/cjs/BrandLogo-3c6102ef.js +31 -0
  153. package/dist/_shared/cjs/BtIconChevronDown2Px-8fb4e2eb.js +29 -0
  154. package/dist/_shared/cjs/BtIconChevronRight2Px-a8e40136.js +50 -0
  155. package/dist/_shared/cjs/BtIconChevronRightMid-5a38d855.js +31 -0
  156. package/dist/_shared/{Button-2fcbd4ed.d.ts → cjs/Button-b3a69953.d.ts} +3 -3
  157. package/dist/_shared/cjs/Button-b3a69953.js +80 -0
  158. package/dist/_shared/{Curve-5f476d0b.d.ts → cjs/Curve-e72ce25b.d.ts} +1 -1
  159. package/dist/_shared/cjs/Curve-e72ce25b.js +30 -0
  160. package/dist/_shared/{FormControl-9dc9ecc3.d.ts → cjs/FormControl-a1b7421b.d.ts} +0 -0
  161. package/dist/_shared/cjs/FormControl-a1b7421b.js +115 -0
  162. package/dist/_shared/{Heading-8c640dd1.d.ts → cjs/Heading-cc38c3ec.d.ts} +0 -0
  163. package/dist/_shared/cjs/Heading-cc38c3ec.js +41 -0
  164. package/dist/_shared/{Icon-b053f03d.d.ts → cjs/Icon-719d13d4.d.ts} +6 -6
  165. package/dist/_shared/cjs/Icon-719d13d4.js +52 -0
  166. package/dist/_shared/{Image-a3225049.d.ts → cjs/Image-fe760a06.d.ts} +0 -0
  167. package/dist/_shared/cjs/Image-fe760a06.js +45 -0
  168. package/dist/_shared/{Section-927988cb.d.ts → cjs/Section-780f2377.d.ts} +0 -0
  169. package/dist/_shared/cjs/Section-780f2377.js +23 -0
  170. package/dist/_shared/{Surface-3fe44a2a.d.ts → cjs/Surface-d6b8010e.d.ts} +0 -0
  171. package/dist/_shared/cjs/Surface-d6b8010e.js +58 -0
  172. package/dist/_shared/{Text-1c43d82b.d.ts → cjs/Text-1d3844be.d.ts} +0 -0
  173. package/dist/_shared/cjs/Text-1d3844be.js +32 -0
  174. package/dist/_shared/cjs/arc-icon-17594b2f.d.ts +4 -0
  175. package/dist/_shared/{handle-link-click-35e09d0c.d.ts → cjs/handle-link-click-17a44cf4.d.ts} +0 -0
  176. package/dist/_shared/cjs/handle-link-click-17a44cf4.js +15 -0
  177. package/dist/_shared/cjs/index-45bfb67b.js +63 -0
  178. package/dist/_shared/{index-e3c83626.d.ts → cjs/index-78b35bc1.d.ts} +0 -0
  179. package/dist/_shared/cjs/index-78b35bc1.js +215 -0
  180. package/dist/_shared/{index-9483ad5f.d.ts → cjs/index-9483ad5f.d.ts} +2 -2
  181. package/dist/_shared/cjs/index-c81c9401.d.ts +4 -0
  182. package/dist/_shared/{use-media-query-f11805d4.d.ts → cjs/index.es-77def0c9.d.ts} +0 -0
  183. package/dist/_shared/cjs/index.es-77def0c9.js +50 -0
  184. package/dist/_shared/{suffix-modifier-2a93822c.d.ts → cjs/suffix-modifier-edf7851e.d.ts} +0 -0
  185. package/dist/_shared/cjs/suffix-modifier-edf7851e.js +19 -0
  186. package/dist/_shared/esm/BrandLogo-ea3dd0e6.d.ts +26 -0
  187. package/dist/_shared/{BrandLogo-6cc8202e.js → esm/BrandLogo-ea3dd0e6.js} +4 -4
  188. package/dist/_shared/esm/BtIconChevronDown2Px-4abd079b.js +23 -0
  189. package/dist/_shared/esm/BtIconChevronRight2Px-a5cc1d05.js +43 -0
  190. package/dist/_shared/esm/BtIconChevronRightMid-386cf272.js +25 -0
  191. package/dist/_shared/esm/Button-5ff56a7b.d.ts +98 -0
  192. package/dist/_shared/esm/Button-5ff56a7b.js +74 -0
  193. package/dist/_shared/esm/Curve-cfdca379.d.ts +32 -0
  194. package/dist/_shared/{Curve-5f476d0b.js → esm/Curve-cfdca379.js} +3 -3
  195. package/dist/_shared/esm/FormControl-feedc495.d.ts +70 -0
  196. package/dist/_shared/{FormControl-9dc9ecc3.js → esm/FormControl-feedc495.js} +43 -11
  197. package/dist/_shared/esm/Heading-183be76c.d.ts +46 -0
  198. package/dist/_shared/{Heading-8c640dd1.js → esm/Heading-183be76c.js} +4 -4
  199. package/dist/_shared/esm/Icon-76d0d8c0.d.ts +34 -0
  200. package/dist/_shared/esm/Icon-76d0d8c0.js +46 -0
  201. package/dist/_shared/esm/Image-7e4948f6.d.ts +94 -0
  202. package/dist/_shared/{Image-a3225049.js → esm/Image-7e4948f6.js} +3 -3
  203. package/dist/_shared/esm/Section-f1256c87.d.ts +21 -0
  204. package/dist/_shared/{Section-927988cb.js → esm/Section-f1256c87.js} +2 -2
  205. package/dist/_shared/esm/Surface-d515d212.d.ts +50 -0
  206. package/dist/_shared/{Surface-3fe44a2a.js → esm/Surface-d515d212.js} +2 -2
  207. package/dist/_shared/esm/Text-d8988620.d.ts +34 -0
  208. package/dist/_shared/{Text-1c43d82b.js → esm/Text-d8988620.js} +4 -4
  209. package/dist/_shared/esm/arc-icon-17594b2f.d.ts +4 -0
  210. package/dist/_shared/esm/handle-link-click-f64f55a2.d.ts +7 -0
  211. package/dist/_shared/{handle-link-click-35e09d0c.js → esm/handle-link-click-f64f55a2.js} +0 -0
  212. package/dist/_shared/esm/index-229fc864.d.ts +2 -0
  213. package/dist/_shared/{index-e3c83626.js → esm/index-229fc864.js} +0 -0
  214. package/dist/_shared/{index-56d9df62.js → esm/index-2ae58626.js} +0 -0
  215. package/dist/_shared/esm/index-9483ad5f.d.ts +14 -0
  216. package/dist/_shared/esm/index-c81c9401.d.ts +4 -0
  217. package/dist/_shared/esm/index.es-00cb3bcb.d.ts +19 -0
  218. package/dist/_shared/{use-media-query-f11805d4.js → esm/index.es-00cb3bcb.js} +8 -1
  219. package/dist/_shared/esm/suffix-modifier-f5e28822.d.ts +10 -0
  220. package/dist/_shared/{suffix-modifier-2a93822c.js → esm/suffix-modifier-f5e28822.js} +1 -1
  221. package/dist/index.es.js +454 -528
  222. package/dist/index.es.js.map +1 -1
  223. package/dist/index.js +311 -385
  224. package/dist/index.js.map +1 -1
  225. package/dist/styles.css +1 -1
  226. package/dist/types/components/Button/Button.d.ts +3 -3
  227. package/dist/types/components/Icon/Icon.d.ts +6 -6
  228. package/dist/types/types/arc-icon.d.ts +2 -0
  229. package/package.json +4 -3
  230. package/dist/BrandLogo/index.d.ts +0 -1
  231. package/dist/BrandLogo/index.js +0 -6
  232. package/dist/Button/index.d.ts +0 -1
  233. package/dist/Button/index.js +0 -8
  234. package/dist/Checkbox/index.js +0 -46
  235. package/dist/Curve/index.d.ts +0 -1
  236. package/dist/Curve/index.js +0 -5
  237. package/dist/FormControl/index.d.ts +0 -1
  238. package/dist/FormControl/index.js +0 -5
  239. package/dist/Heading/index.d.ts +0 -1
  240. package/dist/Heading/index.js +0 -6
  241. package/dist/Icon/index.d.ts +0 -1
  242. package/dist/Icon/index.js +0 -7
  243. package/dist/Image/index.d.ts +0 -1
  244. package/dist/Image/index.js +0 -5
  245. package/dist/Section/index.d.ts +0 -1
  246. package/dist/Section/index.js +0 -4
  247. package/dist/Surface/index.js +0 -4
  248. package/dist/Text/index.d.ts +0 -1
  249. package/dist/Text/index.js +0 -6
  250. package/dist/_shared/Button-2fcbd4ed.js +0 -51
  251. package/dist/_shared/Icon-b053f03d.js +0 -27
  252. package/dist/_shared/index-c81c9401.d.ts +0 -4
  253. package/dist/_shared/index.es-ff960629.js +0 -286
@@ -0,0 +1,669 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var index = require('../_shared/cjs/index-78b35bc1.js');
6
+ var index_es = require('../_shared/cjs/index.es-77def0c9.js');
7
+ var index$1 = require('../_shared/cjs/index-45bfb67b.js');
8
+ var React = require('react');
9
+ var BrandLogo = require('../_shared/cjs/BrandLogo-3c6102ef.js');
10
+ var Button = require('../_shared/cjs/Button-b3a69953.js');
11
+ var Surface = require('../_shared/cjs/Surface-d6b8010e.js');
12
+ var BtIconChevronDown2Px = require('../_shared/cjs/BtIconChevronDown2Px-8fb4e2eb.js');
13
+ var handleLinkClick = require('../_shared/cjs/handle-link-click-17a44cf4.js');
14
+ var BtIconChevronRight2Px = require('../_shared/cjs/BtIconChevronRight2Px-a8e40136.js');
15
+ var suffixModifier = require('../_shared/cjs/suffix-modifier-edf7851e.js');
16
+ var Text = require('../_shared/cjs/Text-1d3844be.js');
17
+ require('../_shared/cjs/BtIconChevronRightMid-5a38d855.js');
18
+ require('../_shared/cjs/Icon-719d13d4.js');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
+
24
+ var Item = function (_a) {
25
+ var _b;
26
+ var children = _a.children, href = _a.href, isEmphasised = _a.isEmphasised, onClick = _a.onClick, props = index.__rest(_a, ["children", "href", "isEmphasised", "onClick"]);
27
+ return (React__default["default"].createElement("li", index.__assign({ className: index$1.classNames((_b = {},
28
+ _b["arc-SiteHeaderItem"] = true,
29
+ _b["arc-SiteHeaderItem--emphasised"] = isEmphasised,
30
+ _b)) }, index.filterDataAttrs(props)),
31
+ React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderItem-link", href: href },
32
+ isEmphasised && (React__default["default"].createElement("span", { className: "arc-SiteHeaderItem-linkIcon" },
33
+ React__default["default"].createElement(BtIconChevronRight2Px.BtIconChevronRight2Px_2, null))),
34
+ children)));
35
+ };
36
+
37
+ var ItemGroup = function (_a) {
38
+ var children = _a.children, href = _a.href, title = _a.title, onClick = _a.onClick, viewAllTitle = _a.viewAllTitle, props = index.__rest(_a, ["children", "href", "title", "onClick", "viewAllTitle"]);
39
+ var _b = React.useState(false), hasClientSideJavaScript = _b[0], setHasClientSideJavaScript = _b[1];
40
+ var isMinWidthArcBreakpointL = index_es.useMediaQuery("(min-width: ".concat(index_es.ArcBreakpointL, "px)"));
41
+ React.useEffect(function () {
42
+ React__default["default"].Children.map(children, function (item) {
43
+ if (item && item.type !== Item && item.type !== React.Fragment) {
44
+ throw new Error("Illegal child passed to <SiteHeader.ItemGroup />. Ensure to only use <SiteHeader.Item />.");
45
+ }
46
+ });
47
+ }, [children]);
48
+ React.useEffect(function () {
49
+ // useEffect does not run in ReactDomServer renders
50
+ setHasClientSideJavaScript(true);
51
+ }, [setHasClientSideJavaScript]);
52
+ var ElementType = "div";
53
+ if (title) {
54
+ ElementType = "details";
55
+ }
56
+ return (React__default["default"].createElement("li", { className: "arc-SiteHeaderItemGroup" },
57
+ React__default["default"].createElement(ElementType, index.__assign({ className: "arc-SiteHeaderItemGroup-details", open: Boolean(title && isMinWidthArcBreakpointL) }, index.filterDataAttrs(props)),
58
+ title ? (React__default["default"].createElement("summary", { className: "arc-SiteHeaderItemGroup-summary", tabIndex: isMinWidthArcBreakpointL ? -1 : 0 }, href ? (React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({
59
+ handler: onClick
60
+ }), className: "arc-SiteHeaderItemGroup-title", href: href, tabIndex: !hasClientSideJavaScript || isMinWidthArcBreakpointL ? 0 : -1 },
61
+ title,
62
+ React__default["default"].createElement("span", { className: "arc-SiteHeaderItemGroup-titleIcon" },
63
+ React__default["default"].createElement(BtIconChevronDown2Px.BtIconChevronDown2Px_2, null)))) : (React__default["default"].createElement("div", { className: "arc-SiteHeaderItemGroup-title" }, title)))) : null,
64
+ React__default["default"].createElement("ul", { className: "arc-SiteHeaderItemGroup-items" },
65
+ children,
66
+ href && title ? (React__default["default"].createElement("li", { className: "arc-SiteHeaderItem arc-SiteHeaderItem--viewAll" },
67
+ React__default["default"].createElement("a", { className: "arc-SiteHeaderItem-link", onClick: handleLinkClick.handleLinkClick({
68
+ handler: onClick
69
+ }), href: href }, viewAllTitle || "View all ".concat(title.toLowerCase())))) : null))));
70
+ };
71
+
72
+ var ItemGroupRehydrator = (function (el, hydrate) { return index.__awaiter(void 0, void 0, void 0, function () {
73
+ var children, titleElement, viewAllElement, title, href, viewAllTitle, props;
74
+ return index.__generator(this, function (_a) {
75
+ switch (_a.label) {
76
+ case 0: return [4 /*yield*/, hydrate(el.querySelector(".arc-SiteHeaderItemGroup-items"))];
77
+ case 1:
78
+ children = _a.sent();
79
+ titleElement = el.querySelector(".arc-SiteHeaderItemGroup-title");
80
+ viewAllElement = el.querySelector(".arc-SiteHeaderItem--viewAll");
81
+ title = "";
82
+ href = "";
83
+ viewAllTitle = "";
84
+ if (titleElement) {
85
+ title = titleElement.textContent || /* istanbul ignore next */ "";
86
+ href = titleElement.getAttribute("href") || /* istanbul ignore next */ "";
87
+ }
88
+ if (viewAllElement) {
89
+ viewAllTitle = viewAllElement.textContent || /* istanbul ignore next */ "";
90
+ }
91
+ props = {
92
+ children: children,
93
+ href: href,
94
+ title: title,
95
+ viewAllTitle: viewAllTitle
96
+ };
97
+ return [2 /*return*/, React__default["default"].createElement(ItemGroup, index.__assign({}, props), children)];
98
+ }
99
+ });
100
+ }); });
101
+
102
+ var Column = function (_a) {
103
+ var children = _a.children, props = index.__rest(_a, ["children"]);
104
+ React.useEffect(function () {
105
+ React__default["default"].Children.map(children, function (item) {
106
+ if (item && item.type !== ItemGroup) {
107
+ throw new Error("Illegal child passed to <SiteHeader.Column />. Ensure to only use <SiteHeader.ItemGroup />.");
108
+ }
109
+ });
110
+ }, [children]);
111
+ return (React__default["default"].createElement("li", index.__assign({ className: "arc-SiteHeaderColumn" }, index.filterDataAttrs(props)),
112
+ React__default["default"].createElement("ul", { className: "arc-SiteHeaderColumn-items" }, children)));
113
+ };
114
+
115
+ var BackButton = function (_a) {
116
+ var setOpen = _a.setOpen;
117
+ return (React__default["default"].createElement("button", { className: "arc-SiteHeaderBackButton", onClick: function () {
118
+ setOpen(false);
119
+ } },
120
+ React__default["default"].createElement("span", { className: "arc-SiteHeaderBackButton-icon" },
121
+ React__default["default"].createElement(BtIconChevronRight2Px.BtIconChevronLeft2Px_2, null)),
122
+ React__default["default"].createElement("span", { className: "arc-SiteHeaderBackButton-text" }, "Back")));
123
+ };
124
+
125
+ var Panel = function (_a) {
126
+ var _b;
127
+ var children = _a.children, navItemRef = _a.navItemRef, open = _a.open, promo = _a.promo, setOpen = _a.setOpen, subNavItemRef = _a.subNavItemRef, _c = _a.subNavLink, subNavLink = _c === void 0 ? "" : _c, title = _a.title, viewAll = _a.viewAll, withSubNav = _a.withSubNav, props = index.__rest(_a, ["children", "navItemRef", "open", "promo", "setOpen", "subNavItemRef", "subNavLink", "title", "viewAll", "withSubNav"]);
128
+ var transparent = React.useContext(Context).transparent;
129
+ React.useEffect(function () {
130
+ // Where appropriate, close the Panel when clicking outside of it,
131
+ // by listening to clicks on the entire document and acting accordingly.
132
+ var handleClick = function (e) {
133
+ var _a, _b;
134
+ // Don't close the Panel…
135
+ if (
136
+ // The click is inside the current SubNavItem.
137
+ ((_a = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)) ||
138
+ // The click is inside the current NavItem
139
+ // and the Panel is not inside a SubNavItem.
140
+ // and the target is not a link
141
+ (((_b = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _b === void 0 ? void 0 : _b.contains(e.target)) &&
142
+ !subNavItemRef &&
143
+ !e.target.getAttribute("href")) ||
144
+ // The Panel is inside a SubNavItem
145
+ // and the click is not on a SubNavItem-link.
146
+ // This ensures that one SubNavItem Panel per NavItem always remains open.
147
+ (subNavItemRef &&
148
+ !e.target.classList.contains(subNavLink) &&
149
+ !e.target.classList.contains("".concat(subNavLink, "Title")) &&
150
+ !e.target.classList.contains("".concat(subNavLink, "SubTitle"))) ||
151
+ // Panel is inside a SubNavItem
152
+ // and the click is not inside the Panel's NavItem parent.
153
+ // This prevents SubNavItem Panels in sibling NavItems from being closed.
154
+ (subNavItemRef && !(navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current.contains(e.target)))) {
155
+ return;
156
+ }
157
+ // Close the panel.
158
+ setOpen(false);
159
+ };
160
+ document.addEventListener("click", handleClick);
161
+ return function () {
162
+ document.removeEventListener("click", handleClick);
163
+ };
164
+ }, [navItemRef, setOpen, subNavItemRef, subNavLink]);
165
+ React.useEffect(function () {
166
+ var handleKeydown = function (e) {
167
+ // Check the viewport width at time of press
168
+ var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(index_es.ArcBreakpointL, "px)")).matches;
169
+ if (e.key === "Escape" || e.keyCode === 27) {
170
+ if (isMinWidthArcBreakpointL && subNavItemRef) {
171
+ // Don't close Panels inside SubNavItems when viewport width is above
172
+ // the "desktop" breakpoint.
173
+ return false;
174
+ }
175
+ return setOpen(false);
176
+ }
177
+ };
178
+ window.addEventListener("keydown", handleKeydown);
179
+ return function () {
180
+ window.removeEventListener("keydown", handleKeydown);
181
+ };
182
+ }, [setOpen, subNavItemRef]);
183
+ return (React__default["default"].createElement("div", index.__assign({ className: index$1.classNames((_b = {},
184
+ _b["arc-SiteHeaderPanel"] = true,
185
+ _b["arc-SiteHeaderPanel--open"] = open,
186
+ _b["arc-SiteHeaderPanel--transparent"] = transparent,
187
+ _b["arc-SiteHeaderPanel--withSubNav"] = withSubNav,
188
+ _b)) }, index.filterDataAttrs(props)),
189
+ React__default["default"].createElement(Surface.Surface, { background: "white", growVertically: true },
190
+ React__default["default"].createElement(BackButton, { setOpen: setOpen }),
191
+ React__default["default"].createElement("div", { className: "arc-SiteHeaderPanel-inner" },
192
+ React__default["default"].createElement("div", { className: "arc-SiteHeaderPanel-main" },
193
+ React__default["default"].createElement("div", { className: "arc-SiteHeaderPanel-mainInner" },
194
+ withSubNav && (React__default["default"].createElement("div", { className: "arc-SiteHeaderPanel-subNavArea" })),
195
+ title && (React__default["default"].createElement("div", { className: "arc-SiteHeaderPanel-title" }, title)),
196
+ React__default["default"].createElement("ul", { className: "arc-SiteHeaderPanel-items" }, children)),
197
+ viewAll),
198
+ promo && React__default["default"].createElement("div", { className: "arc-SiteHeaderPanel-promo" }, promo)))));
199
+ };
200
+ var ViewAll = function (_a) {
201
+ var href = _a.href, title = _a.title, onClick = _a.onClick;
202
+ return (React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderPanel-viewAll", href: href },
203
+ title,
204
+ React__default["default"].createElement("span", { className: "arc-SiteHeaderPanel-viewAllIcon" },
205
+ React__default["default"].createElement(BtIconChevronRight2Px.BtIconChevronRight2Px_2, null))));
206
+ };
207
+ ViewAll.displayName = "Panel.ViewAll";
208
+ Panel.ViewAll = ViewAll;
209
+
210
+ var NavItem = function (_a) {
211
+ var _b, _c;
212
+ var children = _a.children, href = _a.href, isCurrent = _a.isCurrent, onClick = _a.onClick, promo = _a.promo, title = _a.title, viewAllTitle = _a.viewAllTitle, props = index.__rest(_a, ["children", "href", "isCurrent", "onClick", "promo", "title", "viewAllTitle"]);
213
+ var navItem = React.useRef();
214
+ var _d = React.useState(false), panelOpen = _d[0], setPanelOpen = _d[1];
215
+ var isMinWidthArcBreakpointL = index_es.useMediaQuery("(min-width: ".concat(index_es.ArcBreakpointL, "px)"));
216
+ React.useEffect(function () {
217
+ React__default["default"].Children.map(children, function (item) {
218
+ if (item &&
219
+ item.type !== ItemGroup &&
220
+ item.type !== Column &&
221
+ item.type !== React.Fragment) {
222
+ throw new Error("Illegal child passed to <SiteHeader.NavItem />. Ensure to only use <SiteHeader.ItemGroup /> or <SiteHeader.Column />.");
223
+ }
224
+ });
225
+ }, [children]);
226
+ return (React__default["default"].createElement("li", index.__assign({ className: index$1.classNames((_b = {},
227
+ _b["arc-SiteHeaderNavItem"] = true,
228
+ _b["arc-SiteHeaderNavItem--linkSelected"] = (children && panelOpen) || (!children && href && isCurrent),
229
+ _b)), ref: navItem }, index.filterDataAttrs(props)), !children ? (href ? (React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({
230
+ handler: onClick
231
+ }), className: "arc-SiteHeaderNavItem-link", href: href }, title)) : null) : (React__default["default"].createElement(React__default["default"].Fragment, null,
232
+ React__default["default"].createElement("button", { "aria-expanded": panelOpen, className: index$1.classNames((_c = {},
233
+ _c["arc-SiteHeaderNavItem-link"] = true,
234
+ _c["arc-SiteHeaderNavItem-link--itemHasChildren"] = true,
235
+ _c)), onClick: function (e) {
236
+ e.preventDefault();
237
+ setPanelOpen(!panelOpen);
238
+ } },
239
+ React__default["default"].createElement("span", null, title),
240
+ React__default["default"].createElement("span", { className: "arc-SiteHeaderNavItem-linkIcon" }, isMinWidthArcBreakpointL ? (React__default["default"].createElement(BtIconChevronDown2Px.BtIconChevronDown2Px_2, null)) : (React__default["default"].createElement(BtIconChevronRight2Px.BtIconChevronRight2Px_2, null)))),
241
+ React__default["default"].createElement(Panel, { navItemRef: navItem, open: panelOpen, promo: promo, setOpen: setPanelOpen, viewAll: href ? (React__default["default"].createElement(Panel.ViewAll, { href: href, onClick: onClick, title: viewAllTitle || "View all ".concat(title.toLowerCase()) })) : (undefined) }, children)))));
242
+ };
243
+
244
+ var NavItemRehydrator = (function (el, hydrate) { return index.__awaiter(void 0, void 0, void 0, function () {
245
+ var children, promo, link, viewAll, href, title, props;
246
+ return index.__generator(this, function (_a) {
247
+ switch (_a.label) {
248
+ case 0:
249
+ children = el.querySelector(".arc-SiteHeaderPanel-items");
250
+ promo = el.querySelector(".arc-SiteHeaderPanel-promo");
251
+ if (!children) return [3 /*break*/, 2];
252
+ return [4 /*yield*/, hydrate(children)];
253
+ case 1:
254
+ children = _a.sent();
255
+ _a.label = 2;
256
+ case 2:
257
+ if (!promo) return [3 /*break*/, 4];
258
+ return [4 /*yield*/, hydrate(promo)];
259
+ case 3:
260
+ promo = _a.sent();
261
+ _a.label = 4;
262
+ case 4:
263
+ link = el.querySelector(".arc-SiteHeaderNavItem-link");
264
+ viewAll = el.querySelector(".arc-SiteHeaderPanel-viewAll");
265
+ href = "";
266
+ title = "";
267
+ if (link) {
268
+ title = link.textContent || /* istanbul ignore next */ "";
269
+ href = link.getAttribute("href") || /* istanbul ignore next */ "";
270
+ }
271
+ if (viewAll) {
272
+ href = viewAll.getAttribute("href") || /* istanbul ignore next */ "";
273
+ }
274
+ props = {
275
+ href: href,
276
+ isCurrent: el.classList.contains("arc-SiteHeaderNavItem--linkSelected") || undefined,
277
+ promo: promo || undefined,
278
+ title: title,
279
+ viewAllTitle: (viewAll === null || viewAll === void 0 ? void 0 : viewAll.textContent) || undefined
280
+ };
281
+ return [2 /*return*/, React__default["default"].createElement(NavItem, index.__assign({}, props), children)];
282
+ }
283
+ });
284
+ }); });
285
+
286
+ var SubNavItem = function (_a) {
287
+ var _b, _c;
288
+ var children = _a.children, _d = _a.isDefaultItem, isDefaultItem = _d === void 0 ? false : _d, href = _a.href, onClick = _a.onClick, offsetXL = _a.offsetXL, promo = _a.promo, subTitle = _a.subTitle, title = _a.title, viewAllTitle = _a.viewAllTitle, props = index.__rest(_a, ["children", "isDefaultItem", "href", "onClick", "offsetXL", "promo", "subTitle", "title", "viewAllTitle"]);
289
+ var navItem = React.useContext(Context$1).navItem;
290
+ var subNavItem = React.useRef();
291
+ var _e = React.useState(false), panelOpen = _e[0], setPanelOpen = _e[1];
292
+ var isMinWidthArcBreakpointL = index_es.useMediaQuery("(min-width: ".concat(index_es.ArcBreakpointL, "px)"));
293
+ React.useEffect(function () {
294
+ React__default["default"].Children.map(children, function (item) {
295
+ if (item &&
296
+ item.type !== ItemGroup &&
297
+ item.type !== Column &&
298
+ item.type !== React.Fragment) {
299
+ throw new Error("Illegal child passed to <SiteHeader.SubNavItem />. Ensure to only use <SiteHeader.ItemGroup /> or <SiteHeader.Column />.");
300
+ }
301
+ });
302
+ }, [children]);
303
+ React.useEffect(function () {
304
+ if (isDefaultItem && isMinWidthArcBreakpointL) {
305
+ setPanelOpen(true);
306
+ }
307
+ else {
308
+ setPanelOpen(false);
309
+ }
310
+ }, [isDefaultItem, isMinWidthArcBreakpointL]);
311
+ var linkTitle = (React__default["default"].createElement(React__default["default"].Fragment, null,
312
+ React__default["default"].createElement("span", { className: "arc-SiteHeaderSubNavItem-linkTitle" }, title),
313
+ subTitle ? (React__default["default"].createElement("span", { className: "arc-SiteHeaderSubNavItem-linkSubTitle" }, subTitle)) : null));
314
+ return (React__default["default"].createElement("li", index.__assign({ className: index$1.classNames((_b = {},
315
+ _b["arc-SiteHeaderSubNavItem"] = true,
316
+ _b["arc-SiteHeaderSubNavItem--linkSelected"] = children && panelOpen,
317
+ _b[suffixModifier.suffixModifier("arc-SiteHeaderSubNavItem--offsetXL", offsetXL || "")] = offsetXL,
318
+ _b)), ref: subNavItem }, index.filterDataAttrs(props), { "data-default-item": isDefaultItem || null }), !children ? (href ? (React__default["default"].createElement("a", { className: "arc-SiteHeaderSubNavItem-link", onClick: handleLinkClick.handleLinkClick({ handler: onClick }), href: href }, linkTitle)) : null) : (React__default["default"].createElement(React__default["default"].Fragment, null,
319
+ React__default["default"].createElement("button", { "aria-expanded": panelOpen, className: index$1.classNames((_c = {},
320
+ _c["arc-SiteHeaderSubNavItem-link"] = true,
321
+ _c["arc-SiteHeaderSubNavItem-link--itemHasChildren"] = children,
322
+ _c)), onClick: function () {
323
+ setPanelOpen(true);
324
+ } },
325
+ linkTitle,
326
+ children && (React__default["default"].createElement("span", { className: "arc-SiteHeaderSubNavItem-linkIcon" },
327
+ React__default["default"].createElement(BtIconChevronRight2Px.BtIconChevronRight2Px_2, null)))),
328
+ React__default["default"].createElement(Panel, { navItemRef: navItem, open: panelOpen, setOpen: setPanelOpen, subNavItemRef: subNavItem, subNavLink: "arc-SiteHeaderSubNavItem-link", promo: promo, title: React__default["default"].createElement("span", null,
329
+ title,
330
+ subTitle && (React__default["default"].createElement(Text.Text, { size: "xs", tone: "supporting" }, subTitle))), viewAll: href ? (React__default["default"].createElement(Panel.ViewAll, { href: href, onClick: onClick, title: viewAllTitle || "View all ".concat(title.toLowerCase()) })) : (undefined) }, children)))));
331
+ };
332
+
333
+ var SubNavItemRehydrator = (function (el, hydrate) { return index.__awaiter(void 0, void 0, void 0, function () {
334
+ var children, promo, link, linkTitle, viewAll, href, title, offsetXL, props;
335
+ var _a;
336
+ return index.__generator(this, function (_b) {
337
+ switch (_b.label) {
338
+ case 0:
339
+ children = el.querySelector(".arc-SiteHeaderPanel-items");
340
+ promo = el.querySelector(".arc-SiteHeaderPanel-promo");
341
+ if (!children) return [3 /*break*/, 2];
342
+ return [4 /*yield*/, hydrate(children)];
343
+ case 1:
344
+ children = _b.sent();
345
+ _b.label = 2;
346
+ case 2:
347
+ if (!promo) return [3 /*break*/, 4];
348
+ return [4 /*yield*/, hydrate(promo)];
349
+ case 3:
350
+ promo = _b.sent();
351
+ _b.label = 4;
352
+ case 4:
353
+ link = el.querySelector(".arc-SiteHeaderSubNavItem-link");
354
+ linkTitle = el.querySelector(".arc-SiteHeaderSubNavItem-linkTitle");
355
+ viewAll = el.querySelector(".arc-SiteHeaderPanel-viewAll");
356
+ href = "";
357
+ title = "";
358
+ if (link) {
359
+ href = link.getAttribute("href") || /* istanbul ignore next */ "";
360
+ }
361
+ if (linkTitle) {
362
+ title = linkTitle.textContent || /* istanbul ignore next */ "";
363
+ }
364
+ if (viewAll) {
365
+ href = viewAll.getAttribute("href") || /* istanbul ignore next */ "";
366
+ }
367
+ offsetXL = undefined;
368
+ if (el.classList.contains("arc-SiteHeaderSubNavItem--offsetXL24")) {
369
+ offsetXL = "24";
370
+ }
371
+ if (el.classList.contains("arc-SiteHeaderSubNavItem--offsetXL48")) {
372
+ offsetXL = "48";
373
+ }
374
+ props = {
375
+ href: href,
376
+ isDefaultItem: Boolean(el.dataset.defaultItem),
377
+ offsetXL: offsetXL,
378
+ promo: promo || undefined,
379
+ subTitle: ((_a = el.querySelector(".arc-SiteHeaderSubNavItem-linkSubTitle")) === null || _a === void 0 ? void 0 : _a.textContent) ||
380
+ undefined,
381
+ title: title,
382
+ viewAllTitle: (viewAll === null || viewAll === void 0 ? void 0 : viewAll.textContent) || undefined
383
+ };
384
+ return [2 /*return*/, React__default["default"].createElement(SubNavItem, index.__assign({}, props), children)];
385
+ }
386
+ });
387
+ }); });
388
+
389
+ var defaultContext$1 = { navItem: null, subTitle: null };
390
+ var Context$1 = React.createContext(defaultContext$1);
391
+ var Provider$1 = Context$1.Provider;
392
+ var NavItemWithSubNav = function (_a) {
393
+ var _b, _c;
394
+ var href = _a.href, slot1 = _a.slot1, slot2 = _a.slot2, slot3 = _a.slot3, _d = _a.subTitle, subTitle = _d === void 0 ? null : _d, title = _a.title, onViewAllClick = _a.onViewAllClick, viewAllTitle = _a.viewAllTitle, props = index.__rest(_a, ["href", "slot1", "slot2", "slot3", "subTitle", "title", "onViewAllClick", "viewAllTitle"]);
395
+ var navItem = React.useRef();
396
+ var _e = React.useState(true), defaultItem = _e[0], setDefaultItem = _e[1];
397
+ var _f = React.useState(false), panelOpen = _f[0], setPanelOpen = _f[1];
398
+ var isMinWidthArcBreakpointL = index_es.useMediaQuery("(min-width: ".concat(index_es.ArcBreakpointL, "px)"));
399
+ React.useEffect(function () {
400
+ React__default["default"].Children.map(slot1, function (item) {
401
+ if (item && item.type !== SubNavItem && item.type !== React.Fragment) {
402
+ throw new Error("Illegal child passed to <SiteHeader.NavItemWithSubNav /> `slot1` prop. Ensure to only use <SiteHeader.SubNavItem />.");
403
+ }
404
+ if (item.props.isDefaultItem) {
405
+ setDefaultItem(false);
406
+ }
407
+ });
408
+ React__default["default"].Children.map(slot2, function (item) {
409
+ if (item && item.type !== SubNavItem && item.type !== React.Fragment) {
410
+ throw new Error("Illegal child passed to <SiteHeader.NavItemWithSubNav /> `slot2` prop. Ensure to only use <SiteHeader.SubNavItem />.");
411
+ }
412
+ if (item.props.isDefaultItem) {
413
+ setDefaultItem(false);
414
+ }
415
+ });
416
+ React__default["default"].Children.map(slot3, function (item) {
417
+ if (item && item.type !== SubNavItem && item.type !== React.Fragment) {
418
+ throw new Error("Illegal child passed to <SiteHeader.NavItemWithSubNav /> `slot3` prop. Ensure to only use <SiteHeader.SubNavItem />.");
419
+ }
420
+ if (item.props.isDefaultItem) {
421
+ setDefaultItem(false);
422
+ }
423
+ });
424
+ }, [slot1, slot2, slot3]);
425
+ return (React__default["default"].createElement(Provider$1, { value: { navItem: navItem, subTitle: subTitle } },
426
+ React__default["default"].createElement("li", index.__assign({ className: index$1.classNames((_b = {},
427
+ _b["arc-SiteHeaderNavItemWithSubNav"] = true,
428
+ _b["arc-SiteHeaderNavItem--linkSelected"] = panelOpen,
429
+ _b)), ref: navItem }, index.filterDataAttrs(props)),
430
+ React__default["default"].createElement("button", { "aria-expanded": panelOpen, className: index$1.classNames((_c = {},
431
+ _c["arc-SiteHeaderNavItem-link"] = true,
432
+ _c["arc-SiteHeaderNavItem-link--itemHasChildren"] = true,
433
+ _c)), onClick: function (e) {
434
+ e.preventDefault();
435
+ setPanelOpen(!panelOpen);
436
+ } },
437
+ title,
438
+ React__default["default"].createElement("span", { className: "arc-SiteHeaderNavItem-linkIcon" }, isMinWidthArcBreakpointL ? (React__default["default"].createElement(BtIconChevronDown2Px.BtIconChevronDown2Px_2, null)) : (React__default["default"].createElement(BtIconChevronRight2Px.BtIconChevronRight2Px_2, null)))),
439
+ React__default["default"].createElement(Panel, { navItemRef: navItem, open: panelOpen, setOpen: setPanelOpen, title: subTitle, viewAll: href ? (React__default["default"].createElement(Panel.ViewAll, { href: href, onClick: onViewAllClick, title: viewAllTitle || "View all ".concat(title.toLowerCase()) })) : (undefined), withSubNav: true },
440
+ defaultItem
441
+ ? React__default["default"].cloneElement(slot1, { isDefaultItem: defaultItem })
442
+ : slot1,
443
+ slot2,
444
+ slot3))));
445
+ };
446
+
447
+ function wrap(el, wrapper) {
448
+ el.parentNode.insertBefore(wrapper, el);
449
+ wrapper.appendChild(el);
450
+ }
451
+ var NavItemWithSubNavRehydrator = (function (el, hydrate) { return index.__awaiter(void 0, void 0, void 0, function () {
452
+ var subNavItem1, subNavItem2, subNavItem3, div1, div2, slot1, slot2, slot3, div3, link, subTitle, viewAllNodes, viewAll, title, props;
453
+ return index.__generator(this, function (_a) {
454
+ switch (_a.label) {
455
+ case 0:
456
+ subNavItem1 = el.querySelector(".arc-SiteHeaderSubNavItem:first-child");
457
+ subNavItem2 = el.querySelector(".arc-SiteHeaderSubNavItem:nth-child(2)");
458
+ subNavItem3 = el.querySelector(".arc-SiteHeaderSubNavItem:nth-child(3)");
459
+ div1 = document.createElement("div");
460
+ div1.className = "slot1";
461
+ div2 = document.createElement("div");
462
+ div2.className = "slot2";
463
+ wrap(subNavItem1, div1);
464
+ wrap(subNavItem2, div2);
465
+ return [4 /*yield*/, hydrate(el.querySelector(".slot1"))];
466
+ case 1:
467
+ slot1 = _a.sent();
468
+ return [4 /*yield*/, hydrate(el.querySelector(".slot2"))];
469
+ case 2:
470
+ slot2 = _a.sent();
471
+ if (!subNavItem3) return [3 /*break*/, 4];
472
+ div3 = document.createElement("div");
473
+ div3.className = "slot3";
474
+ wrap(subNavItem3, div3);
475
+ return [4 /*yield*/, hydrate(el.querySelector(".slot3"))];
476
+ case 3:
477
+ slot3 = _a.sent();
478
+ _a.label = 4;
479
+ case 4:
480
+ link = el.querySelector(".arc-SiteHeaderNavItem-link");
481
+ subTitle = el.querySelector(".arc-SiteHeaderPanel-title");
482
+ viewAllNodes = el.querySelectorAll(".arc-SiteHeaderPanel-viewAll");
483
+ viewAll = viewAllNodes[viewAllNodes.length - 1];
484
+ title = "";
485
+ if (link) {
486
+ title = link.textContent || /* istanbul ignore next */ "";
487
+ }
488
+ props = {
489
+ href: (viewAll === null || viewAll === void 0 ? void 0 : viewAll.getAttribute("href")) || undefined,
490
+ slot1: slot1 || /* istanbul ignore next */ undefined,
491
+ slot2: slot2 || /* istanbul ignore next */ undefined,
492
+ slot3: slot3 || undefined,
493
+ subTitle: (subTitle === null || subTitle === void 0 ? void 0 : subTitle.textContent) || undefined,
494
+ title: title,
495
+ viewAllTitle: (viewAll === null || viewAll === void 0 ? void 0 : viewAll.textContent) || undefined
496
+ };
497
+ return [2 /*return*/, React__default["default"].createElement(NavItemWithSubNav, index.__assign({}, props))];
498
+ }
499
+ });
500
+ }); });
501
+
502
+ var MenuButton = function (_a) {
503
+ var _b;
504
+ var menuOpen = _a.menuOpen, setMenuOpen = _a.setMenuOpen;
505
+ return (React__default["default"].createElement("button", { "aria-expanded": menuOpen, className: index$1.classNames((_b = {},
506
+ _b["arc-MenuButton"] = true,
507
+ _b["arc-MenuButton--menuOpen"] = menuOpen,
508
+ _b)), onClick: function () {
509
+ setMenuOpen(!menuOpen);
510
+ }, type: "button" },
511
+ React__default["default"].createElement("span", { className: "arc-MenuButton-box" },
512
+ React__default["default"].createElement("span", { className: "arc-MenuButton-inner" }),
513
+ React__default["default"].createElement("span", { className: "arc-MenuButton-text" }, "Menu"))));
514
+ };
515
+
516
+ var defaultContext = { transparent: false };
517
+ var Context = React.createContext(defaultContext);
518
+ var Provider = Context.Provider;
519
+ /**
520
+ * Use `SiteHeader` to display brand logo and navigation at the top of a page.
521
+ */
522
+ var SiteHeader = function (_a) {
523
+ var _b;
524
+ 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 = index.__rest(_a, ["children", "basket", "hasLogin", "isTransparent", "loginHref", "logoOnClick", "loginOnClick", "loginTitle", "logoHref", "logoLabel", "search", "subBrand"]);
525
+ var _j = React.useState(false), hasClientSideJavaScript = _j[0], setHasClientSideJavaScript = _j[1];
526
+ var _k = React.useState(false), menuOpen = _k[0], setMenuOpen = _k[1];
527
+ var isMinWidthArcBreakpointL = index_es.useMediaQuery("(min-width: ".concat(index_es.ArcBreakpointL, "px)"));
528
+ React.useEffect(function () {
529
+ React__default["default"].Children.map(children, function (item) {
530
+ if (item &&
531
+ item.type !== NavItem &&
532
+ item.type !== NavItemWithSubNav &&
533
+ item.type !== React.Fragment) {
534
+ throw new Error("Illegal child passed to <SiteHeader />. Ensure to only use <SiteHeader.NavItem /> or <SiteHeader.NavItemWithSubNav />");
535
+ }
536
+ });
537
+ }, [children]);
538
+ React.useEffect(function () {
539
+ if (!isMinWidthArcBreakpointL && menuOpen) {
540
+ document.body.classList.add("arc-body--overflowHidden");
541
+ }
542
+ else {
543
+ document.body.classList.remove("arc-body--overflowHidden");
544
+ }
545
+ return function () {
546
+ document.body.classList.remove("arc-body--overflowHidden");
547
+ };
548
+ }, [isMinWidthArcBreakpointL, menuOpen]);
549
+ React.useEffect(function () {
550
+ var handleKeydown = function (e) {
551
+ if (e.key === "Escape" || e.keyCode === 27) {
552
+ setMenuOpen(false);
553
+ }
554
+ };
555
+ window.addEventListener("keydown", handleKeydown);
556
+ return function () {
557
+ window.removeEventListener("keydown", handleKeydown);
558
+ };
559
+ }, [setMenuOpen]);
560
+ React.useEffect(function () {
561
+ var handleClick = function (e) {
562
+ if (e.target.getAttribute("href")) {
563
+ setMenuOpen(false);
564
+ }
565
+ };
566
+ document.addEventListener("click", handleClick);
567
+ return function () {
568
+ document.removeEventListener("click", handleClick);
569
+ };
570
+ }, [setMenuOpen]);
571
+ React.useEffect(function () {
572
+ // useEffect does not run in ReactDomServer renders
573
+ setHasClientSideJavaScript(true);
574
+ }, [setHasClientSideJavaScript]);
575
+ return (React__default["default"].createElement(Provider, { value: { transparent: isTransparent } },
576
+ React__default["default"].createElement("div", index.__assign({ className: index$1.classNames((_b = {},
577
+ _b["arc-SiteHeader"] = true,
578
+ _b["arc-SiteHeader--menuOpen"] = menuOpen,
579
+ _b["arc-no-js"] = !hasClientSideJavaScript,
580
+ _b)) }, index.filterDataAttrs(props), { "data-transparent": isTransparent || null }),
581
+ React__default["default"].createElement(Surface.Surface, { background: !isTransparent || (menuOpen && !isMinWidthArcBreakpointL)
582
+ ? "brand-flat"
583
+ : undefined },
584
+ React__default["default"].createElement("div", { className: "arc-SiteHeader-inner" },
585
+ React__default["default"].createElement("a", { className: "arc-SiteHeader-brand", onClick: handleLinkClick.handleLinkClick({
586
+ handler: logoOnClick
587
+ }), href: logoHref },
588
+ React__default["default"].createElement(BrandLogo.BrandLogo, { label: logoLabel, subBrand: subBrand })),
589
+ children && (React__default["default"].createElement("nav", { className: "arc-SiteHeader-nav" },
590
+ React__default["default"].createElement("div", { className: "arc-SiteHeader-menuButton" },
591
+ React__default["default"].createElement(MenuButton, { menuOpen: menuOpen, setMenuOpen: setMenuOpen })),
592
+ React__default["default"].createElement("div", { className: "arc-SiteHeader-main" },
593
+ React__default["default"].createElement("ul", { className: "arc-SiteHeader-navItems" }, children),
594
+ hasLogin && (React__default["default"].createElement(React__default["default"].Fragment, null, loginOnClick ? (React__default["default"].createElement("div", { className: "arc-SiteHeader-loginButton" },
595
+ React__default["default"].createElement(Button.Button, { onClick: loginOnClick, isFullWidth: true, label: loginTitle }))) : (React__default["default"].createElement("div", { className: "arc-SiteHeader-loginButton" },
596
+ React__default["default"].createElement(Button.Button, { href: loginHref, isFullWidth: true, label: loginTitle })))))))),
597
+ (basket || hasLogin || search) && (React__default["default"].createElement("div", { className: "arc-SiteHeader-secondary" },
598
+ search ? (React__default["default"].createElement("div", { className: "arc-SiteHeader-search" }, search)) : null,
599
+ basket ? (React__default["default"].createElement("div", { className: "arc-SiteHeader-basket" }, basket)) : null,
600
+ hasLogin && (React__default["default"].createElement(React__default["default"].Fragment, null, loginOnClick ? (React__default["default"].createElement("div", { className: "arc-SiteHeader-loginLink arc-SiteHeader-loginLink--function", onClick: loginOnClick }, loginTitle)) : (React__default["default"].createElement("a", { className: "arc-SiteHeader-loginLink", href: loginHref }, loginTitle)))))))))));
601
+ };
602
+ Column.displayName = "SiteHeader.Column";
603
+ Item.displayName = "SiteHeader.Item";
604
+ ItemGroup.displayName = "SiteHeader.ItemGroup";
605
+ NavItem.displayName = "SiteHeader.NavItem";
606
+ NavItemWithSubNav.displayName = "SiteHeader.NavItemWithSubNav";
607
+ SubNavItem.displayName = "SiteHeader.SubNavItem";
608
+ SiteHeader.Column = Column;
609
+ SiteHeader.Item = Item;
610
+ SiteHeader.ItemGroup = ItemGroup;
611
+ SiteHeader.NavItem = NavItem;
612
+ SiteHeader.NavItemWithSubNav = NavItemWithSubNav;
613
+ SiteHeader.SubNavItem = SubNavItem;
614
+
615
+ var SiteHeaderRehydrator = function (el, hydrate) { return index.__awaiter(void 0, void 0, void 0, function () {
616
+ var children, basket, search, brand, login, logoHref, logoLabel, props;
617
+ return index.__generator(this, function (_a) {
618
+ switch (_a.label) {
619
+ case 0:
620
+ children = el.querySelector(".arc-SiteHeader-navItems");
621
+ basket = el.querySelector(".arc-SiteHeader-basket");
622
+ search = el.querySelector(".arc-SiteHeader-search");
623
+ if (!children) return [3 /*break*/, 2];
624
+ return [4 /*yield*/, hydrate(children)];
625
+ case 1:
626
+ children = _a.sent();
627
+ _a.label = 2;
628
+ case 2:
629
+ if (!basket) return [3 /*break*/, 4];
630
+ return [4 /*yield*/, hydrate(basket)];
631
+ case 3:
632
+ basket = _a.sent();
633
+ _a.label = 4;
634
+ case 4:
635
+ if (!search) return [3 /*break*/, 6];
636
+ return [4 /*yield*/, hydrate(search)];
637
+ case 5:
638
+ search = _a.sent();
639
+ _a.label = 6;
640
+ case 6:
641
+ brand = el.querySelector(".arc-SiteHeader-brand");
642
+ login = el.querySelector(".arc-SiteHeader-loginLink");
643
+ logoHref = "";
644
+ logoLabel = "";
645
+ if (brand) {
646
+ logoHref = brand.getAttribute("href") || /* istanbul ignore next */ "";
647
+ logoLabel = brand.textContent || /* istanbul ignore next */ "";
648
+ }
649
+ props = {
650
+ basket: basket,
651
+ hasLogin: Boolean(login),
652
+ isTransparent: Boolean(el.dataset.transparent),
653
+ loginHref: (login === null || login === void 0 ? void 0 : login.getAttribute("href")) || undefined,
654
+ loginTitle: (login === null || login === void 0 ? void 0 : login.textContent) || undefined,
655
+ logoHref: logoHref,
656
+ logoLabel: logoLabel,
657
+ search: search
658
+ };
659
+ return [2 /*return*/, React__default["default"].createElement(SiteHeader, index.__assign({}, props), children)];
660
+ }
661
+ });
662
+ }); };
663
+ SiteHeaderRehydrator.ItemGroupRehydrator = ItemGroupRehydrator;
664
+ SiteHeaderRehydrator.NavItemRehydrator = NavItemRehydrator;
665
+ SiteHeaderRehydrator.NavItemWithSubNavRehydrator = NavItemWithSubNavRehydrator;
666
+ SiteHeaderRehydrator.SubNavItemRehydrator = SubNavItemRehydrator;
667
+
668
+ exports.SiteHeader = SiteHeader;
669
+ exports.SiteHeaderRehydrator = SiteHeaderRehydrator;