@codecademy/brand 5.4.0-alpha.53ec171ca.0 → 5.4.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.
- package/dist/AppHeader/AppHeaderElements/AppHeaderLiveCoursesDropdown/NavPanels.d.ts +0 -1
- package/dist/AppHeader/AppHeaderElements/AppHeaderLiveCoursesDropdown/NavPanels.js +24 -39
- package/dist/AppHeader/AppHeaderElements/AppHeaderLiveCoursesDropdown/consts.d.ts +1 -0
- package/dist/AppHeader/AppHeaderElements/AppHeaderLiveCoursesDropdown/consts.js +4 -11
- package/dist/Coaching/coachingOfferingIcons.d.ts +4 -0
- package/dist/Coaching/coachingOfferingIcons.js +7 -0
- package/dist/Coaching/coachingOfferings.d.ts +18 -0
- package/dist/Coaching/coachingOfferings.js +17 -0
- package/dist/Coaching/getCoachingOfferingNavLinks.d.ts +3 -0
- package/dist/Coaching/getCoachingOfferingNavLinks.js +14 -0
- package/dist/Coaching/getCoachingOfferingNavLinks.test.js +10 -0
- package/dist/Coaching/index.d.ts +3 -0
- package/dist/Coaching/index.js +3 -0
- package/dist/GlobalHeader/types.d.ts +0 -11
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +1 -1
- package/dist/AppHeader/AppHeaderElements/AppHeaderLiveCoursesDropdown/AppHeaderWorkshopCard/index.d.ts +0 -6
- package/dist/AppHeader/AppHeaderElements/AppHeaderLiveCoursesDropdown/AppHeaderWorkshopCard/index.js +0 -135
|
@@ -4,7 +4,7 @@ import { useGlobalHeaderDynamicDataContext, useGlobalHeaderItemClick } from '../
|
|
|
4
4
|
import { useAppHeaderSectionContext } from '../AppHeaderSection/AppHeaderSectionContext';
|
|
5
5
|
import { PanelLayout } from '../AppHeaderSection/PanelLayout';
|
|
6
6
|
import { SkillTile } from '../AppHeaderSkillTile';
|
|
7
|
-
import {
|
|
7
|
+
import { coachingOfferingLinks } from './consts';
|
|
8
8
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
9
9
|
const makeCta = (id, href, text, trackingTarget) => ({
|
|
10
10
|
id,
|
|
@@ -72,49 +72,34 @@ export const BootcampsPanel = () => {
|
|
|
72
72
|
})
|
|
73
73
|
});
|
|
74
74
|
};
|
|
75
|
-
export const WorkshopsPanel = () => {
|
|
76
|
-
const {
|
|
77
|
-
globalHeaderDynamicData
|
|
78
|
-
} = useGlobalHeaderDynamicDataContext();
|
|
79
|
-
const upcomingWorkshops = globalHeaderDynamicData?.liveCoursesDropdown?.upcomingWorkshops ?? [];
|
|
80
|
-
const description = /*#__PURE__*/_jsx(Box, {
|
|
81
|
-
mb: 8,
|
|
82
|
-
children: "Join live, interactive workshops designed to build practical skills in a short time. Led by experts, each session includes hands-on learning, real-time guidance, and community interaction to help you apply what you learn instantly."
|
|
83
|
-
});
|
|
84
|
-
return /*#__PURE__*/_jsx(PanelLayout, {
|
|
85
|
-
heading: "Workshops",
|
|
86
|
-
description: description,
|
|
87
|
-
linkItem: makeCta('workshops', '/bootcamps#upcoming-workshops', 'Explore Workshops', 'topnav_live_courses_workshops'),
|
|
88
|
-
children: upcomingWorkshops.length > 0 && /*#__PURE__*/_jsxs(_Fragment, {
|
|
89
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
90
|
-
variant: "p-large",
|
|
91
|
-
fontWeight: 700,
|
|
92
|
-
as: "h3",
|
|
93
|
-
children: "Upcoming workshops"
|
|
94
|
-
}), /*#__PURE__*/_jsx(GridBox, {
|
|
95
|
-
gridTemplateColumns: {
|
|
96
|
-
_: '1fr',
|
|
97
|
-
xs: '1fr 1fr'
|
|
98
|
-
},
|
|
99
|
-
gap: 24,
|
|
100
|
-
pl: 0,
|
|
101
|
-
as: "ul",
|
|
102
|
-
listStyle: "none",
|
|
103
|
-
mb: 24,
|
|
104
|
-
children: upcomingWorkshops.map(workshop => /*#__PURE__*/_jsx(AppHeaderWorkshopCard, {
|
|
105
|
-
workshop: workshop
|
|
106
|
-
}, workshop.id))
|
|
107
|
-
})]
|
|
108
|
-
})
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
75
|
export const CoachingPanel = () => {
|
|
112
|
-
return /*#__PURE__*/
|
|
76
|
+
return /*#__PURE__*/_jsxs(PanelLayout, {
|
|
113
77
|
heading: "Coaching",
|
|
114
78
|
description: /*#__PURE__*/_jsx(Box, {
|
|
115
79
|
mb: 8,
|
|
116
80
|
children: "Get personalized mentorship from expert coaches to accelerate your career journey. Whether you're preparing for technical interviews, exploring career options, or seeking guidance, 1:1 coaching gives you tailored support to reach your goals."
|
|
117
81
|
}),
|
|
118
|
-
linkItem: makeCta('coaching', '/coaching', 'Explore Coaching', 'topnav_live_courses_coaching')
|
|
82
|
+
linkItem: makeCta('coaching', '/coaching', 'Explore Coaching', 'topnav_live_courses_coaching'),
|
|
83
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
84
|
+
variant: "p-large",
|
|
85
|
+
fontWeight: 700,
|
|
86
|
+
as: "h3",
|
|
87
|
+
children: "Our offerings"
|
|
88
|
+
}), /*#__PURE__*/_jsx(GridBox, {
|
|
89
|
+
gridTemplateColumns: {
|
|
90
|
+
_: '1fr',
|
|
91
|
+
xs: '1fr 1fr'
|
|
92
|
+
},
|
|
93
|
+
gap: 8,
|
|
94
|
+
pl: 0,
|
|
95
|
+
as: "ul",
|
|
96
|
+
listStyle: "none",
|
|
97
|
+
mb: 24,
|
|
98
|
+
children: coachingOfferingLinks.map(offering => /*#__PURE__*/_jsx("li", {
|
|
99
|
+
children: /*#__PURE__*/_jsx(SkillTile, {
|
|
100
|
+
item: offering
|
|
101
|
+
})
|
|
102
|
+
}, offering.id))
|
|
103
|
+
})]
|
|
119
104
|
});
|
|
120
105
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AppHeaderLiveCoursesDropdownItem } from '../../shared';
|
|
3
|
+
export declare const coachingOfferingLinks: import("../../shared").AppHeaderLinkItem[];
|
|
3
4
|
export type NavSectionConfig = {
|
|
4
5
|
item: AppHeaderLiveCoursesDropdownItem;
|
|
5
6
|
panel: React.ComponentType<{
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { CertificateIcon, ObjectiveIcon } from '@codecademy/gamut-icons';
|
|
2
|
+
import { getCoachingOfferingNavLinks } from '../../../Coaching';
|
|
3
|
+
import { BootcampsPanel, CoachingPanel } from './NavPanels';
|
|
4
|
+
export const coachingOfferingLinks = getCoachingOfferingNavLinks();
|
|
3
5
|
export const LIVE_COURSES_NAV_SECTIONS = [{
|
|
4
6
|
item: {
|
|
5
7
|
icon: CertificateIcon,
|
|
@@ -9,15 +11,6 @@ export const LIVE_COURSES_NAV_SECTIONS = [{
|
|
|
9
11
|
trackingTarget: 'topnav_live_courses_tab_bootcamps'
|
|
10
12
|
},
|
|
11
13
|
panel: BootcampsPanel
|
|
12
|
-
}, {
|
|
13
|
-
item: {
|
|
14
|
-
icon: BadgeIcon,
|
|
15
|
-
text: 'Workshops',
|
|
16
|
-
id: 'workshops',
|
|
17
|
-
type: 'live-courses-dropdown',
|
|
18
|
-
trackingTarget: 'topnav_live_courses_tab_workshops'
|
|
19
|
-
},
|
|
20
|
-
panel: WorkshopsPanel
|
|
21
14
|
}, {
|
|
22
15
|
item: {
|
|
23
16
|
icon: ObjectiveIcon,
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type GamutIconProps } from '@codecademy/gamut-icons';
|
|
2
|
+
import type React from 'react';
|
|
3
|
+
import type { CoachingOfferingIcon } from './coachingOfferings';
|
|
4
|
+
export declare const COACHING_OFFERING_ICONS: Record<CoachingOfferingIcon, React.ComponentType<GamutIconProps>>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BookBookmarkIcon, HammerWrenchIcon, ProgrammingTeamChatIcon, QuizIcon } from '@codecademy/gamut-icons';
|
|
2
|
+
export const COACHING_OFFERING_ICONS = {
|
|
3
|
+
career: ProgrammingTeamChatIcon,
|
|
4
|
+
technical: HammerWrenchIcon,
|
|
5
|
+
behavioral: QuizIcon,
|
|
6
|
+
tutoring: BookBookmarkIcon
|
|
7
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const COACHING_OFFERINGS: readonly [{
|
|
2
|
+
readonly title: "Career guidance and mentorship";
|
|
3
|
+
readonly icon: "career";
|
|
4
|
+
readonly bullets: readonly ["Clarify your career goals with a dedicated coach.", "Portfolio and resume reviews.", "Explore growth opportunities with guidance tailored to where you are."];
|
|
5
|
+
}, {
|
|
6
|
+
readonly title: "Technical mock interview";
|
|
7
|
+
readonly icon: "technical";
|
|
8
|
+
readonly bullets: readonly ["Practice coding and system design questions.", "Personalized feedback on your problem-solving approach and delivery.", "Build confidence for your next technical interview."];
|
|
9
|
+
}, {
|
|
10
|
+
readonly title: "Behavioral mock interview";
|
|
11
|
+
readonly icon: "behavioral";
|
|
12
|
+
readonly bullets: readonly ["Practice with an expert coach until you are interview-ready.", "Learn to structure answers and tell your story authentically.", "Personalized feedback to sharpen your delivery."];
|
|
13
|
+
}, {
|
|
14
|
+
readonly title: "Tutoring";
|
|
15
|
+
readonly icon: "tutoring";
|
|
16
|
+
readonly bullets: readonly ["1:1 guidance on new or existing technical skills with experts in your target field.", "Complex concepts broken down at your pace.", "Hands-on practice with real-time support."];
|
|
17
|
+
}];
|
|
18
|
+
export type CoachingOfferingIcon = (typeof COACHING_OFFERINGS)[number]['icon'];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const COACHING_OFFERINGS = [{
|
|
2
|
+
title: 'Career guidance and mentorship',
|
|
3
|
+
icon: 'career',
|
|
4
|
+
bullets: ['Clarify your career goals with a dedicated coach.', 'Portfolio and resume reviews.', 'Explore growth opportunities with guidance tailored to where you are.']
|
|
5
|
+
}, {
|
|
6
|
+
title: 'Technical mock interview',
|
|
7
|
+
icon: 'technical',
|
|
8
|
+
bullets: ['Practice coding and system design questions.', 'Personalized feedback on your problem-solving approach and delivery.', 'Build confidence for your next technical interview.']
|
|
9
|
+
}, {
|
|
10
|
+
title: 'Behavioral mock interview',
|
|
11
|
+
icon: 'behavioral',
|
|
12
|
+
bullets: ['Practice with an expert coach until you are interview-ready.', 'Learn to structure answers and tell your story authentically.', 'Personalized feedback to sharpen your delivery.']
|
|
13
|
+
}, {
|
|
14
|
+
title: 'Tutoring',
|
|
15
|
+
icon: 'tutoring',
|
|
16
|
+
bullets: ['1:1 guidance on new or existing technical skills with experts in your target field.', 'Complex concepts broken down at your pace.', 'Hands-on practice with real-time support.']
|
|
17
|
+
}];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { COACHING_OFFERING_ICONS } from './coachingOfferingIcons';
|
|
2
|
+
import { COACHING_OFFERINGS } from './coachingOfferings';
|
|
3
|
+
export const COACHING_OFFERING_NAV_LIMIT = 4;
|
|
4
|
+
export const getCoachingOfferingNavLinks = () => COACHING_OFFERINGS.slice(0, COACHING_OFFERING_NAV_LIMIT).map(({
|
|
5
|
+
title,
|
|
6
|
+
icon
|
|
7
|
+
}) => ({
|
|
8
|
+
id: icon,
|
|
9
|
+
href: '/coaching',
|
|
10
|
+
text: title,
|
|
11
|
+
type: 'link',
|
|
12
|
+
icon: COACHING_OFFERING_ICONS[icon],
|
|
13
|
+
trackingTarget: `topnav_live_courses_coaching_${icon}`
|
|
14
|
+
}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { COACHING_OFFERINGS } from './coachingOfferings';
|
|
2
|
+
import { COACHING_OFFERING_NAV_LIMIT, getCoachingOfferingNavLinks } from './getCoachingOfferingNavLinks';
|
|
3
|
+
describe('getCoachingOfferingNavLinks', () => {
|
|
4
|
+
it('returns at most four nav links', () => {
|
|
5
|
+
expect(getCoachingOfferingNavLinks().length).toBeLessThanOrEqual(COACHING_OFFERING_NAV_LIMIT);
|
|
6
|
+
});
|
|
7
|
+
it('returns the first offerings up to the nav limit', () => {
|
|
8
|
+
expect(getCoachingOfferingNavLinks().length).toBe(Math.min(COACHING_OFFERINGS.length, COACHING_OFFERING_NAV_LIMIT));
|
|
9
|
+
});
|
|
10
|
+
});
|
|
@@ -104,19 +104,8 @@ export type UpcomingLiveCoursesNavItem = {
|
|
|
104
104
|
text: string;
|
|
105
105
|
trackingTarget: string;
|
|
106
106
|
};
|
|
107
|
-
export type UpcomingWorkshopNavItem = {
|
|
108
|
-
id: string;
|
|
109
|
-
href: string;
|
|
110
|
-
trackingTarget: string;
|
|
111
|
-
title: string;
|
|
112
|
-
instructorName: string;
|
|
113
|
-
instructorTitle: string;
|
|
114
|
-
nextCohortStartDate?: string;
|
|
115
|
-
durationLabel?: string;
|
|
116
|
-
};
|
|
117
107
|
export type LiveCoursesDropdownData = {
|
|
118
108
|
upcomingBootcamps: UpcomingLiveCoursesNavItem[];
|
|
119
|
-
upcomingWorkshops: UpcomingWorkshopNavItem[];
|
|
120
109
|
};
|
|
121
110
|
export type GlobalHeaderDynamicData = {
|
|
122
111
|
catalogDropdown: {
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export * from './CareerPathCard';
|
|
|
22
22
|
export * from './Carousel';
|
|
23
23
|
export * from './CertificationPathCard';
|
|
24
24
|
export * from './CoachingSessionCard';
|
|
25
|
+
export * from './Coaching';
|
|
25
26
|
export * from './CommunityEventCard';
|
|
26
27
|
export * from './CommunityEventToast';
|
|
27
28
|
export * from './ContentGroupBaseCard';
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,7 @@ export * from './CareerPathCard';
|
|
|
22
22
|
export * from './Carousel';
|
|
23
23
|
export * from './CertificationPathCard';
|
|
24
24
|
export * from './CoachingSessionCard';
|
|
25
|
+
export * from './Coaching';
|
|
25
26
|
export * from './CommunityEventCard';
|
|
26
27
|
export * from './CommunityEventToast';
|
|
27
28
|
export * from './ContentGroupBaseCard';
|
package/package.json
CHANGED
package/dist/AppHeader/AppHeaderElements/AppHeaderLiveCoursesDropdown/AppHeaderWorkshopCard/index.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import _styled from "@emotion/styled/base";
|
|
2
|
-
import { Anchor, Box, Card, FlexBox, Text } from '@codecademy/gamut';
|
|
3
|
-
import { CalendarIcon, OptimizationClockIcon } from '@codecademy/gamut-icons';
|
|
4
|
-
import { GridDense } from '@codecademy/gamut-patterns';
|
|
5
|
-
import { useGlobalHeaderItemClick } from '../../../../GlobalHeader/context';
|
|
6
|
-
import { Divider } from '../../../../InstructorCard';
|
|
7
|
-
import { useAppHeaderDropdownContext } from '../../AppHeaderDropdownProvider';
|
|
8
|
-
import { useAppHeaderSectionContext } from '../../AppHeaderSection/AppHeaderSectionContext';
|
|
9
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
10
|
-
const StyledCard = /*#__PURE__*/_styled(Card, {
|
|
11
|
-
target: "e1aahqt50",
|
|
12
|
-
label: "StyledCard"
|
|
13
|
-
})("&:hover{color:", ({
|
|
14
|
-
theme
|
|
15
|
-
}) => theme.colors.primary, ";border-color:", ({
|
|
16
|
-
theme
|
|
17
|
-
}) => theme.colors.primary, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvQXBwSGVhZGVyRWxlbWVudHMvQXBwSGVhZGVyTGl2ZUNvdXJzZXNEcm9wZG93bi9BcHBIZWFkZXJXb3Jrc2hvcENhcmQvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVcrQiIsImZpbGUiOiIuLi8uLi8uLi8uLi8uLi9zcmMvQXBwSGVhZGVyL0FwcEhlYWRlckVsZW1lbnRzL0FwcEhlYWRlckxpdmVDb3Vyc2VzRHJvcGRvd24vQXBwSGVhZGVyV29ya3Nob3BDYXJkL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuY2hvciwgQm94LCBDYXJkLCBGbGV4Qm94LCBUZXh0IH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJJY29uLCBPcHRpbWl6YXRpb25DbG9ja0ljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBHcmlkRGVuc2UgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1wYXR0ZXJucyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5cbmltcG9ydCB7IHVzZUdsb2JhbEhlYWRlckl0ZW1DbGljayB9IGZyb20gJy4uLy4uLy4uLy4uL0dsb2JhbEhlYWRlci9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgVXBjb21pbmdXb3Jrc2hvcE5hdkl0ZW0gfSBmcm9tICcuLi8uLi8uLi8uLi9HbG9iYWxIZWFkZXIvdHlwZXMnO1xuaW1wb3J0IHsgRGl2aWRlciB9IGZyb20gJy4uLy4uLy4uLy4uL0luc3RydWN0b3JDYXJkJztcbmltcG9ydCB7IHVzZUFwcEhlYWRlckRyb3Bkb3duQ29udGV4dCB9IGZyb20gJy4uLy4uL0FwcEhlYWRlckRyb3Bkb3duUHJvdmlkZXInO1xuaW1wb3J0IHsgdXNlQXBwSGVhZGVyU2VjdGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi9BcHBIZWFkZXJTZWN0aW9uL0FwcEhlYWRlclNlY3Rpb25Db250ZXh0JztcblxuY29uc3QgU3R5bGVkQ2FyZCA9IHN0eWxlZChDYXJkKWBcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnl9O1xuICAgIGJvcmRlci1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMucHJpbWFyeX07XG4gIH1cbmA7XG5cbnR5cGUgSW5mb1Jvd1Byb3BzID0ge1xuICBpY29uOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBJbmZvUm93OiBSZWFjdC5GQzxJbmZvUm93UHJvcHM+ID0gKHsgaWNvbiwgY2hpbGRyZW4gfSkgPT4gKFxuICA8RmxleEJveCBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgZ2FwPXs4fT5cbiAgICB7aWNvbn1cbiAgICA8VGV4dCBmb250U2l6ZT17MTR9IGxpbmVIZWlnaHQ9XCJiYXNlXCIgY29sb3I9XCJ0ZXh0XCI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9UZXh0PlxuICA8L0ZsZXhCb3g+XG4pO1xuXG50eXBlIEFwcEhlYWRlcldvcmtzaG9wQ2FyZFByb3BzID0ge1xuICB3b3Jrc2hvcDogVXBjb21pbmdXb3Jrc2hvcE5hdkl0ZW07XG59O1xuXG5leHBvcnQgY29uc3QgQXBwSGVhZGVyV29ya3Nob3BDYXJkOiBSZWFjdC5GQzxBcHBIZWFkZXJXb3Jrc2hvcENhcmRQcm9wcz4gPSAoe1xuICB3b3Jrc2hvcCxcbn0pID0+IHtcbiAgY29uc3QgeyBnbG9iYWxIZWFkZXJJdGVtQ2xpY2sgfSA9IHVzZUdsb2JhbEhlYWRlckl0ZW1DbGljaygpO1xuICBjb25zdCB7IGhhbmRsZUNsb3NlIH0gPSB1c2VBcHBIZWFkZXJEcm9wZG93bkNvbnRleHQoKTtcbiAgY29uc3QgeyB0YWJJbmRleCB9ID0gdXNlQXBwSGVhZGVyU2VjdGlvbkNvbnRleHQoKTtcblxuICBjb25zdCBsaW5rSXRlbSA9IHtcbiAgICB0eXBlOiAnbGluaycgYXMgY29uc3QsXG4gICAgaWQ6IHdvcmtzaG9wLmlkLFxuICAgIGhyZWY6IHdvcmtzaG9wLmhyZWYsXG4gICAgdGV4dDogd29ya3Nob3AudGl0bGUsXG4gICAgdHJhY2tpbmdUYXJnZXQ6IHdvcmtzaG9wLnRyYWNraW5nVGFyZ2V0LFxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGxpPlxuICAgICAgPEFuY2hvclxuICAgICAgICBocmVmPXt3b3Jrc2hvcC5ocmVmfVxuICAgICAgICB2YXJpYW50PVwiaW50ZXJmYWNlXCJcbiAgICAgICAgZGlzcGxheT1cImJsb2NrXCJcbiAgICAgICAgdGFiSW5kZXg9e3RhYkluZGV4fVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB7XG4gICAgICAgICAgZ2xvYmFsSGVhZGVySXRlbUNsaWNrKGV2ZW50LCBsaW5rSXRlbSk7XG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZENhcmRcbiAgICAgICAgICBib3JkZXJSYWRpdXM9XCJsZ1wiXG4gICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXRlcnRpYXJ5XCJcbiAgICAgICAgICBkaXNwbGF5PVwiZmxleFwiXG4gICAgICAgICAgYWxpZ25JdGVtcz1cImZsZXgtc3RhcnRcIlxuICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICBweT17MjR9XG4gICAgICAgICAgbWluSGVpZ2h0PXsyMTl9XG4gICAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgdmFyaWFudD1cInAtbGFyZ2VcIlxuICAgICAgICAgICAgZm9udFdlaWdodD17NzAwfVxuICAgICAgICAgICAgYXM9XCJoM1wiXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgdHJ1bmNhdGU9XCJlbGxpcHNpc1wiXG4gICAgICAgICAgICB0cnVuY2F0ZUxpbmVzPXsyfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt3b3Jrc2hvcC50aXRsZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPEJveCB3aWR0aD1cIjEwMCVcIj5cbiAgICAgICAgICAgIDxHcmlkRGVuc2UgaGVpZ2h0PXs0fSAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxGbGV4Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBnYXA9ezR9IHdpZHRoPVwiMTAwJVwiPlxuICAgICAgICAgICAgPFRleHQgZm9udFNpemU9ezE0fSBmb250V2VpZ2h0PVwiYm9sZFwiIGxpbmVIZWlnaHQ9XCJiYXNlXCI+XG4gICAgICAgICAgICAgIHt3b3Jrc2hvcC5pbnN0cnVjdG9yTmFtZX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNH1cbiAgICAgICAgICAgICAgbGluZUhlaWdodD1cImJhc2VcIlxuICAgICAgICAgICAgICBjb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgdHJ1bmNhdGU9XCJlbGxpcHNpc1wiXG4gICAgICAgICAgICAgIHRydW5jYXRlTGluZXM9ezF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt3b3Jrc2hvcC5pbnN0cnVjdG9yVGl0bGV9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCJcbiAgICAgICAgICAgIGFsaWduU2VsZj1cInN0cmV0Y2hcIlxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgIG10PXs0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt3b3Jrc2hvcC5uZXh0Q29ob3J0U3RhcnREYXRlID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgPEluZm9Sb3cgaWNvbj17PENhbGVuZGFySWNvbiBzaXplPXsxNn0gYXJpYS1oaWRkZW4gLz59PlxuICAgICAgICAgICAgICAgICAgTmV4dCBjb2hvcnQ6IG9ueycgJ31cbiAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwic3BhblwiIGZvbnRXZWlnaHQ9XCJib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt3b3Jrc2hvcC5uZXh0Q29ob3J0U3RhcnREYXRlfVxuICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDwvSW5mb1Jvdz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHt3b3Jrc2hvcC5kdXJhdGlvbkxhYmVsID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgPEluZm9Sb3cgaWNvbj17PE9wdGltaXphdGlvbkNsb2NrSWNvbiBzaXplPXsxNn0gYXJpYS1oaWRkZW4gLz59PlxuICAgICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgZm9udFdlaWdodD1cImJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAge3dvcmtzaG9wLmR1cmF0aW9uTGFiZWx9XG4gICAgICAgICAgICAgICAgICA8L1RleHQ+eycgJ31cbiAgICAgICAgICAgICAgICAgIGxvbmdcbiAgICAgICAgICAgICAgICA8L0luZm9Sb3c+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICA8L1N0eWxlZENhcmQ+XG4gICAgICA8L0FuY2hvcj5cbiAgICA8L2xpPlxuICApO1xufTtcbiJdfQ== */"));
|
|
18
|
-
const InfoRow = ({
|
|
19
|
-
icon,
|
|
20
|
-
children
|
|
21
|
-
}) => /*#__PURE__*/_jsxs(FlexBox, {
|
|
22
|
-
alignItems: "center",
|
|
23
|
-
gap: 8,
|
|
24
|
-
children: [icon, /*#__PURE__*/_jsx(Text, {
|
|
25
|
-
fontSize: 14,
|
|
26
|
-
lineHeight: "base",
|
|
27
|
-
color: "text",
|
|
28
|
-
children: children
|
|
29
|
-
})]
|
|
30
|
-
});
|
|
31
|
-
export const AppHeaderWorkshopCard = ({
|
|
32
|
-
workshop
|
|
33
|
-
}) => {
|
|
34
|
-
const {
|
|
35
|
-
globalHeaderItemClick
|
|
36
|
-
} = useGlobalHeaderItemClick();
|
|
37
|
-
const {
|
|
38
|
-
handleClose
|
|
39
|
-
} = useAppHeaderDropdownContext();
|
|
40
|
-
const {
|
|
41
|
-
tabIndex
|
|
42
|
-
} = useAppHeaderSectionContext();
|
|
43
|
-
const linkItem = {
|
|
44
|
-
type: 'link',
|
|
45
|
-
id: workshop.id,
|
|
46
|
-
href: workshop.href,
|
|
47
|
-
text: workshop.title,
|
|
48
|
-
trackingTarget: workshop.trackingTarget
|
|
49
|
-
};
|
|
50
|
-
return /*#__PURE__*/_jsx("li", {
|
|
51
|
-
children: /*#__PURE__*/_jsx(Anchor, {
|
|
52
|
-
href: workshop.href,
|
|
53
|
-
variant: "interface",
|
|
54
|
-
display: "block",
|
|
55
|
-
tabIndex: tabIndex,
|
|
56
|
-
onClick: event => {
|
|
57
|
-
globalHeaderItemClick(event, linkItem);
|
|
58
|
-
handleClose();
|
|
59
|
-
},
|
|
60
|
-
children: /*#__PURE__*/_jsxs(StyledCard, {
|
|
61
|
-
borderRadius: "lg",
|
|
62
|
-
border: 1,
|
|
63
|
-
borderColor: "border-tertiary",
|
|
64
|
-
display: "flex",
|
|
65
|
-
alignItems: "flex-start",
|
|
66
|
-
flexDirection: "column",
|
|
67
|
-
px: 16,
|
|
68
|
-
py: 24,
|
|
69
|
-
minHeight: 219,
|
|
70
|
-
height: "100%",
|
|
71
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
72
|
-
variant: "p-large",
|
|
73
|
-
fontWeight: 700,
|
|
74
|
-
as: "h3",
|
|
75
|
-
width: "100%",
|
|
76
|
-
truncate: "ellipsis",
|
|
77
|
-
truncateLines: 2,
|
|
78
|
-
children: workshop.title
|
|
79
|
-
}), /*#__PURE__*/_jsx(Box, {
|
|
80
|
-
width: "100%",
|
|
81
|
-
children: /*#__PURE__*/_jsx(GridDense, {
|
|
82
|
-
height: 4
|
|
83
|
-
})
|
|
84
|
-
}), /*#__PURE__*/_jsxs(FlexBox, {
|
|
85
|
-
flexDirection: "column",
|
|
86
|
-
gap: 4,
|
|
87
|
-
width: "100%",
|
|
88
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
89
|
-
fontSize: 14,
|
|
90
|
-
fontWeight: "bold",
|
|
91
|
-
lineHeight: "base",
|
|
92
|
-
children: workshop.instructorName
|
|
93
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
94
|
-
fontSize: 14,
|
|
95
|
-
lineHeight: "base",
|
|
96
|
-
color: "text-secondary",
|
|
97
|
-
truncate: "ellipsis",
|
|
98
|
-
truncateLines: 1,
|
|
99
|
-
children: workshop.instructorTitle
|
|
100
|
-
})]
|
|
101
|
-
}), /*#__PURE__*/_jsxs(FlexBox, {
|
|
102
|
-
flexDirection: "column",
|
|
103
|
-
alignSelf: "stretch",
|
|
104
|
-
width: "100%",
|
|
105
|
-
mt: 4,
|
|
106
|
-
children: [workshop.nextCohortStartDate ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
107
|
-
children: [/*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsxs(InfoRow, {
|
|
108
|
-
icon: /*#__PURE__*/_jsx(CalendarIcon, {
|
|
109
|
-
size: 16,
|
|
110
|
-
"aria-hidden": true
|
|
111
|
-
}),
|
|
112
|
-
children: ["Next cohort: on", ' ', /*#__PURE__*/_jsx(Text, {
|
|
113
|
-
as: "span",
|
|
114
|
-
fontWeight: "bold",
|
|
115
|
-
children: workshop.nextCohortStartDate
|
|
116
|
-
})]
|
|
117
|
-
})]
|
|
118
|
-
}) : null, workshop.durationLabel ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
119
|
-
children: [/*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsxs(InfoRow, {
|
|
120
|
-
icon: /*#__PURE__*/_jsx(OptimizationClockIcon, {
|
|
121
|
-
size: 16,
|
|
122
|
-
"aria-hidden": true
|
|
123
|
-
}),
|
|
124
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
125
|
-
as: "span",
|
|
126
|
-
fontWeight: "bold",
|
|
127
|
-
children: workshop.durationLabel
|
|
128
|
-
}), ' ', "long"]
|
|
129
|
-
})]
|
|
130
|
-
}) : null]
|
|
131
|
-
})]
|
|
132
|
-
})
|
|
133
|
-
})
|
|
134
|
-
});
|
|
135
|
-
};
|