@codecademy/brand 2.5.0-alpha.975930aaa2.0 → 3.0.0-alpha.220d4ef8ba.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 (64) hide show
  1. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSection/elements.d.ts +0 -5
  2. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSection/elements.js +12 -56
  3. package/dist/AppHeader/AppHeaderElements/AppHeaderCatalogSection/index.js +3 -5
  4. package/dist/CareerPathCard/index.d.ts +1 -4
  5. package/dist/CareerPathCard/index.js +7 -15
  6. package/dist/CertificationPathCard/index.d.ts +1 -4
  7. package/dist/CertificationPathCard/index.js +9 -17
  8. package/dist/ContentGroupBaseCard/index.d.ts +3 -5
  9. package/dist/ContentGroupBaseCard/index.js +72 -129
  10. package/dist/ContentGroupBaseCard/shared.js +23 -29
  11. package/dist/CourseCard/index.d.ts +1 -4
  12. package/dist/CourseCard/index.js +11 -15
  13. package/dist/GlobalHeader/GlobalHeaderItems.js +1 -1
  14. package/dist/GlobalHeader/index.d.ts +0 -1
  15. package/dist/GlobalHeader/index.js +37 -41
  16. package/dist/GlobalHeader/types.d.ts +0 -1
  17. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.d.ts +8 -0
  18. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.js +55 -0
  19. package/dist/LearningOutcomeAssessmentScores/index.d.ts +8 -0
  20. package/dist/LearningOutcomeAssessmentScores/index.js +24 -0
  21. package/dist/LearningOutcomeFlyout/index.d.ts +32 -0
  22. package/dist/LearningOutcomeFlyout/index.js +170 -0
  23. package/dist/LearningOutcomeTile/index.js +1 -3
  24. package/dist/LearningOutcomeTile/types.d.ts +0 -1
  25. package/dist/SkillPathCard/index.d.ts +1 -4
  26. package/dist/SkillPathCard/index.js +7 -15
  27. package/dist/index.d.ts +2 -1
  28. package/dist/index.js +2 -1
  29. package/dist/stories/Molecules/ContentGroupBaseCard.stories.js +1 -3
  30. package/dist/stories/Molecules/CurriculumCards/CareerPathCard.stories.js +1 -3
  31. package/dist/stories/Molecules/CurriculumCards/CertificationPathCard.stories.js +1 -3
  32. package/dist/stories/Molecules/CurriculumCards/CourseCard.stories.js +1 -3
  33. package/dist/stories/Molecules/CurriculumCards/SkillPathCard.stories.js +1 -3
  34. package/dist/stories/Molecules/LearningOutcomeAssessmentScores.stories.d.ts +6 -0
  35. package/dist/stories/Molecules/LearningOutcomeAssessmentScores.stories.js +23 -0
  36. package/dist/stories/Molecules/LearningOutcomeFlyout.stories.d.ts +5 -0
  37. package/dist/stories/Molecules/LearningOutcomeFlyout.stories.js +35 -0
  38. package/package.json +1 -1
  39. package/dist/Recurly/context/NoProvider.d.ts +0 -8
  40. package/dist/Recurly/context/NoProvider.js +0 -7
  41. package/dist/Recurly/context/elements/index.d.ts +0 -26
  42. package/dist/Recurly/context/elements/index.js +0 -46
  43. package/dist/Recurly/context/elements/index.test.js +0 -88
  44. package/dist/Recurly/context/index.d.ts +0 -2
  45. package/dist/Recurly/context/index.js +0 -2
  46. package/dist/Recurly/context/recurly/index.d.ts +0 -30
  47. package/dist/Recurly/context/recurly/index.js +0 -50
  48. package/dist/Recurly/context/recurly/index.test.js +0 -63
  49. package/dist/Recurly/context/recurly/loadRecurly.d.ts +0 -6
  50. package/dist/Recurly/context/recurly/loadRecurly.js +0 -22
  51. package/dist/Recurly/context/recurly/loadRecurly.test.js +0 -57
  52. package/dist/Recurly/context/recurly/w.d.ts +0 -14
  53. package/dist/Recurly/context/recurly/w.js +0 -4
  54. package/dist/Recurly/fields/RecurlyField.d.ts +0 -9
  55. package/dist/Recurly/fields/RecurlyField.js +0 -57
  56. package/dist/Recurly/fields/elements.d.ts +0 -17
  57. package/dist/Recurly/fields/elements.js +0 -106
  58. package/dist/Recurly/fields/elements.test.js +0 -79
  59. package/dist/Recurly/fields/index.d.ts +0 -2
  60. package/dist/Recurly/fields/index.js +0 -2
  61. package/dist/Recurly/index.d.ts +0 -2
  62. package/dist/Recurly/index.js +0 -2
  63. package/dist/stories/Molecules/Recurly.stories.d.ts +0 -5
  64. package/dist/stories/Molecules/Recurly.stories.js +0 -56
@@ -0,0 +1,55 @@
1
+ import { Box, FlexBox, Text } from '@codecademy/gamut';
2
+ import React from 'react';
3
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
+ export const AssessmentDetail = ({
5
+ isHighestScore,
6
+ score,
7
+ scoreAchievedAt
8
+ }) => {
9
+ const hasPassedAssessment = score && score >= 70;
10
+ return /*#__PURE__*/_jsxs(FlexBox, {
11
+ borderColor: "background-hover",
12
+ borderRight: isHighestScore ? 1 : 'none',
13
+ width: "100%",
14
+ p: 16,
15
+ column: true,
16
+ children: [/*#__PURE__*/_jsx(Text, {
17
+ fontWeight: 700,
18
+ children: isHighestScore ? 'Highest score' : 'Most recent'
19
+ }), score != null ? /*#__PURE__*/_jsxs(_Fragment, {
20
+ children: [/*#__PURE__*/_jsxs(FlexBox, {
21
+ mt: 8,
22
+ alignItems: "center",
23
+ children: [/*#__PURE__*/_jsx(Text, {
24
+ variant: "title-sm",
25
+ "data-testid": "score-percent",
26
+ mr: 4,
27
+ color: hasPassedAssessment ? 'green-700' : undefined,
28
+ children: `${score}%`
29
+ }), /*#__PURE__*/_jsx(Box, {
30
+ children: !hasPassedAssessment && /*#__PURE__*/_jsx(Box, {
31
+ "data-testid": "failed-assessment-indicator",
32
+ borderRadius: "full",
33
+ dimensions: 16,
34
+ bg: "orange-500",
35
+ mb: 4
36
+ })
37
+ })]
38
+ }), !!scoreAchievedAt && /*#__PURE__*/_jsx(Text, {
39
+ textColor: "text-secondary",
40
+ children: scoreAchievedAt
41
+ })]
42
+ }) : /*#__PURE__*/_jsxs(FlexBox, {
43
+ column: true,
44
+ color: "text-secondary",
45
+ children: [/*#__PURE__*/_jsx(Text, {
46
+ fontWeight: 700,
47
+ my: 4,
48
+ "aria-hidden": true,
49
+ children: "-"
50
+ }), /*#__PURE__*/_jsx(Text, {
51
+ children: "Not tested yet"
52
+ })]
53
+ })]
54
+ });
55
+ };
@@ -0,0 +1,8 @@
1
+ interface AssessmentScoresProps {
2
+ highestScore: number | null | undefined;
3
+ highestScoreAchievedAt: string | null | undefined;
4
+ latestScore: number | null | undefined;
5
+ latestScoreAchievedAt: string | null | undefined;
6
+ }
7
+ export declare const LearningOutcomeAssessmentScores: React.FC<AssessmentScoresProps>;
8
+ export {};
@@ -0,0 +1,24 @@
1
+ import { FlexBox } from '@codecademy/gamut';
2
+ import { AssessmentDetail } from './AssessmentDetail';
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ export const LearningOutcomeAssessmentScores = ({
5
+ highestScore,
6
+ highestScoreAchievedAt,
7
+ latestScore,
8
+ latestScoreAchievedAt
9
+ }) => {
10
+ return /*#__PURE__*/_jsxs(FlexBox, {
11
+ borderColor: "background-hover",
12
+ border: 1,
13
+ borderRadius: "md",
14
+ width: "100%",
15
+ children: [/*#__PURE__*/_jsx(AssessmentDetail, {
16
+ isHighestScore: true,
17
+ score: highestScore,
18
+ scoreAchievedAt: highestScoreAchievedAt
19
+ }), /*#__PURE__*/_jsx(AssessmentDetail, {
20
+ score: latestScore,
21
+ scoreAchievedAt: latestScoreAchievedAt
22
+ })]
23
+ });
24
+ };
@@ -0,0 +1,32 @@
1
+ import { LearningOutcomeLevels } from '../LearningOutcomeBadges';
2
+ export declare enum SkillClassification {
3
+ Language = "language",
4
+ Subject = "subject"
5
+ }
6
+ interface LearningOutcomeSkill {
7
+ id: string;
8
+ slug: string;
9
+ title?: string | null;
10
+ classification?: SkillClassification | null;
11
+ }
12
+ interface LearningOutcomeDetailsProps {
13
+ level: LearningOutcomeLevels;
14
+ outcome: string;
15
+ percentComplete: number | undefined | null;
16
+ highestScore: number | undefined | null;
17
+ highestScoreAchievedAt: string | undefined | null;
18
+ latestScore: number | undefined | null;
19
+ latestScoreAchievedAt: string | undefined | null;
20
+ skills?: LearningOutcomeSkill[] | null;
21
+ }
22
+ interface LearningOutcomeFlyoutProps {
23
+ expanded: boolean;
24
+ onClose: () => void;
25
+ learningOutcome: LearningOutcomeDetailsProps;
26
+ learningOutcomeHref: string;
27
+ learningOutcomeOnClick?: () => void;
28
+ skillTagOnClick?: (skillSlug: string) => void;
29
+ }
30
+ export declare const sortSkillsByClassification: (skills?: LearningOutcomeSkill[] | null) => LearningOutcomeSkill[];
31
+ export declare const LearningOutcomeFlyout: React.FC<LearningOutcomeFlyoutProps>;
32
+ export {};
@@ -0,0 +1,170 @@
1
+ import _styled from "@emotion/styled/base";
2
+ import { Anchor, FlexBox, Flyout, Text } from '@codecademy/gamut';
3
+ import { SmallCheckIcon } from '@codecademy/gamut-icons';
4
+ import { css } from '@codecademy/gamut-styles';
5
+ import { LearningOutcomeAssessmentScores } from '../LearningOutcomeAssessmentScores';
6
+ import { learningOutcomeLabels, LearningOutcomeLevelBadge, LearningOutcomeLowAssessmentBadge } from '../LearningOutcomeBadges';
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const StyledAnchor = /*#__PURE__*/_styled(Anchor, {
9
+ target: "e1ylhic51",
10
+ label: "StyledAnchor"
11
+ })(css({
12
+ color: 'text',
13
+ fontSize: 26,
14
+ fontWeight: 700,
15
+ textDecoration: 'none',
16
+ '&:hover, &:focus': {
17
+ color: 'text',
18
+ textDecoration: 'underline'
19
+ }
20
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MZWFybmluZ091dGNvbWVGbHlvdXQvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFxQiIsImZpbGUiOiIuLi8uLi9zcmMvTGVhcm5pbmdPdXRjb21lRmx5b3V0L2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuY2hvciwgRmxleEJveCwgRmx5b3V0LCBUZXh0IH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQnO1xuaW1wb3J0IHsgU21hbGxDaGVja0ljb24gfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1pY29ucyc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuXG5pbXBvcnQgeyBMZWFybmluZ091dGNvbWVBc3Nlc3NtZW50U2NvcmVzIH0gZnJvbSAnLi4vTGVhcm5pbmdPdXRjb21lQXNzZXNzbWVudFNjb3Jlcyc7XG5pbXBvcnQge1xuICBsZWFybmluZ091dGNvbWVMYWJlbHMsXG4gIExlYXJuaW5nT3V0Y29tZUxldmVsQmFkZ2UsXG4gIExlYXJuaW5nT3V0Y29tZUxldmVscyxcbiAgTGVhcm5pbmdPdXRjb21lTG93QXNzZXNzbWVudEJhZGdlLFxufSBmcm9tICcuLi9MZWFybmluZ091dGNvbWVCYWRnZXMnO1xuXG5jb25zdCBTdHlsZWRBbmNob3IgPSBzdHlsZWQoQW5jaG9yKShcbiAgY3NzKHtcbiAgICBjb2xvcjogJ3RleHQnLFxuICAgIGZvbnRTaXplOiAyNixcbiAgICBmb250V2VpZ2h0OiA3MDAsXG4gICAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgIGNvbG9yOiAndGV4dCcsXG4gICAgICB0ZXh0RGVjb3JhdGlvbjogJ3VuZGVybGluZScsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFNraWxsVGFnID0gc3R5bGVkKEFuY2hvcikoXG4gIGNzcyh7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGJvcmRlclJhZGl1czogJ21kJyxcbiAgICBib3JkZXI6IDEsXG4gICAgYm9yZGVyQ29sb3I6ICdib3JkZXItcHJpbWFyeScsXG4gICAgJyY6aG92ZXIsICY6Zm9jdXMnOiB7XG4gICAgICBjb2xvcjogJ3RleHQnLFxuICAgICAgYmc6ICdiYWNrZ3JvdW5kLWhvdmVyJyxcbiAgICB9LFxuICB9KVxuKTtcblxuZXhwb3J0IGVudW0gU2tpbGxDbGFzc2lmaWNhdGlvbiB7XG4gIExhbmd1YWdlID0gJ2xhbmd1YWdlJyxcbiAgU3ViamVjdCA9ICdzdWJqZWN0Jyxcbn1cbmludGVyZmFjZSBMZWFybmluZ091dGNvbWVTa2lsbCB7XG4gIGlkOiBzdHJpbmc7XG4gIHNsdWc6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBjbGFzc2lmaWNhdGlvbj86IFNraWxsQ2xhc3NpZmljYXRpb24gfCBudWxsO1xufVxuaW50ZXJmYWNlIExlYXJuaW5nT3V0Y29tZURldGFpbHNQcm9wcyB7XG4gIGxldmVsOiBMZWFybmluZ091dGNvbWVMZXZlbHM7XG4gIG91dGNvbWU6IHN0cmluZztcbiAgcGVyY2VudENvbXBsZXRlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsO1xuICBoaWdoZXN0U2NvcmU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGhpZ2hlc3RTY29yZUFjaGlldmVkQXQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGxhdGVzdFNjb3JlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsO1xuICBsYXRlc3RTY29yZUFjaGlldmVkQXQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHNraWxscz86IExlYXJuaW5nT3V0Y29tZVNraWxsW10gfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgTGVhcm5pbmdPdXRjb21lRmx5b3V0UHJvcHMge1xuICBleHBhbmRlZDogYm9vbGVhbjtcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbiAgbGVhcm5pbmdPdXRjb21lOiBMZWFybmluZ091dGNvbWVEZXRhaWxzUHJvcHM7XG4gIGxlYXJuaW5nT3V0Y29tZUhyZWY6IHN0cmluZztcbiAgbGVhcm5pbmdPdXRjb21lT25DbGljaz86ICgpID0+IHZvaWQ7XG4gIHNraWxsVGFnT25DbGljaz86IChza2lsbFNsdWc6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IHNvcnRTa2lsbHNCeUNsYXNzaWZpY2F0aW9uID0gKFxuICBza2lsbHM/OiBMZWFybmluZ091dGNvbWVTa2lsbFtdIHwgbnVsbFxuKSA9PiB7XG4gIGlmICghc2tpbGxzPy5sZW5ndGgpIHJldHVybiBbXTtcbiAgY29uc3Qgc2tpbGxzQ29weSA9IHNraWxscy5zbGljZSgpO1xuXG4gIGNvbnN0IHNvcnRlZFNraWxscyA9IHNraWxsc0NvcHk/LnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoYT8uY2xhc3NpZmljYXRpb24gPT09ICdsYW5ndWFnZScpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGI/LmNsYXNzaWZpY2F0aW9uID09PSAnc3ViamVjdCcpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSk7XG5cbiAgcmV0dXJuIHNvcnRlZFNraWxscztcbn07XG5cbmNvbnN0IGdldFNraWxsc0FyZWFQYXRoID0gKHNraWxsU2x1Zz86IHN0cmluZykgPT4ge1xuICByZXR1cm4gc2tpbGxTbHVnID8gYC9za2lsbC1hcmVhcy8ke3NraWxsU2x1Z31gIDogJy8nO1xufTtcblxuZXhwb3J0IGNvbnN0IExlYXJuaW5nT3V0Y29tZUZseW91dDogUmVhY3QuRkM8TGVhcm5pbmdPdXRjb21lRmx5b3V0UHJvcHM+ID0gKHtcbiAgZXhwYW5kZWQsXG4gIGxlYXJuaW5nT3V0Y29tZUhyZWYsXG4gIGxlYXJuaW5nT3V0Y29tZU9uQ2xpY2ssXG4gIGxlYXJuaW5nT3V0Y29tZToge1xuICAgIGhpZ2hlc3RTY29yZSxcbiAgICBoaWdoZXN0U2NvcmVBY2hpZXZlZEF0LFxuICAgIGxhdGVzdFNjb3JlLFxuICAgIGxhdGVzdFNjb3JlQWNoaWV2ZWRBdCxcbiAgICBsZXZlbCxcbiAgICBvdXRjb21lLFxuICAgIHBlcmNlbnRDb21wbGV0ZSxcbiAgICBza2lsbHMsXG4gIH0sXG4gIHNraWxsVGFnT25DbGljayxcbiAgb25DbG9zZSxcbn0pID0+IHtcbiAgY29uc3QgcGVyY2VudENvbXBsZXRlUGVyY2VudGFnZSA9XG4gICAgcGVyY2VudENvbXBsZXRlICE9IG51bGwgPyBwZXJjZW50Q29tcGxldGUgOiAwO1xuICBjb25zdCBsZXZlbExhYmVsID0gbGVhcm5pbmdPdXRjb21lTGFiZWxzW2xldmVsXTtcblxuICBjb25zdCBoYXNMb3dMYXRlc3RBc3Nlc3NtZW50ID0gQm9vbGVhbihcbiAgICBsYXRlc3RTY29yZSAhPSBudWxsICYmIGxhdGVzdFNjb3JlIDwgNzBcbiAgKTtcblxuICBjb25zdCBzaG93U2tpbGxzID0gISFza2lsbHM/Lmxlbmd0aDtcbiAgY29uc3Qgc29ydGVkU2tpbGxzID0gc29ydFNraWxsc0J5Q2xhc3NpZmljYXRpb24oc2tpbGxzKTtcblxuICBjb25zdCByZW5kZXJQcm9ncmVzcyA9ICgpID0+IChcbiAgICA8RmxleEJveCBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICB7Qm9vbGVhbihwZXJjZW50Q29tcGxldGVQZXJjZW50YWdlID09PSAxMDApICYmIChcbiAgICAgICAgPEZsZXhCb3hcbiAgICAgICAgICB3aWR0aD17MTZ9XG4gICAgICAgICAgaGVpZ2h0PXsxNn1cbiAgICAgICAgICBib3JkZXJSYWRpdXM9XCJtZFwiXG4gICAgICAgICAgYmc9XCJwcmltYXJ5XCJcbiAgICAgICAgICBtcj17OH1cbiAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudD1cImNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8U21hbGxDaGVja0ljb24gc2l6ZT17MTF9IGNvbG9yPVwid2hpdGVcIiAvPlxuICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICApfVxuICAgICAgPFRleHRcbiAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgdmFyaWFudD1cInAtbGFyZ2VcIlxuICAgICAgPntgJHtwZXJjZW50Q29tcGxldGVQZXJjZW50YWdlfSUgcHJvZ3Jlc3NgfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Rmx5b3V0XG4gICAgICBhcmlhLWxhYmVsPXtgJHtsZXZlbExhYmVsfSBkZXRhaWxzYH1cbiAgICAgIGNsb3NlTGFiZWw9e2BDbG9zZSAke2xldmVsTGFiZWx9IGRldGFpbHNgfVxuICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIG9wZW5Gcm9tPVwicmlnaHRcIlxuICAgICAgdGl0bGU9ezxUZXh0IHZhcmlhbnQ9XCJ0aXRsZS1zbVwiPntgJHtsZXZlbExhYmVsfSBkZXRhaWxzYH08L1RleHQ+fVxuICAgID5cbiAgICAgIDxGbGV4Qm94IGdhcD17MzJ9IG10PXszMn0gbXg9ezI0fSBjb2x1bW4+XG4gICAgICAgIHsvKiBCYWRnZXMsIE91dGNvbWUsIFRvcGljIHRhZ3MsIFByb2dyZXNzICovfVxuICAgICAgICA8RmxleEJveCBnYXA9ezI0fSBjb2x1bW4+XG4gICAgICAgICAgPEZsZXhCb3gganVzdGlmeUNvbnRlbnQ9XCJzcGFjZS1iZXR3ZWVuXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICAgICAgPExlYXJuaW5nT3V0Y29tZUxldmVsQmFkZ2UgbGV2ZWw9e2xldmVsfSBzaXplPVwiYmFzZVwiIC8+XG4gICAgICAgICAgICB7aGFzTG93TGF0ZXN0QXNzZXNzbWVudCAmJiA8TGVhcm5pbmdPdXRjb21lTG93QXNzZXNzbWVudEJhZGdlIC8+fVxuICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICA8RmxleEJveCBnYXA9ezE2fSBjb2x1bW4+XG4gICAgICAgICAgICA8U3R5bGVkQW5jaG9yXG4gICAgICAgICAgICAgIGhyZWY9e2xlYXJuaW5nT3V0Y29tZUhyZWZ9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGxlYXJuaW5nT3V0Y29tZU9uQ2xpY2s/LigpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7b3V0Y29tZX1cbiAgICAgICAgICAgIDwvU3R5bGVkQW5jaG9yPlxuICAgICAgICAgICAge3Nob3dTa2lsbHMgJiYgKFxuICAgICAgICAgICAgICA8RmxleEJveCBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgZ2FwPXsxMn0gZmxleFdyYXA9XCJ3cmFwXCI+XG4gICAgICAgICAgICAgICAge3NvcnRlZFNraWxscy5tYXAoKHNraWxsKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8U2tpbGxUYWdcbiAgICAgICAgICAgICAgICAgICAga2V5PXtza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJza2lsbC10YWdcIlxuICAgICAgICAgICAgICAgICAgICBweD17OH1cbiAgICAgICAgICAgICAgICAgICAgcHk9ezR9XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJpbnRlcmZhY2VcIlxuICAgICAgICAgICAgICAgICAgICBocmVmPXtnZXRTa2lsbHNBcmVhUGF0aChza2lsbC5zbHVnKX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2tpbGxUYWdPbkNsaWNrPy4oc2tpbGwuc2x1Zyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94IGNlbnRlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dD57c2tpbGwudGl0bGV9PC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8L1NraWxsVGFnPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICA8RmxleEJveCBib3JkZXJZPXsxfSBib3JkZXJDb2xvcj1cImJhY2tncm91bmQtaG92ZXJcIiBweT17MTZ9PlxuICAgICAgICAgICAge3JlbmRlclByb2dyZXNzKCl9XG4gICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICA8L0ZsZXhCb3g+XG5cbiAgICAgICAgey8qIEFzc2Vzc21lbnQgc2NvcmVzICovfVxuICAgICAgICA8RmxleEJveCBnYXA9ezE2fSBjb2x1bW4+XG4gICAgICAgICAgPFRleHQgdmFyaWFudD1cInRpdGxlLXhzXCI+RXZhbHVhdGlvbiByZXN1bHRzPC9UZXh0PlxuICAgICAgICAgIDxMZWFybmluZ091dGNvbWVBc3Nlc3NtZW50U2NvcmVzXG4gICAgICAgICAgICBoaWdoZXN0U2NvcmU9e2hpZ2hlc3RTY29yZX1cbiAgICAgICAgICAgIGhpZ2hlc3RTY29yZUFjaGlldmVkQXQ9e2hpZ2hlc3RTY29yZUFjaGlldmVkQXR9XG4gICAgICAgICAgICBsYXRlc3RTY29yZT17bGF0ZXN0U2NvcmV9XG4gICAgICAgICAgICBsYXRlc3RTY29yZUFjaGlldmVkQXQ9e2xhdGVzdFNjb3JlQWNoaWV2ZWRBdH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0ZsZXhCb3g+XG5cbiAgICAgICAgey8qIEZvciBsZXZlbCAyIGFuZCAzIExPcyBvbmx5OiBDaGlsZHJlbiBMT3MgZ29lcyBiZWxvdyBoZXJlICovfVxuXG4gICAgICAgIHsvKiBGb3IgbGV2ZWwgMiBMT3Mgb25seTogUGFyZW50IExPcyBnb2VzIGJlbG93IGhlcmUgKi99XG4gICAgICA8L0ZsZXhCb3g+XG4gICAgPC9GbHlvdXQ+XG4gICk7XG59O1xuIl19 */");
21
+ const SkillTag = /*#__PURE__*/_styled(Anchor, {
22
+ target: "e1ylhic50",
23
+ label: "SkillTag"
24
+ })(css({
25
+ fontSize: 14,
26
+ borderRadius: 'md',
27
+ border: 1,
28
+ borderColor: 'border-primary',
29
+ '&:hover, &:focus': {
30
+ color: 'text',
31
+ bg: 'background-hover'
32
+ }
33
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MZWFybmluZ091dGNvbWVGbHlvdXQvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBCaUIiLCJmaWxlIjoiLi4vLi4vc3JjL0xlYXJuaW5nT3V0Y29tZUZseW91dC9pbmRleC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmNob3IsIEZsZXhCb3gsIEZseW91dCwgVGV4dCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IFNtYWxsQ2hlY2tJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtc3R5bGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHsgTGVhcm5pbmdPdXRjb21lQXNzZXNzbWVudFNjb3JlcyB9IGZyb20gJy4uL0xlYXJuaW5nT3V0Y29tZUFzc2Vzc21lbnRTY29yZXMnO1xuaW1wb3J0IHtcbiAgbGVhcm5pbmdPdXRjb21lTGFiZWxzLFxuICBMZWFybmluZ091dGNvbWVMZXZlbEJhZGdlLFxuICBMZWFybmluZ091dGNvbWVMZXZlbHMsXG4gIExlYXJuaW5nT3V0Y29tZUxvd0Fzc2Vzc21lbnRCYWRnZSxcbn0gZnJvbSAnLi4vTGVhcm5pbmdPdXRjb21lQmFkZ2VzJztcblxuY29uc3QgU3R5bGVkQW5jaG9yID0gc3R5bGVkKEFuY2hvcikoXG4gIGNzcyh7XG4gICAgY29sb3I6ICd0ZXh0JyxcbiAgICBmb250U2l6ZTogMjYsXG4gICAgZm9udFdlaWdodDogNzAwLFxuICAgIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gICAgJyY6aG92ZXIsICY6Zm9jdXMnOiB7XG4gICAgICBjb2xvcjogJ3RleHQnLFxuICAgICAgdGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTa2lsbFRhZyA9IHN0eWxlZChBbmNob3IpKFxuICBjc3Moe1xuICAgIGZvbnRTaXplOiAxNCxcbiAgICBib3JkZXJSYWRpdXM6ICdtZCcsXG4gICAgYm9yZGVyOiAxLFxuICAgIGJvcmRlckNvbG9yOiAnYm9yZGVyLXByaW1hcnknLFxuICAgICcmOmhvdmVyLCAmOmZvY3VzJzoge1xuICAgICAgY29sb3I6ICd0ZXh0JyxcbiAgICAgIGJnOiAnYmFja2dyb3VuZC1ob3ZlcicsXG4gICAgfSxcbiAgfSlcbik7XG5cbmV4cG9ydCBlbnVtIFNraWxsQ2xhc3NpZmljYXRpb24ge1xuICBMYW5ndWFnZSA9ICdsYW5ndWFnZScsXG4gIFN1YmplY3QgPSAnc3ViamVjdCcsXG59XG5pbnRlcmZhY2UgTGVhcm5pbmdPdXRjb21lU2tpbGwge1xuICBpZDogc3RyaW5nO1xuICBzbHVnOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgY2xhc3NpZmljYXRpb24/OiBTa2lsbENsYXNzaWZpY2F0aW9uIHwgbnVsbDtcbn1cbmludGVyZmFjZSBMZWFybmluZ091dGNvbWVEZXRhaWxzUHJvcHMge1xuICBsZXZlbDogTGVhcm5pbmdPdXRjb21lTGV2ZWxzO1xuICBvdXRjb21lOiBzdHJpbmc7XG4gIHBlcmNlbnRDb21wbGV0ZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgaGlnaGVzdFNjb3JlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsO1xuICBoaWdoZXN0U2NvcmVBY2hpZXZlZEF0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBsYXRlc3RTY29yZTogbnVtYmVyIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgbGF0ZXN0U2NvcmVBY2hpZXZlZEF0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBza2lsbHM/OiBMZWFybmluZ091dGNvbWVTa2lsbFtdIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIExlYXJuaW5nT3V0Y29tZUZseW91dFByb3BzIHtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIGxlYXJuaW5nT3V0Y29tZTogTGVhcm5pbmdPdXRjb21lRGV0YWlsc1Byb3BzO1xuICBsZWFybmluZ091dGNvbWVIcmVmOiBzdHJpbmc7XG4gIGxlYXJuaW5nT3V0Y29tZU9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBza2lsbFRhZ09uQ2xpY2s/OiAoc2tpbGxTbHVnOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBzb3J0U2tpbGxzQnlDbGFzc2lmaWNhdGlvbiA9IChcbiAgc2tpbGxzPzogTGVhcm5pbmdPdXRjb21lU2tpbGxbXSB8IG51bGxcbikgPT4ge1xuICBpZiAoIXNraWxscz8ubGVuZ3RoKSByZXR1cm4gW107XG4gIGNvbnN0IHNraWxsc0NvcHkgPSBza2lsbHMuc2xpY2UoKTtcblxuICBjb25zdCBzb3J0ZWRTa2lsbHMgPSBza2lsbHNDb3B5Py5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKGE/LmNsYXNzaWZpY2F0aW9uID09PSAnbGFuZ3VhZ2UnKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiPy5jbGFzc2lmaWNhdGlvbiA9PT0gJ3N1YmplY3QnKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xuXG4gIHJldHVybiBzb3J0ZWRTa2lsbHM7XG59O1xuXG5jb25zdCBnZXRTa2lsbHNBcmVhUGF0aCA9IChza2lsbFNsdWc/OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHNraWxsU2x1ZyA/IGAvc2tpbGwtYXJlYXMvJHtza2lsbFNsdWd9YCA6ICcvJztcbn07XG5cbmV4cG9ydCBjb25zdCBMZWFybmluZ091dGNvbWVGbHlvdXQ6IFJlYWN0LkZDPExlYXJuaW5nT3V0Y29tZUZseW91dFByb3BzPiA9ICh7XG4gIGV4cGFuZGVkLFxuICBsZWFybmluZ091dGNvbWVIcmVmLFxuICBsZWFybmluZ091dGNvbWVPbkNsaWNrLFxuICBsZWFybmluZ091dGNvbWU6IHtcbiAgICBoaWdoZXN0U2NvcmUsXG4gICAgaGlnaGVzdFNjb3JlQWNoaWV2ZWRBdCxcbiAgICBsYXRlc3RTY29yZSxcbiAgICBsYXRlc3RTY29yZUFjaGlldmVkQXQsXG4gICAgbGV2ZWwsXG4gICAgb3V0Y29tZSxcbiAgICBwZXJjZW50Q29tcGxldGUsXG4gICAgc2tpbGxzLFxuICB9LFxuICBza2lsbFRhZ09uQ2xpY2ssXG4gIG9uQ2xvc2UsXG59KSA9PiB7XG4gIGNvbnN0IHBlcmNlbnRDb21wbGV0ZVBlcmNlbnRhZ2UgPVxuICAgIHBlcmNlbnRDb21wbGV0ZSAhPSBudWxsID8gcGVyY2VudENvbXBsZXRlIDogMDtcbiAgY29uc3QgbGV2ZWxMYWJlbCA9IGxlYXJuaW5nT3V0Y29tZUxhYmVsc1tsZXZlbF07XG5cbiAgY29uc3QgaGFzTG93TGF0ZXN0QXNzZXNzbWVudCA9IEJvb2xlYW4oXG4gICAgbGF0ZXN0U2NvcmUgIT0gbnVsbCAmJiBsYXRlc3RTY29yZSA8IDcwXG4gICk7XG5cbiAgY29uc3Qgc2hvd1NraWxscyA9ICEhc2tpbGxzPy5sZW5ndGg7XG4gIGNvbnN0IHNvcnRlZFNraWxscyA9IHNvcnRTa2lsbHNCeUNsYXNzaWZpY2F0aW9uKHNraWxscyk7XG5cbiAgY29uc3QgcmVuZGVyUHJvZ3Jlc3MgPSAoKSA9PiAoXG4gICAgPEZsZXhCb3ggYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAge0Jvb2xlYW4ocGVyY2VudENvbXBsZXRlUGVyY2VudGFnZSA9PT0gMTAwKSAmJiAoXG4gICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgd2lkdGg9ezE2fVxuICAgICAgICAgIGhlaWdodD17MTZ9XG4gICAgICAgICAgYm9yZGVyUmFkaXVzPVwibWRcIlxuICAgICAgICAgIGJnPVwicHJpbWFyeVwiXG4gICAgICAgICAgbXI9ezh9XG4gICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ9XCJjZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPFNtYWxsQ2hlY2tJY29uIHNpemU9ezExfSBjb2xvcj1cIndoaXRlXCIgLz5cbiAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgKX1cbiAgICAgIDxUZXh0XG4gICAgICAgIGNvbG9yPVwidGV4dFwiXG4gICAgICAgIHZhcmlhbnQ9XCJwLWxhcmdlXCJcbiAgICAgID57YCR7cGVyY2VudENvbXBsZXRlUGVyY2VudGFnZX0lIHByb2dyZXNzYH08L1RleHQ+XG4gICAgPC9GbGV4Qm94PlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEZseW91dFxuICAgICAgYXJpYS1sYWJlbD17YCR7bGV2ZWxMYWJlbH0gZGV0YWlsc2B9XG4gICAgICBjbG9zZUxhYmVsPXtgQ2xvc2UgJHtsZXZlbExhYmVsfSBkZXRhaWxzYH1cbiAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBvcGVuRnJvbT1cInJpZ2h0XCJcbiAgICAgIHRpdGxlPXs8VGV4dCB2YXJpYW50PVwidGl0bGUtc21cIj57YCR7bGV2ZWxMYWJlbH0gZGV0YWlsc2B9PC9UZXh0Pn1cbiAgICA+XG4gICAgICA8RmxleEJveCBnYXA9ezMyfSBtdD17MzJ9IG14PXsyNH0gY29sdW1uPlxuICAgICAgICB7LyogQmFkZ2VzLCBPdXRjb21lLCBUb3BpYyB0YWdzLCBQcm9ncmVzcyAqL31cbiAgICAgICAgPEZsZXhCb3ggZ2FwPXsyNH0gY29sdW1uPlxuICAgICAgICAgIDxGbGV4Qm94IGp1c3RpZnlDb250ZW50PVwic3BhY2UtYmV0d2VlblwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgIDxMZWFybmluZ091dGNvbWVMZXZlbEJhZGdlIGxldmVsPXtsZXZlbH0gc2l6ZT1cImJhc2VcIiAvPlxuICAgICAgICAgICAge2hhc0xvd0xhdGVzdEFzc2Vzc21lbnQgJiYgPExlYXJuaW5nT3V0Y29tZUxvd0Fzc2Vzc21lbnRCYWRnZSAvPn1cbiAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgPEZsZXhCb3ggZ2FwPXsxNn0gY29sdW1uPlxuICAgICAgICAgICAgPFN0eWxlZEFuY2hvclxuICAgICAgICAgICAgICBocmVmPXtsZWFybmluZ091dGNvbWVIcmVmfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBsZWFybmluZ091dGNvbWVPbkNsaWNrPy4oKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge291dGNvbWV9XG4gICAgICAgICAgICA8L1N0eWxlZEFuY2hvcj5cbiAgICAgICAgICAgIHtzaG93U2tpbGxzICYmIChcbiAgICAgICAgICAgICAgPEZsZXhCb3ggYWxpZ25JdGVtcz1cImNlbnRlclwiIGdhcD17MTJ9IGZsZXhXcmFwPVwid3JhcFwiPlxuICAgICAgICAgICAgICAgIHtzb3J0ZWRTa2lsbHMubWFwKChza2lsbCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPFNraWxsVGFnXG4gICAgICAgICAgICAgICAgICAgIGtleT17c2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2tpbGwtdGFnXCJcbiAgICAgICAgICAgICAgICAgICAgcHg9ezh9XG4gICAgICAgICAgICAgICAgICAgIHB5PXs0fVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiaW50ZXJmYWNlXCJcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17Z2V0U2tpbGxzQXJlYVBhdGgoc2tpbGwuc2x1Zyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNraWxsVGFnT25DbGljaz8uKHNraWxsLnNsdWcpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveCBjZW50ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQ+e3NraWxsLnRpdGxlfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC9Ta2lsbFRhZz5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgPEZsZXhCb3ggYm9yZGVyWT17MX0gYm9yZGVyQ29sb3I9XCJiYWNrZ3JvdW5kLWhvdmVyXCIgcHk9ezE2fT5cbiAgICAgICAgICAgIHtyZW5kZXJQcm9ncmVzcygpfVxuICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgPC9GbGV4Qm94PlxuXG4gICAgICAgIHsvKiBBc3Nlc3NtZW50IHNjb3JlcyAqL31cbiAgICAgICAgPEZsZXhCb3ggZ2FwPXsxNn0gY29sdW1uPlxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJ0aXRsZS14c1wiPkV2YWx1YXRpb24gcmVzdWx0czwvVGV4dD5cbiAgICAgICAgICA8TGVhcm5pbmdPdXRjb21lQXNzZXNzbWVudFNjb3Jlc1xuICAgICAgICAgICAgaGlnaGVzdFNjb3JlPXtoaWdoZXN0U2NvcmV9XG4gICAgICAgICAgICBoaWdoZXN0U2NvcmVBY2hpZXZlZEF0PXtoaWdoZXN0U2NvcmVBY2hpZXZlZEF0fVxuICAgICAgICAgICAgbGF0ZXN0U2NvcmU9e2xhdGVzdFNjb3JlfVxuICAgICAgICAgICAgbGF0ZXN0U2NvcmVBY2hpZXZlZEF0PXtsYXRlc3RTY29yZUFjaGlldmVkQXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9GbGV4Qm94PlxuXG4gICAgICAgIHsvKiBGb3IgbGV2ZWwgMiBhbmQgMyBMT3Mgb25seTogQ2hpbGRyZW4gTE9zIGdvZXMgYmVsb3cgaGVyZSAqL31cblxuICAgICAgICB7LyogRm9yIGxldmVsIDIgTE9zIG9ubHk6IFBhcmVudCBMT3MgZ29lcyBiZWxvdyBoZXJlICovfVxuICAgICAgPC9GbGV4Qm94PlxuICAgIDwvRmx5b3V0PlxuICApO1xufTtcbiJdfQ== */");
34
+ export let SkillClassification = /*#__PURE__*/function (SkillClassification) {
35
+ SkillClassification["Language"] = "language";
36
+ SkillClassification["Subject"] = "subject";
37
+ return SkillClassification;
38
+ }({});
39
+ export const sortSkillsByClassification = skills => {
40
+ if (!skills?.length) return [];
41
+ const skillsCopy = skills.slice();
42
+ const sortedSkills = skillsCopy?.sort((a, b) => {
43
+ if (a?.classification === 'language') {
44
+ return -1;
45
+ }
46
+ if (b?.classification === 'subject') {
47
+ return 1;
48
+ }
49
+ return 0;
50
+ });
51
+ return sortedSkills;
52
+ };
53
+ const getSkillsAreaPath = skillSlug => {
54
+ return skillSlug ? `/skill-areas/${skillSlug}` : '/';
55
+ };
56
+ export const LearningOutcomeFlyout = ({
57
+ expanded,
58
+ learningOutcomeHref,
59
+ learningOutcomeOnClick,
60
+ learningOutcome: {
61
+ highestScore,
62
+ highestScoreAchievedAt,
63
+ latestScore,
64
+ latestScoreAchievedAt,
65
+ level,
66
+ outcome,
67
+ percentComplete,
68
+ skills
69
+ },
70
+ skillTagOnClick,
71
+ onClose
72
+ }) => {
73
+ const percentCompletePercentage = percentComplete != null ? percentComplete : 0;
74
+ const levelLabel = learningOutcomeLabels[level];
75
+ const hasLowLatestAssessment = Boolean(latestScore != null && latestScore < 70);
76
+ const showSkills = !!skills?.length;
77
+ const sortedSkills = sortSkillsByClassification(skills);
78
+ const renderProgress = () => /*#__PURE__*/_jsxs(FlexBox, {
79
+ alignItems: "center",
80
+ children: [Boolean(percentCompletePercentage === 100) && /*#__PURE__*/_jsx(FlexBox, {
81
+ width: 16,
82
+ height: 16,
83
+ borderRadius: "md",
84
+ bg: "primary",
85
+ mr: 8,
86
+ alignItems: "center",
87
+ justifyContent: "center",
88
+ children: /*#__PURE__*/_jsx(SmallCheckIcon, {
89
+ size: 11,
90
+ color: "white"
91
+ })
92
+ }), /*#__PURE__*/_jsx(Text, {
93
+ color: "text",
94
+ variant: "p-large",
95
+ children: `${percentCompletePercentage}% progress`
96
+ })]
97
+ });
98
+ return /*#__PURE__*/_jsx(Flyout, {
99
+ "aria-label": `${levelLabel} details`,
100
+ closeLabel: `Close ${levelLabel} details`,
101
+ expanded: expanded,
102
+ onClose: onClose,
103
+ openFrom: "right",
104
+ title: /*#__PURE__*/_jsx(Text, {
105
+ variant: "title-sm",
106
+ children: `${levelLabel} details`
107
+ }),
108
+ children: /*#__PURE__*/_jsxs(FlexBox, {
109
+ gap: 32,
110
+ mt: 32,
111
+ mx: 24,
112
+ column: true,
113
+ children: [/*#__PURE__*/_jsxs(FlexBox, {
114
+ gap: 24,
115
+ column: true,
116
+ children: [/*#__PURE__*/_jsxs(FlexBox, {
117
+ justifyContent: "space-between",
118
+ alignItems: "center",
119
+ children: [/*#__PURE__*/_jsx(LearningOutcomeLevelBadge, {
120
+ level: level,
121
+ size: "base"
122
+ }), hasLowLatestAssessment && /*#__PURE__*/_jsx(LearningOutcomeLowAssessmentBadge, {})]
123
+ }), /*#__PURE__*/_jsxs(FlexBox, {
124
+ gap: 16,
125
+ column: true,
126
+ children: [/*#__PURE__*/_jsx(StyledAnchor, {
127
+ href: learningOutcomeHref,
128
+ onClick: () => learningOutcomeOnClick?.(),
129
+ children: outcome
130
+ }), showSkills && /*#__PURE__*/_jsx(FlexBox, {
131
+ alignItems: "center",
132
+ gap: 12,
133
+ flexWrap: "wrap",
134
+ children: sortedSkills.map(skill => /*#__PURE__*/_jsx(SkillTag, {
135
+ "data-testid": "skill-tag",
136
+ px: 8,
137
+ py: 4,
138
+ variant: "interface",
139
+ href: getSkillsAreaPath(skill.slug),
140
+ onClick: () => skillTagOnClick?.(skill.slug),
141
+ children: /*#__PURE__*/_jsx(FlexBox, {
142
+ center: true,
143
+ children: /*#__PURE__*/_jsx(Text, {
144
+ children: skill.title
145
+ })
146
+ })
147
+ }, skill.id))
148
+ })]
149
+ }), /*#__PURE__*/_jsx(FlexBox, {
150
+ borderY: 1,
151
+ borderColor: "background-hover",
152
+ py: 16,
153
+ children: renderProgress()
154
+ })]
155
+ }), /*#__PURE__*/_jsxs(FlexBox, {
156
+ gap: 16,
157
+ column: true,
158
+ children: [/*#__PURE__*/_jsx(Text, {
159
+ variant: "title-xs",
160
+ children: "Evaluation results"
161
+ }), /*#__PURE__*/_jsx(LearningOutcomeAssessmentScores, {
162
+ highestScore: highestScore,
163
+ highestScoreAchievedAt: highestScoreAchievedAt,
164
+ latestScore: latestScore,
165
+ latestScoreAchievedAt: latestScoreAchievedAt
166
+ })]
167
+ })]
168
+ })
169
+ });
170
+ };
@@ -29,7 +29,7 @@ const ProgressText = /*#__PURE__*/_styled(Text, {
29
29
  [Progress.completed]: {}
30
30
  }
31
31
  })(props)
32
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MZWFybmluZ091dGNvbWVUaWxlL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQnFCIiwiZmlsZSI6Ii4uLy4uL3NyYy9MZWFybmluZ091dGNvbWVUaWxlL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuY2hvciwgVGV4dCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IFNtYWxsQ2hlY2tJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgdmFyaWFudCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7XG4gIGxlYXJuaW5nT3V0Y29tZUxhYmVscyxcbiAgTGVhcm5pbmdPdXRjb21lTG93QXNzZXNzbWVudERvdCxcbn0gZnJvbSAnLi4vTGVhcm5pbmdPdXRjb21lQmFkZ2VzJztcbmltcG9ydCB7IExlYXJuaW5nT3V0Y29tZVBvcG92ZXIgfSBmcm9tICcuLi9MZWFybmluZ091dGNvbWVQb3BvdmVyJztcbmltcG9ydCB7IFRpbGUgfSBmcm9tICcuL1RpbGUnO1xuaW1wb3J0IHtcbiAgTGVhcm5pbmdPdXRjb21lUG9wb3ZlckRldGFpbHNQcm9wcyxcbiAgTGVhcm5pbmdPdXRjb21lVGlsZVByb3BzLFxuICBQcm9ncmVzcyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IFByb2dyZXNzVGV4dCA9IHN0eWxlZChUZXh0KTx7IHByb2dyZXNzOiBQcm9ncmVzczsgaXNTbWFsbDogYm9vbGVhbiB9PihcbiAgKHByb3BzKSA9PiAoe1xuICAgIC4uLnZhcmlhbnQoe1xuICAgICAgcHJvcDogJ3Byb2dyZXNzJyxcbiAgICAgIGJhc2U6IHtcbiAgICAgICAgZm9udFNpemU6IDE0LFxuICAgICAgfSxcbiAgICAgIHZhcmlhbnRzOiB7XG4gICAgICAgIFtQcm9ncmVzcy5ub3RTdGFydGVkXToge1xuICAgICAgICAgIGNvbG9yOiAndGV4dC1zZWNvbmRhcnknLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgfSxcbiAgICAgICAgW1Byb2dyZXNzLmluUHJvZ3Jlc3NdOiB7XG4gICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICBmb250V2VpZ2h0OiBwcm9wcy5pc1NtYWxsID8gNDAwIDogNzAwLFxuICAgICAgICB9LFxuICAgICAgICBbUHJvZ3Jlc3MuY29tcGxldGVkXToge30sXG4gICAgICB9LFxuICAgIH0pKHByb3BzKSxcbiAgfSlcbik7XG5cbmNvbnN0IHByb2dyZXNzU3RhdGUgPSAocGVyY2VudENvbXBsZXRlOiBudW1iZXIpOiBQcm9ncmVzcyA9PiB7XG4gIGlmIChwZXJjZW50Q29tcGxldGUgPT09IDApIHtcbiAgICByZXR1cm4gUHJvZ3Jlc3Mubm90U3RhcnRlZDtcbiAgfVxuICBpZiAocGVyY2VudENvbXBsZXRlID4gMCAmJiBwZXJjZW50Q29tcGxldGUgPCAxMDApIHtcbiAgICByZXR1cm4gUHJvZ3Jlc3MuaW5Qcm9ncmVzcztcbiAgfVxuICByZXR1cm4gUHJvZ3Jlc3MuY29tcGxldGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IExlYXJuaW5nT3V0Y29tZVRpbGU6IFJlYWN0LkZDPExlYXJuaW5nT3V0Y29tZVRpbGVQcm9wcz4gPSAoe1xuICBocmVmLFxuICBsZWFybmluZ091dGNvbWVEZXRhaWxzLFxuICBvbkNsaWNrLFxuICBob3ZlciA9IGZhbHNlLFxuICBwb3BvdmVyID0gZmFsc2UsXG4gIHNpemUgPSAnbm9ybWFsJyxcbn0pID0+IHtcbiAgY29uc3QgeyBpZCwgbGV2ZWwsIG91dGNvbWUsIGxhdGVzdFNjb3JlLCBwZXJjZW50Q29tcGxldGUgfSA9XG4gICAgbGVhcm5pbmdPdXRjb21lRGV0YWlscztcblxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBhY3RpdmVFbFJlZiA9IHVzZVJlZjxIVE1MQW5jaG9yRWxlbWVudD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAvLyBJZiB0aGUgcG9wb3ZlciBpcyBvcGVuLCB3ZSB3YW50IHRvIGZvY3VzIHRoZSBhY3RpdmUgZWxlbWVudFxuICAgICAgYWN0aXZlRWxSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtpc09wZW5dKTtcblxuICBjb25zdCBwb3BvdmVyUHJvcHMgPVxuICAgIHBvcG92ZXIgJiYgaG92ZXJcbiAgICAgID8ge1xuICAgICAgICAgIHJlZjogYWN0aXZlRWxSZWYsXG4gICAgICAgICAgb25Nb3VzZUVudGVyOiAoKSA9PiBzZXRJc09wZW4odHJ1ZSksXG4gICAgICAgICAgb25Nb3VzZUxlYXZlOiAoKSA9PiBzZXRJc09wZW4oZmFsc2UpLFxuICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHNldElzT3Blbih0cnVlKSwgLy8gRm9yIGtleWJvYXJkIHVzZXJzXG4gICAgICAgICAgb25CbHVyOiAoKSA9PiBzZXRJc09wZW4oZmFsc2UpLCAvLyBDbG9zZSBvbiBibHVyXG4gICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBgJHtpZH0tcG9wb3ZlcmAsXG4gICAgICAgIH1cbiAgICAgIDoge307XG5cbiAgY29uc3QgaGlnaGVzdFNjb3JlID0gcG9wb3ZlclxuICAgID8gKGxlYXJuaW5nT3V0Y29tZURldGFpbHMgYXMgTGVhcm5pbmdPdXRjb21lUG9wb3ZlckRldGFpbHNQcm9wcylcbiAgICAgICAgPy5oaWdoZXN0U2NvcmVcbiAgICA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBwZXJjZW50Q29tcGxldGVWYWx1ZSA9IHBlcmNlbnRDb21wbGV0ZSA/PyAwO1xuICBjb25zdCBwcm9ncmVzcyA9IHByb2dyZXNzU3RhdGUocGVyY2VudENvbXBsZXRlVmFsdWUpO1xuXG4gIGNvbnN0IGlzQ29tcGxldGVkID0gcHJvZ3Jlc3MgPT09IFByb2dyZXNzLmNvbXBsZXRlZDtcbiAgY29uc3QgaXNTbWFsbCA9IHNpemUgPT09ICdzbWFsbCc7XG4gIGNvbnN0IGhhc0xvd0xhdGVzdEFzc2Vzc21lbnQgPSBCb29sZWFuKFxuICAgIGxhdGVzdFNjb3JlICE9IG51bGwgJiYgbGF0ZXN0U2NvcmUgPCA3MFxuICApO1xuICBjb25zdCBzaG93TG93QXNzZXNzbWVudERvdCA9IGhhc0xvd0xhdGVzdEFzc2Vzc21lbnQgJiYgIWlzU21hbGw7XG5cbiAgY29uc3QgbG93QXNzZXNzbWVudExhYmVsID0gaGFzTG93TGF0ZXN0QXNzZXNzbWVudFxuICAgID8gJ01vc3QgcmVjZW50IGFzc2Vzc21lbnQgc2NvcmUgaXMgYmVsb3cgNzAlLCBuZWVkcyByZXZpZXcuICdcbiAgICA6ICcnO1xuICBjb25zdCBkZWZhdWx0QXJpYUxhYmVsID0gYCR7bGVhcm5pbmdPdXRjb21lTGFiZWxzW2xldmVsXX06ICR7b3V0Y29tZX0gJHtsb3dBc3Nlc3NtZW50TGFiZWx9UHJvZ3Jlc3MgJHtwZXJjZW50Q29tcGxldGVWYWx1ZX0lIGNvbXBsZXRlZC5gO1xuICBjb25zdCBldmFsdWF0aW9uVmFsdWVzTGFiZWwgPVxuICAgIGlzT3BlbiAmJiAoaGlnaGVzdFNjb3JlIHx8IGxhdGVzdFNjb3JlKVxuICAgICAgPyBgRXZhbHVhdGlvbiBWYWx1ZXMgLSAke1xuICAgICAgICAgIGhpZ2hlc3RTY29yZSA/IGBIaWdoZXN0IGFzc2Vzc21lbnQgc2NvcmUgJHtoaWdoZXN0U2NvcmV9LiBgIDogJydcbiAgICAgICAgfSR7bGF0ZXN0U2NvcmUgPyBgUmVjZW50IGFzc2Vzc21lbnQgc2NvcmUgJHtsYXRlc3RTY29yZX0uYCA6ICcnfWBcbiAgICAgIDogJyc7XG5cbiAgcmV0dXJuIChcbiAgICA8QW5jaG9yXG4gICAgICBhcmlhLWxhYmVsPXtgJHtkZWZhdWx0QXJpYUxhYmVsfSAke2V2YWx1YXRpb25WYWx1ZXNMYWJlbH1gfVxuICAgICAgdmFyaWFudD1cImludGVyZmFjZVwiXG4gICAgICBocmVmPXtocmVmfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIHsuLi5wb3BvdmVyUHJvcHN9XG4gICAgPlxuICAgICAgPFRpbGUgaG92ZXI9e2hvdmVyfSBwcm9ncmVzcz17cHJvZ3Jlc3N9IHNpemU9e3NpemV9PlxuICAgICAgICB7aXNDb21wbGV0ZWQgPyAoXG4gICAgICAgICAgPFNtYWxsQ2hlY2tJY29uXG4gICAgICAgICAgICBzaXplPXtpc1NtYWxsID8gMTIgOiAxNn1cbiAgICAgICAgICAgIHRleHRDb2xvcj1cImJhY2tncm91bmQtY29udHJhc3RcIlxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2dyZXNzVGV4dCBwcm9ncmVzcz17cHJvZ3Jlc3N9IGlzU21hbGw9e2lzU21hbGx9PlxuICAgICAgICAgICAge2Ake3BlcmNlbnRDb21wbGV0ZVZhbHVlfSVgfVxuICAgICAgICAgIDwvUHJvZ3Jlc3NUZXh0PlxuICAgICAgICApfVxuICAgICAgICB7c2hvd0xvd0Fzc2Vzc21lbnREb3QgJiYgKFxuICAgICAgICAgIDxMZWFybmluZ091dGNvbWVMb3dBc3Nlc3NtZW50RG90XG4gICAgICAgICAgICBwb3NpdGlvbj1cImFic29sdXRlXCJcbiAgICAgICAgICAgIHRvcD1cIi0yMCVcIlxuICAgICAgICAgICAgcmlnaHQ9XCItMjAlXCJcbiAgICAgICAgICAgIGhhc0JvcmRlclxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1RpbGU+XG4gICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgPExlYXJuaW5nT3V0Y29tZVBvcG92ZXJcbiAgICAgICAgICBhY3RpdmVFbFJlZj17YWN0aXZlRWxSZWZ9XG4gICAgICAgICAgaG9yaXpvbnRhbE9mZnNldD17aXNTbWFsbCAmJiBpc0NvbXBsZXRlZCA/IDE1OSA6IGlzU21hbGwgPyAxNTMgOiAxNTB9XG4gICAgICAgICAgaWQ9e2Ake2lkfS1wb3BvdmVyYH1cbiAgICAgICAgICBpc09wZW49e2lzT3Blbn1cbiAgICAgICAgICBsZWFybmluZ091dGNvbWVEZXRhaWxzPXtcbiAgICAgICAgICAgIGxlYXJuaW5nT3V0Y29tZURldGFpbHMgYXMgTGVhcm5pbmdPdXRjb21lUG9wb3ZlckRldGFpbHNQcm9wc1xuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9BbmNob3I+XG4gICk7XG59O1xuIl19 */");
32
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MZWFybmluZ091dGNvbWVUaWxlL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQnFCIiwiZmlsZSI6Ii4uLy4uL3NyYy9MZWFybmluZ091dGNvbWVUaWxlL2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuY2hvciwgVGV4dCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IFNtYWxsQ2hlY2tJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgdmFyaWFudCB9IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0LXN0eWxlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7XG4gIGxlYXJuaW5nT3V0Y29tZUxhYmVscyxcbiAgTGVhcm5pbmdPdXRjb21lTG93QXNzZXNzbWVudERvdCxcbn0gZnJvbSAnLi4vTGVhcm5pbmdPdXRjb21lQmFkZ2VzJztcbmltcG9ydCB7IExlYXJuaW5nT3V0Y29tZVBvcG92ZXIgfSBmcm9tICcuLi9MZWFybmluZ091dGNvbWVQb3BvdmVyJztcbmltcG9ydCB7IFRpbGUgfSBmcm9tICcuL1RpbGUnO1xuaW1wb3J0IHtcbiAgTGVhcm5pbmdPdXRjb21lUG9wb3ZlckRldGFpbHNQcm9wcyxcbiAgTGVhcm5pbmdPdXRjb21lVGlsZVByb3BzLFxuICBQcm9ncmVzcyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IFByb2dyZXNzVGV4dCA9IHN0eWxlZChUZXh0KTx7IHByb2dyZXNzOiBQcm9ncmVzczsgaXNTbWFsbDogYm9vbGVhbiB9PihcbiAgKHByb3BzKSA9PiAoe1xuICAgIC4uLnZhcmlhbnQoe1xuICAgICAgcHJvcDogJ3Byb2dyZXNzJyxcbiAgICAgIGJhc2U6IHtcbiAgICAgICAgZm9udFNpemU6IDE0LFxuICAgICAgfSxcbiAgICAgIHZhcmlhbnRzOiB7XG4gICAgICAgIFtQcm9ncmVzcy5ub3RTdGFydGVkXToge1xuICAgICAgICAgIGNvbG9yOiAndGV4dC1zZWNvbmRhcnknLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgfSxcbiAgICAgICAgW1Byb2dyZXNzLmluUHJvZ3Jlc3NdOiB7XG4gICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICBmb250V2VpZ2h0OiBwcm9wcy5pc1NtYWxsID8gNDAwIDogNzAwLFxuICAgICAgICB9LFxuICAgICAgICBbUHJvZ3Jlc3MuY29tcGxldGVkXToge30sXG4gICAgICB9LFxuICAgIH0pKHByb3BzKSxcbiAgfSlcbik7XG5cbmNvbnN0IHByb2dyZXNzU3RhdGUgPSAocGVyY2VudENvbXBsZXRlOiBudW1iZXIpOiBQcm9ncmVzcyA9PiB7XG4gIGlmIChwZXJjZW50Q29tcGxldGUgPT09IDApIHtcbiAgICByZXR1cm4gUHJvZ3Jlc3Mubm90U3RhcnRlZDtcbiAgfVxuICBpZiAocGVyY2VudENvbXBsZXRlID4gMCAmJiBwZXJjZW50Q29tcGxldGUgPCAxMDApIHtcbiAgICByZXR1cm4gUHJvZ3Jlc3MuaW5Qcm9ncmVzcztcbiAgfVxuICByZXR1cm4gUHJvZ3Jlc3MuY29tcGxldGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IExlYXJuaW5nT3V0Y29tZVRpbGU6IFJlYWN0LkZDPExlYXJuaW5nT3V0Y29tZVRpbGVQcm9wcz4gPSAoe1xuICBsZWFybmluZ091dGNvbWVEZXRhaWxzLFxuICBvbkNsaWNrLFxuICBob3ZlciA9IGZhbHNlLFxuICBwb3BvdmVyID0gZmFsc2UsXG4gIHNpemUgPSAnbm9ybWFsJyxcbn0pID0+IHtcbiAgY29uc3QgeyBpZCwgbGV2ZWwsIG91dGNvbWUsIGxhdGVzdFNjb3JlLCBwZXJjZW50Q29tcGxldGUgfSA9XG4gICAgbGVhcm5pbmdPdXRjb21lRGV0YWlscztcblxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBhY3RpdmVFbFJlZiA9IHVzZVJlZjxIVE1MQW5jaG9yRWxlbWVudD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAvLyBJZiB0aGUgcG9wb3ZlciBpcyBvcGVuLCB3ZSB3YW50IHRvIGZvY3VzIHRoZSBhY3RpdmUgZWxlbWVudFxuICAgICAgYWN0aXZlRWxSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtpc09wZW5dKTtcblxuICBjb25zdCBwb3BvdmVyUHJvcHMgPVxuICAgIHBvcG92ZXIgJiYgaG92ZXJcbiAgICAgID8ge1xuICAgICAgICAgIHJlZjogYWN0aXZlRWxSZWYsXG4gICAgICAgICAgb25Nb3VzZUVudGVyOiAoKSA9PiBzZXRJc09wZW4odHJ1ZSksXG4gICAgICAgICAgb25Nb3VzZUxlYXZlOiAoKSA9PiBzZXRJc09wZW4oZmFsc2UpLFxuICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHNldElzT3Blbih0cnVlKSwgLy8gRm9yIGtleWJvYXJkIHVzZXJzXG4gICAgICAgICAgb25CbHVyOiAoKSA9PiBzZXRJc09wZW4oZmFsc2UpLCAvLyBDbG9zZSBvbiBibHVyXG4gICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBgJHtpZH0tcG9wb3ZlcmAsXG4gICAgICAgIH1cbiAgICAgIDoge307XG5cbiAgY29uc3QgaGlnaGVzdFNjb3JlID0gcG9wb3ZlclxuICAgID8gKGxlYXJuaW5nT3V0Y29tZURldGFpbHMgYXMgTGVhcm5pbmdPdXRjb21lUG9wb3ZlckRldGFpbHNQcm9wcylcbiAgICAgICAgPy5oaWdoZXN0U2NvcmVcbiAgICA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBwZXJjZW50Q29tcGxldGVWYWx1ZSA9IHBlcmNlbnRDb21wbGV0ZSA/PyAwO1xuICBjb25zdCBwcm9ncmVzcyA9IHByb2dyZXNzU3RhdGUocGVyY2VudENvbXBsZXRlVmFsdWUpO1xuXG4gIGNvbnN0IGlzQ29tcGxldGVkID0gcHJvZ3Jlc3MgPT09IFByb2dyZXNzLmNvbXBsZXRlZDtcbiAgY29uc3QgaXNTbWFsbCA9IHNpemUgPT09ICdzbWFsbCc7XG4gIGNvbnN0IGhhc0xvd0xhdGVzdEFzc2Vzc21lbnQgPSBCb29sZWFuKFxuICAgIGxhdGVzdFNjb3JlICE9IG51bGwgJiYgbGF0ZXN0U2NvcmUgPCA3MFxuICApO1xuICBjb25zdCBzaG93TG93QXNzZXNzbWVudERvdCA9IGhhc0xvd0xhdGVzdEFzc2Vzc21lbnQgJiYgIWlzU21hbGw7XG5cbiAgY29uc3QgbG93QXNzZXNzbWVudExhYmVsID0gaGFzTG93TGF0ZXN0QXNzZXNzbWVudFxuICAgID8gJ01vc3QgcmVjZW50IGFzc2Vzc21lbnQgc2NvcmUgaXMgYmVsb3cgNzAlLCBuZWVkcyByZXZpZXcuICdcbiAgICA6ICcnO1xuICBjb25zdCBkZWZhdWx0QXJpYUxhYmVsID0gYCR7bGVhcm5pbmdPdXRjb21lTGFiZWxzW2xldmVsXX06ICR7b3V0Y29tZX0gJHtsb3dBc3Nlc3NtZW50TGFiZWx9UHJvZ3Jlc3MgJHtwZXJjZW50Q29tcGxldGVWYWx1ZX0lIGNvbXBsZXRlZC5gO1xuICBjb25zdCBldmFsdWF0aW9uVmFsdWVzTGFiZWwgPVxuICAgIGlzT3BlbiAmJiAoaGlnaGVzdFNjb3JlIHx8IGxhdGVzdFNjb3JlKVxuICAgICAgPyBgRXZhbHVhdGlvbiBWYWx1ZXMgLSAke1xuICAgICAgICAgIGhpZ2hlc3RTY29yZSA/IGBIaWdoZXN0IGFzc2Vzc21lbnQgc2NvcmUgJHtoaWdoZXN0U2NvcmV9LiBgIDogJydcbiAgICAgICAgfSR7bGF0ZXN0U2NvcmUgPyBgUmVjZW50IGFzc2Vzc21lbnQgc2NvcmUgJHtsYXRlc3RTY29yZX0uYCA6ICcnfWBcbiAgICAgIDogJyc7XG5cbiAgcmV0dXJuIChcbiAgICA8QW5jaG9yXG4gICAgICBhcmlhLWxhYmVsPXtgJHtkZWZhdWx0QXJpYUxhYmVsfSAke2V2YWx1YXRpb25WYWx1ZXNMYWJlbH1gfVxuICAgICAgdmFyaWFudD1cImludGVyZmFjZVwiXG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgey4uLnBvcG92ZXJQcm9wc31cbiAgICA+XG4gICAgICA8VGlsZSBob3Zlcj17aG92ZXJ9IHByb2dyZXNzPXtwcm9ncmVzc30gc2l6ZT17c2l6ZX0+XG4gICAgICAgIHtpc0NvbXBsZXRlZCA/IChcbiAgICAgICAgICA8U21hbGxDaGVja0ljb25cbiAgICAgICAgICAgIHNpemU9e2lzU21hbGwgPyAxMiA6IDE2fVxuICAgICAgICAgICAgdGV4dENvbG9yPVwiYmFja2dyb3VuZC1jb250cmFzdFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UHJvZ3Jlc3NUZXh0IHByb2dyZXNzPXtwcm9ncmVzc30gaXNTbWFsbD17aXNTbWFsbH0+XG4gICAgICAgICAgICB7YCR7cGVyY2VudENvbXBsZXRlVmFsdWV9JWB9XG4gICAgICAgICAgPC9Qcm9ncmVzc1RleHQ+XG4gICAgICAgICl9XG4gICAgICAgIHtzaG93TG93QXNzZXNzbWVudERvdCAmJiAoXG4gICAgICAgICAgPExlYXJuaW5nT3V0Y29tZUxvd0Fzc2Vzc21lbnREb3RcbiAgICAgICAgICAgIHBvc2l0aW9uPVwiYWJzb2x1dGVcIlxuICAgICAgICAgICAgdG9wPVwiLTIwJVwiXG4gICAgICAgICAgICByaWdodD1cIi0yMCVcIlxuICAgICAgICAgICAgaGFzQm9yZGVyXG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVGlsZT5cbiAgICAgIHtpc09wZW4gJiYgKFxuICAgICAgICA8TGVhcm5pbmdPdXRjb21lUG9wb3ZlclxuICAgICAgICAgIGFjdGl2ZUVsUmVmPXthY3RpdmVFbFJlZn1cbiAgICAgICAgICBob3Jpem9udGFsT2Zmc2V0PXtpc1NtYWxsICYmIGlzQ29tcGxldGVkID8gMTU5IDogaXNTbWFsbCA/IDE1MyA6IDE1MH1cbiAgICAgICAgICBpZD17YCR7aWR9LXBvcG92ZXJgfVxuICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgIGxlYXJuaW5nT3V0Y29tZURldGFpbHM9e1xuICAgICAgICAgICAgbGVhcm5pbmdPdXRjb21lRGV0YWlscyBhcyBMZWFybmluZ091dGNvbWVQb3BvdmVyRGV0YWlsc1Byb3BzXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0FuY2hvcj5cbiAgKTtcbn07XG4iXX0= */");
33
33
  const progressState = percentComplete => {
34
34
  if (percentComplete === 0) {
35
35
  return Progress.notStarted;
@@ -40,7 +40,6 @@ const progressState = percentComplete => {
40
40
  return Progress.completed;
41
41
  };
42
42
  export const LearningOutcomeTile = ({
43
- href,
44
43
  learningOutcomeDetails,
45
44
  onClick,
46
45
  hover = false,
@@ -85,7 +84,6 @@ export const LearningOutcomeTile = ({
85
84
  return /*#__PURE__*/_jsxs(Anchor, {
86
85
  "aria-label": `${defaultAriaLabel} ${evaluationValuesLabel}`,
87
86
  variant: "interface",
88
- href: href,
89
87
  onClick: onClick,
90
88
  ...popoverProps,
91
89
  children: [/*#__PURE__*/_jsxs(Tile, {
@@ -41,7 +41,6 @@ interface WithoutHoverAndWithoutPopover {
41
41
  popover?: false;
42
42
  }
43
43
  export type LearningOutcomeTileProps = {
44
- href: string;
45
44
  onClick?: () => void;
46
45
  size?: SizeType;
47
46
  } & (WithHoverAndWithPopover | WithHoverAndWithoutPopover | WithoutHoverAndWithoutPopover);
@@ -13,8 +13,5 @@ export interface SkillPathCardProps {
13
13
  timeToComplete?: number | null;
14
14
  header?: React.ReactNode;
15
15
  footer?: React.ReactNode;
16
- openInNewTab?: boolean;
17
- href: string;
18
- onClick: () => void;
19
16
  }
20
- export declare const SkillPathCard: import("react").ForwardRefExoticComponent<SkillPathCardProps & import("react").RefAttributes<HTMLAnchorElement>>;
17
+ export declare const SkillPathCard: React.FC<SkillPathCardProps>;
@@ -1,9 +1,8 @@
1
- import { forwardRef } from 'react';
2
1
  import { ContentGroupBaseCard } from '../ContentGroupBaseCard';
3
2
  import { getPathImageUrl } from '../ContentGroupBaseCard/helpers';
4
- import { CertificateComponent, CourseCountComponent } from '../ContentGroupBaseCard/shared';
3
+ import { CertificateComponent, CourseCountComponent, Divider } from '../ContentGroupBaseCard/shared';
5
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- export const SkillPathCard = /*#__PURE__*/forwardRef(({
5
+ export const SkillPathCard = ({
7
6
  title,
8
7
  shortDescription,
9
8
  difficulty,
@@ -15,11 +14,8 @@ export const SkillPathCard = /*#__PURE__*/forwardRef(({
15
14
  isFullSize = false,
16
15
  timeToComplete,
17
16
  header,
18
- footer,
19
- openInNewTab = false,
20
- href,
21
- onClick
22
- }, ref) => {
17
+ footer
18
+ }) => {
23
19
  return /*#__PURE__*/_jsxs(ContentGroupBaseCard, {
24
20
  headerBackgroundColor: "blue-100",
25
21
  headerText: "Skill path",
@@ -35,12 +31,8 @@ export const SkillPathCard = /*#__PURE__*/forwardRef(({
35
31
  timeToComplete: timeToComplete,
36
32
  header: header,
37
33
  footer: footer,
38
- openInNewTab: openInNewTab,
39
- href: href,
40
- onClick: onClick,
41
- ref: ref,
42
- children: [/*#__PURE__*/_jsx(CourseCountComponent, {
34
+ children: [/*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx(CourseCountComponent, {
43
35
  count: courseCount
44
- }), /*#__PURE__*/_jsx(CertificateComponent, {})]
36
+ }), /*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx(CertificateComponent, {})]
45
37
  });
46
- });
38
+ };
package/dist/index.d.ts CHANGED
@@ -46,8 +46,10 @@ export * from './InfoCard';
46
46
  export * from './Konamimojisplosion';
47
47
  export * from './LandingPage';
48
48
  export * from './LayoutMenu';
49
+ export * from './LearningOutcomeAssessmentScores';
49
50
  export * from './LearningOutcomeBadges';
50
51
  export * from './LearningOutcomeCard';
52
+ export * from './LearningOutcomeFlyout';
51
53
  export * from './LearningOutcomeTile';
52
54
  export * from './lib/breakpointHooks';
53
55
  export * from './ListSection';
@@ -71,7 +73,6 @@ export * from './PricingSection';
71
73
  export * from './ProductFeatureShowcase';
72
74
  export * from './ProLogoAlt';
73
75
  export * from './RatingsBar';
74
- export * from './Recurly';
75
76
  export * from './ResourceCard';
76
77
  export * from './ScoreSummary';
77
78
  export * from './ScoreSummary/SubScores';
package/dist/index.js CHANGED
@@ -46,8 +46,10 @@ export * from './InfoCard';
46
46
  export * from './Konamimojisplosion';
47
47
  export * from './LandingPage';
48
48
  export * from './LayoutMenu';
49
+ export * from './LearningOutcomeAssessmentScores';
49
50
  export * from './LearningOutcomeBadges';
50
51
  export * from './LearningOutcomeCard';
52
+ export * from './LearningOutcomeFlyout';
51
53
  export * from './LearningOutcomeTile';
52
54
  export * from './lib/breakpointHooks';
53
55
  export * from './ListSection';
@@ -71,7 +73,6 @@ export * from './PricingSection';
71
73
  export * from './ProductFeatureShowcase';
72
74
  export * from './ProLogoAlt';
73
75
  export * from './RatingsBar';
74
- export * from './Recurly';
75
76
  export * from './ResourceCard';
76
77
  export * from './ScoreSummary';
77
78
  export * from './ScoreSummary/SubScores';
@@ -8,9 +8,7 @@ const meta = {
8
8
  headerBackgroundColor: 'pink',
9
9
  headerText: 'Course',
10
10
  title: 'Python 101',
11
- numLessons: 20,
12
- href: '/learn/python-101',
13
- onClick: () => {}
11
+ numLessons: 20
14
12
  }
15
13
  };
16
14
  export default meta;
@@ -9,9 +9,7 @@ const meta = {
9
9
  difficulty: CourseDifficulty.Beginner,
10
10
  title: 'Python 101',
11
11
  imageUrl: 'https://static-assets.codecademy.com/components/curriculum/path/front-end-engineer-career-path/curriculum-card.svg',
12
- timeToComplete: 15,
13
- href: '/learn/paths/python-101',
14
- onClick: () => {}
12
+ timeToComplete: 15
15
13
  }
16
14
  };
17
15
  export default meta;
@@ -7,9 +7,7 @@ const meta = {
7
7
  title: 'CLF-C02: AWS Certified Cloud Practitioner',
8
8
  courseCount: 16,
9
9
  shortDescription: 'Master AWS Cloud fundamentals, security, and migration strategies to prepare for the AWS Certified Cloud Practitioner exam (CLF-C02) and enhance your cloud skills.',
10
- difficulty: CourseDifficulty.Beginner,
11
- href: '/learn/ext-paths/certification-prep-clf-c02',
12
- onClick: () => {}
10
+ difficulty: CourseDifficulty.Beginner
13
11
  }
14
12
  };
15
13
  export default meta;
@@ -9,9 +9,7 @@ const meta = {
9
9
  pro: false,
10
10
  shortDescription: 'Learn how to use JavaScript — a powerful and flexible programming language for adding website interactivity.',
11
11
  difficulty: CourseDifficulty.Beginner,
12
- timeToComplete: 3,
13
- href: '/learn/javascript',
14
- onClick: () => {}
12
+ timeToComplete: 3
15
13
  }
16
14
  };
17
15
  export default meta;
@@ -9,9 +9,7 @@ const meta = {
9
9
  shortDescription: 'Web applications are constantly under threat. Authentication and authorization, protected data, and secure code will protect your web app.',
10
10
  difficulty: CourseDifficulty.Intermediate,
11
11
  imageUrl: 'https://static-assets.codecademy.com/components/curriculum/path/securing-express-applications/curriculum-card.svg',
12
- timeToComplete: 10,
13
- href: '/learn/paths/securing-express-applications',
14
- onClick: () => {}
12
+ timeToComplete: 10
15
13
  }
16
14
  };
17
15
  export default meta;
@@ -0,0 +1,6 @@
1
+ import type { Meta } from '@storybook/react';
2
+ import { LearningOutcomeAssessmentScores } from '../../LearningOutcomeAssessmentScores';
3
+ declare const meta: Meta<typeof LearningOutcomeAssessmentScores>;
4
+ export default meta;
5
+ export declare const Example: () => import("react/jsx-runtime").JSX.Element;
6
+ export declare const NoScores: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,23 @@
1
+ import { LearningOutcomeAssessmentScores } from '../../LearningOutcomeAssessmentScores';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ const meta = {
4
+ component: LearningOutcomeAssessmentScores,
5
+ args: {}
6
+ };
7
+ export default meta;
8
+ export const Example = () => {
9
+ return /*#__PURE__*/_jsx(LearningOutcomeAssessmentScores, {
10
+ highestScore: 100,
11
+ highestScoreAchievedAt: "10/01",
12
+ latestScore: 50,
13
+ latestScoreAchievedAt: "10/23"
14
+ });
15
+ };
16
+ export const NoScores = () => {
17
+ return /*#__PURE__*/_jsx(LearningOutcomeAssessmentScores, {
18
+ highestScore: null,
19
+ highestScoreAchievedAt: null,
20
+ latestScore: null,
21
+ latestScoreAchievedAt: null
22
+ });
23
+ };
@@ -0,0 +1,5 @@
1
+ import type { Meta } from '@storybook/react';
2
+ import { LearningOutcomeFlyout } from '../../LearningOutcomeFlyout';
3
+ declare const meta: Meta<typeof LearningOutcomeFlyout>;
4
+ export default meta;
5
+ export declare const Example: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,35 @@
1
+ import { FillButton, FlexBox } from '@codecademy/gamut';
2
+ import { useState } from 'react';
3
+ import { LearningOutcomeFlyout } from '../../LearningOutcomeFlyout';
4
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
5
+ const meta = {
6
+ component: LearningOutcomeFlyout,
7
+ args: {}
8
+ };
9
+ export default meta;
10
+ export const Example = () => {
11
+ const [isExpanded, setIsExpanded] = useState(false);
12
+ const toggleOpen = () => setIsExpanded(!isExpanded);
13
+ return /*#__PURE__*/_jsxs(_Fragment, {
14
+ children: [/*#__PURE__*/_jsx(FillButton, {
15
+ onClick: toggleOpen,
16
+ children: "Open Flyout"
17
+ }), /*#__PURE__*/_jsx(FlexBox, {
18
+ width: "100%",
19
+ children: /*#__PURE__*/_jsx(LearningOutcomeFlyout, {
20
+ expanded: isExpanded,
21
+ learningOutcome: {
22
+ highestScore: 100,
23
+ highestScoreAchievedAt: '10/01',
24
+ latestScore: 68,
25
+ latestScoreAchievedAt: '10/01',
26
+ level: 2,
27
+ outcome: 'Understand the basics of React',
28
+ percentComplete: 75
29
+ },
30
+ learningOutcomeHref: "/learning-outcomes/123",
31
+ onClose: () => setIsExpanded(false)
32
+ })
33
+ })]
34
+ });
35
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codecademy/brand",
3
3
  "description": "Brand component library for Codecademy",
4
- "version": "2.5.0-alpha.975930aaa2.0",
4
+ "version": "3.0.0-alpha.220d4ef8ba.0",
5
5
  "author": "Codecademy Engineering <dev@codecademy.com>",
6
6
  "dependencies": {
7
7
  "@emotion/is-prop-valid": "^1.2.1",
@@ -1,8 +0,0 @@
1
- /**
2
- * A symbol used as the default value for contexts that require a provider. When
3
- * calling useContext, we can throw an error if we find this symbol rather than
4
- * a provided value. This is useful in cases where we want to consider null or
5
- * undefined as valid provided values.
6
- */
7
- export declare const NO_PROVIDER: unique symbol;
8
- export type NoProvider = typeof NO_PROVIDER;
@@ -1,7 +0,0 @@
1
- /**
2
- * A symbol used as the default value for contexts that require a provider. When
3
- * calling useContext, we can throw an error if we find this symbol rather than
4
- * a provided value. This is useful in cases where we want to consider null or
5
- * undefined as valid provided values.
6
- */
7
- export const NO_PROVIDER = Symbol('no provider');