@codecademy/brand 4.0.0-alpha.14deb86052.0 → 4.0.0-alpha.65b0979c7d.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 (1189) hide show
  1. package/dist/AbbreviatedCommunityEventCard/index.d.ts +2 -1
  2. package/dist/AbbreviatedCommunityEventCard/index.d.ts.map +1 -0
  3. package/dist/AbbreviatedCommunityEventCard/index.js +2 -1
  4. package/dist/AbbreviatedCommunityEventCard/index.js.map +1 -0
  5. package/dist/AppBar/AppBarSection.d.ts +2 -1
  6. package/dist/AppBar/AppBarSection.d.ts.map +1 -0
  7. package/dist/AppBar/AppBarSection.js +2 -1
  8. package/dist/AppBar/AppBarSection.js.map +1 -0
  9. package/dist/AppBar/index.d.ts +2 -1
  10. package/dist/AppBar/index.d.ts.map +1 -0
  11. package/dist/AppBar/index.js +2 -1
  12. package/dist/AppBar/index.js.map +1 -0
  13. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.ts +2 -1
  14. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.ts.map +1 -0
  15. package/dist/AppBarDeprecated/AppBarSectionDeprecated.js +2 -1
  16. package/dist/AppBarDeprecated/AppBarSectionDeprecated.js.map +1 -0
  17. package/dist/AppBarDeprecated/index.d.ts +2 -1
  18. package/dist/AppBarDeprecated/index.d.ts.map +1 -0
  19. package/dist/AppBarDeprecated/index.js +2 -1
  20. package/dist/AppBarDeprecated/index.js.map +1 -0
  21. package/dist/AppBarDeprecated/styles/index.module.js +2 -1
  22. package/dist/AppBarDeprecated/styles/index.module.js.map +1 -0
  23. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.js +2 -1
  24. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.js.map +1 -0
  25. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.js +2 -1
  26. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.js.map +1 -0
  27. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.js +2 -1
  28. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.js.map +1 -0
  29. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.ts +2 -1
  30. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.ts.map +1 -0
  31. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.js +2 -1
  32. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.js.map +1 -0
  33. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.js +2 -1
  34. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.js.map +1 -0
  35. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.ts +2 -1
  36. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.ts.map +1 -0
  37. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.js +2 -1
  38. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.js.map +1 -0
  39. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.js +2 -1
  40. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.js.map +1 -0
  41. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.js +2 -1
  42. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.js.map +1 -0
  43. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.ts +8 -7
  44. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.ts.map +1 -0
  45. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.js +2 -1
  46. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.js.map +1 -0
  47. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.js +2 -1
  48. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.js.map +1 -0
  49. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.js +2 -1
  50. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.js.map +1 -0
  51. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.js +2 -1
  52. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.js.map +1 -0
  53. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.ts +2 -1
  54. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.ts.map +1 -0
  55. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.js +2 -1
  56. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.js.map +1 -0
  57. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.js +2 -1
  58. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.js.map +1 -0
  59. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.js +2 -1
  60. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.js.map +1 -0
  61. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.js +2 -1
  62. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.js.map +1 -0
  63. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.js +2 -1
  64. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.js.map +1 -0
  65. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.js +2 -1
  66. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.js.map +1 -0
  67. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.ts +2 -1
  68. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.ts.map +1 -0
  69. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.js +2 -1
  70. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.js.map +1 -0
  71. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.js +2 -1
  72. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.js.map +1 -0
  73. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.js +2 -1
  74. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.js.map +1 -0
  75. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.js +2 -1
  76. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.js.map +1 -0
  77. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.js +2 -1
  78. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.js.map +1 -0
  79. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.js +2 -1
  80. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.js.map +1 -0
  81. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.js +2 -1
  82. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.js.map +1 -0
  83. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.js +2 -1
  84. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.js.map +1 -0
  85. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.js +2 -1
  86. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.js.map +1 -0
  87. package/dist/AppHeader/Search/DefaultResults.js +2 -1
  88. package/dist/AppHeader/Search/DefaultResults.js.map +1 -0
  89. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.js +2 -1
  90. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.js.map +1 -0
  91. package/dist/AppHeader/Search/SearchButton.js +2 -1
  92. package/dist/AppHeader/Search/SearchButton.js.map +1 -0
  93. package/dist/AppHeader/Search/SearchPane.js +2 -1
  94. package/dist/AppHeader/Search/SearchPane.js.map +1 -0
  95. package/dist/AppHeader/Search/SearchTrackingProvider/index.js +2 -1
  96. package/dist/AppHeader/Search/SearchTrackingProvider/index.js.map +1 -0
  97. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.js +2 -1
  98. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.js.map +1 -0
  99. package/dist/AppHeader/Search/SearchWorker/index.d.ts +2 -1
  100. package/dist/AppHeader/Search/SearchWorker/index.d.ts.map +1 -0
  101. package/dist/AppHeader/Search/SearchWorker/index.js +2 -1
  102. package/dist/AppHeader/Search/SearchWorker/index.js.map +1 -0
  103. package/dist/AppHeader/Search/SearchWorker/src.js +2 -1
  104. package/dist/AppHeader/Search/SearchWorker/src.js.map +1 -0
  105. package/dist/AppHeader/Search/SearchWorker/types.d.ts +2 -1
  106. package/dist/AppHeader/Search/SearchWorker/types.d.ts.map +1 -0
  107. package/dist/AppHeader/Search/SearchWorker/types.js +2 -1
  108. package/dist/AppHeader/Search/SearchWorker/types.js.map +1 -0
  109. package/dist/AppHeader/Search/SearchWorker/worker.js +2 -1
  110. package/dist/AppHeader/Search/SearchWorker/worker.js.map +1 -0
  111. package/dist/AppHeader/Search/consts.d.ts +2 -1
  112. package/dist/AppHeader/Search/consts.d.ts.map +1 -0
  113. package/dist/AppHeader/Search/consts.js +2 -1
  114. package/dist/AppHeader/Search/consts.js.map +1 -0
  115. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.js +2 -1
  116. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.js.map +1 -0
  117. package/dist/AppHeader/Search/safelyRedirect.js +2 -1
  118. package/dist/AppHeader/Search/safelyRedirect.js.map +1 -0
  119. package/dist/AppHeader/Search/types.d.ts +2 -1
  120. package/dist/AppHeader/Search/types.d.ts.map +1 -0
  121. package/dist/AppHeader/Search/useHeaderSearch.js +2 -1
  122. package/dist/AppHeader/Search/useHeaderSearch.js.map +1 -0
  123. package/dist/AppHeader/index.d.ts +2 -1
  124. package/dist/AppHeader/index.d.ts.map +1 -0
  125. package/dist/AppHeader/index.js +2 -1
  126. package/dist/AppHeader/index.js.map +1 -0
  127. package/dist/AppHeader/shared/elements.js +2 -1
  128. package/dist/AppHeader/shared/elements.js.map +1 -0
  129. package/dist/AppHeader/shared/keyboardNav.js +2 -1
  130. package/dist/AppHeader/shared/keyboardNav.js.map +1 -0
  131. package/dist/AppHeader/shared/types.d.ts +2 -1
  132. package/dist/AppHeader/shared/types.d.ts.map +1 -0
  133. package/dist/AppHeader/shared/types.js +2 -1
  134. package/dist/AppHeader/shared/types.js.map +1 -0
  135. package/dist/AppHeader/shared/utils.js +2 -1
  136. package/dist/AppHeader/shared/utils.js.map +1 -0
  137. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.ts +2 -1
  138. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.ts.map +1 -0
  139. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.js +2 -1
  140. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.js.map +1 -0
  141. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.js +2 -1
  142. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.js.map +1 -0
  143. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.ts +2 -1
  144. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.ts.map +1 -0
  145. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.js +2 -1
  146. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.js.map +1 -0
  147. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.js +2 -1
  148. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.js.map +1 -0
  149. package/dist/AppHeaderMobile/index.d.ts +2 -1
  150. package/dist/AppHeaderMobile/index.d.ts.map +1 -0
  151. package/dist/AppHeaderMobile/index.js +2 -1
  152. package/dist/AppHeaderMobile/index.js.map +1 -0
  153. package/dist/Avatar/index.d.ts +2 -1
  154. package/dist/Avatar/index.d.ts.map +1 -0
  155. package/dist/Avatar/index.js +2 -1
  156. package/dist/Avatar/index.js.map +1 -0
  157. package/dist/AvatarChooser/index.d.ts +2 -1
  158. package/dist/AvatarChooser/index.d.ts.map +1 -0
  159. package/dist/AvatarChooser/index.js +2 -1
  160. package/dist/AvatarChooser/index.js.map +1 -0
  161. package/dist/BackToTopAnchor/index.d.ts +2 -1
  162. package/dist/BackToTopAnchor/index.d.ts.map +1 -0
  163. package/dist/BackToTopAnchor/index.js +2 -1
  164. package/dist/BackToTopAnchor/index.js.map +1 -0
  165. package/dist/Banner/CountdownTimer.d.ts +2 -1
  166. package/dist/Banner/CountdownTimer.d.ts.map +1 -0
  167. package/dist/Banner/CountdownTimer.js +2 -1
  168. package/dist/Banner/CountdownTimer.js.map +1 -0
  169. package/dist/Banner/EnhancedBanner.d.ts +2 -1
  170. package/dist/Banner/EnhancedBanner.d.ts.map +1 -0
  171. package/dist/Banner/EnhancedBanner.js +2 -1
  172. package/dist/Banner/EnhancedBanner.js.map +1 -0
  173. package/dist/Banner/index.d.ts +2 -1
  174. package/dist/Banner/index.d.ts.map +1 -0
  175. package/dist/Banner/index.js +2 -1
  176. package/dist/Banner/index.js.map +1 -0
  177. package/dist/BetaSticker/index.d.ts +2 -1
  178. package/dist/BetaSticker/index.d.ts.map +1 -0
  179. package/dist/BetaSticker/index.js +2 -1
  180. package/dist/BetaSticker/index.js.map +1 -0
  181. package/dist/CareerPathCard/index.d.ts +2 -1
  182. package/dist/CareerPathCard/index.d.ts.map +1 -0
  183. package/dist/CareerPathCard/index.js +2 -1
  184. package/dist/CareerPathCard/index.js.map +1 -0
  185. package/dist/Carousel/elements.js +2 -1
  186. package/dist/Carousel/elements.js.map +1 -0
  187. package/dist/Carousel/index.d.ts +2 -1
  188. package/dist/Carousel/index.d.ts.map +1 -0
  189. package/dist/Carousel/index.js +2 -1
  190. package/dist/Carousel/index.js.map +1 -0
  191. package/dist/CertificationPathCard/index.d.ts +2 -1
  192. package/dist/CertificationPathCard/index.d.ts.map +1 -0
  193. package/dist/CertificationPathCard/index.js +2 -1
  194. package/dist/CertificationPathCard/index.js.map +1 -0
  195. package/dist/CoachingSessionCard/index.d.ts +2 -1
  196. package/dist/CoachingSessionCard/index.d.ts.map +1 -0
  197. package/dist/CoachingSessionCard/index.js +2 -1
  198. package/dist/CoachingSessionCard/index.js.map +1 -0
  199. package/dist/CommunityEventCard/EventTypeIcon.js +2 -1
  200. package/dist/CommunityEventCard/EventTypeIcon.js.map +1 -0
  201. package/dist/CommunityEventCard/index.d.ts +2 -1
  202. package/dist/CommunityEventCard/index.d.ts.map +1 -0
  203. package/dist/CommunityEventCard/index.js +2 -1
  204. package/dist/CommunityEventCard/index.js.map +1 -0
  205. package/dist/CommunityEventToast/index.d.ts +2 -1
  206. package/dist/CommunityEventToast/index.d.ts.map +1 -0
  207. package/dist/CommunityEventToast/index.js +2 -1
  208. package/dist/CommunityEventToast/index.js.map +1 -0
  209. package/dist/ContentGroupBaseCard/helpers.d.ts +2 -1
  210. package/dist/ContentGroupBaseCard/helpers.d.ts.map +1 -0
  211. package/dist/ContentGroupBaseCard/helpers.js +2 -1
  212. package/dist/ContentGroupBaseCard/helpers.js.map +1 -0
  213. package/dist/ContentGroupBaseCard/index.d.ts +2 -1
  214. package/dist/ContentGroupBaseCard/index.d.ts.map +1 -0
  215. package/dist/ContentGroupBaseCard/index.js +2 -1
  216. package/dist/ContentGroupBaseCard/index.js.map +1 -0
  217. package/dist/ContentGroupBaseCard/shared.js +2 -1
  218. package/dist/ContentGroupBaseCard/shared.js.map +1 -0
  219. package/dist/ContentGroupBaseCard/types.d.ts +2 -1
  220. package/dist/ContentGroupBaseCard/types.d.ts.map +1 -0
  221. package/dist/ContentGroupBaseCard/types.js +2 -1
  222. package/dist/ContentGroupBaseCard/types.js.map +1 -0
  223. package/dist/CourseCard/index.d.ts +2 -1
  224. package/dist/CourseCard/index.d.ts.map +1 -0
  225. package/dist/CourseCard/index.js +2 -1
  226. package/dist/CourseCard/index.js.map +1 -0
  227. package/dist/CurriculumCard/BottomTag/index.d.ts +2 -1
  228. package/dist/CurriculumCard/BottomTag/index.d.ts.map +1 -0
  229. package/dist/CurriculumCard/BottomTag/index.js +2 -1
  230. package/dist/CurriculumCard/BottomTag/index.js.map +1 -0
  231. package/dist/CurriculumCard/Difficulty/helpers.d.ts +2 -1
  232. package/dist/CurriculumCard/Difficulty/helpers.d.ts.map +1 -0
  233. package/dist/CurriculumCard/Difficulty/helpers.js +2 -1
  234. package/dist/CurriculumCard/Difficulty/helpers.js.map +1 -0
  235. package/dist/CurriculumCard/Difficulty/index.d.ts +2 -1
  236. package/dist/CurriculumCard/Difficulty/index.d.ts.map +1 -0
  237. package/dist/CurriculumCard/Difficulty/index.js +2 -1
  238. package/dist/CurriculumCard/Difficulty/index.js.map +1 -0
  239. package/dist/CurriculumCard/Difficulty/types.d.ts +2 -1
  240. package/dist/CurriculumCard/Difficulty/types.d.ts.map +1 -0
  241. package/dist/CurriculumCard/Difficulty/types.js +2 -1
  242. package/dist/CurriculumCard/Difficulty/types.js.map +1 -0
  243. package/dist/CurriculumCard/Footer/index.js +2 -1
  244. package/dist/CurriculumCard/Footer/index.js.map +1 -0
  245. package/dist/CurriculumCard/Image/index.js +2 -1
  246. package/dist/CurriculumCard/Image/index.js.map +1 -0
  247. package/dist/CurriculumCard/Subtitle/helpers.js +2 -1
  248. package/dist/CurriculumCard/Subtitle/helpers.js.map +1 -0
  249. package/dist/CurriculumCard/Subtitle/index.d.ts +2 -1
  250. package/dist/CurriculumCard/Subtitle/index.d.ts.map +1 -0
  251. package/dist/CurriculumCard/Subtitle/index.js +2 -1
  252. package/dist/CurriculumCard/Subtitle/index.js.map +1 -0
  253. package/dist/CurriculumCard/index.d.ts +2 -1
  254. package/dist/CurriculumCard/index.d.ts.map +1 -0
  255. package/dist/CurriculumCard/index.js +2 -1
  256. package/dist/CurriculumCard/index.js.map +1 -0
  257. package/dist/DropdownButton/DropdownList.d.ts +2 -1
  258. package/dist/DropdownButton/DropdownList.d.ts.map +1 -0
  259. package/dist/DropdownButton/DropdownList.js +2 -1
  260. package/dist/DropdownButton/DropdownList.js.map +1 -0
  261. package/dist/DropdownButton/index.d.ts +2 -1
  262. package/dist/DropdownButton/index.d.ts.map +1 -0
  263. package/dist/DropdownButton/index.js +2 -1
  264. package/dist/DropdownButton/index.js.map +1 -0
  265. package/dist/DropdownButton/useDynamicPopoverPosition.js +2 -1
  266. package/dist/DropdownButton/useDynamicPopoverPosition.js.map +1 -0
  267. package/dist/EditorialImage/index.d.ts +2 -1
  268. package/dist/EditorialImage/index.d.ts.map +1 -0
  269. package/dist/EditorialImage/index.js +2 -1
  270. package/dist/EditorialImage/index.js.map +1 -0
  271. package/dist/EditorialImage/styles.module.js +2 -1
  272. package/dist/EditorialImage/styles.module.js.map +1 -0
  273. package/dist/EmptySection/index.d.ts +2 -1
  274. package/dist/EmptySection/index.d.ts.map +1 -0
  275. package/dist/EmptySection/index.js +2 -1
  276. package/dist/EmptySection/index.js.map +1 -0
  277. package/dist/ErrorContents/index.d.ts +2 -1
  278. package/dist/ErrorContents/index.d.ts.map +1 -0
  279. package/dist/ErrorContents/index.js +2 -1
  280. package/dist/ErrorContents/index.js.map +1 -0
  281. package/dist/FeatureList/index.d.ts +2 -1
  282. package/dist/FeatureList/index.d.ts.map +1 -0
  283. package/dist/FeatureList/index.js +2 -1
  284. package/dist/FeatureList/index.js.map +1 -0
  285. package/dist/GlobalFooter/FooterHeading.js +2 -1
  286. package/dist/GlobalFooter/FooterHeading.js.map +1 -0
  287. package/dist/GlobalFooter/FooterLegal/LegalLinks.js +2 -1
  288. package/dist/GlobalFooter/FooterLegal/LegalLinks.js.map +1 -0
  289. package/dist/GlobalFooter/FooterLegal/MadeIn.js +2 -1
  290. package/dist/GlobalFooter/FooterLegal/MadeIn.js.map +1 -0
  291. package/dist/GlobalFooter/FooterLegal/index.js +2 -1
  292. package/dist/GlobalFooter/FooterLegal/index.js.map +1 -0
  293. package/dist/GlobalFooter/FooterLinks.js +2 -1
  294. package/dist/GlobalFooter/FooterLinks.js.map +1 -0
  295. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.js +2 -1
  296. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.js.map +1 -0
  297. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.js +2 -1
  298. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.js.map +1 -0
  299. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.js +2 -1
  300. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.js.map +1 -0
  301. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.js +2 -1
  302. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.js.map +1 -0
  303. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.js +2 -1
  304. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.js.map +1 -0
  305. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.js +2 -1
  306. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.js.map +1 -0
  307. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.ts +2 -1
  308. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.ts.map +1 -0
  309. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.js +2 -1
  310. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.js.map +1 -0
  311. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.js +2 -1
  312. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.js.map +1 -0
  313. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.js +2 -1
  314. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.js.map +1 -0
  315. package/dist/GlobalFooter/FooterNavLinks/index.js +2 -1
  316. package/dist/GlobalFooter/FooterNavLinks/index.js.map +1 -0
  317. package/dist/GlobalFooter/index.d.ts +2 -1
  318. package/dist/GlobalFooter/index.d.ts.map +1 -0
  319. package/dist/GlobalFooter/index.js +2 -1
  320. package/dist/GlobalFooter/index.js.map +1 -0
  321. package/dist/GlobalFooter/types.d.ts +2 -1
  322. package/dist/GlobalFooter/types.d.ts.map +1 -0
  323. package/dist/GlobalHeader/GlobalHeaderItems.js +2 -1
  324. package/dist/GlobalHeader/GlobalHeaderItems.js.map +1 -0
  325. package/dist/GlobalHeader/GlobalHeaderVariants.js +2 -1
  326. package/dist/GlobalHeader/GlobalHeaderVariants.js.map +1 -0
  327. package/dist/GlobalHeader/context.js +2 -1
  328. package/dist/GlobalHeader/context.js.map +1 -0
  329. package/dist/GlobalHeader/index.d.ts +2 -1
  330. package/dist/GlobalHeader/index.d.ts.map +1 -0
  331. package/dist/GlobalHeader/index.js +2 -1
  332. package/dist/GlobalHeader/index.js.map +1 -0
  333. package/dist/GlobalHeader/types.d.ts +2 -1
  334. package/dist/GlobalHeader/types.d.ts.map +1 -0
  335. package/dist/GlobalHeader/urlHelpers.js +2 -1
  336. package/dist/GlobalHeader/urlHelpers.js.map +1 -0
  337. package/dist/GlobalPage/index.d.ts +2 -1
  338. package/dist/GlobalPage/index.d.ts.map +1 -0
  339. package/dist/GlobalPage/index.js +2 -1
  340. package/dist/GlobalPage/index.js.map +1 -0
  341. package/dist/Grid/GridCollapse.d.ts +2 -1
  342. package/dist/Grid/GridCollapse.d.ts.map +1 -0
  343. package/dist/Grid/GridCollapse.js +2 -1
  344. package/dist/Grid/GridCollapse.js.map +1 -0
  345. package/dist/Grid/Subgrid.d.ts +4 -3
  346. package/dist/Grid/Subgrid.d.ts.map +1 -0
  347. package/dist/Grid/Subgrid.js +2 -1
  348. package/dist/Grid/Subgrid.js.map +1 -0
  349. package/dist/Grid/getCSSFromColumnCount.d.ts +2 -1
  350. package/dist/Grid/getCSSFromColumnCount.d.ts.map +1 -0
  351. package/dist/Grid/getCSSFromColumnCount.js +2 -1
  352. package/dist/Grid/getCSSFromColumnCount.js.map +1 -0
  353. package/dist/HeaderHeightArea/index.d.ts +2 -1
  354. package/dist/HeaderHeightArea/index.d.ts.map +1 -0
  355. package/dist/HeaderHeightArea/index.js +2 -1
  356. package/dist/HeaderHeightArea/index.js.map +1 -0
  357. package/dist/HeaderHeightArea/useIsInHeaderRegion.js +2 -1
  358. package/dist/HeaderHeightArea/useIsInHeaderRegion.js.map +1 -0
  359. package/dist/HorizontalScrollMenu/index.d.ts +2 -1
  360. package/dist/HorizontalScrollMenu/index.d.ts.map +1 -0
  361. package/dist/HorizontalScrollMenu/index.js +2 -1
  362. package/dist/HorizontalScrollMenu/index.js.map +1 -0
  363. package/dist/HubCard/index.d.ts +2 -1
  364. package/dist/HubCard/index.d.ts.map +1 -0
  365. package/dist/HubCard/index.js +2 -1
  366. package/dist/HubCard/index.js.map +1 -0
  367. package/dist/InfoCard/index.d.ts +2 -1
  368. package/dist/InfoCard/index.d.ts.map +1 -0
  369. package/dist/InfoCard/index.js +2 -1
  370. package/dist/InfoCard/index.js.map +1 -0
  371. package/dist/Konamimojisplosion/Konamimojisplosion.d.ts +2 -1
  372. package/dist/Konamimojisplosion/Konamimojisplosion.d.ts.map +1 -0
  373. package/dist/Konamimojisplosion/Konamimojisplosion.js +2 -1
  374. package/dist/Konamimojisplosion/Konamimojisplosion.js.map +1 -0
  375. package/dist/Konamimojisplosion/useKonamimojisplosion.d.ts +2 -1
  376. package/dist/Konamimojisplosion/useKonamimojisplosion.d.ts.map +1 -0
  377. package/dist/Konamimojisplosion/useKonamimojisplosion.js +2 -1
  378. package/dist/Konamimojisplosion/useKonamimojisplosion.js.map +1 -0
  379. package/dist/LandingPage/CTA.js +2 -1
  380. package/dist/LandingPage/CTA.js.map +1 -0
  381. package/dist/LandingPage/Description.d.ts +2 -1
  382. package/dist/LandingPage/Description.d.ts.map +1 -0
  383. package/dist/LandingPage/Description.js +2 -1
  384. package/dist/LandingPage/Description.js.map +1 -0
  385. package/dist/LandingPage/Feature.js +2 -1
  386. package/dist/LandingPage/Feature.js.map +1 -0
  387. package/dist/LandingPage/PageFAQs.d.ts +2 -1
  388. package/dist/LandingPage/PageFAQs.d.ts.map +1 -0
  389. package/dist/LandingPage/PageFAQs.js +2 -1
  390. package/dist/LandingPage/PageFAQs.js.map +1 -0
  391. package/dist/LandingPage/PageFeatures.d.ts +2 -1
  392. package/dist/LandingPage/PageFeatures.d.ts.map +1 -0
  393. package/dist/LandingPage/PageFeatures.js +2 -1
  394. package/dist/LandingPage/PageFeatures.js.map +1 -0
  395. package/dist/LandingPage/PageFeaturesEnhanced.d.ts +2 -1
  396. package/dist/LandingPage/PageFeaturesEnhanced.d.ts.map +1 -0
  397. package/dist/LandingPage/PageFeaturesEnhanced.js +2 -1
  398. package/dist/LandingPage/PageFeaturesEnhanced.js.map +1 -0
  399. package/dist/LandingPage/PageFeaturesWithReferences.d.ts +2 -1
  400. package/dist/LandingPage/PageFeaturesWithReferences.d.ts.map +1 -0
  401. package/dist/LandingPage/PageFeaturesWithReferences.js +2 -1
  402. package/dist/LandingPage/PageFeaturesWithReferences.js.map +1 -0
  403. package/dist/LandingPage/PageHero.d.ts +2 -1
  404. package/dist/LandingPage/PageHero.d.ts.map +1 -0
  405. package/dist/LandingPage/PageHero.js +2 -1
  406. package/dist/LandingPage/PageHero.js.map +1 -0
  407. package/dist/LandingPage/PagePrefooter.d.ts +2 -1
  408. package/dist/LandingPage/PagePrefooter.d.ts.map +1 -0
  409. package/dist/LandingPage/PagePrefooter.js +2 -1
  410. package/dist/LandingPage/PagePrefooter.js.map +1 -0
  411. package/dist/LandingPage/PageSingleFeature.d.ts +2 -1
  412. package/dist/LandingPage/PageSingleFeature.d.ts.map +1 -0
  413. package/dist/LandingPage/PageSingleFeature.js +2 -1
  414. package/dist/LandingPage/PageSingleFeature.js.map +1 -0
  415. package/dist/LandingPage/PageTestimonials.d.ts +2 -1
  416. package/dist/LandingPage/PageTestimonials.d.ts.map +1 -0
  417. package/dist/LandingPage/PageTestimonials.js +2 -1
  418. package/dist/LandingPage/PageTestimonials.js.map +1 -0
  419. package/dist/LandingPage/PageVideoGallery.d.ts +2 -1
  420. package/dist/LandingPage/PageVideoGallery.d.ts.map +1 -0
  421. package/dist/LandingPage/PageVideoGallery.js +2 -1
  422. package/dist/LandingPage/PageVideoGallery.js.map +1 -0
  423. package/dist/LandingPage/Title.d.ts +2 -1
  424. package/dist/LandingPage/Title.d.ts.map +1 -0
  425. package/dist/LandingPage/Title.js +2 -1
  426. package/dist/LandingPage/Title.js.map +1 -0
  427. package/dist/LandingPage/TitleWithEyebrow.d.ts +2 -1
  428. package/dist/LandingPage/TitleWithEyebrow.d.ts.map +1 -0
  429. package/dist/LandingPage/TitleWithEyebrow.js +2 -1
  430. package/dist/LandingPage/TitleWithEyebrow.js.map +1 -0
  431. package/dist/LandingPage/types.d.ts +2 -1
  432. package/dist/LandingPage/types.d.ts.map +1 -0
  433. package/dist/LayoutMenu/AccordionMenu.d.ts +2 -1
  434. package/dist/LayoutMenu/AccordionMenu.d.ts.map +1 -0
  435. package/dist/LayoutMenu/AccordionMenu.js +2 -1
  436. package/dist/LayoutMenu/AccordionMenu.js.map +1 -0
  437. package/dist/LayoutMenu/LayoutMenu.d.ts +2 -1
  438. package/dist/LayoutMenu/LayoutMenu.d.ts.map +1 -0
  439. package/dist/LayoutMenu/LayoutMenu.js +2 -1
  440. package/dist/LayoutMenu/LayoutMenu.js.map +1 -0
  441. package/dist/LayoutMenu/LayoutMenuSection.js +2 -1
  442. package/dist/LayoutMenu/LayoutMenuSection.js.map +1 -0
  443. package/dist/LayoutMenu/SectionItemLink.d.ts +2 -1
  444. package/dist/LayoutMenu/SectionItemLink.d.ts.map +1 -0
  445. package/dist/LayoutMenu/SectionItemLink.js +2 -1
  446. package/dist/LayoutMenu/SectionItemLink.js.map +1 -0
  447. package/dist/LayoutMenu/SelectedSectionItem.d.ts +2 -1
  448. package/dist/LayoutMenu/SelectedSectionItem.d.ts.map +1 -0
  449. package/dist/LayoutMenu/SelectedSectionItem.js +2 -1
  450. package/dist/LayoutMenu/SelectedSectionItem.js.map +1 -0
  451. package/dist/LayoutMenuVariant/AccordionMenu.d.ts +2 -1
  452. package/dist/LayoutMenuVariant/AccordionMenu.d.ts.map +1 -0
  453. package/dist/LayoutMenuVariant/AccordionMenu.js +2 -1
  454. package/dist/LayoutMenuVariant/AccordionMenu.js.map +1 -0
  455. package/dist/LayoutMenuVariant/LayoutMenu.d.ts +2 -1
  456. package/dist/LayoutMenuVariant/LayoutMenu.d.ts.map +1 -0
  457. package/dist/LayoutMenuVariant/LayoutMenu.js +2 -1
  458. package/dist/LayoutMenuVariant/LayoutMenu.js.map +1 -0
  459. package/dist/LayoutMenuVariant/LayoutMenuSection.js +2 -1
  460. package/dist/LayoutMenuVariant/LayoutMenuSection.js.map +1 -0
  461. package/dist/LayoutMenuVariant/SectionItemLink.d.ts +2 -1
  462. package/dist/LayoutMenuVariant/SectionItemLink.d.ts.map +1 -0
  463. package/dist/LayoutMenuVariant/SectionItemLink.js +2 -1
  464. package/dist/LayoutMenuVariant/SectionItemLink.js.map +1 -0
  465. package/dist/LayoutMenuVariant/index.d.ts +2 -1
  466. package/dist/LayoutMenuVariant/index.d.ts.map +1 -0
  467. package/dist/LayoutMenuVariant/index.js +2 -1
  468. package/dist/LayoutMenuVariant/index.js.map +1 -0
  469. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.js +2 -1
  470. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.js.map +1 -0
  471. package/dist/LearningOutcomeAssessmentScores/index.d.ts +2 -1
  472. package/dist/LearningOutcomeAssessmentScores/index.d.ts.map +1 -0
  473. package/dist/LearningOutcomeAssessmentScores/index.js +2 -1
  474. package/dist/LearningOutcomeAssessmentScores/index.js.map +1 -0
  475. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.ts +2 -1
  476. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.ts.map +1 -0
  477. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.js +2 -1
  478. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.js.map +1 -0
  479. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.ts +10 -9
  480. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.ts.map +1 -0
  481. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.js +2 -1
  482. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.js.map +1 -0
  483. package/dist/LearningOutcomeCard/index.d.ts +2 -1
  484. package/dist/LearningOutcomeCard/index.d.ts.map +1 -0
  485. package/dist/LearningOutcomeCard/index.js +2 -1
  486. package/dist/LearningOutcomeCard/index.js.map +1 -0
  487. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.js +2 -1
  488. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.js.map +1 -0
  489. package/dist/LearningOutcomeFlyout/index.d.ts +2 -1
  490. package/dist/LearningOutcomeFlyout/index.d.ts.map +1 -0
  491. package/dist/LearningOutcomeFlyout/index.js +2 -1
  492. package/dist/LearningOutcomeFlyout/index.js.map +1 -0
  493. package/dist/LearningOutcomeFlyout/types.d.ts +2 -1
  494. package/dist/LearningOutcomeFlyout/types.d.ts.map +1 -0
  495. package/dist/LearningOutcomeFlyout/types.js +2 -1
  496. package/dist/LearningOutcomeFlyout/types.js.map +1 -0
  497. package/dist/LearningOutcomePopover/index.d.ts +2 -1
  498. package/dist/LearningOutcomePopover/index.d.ts.map +1 -0
  499. package/dist/LearningOutcomePopover/index.js +2 -1
  500. package/dist/LearningOutcomePopover/index.js.map +1 -0
  501. package/dist/LearningOutcomeTile/Tile.js +2 -1
  502. package/dist/LearningOutcomeTile/Tile.js.map +1 -0
  503. package/dist/LearningOutcomeTile/index.d.ts +2 -1
  504. package/dist/LearningOutcomeTile/index.d.ts.map +1 -0
  505. package/dist/LearningOutcomeTile/index.js +2 -1
  506. package/dist/LearningOutcomeTile/index.js.map +1 -0
  507. package/dist/LearningOutcomeTile/types.d.ts +2 -1
  508. package/dist/LearningOutcomeTile/types.d.ts.map +1 -0
  509. package/dist/LearningOutcomeTile/types.js +2 -1
  510. package/dist/LearningOutcomeTile/types.js.map +1 -0
  511. package/dist/ListSection/index.d.ts +2 -1
  512. package/dist/ListSection/index.d.ts.map +1 -0
  513. package/dist/ListSection/index.js +2 -1
  514. package/dist/ListSection/index.js.map +1 -0
  515. package/dist/Loading/index.d.ts +2 -1
  516. package/dist/Loading/index.d.ts.map +1 -0
  517. package/dist/Loading/index.js +2 -1
  518. package/dist/Loading/index.js.map +1 -0
  519. package/dist/Loading/styles.module.js +2 -1
  520. package/dist/Loading/styles.module.js.map +1 -0
  521. package/dist/LoadingCurriculumCard/index.d.ts +2 -1
  522. package/dist/LoadingCurriculumCard/index.d.ts.map +1 -0
  523. package/dist/LoadingCurriculumCard/index.js +2 -1
  524. package/dist/LoadingCurriculumCard/index.js.map +1 -0
  525. package/dist/Logos/LogoCodecademy/index.d.ts +2 -1
  526. package/dist/Logos/LogoCodecademy/index.d.ts.map +1 -0
  527. package/dist/Logos/LogoCodecademy/index.js +2 -1
  528. package/dist/Logos/LogoCodecademy/index.js.map +1 -0
  529. package/dist/Logos/LogoCodecademyMini/index.d.ts +2 -1
  530. package/dist/Logos/LogoCodecademyMini/index.d.ts.map +1 -0
  531. package/dist/Logos/LogoCodecademyMini/index.js +2 -1
  532. package/dist/Logos/LogoCodecademyMini/index.js.map +1 -0
  533. package/dist/Logos/LogoCodecademyPro/index.d.ts +2 -1
  534. package/dist/Logos/LogoCodecademyPro/index.d.ts.map +1 -0
  535. package/dist/Logos/LogoCodecademyPro/index.js +2 -1
  536. package/dist/Logos/LogoCodecademyPro/index.js.map +1 -0
  537. package/dist/Logos/LogoCodecademyTeams/index.d.ts +2 -1
  538. package/dist/Logos/LogoCodecademyTeams/index.d.ts.map +1 -0
  539. package/dist/Logos/LogoCodecademyTeams/index.js +2 -1
  540. package/dist/Logos/LogoCodecademyTeams/index.js.map +1 -0
  541. package/dist/Logos/LogoFromSkillsoft/index.d.ts +2 -1
  542. package/dist/Logos/LogoFromSkillsoft/index.d.ts.map +1 -0
  543. package/dist/Logos/LogoFromSkillsoft/index.js +2 -1
  544. package/dist/Logos/LogoFromSkillsoft/index.js.map +1 -0
  545. package/dist/Logos/LogoLXStudio/index.d.ts +2 -1
  546. package/dist/Logos/LogoLXStudio/index.d.ts.map +1 -0
  547. package/dist/Logos/LogoLXStudio/index.js +2 -1
  548. package/dist/Logos/LogoLXStudio/index.js.map +1 -0
  549. package/dist/Logos/ProLabel/ProLabelCutout/index.js +2 -1
  550. package/dist/Logos/ProLabel/ProLabelCutout/index.js.map +1 -0
  551. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.js +2 -1
  552. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.js.map +1 -0
  553. package/dist/Logos/ProLabel/index.d.ts +2 -1
  554. package/dist/Logos/ProLabel/index.d.ts.map +1 -0
  555. package/dist/Logos/ProLabel/index.js +2 -1
  556. package/dist/Logos/ProLabel/index.js.map +1 -0
  557. package/dist/Logos/shared.d.ts +2 -1
  558. package/dist/Logos/shared.d.ts.map +1 -0
  559. package/dist/Logos/shared.js +2 -1
  560. package/dist/Logos/shared.js.map +1 -0
  561. package/dist/MarketingToaster/index.d.ts +2 -1
  562. package/dist/MarketingToaster/index.d.ts.map +1 -0
  563. package/dist/MarketingToaster/index.js +2 -1
  564. package/dist/MarketingToaster/index.js.map +1 -0
  565. package/dist/NotFoundContent/404.js +2 -1
  566. package/dist/NotFoundContent/404.js.map +1 -0
  567. package/dist/NotFoundContent/index.d.ts +2 -1
  568. package/dist/NotFoundContent/index.d.ts.map +1 -0
  569. package/dist/NotFoundContent/index.js +2 -1
  570. package/dist/NotFoundContent/index.js.map +1 -0
  571. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.js +2 -1
  572. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.js.map +1 -0
  573. package/dist/NotificationList/EmptyNotification/index.js +2 -1
  574. package/dist/NotificationList/EmptyNotification/index.js.map +1 -0
  575. package/dist/NotificationList/NotificationItem.d.ts +2 -1
  576. package/dist/NotificationList/NotificationItem.d.ts.map +1 -0
  577. package/dist/NotificationList/NotificationItem.js +2 -1
  578. package/dist/NotificationList/NotificationItem.js.map +1 -0
  579. package/dist/NotificationList/index.d.ts +2 -1
  580. package/dist/NotificationList/index.d.ts.map +1 -0
  581. package/dist/NotificationList/index.js +2 -1
  582. package/dist/NotificationList/index.js.map +1 -0
  583. package/dist/NotificationList/typings.d.ts +2 -1
  584. package/dist/NotificationList/typings.d.ts.map +1 -0
  585. package/dist/Notifications/NotificationBell.js +2 -1
  586. package/dist/Notifications/NotificationBell.js.map +1 -0
  587. package/dist/Notifications/NotificationsContents.js +2 -1
  588. package/dist/Notifications/NotificationsContents.js.map +1 -0
  589. package/dist/Notifications/NotificationsDropdown.js +2 -1
  590. package/dist/Notifications/NotificationsDropdown.js.map +1 -0
  591. package/dist/Notifications/constants.js +2 -1
  592. package/dist/Notifications/constants.js.map +1 -0
  593. package/dist/Notifications/elements.js +2 -1
  594. package/dist/Notifications/elements.js.map +1 -0
  595. package/dist/Notifications/types.d.ts +2 -1
  596. package/dist/Notifications/types.d.ts.map +1 -0
  597. package/dist/Notifications/useHeaderNotifications.js +2 -1
  598. package/dist/Notifications/useHeaderNotifications.js.map +1 -0
  599. package/dist/Notifications/useNotificationButtons.js +2 -1
  600. package/dist/Notifications/useNotificationButtons.js.map +1 -0
  601. package/dist/PageAlerts/PageAlerts.d.ts +6 -5
  602. package/dist/PageAlerts/PageAlerts.d.ts.map +1 -0
  603. package/dist/PageAlerts/PageAlerts.js +2 -1
  604. package/dist/PageAlerts/PageAlerts.js.map +1 -0
  605. package/dist/PageAlerts/PageAlertsProvider.d.ts +2 -1
  606. package/dist/PageAlerts/PageAlertsProvider.d.ts.map +1 -0
  607. package/dist/PageAlerts/PageAlertsProvider.js +2 -1
  608. package/dist/PageAlerts/PageAlertsProvider.js.map +1 -0
  609. package/dist/PageAlerts/types.d.ts +2 -1
  610. package/dist/PageAlerts/types.d.ts.map +1 -0
  611. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.ts +2 -1
  612. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.ts.map +1 -0
  613. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.js +2 -1
  614. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.js.map +1 -0
  615. package/dist/PageSection/index.d.ts +2 -1
  616. package/dist/PageSection/index.d.ts.map +1 -0
  617. package/dist/PageSection/index.js +2 -1
  618. package/dist/PageSection/index.js.map +1 -0
  619. package/dist/PastDue/PastDueModalContents/index.d.ts +2 -1
  620. package/dist/PastDue/PastDueModalContents/index.d.ts.map +1 -0
  621. package/dist/PastDue/PastDueModalContents/index.js +2 -1
  622. package/dist/PastDue/PastDueModalContents/index.js.map +1 -0
  623. package/dist/PastDue/pastDueMessages.d.ts +2 -1
  624. package/dist/PastDue/pastDueMessages.d.ts.map +1 -0
  625. package/dist/PastDue/pastDueMessages.js +2 -1
  626. package/dist/PastDue/pastDueMessages.js.map +1 -0
  627. package/dist/PausableImage/BaseImage/index.js +2 -1
  628. package/dist/PausableImage/BaseImage/index.js.map +1 -0
  629. package/dist/PausableImage/index.d.ts +2 -1
  630. package/dist/PausableImage/index.d.ts.map +1 -0
  631. package/dist/PausableImage/index.js +2 -1
  632. package/dist/PausableImage/index.js.map +1 -0
  633. package/dist/PlanCard/PlanCardBanner.d.ts +2 -1
  634. package/dist/PlanCard/PlanCardBanner.d.ts.map +1 -0
  635. package/dist/PlanCard/PlanCardBanner.js +2 -1
  636. package/dist/PlanCard/PlanCardBanner.js.map +1 -0
  637. package/dist/PlanCard/PlanFeature.js +2 -1
  638. package/dist/PlanCard/PlanFeature.js.map +1 -0
  639. package/dist/PlanCard/PopularBadge.js +2 -1
  640. package/dist/PlanCard/PopularBadge.js.map +1 -0
  641. package/dist/PlanCard/PricingAmount.js +2 -1
  642. package/dist/PlanCard/PricingAmount.js.map +1 -0
  643. package/dist/PlanCard/RecommendedBadge.js +2 -1
  644. package/dist/PlanCard/RecommendedBadge.js.map +1 -0
  645. package/dist/PlanCard/consts.js +2 -1
  646. package/dist/PlanCard/consts.js.map +1 -0
  647. package/dist/PlanCard/index.d.ts +2 -1
  648. package/dist/PlanCard/index.d.ts.map +1 -0
  649. package/dist/PlanCard/index.js +2 -1
  650. package/dist/PlanCard/index.js.map +1 -0
  651. package/dist/PlanCard/types.d.ts +2 -1
  652. package/dist/PlanCard/types.d.ts.map +1 -0
  653. package/dist/PlanCard/types.js +2 -1
  654. package/dist/PlanCard/types.js.map +1 -0
  655. package/dist/PlanCardTeams/consts.js +2 -1
  656. package/dist/PlanCardTeams/consts.js.map +1 -0
  657. package/dist/PlanCardTeams/index.d.ts +2 -1
  658. package/dist/PlanCardTeams/index.d.ts.map +1 -0
  659. package/dist/PlanCardTeams/index.js +2 -1
  660. package/dist/PlanCardTeams/index.js.map +1 -0
  661. package/dist/PricingSection/ConditionalColorMode.js +2 -1
  662. package/dist/PricingSection/ConditionalColorMode.js.map +1 -0
  663. package/dist/PricingSection/PricingCard/PricingAmount.js +2 -1
  664. package/dist/PricingSection/PricingCard/PricingAmount.js.map +1 -0
  665. package/dist/PricingSection/PricingCard/RecommendedBadge.js +2 -1
  666. package/dist/PricingSection/PricingCard/RecommendedBadge.js.map +1 -0
  667. package/dist/PricingSection/PricingCard/index.js +2 -1
  668. package/dist/PricingSection/PricingCard/index.js.map +1 -0
  669. package/dist/PricingSection/PricingCard/types.d.ts +2 -1
  670. package/dist/PricingSection/PricingCard/types.d.ts.map +1 -0
  671. package/dist/PricingSection/PricingCard/types.js +2 -1
  672. package/dist/PricingSection/PricingCard/types.js.map +1 -0
  673. package/dist/PricingSection/ProductCTA.js +2 -1
  674. package/dist/PricingSection/ProductCTA.js.map +1 -0
  675. package/dist/PricingSection/Products.js +2 -1
  676. package/dist/PricingSection/Products.js.map +1 -0
  677. package/dist/PricingSection/config.js +2 -1
  678. package/dist/PricingSection/config.js.map +1 -0
  679. package/dist/PricingSection/index.d.ts +2 -1
  680. package/dist/PricingSection/index.d.ts.map +1 -0
  681. package/dist/PricingSection/index.js +2 -1
  682. package/dist/PricingSection/index.js.map +1 -0
  683. package/dist/PricingSection/types.d.ts +2 -1
  684. package/dist/PricingSection/types.d.ts.map +1 -0
  685. package/dist/PricingSection/types.js +2 -1
  686. package/dist/PricingSection/types.js.map +1 -0
  687. package/dist/ProLogoAlt/index.d.ts +2 -1
  688. package/dist/ProLogoAlt/index.d.ts.map +1 -0
  689. package/dist/ProLogoAlt/index.js +2 -1
  690. package/dist/ProLogoAlt/index.js.map +1 -0
  691. package/dist/ProductFeatureShowcase/index.d.ts +2 -1
  692. package/dist/ProductFeatureShowcase/index.d.ts.map +1 -0
  693. package/dist/ProductFeatureShowcase/index.js +2 -1
  694. package/dist/ProductFeatureShowcase/index.js.map +1 -0
  695. package/dist/QuizScore/index.d.ts +2 -1
  696. package/dist/QuizScore/index.d.ts.map +1 -0
  697. package/dist/QuizScore/index.js +2 -1
  698. package/dist/QuizScore/index.js.map +1 -0
  699. package/dist/RatingsBar/index.d.ts +2 -1
  700. package/dist/RatingsBar/index.d.ts.map +1 -0
  701. package/dist/RatingsBar/index.js +2 -1
  702. package/dist/RatingsBar/index.js.map +1 -0
  703. package/dist/Recurly/context/NoProvider.js +2 -1
  704. package/dist/Recurly/context/NoProvider.js.map +1 -0
  705. package/dist/Recurly/context/elements/index.d.ts +4 -3
  706. package/dist/Recurly/context/elements/index.d.ts.map +1 -0
  707. package/dist/Recurly/context/elements/index.js +2 -1
  708. package/dist/Recurly/context/elements/index.js.map +1 -0
  709. package/dist/Recurly/context/recurly/index.d.ts +4 -3
  710. package/dist/Recurly/context/recurly/index.d.ts.map +1 -0
  711. package/dist/Recurly/context/recurly/index.js +2 -1
  712. package/dist/Recurly/context/recurly/index.js.map +1 -0
  713. package/dist/Recurly/context/recurly/loadRecurly.d.ts +2 -1
  714. package/dist/Recurly/context/recurly/loadRecurly.d.ts.map +1 -0
  715. package/dist/Recurly/context/recurly/loadRecurly.js +2 -1
  716. package/dist/Recurly/context/recurly/loadRecurly.js.map +1 -0
  717. package/dist/Recurly/context/recurly/w.js +2 -1
  718. package/dist/Recurly/context/recurly/w.js.map +1 -0
  719. package/dist/Recurly/fields/RecurlyField.d.ts +4 -3
  720. package/dist/Recurly/fields/RecurlyField.d.ts.map +1 -0
  721. package/dist/Recurly/fields/RecurlyField.js +2 -1
  722. package/dist/Recurly/fields/RecurlyField.js.map +1 -0
  723. package/dist/Recurly/fields/elements.d.ts +7 -6
  724. package/dist/Recurly/fields/elements.d.ts.map +1 -0
  725. package/dist/Recurly/fields/elements.js +2 -1
  726. package/dist/Recurly/fields/elements.js.map +1 -0
  727. package/dist/ResourceCard/index.d.ts +2 -1
  728. package/dist/ResourceCard/index.d.ts.map +1 -0
  729. package/dist/ResourceCard/index.js +2 -1
  730. package/dist/ResourceCard/index.js.map +1 -0
  731. package/dist/ScoreSummary/SubScores.d.ts +2 -1
  732. package/dist/ScoreSummary/SubScores.d.ts.map +1 -0
  733. package/dist/ScoreSummary/SubScores.js +2 -1
  734. package/dist/ScoreSummary/SubScores.js.map +1 -0
  735. package/dist/ScoreSummary/helpers.js +2 -1
  736. package/dist/ScoreSummary/helpers.js.map +1 -0
  737. package/dist/ScoreSummary/index.d.ts +2 -1
  738. package/dist/ScoreSummary/index.d.ts.map +1 -0
  739. package/dist/ScoreSummary/index.js +2 -1
  740. package/dist/ScoreSummary/index.js.map +1 -0
  741. package/dist/ScoreSummary/types.d.ts +2 -1
  742. package/dist/ScoreSummary/types.d.ts.map +1 -0
  743. package/dist/SkillPathCard/index.d.ts +2 -1
  744. package/dist/SkillPathCard/index.d.ts.map +1 -0
  745. package/dist/SkillPathCard/index.js +2 -1
  746. package/dist/SkillPathCard/index.js.map +1 -0
  747. package/dist/SocialMediaSharing/SocialShareIconLink.d.ts +2 -1
  748. package/dist/SocialMediaSharing/SocialShareIconLink.d.ts.map +1 -0
  749. package/dist/SocialMediaSharing/SocialShareIconLink.js +2 -1
  750. package/dist/SocialMediaSharing/SocialShareIconLink.js.map +1 -0
  751. package/dist/SocialMediaSharing/index.d.ts +2 -1
  752. package/dist/SocialMediaSharing/index.d.ts.map +1 -0
  753. package/dist/SocialMediaSharing/index.js +2 -1
  754. package/dist/SocialMediaSharing/index.js.map +1 -0
  755. package/dist/SocialMediaSharingDropdown/index.d.ts +2 -1
  756. package/dist/SocialMediaSharingDropdown/index.d.ts.map +1 -0
  757. package/dist/SocialMediaSharingDropdown/index.js +2 -1
  758. package/dist/SocialMediaSharingDropdown/index.js.map +1 -0
  759. package/dist/Testimonial/index.d.ts +2 -1
  760. package/dist/Testimonial/index.d.ts.map +1 -0
  761. package/dist/Testimonial/index.js +2 -1
  762. package/dist/Testimonial/index.js.map +1 -0
  763. package/dist/assets/navyQuotes.js +2 -1
  764. package/dist/assets/navyQuotes.js.map +1 -0
  765. package/dist/lib/breakpointHooks/index.d.ts +2 -1
  766. package/dist/lib/breakpointHooks/index.d.ts.map +1 -0
  767. package/dist/lib/breakpointHooks/index.js +2 -1
  768. package/dist/lib/breakpointHooks/index.js.map +1 -0
  769. package/dist/lib/catalogList/index.js +2 -24
  770. package/dist/lib/catalogList/index.js.map +1 -0
  771. package/dist/lib/resourcesList/index.js +2 -1
  772. package/dist/lib/resourcesList/index.js.map +1 -0
  773. package/dist/remoteAssets/components.js +2 -1
  774. package/dist/remoteAssets/components.js.map +1 -0
  775. package/package.json +292 -364
  776. package/dist/AbbreviatedCommunityEventCard/index.cjs +0 -89
  777. package/dist/AbbreviatedCommunityEventCard/index.d.cts +0 -11
  778. package/dist/AppBar/AppBarSection.cjs +0 -40
  779. package/dist/AppBar/AppBarSection.d.cts +0 -15
  780. package/dist/AppBar/index.cjs +0 -22
  781. package/dist/AppBar/index.d.cts +0 -13
  782. package/dist/AppBarDeprecated/AppBarSectionDeprecated.cjs +0 -26
  783. package/dist/AppBarDeprecated/AppBarSectionDeprecated.d.cts +0 -18
  784. package/dist/AppBarDeprecated/index.cjs +0 -27
  785. package/dist/AppBarDeprecated/index.d.cts +0 -18
  786. package/dist/AppBarDeprecated/styles/index.module.cjs +0 -5
  787. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner.cjs +0 -134
  788. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/NavPanels.cjs +0 -300
  789. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts.cjs +0 -274
  790. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.cjs +0 -110
  791. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.d.cts +0 -8
  792. package/dist/AppHeader/AppHeaderElements/AppHeaderDietCard/index.cjs +0 -114
  793. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.cjs +0 -97
  794. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdown/index.d.cts +0 -16
  795. package/dist/AppHeader/AppHeaderElements/AppHeaderDropdownProvider/index.cjs +0 -36
  796. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.cjs +0 -61
  797. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.cjs +0 -59
  798. package/dist/AppHeader/AppHeaderElements/AppHeaderLink/index.d.cts +0 -56
  799. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/elements.cjs +0 -34
  800. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.cjs +0 -44
  801. package/dist/AppHeader/AppHeaderElements/AppHeaderListItem/index.cjs +0 -26
  802. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.cjs +0 -53
  803. package/dist/AppHeader/AppHeaderElements/AppHeaderLogo/index.d.cts +0 -10
  804. package/dist/AppHeader/AppHeaderElements/AppHeaderMenuProvider/index.cjs +0 -85
  805. package/dist/AppHeader/AppHeaderElements/AppHeaderNavButton/index.cjs +0 -80
  806. package/dist/AppHeader/AppHeaderElements/AppHeaderProvider/index.cjs +0 -25
  807. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.cjs +0 -118
  808. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.cjs +0 -341
  809. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.cjs +0 -105
  810. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.d.cts +0 -8
  811. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.cjs +0 -18
  812. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.cjs +0 -85
  813. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.cjs +0 -51
  814. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.cjs +0 -105
  815. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.cjs +0 -84
  816. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/elements.cjs +0 -179
  817. package/dist/AppHeader/AppHeaderElements/AppHeaderSection/index.cjs +0 -119
  818. package/dist/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.cjs +0 -55
  819. package/dist/AppHeader/Search/DefaultResults.cjs +0 -105
  820. package/dist/AppHeader/Search/QuizAndHelpCenterLinks.cjs +0 -70
  821. package/dist/AppHeader/Search/SearchButton.cjs +0 -50
  822. package/dist/AppHeader/Search/SearchPane.cjs +0 -482
  823. package/dist/AppHeader/Search/SearchTrackingProvider/index.cjs +0 -32
  824. package/dist/AppHeader/Search/SearchWorker/PromiseLookup.cjs +0 -43
  825. package/dist/AppHeader/Search/SearchWorker/index.cjs +0 -24
  826. package/dist/AppHeader/Search/SearchWorker/index.d.cts +0 -10
  827. package/dist/AppHeader/Search/SearchWorker/src.cjs +0 -159
  828. package/dist/AppHeader/Search/SearchWorker/types.cjs +0 -10
  829. package/dist/AppHeader/Search/SearchWorker/types.d.cts +0 -30
  830. package/dist/AppHeader/Search/SearchWorker/worker.cjs +0 -26
  831. package/dist/AppHeader/Search/consts.cjs +0 -68
  832. package/dist/AppHeader/Search/consts.d.cts +0 -26
  833. package/dist/AppHeader/Search/hooks/useUrlChangeDetection.cjs +0 -17
  834. package/dist/AppHeader/Search/safelyRedirect.cjs +0 -39
  835. package/dist/AppHeader/Search/types.d.cts +0 -14
  836. package/dist/AppHeader/Search/useHeaderSearch.cjs +0 -39
  837. package/dist/AppHeader/index.cjs +0 -97
  838. package/dist/AppHeader/index.d.cts +0 -28
  839. package/dist/AppHeader/shared/elements.cjs +0 -172
  840. package/dist/AppHeader/shared/keyboardNav.cjs +0 -67
  841. package/dist/AppHeader/shared/types.cjs +0 -6
  842. package/dist/AppHeader/shared/types.d.cts +0 -111
  843. package/dist/AppHeader/shared/utils.cjs +0 -85
  844. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.cjs +0 -126
  845. package/dist/AppHeaderMobile/AppHeaderMainMenuMobile/index.d.cts +0 -12
  846. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/elements.cjs +0 -29
  847. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.cjs +0 -110
  848. package/dist/AppHeaderMobile/AppHeaderSubMenuMobile/index.d.cts +0 -12
  849. package/dist/AppHeaderMobile/AppHeaderSubMenuTarget/index.cjs +0 -61
  850. package/dist/AppHeaderMobile/index.cjs +0 -194
  851. package/dist/AppHeaderMobile/index.d.cts +0 -24
  852. package/dist/Avatar/index.cjs +0 -52
  853. package/dist/Avatar/index.d.cts +0 -40
  854. package/dist/AvatarChooser/index.cjs +0 -99
  855. package/dist/AvatarChooser/index.d.cts +0 -15
  856. package/dist/BackToTopAnchor/index.cjs +0 -33
  857. package/dist/BackToTopAnchor/index.d.cts +0 -15
  858. package/dist/Banner/CountdownTimer.cjs +0 -111
  859. package/dist/Banner/CountdownTimer.d.cts +0 -10
  860. package/dist/Banner/EnhancedBanner.cjs +0 -142
  861. package/dist/Banner/EnhancedBanner.d.cts +0 -20
  862. package/dist/Banner/index.cjs +0 -83
  863. package/dist/Banner/index.d.cts +0 -24
  864. package/dist/BetaSticker/index.cjs +0 -63
  865. package/dist/BetaSticker/index.d.cts +0 -9
  866. package/dist/CareerPathCard/index.cjs +0 -34
  867. package/dist/CareerPathCard/index.d.cts +0 -26
  868. package/dist/Carousel/elements.cjs +0 -12
  869. package/dist/Carousel/index.cjs +0 -194
  870. package/dist/Carousel/index.d.cts +0 -27
  871. package/dist/CertificationPathCard/index.cjs +0 -41
  872. package/dist/CertificationPathCard/index.d.cts +0 -27
  873. package/dist/CoachingSessionCard/index.cjs +0 -87
  874. package/dist/CoachingSessionCard/index.d.cts +0 -24
  875. package/dist/CommunityEventCard/EventTypeIcon.cjs +0 -61
  876. package/dist/CommunityEventCard/index.cjs +0 -260
  877. package/dist/CommunityEventCard/index.d.cts +0 -31
  878. package/dist/CommunityEventToast/index.cjs +0 -35
  879. package/dist/CommunityEventToast/index.d.cts +0 -9
  880. package/dist/ContentGroupBaseCard/helpers.cjs +0 -15
  881. package/dist/ContentGroupBaseCard/helpers.d.cts +0 -8
  882. package/dist/ContentGroupBaseCard/index.cjs +0 -215
  883. package/dist/ContentGroupBaseCard/index.d.cts +0 -40
  884. package/dist/ContentGroupBaseCard/shared.cjs +0 -80
  885. package/dist/ContentGroupBaseCard/types.cjs +0 -18
  886. package/dist/ContentGroupBaseCard/types.d.cts +0 -13
  887. package/dist/CourseCard/index.cjs +0 -32
  888. package/dist/CourseCard/index.d.cts +0 -25
  889. package/dist/CurriculumCard/BottomTag/index.cjs +0 -30
  890. package/dist/CurriculumCard/BottomTag/index.d.cts +0 -4
  891. package/dist/CurriculumCard/Difficulty/helpers.cjs +0 -17
  892. package/dist/CurriculumCard/Difficulty/helpers.d.cts +0 -13
  893. package/dist/CurriculumCard/Difficulty/index.cjs +0 -45
  894. package/dist/CurriculumCard/Difficulty/index.d.cts +0 -7
  895. package/dist/CurriculumCard/Difficulty/types.cjs +0 -21
  896. package/dist/CurriculumCard/Difficulty/types.d.cts +0 -25
  897. package/dist/CurriculumCard/Footer/index.cjs +0 -49
  898. package/dist/CurriculumCard/Image/index.cjs +0 -50
  899. package/dist/CurriculumCard/Subtitle/helpers.cjs +0 -9
  900. package/dist/CurriculumCard/Subtitle/index.cjs +0 -40
  901. package/dist/CurriculumCard/Subtitle/index.d.cts +0 -10
  902. package/dist/CurriculumCard/index.cjs +0 -122
  903. package/dist/CurriculumCard/index.d.cts +0 -63
  904. package/dist/DropdownButton/DropdownList.cjs +0 -57
  905. package/dist/DropdownButton/DropdownList.d.cts +0 -19
  906. package/dist/DropdownButton/index.cjs +0 -140
  907. package/dist/DropdownButton/index.d.cts +0 -80
  908. package/dist/DropdownButton/useDynamicPopoverPosition.cjs +0 -41
  909. package/dist/EditorialImage/index.cjs +0 -21
  910. package/dist/EditorialImage/index.d.cts +0 -14
  911. package/dist/EditorialImage/styles.module.cjs +0 -5
  912. package/dist/EmptySection/index.cjs +0 -159
  913. package/dist/EmptySection/index.d.cts +0 -32
  914. package/dist/ErrorContents/index.cjs +0 -64
  915. package/dist/ErrorContents/index.d.cts +0 -12
  916. package/dist/FeatureList/index.cjs +0 -41
  917. package/dist/FeatureList/index.d.cts +0 -18
  918. package/dist/GlobalFooter/FooterHeading.cjs +0 -28
  919. package/dist/GlobalFooter/FooterLegal/LegalLinks.cjs +0 -77
  920. package/dist/GlobalFooter/FooterLegal/MadeIn.cjs +0 -79
  921. package/dist/GlobalFooter/FooterLegal/index.cjs +0 -29
  922. package/dist/GlobalFooter/FooterLinks.cjs +0 -51
  923. package/dist/GlobalFooter/FooterNavLinks/CatalogLinks.cjs +0 -297
  924. package/dist/GlobalFooter/FooterNavLinks/CompanyLinks.cjs +0 -254
  925. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferAFriendLinkWithModal.cjs +0 -246
  926. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralFields.cjs +0 -27
  927. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralForm.cjs +0 -72
  928. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/ReferralLinkSocialMediaSharing.cjs +0 -70
  929. package/dist/GlobalFooter/FooterNavLinks/ReferralRock/types.d.cts +0 -7
  930. package/dist/GlobalFooter/FooterNavLinks/SocialMediaLinks.cjs +0 -59
  931. package/dist/GlobalFooter/FooterNavLinks/assets/download-on-the-app-store.cjs +0 -5
  932. package/dist/GlobalFooter/FooterNavLinks/assets/get-it-on-google-play.cjs +0 -5
  933. package/dist/GlobalFooter/FooterNavLinks/index.cjs +0 -44
  934. package/dist/GlobalFooter/index.cjs +0 -38
  935. package/dist/GlobalFooter/index.d.cts +0 -26
  936. package/dist/GlobalFooter/types.d.cts +0 -16
  937. package/dist/GlobalHeader/GlobalHeaderItems.cjs +0 -443
  938. package/dist/GlobalHeader/GlobalHeaderVariants.cjs +0 -351
  939. package/dist/GlobalHeader/context.cjs +0 -82
  940. package/dist/GlobalHeader/index.cjs +0 -171
  941. package/dist/GlobalHeader/index.d.cts +0 -10
  942. package/dist/GlobalHeader/types.d.cts +0 -124
  943. package/dist/GlobalHeader/urlHelpers.cjs +0 -22
  944. package/dist/GlobalPage/index.cjs +0 -45
  945. package/dist/GlobalPage/index.d.cts +0 -51
  946. package/dist/Grid/GridCollapse.cjs +0 -161
  947. package/dist/Grid/GridCollapse.d.cts +0 -49
  948. package/dist/Grid/Subgrid.cjs +0 -41
  949. package/dist/Grid/Subgrid.d.cts +0 -29
  950. package/dist/Grid/getCSSFromColumnCount.cjs +0 -10
  951. package/dist/Grid/getCSSFromColumnCount.d.cts +0 -10
  952. package/dist/Grid/index.cjs +0 -9
  953. package/dist/Grid/index.d.cts +0 -4
  954. package/dist/HeaderHeightArea/index.cjs +0 -38
  955. package/dist/HeaderHeightArea/index.d.cts +0 -13
  956. package/dist/HeaderHeightArea/useIsInHeaderRegion.cjs +0 -17
  957. package/dist/HorizontalScrollMenu/index.cjs +0 -68
  958. package/dist/HorizontalScrollMenu/index.d.cts +0 -10
  959. package/dist/HubCard/index.cjs +0 -40
  960. package/dist/HubCard/index.d.cts +0 -12
  961. package/dist/InfoCard/index.cjs +0 -121
  962. package/dist/InfoCard/index.d.cts +0 -23
  963. package/dist/Konamimojisplosion/Konamimojisplosion.cjs +0 -10
  964. package/dist/Konamimojisplosion/Konamimojisplosion.d.cts +0 -9
  965. package/dist/Konamimojisplosion/index.cjs +0 -5
  966. package/dist/Konamimojisplosion/index.d.cts +0 -3
  967. package/dist/Konamimojisplosion/useKonamimojisplosion.cjs +0 -47
  968. package/dist/Konamimojisplosion/useKonamimojisplosion.d.cts +0 -4
  969. package/dist/LandingPage/CTA.cjs +0 -11
  970. package/dist/LandingPage/Description.cjs +0 -18
  971. package/dist/LandingPage/Description.d.cts +0 -10
  972. package/dist/LandingPage/Feature.cjs +0 -89
  973. package/dist/LandingPage/PageFAQs.cjs +0 -49
  974. package/dist/LandingPage/PageFAQs.d.cts +0 -14
  975. package/dist/LandingPage/PageFeatures.cjs +0 -99
  976. package/dist/LandingPage/PageFeatures.d.cts +0 -20
  977. package/dist/LandingPage/PageFeaturesEnhanced.cjs +0 -152
  978. package/dist/LandingPage/PageFeaturesEnhanced.d.cts +0 -11
  979. package/dist/LandingPage/PageFeaturesWithReferences.cjs +0 -128
  980. package/dist/LandingPage/PageFeaturesWithReferences.d.cts +0 -23
  981. package/dist/LandingPage/PageHero.cjs +0 -20
  982. package/dist/LandingPage/PageHero.d.cts +0 -11
  983. package/dist/LandingPage/PagePrefooter.cjs +0 -66
  984. package/dist/LandingPage/PagePrefooter.d.cts +0 -9
  985. package/dist/LandingPage/PageSingleFeature.cjs +0 -108
  986. package/dist/LandingPage/PageSingleFeature.d.cts +0 -60
  987. package/dist/LandingPage/PageTestimonials.cjs +0 -108
  988. package/dist/LandingPage/PageTestimonials.d.cts +0 -25
  989. package/dist/LandingPage/PageVideoGallery.cjs +0 -70
  990. package/dist/LandingPage/PageVideoGallery.d.cts +0 -15
  991. package/dist/LandingPage/Title.cjs +0 -33
  992. package/dist/LandingPage/Title.d.cts +0 -27
  993. package/dist/LandingPage/TitleWithEyebrow.cjs +0 -39
  994. package/dist/LandingPage/TitleWithEyebrow.d.cts +0 -15
  995. package/dist/LandingPage/index.cjs +0 -29
  996. package/dist/LandingPage/index.d.cts +0 -15
  997. package/dist/LandingPage/types.d.cts +0 -31
  998. package/dist/LayoutMenu/AccordionMenu.cjs +0 -64
  999. package/dist/LayoutMenu/AccordionMenu.d.cts +0 -18
  1000. package/dist/LayoutMenu/LayoutMenu.cjs +0 -107
  1001. package/dist/LayoutMenu/LayoutMenu.d.cts +0 -48
  1002. package/dist/LayoutMenu/LayoutMenuSection.cjs +0 -38
  1003. package/dist/LayoutMenu/SectionItemLink.cjs +0 -19
  1004. package/dist/LayoutMenu/SectionItemLink.d.cts +0 -11
  1005. package/dist/LayoutMenu/SelectedSectionItem.cjs +0 -22
  1006. package/dist/LayoutMenu/SelectedSectionItem.d.cts +0 -7
  1007. package/dist/LayoutMenu/index.cjs +0 -7
  1008. package/dist/LayoutMenu/index.d.cts +0 -4
  1009. package/dist/LayoutMenuVariant/AccordionMenu.cjs +0 -76
  1010. package/dist/LayoutMenuVariant/AccordionMenu.d.cts +0 -19
  1011. package/dist/LayoutMenuVariant/LayoutMenu.cjs +0 -88
  1012. package/dist/LayoutMenuVariant/LayoutMenu.d.cts +0 -43
  1013. package/dist/LayoutMenuVariant/LayoutMenuSection.cjs +0 -37
  1014. package/dist/LayoutMenuVariant/SectionItemLink.cjs +0 -19
  1015. package/dist/LayoutMenuVariant/SectionItemLink.d.cts +0 -12
  1016. package/dist/LayoutMenuVariant/index.cjs +0 -19
  1017. package/dist/LayoutMenuVariant/index.d.cts +0 -9
  1018. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.cjs +0 -52
  1019. package/dist/LearningOutcomeAssessmentScores/index.cjs +0 -25
  1020. package/dist/LearningOutcomeAssessmentScores/index.d.cts +0 -10
  1021. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.cjs +0 -50
  1022. package/dist/LearningOutcomeBadges/LearningOutcomeLevelBadge.d.cts +0 -21
  1023. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.cjs +0 -38
  1024. package/dist/LearningOutcomeBadges/LearningOutcomeLowAssessmentBadge.d.cts +0 -18
  1025. package/dist/LearningOutcomeBadges/index.cjs +0 -8
  1026. package/dist/LearningOutcomeBadges/index.d.cts +0 -3
  1027. package/dist/LearningOutcomeCard/index.cjs +0 -167
  1028. package/dist/LearningOutcomeCard/index.d.cts +0 -30
  1029. package/dist/LearningOutcomeFlyout/LearningOutcomeCardList.cjs +0 -41
  1030. package/dist/LearningOutcomeFlyout/index.cjs +0 -316
  1031. package/dist/LearningOutcomeFlyout/index.d.cts +0 -12
  1032. package/dist/LearningOutcomeFlyout/types.cjs +0 -10
  1033. package/dist/LearningOutcomeFlyout/types.d.cts +0 -66
  1034. package/dist/LearningOutcomePopover/index.cjs +0 -117
  1035. package/dist/LearningOutcomePopover/index.d.cts +0 -13
  1036. package/dist/LearningOutcomeTile/Tile.cjs +0 -68
  1037. package/dist/LearningOutcomeTile/index.cjs +0 -96
  1038. package/dist/LearningOutcomeTile/index.d.cts +0 -7
  1039. package/dist/LearningOutcomeTile/types.cjs +0 -11
  1040. package/dist/LearningOutcomeTile/types.d.cts +0 -45
  1041. package/dist/ListSection/index.cjs +0 -56
  1042. package/dist/ListSection/index.d.cts +0 -25
  1043. package/dist/Loading/index.cjs +0 -91
  1044. package/dist/Loading/index.d.cts +0 -9
  1045. package/dist/Loading/styles.module.cjs +0 -5
  1046. package/dist/LoadingCurriculumCard/index.cjs +0 -85
  1047. package/dist/LoadingCurriculumCard/index.d.cts +0 -10
  1048. package/dist/Logos/LogoCodecademy/index.cjs +0 -23
  1049. package/dist/Logos/LogoCodecademy/index.d.cts +0 -6
  1050. package/dist/Logos/LogoCodecademyMini/index.cjs +0 -19
  1051. package/dist/Logos/LogoCodecademyMini/index.d.cts +0 -6
  1052. package/dist/Logos/LogoCodecademyPro/index.cjs +0 -26
  1053. package/dist/Logos/LogoCodecademyPro/index.d.cts +0 -6
  1054. package/dist/Logos/LogoCodecademyTeams/index.cjs +0 -53
  1055. package/dist/Logos/LogoCodecademyTeams/index.d.cts +0 -6
  1056. package/dist/Logos/LogoFromSkillsoft/index.cjs +0 -49
  1057. package/dist/Logos/LogoFromSkillsoft/index.d.cts +0 -7
  1058. package/dist/Logos/LogoLXStudio/index.cjs +0 -38
  1059. package/dist/Logos/LogoLXStudio/index.d.cts +0 -7
  1060. package/dist/Logos/ProLabel/ProLabelCutout/index.cjs +0 -38
  1061. package/dist/Logos/ProLabel/ProLabelCutoutTransparent/index.cjs +0 -39
  1062. package/dist/Logos/ProLabel/index.cjs +0 -27
  1063. package/dist/Logos/ProLabel/index.d.cts +0 -18
  1064. package/dist/Logos/index.cjs +0 -15
  1065. package/dist/Logos/index.d.cts +0 -8
  1066. package/dist/Logos/shared.cjs +0 -14
  1067. package/dist/Logos/shared.d.cts +0 -232
  1068. package/dist/MarketingToaster/index.cjs +0 -50
  1069. package/dist/MarketingToaster/index.d.cts +0 -11
  1070. package/dist/NotFoundContent/404.cjs +0 -5
  1071. package/dist/NotFoundContent/index.cjs +0 -49
  1072. package/dist/NotFoundContent/index.d.cts +0 -11
  1073. package/dist/NotificationList/EmptyNotification/emptyNotificationContents.cjs +0 -34
  1074. package/dist/NotificationList/EmptyNotification/index.cjs +0 -44
  1075. package/dist/NotificationList/NotificationItem.cjs +0 -162
  1076. package/dist/NotificationList/NotificationItem.d.cts +0 -12
  1077. package/dist/NotificationList/index.cjs +0 -45
  1078. package/dist/NotificationList/index.d.cts +0 -13
  1079. package/dist/NotificationList/typings.d.cts +0 -19
  1080. package/dist/Notifications/NotificationBell.cjs +0 -61
  1081. package/dist/Notifications/NotificationsContents.cjs +0 -80
  1082. package/dist/Notifications/NotificationsDropdown.cjs +0 -24
  1083. package/dist/Notifications/constants.cjs +0 -9
  1084. package/dist/Notifications/elements.cjs +0 -23
  1085. package/dist/Notifications/types.d.cts +0 -17
  1086. package/dist/Notifications/useHeaderNotifications.cjs +0 -38
  1087. package/dist/Notifications/useNotificationButtons.cjs +0 -53
  1088. package/dist/PageAlerts/PageAlerts.cjs +0 -69
  1089. package/dist/PageAlerts/PageAlerts.d.cts +0 -16
  1090. package/dist/PageAlerts/PageAlertsProvider.cjs +0 -41
  1091. package/dist/PageAlerts/PageAlertsProvider.d.cts +0 -15
  1092. package/dist/PageAlerts/index.cjs +0 -8
  1093. package/dist/PageAlerts/index.d.cts +0 -4
  1094. package/dist/PageAlerts/types.d.cts +0 -18
  1095. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.cjs +0 -50
  1096. package/dist/PageLayoutWithSidebarMenu/PageLayoutWithSidebarMenu.d.cts +0 -22
  1097. package/dist/PageLayoutWithSidebarMenu/index.cjs +0 -3
  1098. package/dist/PageLayoutWithSidebarMenu/index.d.cts +0 -2
  1099. package/dist/PageSection/index.cjs +0 -65
  1100. package/dist/PageSection/index.d.cts +0 -20
  1101. package/dist/PastDue/PastDueModalContents/index.cjs +0 -28
  1102. package/dist/PastDue/PastDueModalContents/index.d.cts +0 -12
  1103. package/dist/PastDue/index.cjs +0 -5
  1104. package/dist/PastDue/index.d.cts +0 -3
  1105. package/dist/PastDue/pastDueMessages.cjs +0 -55
  1106. package/dist/PastDue/pastDueMessages.d.cts +0 -8
  1107. package/dist/PausableImage/BaseImage/index.cjs +0 -77
  1108. package/dist/PausableImage/index.cjs +0 -32
  1109. package/dist/PausableImage/index.d.cts +0 -16
  1110. package/dist/PlanCard/PlanCardBanner.cjs +0 -30
  1111. package/dist/PlanCard/PlanCardBanner.d.cts +0 -10
  1112. package/dist/PlanCard/PlanFeature.cjs +0 -91
  1113. package/dist/PlanCard/PopularBadge.cjs +0 -20
  1114. package/dist/PlanCard/PricingAmount.cjs +0 -122
  1115. package/dist/PlanCard/RecommendedBadge.cjs +0 -31
  1116. package/dist/PlanCard/consts.cjs +0 -220
  1117. package/dist/PlanCard/index.cjs +0 -341
  1118. package/dist/PlanCard/index.d.cts +0 -22
  1119. package/dist/PlanCard/types.cjs +0 -75
  1120. package/dist/PlanCard/types.d.cts +0 -43
  1121. package/dist/PlanCardTeams/consts.cjs +0 -22
  1122. package/dist/PlanCardTeams/index.cjs +0 -140
  1123. package/dist/PlanCardTeams/index.d.cts +0 -12
  1124. package/dist/PricingSection/ConditionalColorMode.cjs +0 -14
  1125. package/dist/PricingSection/PricingCard/PricingAmount.cjs +0 -122
  1126. package/dist/PricingSection/PricingCard/RecommendedBadge.cjs +0 -30
  1127. package/dist/PricingSection/PricingCard/index.cjs +0 -176
  1128. package/dist/PricingSection/PricingCard/types.cjs +0 -67
  1129. package/dist/PricingSection/PricingCard/types.d.cts +0 -26
  1130. package/dist/PricingSection/ProductCTA.cjs +0 -106
  1131. package/dist/PricingSection/Products.cjs +0 -86
  1132. package/dist/PricingSection/config.cjs +0 -33
  1133. package/dist/PricingSection/index.cjs +0 -36
  1134. package/dist/PricingSection/index.d.cts +0 -22
  1135. package/dist/PricingSection/types.cjs +0 -14
  1136. package/dist/PricingSection/types.d.cts +0 -18
  1137. package/dist/ProLogoAlt/index.cjs +0 -28
  1138. package/dist/ProLogoAlt/index.d.cts +0 -13
  1139. package/dist/ProductFeatureShowcase/index.cjs +0 -108
  1140. package/dist/ProductFeatureShowcase/index.d.cts +0 -19
  1141. package/dist/QuizScore/index.cjs +0 -93
  1142. package/dist/QuizScore/index.d.cts +0 -15
  1143. package/dist/RatingsBar/index.cjs +0 -44
  1144. package/dist/RatingsBar/index.d.cts +0 -16
  1145. package/dist/Recurly/context/NoProvider.cjs +0 -12
  1146. package/dist/Recurly/context/elements/index.cjs +0 -45
  1147. package/dist/Recurly/context/elements/index.d.cts +0 -15
  1148. package/dist/Recurly/context/recurly/index.cjs +0 -49
  1149. package/dist/Recurly/context/recurly/index.d.cts +0 -38
  1150. package/dist/Recurly/context/recurly/loadRecurly.cjs +0 -21
  1151. package/dist/Recurly/context/recurly/loadRecurly.d.cts +0 -9
  1152. package/dist/Recurly/context/recurly/w.cjs +0 -6
  1153. package/dist/Recurly/fields/RecurlyField.cjs +0 -69
  1154. package/dist/Recurly/fields/RecurlyField.d.cts +0 -18
  1155. package/dist/Recurly/fields/elements.cjs +0 -63
  1156. package/dist/Recurly/fields/elements.d.cts +0 -22
  1157. package/dist/Recurly/index.cjs +0 -13
  1158. package/dist/Recurly/index.d.cts +0 -5
  1159. package/dist/ResourceCard/index.cjs +0 -59
  1160. package/dist/ResourceCard/index.d.cts +0 -19
  1161. package/dist/ScoreSummary/SubScores.cjs +0 -136
  1162. package/dist/ScoreSummary/SubScores.d.cts +0 -40
  1163. package/dist/ScoreSummary/helpers.cjs +0 -20
  1164. package/dist/ScoreSummary/index.cjs +0 -98
  1165. package/dist/ScoreSummary/index.d.cts +0 -25
  1166. package/dist/ScoreSummary/types.d.cts +0 -313
  1167. package/dist/SkillPathCard/index.cjs +0 -34
  1168. package/dist/SkillPathCard/index.d.cts +0 -25
  1169. package/dist/SocialMediaSharing/SocialShareIconLink.cjs +0 -43
  1170. package/dist/SocialMediaSharing/SocialShareIconLink.d.cts +0 -9
  1171. package/dist/SocialMediaSharing/index.cjs +0 -86
  1172. package/dist/SocialMediaSharing/index.d.cts +0 -64
  1173. package/dist/SocialMediaSharingDropdown/index.cjs +0 -98
  1174. package/dist/SocialMediaSharingDropdown/index.d.cts +0 -19
  1175. package/dist/Testimonial/index.cjs +0 -141
  1176. package/dist/Testimonial/index.d.cts +0 -53
  1177. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs +0 -14
  1178. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.cjs +0 -16
  1179. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.cjs +0 -11
  1180. package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.cjs +0 -18
  1181. package/dist/_virtual/rolldown_runtime.cjs +0 -43
  1182. package/dist/assets/navyQuotes.cjs +0 -5
  1183. package/dist/index.cjs +0 -279
  1184. package/dist/index.d.cts +0 -122
  1185. package/dist/lib/breakpointHooks/index.cjs +0 -64
  1186. package/dist/lib/breakpointHooks/index.d.cts +0 -46
  1187. package/dist/lib/catalogList/index.cjs +0 -52
  1188. package/dist/lib/resourcesList/index.cjs +0 -68
  1189. package/dist/remoteAssets/components.cjs +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchPane.js","names":["Input","loader: SearchAsYouTypeLoader","SearchPane: React.FC<SearchPaneProps>","theme","React","handleChange: React.ChangeEventHandler<HTMLInputElement>","handleSubmit: React.FormEventHandler","searchEventNoResultDelay: NodeJS.Timeout"],"sources":["../../../src/AppHeader/Search/SearchPane.tsx"],"sourcesContent":["import {\n Badge,\n Box,\n ContentContainer,\n FlexBox,\n FocusTrap,\n IconButton,\n Menu,\n MenuItem,\n Shimmer,\n StrokeButton,\n Text,\n} from '@codecademy/gamut';\nimport { MiniDeleteIcon, SearchIcon } from '@codecademy/gamut-icons';\nimport { css, theme, useCurrentMode } from '@codecademy/gamut-styles';\nimport { useTheme } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { useOnEscHandler } from '../shared';\nimport { searchPlaceholder } from './consts';\nimport { PopularContent, PopularSearches } from './DefaultResults';\nimport { useUrlChangeDetection } from './hooks/useUrlChangeDetection';\nimport { QuizAndHelpCenterLinks } from './QuizAndHelpCenterLinks';\nimport { safelyRedirect } from './safelyRedirect';\nimport { useSearchTrackingContext } from './SearchTrackingProvider';\nimport { searchWorker } from './SearchWorker';\nimport type {\n AutocompleteSuggestion,\n SearchAsYouTypeResults,\n} from './SearchWorker/types';\nimport { SearchPaneProps } from './types';\n\nconst Form = Box.withComponent('form');\nconst Input = Box.withComponent('input');\n\nconst QueryContainer = styled(ContentContainer)(\n css({\n display: 'flex',\n width: '100%',\n pt: 16,\n pb: { _: 0, md: 24 },\n px: { _: 24 },\n })\n);\n\nconst SuggestionContainer = styled(ContentContainer)(\n css({\n pt: 16,\n pb: { _: 0, md: 24 },\n px: { _: 24 },\n })\n);\n\nconst StyledInput = styled(Input)(\n css({\n outline: `none`,\n '&::placeholder': {\n textColor: theme.colors['text-secondary'] as never,\n },\n })\n);\n\nconst InlineResultLi = styled(MenuItem)(\n css({\n pl: 0,\n py: 8,\n fontSize: 16,\n '&:focus-visible:after': {\n left: -4,\n },\n })\n);\n\nconst InlineLoaderLi = styled.li(\n css({\n listStyleType: 'none',\n display: 'flex',\n gap: 12,\n alignItems: 'center',\n })\n);\n\nexport const SemiboldSearchIcon = styled(SearchIcon)`\n overflow: visible !important;\n circle,\n path {\n stroke-width: 2px;\n }\n rect {\n transform: translate(-2px, -2px);\n height: calc(100% + 4px);\n width: calc(100% + 4px);\n }\n`;\n\nconst EllipsisBox = styled(Box)`\n text-overflow: ellipsis;\n`;\n\nconst HighlightedText = ({\n suggestion: { title, segments },\n}: {\n suggestion: AutocompleteSuggestion;\n}) => {\n const mode = useCurrentMode();\n const highlightColor = mode === 'dark' ? 'hyper' : 'yellow';\n\n return (\n <FlexBox>\n <EllipsisBox\n maxWidth=\"calc(100vw - 128px)\"\n whiteSpace=\"pre\"\n aria-hidden\n overflow=\"hidden\"\n >\n {segments.map((segment, i) => (\n <Text\n key={`${title}:${i.toString()}`}\n lineHeight=\"title\"\n {...(segment.highlight\n ? { bg: highlightColor, fontWeight: 'bold' }\n : {})}\n >\n {segment.value}\n </Text>\n ))}\n </EllipsisBox>\n <Text screenreader>{title}</Text>\n </FlexBox>\n );\n};\n\ntype SearchAsYouTypeLoader = {\n shimmerRows: {\n key: string;\n shimmers: {\n key: string;\n width: number;\n }[];\n }[];\n};\n\nlet loaderKey = 0;\nfunction rndLoader() {\n // eslint-disable-next-line no-plusplus\n const key = loaderKey++;\n const loader: SearchAsYouTypeLoader = { shimmerRows: [] };\n for (let i = 0; i < 5; i++) {\n const row = {\n key: `${key}:${i}`,\n shimmers: [] as { key: string; width: number }[],\n };\n const words = Math.ceil(Math.random() * 3);\n for (let j = 0; j < words; j++) {\n const width = 12 + Math.round(Math.random() * 96);\n row.shimmers.push({\n key: `${key}:${j}`,\n width,\n });\n }\n loader.shimmerRows.push(row);\n }\n return loader;\n}\n\nexport const SearchPane: React.FC<SearchPaneProps> = ({\n onSearch,\n onTrackingClick,\n searchButtonRef,\n toggleSearch,\n onSearchAsYouType,\n}) => {\n const theme = useTheme();\n const [value, setValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const [autoCompleteSuggestions, setAutoCompleteSuggestions] = useState<\n AutocompleteSuggestion[]\n >([]);\n const [searchAsYouTypeResults, setSearchAsYouTypeResults] =\n useState<SearchAsYouTypeResults | null>(null);\n\n const [searchResultClicked, setSearchResultClicked] = useState(false);\n\n const { setOnSearchAsYouTypeParams } = useSearchTrackingContext();\n\n const searchAsYouTypeLoader = React.useMemo(\n () => (searchAsYouTypeResults === null ? rndLoader() : null),\n [searchAsYouTypeResults]\n );\n\n const valueTrimmed = value.trim();\n\n const hasSearchEventAndResultsWithoutClick =\n onSearchAsYouType && searchAsYouTypeResults && !searchResultClicked;\n\n const closeSearch = async () => {\n // track search event when user made a search and then closed search pane\n if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {\n const { query, searchId, resultsCount, queryLoadTime } =\n searchAsYouTypeResults;\n onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);\n }\n\n await toggleSearch();\n // adds a little delay between closing the search pane and focusing on the button\n // to prevent the search pane from immediately opening again\n setTimeout(() => {\n if (searchButtonRef && searchButtonRef?.current) {\n searchButtonRef.current?.focus();\n }\n }, 10);\n };\n\n const onKeyDown = useOnEscHandler(closeSearch);\n\n const onMouseDownOutside = ({ target }: MouseEvent) => {\n const handleOutsideClick = () => {\n if (\n !document\n .querySelector('[data-testid=\"header-search-dropdown\"]')\n ?.contains(target as HTMLElement) &&\n target !== searchButtonRef?.current\n ) {\n closeSearch();\n }\n\n target?.removeEventListener('mouseup', handleOutsideClick);\n };\n\n target?.addEventListener('mouseup', handleOutsideClick);\n };\n\n const navigateToSearch = (searchTerm: string, fromPrevSearch?: string) => {\n onSearch(searchTerm, fromPrevSearch);\n };\n\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (evt) => {\n setValue(evt.target.value);\n // reset to false when the search query changes\n setSearchResultClicked(false);\n };\n\n const handleSubmit: React.FormEventHandler = (event) => {\n event.preventDefault();\n\n // track search event when the user submits the form to capture complete query\n if (hasSearchEventAndResultsWithoutClick) {\n const { query, searchId, resultsCount, queryLoadTime } =\n searchAsYouTypeResults;\n onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);\n }\n\n navigateToSearch(value, searchAsYouTypeResults?.searchId);\n };\n\n const clearInput = () => {\n // track search event before user clears input\n if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {\n const { query, searchId, resultsCount, queryLoadTime } =\n searchAsYouTypeResults;\n onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);\n }\n\n setValue('');\n setAutoCompleteSuggestions([]);\n // reset the context with empty values\n setOnSearchAsYouTypeParams({\n query: '',\n searchId: '',\n resultsCount: 0,\n queryLoadTime: 0,\n });\n };\n\n // when the current URL changes, we want to close the search pane if it's open\n // and track search event if user made a search\n useUrlChangeDetection({\n onUrlChange: () => {\n if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {\n const { query, searchId, resultsCount, queryLoadTime } =\n searchAsYouTypeResults;\n onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);\n }\n\n toggleSearch();\n },\n });\n\n useEffect(() => {\n // don't track if a result was clicked or if we don't have search results\n if (\n searchResultClicked ||\n !onSearchAsYouType ||\n !searchAsYouTypeResults ||\n !valueTrimmed.length\n )\n // eslint-disable-next-line no-useless-return\n return;\n }, [\n searchResultClicked,\n searchAsYouTypeResults,\n valueTrimmed,\n onSearchAsYouType,\n ]);\n\n useEffect(() => {\n inputRef.current?.focus();\n searchWorker.init();\n }, []);\n\n useEffect(() => {\n if (!valueTrimmed.length) {\n setSearchAsYouTypeResults(null);\n setAutoCompleteSuggestions([]);\n setOnSearchAsYouTypeParams({\n query: '',\n searchId: '',\n resultsCount: 0,\n queryLoadTime: 0,\n });\n return;\n }\n\n let cancel = false;\n let clearAutocomplete = true;\n let clearSearchAsYouType = true;\n\n let searchEventNoResultDelay: NodeJS.Timeout;\n\n const loaderDelay = setTimeout(() => {\n /*\n * Wait 10 milliseconds to get a response for worker before showing loaders.\n * This prevents flickering loaders on quick or cached results.\n */\n if (cancel) return;\n if (clearAutocomplete) setAutoCompleteSuggestions([]);\n if (clearSearchAsYouType) setSearchAsYouTypeResults(null);\n }, 10);\n\n searchWorker.autocomplete(valueTrimmed).then((suggestions) => {\n clearAutocomplete = false;\n\n if (cancel) return; // text has changed since this request was made\n\n setAutoCompleteSuggestions(suggestions);\n });\n\n searchWorker.searchAsYouType(valueTrimmed).then((results) => {\n clearSearchAsYouType = false;\n\n if (cancel) return; // text has changed since this request was made\n\n setSearchAsYouTypeResults(results);\n\n setOnSearchAsYouTypeParams({\n query: results.query,\n searchId: results.searchId,\n resultsCount: results.top.length,\n queryLoadTime: results.queryLoadTime,\n });\n\n // track search event with a small delay when there are no results\n if (\n onSearchAsYouType &&\n results.top.length === 0 &&\n !searchResultClicked\n ) {\n const { query, searchId, queryLoadTime } = results;\n searchEventNoResultDelay = setTimeout(() => {\n if (!cancel) {\n onSearchAsYouType(query, searchId, 0, queryLoadTime);\n }\n }, 300);\n }\n });\n\n return () => {\n cancel = true;\n clearTimeout(loaderDelay);\n clearTimeout(searchEventNoResultDelay);\n };\n }, [\n valueTrimmed,\n onSearchAsYouType,\n searchResultClicked,\n setOnSearchAsYouTypeParams,\n ]);\n\n return (\n <>\n <Box\n aria-hidden\n bg=\"shadow-secondary\"\n height=\"100vh\"\n position=\"fixed\"\n // We add 6rem here in case there's some sort of branded banner above search\n // The search area is much taller than 6rem so this is a safe amount of padding\n top={`calc(${theme.elements.headerHeight} + 6rem)`}\n width={1}\n />\n <FocusTrap\n onEscapeKey={closeSearch}\n onClickOutside={onMouseDownOutside}\n allowPageInteraction\n >\n <Box\n bg=\"background\"\n borderColorBottom=\"border-primary\"\n borderColorTop=\"border-tertiary\"\n borderStyle=\"solid\"\n borderWidth=\"2px 0 1px\"\n data-testid=\"header-search-dropdown\"\n position={{ _: 'fixed', md: 'absolute' }}\n width=\"100%\"\n maxHeight={{ _: 'calc(100vh - 63px)', md: 'calc(100vh - 80px)' }}\n overflow=\"auto\"\n zIndex={10} // ensure dropdown is above the page content\n >\n <Box border=\"none\" width=\"auto\">\n <QueryContainer>\n <FlexBox\n alignItems=\"baseline\"\n borderColor=\"gray-600\"\n borderStyleBottom=\"solid\"\n borderWidthBottom=\"1px\"\n width=\"100%\"\n >\n <SearchIcon\n height={{ _: 20, md: 24 }}\n width={{ _: 20, md: 24 }}\n />\n <Form\n action=\"/search\"\n id=\"search-form\"\n ml={8}\n onSubmit={handleSubmit}\n width=\"100%\"\n >\n <StyledInput\n autoFocus\n background=\"none\"\n border=\"none\"\n color=\"text\"\n fontSize={{ _: 20, md: 26 }}\n fontWeight=\"bold\"\n id=\"header-search-bar\"\n name=\"query\"\n onChange={handleChange}\n onKeyDown={(e) => onKeyDown(e)}\n placeholder={searchPlaceholder}\n ref={inputRef}\n type=\"search\"\n value={value}\n width=\"100%\"\n autoComplete=\"off\"\n />\n </Form>\n <IconButton\n icon={MiniDeleteIcon}\n aria-label=\"Clear search\"\n tip=\"Clear search\"\n tipProps={{\n alignment: 'bottom-center',\n placement: 'floating',\n narrow: true,\n zIndex: 2,\n }}\n onClick={clearInput}\n size=\"small\"\n />\n </FlexBox>\n </QueryContainer>\n </Box>\n <SuggestionContainer>\n {valueTrimmed.length > 0 ? (\n <>\n <FlexBox flexDirection=\"column\" as=\"ul\" listStyle=\"none\" p={0}>\n {autoCompleteSuggestions.map((s, i) => (\n <InlineResultLi\n key={s.title}\n tabIndex={0}\n onKeyDown={(evt) => {\n if (evt.key === 'Enter') {\n setSearchResultClicked(true);\n onTrackingClick('autocomplete_result', {\n search_id: searchAsYouTypeResults?.searchId ?? '',\n misc: JSON.stringify({\n position: i,\n }),\n });\n navigateToSearch(\n s.title,\n searchAsYouTypeResults?.searchId\n );\n closeSearch();\n }\n }}\n onClick={() => {\n setSearchResultClicked(true);\n onTrackingClick('autocomplete_result', {\n search_id: searchAsYouTypeResults?.searchId ?? '',\n misc: JSON.stringify({\n position: i,\n }),\n });\n navigateToSearch(\n s.title,\n searchAsYouTypeResults?.searchId\n );\n closeSearch();\n }}\n >\n <SemiboldSearchIcon\n mb={2 as 0}\n size={14}\n strokeWidth={8}\n aria-hidden\n mr={12}\n />\n <HighlightedText suggestion={s} />\n </InlineResultLi>\n ))}\n </FlexBox>\n {(searchAsYouTypeResults === null ||\n searchAsYouTypeResults.top.length > 0) && (\n <>\n <Text as=\"h2\" fontSize={20} mb={16} mt={24}>\n Top results\n </Text>\n <FlexBox\n flexDirection=\"column\"\n as=\"ul\"\n listStyle=\"none\"\n p={0}\n >\n {searchAsYouTypeResults === null\n ? searchAsYouTypeLoader?.shimmerRows.map((r) => (\n <InlineLoaderLi key={r.key}>\n {r.shimmers.map((word) => (\n <Shimmer\n height={30}\n py={8 as 0}\n key={word.key}\n width={word.width}\n />\n ))}\n <Box\n fontFamily=\"accent\"\n textColor=\"text-secondary\"\n fontSize={{ _: 10 as 16 }}\n borderColor=\"border-secondary\"\n border={1}\n borderRadius=\"xl\"\n px={16}\n opacity={0.1}\n >\n &nbsp;\n </Box>\n </InlineLoaderLi>\n ))\n : searchAsYouTypeResults.top.map((s, i) => (\n <InlineResultLi\n key={`${\n searchAsYouTypeResults.query\n }:${i.toString()}`}\n tabIndex={0}\n role=\"link\"\n onKeyDown={(evt) => {\n if (evt.key === 'Enter') {\n setSearchResultClicked(true);\n onTrackingClick('search_as_you_type_result', {\n search_id: searchAsYouTypeResults.searchId,\n slug: s.slug,\n ...(s.contentId\n ? { content_id: s.contentId }\n : {}),\n misc: JSON.stringify({\n position: i,\n }),\n });\n closeSearch();\n safelyRedirect(s.urlPath);\n }\n }}\n onClick={() => {\n setSearchResultClicked(true);\n onTrackingClick('search_as_you_type_result', {\n search_id: searchAsYouTypeResults.searchId,\n slug: s.slug,\n ...(s.contentId\n ? { content_id: s.contentId }\n : {}),\n misc: JSON.stringify({\n position: i,\n }),\n });\n closeSearch();\n safelyRedirect(s.urlPath);\n }}\n >\n <HighlightedText suggestion={s} />\n <Badge size=\"sm\" variant=\"tertiary\" ml={12}>\n {s.type}\n </Badge>\n </InlineResultLi>\n ))}\n </FlexBox>\n </>\n )}\n {searchAsYouTypeResults?.top.length === 0 && (\n <>\n <Box fontSize={{ _: 20, sm: 26 }} mt={0} mb={48}>\n {`We couldn't find a match for `}\n <Text fontWeight=\"bold\">{`\"${valueTrimmed}.\"`}</Text>\n {\n ' Try another keyword, or see what our members are learning.'\n }\n </Box>\n <Menu border=\"none\" variant=\"popover\">\n <PopularContent onTrackingClick={onTrackingClick} />\n </Menu>\n </>\n )}\n </>\n ) : (\n <Menu border=\"none\" variant=\"popover\">\n <PopularSearches\n navigateToSearch={navigateToSearch}\n onTrackingClick={onTrackingClick}\n />\n <PopularContent onTrackingClick={onTrackingClick} />\n </Menu>\n )}\n\n {!!searchAsYouTypeResults?.top.length && (\n <StrokeButton\n my={16}\n onClick={() => {\n onTrackingClick('view_all_results', {\n search_id: searchAsYouTypeResults.searchId,\n });\n navigateToSearch(value, searchAsYouTypeResults?.searchId);\n closeSearch();\n }}\n >\n View all results\n </StrokeButton>\n )}\n <QuizAndHelpCenterLinks\n onTrackingClick={onTrackingClick}\n handleCloseDropdown={closeSearch}\n />\n </SuggestionContainer>\n </Box>\n </FocusTrap>\n </>\n );\n};\n"],"mappings":"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"}
@@ -25,4 +25,5 @@ const SearchTrackingProvider = ({ children }) => {
25
25
  const useSearchTrackingContext = () => useContext(SearchTrackingContext);
26
26
 
27
27
  //#endregion
28
- export { SearchTrackingProvider, useSearchTrackingContext };
28
+ export { SearchTrackingProvider, useSearchTrackingContext };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["SearchTrackingProvider: React.FC<{\n children: ReactNode;\n}>"],"sources":["../../../../src/AppHeader/Search/SearchTrackingProvider/index.tsx"],"sourcesContent":["import noop from 'lodash/noop';\nimport React, { createContext, ReactNode, useContext, useState } from 'react';\n\ninterface OnSearchAsYouTypeParamsType {\n query: string;\n searchId: string;\n resultsCount: number;\n queryLoadTime: number;\n}\n\ninterface SearchTrackingContextType {\n onSearchAsYouTypeParams: OnSearchAsYouTypeParamsType | null;\n setOnSearchAsYouTypeParams: (\n params: OnSearchAsYouTypeParamsType | null\n ) => void;\n}\n\nexport const SearchTrackingContext = createContext<SearchTrackingContextType>({\n onSearchAsYouTypeParams: null,\n setOnSearchAsYouTypeParams: noop,\n});\n\nexport const SearchTrackingProvider: React.FC<{\n children: ReactNode;\n}> = ({ children }) => {\n const [onSearchAsYouTypeParams, setOnSearchAsYouTypeParams] =\n useState<OnSearchAsYouTypeParamsType | null>({\n query: '',\n searchId: '',\n resultsCount: 0,\n queryLoadTime: 0,\n });\n\n return (\n <SearchTrackingContext.Provider\n value={{\n onSearchAsYouTypeParams,\n setOnSearchAsYouTypeParams,\n }}\n >\n {children}\n </SearchTrackingContext.Provider>\n );\n};\n\nexport const useSearchTrackingContext = () => useContext(SearchTrackingContext);\n"],"mappings":";;;;;AAiBA,MAAa,wBAAwB,cAAyC;CAC5E,yBAAyB;CACzB,4BAA4B;CAC7B,CAAC;AAEF,MAAaA,0BAEP,EAAE,eAAe;CACrB,MAAM,CAAC,yBAAyB,8BAC9B,SAA6C;EAC3C,OAAO;EACP,UAAU;EACV,cAAc;EACd,eAAe;EAChB,CAAC;AAEJ,QACE,oBAAC,sBAAsB;EACrB,OAAO;GACL;GACA;GACD;EAEA;GAC8B;;AAIrC,MAAa,iCAAiC,WAAW,sBAAsB"}
@@ -40,4 +40,5 @@ var PromiseLookup = class {
40
40
  };
41
41
 
42
42
  //#endregion
43
- export { PromiseLookup };
43
+ export { PromiseLookup };
44
+ //# sourceMappingURL=PromiseLookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromiseLookup.js","names":["args: {\n onKeyInit: (namespace: keyof Types, key: string) => void;\n }"],"sources":["../../../../src/AppHeader/Search/SearchWorker/PromiseLookup.ts"],"sourcesContent":["type Resolver<T> = (value: T) => void;\n\nclass SplitPromise<T> {\n promise: Promise<T>;\n resolver!: Resolver<T>;\n\n constructor() {\n this.promise = new Promise((r) => (this.resolver = r));\n }\n}\n\nexport class PromiseLookup<Types> {\n constructor(\n private args: {\n onKeyInit: (namespace: keyof Types, key: string) => void;\n }\n ) {}\n\n namespaces = new Map<keyof Types, Map<string, SplitPromise<unknown>>>();\n\n private getNamespace<N extends keyof Types>(namespace: N) {\n let ns = this.namespaces.get(namespace);\n if (!ns) {\n ns = new Map();\n this.namespaces.set(namespace, ns);\n }\n return ns as Map<string, SplitPromise<Types[N]>>;\n }\n\n private getSplitPromise<N extends keyof Types>(namespace: N, key: string) {\n const ns = this.getNamespace(namespace);\n let splitPromise = ns.get(key);\n if (!splitPromise) {\n splitPromise = new SplitPromise<Types[N]>();\n ns.set(key, splitPromise);\n this.args.onKeyInit(namespace, key);\n }\n return splitPromise;\n }\n\n get<N extends keyof Types>(namespace: N, key: string) {\n return this.getSplitPromise(namespace, key).promise;\n }\n\n resolve<N extends keyof Types>(namespace: N, key: string, value: Types[N]) {\n this.getSplitPromise(namespace, key).resolver(value);\n }\n}\n"],"mappings":";;;AAEA,IAAM,eAAN,MAAsB;CAIpB,cAAc;wBAHd;wBACA;AAGE,OAAK,UAAU,IAAI,SAAS,MAAO,KAAK,WAAW,EAAG;;;AAI1D,IAAa,gBAAb,MAAkC;CAChC,YACE,AAAQA,MAGR;EAHQ;wBAKV,8BAAa,IAAI,KAAsD;;CAEvE,AAAQ,aAAoC,WAAc;EACxD,IAAI,KAAK,KAAK,WAAW,IAAI,UAAU;AACvC,MAAI,CAAC,IAAI;AACP,wBAAK,IAAI,KAAK;AACd,QAAK,WAAW,IAAI,WAAW,GAAG;;AAEpC,SAAO;;CAGT,AAAQ,gBAAuC,WAAc,KAAa;EACxE,MAAM,KAAK,KAAK,aAAa,UAAU;EACvC,IAAI,eAAe,GAAG,IAAI,IAAI;AAC9B,MAAI,CAAC,cAAc;AACjB,kBAAe,IAAI,cAAwB;AAC3C,MAAG,IAAI,KAAK,aAAa;AACzB,QAAK,KAAK,UAAU,WAAW,IAAI;;AAErC,SAAO;;CAGT,IAA2B,WAAc,KAAa;AACpD,SAAO,KAAK,gBAAgB,WAAW,IAAI,CAAC;;CAG9C,QAA+B,WAAc,KAAa,OAAiB;AACzE,OAAK,gBAAgB,WAAW,IAAI,CAAC,SAAS,MAAM"}
@@ -7,4 +7,5 @@ declare const searchWorker: {
7
7
  searchAsYouType(query: string): Promise<SearchAsYouTypeResults>;
8
8
  };
9
9
  //#endregion
10
- export { searchWorker };
10
+ export { searchWorker };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/AppHeader/Search/SearchWorker/index.ts"],"sourcesContent":[],"mappings":";;;cAMa;;+BAWqB,QASjC,sBAAA;EApBY,eAoBZ,CAAA,KAAA,EAAA,MAAA,CAAA,EAJoC,OAIpC,CATiC,sBAAA,CASjC;CAAA"}
@@ -21,4 +21,5 @@ const searchWorker = {
21
21
  };
22
22
 
23
23
  //#endregion
24
- export { searchWorker };
24
+ export { searchWorker };
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["workerPromise: Promise<SearchWorker>"],"sources":["../../../../src/AppHeader/Search/SearchWorker/index.ts"],"sourcesContent":["import { SearchAction, SearchWorker } from './types';\n\nlet workerPromise: Promise<SearchWorker>;\n\nconst initErr = 'Search worker not initialized';\n\nexport const searchWorker = {\n init() {\n if (!workerPromise) {\n workerPromise = (async () => {\n // lazy load worker\n const { createSearchWorker } = await import('./worker');\n return createSearchWorker();\n })();\n }\n },\n\n async autocomplete(query: string) {\n if (!workerPromise) throw new Error(initErr);\n return (await workerPromise)(SearchAction.Autocomplete, query);\n },\n\n async searchAsYouType(query: string) {\n if (!workerPromise) throw new Error(initErr);\n return (await workerPromise)(SearchAction.SearchAsYouType, query);\n },\n};\n"],"mappings":";;;AAEA,IAAIA;AAEJ,MAAM,UAAU;AAEhB,MAAa,eAAe;CAC1B,OAAO;AACL,MAAI,CAAC,cACH,kBAAiB,YAAY;GAE3B,MAAM,EAAE,uBAAuB,MAAM,OAAO;AAC5C,UAAO,oBAAoB;MACzB;;CAIR,MAAM,aAAa,OAAe;AAChC,MAAI,CAAC,cAAe,OAAM,IAAI,MAAM,QAAQ;AAC5C,UAAQ,MAAM,eAAe,aAAa,cAAc,MAAM;;CAGhE,MAAM,gBAAgB,OAAe;AACnC,MAAI,CAAC,cAAe,OAAM,IAAI,MAAM,QAAQ;AAC5C,UAAQ,MAAM,eAAe,aAAa,iBAAiB,MAAM;;CAEpE"}
@@ -155,4 +155,5 @@ function worker() {
155
155
  }
156
156
 
157
157
  //#endregion
158
- export { serializeSearchWorkerSrc };
158
+ export { serializeSearchWorkerSrc };
159
+ //# sourceMappingURL=src.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src.js","names":["handlers: { [action: string]: (q: PreparsedQuery) => void }","topAutocompleteTitles: AutocompleteSuggestion[]","currentSegment: HighlightSegment | null","segments: HighlightSegment[]","cmc: ConsecutiveMatchingChars | null","charScores: number[]"],"sources":["../../../../src/AppHeader/Search/SearchWorker/src.ts"],"sourcesContent":["/*\n * A web worker to handle search-as-you-type and autocomplete\n *\n * This worker implements an algorithm for text matching that tests\n * a query string against a set of titles, and gives a score to\n * each character in a given title.\n *\n * e.g. matching query \"abcde\" to title \"ab cde\"\n * \"a\" and \"b\" each get a score of 2, because each is part of the match \"ab\"\n * \"c\", \"d\", and \"e\" each get a score of 3, because each is part of the match \"cde\"\n *\n * For autocomplete, a large list of titles is preloaded, and this\n * scoring algorithm is used both to find the top 5 matches, and to\n * determine which characters should be highlighted.\n * (These titles have certain phrases like \"Intro to\" removed so that they\n * better resemble something that a user would type.)\n *\n * For search-as-you-type, we rely on typesense to find matches,\n * but we still use this algorithm for character highlighting.\n */\n\nimport {\n AutocompleteSuggestion,\n HighlightSegment,\n SearchAsYouTypeResults,\n} from './types';\n\nfunction getPortalOrigin() {\n const { origin } = window.location;\n const envs = ['tengu', 'tayra', 'staging', 'www'];\n\n // for standard envs, use portal app in the same env\n if (envs.some((s) => `https://${s}.codecademy.com` === origin)) return origin;\n\n // for PR envs (e.g. pr-40229-monolith.dev-eks.codecademy.com)\n if (origin.includes('.dev-eks.codecademy.com')) return origin;\n\n // for local, use local portal-app, replace if origin port is monolith or le\n if (origin.includes('localhost')) return origin.replace(/:\\d{4}/, ':3100');\n\n // otherwise (e.g. in monolith pr env) use staging portal-app\n return 'https://staging.codecademy.com';\n}\n\nexport function serializeSearchWorkerSrc() {\n const BASE_URL = `${getPortalOrigin()}/api/portal/search`;\n const fnAsStr = worker.toString().trim();\n\n // in a prod build, webpack will handle removing comments\n\n return fnAsStr\n .slice(fnAsStr.indexOf('{') + 1, -1) // remove wrapping function, which may have been renamed by minification\n .replaceAll(' ', '') // remove indentation\n .replaceAll('{BASE_URL}', BASE_URL) // interpolate base url\n .replaceAll('{SEARCH}', window.location.search); // interpolate search query\n}\n\n/*\n * This function contains the code that is serialized to run in the worker. It\n * can't reference anything outside of itself (except types). Data is passed to\n * the worker via onmessage and passed back to the main thread via postMessage.\n */\nfunction worker() {\n type RawTitle = {\n value: string;\n popularity: number;\n };\n type PreparsedTitle = {\n title: string;\n lower: string;\n words: Set<string>;\n popularity: number;\n };\n type PreparsedQuery = {\n query: string;\n words: Set<string>;\n };\n type ScoredTitle = {\n title: string;\n charScores: number[];\n score: number;\n };\n type ConsecutiveMatchingChars = { value: string };\n\n const preloadTitlesPromise = fetch('{BASE_URL}/autocomplete-preload{SEARCH}')\n .then((f) => f.json())\n .then((rawTitles) => rawTitles.map(preparseTitle));\n\n function preparseTitle({ value, popularity }: RawTitle): PreparsedTitle {\n const lower = value.toLowerCase();\n const words = getWordSet(lower);\n return { title: value, lower, words, popularity };\n }\n\n function preparseQuery(query: string): PreparsedQuery {\n const words = getWordSet(query);\n return { query, words };\n }\n\n const wordSplitters = /[ :-]/g;\n\n function getWordSet(str: string) {\n const words = str\n .split(wordSplitters)\n .map((w) => w.trim())\n .filter(Boolean);\n return new Set(words);\n }\n\n const handlers: { [action: string]: (q: PreparsedQuery) => void } = {\n autocomplete: autocompleteHandler,\n 'search-as-you-type': searchAsYouTypeHandler,\n };\n\n onmessage = ({ data }: MessageEvent<{ action: string; query: string }>) => {\n const { query, action } = data;\n const handler = handlers[action];\n if (handler) {\n handler(preparseQuery(query));\n }\n };\n\n function getScoredTitle(q: PreparsedQuery, t: PreparsedTitle): ScoredTitle {\n const charScores = getCharScores(q, t);\n const score = getTotalScore(q, t, charScores);\n return { title: t.title, charScores, score };\n }\n\n const maxResults = 5;\n\n function autocompleteHandler(q: PreparsedQuery) {\n preloadTitlesPromise.then((titles: PreparsedTitle[]) => {\n const scoredTitles = titles.map((t: PreparsedTitle) =>\n getScoredTitle(q, t)\n );\n\n const topAutocompleteTitles: AutocompleteSuggestion[] = scoredTitles\n .filter((x: ScoredTitle) => x.score > 0)\n .sort((a: ScoredTitle, b: ScoredTitle) => (a.score > b.score ? -1 : 1))\n .slice(0, maxResults)\n .map((t: ScoredTitle) => ({\n title: t.title,\n segments: getHighlightSegments(t.title, t.charScores),\n }));\n\n postMessage({\n query: q.query,\n result: topAutocompleteTitles,\n action: 'autocomplete',\n });\n });\n }\n\n function searchAsYouTypeHandler(q: PreparsedQuery) {\n fetch('{BASE_URL}/search-as-you-type{SEARCH}', {\n body: JSON.stringify({ query: q.query, max: maxResults }),\n method: 'POST',\n })\n .then((f) => f.json())\n .then((searchAsYouTypeResults: SearchAsYouTypeResults) => {\n for (let i = 0; i < searchAsYouTypeResults.top.length; i++) {\n const entry = searchAsYouTypeResults.top[i];\n const t = preparseTitle({ value: entry.title, popularity: 0 });\n const charScores = getCharScores(q, t);\n entry.segments = getHighlightSegments(entry.title, charScores);\n entry.key = q.query + ':' + entry.title;\n }\n postMessage({\n query: q.query,\n result: searchAsYouTypeResults,\n action: 'search-as-you-type',\n });\n });\n }\n\n /*\n * For the search \"alge\", .04 is just low enough so that \"Linear algebra\"\n * (which matches on 4 letters) comes in above \"Data structures and algorithms\"\n * (which only matches on 3 letters, but has a high popularity score).\n */\n const popularityStrength = 0.04;\n\n // Total used in sorting to find autocomplet top 5\n // Bonus scores are includes in certain cases\n function getTotalScore(\n q: PreparsedQuery,\n t: PreparsedTitle,\n charScores: number[]\n ) {\n let fromChars = 0;\n for (let i = 0; i < charScores.length; i++) {\n fromChars += charScores[i];\n }\n\n const fromPopularity = (t.popularity || 0) * popularityStrength;\n\n let bonus = 0;\n // for each complete word present in both the title and query\n q.words.forEach((qw) => {\n if (t.words.has(qw)) {\n bonus += 100;\n }\n });\n\n // if the title starts with the query\n if (t.lower.startsWith(q.query)) {\n bonus += 200;\n } else if (t.lower.startsWith(q.query.slice(0, 3))) {\n // or at least the first 3 chars\n bonus += 100;\n }\n\n // if the title is an exact match with the query\n if (t.lower === q.query) {\n bonus += 100;\n }\n\n // if there are some matching chars and the title is within 3 chars length of the query\n if (fromChars > 1 && Math.abs(t.lower.length - q.query.length) <= 3) {\n bonus += 100;\n }\n\n return fromChars + (fromChars > 1 ? fromPopularity : 0) + bonus;\n }\n\n // returns { value: string, highlight: boolean }[]\n function getHighlightSegments(title: string, charScores: number[]) {\n let currentSegment: HighlightSegment | null = null;\n const segments: HighlightSegment[] = [];\n\n const shouldHighlight = (i: number) => charScores[i] > 0;\n\n const isDifferentFromPrev = (i: number) =>\n shouldHighlight(i - 1) !== shouldHighlight(i);\n\n for (let i = 0; i < title.length; i++) {\n if (i === 0 || isDifferentFromPrev(i)) {\n // If this char should be highlighted, but the prev one should not\n // or vice versa, start a new segment.\n currentSegment = { value: '', highlight: shouldHighlight(i) };\n segments.push(currentSegment);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n currentSegment!.value += title[i];\n }\n return segments;\n }\n\n // Used by autocomplete, both for finding top 5, and for highlighting\n // Used by search-as-you-type, only for highlighting\n // Returns number[], where each number is the match score for a char in the title\n function getCharScores(q: PreparsedQuery, t: PreparsedTitle) {\n /*\n * Prefill the array for each char in the title.\n * For each char, we keep an array of the consecutive matches the char is a part of.\n */\n const cmcsForTitleChars = Array(t.lower.length)\n .fill(0)\n .map(() => []) as ConsecutiveMatchingChars[][];\n\n /*\n * Overlay the query onto the title to see which chars match.\n * Shift to align at different positions.\n * e.g.\n * shift: 0\n * query: python3 learn\n * title: learn python 3\n * (no matches)\n *\n * shift: 6\n * query: python3 learn\n * title: learn python 3\n * (the word \"python\" matches)\n *\n * shift: 7\n * query: python3 learn\n * title: learn python 3\n * (\"3\" matches)\n *\n * shift: -8\n * query: python3 learn\n * title: learn python 3\n * (\"learn\" matches)\n */\n for (let shift = 1 - q.query.length; shift < t.lower.length; shift++) {\n // for each shift position\n\n let cmc: ConsecutiveMatchingChars | null = null;\n const startOverlap = Math.max(shift, 0);\n const endOverlap = Math.min(q.query.length + shift, t.lower.length);\n\n // i is the index of a char in the title\n for (let i = startOverlap; i < endOverlap; i++) {\n // for each char position in the potentially overlapping area\n\n // if char at this position matches (and isn't a space)\n if (q.query[i - shift] === t.lower[i] && t.lower[i] !== ' ') {\n if (!cmc) {\n // start a new cmc if needed\n cmc = { value: '' };\n }\n\n /*\n * Append this char to the current cmc.\n * We use an object with {value} so that we can modify by reference,\n * since we want to modify the cmc, not only for this char, but also\n * for any previous chars that this cmc was pushed to, since those\n * chars are part of this same consecutive match.\n */\n cmc.value += q.query[i - shift];\n\n // include this cmc for this char\n cmcsForTitleChars[i].push(cmc);\n } else if (cmc) {\n // set to null so that the next match starts a new cmc\n cmc = null;\n }\n }\n }\n\n const avgQueryWordLength = q.query.length / q.words.size;\n\n // If avgQueryWordLength is 1-3, we want to the min match to be about that same size.\n // If avgQueryWordLength is longer, we want min match to be longer...but not too long.\n // e.g. For avgQueryWordLength of 9, min should be 5\n // The misspelling \"regresion\" should still match \"regression\", but not \"encryption\",\n // \"authentication\" or other words ending in \"ion\"\n const minMatchLength = Math.ceil(avgQueryWordLength ** 0.65);\n\n const charScores: number[] = [];\n for (let i = 0; i < cmcsForTitleChars.length; i++) {\n const cmcs = cmcsForTitleChars[i];\n let score = 0;\n for (let j = 0; j < cmcs.length; j++) {\n const cmc = cmcs[j];\n // if the string of consecutive matching chars meets the minMatchLength\n // or if it's a standalone word in the query (e.g \"C\")\n if (cmc.value.length >= minMatchLength || q.words.has(cmc.value)) {\n score += cmc.value.length;\n }\n }\n charScores.push(score);\n }\n return charScores;\n }\n}\n"],"mappings":"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"}
@@ -27,4 +27,5 @@ interface SearchAsYouTypeResults extends SearchResults {
27
27
  })[];
28
28
  }
29
29
  //#endregion
30
- export { AutocompleteSuggestion, SearchAsYouTypeResults };
30
+ export { AutocompleteSuggestion, SearchAsYouTypeResults };
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/AppHeader/Search/SearchWorker/types.ts"],"sourcesContent":[],"mappings":";KAAY,gBAAA;EAAA,KAAA,EAAA,MAAA;EAKA,SAAA,EAAA,OAAA;AAGV,CAAA;AASQ,KAZE,sBAAA,GAYS;EAMJ,KAAA,EAAA,MAAA;EACT,QAAA,EAjBI,gBAiBJ,EAAA;CAEM;UAhBJ,aAAA,CAasC;EAAa,KAAA,EAAA,MAAA;;;;;UANnD,WAAA;;;;;UAMO,sBAAA,SAA+B;QACxC;;cAEM"}
@@ -6,4 +6,5 @@ let SearchAction = /* @__PURE__ */ function(SearchAction$1) {
6
6
  }({});
7
7
 
8
8
  //#endregion
9
- export { SearchAction };
9
+ export { SearchAction };
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/AppHeader/Search/SearchWorker/types.ts"],"sourcesContent":["export type HighlightSegment = {\n value: string;\n highlight: boolean;\n};\n\nexport type AutocompleteSuggestion = {\n title: string;\n segments: HighlightSegment[];\n};\n\ninterface SearchResults {\n query: string;\n queryLoadTime: number;\n searchId: string;\n resultsCount: number;\n}\n\ninterface BaseTopData {\n type: string;\n title: string;\n slug: string;\n}\n\nexport interface SearchAsYouTypeResults extends SearchResults {\n top: (BaseTopData & {\n contentId?: string;\n segments: HighlightSegment[];\n urlPath: string;\n key: string;\n })[];\n}\n\nexport enum SearchAction {\n Autocomplete = 'autocomplete',\n SearchAsYouType = 'search-as-you-type',\n}\n\nexport type SearchResultTypes = {\n [SearchAction.Autocomplete]: AutocompleteSuggestion[];\n [SearchAction.SearchAsYouType]: SearchAsYouTypeResults;\n};\n\nexport type SearchWorker = <A extends SearchAction>(\n action: A,\n query: string\n) => Promise<SearchResultTypes[A]>;\n"],"mappings":";AAgCA,IAAY,wDAAL;AACL;AACA"}
@@ -23,4 +23,5 @@ function createSearchWorker() {
23
23
  }
24
24
 
25
25
  //#endregion
26
- export { createSearchWorker };
26
+ export { createSearchWorker };
27
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","names":[],"sources":["../../../../src/AppHeader/Search/SearchWorker/worker.ts"],"sourcesContent":["import { PromiseLookup } from './PromiseLookup';\nimport { serializeSearchWorkerSrc } from './src';\nimport type { SearchAction, SearchResultTypes, SearchWorker } from './types';\n\nconst mockWorker = () => ({ onmessage: () => null, postMessage: () => null });\n\nexport function createSearchWorker(): SearchWorker {\n const src = serializeSearchWorkerSrc();\n const blob = new Blob([src], { type: 'text/javascript' });\n const dataUrl = URL.createObjectURL?.(blob);\n const w = typeof Worker === 'undefined' ? mockWorker() : new Worker(dataUrl);\n\n const results = new PromiseLookup<SearchResultTypes>({\n onKeyInit: (action, query) => w.postMessage({ action, query }),\n });\n\n w.onmessage = ({ data }) => {\n const { query, result, action } = data;\n results.resolve(action, query, result);\n };\n\n return <A extends SearchAction>(action: A, query: string) =>\n results.get<A>(action, query);\n}\n"],"mappings":";;;;AAIA,MAAM,oBAAoB;CAAE,iBAAiB;CAAM,mBAAmB;CAAM;AAE5E,SAAgB,qBAAmC;CACjD,MAAM,MAAM,0BAA0B;CACtC,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,mBAAmB,CAAC;CACzD,MAAM,UAAU,IAAI,kBAAkB,KAAK;CAC3C,MAAM,IAAI,OAAO,WAAW,cAAc,YAAY,GAAG,IAAI,OAAO,QAAQ;CAE5E,MAAM,UAAU,IAAI,cAAiC,EACnD,YAAY,QAAQ,UAAU,EAAE,YAAY;EAAE;EAAQ;EAAO,CAAC,EAC/D,CAAC;AAEF,GAAE,aAAa,EAAE,WAAW;EAC1B,MAAM,EAAE,OAAO,QAAQ,WAAW;AAClC,UAAQ,QAAQ,QAAQ,OAAO,OAAO;;AAGxC,SAAgC,QAAW,UACzC,QAAQ,IAAO,QAAQ,MAAM"}
@@ -23,4 +23,5 @@ declare const popularContent: ({
23
23
  })[];
24
24
  declare const ALLOWED_HOSTS: string[];
25
25
  //#endregion
26
- export { ALLOWED_HOSTS, ContentType, popularContent, popularSearchTerms, searchPlaceholder };
26
+ export { ALLOWED_HOSTS, ContentType, popularContent, popularSearchTerms, searchPlaceholder };
27
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","names":[],"sources":["../../../src/AppHeader/Search/consts.ts"],"sourcesContent":[],"mappings":";cAAa,iBAAA;AAAA,cAEA,kBAFiB,EAAA,MAAA,EAAA;AAEjB,aASD,WAAA;EAAA,MAAA,GAAA,QAAW;EAQV,SAAA,GAAA,YAkCZ;EAEY,UAAA,GAAA,aAMZ;;;;cA1CY;;;QAkCZ;;;;;;QAAA;;;;cAEY"}
@@ -60,4 +60,5 @@ const ALLOWED_HOSTS = [
60
60
  ];
61
61
 
62
62
  //#endregion
63
- export { ALLOWED_HOSTS, ContentType, popularContent, popularSearchTerms, searchPlaceholder };
63
+ export { ALLOWED_HOSTS, ContentType, popularContent, popularSearchTerms, searchPlaceholder };
64
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","names":[],"sources":["../../../src/AppHeader/Search/consts.ts"],"sourcesContent":["export const searchPlaceholder = 'What are you learning today?';\n\nexport const popularSearchTerms = [\n 'Artificial Intelligence',\n 'Data Science',\n 'Python',\n 'Web Development',\n 'HTML',\n 'Java',\n];\n\nexport enum ContentType {\n COURSE = 'Course',\n SKILLPATH = 'Skill Path',\n CAREERPATH = 'Career Path',\n ARTICLE = 'Article',\n DOC = 'Doc',\n}\n\nexport const popularContent = [\n {\n title: 'Learn Python 3',\n href: '/learn/learn-python-3',\n type: ContentType.COURSE,\n slug: 'learn-python-3',\n contentId: '6c152bd262967f8c941c9707ed636bda',\n },\n {\n title: 'Business Intelligence Data Analyst',\n href: '/learn/paths/bi-data-analyst',\n type: ContentType.CAREERPATH,\n slug: 'bi-data-analyst',\n contentId: 'd03c7391224540ef8f850f8807a2b72a',\n },\n {\n title: 'Code Foundations',\n href: '/learn/paths/code-foundations',\n type: ContentType.SKILLPATH,\n slug: 'code-foundations',\n contentId: '5b55e668646caa552f8e4d1d',\n },\n {\n title: 'What is Programming?',\n href: '/article/what-is-programming',\n type: ContentType.ARTICLE,\n slug: 'what-is-programming',\n },\n {\n title: 'HTML | Elements',\n href: '/resources/docs/html',\n type: ContentType.DOC,\n slug: 'html/concepts/elements',\n },\n];\n\nexport const ALLOWED_HOSTS = [\n 'skillsoft.com',\n 'percipio.com',\n 'localhost',\n 'codecademy.com',\n 'squads-dev.com',\n];\n"],"mappings":";AAAA,MAAa,oBAAoB;AAEjC,MAAa,qBAAqB;CAChC;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAY,sDAAL;AACL;AACA;AACA;AACA;AACA;;;AAGF,MAAa,iBAAiB;CAC5B;EACE,OAAO;EACP,MAAM;EACN,MAAM,YAAY;EAClB,MAAM;EACN,WAAW;EACZ;CACD;EACE,OAAO;EACP,MAAM;EACN,MAAM,YAAY;EAClB,MAAM;EACN,WAAW;EACZ;CACD;EACE,OAAO;EACP,MAAM;EACN,MAAM,YAAY;EAClB,MAAM;EACN,WAAW;EACZ;CACD;EACE,OAAO;EACP,MAAM;EACN,MAAM,YAAY;EAClB,MAAM;EACP;CACD;EACE,OAAO;EACP,MAAM;EACN,MAAM,YAAY;EAClB,MAAM;EACP;CACF;AAED,MAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CACD"}
@@ -13,4 +13,5 @@ const useUrlChangeDetection = ({ onUrlChange, getCurrentUrl = () => window.locat
13
13
  };
14
14
 
15
15
  //#endregion
16
- export { useUrlChangeDetection };
16
+ export { useUrlChangeDetection };
17
+ //# sourceMappingURL=useUrlChangeDetection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUrlChangeDetection.js","names":[],"sources":["../../../../src/AppHeader/Search/hooks/useUrlChangeDetection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport interface UrlChangeDetectionOptions {\n onUrlChange: () => void;\n getCurrentUrl?: () => string;\n}\n\nexport const useUrlChangeDetection = ({\n onUrlChange,\n getCurrentUrl = () => window.location?.href,\n}: UrlChangeDetectionOptions) => {\n const currentUrl = getCurrentUrl();\n const prevUrlRef = useRef(currentUrl);\n\n useEffect(() => {\n if (prevUrlRef.current !== currentUrl) {\n onUrlChange();\n prevUrlRef.current = currentUrl;\n }\n }, [currentUrl, onUrlChange]);\n};\n"],"mappings":";;;AAOA,MAAa,yBAAyB,EACpC,aACA,sBAAsB,OAAO,UAAU,WACR;CAC/B,MAAM,aAAa,eAAe;CAClC,MAAM,aAAa,OAAO,WAAW;AAErC,iBAAgB;AACd,MAAI,WAAW,YAAY,YAAY;AACrC,gBAAa;AACb,cAAW,UAAU;;IAEtB,CAAC,YAAY,YAAY,CAAC"}
@@ -36,4 +36,5 @@ function sanitizeURL(url) {
36
36
  }
37
37
 
38
38
  //#endregion
39
- export { safelyRedirect };
39
+ export { safelyRedirect };
40
+ //# sourceMappingURL=safelyRedirect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safelyRedirect.js","names":[],"sources":["../../../src/AppHeader/Search/safelyRedirect.ts"],"sourcesContent":["/**\n * fork of @mono/util-url/src/safelyRedirect.ts, since\n * the build script doesn't resolve @mono dependencies\n */\n\nimport { ALLOWED_HOSTS } from './consts';\n\nexport function safelyRedirect(url: string) {\n try {\n const sanitizedURL = sanitizeURL(url);\n\n if (isRelativeUrl(sanitizedURL) || hasAllowedHost(sanitizedURL)) {\n window.location.assign(sanitizedURL);\n } else {\n throw new Error(`Invalid redirect url: ${sanitizedURL}`);\n }\n } catch (error) {}\n}\n\nfunction hasAllowedHost(url: string) {\n const parsedUrl = new URL(url);\n const { hostname } = parsedUrl;\n\n return ALLOWED_HOSTS.some(\n (host) =>\n // Exact match or exact subdomain match (e.g. sub.codecademy.com)\n hostname === host || hostname.endsWith(`.${host}`)\n );\n}\n\n// when a url is relative, the URL constructor will throw a TypeError;\nfunction isRelativeUrl(url: string) {\n try {\n const parsedUrl = new URL(url);\n return parsedUrl === undefined;\n } catch (error) {\n return true;\n }\n}\n\n// supports already encoded urls by decoding and re-encoding.\n// params are handled separately to allow for the encoding of / characters\nfunction sanitizeURL(url: string) {\n const [path, params] = url.split('?', 2);\n const sanitizedPath = encodeURI(decodeURI(path));\n\n if (!params) return sanitizedPath;\n\n const urlParams = new URLSearchParams(params);\n urlParams.forEach((value, key) => {\n const decoded = decodeURIComponent(value);\n urlParams.set(key, decoded);\n });\n\n return `${sanitizedPath}?${urlParams.toString()}`;\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,eAAe,KAAa;AAC1C,KAAI;EACF,MAAM,eAAe,YAAY,IAAI;AAErC,MAAI,cAAc,aAAa,IAAI,eAAe,aAAa,CAC7D,QAAO,SAAS,OAAO,aAAa;MAEpC,OAAM,IAAI,MAAM,yBAAyB,eAAe;UAEnD,OAAO;;AAGlB,SAAS,eAAe,KAAa;CAEnC,MAAM,EAAE,aADU,IAAI,IAAI,IAAI;AAG9B,QAAO,cAAc,MAClB,SAEC,aAAa,QAAQ,SAAS,SAAS,IAAI,OAAO,CACrD;;AAIH,SAAS,cAAc,KAAa;AAClC,KAAI;AAEF,SADkB,IAAI,IAAI,IAAI,KACT;UACd,OAAO;AACd,SAAO;;;AAMX,SAAS,YAAY,KAAa;CAChC,MAAM,CAAC,MAAM,UAAU,IAAI,MAAM,KAAK,EAAE;CACxC,MAAM,gBAAgB,UAAU,UAAU,KAAK,CAAC;AAEhD,KAAI,CAAC,OAAQ,QAAO;CAEpB,MAAM,YAAY,IAAI,gBAAgB,OAAO;AAC7C,WAAU,SAAS,OAAO,QAAQ;EAChC,MAAM,UAAU,mBAAmB,MAAM;AACzC,YAAU,IAAI,KAAK,QAAQ;GAC3B;AAEF,QAAO,GAAG,cAAc,GAAG,UAAU,UAAU"}
@@ -13,4 +13,5 @@ interface AppHeaderSearch extends OnSearch, onTrackingClick {
13
13
  onEnable: () => void;
14
14
  }
15
15
  //#endregion
16
- export { AppHeaderSearch };
16
+ export { AppHeaderSearch };
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/AppHeader/Search/types.ts"],"sourcesContent":[],"mappings":";;;;UAGU,eAAA;yDAGe;AALwB;AAKlB,UAIrB,QAAA,CAAQ;EAeD,QAAA,EAAA,CAAA,KAAA,EAAgB,MAAA,EAAA,cAAkB,CAAA,EAAA,MAAA,EAAA,GAAA,IAAe;;;UAAjD,eAAA,SAAwB,UAAU"}
@@ -35,4 +35,5 @@ const useHeaderSearch = ({ onEnable, onSearch, onTrackingClick, onSearchAsYouTyp
35
35
  };
36
36
 
37
37
  //#endregion
38
- export { useHeaderSearch };
38
+ export { useHeaderSearch };
39
+ //# sourceMappingURL=useHeaderSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderSearch.js","names":[],"sources":["../../../src/AppHeader/Search/useHeaderSearch.tsx"],"sourcesContent":["import { ButtonBaseElements } from '@codecademy/gamut';\nimport { useRef, useState } from 'react';\n\nimport { AnimatedHeaderZone } from '../shared';\nimport { SearchButton } from './SearchButton';\nimport { SearchPane } from './SearchPane';\nimport { AppHeaderSearch } from './types';\n\nexport const useHeaderSearch = ({\n onEnable,\n onSearch,\n onTrackingClick,\n onSearchAsYouType,\n}: AppHeaderSearch) => {\n const [isSearchVisible, setIsSearchVisible] = useState(false);\n const searchButtonRef = useRef<ButtonBaseElements>(null);\n\n const toggleSearch = () => {\n if (!isSearchVisible) {\n onEnable();\n }\n setIsSearchVisible((oldIsSearchVisible) => !oldIsSearchVisible);\n };\n\n return [\n {\n id: 'search',\n type: 'render-element',\n renderElement: () => (\n <SearchButton\n isSearchVisible={isSearchVisible}\n setIsSearchVisible={setIsSearchVisible}\n toggleSearch={toggleSearch}\n searchButtonRef={searchButtonRef}\n onSearchAsYouType={onSearchAsYouType}\n />\n ),\n },\n <AnimatedHeaderZone visible={isSearchVisible} key=\"search-content\">\n <SearchPane\n onSearch={onSearch}\n onTrackingClick={onTrackingClick}\n toggleSearch={toggleSearch}\n searchButtonRef={searchButtonRef}\n onSearchAsYouType={onSearchAsYouType}\n />\n </AnimatedHeaderZone>,\n ] as const;\n};\n"],"mappings":";;;;;;;AAQA,MAAa,mBAAmB,EAC9B,UACA,UACA,iBACA,wBACqB;CACrB,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,MAAM;CAC7D,MAAM,kBAAkB,OAA2B,KAAK;CAExD,MAAM,qBAAqB;AACzB,MAAI,CAAC,gBACH,WAAU;AAEZ,sBAAoB,uBAAuB,CAAC,mBAAmB;;AAGjE,QAAO,CACL;EACE,IAAI;EACJ,MAAM;EACN,qBACE,oBAAC;GACkB;GACG;GACN;GACG;GACE;IACnB;EAEL,EACD,oBAAC;EAAmB,SAAS;YAC3B,oBAAC;GACW;GACO;GACH;GACG;GACE;IACnB;IAP8C,iBAQ7B,CACtB"}
@@ -26,4 +26,5 @@ type AppHeaderProps = AppHeaderAction & {
26
26
  };
27
27
  declare const AppHeader: React$1.FC<AppHeaderProps>;
28
28
  //#endregion
29
- export { ALLOWED_HOSTS, AppHeader, AppHeaderProps, ContentType, popularContent, popularSearchTerms, searchPlaceholder };
29
+ export { ALLOWED_HOSTS, AppHeader, AppHeaderProps, ContentType, popularContent, popularSearchTerms, searchPlaceholder };
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/AppHeader/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;KA6BY,cAAA,GAAiB;SACpB;kBACS;;EAFN,MAAA,EAIF,eAJgB;EAAG;;;EAInB,uBAAA,CAAA,EAAA,OAAA;EAUsC;;;EAInC,YAkHZ,CAAA,EAAA,OAAA;;oBAtHmB,OAAA,CAAM,sBAAsB;;;cAInC,WAAW,OAAA,CAAM,GAAG"}
@@ -87,4 +87,5 @@ const AppHeader = ({ action, hideRightButtonDefaults, items, notifications, redi
87
87
  };
88
88
 
89
89
  //#endregion
90
- export { ALLOWED_HOSTS, AppHeader, ContentType, popularContent, popularSearchTerms, searchPlaceholder };
90
+ export { ALLOWED_HOSTS, AppHeader, ContentType, popularContent, popularSearchTerms, searchPlaceholder };
91
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["AppHeader: React.FC<AppHeaderProps>","items"],"sources":["../../src/AppHeader/index.tsx"],"sourcesContent":["import { Menu } from '@codecademy/gamut';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef } from 'react';\n\nimport {\n AppHeaderAction,\n AppHeaderItem,\n AppHeaderSearch,\n FormattedAppHeaderItems,\n LogErrorContext,\n} from '..';\nimport { HeaderHeightArea } from '../HeaderHeightArea';\nimport { NotificationsDropdown } from '../Notifications/NotificationsDropdown';\nimport { AppHeaderNotificationSettings } from '../Notifications/types';\nimport { useHeaderNotifications } from '../Notifications/useHeaderNotifications';\nimport { AppHeaderListItem } from './AppHeaderElements/AppHeaderListItem';\nimport { AppHeaderProvider } from './AppHeaderElements/AppHeaderProvider';\nimport { SearchTrackingProvider } from './Search/SearchTrackingProvider';\nimport { useHeaderSearch } from './Search/useHeaderSearch';\nimport {\n appHeaderMobileBreakpoint,\n appHeaderSpacing,\n StyledAppBar,\n StyledNavBar,\n} from './shared';\nimport { mapAppHeaderItemToElement } from './shared/utils';\n\nexport * from './Search/consts';\n\nexport type AppHeaderProps = AppHeaderAction & {\n items: FormattedAppHeaderItems;\n notifications?: AppHeaderNotificationSettings;\n redirectParam?: string;\n search: AppHeaderSearch;\n /**\n * used to conditonally hide the default search icon and notification bell\n */\n hideRightButtonDefaults?: boolean;\n /**\n * temporary solution to allow this to be used in LXStudio. Future Header epic here: GM-1024\n */\n isStandalone?: boolean;\n isTeams?: boolean;\n dropdownSpacing?: React.ComponentProps<typeof Menu>['spacing'];\n type?: 'standard' | 'enterprise';\n};\n\nexport const AppHeader: React.FC<AppHeaderProps> = ({\n action,\n hideRightButtonDefaults,\n items,\n notifications,\n redirectParam,\n search,\n isStandalone,\n isTeams,\n dropdownSpacing,\n type = 'standard',\n}) => {\n const menuContainerRef = useRef<HTMLUListElement>(null);\n\n const [notificationsBell, notificationsView] = useHeaderNotifications({\n settings: notifications,\n Renderer: NotificationsDropdown,\n });\n const [searchButton, searchPane] = useHeaderSearch({\n ...search,\n });\n\n const right = useMemo(() => {\n const defaultItems = hideRightButtonDefaults\n ? []\n : [searchButton, ...(notificationsBell ? [notificationsBell] : [])];\n\n if (isTeams) {\n const teamsSpecificMenuItems = items.right.slice(0, -1);\n const profile = items.right[items.right.length - 1];\n\n return [...teamsSpecificMenuItems, ...defaultItems, profile];\n }\n\n return [...defaultItems, ...items.right];\n }, [\n searchButton,\n notificationsBell,\n hideRightButtonDefaults,\n items,\n isTeams,\n ]);\n\n const { logError } = useContext(LogErrorContext);\n\n const mapItemsToElement = <T extends AppHeaderItem[]>(\n items: T,\n side: 'left' | 'right'\n ) => {\n // logging error to help with debugging\n if (items && items.some((item) => !item)) {\n try {\n const itemTypesString = items\n .map((item) => {\n if (!item) return '**UNDEFINED ITEM**';\n return item.type;\n })\n .join(', ');\n\n logError?.(\n `Error: Found an undefined app header item on the ${side} side of the header.`,\n {\n message: `The current array of items includes the following header item types: ${itemTypesString}`,\n }\n );\n } catch (e) {\n logError?.(`Error while logging undefined header items: ${e}`);\n }\n }\n\n return (\n items\n // preventative measure to handle a possibly undefined item from being rendered\n .filter((item) => !!item)\n .map((item, index) => {\n const margin = appHeaderSpacing[type];\n return (\n <AppHeaderListItem\n key={item.id}\n mr={margin}\n ml={side === 'right' && index === 0 ? 'auto' : margin}\n >\n {mapAppHeaderItemToElement({\n action,\n item,\n isStandalone,\n isTeams,\n redirectParam,\n spacing: dropdownSpacing,\n })}\n </AppHeaderListItem>\n );\n })\n );\n };\n\n return (\n <HeaderHeightArea\n display={{ _: 'none', [appHeaderMobileBreakpoint]: 'block' }}\n >\n <AppHeaderProvider>\n <SearchTrackingProvider>\n <StyledAppBar aria-label=\"Main\" as=\"nav\">\n <StyledNavBar ref={menuContainerRef}>\n {mapItemsToElement(items.left, 'left')}\n {mapItemsToElement(right, 'right')}\n </StyledNavBar>\n </StyledAppBar>\n {notificationsView}\n {searchPane}\n </SearchTrackingProvider>\n </AppHeaderProvider>\n </HeaderHeightArea>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AA+CA,MAAaA,aAAuC,EAClD,QACA,yBACA,OACA,eACA,eACA,QACA,cACA,SACA,iBACA,OAAO,iBACH;CACJ,MAAM,mBAAmB,OAAyB,KAAK;CAEvD,MAAM,CAAC,mBAAmB,qBAAqB,uBAAuB;EACpE,UAAU;EACV,UAAU;EACX,CAAC;CACF,MAAM,CAAC,cAAc,cAAc,gBAAgB,EACjD,GAAG,QACJ,CAAC;CAEF,MAAM,QAAQ,cAAc;EAC1B,MAAM,eAAe,0BACjB,EAAE,GACF,CAAC,cAAc,GAAI,oBAAoB,CAAC,kBAAkB,GAAG,EAAE,CAAE;AAErE,MAAI,SAAS;GACX,MAAM,yBAAyB,MAAM,MAAM,MAAM,GAAG,GAAG;GACvD,MAAM,UAAU,MAAM,MAAM,MAAM,MAAM,SAAS;AAEjD,UAAO;IAAC,GAAG;IAAwB,GAAG;IAAc;IAAQ;;AAG9D,SAAO,CAAC,GAAG,cAAc,GAAG,MAAM,MAAM;IACvC;EACD;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,EAAE,aAAa,WAAW,gBAAgB;CAEhD,MAAM,qBACJ,SACA,SACG;AAEH,MAAIC,WAASA,QAAM,MAAM,SAAS,CAAC,KAAK,CACtC,KAAI;GACF,MAAM,kBAAkBA,QACrB,KAAK,SAAS;AACb,QAAI,CAAC,KAAM,QAAO;AAClB,WAAO,KAAK;KACZ,CACD,KAAK,KAAK;AAEb,cACE,oDAAoD,KAAK,uBACzD,EACE,SAAS,wEAAwE,mBAClF,CACF;WACM,GAAG;AACV,cAAW,+CAA+C,IAAI;;AAIlE,SACEA,QAEG,QAAQ,SAAS,CAAC,CAAC,KAAK,CACxB,KAAK,MAAM,UAAU;GACpB,MAAM,SAAS,iBAAiB;AAChC,UACE,oBAAC;IAEC,IAAI;IACJ,IAAI,SAAS,WAAW,UAAU,IAAI,SAAS;cAE9C,0BAA0B;KACzB;KACA;KACA;KACA;KACA;KACA,SAAS;KACV,CAAC;MAXG,KAAK,GAYQ;IAEtB;;AAIR,QACE,oBAAC;EACC,SAAS;GAAE,GAAG;IAAS,4BAA4B;GAAS;YAE5D,oBAAC,+BACC,qBAAC;GACC,oBAAC;IAAa,cAAW;IAAO,IAAG;cACjC,qBAAC;KAAa,KAAK;gBAChB,kBAAkB,MAAM,MAAM,OAAO,EACrC,kBAAkB,OAAO,QAAQ;MACrB;KACF;GACd;GACA;MACsB,GACP;GACH"}
@@ -157,4 +157,5 @@ const appHeaderSpacing = {
157
157
  };
158
158
 
159
159
  //#endregion
160
- export { AnimatedHeaderZone, AnimatedMegaMenuDropdown, AnimatedSimpleDropdown, DropdownAnchor, DropdownIcon, StyledAppBar, StyledNavBar, StyledText, appHeaderMobileBreakpoint, appHeaderSpacing };
160
+ export { AnimatedHeaderZone, AnimatedMegaMenuDropdown, AnimatedSimpleDropdown, DropdownAnchor, DropdownIcon, StyledAppBar, StyledNavBar, StyledText, appHeaderMobileBreakpoint, appHeaderSpacing };
161
+ //# sourceMappingURL=elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.js","names":["animatedPopoverVariants: Variants","AnimatedHeaderZone: React.FC<AnimatedHeaderZoneProps>","React"],"sources":["../../../src/AppHeader/shared/elements.tsx"],"sourcesContent":["import {\n Anchor,\n Box,\n FlexBox,\n LayoutGrid,\n Text,\n WithChildrenProp,\n} from '@codecademy/gamut';\nimport { ArrowChevronDownFilledIcon } from '@codecademy/gamut-icons';\nimport {\n Colors,\n css,\n pxRem,\n states,\n useCurrentMode,\n} from '@codecademy/gamut-styles';\nimport { StyleProps } from '@codecademy/variance';\nimport styled from '@emotion/styled';\nimport {\n AnimatePresence,\n motion,\n useReducedMotion,\n Variants,\n} from 'framer-motion';\nimport * as React from 'react';\n\nimport { AppBar } from '../../AppBar';\nimport { GradientBackground } from '../AppHeaderElements/AppHeaderSection/elements';\n\nexport const appHeaderMobileBreakpoint = 'lg' as const;\n\nexport interface AnimatedHeaderZoneProps extends WithChildrenProp {\n visible?: boolean;\n}\n\nconst animatedPopoverVariants: Variants = {\n enter: { opacity: 1, transition: { duration: 0.2 } },\n exit: { opacity: 0, transition: { duration: 0.2 } },\n};\n\nexport const useMegaMenuHeaderResponsiveStyles = (): {\n bg: Colors;\n borderColor: Colors;\n color: Colors;\n} => {\n const mode = useCurrentMode();\n\n const bg = mode === 'dark' ? 'white' : 'navy-800';\n const color = mode === 'dark' ? 'navy-900' : 'blue-0';\n\n return { bg, borderColor: color, color };\n};\n\nexport const AnimatedHeaderZone: React.FC<AnimatedHeaderZoneProps> = ({\n children,\n visible,\n}) => {\n return visible ? (\n <AnimatePresence>\n <motion.div\n animate=\"enter\"\n exit=\"exit\"\n initial=\"exit\"\n variants={animatedPopoverVariants}\n >\n {children}\n </motion.div>\n </AnimatePresence>\n ) : null;\n};\n\nexport const DropdownAnchor = styled(Anchor)(\n css({\n alignItems: `center`,\n display: `flex`,\n padding: `0.5rem 0`,\n textAlign: `center`,\n whiteSpace: `nowrap`,\n\n '&:focus::before': {\n opacity: 1,\n },\n })\n);\n\nconst dropdownStates = states({\n open: {\n transform: `rotate(-180deg)`,\n },\n});\n\nexport const DropdownIcon = styled(ArrowChevronDownFilledIcon)<\n StyleProps<typeof dropdownStates>\n>(\n css({\n marginLeft: pxRem(5),\n transition: `transform 0.35s ease-out`,\n transformOrigin: `center ${pxRem(5)}`,\n }),\n dropdownStates\n);\n\nexport const StyledText = styled(Text)(\n css({\n '&::after': {\n display: `block`,\n content: `attr(title)`,\n fontWeight: `bold`,\n height: `1px`,\n color: `transparent`,\n overflow: `hidden`,\n visibility: `hidden`,\n },\n })\n);\n\nconst getDropdownAnimations = ({\n isOpen,\n prefersReducedMotion,\n}: {\n isOpen: boolean;\n prefersReducedMotion: boolean | null;\n}) => {\n const openState = {\n transform: 'translateY(0)',\n opacity: 1,\n };\n const closedState = {\n transform: prefersReducedMotion ? 'none' : 'translateY(-8px)',\n opacity: 0,\n };\n\n return {\n animate: isOpen ? openState : closedState,\n initial: closedState,\n transition: {\n duration: 0.15,\n ease: 'easeOut',\n },\n };\n};\n\nconst BaseDropdown = styled(motion.create('div'))(() =>\n css({ position: `absolute` })\n);\n\nconst MegaMenuBackdrop = styled(motion.create('div'))(\n css({\n position: 'relative',\n zIndex: -1,\n })\n);\n\nexport const AnimatedMegaMenuDropdown = React.forwardRef(\n (\n {\n isOpen,\n ...props\n }: React.ComponentProps<typeof BaseDropdown> & {\n isOpen: boolean;\n },\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const [isAnimating, setIsAnimating] = React.useState(false);\n const prefersReducedMotion = useReducedMotion();\n\n return (\n <>\n <AnimatePresence>\n {isOpen && (\n <MegaMenuBackdrop\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.15, ease: 'easeOut' }}\n >\n <GradientBackground\n key=\"dropdown-backdrop\"\n position=\"fixed\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n bottom=\"0\"\n />\n </MegaMenuBackdrop>\n )}\n </AnimatePresence>\n {/* the preferred way to animate this would be via AnimatePresence, but it is unclear if\n keeping closed dropdown content in the DOM has a positive effect on SEO */}\n <Box display={isOpen || isAnimating ? 'block' : 'none'}>\n <BaseDropdown\n key=\"dropdown-content\"\n ref={ref}\n {...getDropdownAnimations({ isOpen, prefersReducedMotion })}\n {...props}\n onAnimationComplete={(anim) => {\n if (!isOpen) {\n // only consider animation complete when dropdown is closed to prevent flickering from rapid state changes\n setIsAnimating(false);\n }\n props.onAnimationComplete?.(anim);\n }}\n onAnimationStart={(anim) => {\n setIsAnimating(true);\n props.onAnimationStart?.(anim);\n }}\n />\n </Box>\n </>\n );\n }\n);\n\nexport const AnimatedSimpleDropdown = ({\n isOpen,\n ...props\n}: React.ComponentProps<typeof BaseDropdown> & {\n isOpen: boolean;\n}) => {\n const [isAnimating, setIsAnimating] = React.useState(false);\n const prefersReducedMotion = useReducedMotion();\n\n // the preferred way to animate this would be via AnimatePresence, but it is unclear if\n // keeping closed dropdown content in the DOM has a positive effect on SEO\n return (\n <Box display={isOpen || isAnimating ? 'block' : 'none'}>\n <BaseDropdown\n {...getDropdownAnimations({ isOpen, prefersReducedMotion })}\n {...props}\n onAnimationComplete={(anim) => {\n if (!isOpen) {\n // only consider animation complete when dropdown is closed to prevent flickering from rapid state changes\n setIsAnimating(false);\n }\n props.onAnimationComplete?.(anim);\n }}\n onAnimationStart={(anim) => {\n setIsAnimating(true);\n props.onAnimationStart?.(anim);\n }}\n />\n </Box>\n );\n};\n\nexport const LayoutGridAntiAliased = styled(LayoutGrid)`\n -webkit-font-smoothing: antialiased;\n`;\n\n/* for Resources & Catalog menus */\nexport const DescriptionSectionContainer = styled(FlexBox)(\n css({\n '&:focus-visible': {\n color: 'text',\n outline: '1px solid currentColor !important',\n },\n })\n);\n\nexport const StyledAppBar = styled(AppBar)(\n css({\n boxShadow: `none`,\n })\n);\n\nexport const StyledNavBar = styled.ul(\n css({\n alignItems: 'stretch',\n display: `flex`,\n padding: 0,\n listStyle: `none`,\n margin: 0,\n width: `100%`,\n })\n);\n\nexport const appHeaderSpacing = {\n standard: 8,\n\n enterprise: 12,\n} as const;\n"],"mappings":"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"}
@@ -62,4 +62,5 @@ const useMenuKeyboardNavigation = ({ back, next, first, last, closeDropdown }) =
62
62
  };
63
63
 
64
64
  //#endregion
65
- export { useMenuKeyboardNavigation, useOnEscHandler };
65
+ export { useMenuKeyboardNavigation, useOnEscHandler };
66
+ //# sourceMappingURL=keyboardNav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboardNav.js","names":[],"sources":["../../../src/AppHeader/shared/keyboardNav.tsx"],"sourcesContent":["import { KeyboardEvent } from 'react';\n\ninterface KeyboardNavigation {\n back: (arg0: boolean) => void;\n next: (arg0: boolean) => void;\n first: () => void;\n last: () => void;\n closeDropdown: () => void;\n}\n\nexport const KEY_CODES = {\n UP: 'ArrowUp',\n DOWN: 'ArrowDown',\n LEFT: 'ArrowLeft',\n RIGHT: 'ArrowRight',\n END: 'End',\n ENTER: 'Enter',\n ESC: 'Escape',\n HOME: 'Home',\n SPACE: ' ',\n TAB: 'Tab',\n} as const;\n\nexport const useOnEscHandler = (\n escapeHandler: (e?: KeyboardEvent<HTMLDivElement>) => void\n) => {\n return (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.code === KEY_CODES.ESC) {\n e.stopPropagation();\n e.preventDefault();\n escapeHandler(e);\n }\n };\n};\n\nexport const useMenuKeyboardNavigation = ({\n back,\n next,\n first,\n last,\n closeDropdown,\n}: KeyboardNavigation) => {\n return (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.shiftKey && e.code === KEY_CODES.TAB) {\n e.stopPropagation();\n back(false);\n return;\n }\n switch (e.code) {\n case KEY_CODES.TAB:\n e.stopPropagation();\n next(false);\n break;\n case KEY_CODES.DOWN:\n e.stopPropagation();\n e.preventDefault();\n next(true);\n break;\n case KEY_CODES.UP:\n e.stopPropagation();\n e.preventDefault();\n back(true);\n break;\n case KEY_CODES.HOME:\n e.stopPropagation();\n e.preventDefault();\n first();\n break;\n case KEY_CODES.END:\n e.stopPropagation();\n e.preventDefault();\n last();\n break;\n case KEY_CODES.ESC:\n e.stopPropagation();\n e.preventDefault();\n closeDropdown();\n break;\n }\n };\n};\n"],"mappings":";AAUA,MAAa,YAAY;CACvB,IAAI;CACJ,MAAM;CACN,MAAM;CACN,OAAO;CACP,KAAK;CACL,OAAO;CACP,KAAK;CACL,MAAM;CACN,OAAO;CACP,KAAK;CACN;AAED,MAAa,mBACX,kBACG;AACH,SAAQ,MAAqC;AAC3C,MAAI,EAAE,SAAS,UAAU,KAAK;AAC5B,KAAE,iBAAiB;AACnB,KAAE,gBAAgB;AAClB,iBAAc,EAAE;;;;AAKtB,MAAa,6BAA6B,EACxC,MACA,MACA,OACA,MACA,oBACwB;AACxB,SAAQ,MAAqC;AAC3C,MAAI,EAAE,YAAY,EAAE,SAAS,UAAU,KAAK;AAC1C,KAAE,iBAAiB;AACnB,QAAK,MAAM;AACX;;AAEF,UAAQ,EAAE,MAAV;GACE,KAAK,UAAU;AACb,MAAE,iBAAiB;AACnB,SAAK,MAAM;AACX;GACF,KAAK,UAAU;AACb,MAAE,iBAAiB;AACnB,MAAE,gBAAgB;AAClB,SAAK,KAAK;AACV;GACF,KAAK,UAAU;AACb,MAAE,iBAAiB;AACnB,MAAE,gBAAgB;AAClB,SAAK,KAAK;AACV;GACF,KAAK,UAAU;AACb,MAAE,iBAAiB;AACnB,MAAE,gBAAgB;AAClB,WAAO;AACP;GACF,KAAK,UAAU;AACb,MAAE,iBAAiB;AACnB,MAAE,gBAAgB;AAClB,UAAM;AACN;GACF,KAAK,UAAU;AACb,MAAE,iBAAiB;AACnB,MAAE,gBAAgB;AAClB,mBAAe;AACf"}
@@ -108,4 +108,5 @@ type FormattedMobileAppHeaderItems = FormattedAppHeaderItems & {
108
108
  };
109
109
  type AnchorRefItemType = RefObject<HTMLAnchorElement>['current'] | RefObject<HTMLButtonElement>['current'] | null;
110
110
  //#endregion
111
- export { AnchorRefItemType, AppFooterResourcesDataItem, AppHeaderAction, AppHeaderCatalogDropdownItem, AppHeaderClickHandler, AppHeaderDescriptiveLinkItem, AppHeaderDropdownItem, AppHeaderFillButtonItem, AppHeaderIconButtonItem, AppHeaderItem, AppHeaderItemWithHref, AppHeaderLinkItem, AppHeaderLogoItem, AppHeaderProfileDropdownItem, AppHeaderRenderElementItem, AppHeaderResourcesDataItem, AppHeaderResourcesDropdownItem, AppHeaderResourcesSimpleDropdownItem, AppHeaderSimpleDropdownItem, AppHeaderStrokeButtonItem, AppHeaderTextButtonItem, FormattedAppHeaderItems, FormattedMobileAppHeaderItems, isAppHeaderItemWithHref };
111
+ export { AnchorRefItemType, AppFooterResourcesDataItem, AppHeaderAction, AppHeaderCatalogDropdownItem, AppHeaderClickHandler, AppHeaderDescriptiveLinkItem, AppHeaderDropdownItem, AppHeaderFillButtonItem, AppHeaderIconButtonItem, AppHeaderItem, AppHeaderItemWithHref, AppHeaderLinkItem, AppHeaderLogoItem, AppHeaderProfileDropdownItem, AppHeaderRenderElementItem, AppHeaderResourcesDataItem, AppHeaderResourcesDropdownItem, AppHeaderResourcesSimpleDropdownItem, AppHeaderSimpleDropdownItem, AppHeaderStrokeButtonItem, AppHeaderTextButtonItem, FormattedAppHeaderItems, FormattedMobileAppHeaderItems, isAppHeaderItemWithHref };
112
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/AppHeader/shared/types.ts"],"sourcesContent":[],"mappings":"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"}
@@ -2,4 +2,5 @@
2
2
  const isAppHeaderItemWithHref = (item) => !!item.href;
3
3
 
4
4
  //#endregion
5
- export { isAppHeaderItemWithHref };
5
+ export { isAppHeaderItemWithHref };
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/AppHeader/shared/types.ts"],"sourcesContent":["import {\n Anchor,\n BadgeProps,\n FillButtonProps,\n IconButtonProps,\n StrokeButtonProps,\n TextButtonProps,\n} from '@codecademy/gamut';\nimport { GamutIconProps } from '@codecademy/gamut-icons';\nimport React, { ComponentProps, ReactNode, RefObject } from 'react';\n\nexport type AppHeaderItem =\n | AppHeaderItemWithHref\n | AppHeaderSimpleDropdownItem\n | AppHeaderProfileDropdownItem\n | AppHeaderRenderElementItem\n | AppHeaderCatalogDropdownItem\n | AppHeaderDescriptiveLinkItem\n | AppHeaderResourcesDropdownItem\n | AppHeaderResourcesSimpleDropdownItem;\n\nexport type AppHeaderItemWithHref =\n | AppHeaderLogoItem\n | AppHeaderLinkItem\n | AppHeaderTextButtonItem\n | AppHeaderFillButtonItem\n | AppHeaderStrokeButtonItem\n | AppHeaderIconButtonItem;\n\ntype AppHeaderBaseItem<Type extends string> = {\n dataTestId?: string;\n id: string;\n redirect?: boolean;\n type: Type;\n};\n\ntype AppHeaderBaseHrefItem<Type extends string> = AppHeaderBaseItem<Type> & {\n href: string;\n trackingTarget?: string;\n};\n\nexport type AppHeaderLogoItem = AppHeaderBaseHrefItem<'logo'> & {\n enterprise: boolean;\n pro: boolean;\n checkMini?: boolean;\n removeAnchorLink?: boolean;\n};\n\nexport type AppHeaderLinkItem = AppHeaderBaseHrefItem<'link'> &\n Pick<ComponentProps<typeof Anchor>, 'icon' | 'iconPosition'> & {\n ariaLabel?: string;\n newTab?: boolean;\n text: string;\n badge?: React.ReactElement<BadgeProps>;\n };\n\nexport type AppHeaderStrokeButtonItem = AppHeaderBaseHrefItem<'stroke-button'> &\n Pick<StrokeButtonProps, 'variant' | 'icon' | 'iconPosition'> & {\n text: string;\n };\n\nexport type AppHeaderTextButtonItem = AppHeaderBaseHrefItem<'text-button'> &\n Pick<TextButtonProps, 'variant' | 'icon' | 'iconPosition'> & {\n text: string;\n };\n\nexport type AppHeaderFillButtonItem = AppHeaderBaseHrefItem<'fill-button'> &\n Pick<FillButtonProps, 'variant' | 'icon' | 'iconPosition'> & {\n text: string;\n };\n\nexport type AppHeaderIconButtonItem = AppHeaderBaseHrefItem<'icon-button'> &\n Pick<IconButtonProps, 'variant' | 'icon'> & {\n text: string;\n };\n\nexport type AppHeaderDropdownItem =\n | AppHeaderSimpleDropdownItem\n | AppHeaderProfileDropdownItem\n | AppHeaderResourcesSimpleDropdownItem;\n\nexport type AppHeaderSimpleDropdownItem = AppHeaderBaseItem<'dropdown'> & {\n popover: AppHeaderLinkItem[];\n text: string;\n trackingTarget: string;\n icon?: React.ComponentType<GamutIconProps>;\n isIconOnly?: boolean;\n};\n\nexport type AppHeaderProfileDropdownItem =\n AppHeaderBaseItem<'profile-dropdown'> & {\n avatar: string;\n userDisplayName: string;\n //* * AppHeader items that go into the AppHeader. Each array will be in its own section */\n popover: AppHeaderLinkItem[][];\n text: string;\n trackingTarget?: string;\n };\n\nexport type AppHeaderRenderElementItem = AppHeaderBaseItem<'render-element'> & {\n renderElement: () => ReactNode;\n};\n\nexport type AppHeaderCatalogDropdownItem =\n AppHeaderBaseItem<'catalog-dropdown'> & {\n icon?: React.ComponentType<GamutIconProps>;\n text: string;\n trackingTarget?: string;\n hideCareerPaths?: boolean;\n isCoachingEnabled?: boolean;\n };\n\nexport type AppHeaderResourcesDropdownItem =\n AppHeaderBaseItem<'resources-dropdown'> & {\n text: string;\n trackingTarget?: string;\n hideCareerPaths?: boolean;\n icon?: React.ComponentType<GamutIconProps>;\n };\n\nexport type AppHeaderResourcesSimpleDropdownItem =\n AppHeaderBaseItem<'resources-simple-dropdown'> & {\n icon?: React.ComponentType<GamutIconProps>;\n text: string;\n trackingTarget?: string;\n hideCareerPaths?: boolean;\n popover: AppHeaderLinkItem[];\n };\n\nexport type AppHeaderClickHandler<ItemType = AppHeaderItem> = (\n event: React.MouseEvent,\n item: ItemType\n) => void;\n\nexport type AppHeaderAction = {\n /** A method to be called on click/activating a header item */\n action: AppHeaderClickHandler;\n};\n\nexport const isAppHeaderItemWithHref = (\n item: AppHeaderItem\n): item is AppHeaderItemWithHref => !!(item as AppHeaderItemWithHref).href;\n\nexport type AppHeaderDescriptiveLinkItem = AppHeaderLinkItem & {\n description: string;\n};\n\nexport type AppHeaderResourcesDataItem = {\n title: string;\n description?: string;\n links?: AppHeaderLinkItem[];\n data: (AppHeaderLinkItem | AppHeaderDescriptiveLinkItem)[];\n};\n\nexport type AppFooterResourcesDataItem = {\n id: string;\n href: string;\n trackingTarget: string;\n text: string;\n newTab?: boolean;\n};\n\nexport type FormattedAppHeaderItems = {\n left: AppHeaderItem[];\n right: AppHeaderItem[];\n};\n\nexport type FormattedMobileAppHeaderItems = FormattedAppHeaderItems & {\n mainMenu: AppHeaderItem[];\n};\n\nexport type AnchorRefItemType =\n | RefObject<HTMLAnchorElement>['current']\n | RefObject<HTMLButtonElement>['current']\n | null;\n"],"mappings":";AA2IA,MAAa,2BACX,SACkC,CAAC,CAAE,KAA+B"}
@@ -81,4 +81,5 @@ const mapAppHeaderItemToElement = ({ action, item, isStandalone, isTeams, redire
81
81
  };
82
82
 
83
83
  //#endregion
84
- export { mapAppHeaderItemToElement };
84
+ export { mapAppHeaderItemToElement };
85
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../src/AppHeader/shared/utils.tsx"],"sourcesContent":["import {\n FillButton,\n IconButton,\n Menu,\n StrokeButton,\n TextButton,\n} from '@codecademy/gamut';\nimport { ComponentProps, ReactNode } from 'react';\n\nimport { formatUrlWithRedirect } from '../../GlobalHeader/urlHelpers';\nimport { AppHeaderCatalogDropdown } from '../AppHeaderElements/AppHeaderCatalogDropdown';\nimport { AppHeaderDropdown } from '../AppHeaderElements/AppHeaderDropdown';\nimport { AppHeaderLink } from '../AppHeaderElements/AppHeaderLink';\nimport { AppHeaderLogo } from '../AppHeaderElements/AppHeaderLogo';\nimport { AppHeaderResourcesDropdown } from '../AppHeaderElements/AppHeaderResourcesDropdown';\nimport { AppHeaderClickHandler, AppHeaderItem } from './types';\n\ntype AppHeaderItemToElementType = {\n action: AppHeaderClickHandler;\n item: AppHeaderItem;\n isStandalone?: boolean;\n isTeams?: boolean;\n redirectParam?: string;\n mobile?: boolean;\n spacing?: ComponentProps<typeof Menu>['spacing'];\n};\n\nexport const mapAppHeaderItemToElement = ({\n action,\n item,\n isStandalone,\n isTeams,\n redirectParam,\n mobile = false,\n spacing = 'normal',\n}: AppHeaderItemToElementType): ReactNode => {\n // preventative measure to handle a possibly undefined item from being rendered\n if (!item) return null;\n\n switch (item.type) {\n case 'logo':\n return <AppHeaderLogo action={action} item={item} />;\n case 'link':\n return <AppHeaderLink mx={0} action={action} item={item} />;\n case 'dropdown':\n case 'resources-simple-dropdown':\n case 'profile-dropdown':\n return (\n <AppHeaderDropdown\n action={action}\n item={item}\n standalone={isStandalone}\n spacing={spacing}\n />\n );\n case 'catalog-dropdown':\n return <AppHeaderCatalogDropdown action={action} item={item} />;\n case 'resources-dropdown':\n return <AppHeaderResourcesDropdown action={action} item={item} />;\n\n case 'render-element':\n return item.renderElement();\n case 'text-button':\n return (\n <TextButton\n size={mobile ? 'small' : 'normal'}\n onClick={(event: React.MouseEvent) => action(event, item)}\n data-testid={item.dataTestId}\n href={\n item.redirect\n ? formatUrlWithRedirect(item.href, redirectParam)\n : item.href\n }\n variant={isTeams ? 'primary' : 'interface'}\n icon={item.icon}\n iconPosition={item.iconPosition}\n >\n {item.text}\n </TextButton>\n );\n case 'fill-button':\n return (\n <FillButton\n size={mobile ? 'small' : 'normal'}\n data-testid={item.dataTestId}\n href={\n item.redirect\n ? formatUrlWithRedirect(item.href, redirectParam)\n : item.href\n }\n onClick={(event: React.MouseEvent) => action(event, item)}\n variant={item.variant || 'interface'}\n icon={item.icon}\n iconPosition={item.iconPosition}\n >\n {item.text}\n </FillButton>\n );\n case 'stroke-button':\n return (\n <StrokeButton\n size={mobile ? 'small' : 'normal'}\n data-testid={item.dataTestId}\n href={\n item.redirect\n ? formatUrlWithRedirect(item.href, redirectParam)\n : item.href\n }\n onClick={(event: React.MouseEvent) => action(event, item)}\n variant={item.variant || 'interface'}\n icon={item.icon}\n iconPosition={item.iconPosition}\n >\n {item.text}\n </StrokeButton>\n );\n case 'icon-button':\n return (\n <IconButton\n size={mobile ? 'small' : 'normal'}\n data-testid={item.dataTestId}\n href={\n item.redirect\n ? formatUrlWithRedirect(item.href, redirectParam)\n : item.href\n }\n onClick={(event: React.MouseEvent) => action(event, item)}\n variant={item.variant || 'interface'}\n icon={item.icon}\n tip={item.text}\n tipProps={{ alignment: 'bottom-center' }}\n />\n );\n }\n};\n"],"mappings":";;;;;;;;;;AA2BA,MAAa,6BAA6B,EACxC,QACA,MACA,cACA,SACA,eACA,SAAS,OACT,UAAU,eACiC;AAE3C,KAAI,CAAC,KAAM,QAAO;AAElB,SAAQ,KAAK,MAAb;EACE,KAAK,OACH,QAAO,oBAAC;GAAsB;GAAc;IAAQ;EACtD,KAAK,OACH,QAAO,oBAAC;GAAc,IAAI;GAAW;GAAc;IAAQ;EAC7D,KAAK;EACL,KAAK;EACL,KAAK,mBACH,QACE,oBAAC;GACS;GACF;GACN,YAAY;GACH;IACT;EAEN,KAAK,mBACH,QAAO,oBAAC;GAAiC;GAAc;IAAQ;EACjE,KAAK,qBACH,QAAO,oBAAC;GAAmC;GAAc;IAAQ;EAEnE,KAAK,iBACH,QAAO,KAAK,eAAe;EAC7B,KAAK,cACH,QACE,oBAAC;GACC,MAAM,SAAS,UAAU;GACzB,UAAU,UAA4B,OAAO,OAAO,KAAK;GACzD,eAAa,KAAK;GAClB,MACE,KAAK,WACD,sBAAsB,KAAK,MAAM,cAAc,GAC/C,KAAK;GAEX,SAAS,UAAU,YAAY;GAC/B,MAAM,KAAK;GACX,cAAc,KAAK;aAElB,KAAK;IACK;EAEjB,KAAK,cACH,QACE,oBAAC;GACC,MAAM,SAAS,UAAU;GACzB,eAAa,KAAK;GAClB,MACE,KAAK,WACD,sBAAsB,KAAK,MAAM,cAAc,GAC/C,KAAK;GAEX,UAAU,UAA4B,OAAO,OAAO,KAAK;GACzD,SAAS,KAAK,WAAW;GACzB,MAAM,KAAK;GACX,cAAc,KAAK;aAElB,KAAK;IACK;EAEjB,KAAK,gBACH,QACE,oBAAC;GACC,MAAM,SAAS,UAAU;GACzB,eAAa,KAAK;GAClB,MACE,KAAK,WACD,sBAAsB,KAAK,MAAM,cAAc,GAC/C,KAAK;GAEX,UAAU,UAA4B,OAAO,OAAO,KAAK;GACzD,SAAS,KAAK,WAAW;GACzB,MAAM,KAAK;GACX,cAAc,KAAK;aAElB,KAAK;IACO;EAEnB,KAAK,cACH,QACE,oBAAC;GACC,MAAM,SAAS,UAAU;GACzB,eAAa,KAAK;GAClB,MACE,KAAK,WACD,sBAAsB,KAAK,MAAM,cAAc,GAC/C,KAAK;GAEX,UAAU,UAA4B,OAAO,OAAO,KAAK;GACzD,SAAS,KAAK,WAAW;GACzB,MAAM,KAAK;GACX,KAAK,KAAK;GACV,UAAU,EAAE,WAAW,iBAAiB;IACxC"}
@@ -10,4 +10,5 @@ type AppHeaderMainMenuMobileProps = AppHeaderAction & {
10
10
  };
11
11
  declare const AppHeaderMainMenuMobile: React$1.FC<AppHeaderMainMenuMobileProps>;
12
12
  //#endregion
13
- export { AppHeaderMainMenuMobile, AppHeaderMainMenuMobileProps };
13
+ export { AppHeaderMainMenuMobile, AppHeaderMainMenuMobileProps };
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/AppHeaderMobile/AppHeaderMainMenuMobile/index.tsx"],"sourcesContent":[],"mappings":";;;;;KAgDY,4BAAA,GAA+B;SAClC;;EADG,MAAA,EAAA,OAAA;AAMZ,CAAA;cAAa,yBAAyB,OAAA,CAAM,GAC1C"}
@@ -120,4 +120,5 @@ const AppHeaderMainMenuMobile = ({ action, items, getItemType, isAnon }) => {
120
120
  };
121
121
 
122
122
  //#endregion
123
- export { AppHeaderMainMenuMobile };
123
+ export { AppHeaderMainMenuMobile };
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["AppHeaderMainMenuMobile: React.FC<\n AppHeaderMainMenuMobileProps\n>","action"],"sources":["../../../src/AppHeaderMobile/AppHeaderMainMenuMobile/index.tsx"],"sourcesContent":["import {\n Box,\n ContentContainer,\n FillButton,\n Text,\n TextButton,\n} from '@codecademy/gamut';\nimport { css, theme } from '@codecademy/gamut-styles';\nimport styled from '@emotion/styled';\nimport { useState } from 'react';\nimport * as React from 'react';\n\nimport { AppHeaderLink } from '../../AppHeader/AppHeaderElements/AppHeaderLink';\nimport { AppHeaderLinkSections } from '../../AppHeader/AppHeaderElements/AppHeaderLinkSections';\nimport {\n AppHeaderAction,\n AppHeaderClickHandler,\n AppHeaderDropdownItem,\n AppHeaderItem,\n} from '../../AppHeader/shared';\nimport {\n login,\n requestTeamsDemo,\n signUp,\n signUpTextButton,\n} from '../../GlobalHeader/GlobalHeaderItems';\nimport { AppHeaderSubNavMobile } from '../AppHeaderSubMenuMobile';\nimport { MobileUlWrapper } from '../AppHeaderSubMenuMobile/elements';\nimport { AppHeaderSubMenuRow } from '../AppHeaderSubMenuTarget';\n\nconst isBusinessPage = () => {\n if (typeof window === 'undefined') return false;\n return (\n window.location.pathname === '/business' ||\n window.location.pathname === '/business/pricing'\n );\n};\n\nconst BackgroundWrapper = styled(Box)(\n css({\n background: theme.colors.white,\n border: 1,\n borderColor: 'border-tertiary',\n borderRadius: 'lg',\n padding: '16px',\n })\n);\n\nexport type AppHeaderMainMenuMobileProps = AppHeaderAction & {\n items: AppHeaderItem[];\n getItemType: (type: string | undefined) => void;\n isAnon: boolean;\n};\n\nexport const AppHeaderMainMenuMobile: React.FC<\n AppHeaderMainMenuMobileProps\n> = ({ action, items, getItemType, isAnon }) => {\n const [subMenuItem, setSubMenuItem] = useState<AppHeaderDropdownItem>();\n\n const openSubMenu = (\n event: React.MouseEvent,\n item: AppHeaderDropdownItem\n ) => {\n action(event, item);\n setSubMenuItem(item);\n getItemType(item.type);\n };\n\n const closeSubMenu = () => {\n setSubMenuItem(undefined);\n getItemType(undefined);\n };\n\n const mapItemToElement = (\n item: AppHeaderItem,\n action: AppHeaderClickHandler\n ) => {\n switch (item.type) {\n case 'link':\n return (\n <AppHeaderLink action={action} item={item} key={item.id} mobile />\n );\n case 'dropdown':\n case 'profile-dropdown':\n case 'catalog-dropdown':\n case 'resources-dropdown':\n return (\n <AppHeaderSubMenuRow\n key={item.id}\n item={item}\n openSubMenu={openSubMenu}\n />\n );\n case 'resources-simple-dropdown':\n return (\n <>\n <Text as=\"h2\" fontSize={22} mt={16} mb={16}>\n {item.text}\n </Text>\n <AppHeaderLinkSections action={action} item={item} mobile />\n </>\n );\n case 'fill-button':\n return (\n <FillButton\n data-testid={item.dataTestId}\n href={item.href}\n onClick={(event: React.MouseEvent) => action(event, item)}\n mt={24}\n key={item.id}\n >\n {item.text}\n </FillButton>\n );\n case 'text-button':\n return (\n <TextButton\n mt={16}\n key={item.id}\n data-testid={item.dataTestId}\n href={item.href}\n onClick={(event: React.MouseEvent) => action(event, item)}\n >\n {item.text}\n </TextButton>\n );\n default:\n return <></>;\n }\n };\n\n return subMenuItem ? (\n <AppHeaderSubNavMobile\n handleCloseSubMenu={closeSubMenu}\n action={action}\n item={subMenuItem}\n />\n ) : (\n <ContentContainer\n role=\"navigation\"\n aria-label=\"site navigation\"\n tabIndex={-1}\n >\n <BackgroundWrapper>\n <MobileUlWrapper as=\"ul\">\n {items.map((item) => mapItemToElement(item, action))}\n {isAnon && (\n <div\n // eslint-disable-next-line gamut/no-inline-style\n style={{\n display: 'flex',\n alignItems: 'baseline',\n justifyContent: 'center',\n paddingTop: '16px',\n borderTop: '1px solid var(--border-tertiary)',\n }}\n >\n {isBusinessPage() ? (\n <>\n <TextButton\n data-testid={signUpTextButton.dataTestId}\n href={signUpTextButton.href}\n onClick={(event: React.MouseEvent) =>\n action(event, signUpTextButton)\n }\n key={signUpTextButton.id}\n >\n {signUpTextButton.text}\n </TextButton>\n\n <FillButton\n data-testid={requestTeamsDemo.dataTestId}\n href={requestTeamsDemo.href}\n onClick={(event: React.MouseEvent) =>\n action(event, requestTeamsDemo)\n }\n key={requestTeamsDemo.id}\n >\n {requestTeamsDemo.text}\n </FillButton>\n </>\n ) : (\n <>\n <FillButton\n data-testid={signUp.dataTestId}\n href={signUp.href}\n onClick={(event: React.MouseEvent) => action(event, signUp)}\n key={signUp.id}\n >\n {signUp.text}\n </FillButton>\n\n <TextButton\n key={login.id}\n data-testid={login.dataTestId}\n href={login.href}\n onClick={(event: React.MouseEvent) => action(event, login)}\n >\n {login.text}\n </TextButton>\n </>\n )}\n </div>\n )}\n </MobileUlWrapper>\n </BackgroundWrapper>\n </ContentContainer>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AA8BA,MAAM,uBAAuB;AAC3B,KAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QACE,OAAO,SAAS,aAAa,eAC7B,OAAO,SAAS,aAAa;;AAIjC,MAAM,oBAAoB,OAAO,IAAI,CACnC,IAAI;CACF,YAAY,MAAM,OAAO;CACzB,QAAQ;CACR,aAAa;CACb,cAAc;CACd,SAAS;CACV,CAAC,CACH;AAQD,MAAaA,2BAER,EAAE,QAAQ,OAAO,aAAa,aAAa;CAC9C,MAAM,CAAC,aAAa,kBAAkB,UAAiC;CAEvE,MAAM,eACJ,OACA,SACG;AACH,SAAO,OAAO,KAAK;AACnB,iBAAe,KAAK;AACpB,cAAY,KAAK,KAAK;;CAGxB,MAAM,qBAAqB;AACzB,iBAAe,OAAU;AACzB,cAAY,OAAU;;CAGxB,MAAM,oBACJ,MACA,aACG;AACH,UAAQ,KAAK,MAAb;GACE,KAAK,OACH,QACE,oBAAC;IAAc,QAAQC;IAAc;IAAoB;MAAT,KAAK,GAAa;GAEtE,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,qBACH,QACE,oBAAC;IAEO;IACO;MAFR,KAAK,GAGV;GAEN,KAAK,4BACH,QACE,4CACE,oBAAC;IAAK,IAAG;IAAK,UAAU;IAAI,IAAI;IAAI,IAAI;cACrC,KAAK;KACD,EACP,oBAAC;IAAsB,QAAQA;IAAc;IAAM;KAAS,IAC3D;GAEP,KAAK,cACH,QACE,oBAAC;IACC,eAAa,KAAK;IAClB,MAAM,KAAK;IACX,UAAU,UAA4BA,SAAO,OAAO,KAAK;IACzD,IAAI;cAGH,KAAK;MAFD,KAAK,GAGC;GAEjB,KAAK,cACH,QACE,oBAAC;IACC,IAAI;IAEJ,eAAa,KAAK;IAClB,MAAM,KAAK;IACX,UAAU,UAA4BA,SAAO,OAAO,KAAK;cAExD,KAAK;MALD,KAAK,GAMC;GAEjB,QACE,QAAO,iCAAK;;;AAIlB,QAAO,cACL,oBAAC;EACC,oBAAoB;EACZ;EACR,MAAM;GACN,GAEF,oBAAC;EACC,MAAK;EACL,cAAW;EACX,UAAU;YAEV,oBAAC,+BACC,qBAAC;GAAgB,IAAG;cACjB,MAAM,KAAK,SAAS,iBAAiB,MAAM,OAAO,CAAC,EACnD,UACC,oBAAC;IAEC,OAAO;KACL,SAAS;KACT,YAAY;KACZ,gBAAgB;KAChB,YAAY;KACZ,WAAW;KACZ;cAEA,gBAAgB,GACf,4CACE,oBAAC;KACC,eAAa,iBAAiB;KAC9B,MAAM,iBAAiB;KACvB,UAAU,UACR,OAAO,OAAO,iBAAiB;eAIhC,iBAAiB;OAFb,iBAAiB,GAGX,EAEb,oBAAC;KACC,eAAa,iBAAiB;KAC9B,MAAM,iBAAiB;KACvB,UAAU,UACR,OAAO,OAAO,iBAAiB;eAIhC,iBAAiB;OAFb,iBAAiB,GAGX,IACZ,GAEH,4CACE,oBAAC;KACC,eAAa,OAAO;KACpB,MAAM,OAAO;KACb,UAAU,UAA4B,OAAO,OAAO,OAAO;eAG1D,OAAO;OAFH,OAAO,GAGD,EAEb,oBAAC;KAEC,eAAa,MAAM;KACnB,MAAM,MAAM;KACZ,UAAU,UAA4B,OAAO,OAAO,MAAM;eAEzD,MAAM;OALF,MAAM,GAMA,IACZ;KAED;IAEQ,GACA;GACH"}
@@ -23,4 +23,5 @@ const MobileSubMenuWrapper = ({ children, handleClose, isMenuRole }) => {
23
23
  };
24
24
 
25
25
  //#endregion
26
- export { MobileSubMenuWrapper, MobileUlWrapper };
26
+ export { MobileSubMenuWrapper, MobileUlWrapper };
27
+ //# sourceMappingURL=elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.js","names":[],"sources":["../../../src/AppHeaderMobile/AppHeaderSubMenuMobile/elements.tsx"],"sourcesContent":["import { focusVisibleStyle } from '@codecademy/gamut';\nimport { css } from '@codecademy/gamut-styles';\nimport styled from '@emotion/styled';\nimport { PropsWithChildren } from 'react';\n\nimport { AppHeaderListItem } from '../../AppHeader/AppHeaderElements/AppHeaderListItem';\nimport {\n AppHeaderMenuProvider,\n AppHeaderMenuProviderProps,\n} from '../../AppHeader/AppHeaderElements/AppHeaderMenuProvider';\n\nconst uiWrapperFocus = focusVisibleStyle('-4px');\n\nexport const MobileUlWrapper = styled.ul(\n css({\n listStyle: 'none',\n p: 0,\n m: 0,\n pb: 4,\n ...uiWrapperFocus,\n })\n);\n\ntype MobileSubMenuWrapperProps =\n | Pick<AppHeaderMenuProviderProps, 'handleClose'> & { isMenuRole: boolean };\n\nexport const MobileSubMenuWrapper = ({\n children,\n handleClose,\n isMenuRole,\n}: PropsWithChildren<MobileSubMenuWrapperProps>) => {\n return isMenuRole ? (\n <AppHeaderMenuProvider as={AppHeaderListItem} handleClose={handleClose}>\n {children}\n </AppHeaderMenuProvider>\n ) : (\n <AppHeaderListItem>{children}</AppHeaderListItem>\n );\n};\n"],"mappings":";;;;;;;;AAWA,MAAM,iBAAiB,kBAAkB,OAAO;AAEhD,MAAa,kBAAkB,OAAO,GACpC,IAAI;CACF,WAAW;CACX,GAAG;CACH,GAAG;CACH,IAAI;CACJ,GAAG;CACJ,CAAC,CACH;AAKD,MAAa,wBAAwB,EACnC,UACA,aACA,iBACkD;AAClD,QAAO,aACL,oBAAC;EAAsB,IAAI;EAAgC;EACxD;GACqB,GAExB,oBAAC,qBAAmB,WAA6B"}
@@ -9,4 +9,5 @@ type AppHeaderSubMenuMobileProps = (AppHeaderDropdownProps | AppHeaderCatalogDro
9
9
  };
10
10
  declare const AppHeaderSubNavMobile: React$1.FC<AppHeaderSubMenuMobileProps>;
11
11
  //#endregion
12
- export { AppHeaderSubMenuMobileProps, AppHeaderSubNavMobile };
12
+ export { AppHeaderSubMenuMobileProps, AppHeaderSubNavMobile };
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/AppHeaderMobile/AppHeaderSubMenuMobile/index.tsx"],"sourcesContent":[],"mappings":";;;;;;KAwBY,2BAAA,IACR,yBACA,gCACA;;AAHJ,CAAA;AACI,cAqES,qBArET,EAqEgC,OAAA,CAAM,EArEtC,CAqEyC,2BArEzC,CAAA"}
@@ -104,4 +104,5 @@ const AppHeaderSubNavMobile = ({ action, handleCloseSubMenu, item }) => {
104
104
  };
105
105
 
106
106
  //#endregion
107
- export { AppHeaderSubNavMobile };
107
+ export { AppHeaderSubNavMobile };
108
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["AppHeaderSubNavMobile: React.FC<AppHeaderSubMenuMobileProps>"],"sources":["../../../src/AppHeaderMobile/AppHeaderSubMenuMobile/index.tsx"],"sourcesContent":["import { Anchor, Box, Menu, Text } from '@codecademy/gamut';\nimport { ArrowLeftIcon } from '@codecademy/gamut-icons';\nimport { css, states, theme } from '@codecademy/gamut-styles';\nimport styled from '@emotion/styled';\nimport { useEffect, useRef } from 'react';\nimport * as React from 'react';\n\nimport { AppHeaderCatalogDropdownProps } from '../../AppHeader/AppHeaderElements/AppHeaderCatalogDropdown';\nimport { CATALOG_NAV_SECTIONS } from '../../AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/consts';\nimport { MarketingBanner } from '../../AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/MarketingBanner';\nimport { AppHeaderDropdownProps } from '../../AppHeader/AppHeaderElements/AppHeaderDropdown';\nimport { AppHeaderLinkSections } from '../../AppHeader/AppHeaderElements/AppHeaderLinkSections';\nimport { AppHeaderListItem } from '../../AppHeader/AppHeaderElements/AppHeaderListItem';\nimport { AppHeaderResourceDropdownProps } from '../../AppHeader/AppHeaderElements/AppHeaderResourcesDropdown';\nimport { RESOURCES_NAV_SECTIONS } from '../../AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts';\nimport { AppHeaderSection } from '../../AppHeader/AppHeaderElements/AppHeaderSection';\nimport {\n AppHeaderCatalogDropdownItem,\n AppHeaderClickHandler,\n AppHeaderDropdownItem,\n AppHeaderResourcesDropdownItem,\n} from '../../AppHeader/shared';\nimport { MobileSubMenuWrapper, MobileUlWrapper } from './elements';\n\nexport type AppHeaderSubMenuMobileProps = (\n | AppHeaderDropdownProps\n | AppHeaderCatalogDropdownProps\n | AppHeaderResourceDropdownProps\n) & {\n handleCloseSubMenu: () => void;\n};\n\ntype AppHeaderSectionItem =\n | AppHeaderDropdownItem\n | AppHeaderCatalogDropdownItem\n | AppHeaderResourcesDropdownItem;\n\nconst StyledAnchor = styled(Anchor)(\n css({\n alignItems: `center`,\n display: `flex`,\n width: 'calc(100% - 64px)',\n py: 8,\n mt: 0,\n mb: 16,\n })\n);\n\nconst BackgroundWrapper = styled(Box)<{\n isNotCatalogOrResources: boolean;\n}>(\n states({\n isNotCatalogOrResources: {\n background: theme.colors.white,\n border: 1,\n borderColor: 'border-tertiary',\n borderRadius: 'lg',\n padding: '16px',\n mx: 16,\n },\n })\n);\n\nconst renderHeaderSection = (\n item: AppHeaderSectionItem,\n action: AppHeaderClickHandler,\n handleCloseSubMenu: () => void\n) => {\n switch (item.type) {\n case 'catalog-dropdown':\n return (\n <AppHeaderSection\n navSections={CATALOG_NAV_SECTIONS}\n MarketingBanner={MarketingBanner}\n isMobile\n handleClose={handleCloseSubMenu}\n type=\"catalog-dropdown\"\n isCoachingEnabled={item.isCoachingEnabled}\n />\n );\n case 'resources-dropdown':\n return (\n <AppHeaderSection\n navSections={RESOURCES_NAV_SECTIONS}\n isMobile\n handleClose={handleCloseSubMenu}\n type=\"resources-dropdown\"\n />\n );\n default:\n return <AppHeaderLinkSections action={action} item={item} mobile />;\n }\n};\n\nexport const AppHeaderSubNavMobile: React.FC<AppHeaderSubMenuMobileProps> = ({\n action,\n handleCloseSubMenu,\n item,\n}) => {\n const mainUlWrapper = useRef<HTMLUListElement>(null);\n\n useEffect(() => {\n if (mainUlWrapper?.current) {\n mainUlWrapper.current.focus();\n }\n }, []);\n\n const isProfileMenu = item.type === 'profile-dropdown';\n\n const isCatalogOrResourcesMenu =\n item.type === 'catalog-dropdown' || item.type === 'resources-dropdown';\n\n const renderBackButton = () => {\n if (!isCatalogOrResourcesMenu) {\n return (\n <AppHeaderListItem>\n <StyledAnchor\n onClick={handleCloseSubMenu}\n variant=\"interface\"\n as=\"button\"\n >\n <ArrowLeftIcon size={24} aria-hidden />\n <Text pl={8}>Back</Text>\n </StyledAnchor>\n </AppHeaderListItem>\n );\n }\n return null;\n };\n\n return (\n <BackgroundWrapper isNotCatalogOrResources={!isCatalogOrResourcesMenu}>\n <MobileUlWrapper ref={mainUlWrapper} tabIndex={-1}>\n {renderBackButton()}\n <MobileSubMenuWrapper\n handleClose={handleCloseSubMenu}\n isMenuRole={isProfileMenu}\n >\n {!isCatalogOrResourcesMenu && (\n <Text as=\"h1\" fontSize={20} mb={16} ml={0}>\n {isProfileMenu ? item.userDisplayName : item.text}\n </Text>\n )}\n <Menu\n variant=\"fixed\"\n mx={isCatalogOrResourcesMenu ? { _: 16, sm: 32 } : 0}\n width=\"auto\"\n bg=\"transparent\"\n >\n {renderHeaderSection(item, action, handleCloseSubMenu)}\n </Menu>\n </MobileSubMenuWrapper>\n </MobileUlWrapper>\n </BackgroundWrapper>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAqCA,MAAM,eAAe,OAAO,OAAO,CACjC,IAAI;CACF,YAAY;CACZ,SAAS;CACT,OAAO;CACP,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,CAAC,CACH;AAED,MAAM,oBAAoB,OAAO,IAAI,CAGnC,OAAO,EACL,yBAAyB;CACvB,YAAY,MAAM,OAAO;CACzB,QAAQ;CACR,aAAa;CACb,cAAc;CACd,SAAS;CACT,IAAI;CACL,EACF,CAAC,CACH;AAED,MAAM,uBACJ,MACA,QACA,uBACG;AACH,SAAQ,KAAK,MAAb;EACE,KAAK,mBACH,QACE,oBAAC;GACC,aAAa;GACI;GACjB;GACA,aAAa;GACb,MAAK;GACL,mBAAmB,KAAK;IACxB;EAEN,KAAK,qBACH,QACE,oBAAC;GACC,aAAa;GACb;GACA,aAAa;GACb,MAAK;IACL;EAEN,QACE,QAAO,oBAAC;GAA8B;GAAc;GAAM;IAAS;;;AAIzE,MAAaA,yBAAgE,EAC3E,QACA,oBACA,WACI;CACJ,MAAM,gBAAgB,OAAyB,KAAK;AAEpD,iBAAgB;AACd,MAAI,eAAe,QACjB,eAAc,QAAQ,OAAO;IAE9B,EAAE,CAAC;CAEN,MAAM,gBAAgB,KAAK,SAAS;CAEpC,MAAM,2BACJ,KAAK,SAAS,sBAAsB,KAAK,SAAS;CAEpD,MAAM,yBAAyB;AAC7B,MAAI,CAAC,yBACH,QACE,oBAAC,+BACC,qBAAC;GACC,SAAS;GACT,SAAQ;GACR,IAAG;cAEH,oBAAC;IAAc,MAAM;IAAI;KAAc,EACvC,oBAAC;IAAK,IAAI;cAAG;KAAW;IACX,GACG;AAGxB,SAAO;;AAGT,QACE,oBAAC;EAAkB,yBAAyB,CAAC;YAC3C,qBAAC;GAAgB,KAAK;GAAe,UAAU;cAC5C,kBAAkB,EACnB,qBAAC;IACC,aAAa;IACb,YAAY;eAEX,CAAC,4BACA,oBAAC;KAAK,IAAG;KAAK,UAAU;KAAI,IAAI;KAAI,IAAI;eACrC,gBAAgB,KAAK,kBAAkB,KAAK;MACxC,EAET,oBAAC;KACC,SAAQ;KACR,IAAI,2BAA2B;MAAE,GAAG;MAAI,IAAI;MAAI,GAAG;KACnD,OAAM;KACN,IAAG;eAEF,oBAAoB,MAAM,QAAQ,mBAAmB;MACjD;KACc;IACP;GACA"}
@@ -55,4 +55,5 @@ const AppHeaderSubMenuRow = ({ item, openSubMenu }) => {
55
55
  };
56
56
 
57
57
  //#endregion
58
- export { AppHeaderSubMenuRow };
58
+ export { AppHeaderSubMenuRow };
59
+ //# sourceMappingURL=index.js.map