@codecademy/brand 2.11.0-alpha.30f0957631.0 → 2.11.0-alpha.5e1e1ddc69.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 (25) hide show
  1. package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderCatalogDropdown}/NavPanels.js +4 -44
  2. package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderCatalogDropdown}/consts.d.ts +1 -1
  3. package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderCatalogDropdown}/consts.js +1 -1
  4. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogDropdown/index.js +6 -6
  5. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.d.ts +4 -0
  6. package/dist/AppHeader/AppHeaderElements/AppHeaderFeatureCard/index.js +51 -0
  7. package/dist/AppHeader/AppHeaderElements/AppHeaderLinkSections/index.js +0 -0
  8. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.d.ts +11 -0
  9. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/NavPanels.js +123 -0
  10. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.d.ts +18 -0
  11. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/consts.js +273 -0
  12. package/dist/AppHeader/AppHeaderElements/AppHeaderResourcesDropdown/index.js +31 -5
  13. package/dist/AppHeader/AppHeaderElements/AppHeaderSectionVariant/AppHeaderSectionVariant.test.js +83 -0
  14. package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderSectionVariant}/NavSection.d.ts +2 -2
  15. package/dist/AppHeader/AppHeaderElements/AppHeaderSectionVariant/NavSection.js +79 -0
  16. package/dist/AppHeader/AppHeaderElements/AppHeaderSectionVariant/PanelLayout.d.ts +10 -0
  17. package/dist/AppHeader/AppHeaderElements/AppHeaderSectionVariant/PanelLayout.js +51 -0
  18. package/dist/AppHeader/AppHeaderElements/AppHeaderSectionVariant/index.d.ts +15 -0
  19. package/dist/AppHeader/AppHeaderElements/AppHeaderSectionVariant/index.js +84 -0
  20. package/dist/AppHeaderMobile/AppHeaderCatalogSectonVariantMobile/index.js +3 -3
  21. package/package.json +1 -1
  22. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSectionVariant/NavSection.js +0 -75
  23. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSectionVariant/index.d.ts +0 -11
  24. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSectionVariant/index.js +0 -100
  25. /package/dist/AppHeader/AppHeaderElements/{AppHeaderCatalogSectionVariant → AppHeaderCatalogDropdown}/NavPanels.d.ts +0 -0
@@ -1,12 +1,12 @@
1
- /* eslint-disable react/no-array-index-key */
2
- import { Anchor, Box, Card, FlexBox, GridBox, Text, TextButton } from '@codecademy/gamut';
3
- import { LevelIcon, MiniArrowRightIcon } from '@codecademy/gamut-icons';
1
+ /* eslint-disable react/no-array-index-key */ // can be removed once we add dynamic data
2
+ import { Anchor, Box, Card, FlexBox, GridBox, Text } from '@codecademy/gamut';
3
+ import { LevelIcon } from '@codecademy/gamut-icons';
4
4
  import { theme } from '@codecademy/gamut-styles';
5
5
  import { CourseDifficulty } from '../../../ContentGroupBaseCard/types';
6
6
  import { useGlobalHeaderItemClick } from '../../../GlobalHeader/context';
7
7
  import { liveLearningHubItems, topLanguages } from '../../../lib/catalogList';
8
8
  import { AppHeaderDietCard } from '../AppHeaderDietCard';
9
- import { useAppHeaderDropdownContext } from '../AppHeaderDropdownProvider';
9
+ import { PanelLayout } from '../AppHeaderSectionVariant/PanelLayout';
10
10
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
11
11
  export const CourseTopicsPanel = ({
12
12
  tabIndex = 0
@@ -229,44 +229,4 @@ export const LiveLearningPanel = ({
229
229
  }, item.id))
230
230
  })
231
231
  });
232
- };
233
- const PanelLayout = ({
234
- heading,
235
- description,
236
- linkItem,
237
- children,
238
- tabIndex = 0
239
- }) => {
240
- const {
241
- globalHeaderItemClick
242
- } = useGlobalHeaderItemClick();
243
- const {
244
- handleClose
245
- } = useAppHeaderDropdownContext();
246
- return /*#__PURE__*/_jsxs(FlexBox, {
247
- flexDirection: "column",
248
- gap: 24,
249
- pr: {
250
- _: 32,
251
- md: 16,
252
- lg: 0
253
- },
254
- children: [/*#__PURE__*/_jsx(Text, {
255
- as: "h2",
256
- variant: "title-sm",
257
- children: heading
258
- }), /*#__PURE__*/_jsx(Text, {
259
- children: description
260
- }), children, /*#__PURE__*/_jsxs(TextButton, {
261
- href: linkItem.href,
262
- onClick: event => {
263
- globalHeaderItemClick(event, linkItem);
264
- handleClose();
265
- },
266
- tabIndex: tabIndex,
267
- children: [linkItem.text, " ", /*#__PURE__*/_jsx(MiniArrowRightIcon, {
268
- ml: 8
269
- })]
270
- })]
271
- });
272
232
  };
@@ -6,4 +6,4 @@ export type NavSectionConfig = {
6
6
  tabIndex?: number;
7
7
  }>;
8
8
  };
9
- export declare const NAV_SECTIONS: NavSectionConfig[];
9
+ export declare const CATALOG_NAV_SECTIONS: NavSectionConfig[];
@@ -1,6 +1,6 @@
1
1
  import { BriefcaseIcon, DiamondIcon, ProfessionalCertificateIcon, ProgrammingTeamChatIcon, StudyBookIcon } from '@codecademy/gamut-icons';
2
2
  import { CareerPathsPanel, CertificationPathsPanel, CourseTopicsPanel, LiveLearningPanel, SkillPathsPanel } from './NavPanels';
3
- export const NAV_SECTIONS = [{
3
+ export const CATALOG_NAV_SECTIONS = [{
4
4
  item: {
5
5
  icon: StudyBookIcon,
6
6
  text: 'Course topics',
@@ -5,10 +5,11 @@ import * as React from 'react';
5
5
  import { GlobalNavRedesignContext } from '../../../GlobalHeader';
6
6
  import { AnimatedMegaMenuDropdown } from '../../shared';
7
7
  import { AppHeaderCatalogSection } from '../AppHeaderCatalogSection';
8
- import { AppHeaderCatalogSectionVariant } from '../AppHeaderCatalogSectionVariant';
9
8
  import { AppHeaderDropdownProvider } from '../AppHeaderDropdownProvider';
10
9
  import { AppHeaderDropdownNavButton } from '../AppHeaderNavButton/AppHeaderDropdownNavButton';
11
10
  import { useAppHeaderContext } from '../AppHeaderProvider';
11
+ import { AppHeaderSectionVariant } from '../AppHeaderSectionVariant';
12
+ import { CATALOG_NAV_SECTIONS } from './consts';
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  const StyledAnimatedMegaMenuDropdown = /*#__PURE__*/_styled(AnimatedMegaMenuDropdown, {
14
15
  target: "eaa3s9f0",
@@ -19,7 +20,7 @@ const StyledAnimatedMegaMenuDropdown = /*#__PURE__*/_styled(AnimatedMegaMenuDrop
19
20
  }) => displayGlobalNavRedesign ? '-58px' : isAnon ? '-9rem' : '-14rem', ";@media (min-width: 1261px){left:", ({
20
21
  isAnon,
21
22
  displayGlobalNavRedesign
22
- }) => displayGlobalNavRedesign ? '-152px' : isAnon ? '-9rem' : '-14rem', ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5QkUiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9BcHBIZWFkZXJFbGVtZW50cy9BcHBIZWFkZXJDYXRhbG9nRHJvcGRvd24vaW5kZXgudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JNb2RlIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtc3R5bGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEdsb2JhbE5hdlJlZGVzaWduQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbEhlYWRlcic7XG5pbXBvcnQge1xuICBBbmltYXRlZE1lZ2FNZW51RHJvcGRvd24sXG4gIEFwcEhlYWRlckFjdGlvbixcbiAgQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duSXRlbSxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IEFwcEhlYWRlckNhdGFsb2dTZWN0aW9uIH0gZnJvbSAnLi4vQXBwSGVhZGVyQ2F0YWxvZ1NlY3Rpb24nO1xuaW1wb3J0IHsgQXBwSGVhZGVyQ2F0YWxvZ1NlY3Rpb25WYXJpYW50IH0gZnJvbSAnLi4vQXBwSGVhZGVyQ2F0YWxvZ1NlY3Rpb25WYXJpYW50JztcbmltcG9ydCB7IEFwcEhlYWRlckRyb3Bkb3duUHJvdmlkZXIgfSBmcm9tICcuLi9BcHBIZWFkZXJEcm9wZG93blByb3ZpZGVyJztcbmltcG9ydCB7IEFwcEhlYWRlckRyb3Bkb3duTmF2QnV0dG9uIH0gZnJvbSAnLi4vQXBwSGVhZGVyTmF2QnV0dG9uL0FwcEhlYWRlckRyb3Bkb3duTmF2QnV0dG9uJztcbmltcG9ydCB7IHVzZUFwcEhlYWRlckNvbnRleHQgfSBmcm9tICcuLi9BcHBIZWFkZXJQcm92aWRlcic7XG5cbmV4cG9ydCB0eXBlIEFwcEhlYWRlckNhdGFsb2dEcm9wZG93blByb3BzID0gQXBwSGVhZGVyQWN0aW9uICYge1xuICBpdGVtOiBBcHBIZWFkZXJDYXRhbG9nRHJvcGRvd25JdGVtO1xuICBpc0Fub246IGJvb2xlYW47XG59O1xuXG5jb25zdCBTdHlsZWRBbmltYXRlZE1lZ2FNZW51RHJvcGRvd24gPSBzdHlsZWQoQW5pbWF0ZWRNZWdhTWVudURyb3Bkb3duKTx7XG4gIGlzQW5vbjogYm9vbGVhbjtcbiAgZGlzcGxheUdsb2JhbE5hdlJlZGVzaWduOiBib29sZWFuO1xufT5gXG4gIGxlZnQ6ICR7KHsgaXNBbm9uLCBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gfSkgPT5cbiAgICBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAnLTU4cHgnIDogaXNBbm9uID8gJy05cmVtJyA6ICctMTRyZW0nfTtcblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTI2MXB4KSB7XG4gICAgbGVmdDogJHsoeyBpc0Fub24sIGRpc3BsYXlHbG9iYWxOYXZSZWRlc2lnbiB9KSA9PlxuICAgICAgZGlzcGxheUdsb2JhbE5hdlJlZGVzaWduID8gJy0xNTJweCcgOiBpc0Fub24gPyAnLTlyZW0nIDogJy0xNHJlbSd9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duOiBSZWFjdC5GQzxcbiAgQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duUHJvcHNcbj4gPSAoeyBhY3Rpb24sIGl0ZW0sIGlzQW5vbiB9KSA9PiB7XG4gIGNvbnN0IHsgdGV4dCB9ID0gaXRlbTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgbGFzdE9wZW5lZERyb3Bkb3duLCBzZXRMYXN0T3BlbmVkRHJvcGRvd24gfSA9IHVzZUFwcEhlYWRlckNvbnRleHQoKTtcblxuICBjb25zdCBmb2N1c0J1dHRvbiA9ICgpID0+IHtcbiAgICBidXR0b25SZWY/LmN1cnJlbnQ/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgdG9nZ2xlSXNPcGVuID0gKCkgPT4gc2V0SXNPcGVuKChwcmV2KSA9PiAhcHJldik7XG5cbiAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIHRvZ2dsZUlzT3BlbigpO1xuXG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIGFjdGlvbihldmVudCwgaXRlbSk7XG4gICAgICBpZiAoc2V0TGFzdE9wZW5lZERyb3Bkb3duKSB7XG4gICAgICAgIHNldExhc3RPcGVuZWREcm9wZG93bih0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICBmb2N1c0J1dHRvbigpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGFzdE9wZW5lZERyb3Bkb3duICE9PSB0ZXh0ICYmIGlzT3Blbikge1xuICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbbGFzdE9wZW5lZERyb3Bkb3duXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBFdmVudCkge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmPy5jdXJyZW50O1xuICAgICAgY29uc3QgYnV0dG9uID0gYnV0dG9uUmVmPy5jdXJyZW50O1xuICAgICAgaWYgKFxuICAgICAgICBpc09wZW4gJiZcbiAgICAgICAgY29udGFpbmVyICYmXG4gICAgICAgICFjb250YWluZXIuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgIGJ1dHRvbiAmJlxuICAgICAgICAhYnV0dG9uLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICAgICAgKSB7XG4gICAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIH07XG4gIH0sIFtjb250YWluZXJSZWYsIGhhbmRsZUNsb3NlLCBpc09wZW5dKTtcbiAgY29uc3QgZGlzcGxheUdsb2JhbE5hdlJlZGVzaWduID0gdXNlQ29udGV4dChHbG9iYWxOYXZSZWRlc2lnbkNvbnRleHQpO1xuXG4gIHJldHVybiAoXG4gICAgPEFwcEhlYWRlckRyb3Bkb3duUHJvdmlkZXIgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgIDxBcHBIZWFkZXJEcm9wZG93bk5hdkJ1dHRvblxuICAgICAgICBidXR0b25SZWY9e2J1dHRvblJlZn1cbiAgICAgICAgaGFuZGxlT25DbGljaz17aGFuZGxlT25DbGlja31cbiAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgIHRpdGxlPXt0ZXh0fVxuICAgICAgLz5cbiAgICAgIDxTdHlsZWRBbmltYXRlZE1lZ2FNZW51RHJvcGRvd25cbiAgICAgICAgaXNBbm9uPXtpc0Fub259XG4gICAgICAgIGRpc3BsYXlHbG9iYWxOYXZSZWRlc2lnbj17ZGlzcGxheUdsb2JhbE5hdlJlZGVzaWdufVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRvcDogJzMuNXJlbScsXG4gICAgICAgICAgbWluV2lkdGg6ICc2NHJlbScsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAndHJhbnNwYXJlbnQnIDogJycsXG4gICAgICAgIH19XG4gICAgICAgIGluaXRpYWw9e3sgYm9yZGVyV2lkdGg6IDAsIGhlaWdodDogMCB9fVxuICAgICAgICBhbmltYXRlPXt7XG4gICAgICAgICAgYm9yZGVyV2lkdGg6IGlzT3BlbiA/IChkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAwIDogMSkgOiAwLFxuICAgICAgICAgIGhlaWdodDogaXNPcGVuID8gJ2ZpdC1jb250ZW50JyA6IDAsXG4gICAgICAgIH19XG4gICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTc1IH19XG4gICAgICAgIGFyaWEtaGlkZGVuPXshaXNPcGVufVxuICAgICAgICBkYXRhLXRlc3RpZD1cImNhdGFsb2ctbWVudS1kcm9wZG93blwiXG4gICAgICA+XG4gICAgICAgIHtkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAoXG4gICAgICAgICAgPENvbG9yTW9kZSBtb2RlPVwibGlnaHRcIj5cbiAgICAgICAgICAgIDxBcHBIZWFkZXJDYXRhbG9nU2VjdGlvblZhcmlhbnRcbiAgICAgICAgICAgICAgaXRlbT17aXRlbX1cbiAgICAgICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgIGlkPXtgbWVudS1jb250YWluZXIke2l0ZW0udGV4dH1gfVxuICAgICAgICAgICAgICBpc09wZW49e2lzT3Blbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Db2xvck1vZGU+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEFwcEhlYWRlckNhdGFsb2dTZWN0aW9uXG4gICAgICAgICAgICBhY3Rpb249e2FjdGlvbn1cbiAgICAgICAgICAgIGl0ZW09e2l0ZW19XG4gICAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAgIGlkPXtgbWVudS1jb250YWluZXIke2l0ZW0udGV4dH1gfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBoYW5kbGVDbG9zZT17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9TdHlsZWRBbmltYXRlZE1lZ2FNZW51RHJvcGRvd24+XG4gICAgPC9BcHBIZWFkZXJEcm9wZG93blByb3ZpZGVyPlxuICApO1xufTtcbiJdfQ== */"));
23
+ }) => displayGlobalNavRedesign ? '-152px' : isAnon ? '-9rem' : '-14rem', ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQkUiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9BcHBIZWFkZXJFbGVtZW50cy9BcHBIZWFkZXJDYXRhbG9nRHJvcGRvd24vaW5kZXgudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JNb2RlIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtc3R5bGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEdsb2JhbE5hdlJlZGVzaWduQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL0dsb2JhbEhlYWRlcic7XG5pbXBvcnQge1xuICBBbmltYXRlZE1lZ2FNZW51RHJvcGRvd24sXG4gIEFwcEhlYWRlckFjdGlvbixcbiAgQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duSXRlbSxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IEFwcEhlYWRlckNhdGFsb2dTZWN0aW9uIH0gZnJvbSAnLi4vQXBwSGVhZGVyQ2F0YWxvZ1NlY3Rpb24nO1xuaW1wb3J0IHsgQXBwSGVhZGVyRHJvcGRvd25Qcm92aWRlciB9IGZyb20gJy4uL0FwcEhlYWRlckRyb3Bkb3duUHJvdmlkZXInO1xuaW1wb3J0IHsgQXBwSGVhZGVyRHJvcGRvd25OYXZCdXR0b24gfSBmcm9tICcuLi9BcHBIZWFkZXJOYXZCdXR0b24vQXBwSGVhZGVyRHJvcGRvd25OYXZCdXR0b24nO1xuaW1wb3J0IHsgdXNlQXBwSGVhZGVyQ29udGV4dCB9IGZyb20gJy4uL0FwcEhlYWRlclByb3ZpZGVyJztcbmltcG9ydCB7IEFwcEhlYWRlclNlY3Rpb25WYXJpYW50IH0gZnJvbSAnLi4vQXBwSGVhZGVyU2VjdGlvblZhcmlhbnQnO1xuaW1wb3J0IHsgQ0FUQUxPR19OQVZfU0VDVElPTlMgfSBmcm9tICcuL2NvbnN0cyc7XG5cbmV4cG9ydCB0eXBlIEFwcEhlYWRlckNhdGFsb2dEcm9wZG93blByb3BzID0gQXBwSGVhZGVyQWN0aW9uICYge1xuICBpdGVtOiBBcHBIZWFkZXJDYXRhbG9nRHJvcGRvd25JdGVtO1xuICBpc0Fub246IGJvb2xlYW47XG59O1xuXG5jb25zdCBTdHlsZWRBbmltYXRlZE1lZ2FNZW51RHJvcGRvd24gPSBzdHlsZWQoQW5pbWF0ZWRNZWdhTWVudURyb3Bkb3duKTx7XG4gIGlzQW5vbjogYm9vbGVhbjtcbiAgZGlzcGxheUdsb2JhbE5hdlJlZGVzaWduOiBib29sZWFuO1xufT5gXG4gIGxlZnQ6ICR7KHsgaXNBbm9uLCBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gfSkgPT5cbiAgICBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAnLTU4cHgnIDogaXNBbm9uID8gJy05cmVtJyA6ICctMTRyZW0nfTtcblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTI2MXB4KSB7XG4gICAgbGVmdDogJHsoeyBpc0Fub24sIGRpc3BsYXlHbG9iYWxOYXZSZWRlc2lnbiB9KSA9PlxuICAgICAgZGlzcGxheUdsb2JhbE5hdlJlZGVzaWduID8gJy0xNTJweCcgOiBpc0Fub24gPyAnLTlyZW0nIDogJy0xNHJlbSd9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duOiBSZWFjdC5GQzxcbiAgQXBwSGVhZGVyQ2F0YWxvZ0Ryb3Bkb3duUHJvcHNcbj4gPSAoeyBhY3Rpb24sIGl0ZW0sIGlzQW5vbiB9KSA9PiB7XG4gIGNvbnN0IHsgdGV4dCB9ID0gaXRlbTtcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgbGFzdE9wZW5lZERyb3Bkb3duLCBzZXRMYXN0T3BlbmVkRHJvcGRvd24gfSA9IHVzZUFwcEhlYWRlckNvbnRleHQoKTtcblxuICBjb25zdCBmb2N1c0J1dHRvbiA9ICgpID0+IHtcbiAgICBidXR0b25SZWY/LmN1cnJlbnQ/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgdG9nZ2xlSXNPcGVuID0gKCkgPT4gc2V0SXNPcGVuKChwcmV2KSA9PiAhcHJldik7XG5cbiAgY29uc3QgaGFuZGxlT25DbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIHRvZ2dsZUlzT3BlbigpO1xuXG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIGFjdGlvbihldmVudCwgaXRlbSk7XG4gICAgICBpZiAoc2V0TGFzdE9wZW5lZERyb3Bkb3duKSB7XG4gICAgICAgIHNldExhc3RPcGVuZWREcm9wZG93bih0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICBmb2N1c0J1dHRvbigpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGFzdE9wZW5lZERyb3Bkb3duICE9PSB0ZXh0ICYmIGlzT3Blbikge1xuICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbbGFzdE9wZW5lZERyb3Bkb3duXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBFdmVudCkge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUmVmPy5jdXJyZW50O1xuICAgICAgY29uc3QgYnV0dG9uID0gYnV0dG9uUmVmPy5jdXJyZW50O1xuICAgICAgaWYgKFxuICAgICAgICBpc09wZW4gJiZcbiAgICAgICAgY29udGFpbmVyICYmXG4gICAgICAgICFjb250YWluZXIuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgIGJ1dHRvbiAmJlxuICAgICAgICAhYnV0dG9uLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICAgICAgKSB7XG4gICAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCBoYW5kbGVDbGlja091dHNpZGUpO1xuICAgIH07XG4gIH0sIFtjb250YWluZXJSZWYsIGhhbmRsZUNsb3NlLCBpc09wZW5dKTtcbiAgY29uc3QgZGlzcGxheUdsb2JhbE5hdlJlZGVzaWduID0gdXNlQ29udGV4dChHbG9iYWxOYXZSZWRlc2lnbkNvbnRleHQpO1xuXG4gIHJldHVybiAoXG4gICAgPEFwcEhlYWRlckRyb3Bkb3duUHJvdmlkZXIgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgIDxBcHBIZWFkZXJEcm9wZG93bk5hdkJ1dHRvblxuICAgICAgICBidXR0b25SZWY9e2J1dHRvblJlZn1cbiAgICAgICAgaGFuZGxlT25DbGljaz17aGFuZGxlT25DbGlja31cbiAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgIHRpdGxlPXt0ZXh0fVxuICAgICAgLz5cbiAgICAgIDxTdHlsZWRBbmltYXRlZE1lZ2FNZW51RHJvcGRvd25cbiAgICAgICAgaXNBbm9uPXtpc0Fub259XG4gICAgICAgIGRpc3BsYXlHbG9iYWxOYXZSZWRlc2lnbj17ZGlzcGxheUdsb2JhbE5hdlJlZGVzaWdufVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRvcDogJzMuNXJlbScsXG4gICAgICAgICAgbWluV2lkdGg6ICc2NHJlbScsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAndHJhbnNwYXJlbnQnIDogJycsXG4gICAgICAgIH19XG4gICAgICAgIGluaXRpYWw9e3sgYm9yZGVyV2lkdGg6IDAsIGhlaWdodDogMCB9fVxuICAgICAgICBhbmltYXRlPXt7XG4gICAgICAgICAgYm9yZGVyV2lkdGg6IGlzT3BlbiA/IChkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAwIDogMSkgOiAwLFxuICAgICAgICAgIGhlaWdodDogaXNPcGVuID8gJ2ZpdC1jb250ZW50JyA6IDAsXG4gICAgICAgIH19XG4gICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTc1IH19XG4gICAgICAgIGFyaWEtaGlkZGVuPXshaXNPcGVufVxuICAgICAgICBkYXRhLXRlc3RpZD1cImNhdGFsb2ctbWVudS1kcm9wZG93blwiXG4gICAgICA+XG4gICAgICAgIHtkaXNwbGF5R2xvYmFsTmF2UmVkZXNpZ24gPyAoXG4gICAgICAgICAgPENvbG9yTW9kZSBtb2RlPVwibGlnaHRcIj5cbiAgICAgICAgICAgIDxBcHBIZWFkZXJTZWN0aW9uVmFyaWFudFxuICAgICAgICAgICAgICBpc09wZW49e2lzT3Blbn1cbiAgICAgICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgICAgIG5hdlNlY3Rpb25zPXtDQVRBTE9HX05BVl9TRUNUSU9OU31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Db2xvck1vZGU+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPEFwcEhlYWRlckNhdGFsb2dTZWN0aW9uXG4gICAgICAgICAgICBhY3Rpb249e2FjdGlvbn1cbiAgICAgICAgICAgIGl0ZW09e2l0ZW19XG4gICAgICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgICAgIGlkPXtgbWVudS1jb250YWluZXIke2l0ZW0udGV4dH1gfVxuICAgICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgICBoYW5kbGVDbG9zZT17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9TdHlsZWRBbmltYXRlZE1lZ2FNZW51RHJvcGRvd24+XG4gICAgPC9BcHBIZWFkZXJEcm9wZG93blByb3ZpZGVyPlxuICApO1xufTtcbiJdfQ== */"));
23
24
  export const AppHeaderCatalogDropdown = ({
24
25
  action,
25
26
  item,
@@ -104,11 +105,10 @@ export const AppHeaderCatalogDropdown = ({
104
105
  "data-testid": "catalog-menu-dropdown",
105
106
  children: displayGlobalNavRedesign ? /*#__PURE__*/_jsx(ColorMode, {
106
107
  mode: "light",
107
- children: /*#__PURE__*/_jsx(AppHeaderCatalogSectionVariant, {
108
- item: item,
108
+ children: /*#__PURE__*/_jsx(AppHeaderSectionVariant, {
109
+ isOpen: isOpen,
109
110
  ref: containerRef,
110
- id: `menu-container${item.text}`,
111
- isOpen: isOpen
111
+ navSections: CATALOG_NAV_SECTIONS
112
112
  })
113
113
  }) : /*#__PURE__*/_jsx(AppHeaderCatalogSection, {
114
114
  action: action,
@@ -0,0 +1,4 @@
1
+ import { AppHeaderCardItem } from '../AppHeaderResourcesDropdown/consts';
2
+ export declare const AppHeaderFeatureCard: ({ item }: {
3
+ item: AppHeaderCardItem;
4
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,51 @@
1
+ import _styled from "@emotion/styled/base";
2
+ import { Box, Card, FlexBox, Text } from '@codecademy/gamut';
3
+ import { GridDense } from '@codecademy/gamut-patterns';
4
+ import { theme } from '@codecademy/gamut-styles';
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ const StyledCard = /*#__PURE__*/_styled(Card, {
7
+ target: "e1lwunvl0",
8
+ label: "StyledCard"
9
+ })("&:hover{color:", ({
10
+ theme
11
+ }) => theme.colors.primary, ";border-color:", ({
12
+ theme
13
+ }) => theme.colors.primary, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyRmVhdHVyZUNhcmQvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU8rQiIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvQXBwSGVhZGVyL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckZlYXR1cmVDYXJkL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJveCwgQ2FyZCwgRmxleEJveCwgVGV4dCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IEdyaWREZW5zZSB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXBhdHRlcm5zJztcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtc3R5bGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgQXBwSGVhZGVyQ2FyZEl0ZW0gfSBmcm9tICcuLi9BcHBIZWFkZXJSZXNvdXJjZXNEcm9wZG93bi9jb25zdHMnO1xuXG5jb25zdCBTdHlsZWRDYXJkID0gc3R5bGVkKENhcmQpYFxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMucHJpbWFyeX07XG4gICAgYm9yZGVyLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5fTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IEFwcEhlYWRlckZlYXR1cmVDYXJkID0gKHsgaXRlbSB9OiB7IGl0ZW06IEFwcEhlYWRlckNhcmRJdGVtIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkQ2FyZFxuICAgICAgaXNJbnRlcmFjdGl2ZVxuICAgICAgcHg9ezh9XG4gICAgICBweT17MjR9XG4gICAgICBib3JkZXJSYWRpdXM9XCJsZ1wiXG4gICAgICBib3JkZXI9ezF9XG4gICAgICBib3JkZXJDb2xvcj1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICBkaXNwbGF5PVwiZmxleFwiXG4gICAgICBhbGlnbkl0ZW1zPVwiZmxleC1zdGFydFwiXG4gICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgID5cbiAgICAgIDxGbGV4Qm94IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBnYXA9ezh9PlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmFja2dyb3VuZD17dGhlbWUuY29sb3JzWyduYXZ5LTIwMCddfVxuICAgICAgICAgIGJvcmRlclJhZGl1cz1cIm1kXCJcbiAgICAgICAgICBwPXs0fVxuICAgICAgICAgIGhlaWdodD17MjZ9XG4gICAgICAgID5cbiAgICAgICAgICB7aXRlbS5pY29ufVxuICAgICAgICA8L0JveD5cbiAgICAgICAgPFRleHQgdmFyaWFudD1cInRpdGxlLXhzXCI+e2l0ZW0ubGlua0l0ZW0udGV4dH08L1RleHQ+XG4gICAgICA8L0ZsZXhCb3g+XG4gICAgICA8Qm94IHdpZHRoPVwiMTAwJVwiPlxuICAgICAgICA8R3JpZERlbnNlIGhlaWdodD17NH0gLz5cbiAgICAgIDwvQm94PlxuICAgICAgPFRleHQgdmFyaWFudD1cInAtYmFzZVwiPntpdGVtLmRlc2NyaXB0aW9ufTwvVGV4dD5cbiAgICA8L1N0eWxlZENhcmQ+XG4gICk7XG59O1xuIl19 */"));
14
+ export const AppHeaderFeatureCard = ({
15
+ item
16
+ }) => {
17
+ return /*#__PURE__*/_jsxs(StyledCard, {
18
+ isInteractive: true,
19
+ px: 8,
20
+ py: 24,
21
+ borderRadius: "lg",
22
+ border: 1,
23
+ borderColor: "border-tertiary",
24
+ display: "flex",
25
+ alignItems: "flex-start",
26
+ flexDirection: "column",
27
+ height: "100%",
28
+ children: [/*#__PURE__*/_jsxs(FlexBox, {
29
+ alignItems: "center",
30
+ gap: 8,
31
+ children: [/*#__PURE__*/_jsx(Box, {
32
+ background: theme.colors['navy-200'],
33
+ borderRadius: "md",
34
+ p: 4,
35
+ height: 26,
36
+ children: item.icon
37
+ }), /*#__PURE__*/_jsx(Text, {
38
+ variant: "title-xs",
39
+ children: item.linkItem.text
40
+ })]
41
+ }), /*#__PURE__*/_jsx(Box, {
42
+ width: "100%",
43
+ children: /*#__PURE__*/_jsx(GridDense, {
44
+ height: 4
45
+ })
46
+ }), /*#__PURE__*/_jsx(Text, {
47
+ variant: "p-base",
48
+ children: item.description
49
+ })]
50
+ });
51
+ };
@@ -0,0 +1,11 @@
1
+ import { AppHeaderCardItem } from './consts';
2
+ type NavPanelProps = {
3
+ tabIndex?: number;
4
+ links: AppHeaderCardItem[];
5
+ };
6
+ export declare const DocsPanel: ({ tabIndex }: NavPanelProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const LearningToolsPanel: ({ tabIndex }: NavPanelProps) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const PracticeToolsPanel: ({ tabIndex }: NavPanelProps) => import("react/jsx-runtime").JSX.Element;
9
+ export declare const InspirationPanel: ({ tabIndex }: NavPanelProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const FeatureCardPanel: ({ tabIndex, links }: NavPanelProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,123 @@
1
+ import { Anchor, FlexBox, GridBox } from '@codecademy/gamut';
2
+ import { useGlobalHeaderItemClick } from '../../../GlobalHeader/context';
3
+ import { AppHeaderFeatureCard } from '../AppHeaderFeatureCard';
4
+ import { PanelLayout } from '../AppHeaderSectionVariant/PanelLayout';
5
+ import { docsLinks, inspirationLinks, learningToolsLinks, practiceToolsLinks } from './consts';
6
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
7
+ export const DocsPanel = ({
8
+ tabIndex = 0
9
+ }) => {
10
+ const {
11
+ globalHeaderItemClick
12
+ } = useGlobalHeaderItemClick();
13
+ const description = /*#__PURE__*/_jsxs(_Fragment, {
14
+ children: ["Docs is a community-driven resource for all things programming. Even if you don't have a Codecademy account, you can quickly find definitions and explanations for most coding languages, frameworks, and technical concepts.", /*#__PURE__*/_jsx("br", {}), " ", /*#__PURE__*/_jsx("br", {}), "Interested in helping build it?", ' ', /*#__PURE__*/_jsx(Anchor, {
15
+ href: "/docs/contribute",
16
+ children: "Contribute to Docs"
17
+ })]
18
+ });
19
+ return /*#__PURE__*/_jsx(PanelLayout, {
20
+ heading: "Docs",
21
+ description: description,
22
+ linkItem: {
23
+ type: 'link',
24
+ href: '/docs',
25
+ text: 'Explore all Docs',
26
+ trackingTarget: 'topnav_resources_docs',
27
+ id: 'docs'
28
+ },
29
+ tabIndex: tabIndex,
30
+ children: /*#__PURE__*/_jsx(GridBox, {
31
+ gridTemplateColumns: {
32
+ _: '1fr',
33
+ lg: '1fr 1fr 1fr'
34
+ },
35
+ gap: 8,
36
+ pl: 0,
37
+ as: "ul",
38
+ listStyle: "none",
39
+ children: docsLinks.map(item => /*#__PURE__*/_jsx(Anchor, {
40
+ variant: "interface",
41
+ href: item.href,
42
+ onClick: event => globalHeaderItemClick(event, item),
43
+ tabIndex: tabIndex,
44
+ as: "li",
45
+ children: /*#__PURE__*/_jsxs(FlexBox, {
46
+ height: 48,
47
+ px: 16,
48
+ py: 8,
49
+ borderRadius: "md",
50
+ border: 1,
51
+ borderColor: "border-tertiary",
52
+ alignItems: "center",
53
+ children: [item.text, item.badge]
54
+ }, `${item.id}`)
55
+ }, `${item.id}`))
56
+ })
57
+ });
58
+ };
59
+ export const LearningToolsPanel = ({
60
+ tabIndex = 0
61
+ }) => {
62
+ return /*#__PURE__*/_jsx(PanelLayout, {
63
+ heading: "Learning tools",
64
+ description: "Faucibus ultricies risus tincidunt in placerat sodales euismod convallis nulla. Et amet platea lobortis ultrices neque sollicitudin pretium. Vulputate elit morbi ut arcu aliquam augue pellentesque. Eleifend enim suspendisse nibh lectus.",
65
+ children: /*#__PURE__*/_jsx(FeatureCardPanel, {
66
+ links: learningToolsLinks,
67
+ tabIndex: tabIndex
68
+ })
69
+ });
70
+ };
71
+ export const PracticeToolsPanel = ({
72
+ tabIndex = 0
73
+ }) => {
74
+ return /*#__PURE__*/_jsx(PanelLayout, {
75
+ heading: "Practice tools",
76
+ description: "Lectus enim vulputate in leo in vulputate adipiscing aliquam purus. Semper malesuada viverra pretium cursus vel donec pulvinar nisi. Quis proin quam arcu maecenas orci tincidunt. Elementum feugiat amet mi sagittis nisi.",
77
+ children: /*#__PURE__*/_jsx(FeatureCardPanel, {
78
+ links: practiceToolsLinks,
79
+ tabIndex: tabIndex
80
+ })
81
+ });
82
+ };
83
+ export const InspirationPanel = ({
84
+ tabIndex = 0
85
+ }) => {
86
+ return /*#__PURE__*/_jsx(PanelLayout, {
87
+ heading: "Inspiration",
88
+ description: "Discover what's happening inside Codecademy and beyond. You'll find engineering deep dives, coding tips, job hunt insights, career growth advice, and inspiring stories from other learners.",
89
+ children: /*#__PURE__*/_jsx(FeatureCardPanel, {
90
+ links: inspirationLinks,
91
+ tabIndex: tabIndex
92
+ })
93
+ });
94
+ };
95
+ export const FeatureCardPanel = ({
96
+ tabIndex = 0,
97
+ links
98
+ }) => {
99
+ const {
100
+ globalHeaderItemClick
101
+ } = useGlobalHeaderItemClick();
102
+ return /*#__PURE__*/_jsx(GridBox, {
103
+ gridTemplateColumns: {
104
+ _: '1fr',
105
+ lg: '1fr 1fr'
106
+ },
107
+ gridTemplateRows: {
108
+ _: '1fr',
109
+ lg: '1fr 1fr'
110
+ },
111
+ gap: 16,
112
+ children: links.map(item => /*#__PURE__*/_jsx(Anchor, {
113
+ variant: "interface",
114
+ href: item.linkItem.href,
115
+ onClick: event => globalHeaderItemClick(event, item.linkItem),
116
+ tabIndex: tabIndex,
117
+ height: "100%",
118
+ children: /*#__PURE__*/_jsx(AppHeaderFeatureCard, {
119
+ item: item
120
+ })
121
+ }, `${item.linkItem.id}`))
122
+ });
123
+ };
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { AppHeaderLinkItem, AppHeaderResourcesDropdownItem } from '../../shared';
3
+ export type NavSectionConfig = {
4
+ item: AppHeaderResourcesDropdownItem;
5
+ panel: React.ComponentType<{
6
+ tabIndex?: number;
7
+ }>;
8
+ };
9
+ export declare const RESOURCES_NAV_SECTIONS: NavSectionConfig[];
10
+ export declare const docsLinks: AppHeaderLinkItem[];
11
+ export type AppHeaderCardItem = {
12
+ linkItem: AppHeaderLinkItem;
13
+ icon: React.ReactNode;
14
+ description: string;
15
+ };
16
+ export declare const learningToolsLinks: AppHeaderCardItem[];
17
+ export declare const practiceToolsLinks: AppHeaderCardItem[];
18
+ export declare const inspirationLinks: AppHeaderCardItem[];
@@ -0,0 +1,273 @@
1
+ import { ArticleIcon, BulbIcon, DiamondIcon, FileIcon, NotebookIcon, ProjectsIcon, RulerTriangleIcon, VideoPlayerMovieIcon } from '@codecademy/gamut-icons';
2
+ import React from 'react';
3
+ import { DocsPanel, InspirationPanel, LearningToolsPanel, PracticeToolsPanel } from './NavPanels';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export const RESOURCES_NAV_SECTIONS = [{
6
+ item: {
7
+ icon: FileIcon,
8
+ text: 'Docs',
9
+ id: 'docs',
10
+ type: 'resources-dropdown',
11
+ trackingTarget: 'topnav_resources_docs'
12
+ },
13
+ panel: DocsPanel
14
+ }, {
15
+ item: {
16
+ icon: RulerTriangleIcon,
17
+ text: 'Learning tools',
18
+ id: 'learning-tools',
19
+ type: 'resources-dropdown',
20
+ trackingTarget: 'topnav_resources_learning_tools'
21
+ },
22
+ panel: LearningToolsPanel
23
+ }, {
24
+ item: {
25
+ icon: DiamondIcon,
26
+ text: 'Practice tools',
27
+ id: 'practice-tools',
28
+ type: 'resources-dropdown',
29
+ trackingTarget: 'topnav_resources_practice_tools'
30
+ },
31
+ panel: PracticeToolsPanel
32
+ }, {
33
+ item: {
34
+ icon: BulbIcon,
35
+ text: 'Inspiration',
36
+ id: 'inspiration',
37
+ type: 'resources-dropdown',
38
+ trackingTarget: 'topnav_resources_inspiration'
39
+ },
40
+ panel: InspirationPanel
41
+ }];
42
+ export const docsLinks = [{
43
+ id: 'c',
44
+ href: '/resources/docs/c',
45
+ trackingTarget: 'topnav_resources_docs_c',
46
+ text: 'C',
47
+ type: 'link'
48
+ }, {
49
+ id: 'html',
50
+ href: '/resources/docs/html',
51
+ trackingTarget: 'topnav_resources_docs_html',
52
+ text: 'HTML',
53
+ type: 'link'
54
+ }, {
55
+ id: 'python',
56
+ href: '/resources/docs/python',
57
+ trackingTarget: 'topnav_resources_docs_python',
58
+ text: 'Python',
59
+ type: 'link'
60
+ }, {
61
+ id: 'cpp',
62
+ href: '/resources/docs/cpp',
63
+ trackingTarget: 'topnav_resources_docs_cpp',
64
+ text: 'C++',
65
+ type: 'link'
66
+ }, {
67
+ id: 'java',
68
+ href: '/resources/docs/java',
69
+ trackingTarget: 'topnav_resources_docs_java',
70
+ text: 'Java',
71
+ type: 'link'
72
+ }, {
73
+ id: 'react',
74
+ href: '/resources/docs/react',
75
+ trackingTarget: 'topnav_resources_docs_react',
76
+ text: 'React',
77
+ type: 'link'
78
+ }, {
79
+ id: 'css',
80
+ href: '/resources/docs/css',
81
+ trackingTarget: 'topnav_resources_docs_css',
82
+ text: 'CSS',
83
+ type: 'link'
84
+ }, {
85
+ id: 'javascript',
86
+ href: '/resources/docs/javascript',
87
+ trackingTarget: 'topnav_resources_docs_javascript',
88
+ text: 'JavaScript',
89
+ type: 'link'
90
+ }, {
91
+ id: 'sql',
92
+ href: '/resources/docs/sql',
93
+ trackingTarget: 'topnav_resources_docs_sql',
94
+ text: 'SQL',
95
+ type: 'link'
96
+ }, {
97
+ id: 'git',
98
+ href: '/resources/docs/git',
99
+ trackingTarget: 'topnav_resources_docs_git',
100
+ text: 'Git',
101
+ type: 'link'
102
+ }, {
103
+ id: 'php',
104
+ href: '/resources/docs/php',
105
+ trackingTarget: 'topnav_resources_docs_php',
106
+ text: 'PHP',
107
+ type: 'link'
108
+ }, {
109
+ id: 'uiux',
110
+ href: '/resources/docs/uiux',
111
+ trackingTarget: 'topnav_resources_docs_uiux',
112
+ text: 'UI/UX',
113
+ type: 'link'
114
+ }, {
115
+ id: 'markdown',
116
+ href: '/resources/docs/markdown',
117
+ trackingTarget: 'topnav_resources_docs_markdown',
118
+ text: 'Markdown',
119
+ type: 'link'
120
+ }, {
121
+ id: 'data-science',
122
+ href: '/resources/docs/data-science',
123
+ trackingTarget: 'topnav_resources_docs_data_science',
124
+ text: 'Data science',
125
+ type: 'link'
126
+ }, {
127
+ id: 'ai',
128
+ href: '/resources/docs/ai',
129
+ trackingTarget: 'topnav_resources_docs_ai',
130
+ text: 'AI',
131
+ type: 'link'
132
+ }, {
133
+ id: 'data-visualization',
134
+ href: '/resources/docs/data-visualization',
135
+ trackingTarget: 'topnav_resources_docs_data_visualization',
136
+ text: 'Data visualization',
137
+ type: 'link'
138
+ }, {
139
+ id: 'typescript',
140
+ href: '/resources/docs/typescript',
141
+ trackingTarget: 'topnav_resources_docs_typescript',
142
+ text: 'TypeScript',
143
+ type: 'link'
144
+ }, {
145
+ id: 'ruby',
146
+ href: '/resources/docs/ruby',
147
+ trackingTarget: 'topnav_resources_docs_ruby',
148
+ text: 'Ruby',
149
+ type: 'link'
150
+ }];
151
+ export const learningToolsLinks = [{
152
+ linkItem: {
153
+ id: 'projects',
154
+ href: '/projects',
155
+ trackingTarget: 'topnav_resources_projects',
156
+ text: 'Projects',
157
+ type: 'link'
158
+ },
159
+ icon: /*#__PURE__*/_jsx(ProjectsIcon, {}),
160
+ description: "Projects let you apply what you're learning. Practice new skills, connect concepts, or put it all together to create something of your own."
161
+ }, {
162
+ linkItem: {
163
+ id: 'cheatsheets',
164
+ href: '/resources/cheatsheets/all',
165
+ trackingTarget: 'topnav_resources_cheatsheets',
166
+ text: 'Cheatsheets',
167
+ type: 'link'
168
+ },
169
+ icon: /*#__PURE__*/_jsx(NotebookIcon, {}),
170
+ description: 'Sagittis magna mattis risus et tortor. Id morbi ornare mi convallis non. Lorem dis vulputate morbi porttitor tincidunt. Ullamcorper risus eu vestibulum malesuada ullamcorper.'
171
+ }, {
172
+ linkItem: {
173
+ id: 'articles',
174
+ href: '/articles',
175
+ trackingTarget: 'topnav_resources_articles',
176
+ text: 'Articles',
177
+ type: 'link'
178
+ },
179
+ icon: /*#__PURE__*/_jsx(ArticleIcon, {}),
180
+ description: "Articles are more in-depth explanations about concepts covered in Codecademy courses. Here you'll learn more about workflows that developers use every day, and take your coding skills to the next level."
181
+ }, {
182
+ linkItem: {
183
+ id: 'videos',
184
+ href: '/resources/videos',
185
+ trackingTarget: 'topnav_resources_videos',
186
+ text: 'Videos',
187
+ type: 'link'
188
+ },
189
+ icon: /*#__PURE__*/_jsx(VideoPlayerMovieIcon, {}),
190
+ description: 'Watch our best programming videos for beginner, intermediate, and advanced learners about languages, frameworks, and more.'
191
+ }];
192
+ export const practiceToolsLinks = [{
193
+ linkItem: {
194
+ id: 'interview-simulator',
195
+ href: '/interview-simulator',
196
+ trackingTarget: 'topnav_resources_interview_simulator',
197
+ text: 'Interview Simulator',
198
+ type: 'link'
199
+ },
200
+ icon: /*#__PURE__*/_jsx(ProjectsIcon, {}),
201
+ description: 'Discover your potential through interviewing. Identify your strengths, get actionable feedback, and boost your confidence with customized practice — at any stage in your tech career.'
202
+ }, {
203
+ linkItem: {
204
+ id: 'job-readiness',
205
+ href: '/job-readiness',
206
+ trackingTarget: 'topnav_resources_job_readiness',
207
+ text: 'Job-Readiness Checker',
208
+ type: 'link'
209
+ },
210
+ icon: /*#__PURE__*/_jsx(NotebookIcon, {}),
211
+ description: "Add a LinkedIn or ZipRecruiter job posting to analyze how your skills fit the job. You'll need to add more information for jobs found on other websites."
212
+ }, {
213
+ linkItem: {
214
+ id: 'code-challenges',
215
+ href: '/code-challenges',
216
+ trackingTarget: 'topnav_resources_code_challenges',
217
+ text: 'Code Challenges',
218
+ type: 'link'
219
+ },
220
+ icon: /*#__PURE__*/_jsx(ArticleIcon, {}),
221
+ description: "Test your knowledge with code challenges based on real-world technical interviews from companies like Google, Amazon, and Meta. Practice for your job search — or for fun. Don't worry if you get stuck. We'll recommend the right courses to help you."
222
+ }, {
223
+ linkItem: {
224
+ id: 'workspaces',
225
+ href: '/pages/workspaces',
226
+ trackingTarget: 'topnav_resources_workspaces',
227
+ text: 'Workspaces',
228
+ type: 'link'
229
+ },
230
+ icon: /*#__PURE__*/_jsx(VideoPlayerMovieIcon, {}),
231
+ description: 'Practice building projects in 13 popular languages and libraries, tinker with code, and share your work—all without leaving your browser.'
232
+ }];
233
+ export const inspirationLinks = [{
234
+ linkItem: {
235
+ id: 'learning-tips',
236
+ href: '/resources/blog/category/learning-tips',
237
+ trackingTarget: 'topnav_resources_learning_tips',
238
+ text: 'Learning Tips',
239
+ type: 'link'
240
+ },
241
+ icon: /*#__PURE__*/_jsx(ProjectsIcon, {}),
242
+ description: 'Learning to code — or thinking about it? Here’s how to get started, plus tips and tricks for staying motivated.'
243
+ }, {
244
+ linkItem: {
245
+ id: 'finding-a-job',
246
+ href: '/resources/blog/category/finding-a-job',
247
+ trackingTarget: 'topnav_resources_finding_a_job',
248
+ text: 'Finding a Job',
249
+ type: 'link'
250
+ },
251
+ icon: /*#__PURE__*/_jsx(NotebookIcon, {}),
252
+ description: 'Want to break into the tech industry? Learn how to write a standout resume, build a professional portfolio, prepare for technical interviews, and negotiate job offers.'
253
+ }, {
254
+ linkItem: {
255
+ id: 'career-advice',
256
+ href: '/resources/blog/category/career',
257
+ trackingTarget: 'topnav_resources_career_advice',
258
+ text: 'Career Advice',
259
+ type: 'link'
260
+ },
261
+ icon: /*#__PURE__*/_jsx(ArticleIcon, {}),
262
+ description: 'Explore different tech jobs and learn how to advance in your career and maintain work-life balance.'
263
+ }, {
264
+ linkItem: {
265
+ id: 'get-inspired',
266
+ href: '/resources/blog/category/get-inspired',
267
+ trackingTarget: 'topnav_resources_get_inspired',
268
+ text: 'Get Inspired',
269
+ type: 'link'
270
+ },
271
+ icon: /*#__PURE__*/_jsx(VideoPlayerMovieIcon, {}),
272
+ description: 'Learn how coding can change your life (and the world) for the better.'
273
+ }];