@codecademy/brand 2.4.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 (48) 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/GlobalHeader/GlobalHeaderItems.js +1 -1
  5. package/dist/GlobalHeader/index.d.ts +0 -1
  6. package/dist/GlobalHeader/index.js +37 -41
  7. package/dist/GlobalHeader/types.d.ts +0 -1
  8. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.d.ts +8 -0
  9. package/dist/LearningOutcomeAssessmentScores/AssessmentDetail.js +55 -0
  10. package/dist/LearningOutcomeAssessmentScores/index.d.ts +8 -0
  11. package/dist/LearningOutcomeAssessmentScores/index.js +24 -0
  12. package/dist/LearningOutcomeFlyout/index.d.ts +32 -0
  13. package/dist/LearningOutcomeFlyout/index.js +170 -0
  14. package/dist/LearningOutcomeTile/index.js +1 -3
  15. package/dist/LearningOutcomeTile/types.d.ts +0 -1
  16. package/dist/index.d.ts +2 -1
  17. package/dist/index.js +2 -1
  18. package/dist/stories/Molecules/LearningOutcomeAssessmentScores.stories.d.ts +6 -0
  19. package/dist/stories/Molecules/LearningOutcomeAssessmentScores.stories.js +23 -0
  20. package/dist/stories/Molecules/LearningOutcomeFlyout.stories.d.ts +5 -0
  21. package/dist/stories/Molecules/LearningOutcomeFlyout.stories.js +35 -0
  22. package/package.json +1 -1
  23. package/dist/Recurly/context/NoProvider.d.ts +0 -8
  24. package/dist/Recurly/context/NoProvider.js +0 -7
  25. package/dist/Recurly/context/elements/index.d.ts +0 -26
  26. package/dist/Recurly/context/elements/index.js +0 -46
  27. package/dist/Recurly/context/elements/index.test.js +0 -88
  28. package/dist/Recurly/context/index.d.ts +0 -2
  29. package/dist/Recurly/context/index.js +0 -2
  30. package/dist/Recurly/context/recurly/index.d.ts +0 -30
  31. package/dist/Recurly/context/recurly/index.js +0 -50
  32. package/dist/Recurly/context/recurly/index.test.js +0 -63
  33. package/dist/Recurly/context/recurly/loadRecurly.d.ts +0 -6
  34. package/dist/Recurly/context/recurly/loadRecurly.js +0 -22
  35. package/dist/Recurly/context/recurly/loadRecurly.test.js +0 -57
  36. package/dist/Recurly/context/recurly/w.d.ts +0 -14
  37. package/dist/Recurly/context/recurly/w.js +0 -4
  38. package/dist/Recurly/fields/RecurlyField.d.ts +0 -9
  39. package/dist/Recurly/fields/RecurlyField.js +0 -57
  40. package/dist/Recurly/fields/elements.d.ts +0 -17
  41. package/dist/Recurly/fields/elements.js +0 -106
  42. package/dist/Recurly/fields/elements.test.js +0 -79
  43. package/dist/Recurly/fields/index.d.ts +0 -2
  44. package/dist/Recurly/fields/index.js +0 -2
  45. package/dist/Recurly/index.d.ts +0 -2
  46. package/dist/Recurly/index.js +0 -2
  47. package/dist/stories/Molecules/Recurly.stories.d.ts +0 -5
  48. package/dist/stories/Molecules/Recurly.stories.js +0 -56
@@ -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);
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';
@@ -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.4.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');
@@ -1,26 +0,0 @@
1
- import type { ElementsInstance } from '@recurly/recurly-js';
2
- import { PropsWithChildren } from 'react';
3
- /**
4
- * A provider that provides the Elements instance via context.
5
- *
6
- * If used outside of a RecurlyProvider, it will throw an error.
7
- */
8
- export declare function Elements({ children }: PropsWithChildren): import("react/jsx-runtime").JSX.Element;
9
- /**
10
- * A hook that returns the Elements instance from context.
11
- *
12
- * If used outside of an Elements provider, it will throw an error.
13
- *
14
- * Within an Elements provider:
15
- * - If used on the server, it will return undefined.
16
- * - If used on the client, it will initially return undefined and then return
17
- * the provided Elements instance once the Recurly library is loaded.
18
- *
19
- * @param options - An object to provide an alternate contextual error message
20
- * to use if one tries to use this hook outside of an Elements provider.
21
- *
22
- * @returns The Elements instance.
23
- */
24
- export declare function useElements(options?: {
25
- noProviderError?: string;
26
- }): ElementsInstance | undefined;
@@ -1,46 +0,0 @@
1
- import { createContext, useContext, useMemo } from 'react';
2
- import { NO_PROVIDER } from '../NoProvider';
3
- import { useRecurly } from '../recurly';
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- const ElementCtx = /*#__PURE__*/createContext(NO_PROVIDER);
6
-
7
- /**
8
- * A provider that provides the Elements instance via context.
9
- *
10
- * If used outside of a RecurlyProvider, it will throw an error.
11
- */
12
- export function Elements({
13
- children
14
- }) {
15
- const recurly = useRecurly({
16
- noProviderError: 'Elements must be used within a RecurlyProvider.'
17
- });
18
- const elements = useMemo(() => recurly?.Elements(), [recurly]);
19
- return /*#__PURE__*/_jsx(ElementCtx.Provider, {
20
- value: elements,
21
- children: children
22
- });
23
- }
24
-
25
- /**
26
- * A hook that returns the Elements instance from context.
27
- *
28
- * If used outside of an Elements provider, it will throw an error.
29
- *
30
- * Within an Elements provider:
31
- * - If used on the server, it will return undefined.
32
- * - If used on the client, it will initially return undefined and then return
33
- * the provided Elements instance once the Recurly library is loaded.
34
- *
35
- * @param options - An object to provide an alternate contextual error message
36
- * to use if one tries to use this hook outside of an Elements provider.
37
- *
38
- * @returns The Elements instance.
39
- */
40
- export function useElements(options) {
41
- const elements = useContext(ElementCtx);
42
- if (elements === NO_PROVIDER) {
43
- throw new Error(options?.noProviderError ?? 'useElements must be used within a Elements provider.');
44
- }
45
- return elements;
46
- }
@@ -1,88 +0,0 @@
1
- import { setupRtl } from '@codecademy/gamut-tests';
2
- import { RecurlyProvider } from '../recurly';
3
- import { Elements, useElements } from '.';
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- let mockRecurlyPromise;
6
- jest.mock('../recurly/loadRecurly', () => ({
7
- loadRecurly: () => mockRecurlyPromise
8
- }));
9
- const renderView = setupRtl(({
10
- children
11
- }) => children);
12
- const jsEventLoop = () => new Promise(r => setTimeout(r, 0));
13
- describe('Elements', () => {
14
- it('should show content before recurly loads', () => {
15
- mockRecurlyPromise = new Promise(() => {
16
- // never resolve
17
- });
18
- const {
19
- view
20
- } = renderView({
21
- children: /*#__PURE__*/_jsx(RecurlyProvider, {
22
- publicKey: "testKey",
23
- required: ['cvv', 'postal_code'],
24
- children: /*#__PURE__*/_jsx(Elements, {
25
- children: "test-content"
26
- })
27
- })
28
- });
29
- expect(view.getByText('test-content')).toBeInTheDocument();
30
- });
31
- it('should call Elements on recurly', async () => {
32
- const mockRecurly = {
33
- Elements: jest.fn()
34
- };
35
- mockRecurlyPromise = Promise.resolve(mockRecurly);
36
- renderView({
37
- children: /*#__PURE__*/_jsx(RecurlyProvider, {
38
- publicKey: "testKey",
39
- required: ['cvv', 'postal_code'],
40
- children: /*#__PURE__*/_jsx(Elements, {})
41
- })
42
- });
43
- await jsEventLoop(); // one for the Provider's useEffect to run
44
- await jsEventLoop(); // one for the subsequent re-render where useMemo runs
45
- expect(mockRecurly.Elements).toHaveBeenCalled();
46
- });
47
- });
48
- describe('useElements', () => {
49
- const Consumer = () => {
50
- try {
51
- const elements = useElements();
52
- return /*#__PURE__*/_jsx("div", {
53
- children: typeof elements
54
- });
55
- } catch {
56
- return /*#__PURE__*/_jsx("div", {
57
- children: "error"
58
- });
59
- }
60
- };
61
- it('throws an error when used without a Elements provider', () => {
62
- const {
63
- view
64
- } = renderView({
65
- children: /*#__PURE__*/_jsx(Consumer, {})
66
- });
67
- expect(view.getByText('error')).toBeInTheDocument();
68
- });
69
- it('returns null initially, then an Elements instance once Recurly loads', async () => {
70
- const mockRecurly = {
71
- Elements: () => ({})
72
- };
73
- mockRecurlyPromise = Promise.resolve(mockRecurly);
74
- const {
75
- view
76
- } = renderView({
77
- children: /*#__PURE__*/_jsx(RecurlyProvider, {
78
- publicKey: "testKey",
79
- required: ['cvv', 'postal_code'],
80
- children: /*#__PURE__*/_jsx(Elements, {
81
- children: /*#__PURE__*/_jsx(Consumer, {})
82
- })
83
- })
84
- });
85
- expect(view.getByText('undefined')).toBeInTheDocument();
86
- expect(await view.findByText('object')).toBeInTheDocument();
87
- });
88
- });
@@ -1,2 +0,0 @@
1
- export * from './recurly';
2
- export * from './elements';
@@ -1,2 +0,0 @@
1
- export * from './recurly';
2
- export * from './elements';
@@ -1,30 +0,0 @@
1
- import type { Recurly } from '@recurly/recurly-js';
2
- import { PropsWithChildren } from 'react';
3
- import { RecurlyConfig } from './loadRecurly';
4
- export type RecurlyProviderProps = PropsWithChildren<RecurlyConfig>;
5
- /**
6
- * A provider that:
7
- * - loads the Recurly library
8
- * - ensures that only a single instance of the library is loaded
9
- * - configures the library with the provided public key
10
- * - provides the library instance via context
11
- */
12
- export declare function RecurlyProvider({ children, ...config }: RecurlyProviderProps): import("react/jsx-runtime").JSX.Element;
13
- /**
14
- * A hook that returns the Recurly instance from context.
15
- *
16
- * If used outside of a RecurlyProvider, it will throw an error.
17
- *
18
- * Within a RecurlyProvider:
19
- * - If used on the server, it will return undefined.
20
- * - If used on the client, it will initially return undefined and then return
21
- * the provided Recurly instance once it is loaded.
22
- *
23
- * @param options - An object to provide an alternate contextual error message
24
- * to use if one tries to use this hook outside of a RecurlyProvider.
25
- *
26
- * @returns The Recurly instance.
27
- */
28
- export declare function useRecurly(options?: {
29
- noProviderError?: string;
30
- }): Recurly | undefined;
@@ -1,50 +0,0 @@
1
- import { createContext, useContext, useEffect, useState } from 'react';
2
- import { NO_PROVIDER } from '../NoProvider';
3
- import { loadRecurly } from './loadRecurly';
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- const RecurlyCtx = /*#__PURE__*/createContext(NO_PROVIDER);
6
- /**
7
- * A provider that:
8
- * - loads the Recurly library
9
- * - ensures that only a single instance of the library is loaded
10
- * - configures the library with the provided public key
11
- * - provides the library instance via context
12
- */
13
- export function RecurlyProvider({
14
- children,
15
- ...config
16
- }) {
17
- const [recurly, setRecurly] = useState(undefined);
18
- useEffect(() => {
19
- loadRecurly(config).then(setRecurly);
20
- // Exclude `config` dependency as it should be treated as static.
21
- // eslint-disable-next-line react-hooks/exhaustive-deps
22
- }, []);
23
- return /*#__PURE__*/_jsx(RecurlyCtx.Provider, {
24
- value: recurly,
25
- children: children
26
- });
27
- }
28
-
29
- /**
30
- * A hook that returns the Recurly instance from context.
31
- *
32
- * If used outside of a RecurlyProvider, it will throw an error.
33
- *
34
- * Within a RecurlyProvider:
35
- * - If used on the server, it will return undefined.
36
- * - If used on the client, it will initially return undefined and then return
37
- * the provided Recurly instance once it is loaded.
38
- *
39
- * @param options - An object to provide an alternate contextual error message
40
- * to use if one tries to use this hook outside of a RecurlyProvider.
41
- *
42
- * @returns The Recurly instance.
43
- */
44
- export function useRecurly(options) {
45
- const recurly = useContext(RecurlyCtx);
46
- if (recurly === NO_PROVIDER) {
47
- throw new Error(options?.noProviderError ?? 'useRecurly must be used within a RecurlyProvider');
48
- }
49
- return recurly;
50
- }