@codecademy/brand 4.0.0-alpha.af4a3e14fc.0 → 4.0.0-alpha.bec91dc078.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 +4 -3
  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 +21 -20
  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 +4 -3
  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 +4 -3
  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 +6 -5
  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 +4 -3
  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 +17 -16
  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 +3 -2
  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 +4 -3
  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 +6 -5
  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 +2 -1
  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 +2 -1
  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 +2 -1
  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 +2 -1
  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 +4 -3
  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 +6 -5
  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 -1
  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 +141 -141
  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 -29
  1188. package/dist/lib/resourcesList/index.cjs +0 -68
  1189. package/dist/remoteAssets/components.cjs +0 -6
@@ -13,4 +13,5 @@ const useAppHeaderSectionContext = () => {
13
13
  };
14
14
 
15
15
  //#endregion
16
- export { AppHeaderSectionContext, useAppHeaderSectionContext };
16
+ export { AppHeaderSectionContext, useAppHeaderSectionContext };
17
+ //# sourceMappingURL=AppHeaderSectionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppHeaderSectionContext.js","names":[],"sources":["../../../../src/AppHeader/AppHeaderElements/AppHeaderSection/AppHeaderSectionContext.tsx"],"sourcesContent":["import { noop } from 'lodash/fp';\nimport { createContext, useContext } from 'react';\n\nexport interface AppHeaderSectionContextType {\n activePanel: number | null;\n setActivePanel: (panel: number | null) => void;\n tabIndex: number;\n isCoachingEnabled?: boolean;\n}\n\nexport const AppHeaderSectionContext =\n createContext<AppHeaderSectionContextType>({\n activePanel: null,\n setActivePanel: noop,\n tabIndex: 0,\n isCoachingEnabled: undefined,\n });\n\nexport const useAppHeaderSectionContext = () => {\n return useContext(AppHeaderSectionContext);\n};\n"],"mappings":";;;;AAUA,MAAa,0BACX,cAA2C;CACzC,aAAa;CACb,gBAAgB;CAChB,UAAU;CACV,mBAAmB;CACpB,CAAC;AAEJ,MAAa,mCAAmC;AAC9C,QAAO,WAAW,wBAAwB"}
@@ -80,4 +80,5 @@ const MobileBackButton = ({ handleClose, type }) => {
80
80
  };
81
81
 
82
82
  //#endregion
83
- export { MobileBackButton };
83
+ export { MobileBackButton };
84
+ //# sourceMappingURL=MobileBackButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileBackButton.js","names":["MobileBackButton: React.FC<MobileBackButtonProps>"],"sources":["../../../../src/AppHeader/AppHeaderElements/AppHeaderSection/MobileBackButton.tsx"],"sourcesContent":["import { Box, FlexBox, Text } from '@codecademy/gamut';\nimport { ArrowLeftIcon } from '@codecademy/gamut-icons';\nimport React from 'react';\n\nimport { useGlobalHeaderItemClick } from '../../../GlobalHeader/context';\nimport { NavIconButton, NavigationButton, SmallMenuButton } from './elements';\n\nexport type MobileBackButtonProps = {\n handleClose: () => void;\n type: 'catalog-dropdown' | 'resources-dropdown';\n};\n\nexport const MobileBackButton: React.FC<MobileBackButtonProps> = ({\n handleClose,\n type,\n}) => {\n const { globalHeaderItemClick } = useGlobalHeaderItemClick();\n\n const handleBackButtonClick = (\n event: React.MouseEvent<HTMLButtonElement>\n ) => {\n globalHeaderItemClick(event, {\n id: 'back',\n text: 'Back',\n type,\n });\n handleClose();\n };\n\n return (\n <>\n <Box display={{ _: 'none', sm: 'block' }}>\n <NavigationButton isActive={false} onClick={handleBackButtonClick}>\n <FlexBox gap={8} alignItems=\"center\">\n <Box height={24} width={24}>\n <ArrowLeftIcon size={24} />\n </Box>\n <Text>Back</Text>\n </FlexBox>\n </NavigationButton>\n </Box>\n <Box\n display={{ _: 'none', xs: 'grid', sm: 'none' }}\n ml={8}\n gridColumn=\"1\"\n gridRow=\"1\"\n >\n <NavIconButton\n onClick={handleBackButtonClick}\n icon={ArrowLeftIcon}\n tip=\"Back to main navigation\"\n tipProps={{\n alignment: 'right-center',\n narrow: false,\n placement: 'floating',\n }}\n aria-label=\"Back to main navigation\"\n />\n </Box>\n <Box display={{ _: 'flex', xs: 'none' }}>\n <SmallMenuButton index={0} onClick={handleBackButtonClick}>\n <FlexBox gap={8} alignItems=\"center\">\n <Box height={24} width={24}>\n <ArrowLeftIcon size={24} />\n </Box>\n <Text>Back</Text>\n </FlexBox>\n </SmallMenuButton>\n </Box>\n </>\n );\n};\n"],"mappings":";;;;;;;;AAYA,MAAaA,oBAAqD,EAChE,aACA,WACI;CACJ,MAAM,EAAE,0BAA0B,0BAA0B;CAE5D,MAAM,yBACJ,UACG;AACH,wBAAsB,OAAO;GAC3B,IAAI;GACJ,MAAM;GACN;GACD,CAAC;AACF,eAAa;;AAGf,QACE;EACE,oBAAC;GAAI,SAAS;IAAE,GAAG;IAAQ,IAAI;IAAS;aACtC,oBAAC;IAAiB,UAAU;IAAO,SAAS;cAC1C,qBAAC;KAAQ,KAAK;KAAG,YAAW;gBAC1B,oBAAC;MAAI,QAAQ;MAAI,OAAO;gBACtB,oBAAC,iBAAc,MAAM,KAAM;OACvB,EACN,oBAAC,kBAAK,SAAW;MACT;KACO;IACf;EACN,oBAAC;GACC,SAAS;IAAE,GAAG;IAAQ,IAAI;IAAQ,IAAI;IAAQ;GAC9C,IAAI;GACJ,YAAW;GACX,SAAQ;aAER,oBAAC;IACC,SAAS;IACT,MAAM;IACN,KAAI;IACJ,UAAU;KACR,WAAW;KACX,QAAQ;KACR,WAAW;KACZ;IACD,cAAW;KACX;IACE;EACN,oBAAC;GAAI,SAAS;IAAE,GAAG;IAAQ,IAAI;IAAQ;aACrC,oBAAC;IAAgB,OAAO;IAAG,SAAS;cAClC,qBAAC;KAAQ,KAAK;KAAG,YAAW;gBAC1B,oBAAC;MAAI,QAAQ;MAAI,OAAO;gBACtB,oBAAC,iBAAc,MAAM,KAAM;OACvB,EACN,oBAAC,kBAAK,SAAW;MACT;KACM;IACd;KACL"}
@@ -46,4 +46,5 @@ const MobileNavMenu = ({ handleClose, type, navSections }) => {
46
46
  };
47
47
 
48
48
  //#endregion
49
- export { MobileNavMenu };
49
+ export { MobileNavMenu };
50
+ //# sourceMappingURL=MobileNavMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileNavMenu.js","names":["MobileNavMenu: React.FC<MobileNavMenuProps>"],"sources":["../../../../src/AppHeader/AppHeaderElements/AppHeaderSection/MobileNavMenu.tsx"],"sourcesContent":["import { Box, FlexBox, Text } from '@codecademy/gamut';\nimport { ArrowChevronRightIcon } from '@codecademy/gamut-icons';\nimport { theme } from '@codecademy/gamut-styles';\nimport * as React from 'react';\n\nimport {\n AppHeaderCatalogDropdownItem,\n AppHeaderResourcesDropdownItem,\n} from '../../shared';\nimport { useAppHeaderSectionContext } from './AppHeaderSectionContext';\nimport { SmallMenuButton } from './elements';\nimport { MobileBackButton } from './MobileBackButton';\n\nexport type MobileNavMenuProps = {\n handleClose: () => void;\n type: 'catalog-dropdown' | 'resources-dropdown';\n navSections: {\n item: AppHeaderCatalogDropdownItem | AppHeaderResourcesDropdownItem;\n panel: React.ComponentType;\n }[];\n};\n\nexport const MobileNavMenu: React.FC<MobileNavMenuProps> = ({\n handleClose,\n type,\n navSections,\n}) => {\n const { activePanel, setActivePanel } = useAppHeaderSectionContext();\n\n const ActivePanel = navSections[activePanel ?? 0].panel;\n\n return (\n <FlexBox\n display={{ _: 'flex', xs: 'none' }}\n flexDirection=\"column\"\n gap={8}\n p={16}\n >\n {activePanel === null && (\n <>\n <MobileBackButton handleClose={handleClose} type={type} />\n {navSections.map(({ item }, index) => {\n return (\n <SmallMenuButton\n key={item.id}\n index={index + 1}\n onClick={() => setActivePanel(index)}\n >\n <FlexBox gap={8} alignItems=\"center\">\n {item.icon && (\n <Box height={24} width={24}>\n <item.icon size={24} />\n </Box>\n )}\n <Text>{item.text}</Text>\n </FlexBox>\n <FlexBox>\n <ArrowChevronRightIcon />\n </FlexBox>\n </SmallMenuButton>\n );\n })}\n </>\n )}\n\n {activePanel !== null && ActivePanel && (\n <Box background={theme.colors.background} borderRadius=\"lg\" p={16}>\n <ActivePanel />\n </Box>\n )}\n </FlexBox>\n );\n};\n"],"mappings":";;;;;;;;;;AAsBA,MAAaA,iBAA+C,EAC1D,aACA,MACA,kBACI;CACJ,MAAM,EAAE,aAAa,mBAAmB,4BAA4B;CAEpE,MAAM,cAAc,YAAY,eAAe,GAAG;AAElD,QACE,qBAAC;EACC,SAAS;GAAE,GAAG;GAAQ,IAAI;GAAQ;EAClC,eAAc;EACd,KAAK;EACL,GAAG;aAEF,gBAAgB,QACf,4CACE,oBAAC;GAA8B;GAAmB;IAAQ,EACzD,YAAY,KAAK,EAAE,QAAQ,UAAU;AACpC,UACE,qBAAC;IAEC,OAAO,QAAQ;IACf,eAAe,eAAe,MAAM;eAEpC,qBAAC;KAAQ,KAAK;KAAG,YAAW;gBACzB,KAAK,QACJ,oBAAC;MAAI,QAAQ;MAAI,OAAO;gBACtB,oBAAC,KAAK,QAAK,MAAM,KAAM;OACnB,EAER,oBAAC,kBAAM,KAAK,OAAY;MAChB,EACV,oBAAC,qBACC,oBAAC,0BAAwB,GACjB;MAdL,KAAK,GAeM;IAEpB,IACD,EAGJ,gBAAgB,QAAQ,eACvB,oBAAC;GAAI,YAAY,MAAM,OAAO;GAAY,cAAa;GAAK,GAAG;aAC7D,oBAAC,gBAAc;IACX;GAEA"}
@@ -98,4 +98,5 @@ const NavTab = ({ item, onSelect, isActive, onKeyDown, index }) => {
98
98
  };
99
99
 
100
100
  //#endregion
101
- export { NavTab, NavTabList, NavTabPanel };
101
+ export { NavTab, NavTabList, NavTabPanel };
102
+ //# sourceMappingURL=NavTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavTabs.js","names":[],"sources":["../../../../src/AppHeader/AppHeaderElements/AppHeaderSection/NavTabs.tsx"],"sourcesContent":["import { Box, FlexBox } from '@codecademy/gamut';\nimport { ArrowChevronRightIcon } from '@codecademy/gamut-icons';\nimport React, { PropsWithChildren, useContext, useEffect, useRef } from 'react';\n\nimport {\n AppHeaderCatalogDropdownItem,\n AppHeaderResourcesDropdownItem,\n} from '../../shared';\nimport { AppHeaderDropdownContext } from '../AppHeaderDropdownProvider';\nimport {\n NavIconButton,\n NavIconButtonContainer,\n NavigationButton,\n OverflowText,\n StyledNavTabPanel,\n} from './elements';\n\ninterface NavTabPanelProps extends PropsWithChildren {\n isActiveTab: boolean;\n index: number;\n id: string;\n}\n\n// Tab content, only one should be visible at a time\nconst NavTabPanel = ({\n children,\n isActiveTab,\n index,\n id,\n}: NavTabPanelProps) => {\n return (\n <StyledNavTabPanel\n isFirst={index === 0}\n role=\"tabpanel\"\n id={`${id}-panel`}\n aria-labelledby={`${id}-tab`}\n display={isActiveTab ? 'block' : 'none'}\n gridColumn=\"2 / span 12\"\n gridRow=\"1 / span 8\"\n bg=\"background\"\n px={32}\n pt={16}\n pb={24}\n >\n {children}\n </StyledNavTabPanel>\n );\n};\n\n// Holds all of the tab buttons\nconst NavTabList = React.forwardRef<\n HTMLDivElement,\n {\n children: React.ReactNode;\n type: string;\n }\n>(({ children, type }, ref) => {\n return (\n <FlexBox\n role=\"tablist\"\n aria-label={`${type.replace('-dropdown', '')} navigation`}\n aria-orientation=\"vertical\"\n flexDirection=\"column\"\n gap={8}\n ref={ref}\n >\n {children}\n </FlexBox>\n );\n});\n\n// Tab button, lets you switch between tabs\n// at larger breakpoints we use a normal button, at smaller\n// breakpoints we use an IconButton.\nconst NavTab = ({\n item,\n onSelect,\n isActive,\n onKeyDown,\n index,\n}: {\n item: AppHeaderCatalogDropdownItem | AppHeaderResourcesDropdownItem;\n onSelect: (\n id: string,\n event?: React.MouseEvent,\n item?: AppHeaderCatalogDropdownItem | AppHeaderResourcesDropdownItem\n ) => void;\n isActive: boolean;\n onKeyDown: (event: React.KeyboardEvent) => void;\n index: number;\n}) => {\n const sharedButtonProps = {\n role: 'tab',\n 'aria-selected': isActive,\n 'aria-controls': `${item.id}-panel`,\n onClick: (event: React.MouseEvent) => onSelect(item.id, event, item),\n onKeyDown,\n tabIndex: isActive ? 0 : -1,\n isActive,\n id: `${item.id}-tab`,\n } as const;\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const { setFirstItemRef } = useContext(AppHeaderDropdownContext);\n\n useEffect(() => {\n if (index === 0 && buttonRef.current) {\n setFirstItemRef?.(buttonRef.current);\n }\n }, [index, setFirstItemRef]);\n\n return (\n <>\n <NavigationButton ref={buttonRef} {...sharedButtonProps}>\n <FlexBox gap={8} alignItems=\"center\">\n {item.icon && (\n <Box height={24} width={24}>\n <item.icon size={24} />\n </Box>\n )}\n <OverflowText maxWidth={{ _: '110px', md: 'none' }}>\n {item.text}\n </OverflowText>\n </FlexBox>\n\n <FlexBox alignItems=\"center\">\n {isActive && (\n <Box display={{ _: 'none', sm: 'block' }} mt={4}>\n <ArrowChevronRightIcon data-testid=\"chevron-right-icon\" />\n </Box>\n )}\n </FlexBox>\n </NavigationButton>\n {item.icon && (\n <NavIconButtonContainer\n display={{ _: 'none', xs: 'grid', sm: 'none' }}\n {...sharedButtonProps}\n >\n <NavIconButton\n icon={item.icon}\n tip={item.text}\n tipProps={{\n alignment: 'right-center',\n narrow: false,\n placement: 'floating',\n }}\n aria-label={item.text}\n />\n </NavIconButtonContainer>\n )}\n </>\n );\n};\n\nexport { NavTabPanel, NavTabList, NavTab };\n"],"mappings":";;;;;;;;AAwBA,MAAM,eAAe,EACnB,UACA,aACA,OACA,SACsB;AACtB,QACE,oBAAC;EACC,SAAS,UAAU;EACnB,MAAK;EACL,IAAI,GAAG,GAAG;EACV,mBAAiB,GAAG,GAAG;EACvB,SAAS,cAAc,UAAU;EACjC,YAAW;EACX,SAAQ;EACR,IAAG;EACH,IAAI;EACJ,IAAI;EACJ,IAAI;EAEH;GACiB;;AAKxB,MAAM,aAAa,MAAM,YAMtB,EAAE,UAAU,QAAQ,QAAQ;AAC7B,QACE,oBAAC;EACC,MAAK;EACL,cAAY,GAAG,KAAK,QAAQ,aAAa,GAAG,CAAC;EAC7C,oBAAiB;EACjB,eAAc;EACd,KAAK;EACA;EAEJ;GACO;EAEZ;AAKF,MAAM,UAAU,EACd,MACA,UACA,UACA,WACA,YAWI;CACJ,MAAM,oBAAoB;EACxB,MAAM;EACN,iBAAiB;EACjB,iBAAiB,GAAG,KAAK,GAAG;EAC5B,UAAU,UAA4B,SAAS,KAAK,IAAI,OAAO,KAAK;EACpE;EACA,UAAU,WAAW,IAAI;EACzB;EACA,IAAI,GAAG,KAAK,GAAG;EAChB;CAED,MAAM,YAAY,OAA0B,KAAK;CACjD,MAAM,EAAE,oBAAoB,WAAW,yBAAyB;AAEhE,iBAAgB;AACd,MAAI,UAAU,KAAK,UAAU,QAC3B,mBAAkB,UAAU,QAAQ;IAErC,CAAC,OAAO,gBAAgB,CAAC;AAE5B,QACE,4CACE,qBAAC;EAAiB,KAAK;EAAW,GAAI;aACpC,qBAAC;GAAQ,KAAK;GAAG,YAAW;cACzB,KAAK,QACJ,oBAAC;IAAI,QAAQ;IAAI,OAAO;cACtB,oBAAC,KAAK,QAAK,MAAM,KAAM;KACnB,EAER,oBAAC;IAAa,UAAU;KAAE,GAAG;KAAS,IAAI;KAAQ;cAC/C,KAAK;KACO;IACP,EAEV,oBAAC;GAAQ,YAAW;aACjB,YACC,oBAAC;IAAI,SAAS;KAAE,GAAG;KAAQ,IAAI;KAAS;IAAE,IAAI;cAC5C,oBAAC,yBAAsB,eAAY,uBAAuB;KACtD;IAEA;GACO,EAClB,KAAK,QACJ,oBAAC;EACC,SAAS;GAAE,GAAG;GAAQ,IAAI;GAAQ,IAAI;GAAQ;EAC9C,GAAI;YAEJ,oBAAC;GACC,MAAM,KAAK;GACX,KAAK,KAAK;GACV,UAAU;IACR,WAAW;IACX,QAAQ;IACR,WAAW;IACZ;GACD,cAAY,KAAK;IACjB;GACqB,IAE1B"}
@@ -80,4 +80,5 @@ const PanelLayout = ({ heading, description, linkItem, children }) => {
80
80
  };
81
81
 
82
82
  //#endregion
83
- export { PanelLayout };
83
+ export { PanelLayout };
84
+ //# sourceMappingURL=PanelLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelLayout.js","names":[],"sources":["../../../../src/AppHeader/AppHeaderElements/AppHeaderSection/PanelLayout.tsx"],"sourcesContent":["import { Anchor, FlexBox, IconButton, Text } from '@codecademy/gamut';\nimport { ArrowLeftIcon, MiniArrowRightIcon } from '@codecademy/gamut-icons';\nimport { PropsWithChildren, ReactNode } from 'react';\n\nimport { AppHeaderLinkItem } from '../../..';\nimport { useGlobalHeaderItemClick } from '../../../GlobalHeader/context';\nimport { useAppHeaderDropdownContext } from '../AppHeaderDropdownProvider';\nimport { useAppHeaderSectionContext } from './AppHeaderSectionContext';\n\ntype PanelLayoutProps = PropsWithChildren & {\n heading: string;\n description: ReactNode;\n linkItem?: AppHeaderLinkItem;\n};\n\nexport const PanelLayout = ({\n heading,\n description,\n linkItem,\n children,\n}: PanelLayoutProps) => {\n const { globalHeaderItemClick } = useGlobalHeaderItemClick();\n const { handleClose } = useAppHeaderDropdownContext();\n const { setActivePanel, tabIndex } = useAppHeaderSectionContext();\n\n return (\n <FlexBox\n flexDirection=\"column\"\n gap={{ _: 8, xs: 8 }}\n pr={{ _: 0, md: 16, lg: 0 }}\n >\n <FlexBox alignItems=\"center\" gap={{ _: 8, xs: 0 }}>\n <IconButton\n onClick={() => setActivePanel(null)}\n icon={ArrowLeftIcon}\n tip=\"Back to main navigation\"\n tipProps={{\n alignment: 'right-center',\n narrow: false,\n placement: 'floating',\n }}\n aria-label=\"Back to main navigation\"\n display={{ _: 'flex', xs: 'none' }}\n />\n <Text as=\"h2\" variant=\"title-sm\">\n {heading}\n </Text>\n </FlexBox>\n <Text mb={16}>{description}</Text>\n {children}\n {linkItem && (\n <FlexBox justifyContent=\"center\" mt={16}>\n <Anchor\n href={linkItem.href}\n onClick={(event: React.MouseEvent) => {\n globalHeaderItemClick(event, linkItem);\n handleClose();\n }}\n tabIndex={tabIndex}\n variant=\"standard\"\n >\n <FlexBox alignItems=\"center\" gap={8}>\n {linkItem.text} <MiniArrowRightIcon />\n </FlexBox>\n </Anchor>\n </FlexBox>\n )}\n </FlexBox>\n );\n};\n"],"mappings":";;;;;;;;AAeA,MAAa,eAAe,EAC1B,SACA,aACA,UACA,eACsB;CACtB,MAAM,EAAE,0BAA0B,0BAA0B;CAC5D,MAAM,EAAE,gBAAgB,6BAA6B;CACrD,MAAM,EAAE,gBAAgB,aAAa,4BAA4B;AAEjE,QACE,qBAAC;EACC,eAAc;EACd,KAAK;GAAE,GAAG;GAAG,IAAI;GAAG;EACpB,IAAI;GAAE,GAAG;GAAG,IAAI;GAAI,IAAI;GAAG;;GAE3B,qBAAC;IAAQ,YAAW;IAAS,KAAK;KAAE,GAAG;KAAG,IAAI;KAAG;eAC/C,oBAAC;KACC,eAAe,eAAe,KAAK;KACnC,MAAM;KACN,KAAI;KACJ,UAAU;MACR,WAAW;MACX,QAAQ;MACR,WAAW;MACZ;KACD,cAAW;KACX,SAAS;MAAE,GAAG;MAAQ,IAAI;MAAQ;MAClC,EACF,oBAAC;KAAK,IAAG;KAAK,SAAQ;eACnB;MACI;KACC;GACV,oBAAC;IAAK,IAAI;cAAK;KAAmB;GACjC;GACA,YACC,oBAAC;IAAQ,gBAAe;IAAS,IAAI;cACnC,oBAAC;KACC,MAAM,SAAS;KACf,UAAU,UAA4B;AACpC,4BAAsB,OAAO,SAAS;AACtC,mBAAa;;KAEL;KACV,SAAQ;eAER,qBAAC;MAAQ,YAAW;MAAS,KAAK;;OAC/B,SAAS;OAAK;OAAC,oBAAC,uBAAqB;;OAC9B;MACH;KACD;;GAEJ"}
@@ -165,4 +165,5 @@ const NavIconButton = styled(IconButton)`
165
165
  `;
166
166
 
167
167
  //#endregion
168
- export { GradientBackground, NavIconButton, NavIconButtonContainer, NavTabContainer, NavigationButton, OverflowText, ScrollableContent, SmallMenuButton, StyledNavTabPanel, StyledSection };
168
+ export { GradientBackground, NavIconButton, NavIconButtonContainer, NavTabContainer, NavigationButton, OverflowText, ScrollableContent, SmallMenuButton, StyledNavTabPanel, StyledSection };
169
+ //# sourceMappingURL=elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.js","names":[],"sources":["../../../../src/AppHeader/AppHeaderElements/AppHeaderSection/elements.tsx"],"sourcesContent":["import { Box, GridBox, IconButton, Text } from '@codecademy/gamut';\nimport styled from '@emotion/styled';\n\nexport const StyledSection = styled(Box)<{ activePanelSelected: boolean }>`\n width: 100%;\n max-width: 100%;\n border: 1px solid ${({ theme }) => theme.colors['border-tertiary']};\n border-radius: 16px;\n overflow: hidden;\n background-color: ${({ activePanelSelected, theme }) =>\n activePanelSelected ? theme.colors['gray-100'] : theme.colors.background};\n display: flex;\n flex-direction: column;\n\n @media (min-width: 480px) {\n background-color: ${({ theme }) => theme.colors['gray-100']};\n }\n\n // at this breakpoint the menu becomes a dropdown\n @media (min-width: 1200px) {\n width: calc(100dvw - 11rem);\n max-width: calc(1440px - 11rem);\n max-height: 85vh;\n }\n`;\n\nexport const ScrollableContent = styled(Box)`\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n border-radius: 16px;\n\n /* Custom scrollbar styling to maintain border-radius */\n &::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n border-radius: 0 16px 16px 0;\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.colors['gray-300']};\n border-radius: 4px;\n border: 2px solid transparent;\n background-clip: content-box;\n }\n\n &::-webkit-scrollbar-thumb:hover {\n background: ${({ theme }) => theme.colors['gray-300']};\n background-clip: content-box;\n opacity: 0.8;\n }\n\n /* For Firefox */\n scrollbar-width: thin;\n scrollbar-color: ${({ theme }) => theme.colors['gray-300']} transparent;\n`;\n\nexport const NavTabContainer = styled(GridBox)`\n grid-template-columns: 297px 32px 1fr;\n\n @media (max-width: 767px) {\n grid-template-columns: 64px 1fr 1fr;\n }\n @media (max-width: 479px) {\n display: none;\n }\n`;\n\nexport const GradientBackground = styled(Box)`\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0) 7.65%,\n rgba(0, 0, 0, 0.15) 100%\n );\n`;\n\nexport const SmallMenuButton = styled.button<{ index: number }>`\n grid-column: 1;\n grid-row: ${({ index }) => index + 1};\n padding: 16px;\n border: none;\n border-radius: 8px;\n background: none;\n cursor: pointer;\n color: ${({ theme }) => theme.colors.text};\n width: 100%;\n text-align: left;\n height: 60px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n &:hover,\n &:focus {\n background-color: ${({ theme }) => theme.colors['navy-100']};\n color: ${({ theme }) => theme.colors.primary};\n }\n`;\n\nexport const OverflowText = styled(Text)`\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n`;\n\nexport const StyledNavTabPanel = styled(Box)<{\n isFirst: boolean;\n}>`\n border-radius: ${({ isFirst }) => (isFirst ? '0 8px 8px 8px' : '8px')};\n\n @media (max-width: 1200px) {\n border-radius: 8px;\n }\n`;\n\nexport const NavigationButton = styled.button<{\n isActive: boolean;\n}>`\n grid-column: 1;\n padding: 16px;\n border: none;\n border-radius: ${({ isActive }) => (isActive ? '8px 0 0 8px' : '8px')};\n background: none;\n cursor: pointer;\n color: ${({ theme, isActive }) =>\n isActive ? theme.colors.primary : theme.colors.text};\n text-align: left;\n width: ${({ isActive }) => (isActive ? '100%' : 'calc(100% - 8px)')};\n height: 60px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: ${({ isActive, theme }) =>\n isActive ? theme.colors.background : theme.colors['gray-100']};\n padding-right: ${({ isActive }) => (isActive ? '24px' : '16px')};\n\n &:hover,\n &:focus {\n background-color: ${({ theme, isActive }) =>\n isActive ? theme.colors.background : theme.colors['navy-100']};\n color: ${({ theme }) => theme.colors.primary};\n }\n\n &:focus-visible {\n outline: none;\n box-shadow: ${({ theme, isActive }) =>\n isActive ? 'none' : `0 0 0 2px ${theme.colors.primary}`};\n }\n\n @media (max-width: 767px) {\n display: none;\n }\n`;\n\nexport const NavIconButtonContainer = styled(Box)<{\n isActive: boolean;\n}>`\n background-color: ${({ theme, isActive }) =>\n isActive ? theme.colors.background : theme.colors['gray-100']};\n border-radius: ${({ isActive }) => (isActive ? '8px 0 0 8px' : '8px')};\n\n grid-column: 1;\n padding: 8px;\n\n &:focus {\n border-color: ${({ theme }) => theme.colors.primary};\n border-width: 2px;\n border-style: solid;\n border-radius: 8px;\n }\n`;\n\nexport const NavIconButton = styled(IconButton)`\n &:hover,\n &:focus svg {\n &:hover,\n &:focus {\n color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors['navy-100']};\n }\n }\n`;\n"],"mappings":";;;;AAGA,MAAa,gBAAgB,OAAO,IAAI,AAAkC;;;uBAGnD,EAAE,YAAY,MAAM,OAAO,mBAAmB;;;uBAG9C,EAAE,qBAAqB,YAC1C,sBAAsB,MAAM,OAAO,cAAc,MAAM,OAAO,WAAW;;;;;yBAKpD,EAAE,YAAY,MAAM,OAAO,YAAY;;;;;;;;;;AAWhE,MAAa,oBAAoB,OAAO,IAAI;;;;;;;;;;;;;;;;;mBAiBzB,EAAE,YAAY,MAAM,OAAO,YAAY;;;;;;;mBAOvC,EAAE,YAAY,MAAM,OAAO,YAAY;;;;;;;sBAOpC,EAAE,YAAY,MAAM,OAAO,YAAY;;AAG7D,MAAa,kBAAkB,OAAO,QAAQ;;;;;;;;;;AAW9C,MAAa,qBAAqB,OAAO,IAAI;;;;;;;AAQ7C,MAAa,kBAAkB,OAAO,MAAyB;;eAEhD,EAAE,YAAY,QAAQ,EAAE;;;;;;YAM3B,EAAE,YAAY,MAAM,OAAO,KAAK;;;;;;;;;;yBAUnB,EAAE,YAAY,MAAM,OAAO,YAAY;cAClD,EAAE,YAAY,MAAM,OAAO,QAAQ;;;AAIjD,MAAa,eAAe,OAAO,KAAK;;;;;AAMxC,MAAa,oBAAoB,OAAO,IAAI,AAE1C;oBACkB,EAAE,cAAe,UAAU,kBAAkB,MAAO;;;;;;AAOxE,MAAa,mBAAmB,OAAO,MAErC;;;;oBAIkB,EAAE,eAAgB,WAAW,gBAAgB,MAAO;;;YAG5D,EAAE,OAAO,eACjB,WAAW,MAAM,OAAO,UAAU,MAAM,OAAO,KAAK;;YAE5C,EAAE,eAAgB,WAAW,SAAS,mBAAoB;;;;;uBAK/C,EAAE,UAAU,YAC/B,WAAW,MAAM,OAAO,aAAa,MAAM,OAAO,YAAY;oBAC9C,EAAE,eAAgB,WAAW,SAAS,OAAQ;;;;yBAIzC,EAAE,OAAO,eAC5B,WAAW,MAAM,OAAO,aAAa,MAAM,OAAO,YAAY;cACtD,EAAE,YAAY,MAAM,OAAO,QAAQ;;;;;mBAK9B,EAAE,OAAO,eACtB,WAAW,SAAS,aAAa,MAAM,OAAO,UAAU;;;;;;;AAQ9D,MAAa,yBAAyB,OAAO,IAAI,AAE/C;uBACqB,EAAE,OAAO,eAC5B,WAAW,MAAM,OAAO,aAAa,MAAM,OAAO,YAAY;oBAC9C,EAAE,eAAgB,WAAW,gBAAgB,MAAO;;;;;;qBAMnD,EAAE,YAAY,MAAM,OAAO,QAAQ;;;;;;AAOxD,MAAa,gBAAgB,OAAO,WAAW;;;;;gBAK/B,EAAE,YAAY,MAAM,OAAO,QAAQ;2BACxB,EAAE,YAAY,MAAM,OAAO,YAAY"}
@@ -115,4 +115,5 @@ const AppHeaderSection = forwardRef(({ isOpen = true, MarketingBanner, isMobile
115
115
  });
116
116
 
117
117
  //#endregion
118
- export { AppHeaderSection };
118
+ export { AppHeaderSection };
119
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/AppHeader/AppHeaderElements/AppHeaderSection/index.tsx"],"sourcesContent":["import { Box } from '@codecademy/gamut';\nimport { motion } from 'framer-motion';\nimport {\n ComponentType,\n FC,\n forwardRef,\n Key,\n KeyboardEvent,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {\n useGlobalHeaderDynamicDataContext,\n useGlobalHeaderItemClick,\n} from '../../../GlobalHeader/context';\nimport {\n AppHeaderCatalogDropdownItem,\n AppHeaderResourcesDropdownItem,\n} from '../../shared';\nimport { MarketingBannerProps } from '../AppHeaderCatalogDropdown/MarketingBanner';\nimport { AppHeaderSectionContext } from './AppHeaderSectionContext';\nimport { NavTabContainer, ScrollableContent, StyledSection } from './elements';\nimport { MobileBackButton } from './MobileBackButton';\nimport { MobileNavMenu } from './MobileNavMenu';\nimport { NavTab, NavTabList, NavTabPanel } from './NavTabs';\n\nexport type TabSectionConfig = {\n item: AppHeaderCatalogDropdownItem | AppHeaderResourcesDropdownItem;\n panel: ComponentType;\n};\n\nexport type AppHeaderSectionProps = {\n isOpen?: boolean;\n keyDownEvents?: (event: KeyboardEvent) => void;\n ref?: RefObject<HTMLDivElement>;\n MarketingBanner?: FC<MarketingBannerProps>;\n isMobile?: boolean;\n handleClose: () => void;\n type: 'catalog-dropdown' | 'resources-dropdown';\n navSections: {\n item: AppHeaderCatalogDropdownItem | AppHeaderResourcesDropdownItem;\n panel: ComponentType;\n }[];\n ariaLabel?: string;\n defaultSelectedKey?: string;\n popularSection?: boolean;\n isCoachingEnabled?: boolean;\n};\n\nexport const AppHeaderSection = forwardRef<\n HTMLDivElement,\n AppHeaderSectionProps\n>(\n (\n {\n isOpen = true,\n MarketingBanner,\n isMobile = false,\n handleClose,\n type,\n defaultSelectedKey,\n navSections,\n isCoachingEnabled,\n },\n ref\n ) => {\n const firstTabId = navSections?.[0]?.item?.id;\n const [activeTab, setActiveTab] = useState<Key>(\n defaultSelectedKey || firstTabId\n );\n const [activePanel, setActivePanel] = useState<number | null>(null);\n const tabListRef = useRef<HTMLDivElement>(null);\n\n const { globalHeaderDynamicData } = useGlobalHeaderDynamicDataContext();\n const { globalHeaderItemClick } = useGlobalHeaderItemClick();\n\n const banner = globalHeaderDynamicData?.catalogDropdown?.banner;\n const showMarketingBanner = banner?.text && banner?.href && MarketingBanner;\n\n const tabIndex = isOpen ? 0 : -1;\n const activePanelSelected = activePanel !== null;\n\n const onSelect = useCallback(\n (\n key: Key,\n event?: React.MouseEvent,\n item?: AppHeaderCatalogDropdownItem | AppHeaderResourcesDropdownItem\n ) => {\n setActiveTab(key);\n if (item && event) {\n globalHeaderItemClick(event, item);\n }\n },\n [setActiveTab, globalHeaderItemClick]\n );\n\n const onKeyDown = useCallback((event: React.KeyboardEvent) => {\n if (!tabListRef.current) return;\n\n // get list of tabs available\n const tabs = Array.from(\n tabListRef.current?.querySelectorAll('button[role=\"tab\"]') || []\n );\n // get the index of the active tab\n const activeElement = tabs.indexOf(document.activeElement as HTMLElement);\n\n if (['ArrowUp', 'ArrowLeft'].includes(event.key)) {\n // prevent scrollbar from moving when arrow keys are pressed on tabs\n event.preventDefault();\n const prevTab = tabs[activeElement - 1];\n if (prevTab) {\n (prevTab as HTMLElement).focus();\n } else {\n // focus the last tab\n (tabs[tabs.length - 1] as HTMLElement).focus();\n }\n }\n if (['ArrowDown', 'ArrowRight'].includes(event.key)) {\n // prevent scrollbar from moving when arrow keys are pressed on tabs\n event.preventDefault();\n const nextTab = tabs[activeElement + 1];\n if (nextTab) {\n (nextTab as HTMLElement).focus();\n } else {\n // focus the first tab\n (tabs[0] as HTMLElement).focus();\n }\n }\n }, []);\n\n useEffect(() => {\n if (!isOpen) {\n setActiveTab(firstTabId);\n }\n }, [isOpen, firstTabId]);\n\n return (\n <AppHeaderSectionContext.Provider\n value={{ activePanel, setActivePanel, tabIndex, isCoachingEnabled }}\n >\n <StyledSection ref={ref} activePanelSelected={activePanelSelected}>\n <ScrollableContent>\n {showMarketingBanner && (\n <Box\n display={{\n _: activePanelSelected ? 'block' : 'none',\n xs: 'block',\n }}\n >\n <MarketingBanner\n text={banner?.text}\n href={banner?.href}\n tabIndex={tabIndex}\n />\n </Box>\n )}\n <NavTabContainer p={8} rowGap={8}>\n {isMobile && (\n <MobileBackButton handleClose={handleClose} type={type} />\n )}\n\n <NavTabList type={type} ref={tabListRef}>\n {navSections.map(({ item }, index) => (\n <NavTab\n key={item.id}\n item={item}\n onSelect={onSelect}\n isActive={activeTab === item.id}\n onKeyDown={onKeyDown}\n index={index}\n />\n ))}\n </NavTabList>\n {navSections.map((section, index) => {\n const {\n item: { id },\n panel: Panel,\n } = section;\n\n return (\n <NavTabPanel\n index={index}\n isActiveTab={activeTab === id}\n key={id}\n id={id}\n >\n {/* display property ensures multiple elements arent seen at once */}\n <motion.div\n animate={{ opacity: activeTab === id ? 1 : 0 }}\n transition={{ duration: 0.4, ease: 'easeInOut' }}\n >\n <Panel />\n </motion.div>\n </NavTabPanel>\n );\n })}\n </NavTabContainer>\n {/* base nav */}\n <MobileNavMenu\n handleClose={handleClose}\n type={type}\n navSections={navSections}\n />\n </ScrollableContent>\n </StyledSection>\n </AppHeaderSectionContext.Provider>\n );\n }\n);\n"],"mappings":";;;;;;;;;;;;AAqDA,MAAa,mBAAmB,YAK5B,EACE,SAAS,MACT,iBACA,WAAW,OACX,aACA,MACA,oBACA,aACA,qBAEF,QACG;CACH,MAAM,aAAa,cAAc,IAAI,MAAM;CAC3C,MAAM,CAAC,WAAW,gBAAgB,SAChC,sBAAsB,WACvB;CACD,MAAM,CAAC,aAAa,kBAAkB,SAAwB,KAAK;CACnE,MAAM,aAAa,OAAuB,KAAK;CAE/C,MAAM,EAAE,4BAA4B,mCAAmC;CACvE,MAAM,EAAE,0BAA0B,0BAA0B;CAE5D,MAAM,SAAS,yBAAyB,iBAAiB;CACzD,MAAM,sBAAsB,QAAQ,QAAQ,QAAQ,QAAQ;CAE5D,MAAM,WAAW,SAAS,IAAI;CAC9B,MAAM,sBAAsB,gBAAgB;CAE5C,MAAM,WAAW,aAEb,KACA,OACA,SACG;AACH,eAAa,IAAI;AACjB,MAAI,QAAQ,MACV,uBAAsB,OAAO,KAAK;IAGtC,CAAC,cAAc,sBAAsB,CACtC;CAED,MAAM,YAAY,aAAa,UAA+B;AAC5D,MAAI,CAAC,WAAW,QAAS;EAGzB,MAAM,OAAO,MAAM,KACjB,WAAW,SAAS,iBAAiB,uBAAqB,IAAI,EAAE,CACjE;EAED,MAAM,gBAAgB,KAAK,QAAQ,SAAS,cAA6B;AAEzE,MAAI,CAAC,WAAW,YAAY,CAAC,SAAS,MAAM,IAAI,EAAE;AAEhD,SAAM,gBAAgB;GACtB,MAAM,UAAU,KAAK,gBAAgB;AACrC,OAAI,QACF,CAAC,QAAwB,OAAO;OAGhC,CAAC,KAAK,KAAK,SAAS,GAAmB,OAAO;;AAGlD,MAAI,CAAC,aAAa,aAAa,CAAC,SAAS,MAAM,IAAI,EAAE;AAEnD,SAAM,gBAAgB;GACtB,MAAM,UAAU,KAAK,gBAAgB;AACrC,OAAI,QACF,CAAC,QAAwB,OAAO;OAGhC,CAAC,KAAK,GAAmB,OAAO;;IAGnC,EAAE,CAAC;AAEN,iBAAgB;AACd,MAAI,CAAC,OACH,cAAa,WAAW;IAEzB,CAAC,QAAQ,WAAW,CAAC;AAExB,QACE,oBAAC,wBAAwB;EACvB,OAAO;GAAE;GAAa;GAAgB;GAAU;GAAmB;YAEnE,oBAAC;GAAmB;GAA0B;aAC5C,qBAAC;IACE,uBACC,oBAAC;KACC,SAAS;MACP,GAAG,sBAAsB,UAAU;MACnC,IAAI;MACL;eAED,oBAAC;MACC,MAAM,QAAQ;MACd,MAAM,QAAQ;MACJ;OACV;MACE;IAER,qBAAC;KAAgB,GAAG;KAAG,QAAQ;;MAC5B,YACC,oBAAC;OAA8B;OAAmB;QAAQ;MAG5D,oBAAC;OAAiB;OAAM,KAAK;iBAC1B,YAAY,KAAK,EAAE,QAAQ,UAC1B,oBAAC;QAEO;QACI;QACV,UAAU,cAAc,KAAK;QAClB;QACJ;UALF,KAAK,GAMV,CACF;QACS;MACZ,YAAY,KAAK,SAAS,UAAU;OACnC,MAAM,EACJ,MAAM,EAAE,MACR,OAAO,UACL;AAEJ,cACE,oBAAC;QACQ;QACP,aAAa,cAAc;QAEvB;kBAGJ,oBAAC,OAAO;SACN,SAAS,EAAE,SAAS,cAAc,KAAK,IAAI,GAAG;SAC9C,YAAY;UAAE,UAAU;UAAK,MAAM;UAAa;mBAEhD,oBAAC,UAAQ;UACE;UATR,GAUO;QAEhB;;MACc;IAElB,oBAAC;KACc;KACP;KACO;MACb;OACgB;IACN;GACiB;EAGxC"}
@@ -50,4 +50,5 @@ const SkillTile = ({ item }) => {
50
50
  };
51
51
 
52
52
  //#endregion
53
- export { SkillTile };
53
+ export { SkillTile };
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["SkillTile: React.FC<SkillTileProps>"],"sources":["../../../../src/AppHeader/AppHeaderElements/AppHeaderSkillTile/index.tsx"],"sourcesContent":["import { Anchor, FlexBox, Text, TextProps } from '@codecademy/gamut';\nimport { css, theme } from '@codecademy/gamut-styles';\nimport styled from '@emotion/styled';\n\nimport { useGlobalHeaderItemClick } from '../../../GlobalHeader/context';\nimport { AppHeaderLinkItem } from '../../shared';\nimport { useAppHeaderDropdownContext } from '../AppHeaderDropdownProvider';\nimport { useAppHeaderSectionContext } from '../AppHeaderSection/AppHeaderSectionContext';\n\ninterface SkillTileProps {\n item: AppHeaderLinkItem;\n}\n\nconst SkillAnchor = styled(Anchor)(\n css({\n backgroundColor: theme.colors.background,\n borderColor: theme.colors['border-tertiary'] as TextProps['color'],\n borderRadius: 'lg',\n border: 1,\n '&:hover, &:focus': {\n borderColor: theme.colors.primary as TextProps['color'],\n background: theme.colors['navy-100'],\n },\n '&:active': {\n borderColor: theme.colors.primary as TextProps['color'],\n background: theme.colors['navy-200'],\n },\n })\n);\n\nexport const SkillTile: React.FC<SkillTileProps> = ({ item }) => {\n const { href, text, icon: Icon } = item;\n const { globalHeaderItemClick } = useGlobalHeaderItemClick();\n const { handleClose } = useAppHeaderDropdownContext();\n const { tabIndex } = useAppHeaderSectionContext();\n\n return (\n <SkillAnchor\n href={href}\n onClick={(event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n globalHeaderItemClick(event, item);\n handleClose();\n }}\n variant=\"interface\"\n width=\"100%\"\n tabIndex={tabIndex}\n >\n <FlexBox py={8} px={16} height={48} alignItems=\"center\">\n {Icon && <Icon size={24} />}\n <Text variant=\"p-base\" pl={16}>\n {text}\n </Text>\n </FlexBox>\n </SkillAnchor>\n );\n};\n"],"mappings":";;;;;;;;;AAaA,MAAM,cAAc,OAAO,OAAO,CAChC,IAAI;CACF,iBAAiB,MAAM,OAAO;CAC9B,aAAa,MAAM,OAAO;CAC1B,cAAc;CACd,QAAQ;CACR,oBAAoB;EAClB,aAAa,MAAM,OAAO;EAC1B,YAAY,MAAM,OAAO;EAC1B;CACD,YAAY;EACV,aAAa,MAAM,OAAO;EAC1B,YAAY,MAAM,OAAO;EAC1B;CACF,CAAC,CACH;AAED,MAAaA,aAAuC,EAAE,WAAW;CAC/D,MAAM,EAAE,MAAM,MAAM,MAAM,SAAS;CACnC,MAAM,EAAE,0BAA0B,0BAA0B;CAC5D,MAAM,EAAE,gBAAgB,6BAA6B;CACrD,MAAM,EAAE,aAAa,4BAA4B;AAEjD,QACE,oBAAC;EACO;EACN,UAAU,UAA2D;AACnE,yBAAsB,OAAO,KAAK;AAClC,gBAAa;;EAEf,SAAQ;EACR,OAAM;EACI;YAEV,qBAAC;GAAQ,IAAI;GAAG,IAAI;GAAI,QAAQ;GAAI,YAAW;cAC5C,QAAQ,oBAAC,QAAK,MAAM,KAAM,EAC3B,oBAAC;IAAK,SAAQ;IAAS,IAAI;cACxB;KACI;IACC;GACE"}
@@ -99,4 +99,5 @@ const PopularContent = ({ onTrackingClick }) => {
99
99
  };
100
100
 
101
101
  //#endregion
102
- export { PopularContent, PopularSearches };
102
+ export { PopularContent, PopularSearches };
103
+ //# sourceMappingURL=DefaultResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultResults.js","names":["PopularSearches: React.FC<PopularSearchesProps>","PopularContent: React.FC<PopularContentProps>"],"sources":["../../../src/AppHeader/Search/DefaultResults.tsx"],"sourcesContent":["import { Badge, Box, FlexBox, MenuItem, Text } from '@codecademy/gamut';\nimport { theme } from '@codecademy/gamut-styles';\nimport styled from '@emotion/styled';\n\nimport { popularContent, popularSearchTerms } from './consts';\nimport { SemiboldSearchIcon } from './SearchPane';\n\nconst StyledMenuItem = styled(MenuItem)`\n &:focus-visible:after {\n left: -4px;\n }\n padding: 8px 0;\n`;\n\ninterface PopularSearchesProps {\n navigateToSearch: (searchTerm: string) => void;\n onTrackingClick: (\n target: string,\n extraTrackingProps?: Record<string, string>\n ) => void;\n}\n\nexport const PopularSearches: React.FC<PopularSearchesProps> = ({\n navigateToSearch,\n onTrackingClick,\n}) => {\n const isMobile = theme.breakpoints.xs || theme.breakpoints.sm;\n\n return (\n <Box mb={24} as=\"li\">\n <Text as=\"h2\" variant=\"title-xs\" mb={12}>\n Popular searches\n </Text>\n <FlexBox as=\"ul\" listStyle=\"none\" p={0} flexDirection=\"column\">\n {popularSearchTerms.map((term, i) => (\n <StyledMenuItem\n itemType=\"link\"\n key={term}\n id={term}\n href={`/search?query=${encodeURIComponent(term)}`}\n onClick={() => {\n navigateToSearch(term);\n onTrackingClick('popular_search_term', {\n misc: JSON.stringify({\n value: term.toLowerCase(),\n index: i,\n }),\n });\n }}\n pl={0}\n >\n <SemiboldSearchIcon mb={2 as 0} size={14} strokeWidth={8} />\n <Text variant={isMobile ? 'p-base' : 'p-large'} ml={12}>\n {term}\n </Text>\n </StyledMenuItem>\n ))}\n </FlexBox>\n </Box>\n );\n};\n\ninterface PopularContentProps {\n onTrackingClick: (\n target: string,\n extraTrackingProps?: Record<string, string>\n ) => void;\n}\n\nexport const PopularContent: React.FC<PopularContentProps> = ({\n onTrackingClick,\n}) => {\n const isMobile = theme.breakpoints.xs || theme.breakpoints.sm;\n\n return (\n <Box mb={24} as=\"li\">\n <Text as=\"h2\" variant=\"title-xs\" mb={12}>\n What our members are learning\n </Text>\n <FlexBox as=\"ul\" listStyle=\"none\" p={0} flexDirection=\"column\">\n {popularContent.map((c, i) => (\n <StyledMenuItem\n itemType=\"link\"\n key={c.title}\n href={c.href}\n pl={0}\n onClick={() =>\n onTrackingClick('popular_content', {\n slug: c.slug,\n ...(c.contentId ? { content_id: c.contentId } : {}),\n misc: JSON.stringify({\n content_type: c.type.toLowerCase(),\n index: i,\n href: c.href,\n }),\n })\n }\n >\n <FlexBox flexDirection=\"row\" alignItems=\"center\">\n <Text variant={isMobile ? 'p-base' : 'p-large'} mr={12}>\n {c.title}\n </Text>\n <Badge size=\"sm\" variant=\"tertiary\">\n {c.type}\n </Badge>\n </FlexBox>\n </StyledMenuItem>\n ))}\n </FlexBox>\n </Box>\n );\n};\n"],"mappings":";;;;;;;;AAOA,MAAM,iBAAiB,OAAO,SAAS;;;;;;AAevC,MAAaA,mBAAmD,EAC9D,kBACA,sBACI;CACJ,MAAM,WAAW,MAAM,YAAY,MAAM,MAAM,YAAY;AAE3D,QACE,qBAAC;EAAI,IAAI;EAAI,IAAG;aACd,oBAAC;GAAK,IAAG;GAAK,SAAQ;GAAW,IAAI;aAAI;IAElC,EACP,oBAAC;GAAQ,IAAG;GAAK,WAAU;GAAO,GAAG;GAAG,eAAc;aACnD,mBAAmB,KAAK,MAAM,MAC7B,qBAAC;IACC,UAAS;IAET,IAAI;IACJ,MAAM,iBAAiB,mBAAmB,KAAK;IAC/C,eAAe;AACb,sBAAiB,KAAK;AACtB,qBAAgB,uBAAuB,EACrC,MAAM,KAAK,UAAU;MACnB,OAAO,KAAK,aAAa;MACzB,OAAO;MACR,CAAC,EACH,CAAC;;IAEJ,IAAI;eAEJ,oBAAC;KAAmB,IAAI;KAAQ,MAAM;KAAI,aAAa;MAAK,EAC5D,oBAAC;KAAK,SAAS,WAAW,WAAW;KAAW,IAAI;eACjD;MACI;MAjBF,KAkBU,CACjB;IACM;GACN;;AAWV,MAAaC,kBAAiD,EAC5D,sBACI;CACJ,MAAM,WAAW,MAAM,YAAY,MAAM,MAAM,YAAY;AAE3D,QACE,qBAAC;EAAI,IAAI;EAAI,IAAG;aACd,oBAAC;GAAK,IAAG;GAAK,SAAQ;GAAW,IAAI;aAAI;IAElC,EACP,oBAAC;GAAQ,IAAG;GAAK,WAAU;GAAO,GAAG;GAAG,eAAc;aACnD,eAAe,KAAK,GAAG,MACtB,oBAAC;IACC,UAAS;IAET,MAAM,EAAE;IACR,IAAI;IACJ,eACE,gBAAgB,mBAAmB;KACjC,MAAM,EAAE;KACR,GAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,GAAG,EAAE;KAClD,MAAM,KAAK,UAAU;MACnB,cAAc,EAAE,KAAK,aAAa;MAClC,OAAO;MACP,MAAM,EAAE;MACT,CAAC;KACH,CAAC;cAGJ,qBAAC;KAAQ,eAAc;KAAM,YAAW;gBACtC,oBAAC;MAAK,SAAS,WAAW,WAAW;MAAW,IAAI;gBACjD,EAAE;OACE,EACP,oBAAC;MAAM,MAAK;MAAK,SAAQ;gBACtB,EAAE;OACG;MACA;MAtBL,EAAE,MAuBQ,CACjB;IACM;GACN"}
@@ -65,4 +65,5 @@ const QuizAndHelpCenterLinks = ({ onTrackingClick, handleCloseDropdown }) => {
65
65
  };
66
66
 
67
67
  //#endregion
68
- export { QuizAndHelpCenterLinks };
68
+ export { QuizAndHelpCenterLinks };
69
+ //# sourceMappingURL=QuizAndHelpCenterLinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuizAndHelpCenterLinks.js","names":["QuizAndHelpCenterLinks: React.FC<{\n onTrackingClick: (target: string) => void;\n handleCloseDropdown: () => void;\n}>"],"sources":["../../../src/AppHeader/Search/QuizAndHelpCenterLinks.tsx"],"sourcesContent":["import { Anchor, FlexBox, Text, TextButton } from '@codecademy/gamut';\nimport { MiniArrowRightIcon, SupportIcon } from '@codecademy/gamut-icons';\nimport { theme } from '@codecademy/gamut-styles';\nimport styled from '@emotion/styled';\n\nimport { useHeaderDisplayContext } from '../../GlobalHeader/context';\n\nexport const BoldSupportIcon = styled(SupportIcon)`\n path {\n stroke-width: 2.5;\n }\n circle {\n stroke-width: 2.5;\n }\n`;\n\nexport const QuizAndHelpCenterLinks: React.FC<{\n onTrackingClick: (target: string) => void;\n handleCloseDropdown: () => void;\n}> = ({ onTrackingClick, handleCloseDropdown }) => {\n const { showOnboardingQuiz, showSortingQuiz } = useHeaderDisplayContext();\n\n const isMobile = theme.breakpoints.xs || theme.breakpoints.sm;\n\n const quizLink = showOnboardingQuiz\n ? '/welcome/find-a-course'\n : '/explore/sorting-quiz';\n\n const showQuiz = showOnboardingQuiz || showSortingQuiz;\n\n return (\n <FlexBox\n justifyContent=\"space-between\"\n alignItems=\"center\"\n borderTop={1}\n borderColor=\"border-tertiary\"\n py={8}\n >\n <FlexBox flexDirection={{ _: 'column', md: 'row' }}>\n {showQuiz && (\n <>\n <Text fontSize={16} mr={10 as 0}>\n Not sure where to begin?\n </Text>\n <Anchor\n href={quizLink}\n variant=\"standard\"\n onClick={() => {\n onTrackingClick(\n showOnboardingQuiz ? 'sorting_quiz' : 'onboarding_quiz'\n );\n handleCloseDropdown();\n }}\n >\n <FlexBox alignItems=\"center\" gap={10 as 0} overflow=\"visible\">\n <Text fontSize={{ _: 14, md: 16 }}>Take our quiz</Text>\n <MiniArrowRightIcon size={12} />\n </FlexBox>\n </Anchor>\n </>\n )}\n </FlexBox>\n <TextButton\n href=\"/help\"\n onClick={() => onTrackingClick('help_center')}\n size={isMobile ? 'small' : 'normal'}\n >\n <BoldSupportIcon mr={8} size={12} />\n Help Center\n </TextButton>\n </FlexBox>\n );\n};\n"],"mappings":";;;;;;;;AAOA,MAAa,kBAAkB,OAAO,YAAY;;;;;;;;AASlD,MAAaA,0BAGP,EAAE,iBAAiB,0BAA0B;CACjD,MAAM,EAAE,oBAAoB,oBAAoB,yBAAyB;CAEzE,MAAM,WAAW,MAAM,YAAY,MAAM,MAAM,YAAY;AAQ3D,QACE,qBAAC;EACC,gBAAe;EACf,YAAW;EACX,WAAW;EACX,aAAY;EACZ,IAAI;aAEJ,oBAAC;GAAQ,eAAe;IAAE,GAAG;IAAU,IAAI;IAAO;cAVrC,sBAAsB,oBAY/B,4CACE,oBAAC;IAAK,UAAU;IAAI,IAAI;cAAS;KAE1B,EACP,oBAAC;IACC,MArBK,qBACb,2BACA;IAoBQ,SAAQ;IACR,eAAe;AACb,qBACE,qBAAqB,iBAAiB,kBACvC;AACD,0BAAqB;;cAGvB,qBAAC;KAAQ,YAAW;KAAS,KAAK;KAAS,UAAS;gBAClD,oBAAC;MAAK,UAAU;OAAE,GAAG;OAAI,IAAI;OAAI;gBAAE;OAAoB,EACvD,oBAAC,sBAAmB,MAAM,KAAM;MACxB;KACH,IACR;IAEG,EACV,qBAAC;GACC,MAAK;GACL,eAAe,gBAAgB,cAAc;GAC7C,MAAM,WAAW,UAAU;cAE3B,oBAAC;IAAgB,IAAI;IAAG,MAAM;KAAM;IAEzB;GACL"}
@@ -46,4 +46,5 @@ const SearchButton = ({ isSearchVisible, searchButtonRef, setIsSearchVisible, to
46
46
  };
47
47
 
48
48
  //#endregion
49
- export { SearchButton };
49
+ export { SearchButton };
50
+ //# sourceMappingURL=SearchButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchButton.js","names":[],"sources":["../../../src/AppHeader/Search/SearchButton.tsx"],"sourcesContent":["import { IconButton } from '@codecademy/gamut';\nimport { SearchIcon } from '@codecademy/gamut-icons';\nimport { useEffect } from 'react';\n\nimport { useAppHeaderContext } from '../AppHeaderElements/AppHeaderProvider';\nimport { useSearchTrackingContext } from './SearchTrackingProvider';\nimport { SearchButtonProps } from './types';\n\nlet autocompleteCacheWarmed = false;\n\nfunction warmAutocompleteCache() {\n if (typeof window !== 'undefined' && !autocompleteCacheWarmed) {\n autocompleteCacheWarmed = true;\n const { search } = window.location;\n const apiUrl = `/api/portal/search/autocomplete-preload${search}`;\n const headers = { 'Warm-Only': 'true' };\n fetch(apiUrl, { headers });\n }\n}\n\nexport const SearchButton = ({\n isSearchVisible,\n searchButtonRef,\n setIsSearchVisible,\n toggleSearch,\n onSearchAsYouType,\n}: SearchButtonProps) => {\n const { lastOpenedDropdown, setLastOpenedDropdown } = useAppHeaderContext();\n const { onSearchAsYouTypeParams } = useSearchTrackingContext();\n\n const expandedToggleSearch = () => {\n // if the search pane is visible (about to be closed) and there are search params with a query,\n // trigger the search event before toggling\n if (\n isSearchVisible &&\n onSearchAsYouType &&\n onSearchAsYouTypeParams &&\n onSearchAsYouTypeParams.query\n ) {\n const { query, searchId, resultsCount, queryLoadTime } =\n onSearchAsYouTypeParams;\n onSearchAsYouType(query, searchId, resultsCount, queryLoadTime);\n }\n\n toggleSearch();\n\n if (!isSearchVisible && setLastOpenedDropdown) {\n setLastOpenedDropdown('search');\n }\n };\n\n useEffect(() => {\n if (lastOpenedDropdown !== 'search' && isSearchVisible) {\n setIsSearchVisible(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [lastOpenedDropdown]);\n\n return (\n <IconButton\n aria-expanded={isSearchVisible}\n data-testid=\"header-search\"\n icon={SearchIcon}\n onClick={expandedToggleSearch}\n onMouseOver={warmAutocompleteCache}\n ref={searchButtonRef}\n tip=\"Search\"\n tipProps={{ alignment: 'bottom-center', placement: 'floating' }}\n variant=\"interface\"\n />\n );\n};\n"],"mappings":";;;;;;;;AAQA,IAAI,0BAA0B;AAE9B,SAAS,wBAAwB;AAC/B,KAAI,OAAO,WAAW,eAAe,CAAC,yBAAyB;AAC7D,4BAA0B;EAC1B,MAAM,EAAE,WAAW,OAAO;EAC1B,MAAM,SAAS,0CAA0C;AAEzD,QAAM,QAAQ,EAAE,SADA,EAAE,aAAa,QAAQ,EACd,CAAC;;;AAI9B,MAAa,gBAAgB,EAC3B,iBACA,iBACA,oBACA,cACA,wBACuB;CACvB,MAAM,EAAE,oBAAoB,0BAA0B,qBAAqB;CAC3E,MAAM,EAAE,4BAA4B,0BAA0B;CAE9D,MAAM,6BAA6B;AAGjC,MACE,mBACA,qBACA,2BACA,wBAAwB,OACxB;GACA,MAAM,EAAE,OAAO,UAAU,cAAc,kBACrC;AACF,qBAAkB,OAAO,UAAU,cAAc,cAAc;;AAGjE,gBAAc;AAEd,MAAI,CAAC,mBAAmB,sBACtB,uBAAsB,SAAS;;AAInC,iBAAgB;AACd,MAAI,uBAAuB,YAAY,gBACrC,oBAAmB,MAAM;IAG1B,CAAC,mBAAmB,CAAC;AAExB,QACE,oBAAC;EACC,iBAAe;EACf,eAAY;EACZ,MAAM;EACN,SAAS;EACT,aAAa;EACb,KAAK;EACL,KAAI;EACJ,UAAU;GAAE,WAAW;GAAiB,WAAW;GAAY;EAC/D,SAAQ;GACR"}
@@ -476,4 +476,5 @@ const SearchPane = ({ onSearch, onTrackingClick, searchButtonRef, toggleSearch,
476
476
  };
477
477
 
478
478
  //#endregion
479
- export { SearchPane, SemiboldSearchIcon };
479
+ export { SearchPane, SemiboldSearchIcon };
480
+ //# sourceMappingURL=SearchPane.js.map
@@ -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":";AA2BA,SAAS,kBAAkB;CACzB,MAAM,EAAE,WAAW,OAAO;AAI1B,KAHa;EAAC;EAAS;EAAS;EAAW;EAAM,CAGxC,MAAM,MAAM,WAAW,EAAE,qBAAqB,OAAO,CAAE,QAAO;AAGvE,KAAI,OAAO,SAAS,0BAA0B,CAAE,QAAO;AAGvD,KAAI,OAAO,SAAS,YAAY,CAAE,QAAO,OAAO,QAAQ,UAAU,QAAQ;AAG1E,QAAO;;AAGT,SAAgB,2BAA2B;CACzC,MAAM,WAAW,GAAG,iBAAiB,CAAC;CACtC,MAAM,UAAU,OAAO,UAAU,CAAC,MAAM;AAIxC,QAAO,QACJ,MAAM,QAAQ,QAAQ,IAAI,GAAG,GAAG,GAAG,CACnC,WAAW,MAAM,GAAG,CACpB,WAAW,cAAc,SAAS,CAClC,WAAW,YAAY,OAAO,SAAS,OAAO;;AAQnD,SAAS,SAAS;CAsBhB,MAAM,uBAAuB,MAAM,0CAA0C,CAC1E,MAAM,MAAM,EAAE,MAAM,CAAC,CACrB,MAAM,cAAc,UAAU,IAAI,cAAc,CAAC;CAEpD,SAAS,cAAc,EAAE,OAAO,cAAwC;EACtE,MAAM,QAAQ,MAAM,aAAa;AAEjC,SAAO;GAAE,OAAO;GAAO;GAAO,OADhB,WAAW,MAAM;GACM;GAAY;;CAGnD,SAAS,cAAc,OAA+B;AAEpD,SAAO;GAAE;GAAO,OADF,WAAW,MAAM;GACR;;CAGzB,MAAM,gBAAgB;CAEtB,SAAS,WAAW,KAAa;EAC/B,MAAM,QAAQ,IACX,MAAM,cAAc,CACpB,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ;AAClB,SAAO,IAAI,IAAI,MAAM;;CAGvB,MAAMA,WAA8D;EAClE,cAAc;EACd,sBAAsB;EACvB;AAED,cAAa,EAAE,WAA4D;EACzE,MAAM,EAAE,OAAO,WAAW;EAC1B,MAAM,UAAU,SAAS;AACzB,MAAI,QACF,SAAQ,cAAc,MAAM,CAAC;;CAIjC,SAAS,eAAe,GAAmB,GAAgC;EACzE,MAAM,aAAa,cAAc,GAAG,EAAE;EACtC,MAAM,QAAQ,cAAc,GAAG,GAAG,WAAW;AAC7C,SAAO;GAAE,OAAO,EAAE;GAAO;GAAY;GAAO;;CAG9C,MAAM,aAAa;CAEnB,SAAS,oBAAoB,GAAmB;AAC9C,uBAAqB,MAAM,WAA6B;GAKtD,MAAMC,wBAJe,OAAO,KAAK,MAC/B,eAAe,GAAG,EAAE,CACrB,CAGE,QAAQ,MAAmB,EAAE,QAAQ,EAAE,CACvC,MAAM,GAAgB,MAAoB,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAG,CACtE,MAAM,GAAG,WAAW,CACpB,KAAK,OAAoB;IACxB,OAAO,EAAE;IACT,UAAU,qBAAqB,EAAE,OAAO,EAAE,WAAW;IACtD,EAAE;AAEL,eAAY;IACV,OAAO,EAAE;IACT,QAAQ;IACR,QAAQ;IACT,CAAC;IACF;;CAGJ,SAAS,uBAAuB,GAAmB;AACjD,QAAM,yCAAyC;GAC7C,MAAM,KAAK,UAAU;IAAE,OAAO,EAAE;IAAO,KAAK;IAAY,CAAC;GACzD,QAAQ;GACT,CAAC,CACC,MAAM,MAAM,EAAE,MAAM,CAAC,CACrB,MAAM,2BAAmD;AACxD,QAAK,IAAI,IAAI,GAAG,IAAI,uBAAuB,IAAI,QAAQ,KAAK;IAC1D,MAAM,QAAQ,uBAAuB,IAAI;IAEzC,MAAM,aAAa,cAAc,GADvB,cAAc;KAAE,OAAO,MAAM;KAAO,YAAY;KAAG,CAAC,CACxB;AACtC,UAAM,WAAW,qBAAqB,MAAM,OAAO,WAAW;AAC9D,UAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;;AAEpC,eAAY;IACV,OAAO,EAAE;IACT,QAAQ;IACR,QAAQ;IACT,CAAC;IACF;;CAQN,MAAM,qBAAqB;CAI3B,SAAS,cACP,GACA,GACA,YACA;EACA,IAAI,YAAY;AAChB,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,IACrC,cAAa,WAAW;EAG1B,MAAM,kBAAkB,EAAE,cAAc,KAAK;EAE7C,IAAI,QAAQ;AAEZ,IAAE,MAAM,SAAS,OAAO;AACtB,OAAI,EAAE,MAAM,IAAI,GAAG,CACjB,UAAS;IAEX;AAGF,MAAI,EAAE,MAAM,WAAW,EAAE,MAAM,CAC7B,UAAS;WACA,EAAE,MAAM,WAAW,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC,CAEhD,UAAS;AAIX,MAAI,EAAE,UAAU,EAAE,MAChB,UAAS;AAIX,MAAI,YAAY,KAAK,KAAK,IAAI,EAAE,MAAM,SAAS,EAAE,MAAM,OAAO,IAAI,EAChE,UAAS;AAGX,SAAO,aAAa,YAAY,IAAI,iBAAiB,KAAK;;CAI5D,SAAS,qBAAqB,OAAe,YAAsB;EACjE,IAAIC,iBAA0C;EAC9C,MAAMC,WAA+B,EAAE;EAEvC,MAAM,mBAAmB,MAAc,WAAW,KAAK;EAEvD,MAAM,uBAAuB,MAC3B,gBAAgB,IAAI,EAAE,KAAK,gBAAgB,EAAE;AAE/C,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,OAAI,MAAM,KAAK,oBAAoB,EAAE,EAAE;AAGrC,qBAAiB;KAAE,OAAO;KAAI,WAAW,gBAAgB,EAAE;KAAE;AAC7D,aAAS,KAAK,eAAe;;AAG/B,kBAAgB,SAAS,MAAM;;AAEjC,SAAO;;CAMT,SAAS,cAAc,GAAmB,GAAmB;EAK3D,MAAM,oBAAoB,MAAM,EAAE,MAAM,OAAO,CAC5C,KAAK,EAAE,CACP,UAAU,EAAE,CAAC;AA0BhB,OAAK,IAAI,QAAQ,IAAI,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,SAAS;GAGpE,IAAIC,MAAuC;GAC3C,MAAM,eAAe,KAAK,IAAI,OAAO,EAAE;GACvC,MAAM,aAAa,KAAK,IAAI,EAAE,MAAM,SAAS,OAAO,EAAE,MAAM,OAAO;AAGnE,QAAK,IAAI,IAAI,cAAc,IAAI,YAAY,IAIzC,KAAI,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,MAAM,EAAE,MAAM,OAAO,KAAK;AAC3D,QAAI,CAAC,IAEH,OAAM,EAAE,OAAO,IAAI;AAUrB,QAAI,SAAS,EAAE,MAAM,IAAI;AAGzB,sBAAkB,GAAG,KAAK,IAAI;cACrB,IAET,OAAM;;EAKZ,MAAM,qBAAqB,EAAE,MAAM,SAAS,EAAE,MAAM;EAOpD,MAAM,iBAAiB,KAAK,KAAK,sBAAsB,IAAK;EAE5D,MAAMC,aAAuB,EAAE;AAC/B,OAAK,IAAI,IAAI,GAAG,IAAI,kBAAkB,QAAQ,KAAK;GACjD,MAAM,OAAO,kBAAkB;GAC/B,IAAI,QAAQ;AACZ,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;IACpC,MAAM,MAAM,KAAK;AAGjB,QAAI,IAAI,MAAM,UAAU,kBAAkB,EAAE,MAAM,IAAI,IAAI,MAAM,CAC9D,UAAS,IAAI,MAAM;;AAGvB,cAAW,KAAK,MAAM;;AAExB,SAAO"}
@@ -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