@coorpacademy/components 11.30.1 → 11.32.1-alpha.16

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 (227) hide show
  1. package/es/atom/button-link/index.d.ts +1 -0
  2. package/es/atom/button-link/index.d.ts.map +1 -1
  3. package/es/atom/button-link/index.js +21 -12
  4. package/es/atom/button-link/index.js.map +1 -1
  5. package/es/atom/button-link/types.d.ts +11 -1
  6. package/es/atom/button-link/types.d.ts.map +1 -1
  7. package/es/atom/button-link/types.js +1 -0
  8. package/es/atom/button-link/types.js.map +1 -1
  9. package/es/atom/chip/index.d.ts +37 -0
  10. package/es/atom/chip/index.d.ts.map +1 -0
  11. package/es/atom/chip/index.js +85 -0
  12. package/es/atom/chip/index.js.map +1 -0
  13. package/es/atom/chip/style.css +65 -0
  14. package/es/atom/chips/index.d.ts.map +1 -1
  15. package/es/atom/chips/index.js +1 -0
  16. package/es/atom/chips/index.js.map +1 -1
  17. package/es/atom/icon/index.js +2 -2
  18. package/es/atom/icon/index.js.map +1 -1
  19. package/es/molecule/base-modal/index.d.ts +33 -0
  20. package/es/molecule/base-modal/index.d.ts.map +1 -0
  21. package/es/molecule/base-modal/index.js +142 -0
  22. package/es/molecule/base-modal/index.js.map +1 -0
  23. package/es/molecule/base-modal/style.css +125 -0
  24. package/es/molecule/bulk-progress-bar/index.d.ts.map +1 -1
  25. package/es/molecule/bulk-progress-bar/index.js +6 -3
  26. package/es/molecule/bulk-progress-bar/index.js.map +1 -1
  27. package/es/molecule/cm-popin/types.d.ts +2 -0
  28. package/es/molecule/cm-popin/types.d.ts.map +1 -1
  29. package/es/molecule/expandible-actionable-table/index.d.ts +1 -0
  30. package/es/molecule/expandible-actionable-table/index.d.ts.map +1 -1
  31. package/es/molecule/expandible-actionable-table/types.d.ts +1 -0
  32. package/es/molecule/expandible-actionable-table/types.d.ts.map +1 -1
  33. package/es/molecule/learner-skill-card/index.d.ts +23 -0
  34. package/es/molecule/learner-skill-card/index.d.ts.map +1 -0
  35. package/es/molecule/learner-skill-card/index.js +164 -0
  36. package/es/molecule/learner-skill-card/index.js.map +1 -0
  37. package/es/molecule/learner-skill-card/style.css +119 -0
  38. package/es/molecule/learning-profile-radar-chart/index.d.ts +1 -1
  39. package/es/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
  40. package/es/molecule/learning-profile-radar-chart/index.js +16 -11
  41. package/es/molecule/learning-profile-radar-chart/index.js.map +1 -1
  42. package/es/molecule/learning-profile-radar-chart/types.d.ts +7 -1
  43. package/es/molecule/learning-profile-radar-chart/types.d.ts.map +1 -1
  44. package/es/molecule/learning-profile-radar-chart/types.js.map +1 -1
  45. package/es/molecule/questions/template/index.d.ts +1 -1
  46. package/es/molecule/quick-access-card/index.d.ts.map +1 -1
  47. package/es/molecule/quick-access-card/index.js +5 -1
  48. package/es/molecule/quick-access-card/index.js.map +1 -1
  49. package/es/molecule/skill-picker-modal/index.d.ts +23 -0
  50. package/es/molecule/skill-picker-modal/index.d.ts.map +1 -0
  51. package/es/molecule/skill-picker-modal/index.js +138 -0
  52. package/es/molecule/skill-picker-modal/index.js.map +1 -0
  53. package/es/molecule/skill-picker-modal/style.css +28 -0
  54. package/es/molecule/skills-chart-side-information-item/index.d.ts +1 -1
  55. package/es/molecule/skills-chart-side-information-item/index.js +1 -1
  56. package/es/molecule/skills-chart-side-information-item/index.js.map +1 -1
  57. package/es/molecule/skills-chart-side-information-panel/index.d.ts +1 -1
  58. package/es/organism/list-items/index.d.ts +2 -0
  59. package/es/organism/setup-header/index.d.ts +4 -0
  60. package/es/organism/wizard-contents/index.d.ts +3 -0
  61. package/es/template/app-player/loading/index.d.ts +2 -0
  62. package/es/template/app-player/player/index.d.ts +4 -0
  63. package/es/template/app-player/player/slides/index.d.ts +2 -0
  64. package/es/template/app-player/player/slides/index.d.ts.map +1 -1
  65. package/es/template/app-player/popin-correction/index.d.ts +2 -0
  66. package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
  67. package/es/template/app-player/popin-end/index.d.ts +2 -0
  68. package/es/template/app-review/index.d.ts +2 -0
  69. package/es/template/app-review/index.d.ts.map +1 -1
  70. package/es/template/app-review/player/prop-types.d.ts +2 -0
  71. package/es/template/app-review/player/prop-types.d.ts.map +1 -1
  72. package/es/template/app-review/prop-types.d.ts +2 -0
  73. package/es/template/app-review/prop-types.d.ts.map +1 -1
  74. package/es/template/back-office/brand-create/index.d.ts +4 -0
  75. package/es/template/back-office/brand-create/index.d.ts.map +1 -1
  76. package/es/template/back-office/brand-list/index.d.ts +4 -0
  77. package/es/template/back-office/brand-list/index.d.ts.map +1 -1
  78. package/es/template/back-office/brand-update/index.d.ts +11 -0
  79. package/es/template/back-office/dashboard-preview/index.d.ts +4 -0
  80. package/es/template/back-office/layout/index.d.ts +4 -0
  81. package/es/template/back-office/layout/index.d.ts.map +1 -1
  82. package/es/template/common/dashboard/index.d.ts +4 -0
  83. package/es/template/common/search-page/index.d.ts +2 -0
  84. package/es/template/external-course/index.d.ts +2 -0
  85. package/es/template/mobile-login/welcome/index.native.d.ts.map +1 -1
  86. package/es/template/mobile-login/welcome/index.native.js +5 -1
  87. package/es/template/mobile-login/welcome/index.native.js.map +1 -1
  88. package/es/template/my-learning/index.d.ts +34 -0
  89. package/es/template/my-learning/index.d.ts.map +1 -0
  90. package/es/template/my-learning/index.js +354 -0
  91. package/es/template/my-learning/index.js.map +1 -0
  92. package/es/template/my-learning/style.css +179 -0
  93. package/es/variables/colors.d.ts +7 -7
  94. package/es/variables/colors.d.ts.map +1 -1
  95. package/es/variables/colors.js +2 -1
  96. package/es/variables/colors.js.map +1 -1
  97. package/es/variables/theme.native.d.ts.map +1 -1
  98. package/es/variables/theme.native.js +4 -1
  99. package/es/variables/theme.native.js.map +1 -1
  100. package/lib/atom/button-link/index.d.ts +1 -0
  101. package/lib/atom/button-link/index.d.ts.map +1 -1
  102. package/lib/atom/button-link/index.js +22 -12
  103. package/lib/atom/button-link/index.js.map +1 -1
  104. package/lib/atom/button-link/types.d.ts +11 -1
  105. package/lib/atom/button-link/types.d.ts.map +1 -1
  106. package/lib/atom/button-link/types.js +1 -0
  107. package/lib/atom/button-link/types.js.map +1 -1
  108. package/lib/atom/chip/index.d.ts +37 -0
  109. package/lib/atom/chip/index.d.ts.map +1 -0
  110. package/lib/atom/chip/index.js +109 -0
  111. package/lib/atom/chip/index.js.map +1 -0
  112. package/lib/atom/chip/style.css +65 -0
  113. package/lib/atom/chips/index.d.ts.map +1 -1
  114. package/lib/atom/chips/index.js +1 -0
  115. package/lib/atom/chips/index.js.map +1 -1
  116. package/lib/atom/icon/index.js +2 -2
  117. package/lib/atom/icon/index.js.map +1 -1
  118. package/lib/molecule/base-modal/index.d.ts +33 -0
  119. package/lib/molecule/base-modal/index.d.ts.map +1 -0
  120. package/lib/molecule/base-modal/index.js +158 -0
  121. package/lib/molecule/base-modal/index.js.map +1 -0
  122. package/lib/molecule/base-modal/style.css +125 -0
  123. package/lib/molecule/bulk-progress-bar/index.d.ts.map +1 -1
  124. package/lib/molecule/bulk-progress-bar/index.js +7 -3
  125. package/lib/molecule/bulk-progress-bar/index.js.map +1 -1
  126. package/lib/molecule/cm-popin/types.d.ts +2 -0
  127. package/lib/molecule/cm-popin/types.d.ts.map +1 -1
  128. package/lib/molecule/expandible-actionable-table/index.d.ts +1 -0
  129. package/lib/molecule/expandible-actionable-table/index.d.ts.map +1 -1
  130. package/lib/molecule/expandible-actionable-table/types.d.ts +1 -0
  131. package/lib/molecule/expandible-actionable-table/types.d.ts.map +1 -1
  132. package/lib/molecule/learner-skill-card/index.d.ts +23 -0
  133. package/lib/molecule/learner-skill-card/index.d.ts.map +1 -0
  134. package/lib/molecule/learner-skill-card/index.js +182 -0
  135. package/lib/molecule/learner-skill-card/index.js.map +1 -0
  136. package/lib/molecule/learner-skill-card/style.css +119 -0
  137. package/lib/molecule/learning-profile-radar-chart/index.d.ts +1 -1
  138. package/lib/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
  139. package/lib/molecule/learning-profile-radar-chart/index.js +16 -11
  140. package/lib/molecule/learning-profile-radar-chart/index.js.map +1 -1
  141. package/lib/molecule/learning-profile-radar-chart/types.d.ts +7 -1
  142. package/lib/molecule/learning-profile-radar-chart/types.d.ts.map +1 -1
  143. package/lib/molecule/learning-profile-radar-chart/types.js.map +1 -1
  144. package/lib/molecule/questions/template/index.d.ts +1 -1
  145. package/lib/molecule/quick-access-card/index.d.ts.map +1 -1
  146. package/lib/molecule/quick-access-card/index.js +7 -1
  147. package/lib/molecule/quick-access-card/index.js.map +1 -1
  148. package/lib/molecule/skill-picker-modal/index.d.ts +23 -0
  149. package/lib/molecule/skill-picker-modal/index.d.ts.map +1 -0
  150. package/lib/molecule/skill-picker-modal/index.js +156 -0
  151. package/lib/molecule/skill-picker-modal/index.js.map +1 -0
  152. package/lib/molecule/skill-picker-modal/style.css +28 -0
  153. package/lib/molecule/skills-chart-side-information-item/index.d.ts +1 -1
  154. package/lib/molecule/skills-chart-side-information-item/index.js +1 -1
  155. package/lib/molecule/skills-chart-side-information-item/index.js.map +1 -1
  156. package/lib/molecule/skills-chart-side-information-panel/index.d.ts +1 -1
  157. package/lib/organism/list-items/index.d.ts +2 -0
  158. package/lib/organism/setup-header/index.d.ts +4 -0
  159. package/lib/organism/wizard-contents/index.d.ts +3 -0
  160. package/lib/template/app-player/loading/index.d.ts +2 -0
  161. package/lib/template/app-player/player/index.d.ts +4 -0
  162. package/lib/template/app-player/player/slides/index.d.ts +2 -0
  163. package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
  164. package/lib/template/app-player/popin-correction/index.d.ts +2 -0
  165. package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
  166. package/lib/template/app-player/popin-end/index.d.ts +2 -0
  167. package/lib/template/app-review/index.d.ts +2 -0
  168. package/lib/template/app-review/index.d.ts.map +1 -1
  169. package/lib/template/app-review/player/prop-types.d.ts +2 -0
  170. package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
  171. package/lib/template/app-review/prop-types.d.ts +2 -0
  172. package/lib/template/app-review/prop-types.d.ts.map +1 -1
  173. package/lib/template/back-office/brand-create/index.d.ts +4 -0
  174. package/lib/template/back-office/brand-create/index.d.ts.map +1 -1
  175. package/lib/template/back-office/brand-list/index.d.ts +4 -0
  176. package/lib/template/back-office/brand-list/index.d.ts.map +1 -1
  177. package/lib/template/back-office/brand-update/index.d.ts +11 -0
  178. package/lib/template/back-office/dashboard-preview/index.d.ts +4 -0
  179. package/lib/template/back-office/layout/index.d.ts +4 -0
  180. package/lib/template/back-office/layout/index.d.ts.map +1 -1
  181. package/lib/template/common/dashboard/index.d.ts +4 -0
  182. package/lib/template/common/search-page/index.d.ts +2 -0
  183. package/lib/template/external-course/index.d.ts +2 -0
  184. package/lib/template/mobile-login/welcome/index.native.d.ts.map +1 -1
  185. package/lib/template/mobile-login/welcome/index.native.js +7 -1
  186. package/lib/template/mobile-login/welcome/index.native.js.map +1 -1
  187. package/lib/template/my-learning/index.d.ts +34 -0
  188. package/lib/template/my-learning/index.d.ts.map +1 -0
  189. package/lib/template/my-learning/index.js +375 -0
  190. package/lib/template/my-learning/index.js.map +1 -0
  191. package/lib/template/my-learning/style.css +179 -0
  192. package/lib/variables/colors.d.ts +7 -7
  193. package/lib/variables/colors.d.ts.map +1 -1
  194. package/lib/variables/colors.js +2 -1
  195. package/lib/variables/colors.js.map +1 -1
  196. package/lib/variables/theme.native.d.ts.map +1 -1
  197. package/lib/variables/theme.native.js +4 -1
  198. package/lib/variables/theme.native.js.map +1 -1
  199. package/locales/bs/global.json +7 -1
  200. package/locales/cs/global.json +7 -1
  201. package/locales/de/global.json +7 -1
  202. package/locales/en/global.json +31 -0
  203. package/locales/es/global.json +6 -0
  204. package/locales/et/global.json +7 -1
  205. package/locales/fi/global.json +7 -1
  206. package/locales/fr/global.json +6 -0
  207. package/locales/hr/global.json +7 -1
  208. package/locales/hu/global.json +7 -1
  209. package/locales/hy/global.json +7 -1
  210. package/locales/it/global.json +6 -0
  211. package/locales/ja/global.json +7 -1
  212. package/locales/ko/global.json +7 -1
  213. package/locales/nl/global.json +6 -0
  214. package/locales/pl/global.json +7 -1
  215. package/locales/pt/global.json +7 -1
  216. package/locales/ro/global.json +7 -1
  217. package/locales/ru/global.json +7 -1
  218. package/locales/sk/global.json +7 -1
  219. package/locales/sl/global.json +7 -1
  220. package/locales/sv/global.json +7 -1
  221. package/locales/tl/global.json +7 -1
  222. package/locales/tr/global.json +7 -1
  223. package/locales/uk/global.json +7 -1
  224. package/locales/vi/global.json +7 -1
  225. package/locales/zh/global.json +7 -1
  226. package/locales/zh_TW/global.json +7 -1
  227. package/package.json +3 -3
@@ -0,0 +1,354 @@
1
+ import _getOr from "lodash/fp/getOr";
2
+ import React, { useCallback, useState, useMemo } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { convert } from 'css-color-function';
5
+ import style from './style.css';
6
+ import Provider from '../../atom/provider';
7
+ import Icon from '../../atom/icon';
8
+ import Picture from '../../atom/picture';
9
+ import ButtonLink from '../../atom/button-link';
10
+ import ToolTip from '../../atom/tooltip';
11
+ import SkillPickerModal from '../../molecule/skill-picker-modal';
12
+ import ResponsiveLearningProfileRadarChart from '../../molecule/learning-profile-radar-chart';
13
+ import SkillsChartSideInformationPanel from '../../molecule/skills-chart-side-information-panel';
14
+ import LearnerSkillCard from '../../molecule/learner-skill-card';
15
+
16
+ const ChangeSkillFocusButton = (props, context) => {
17
+ const [hovered, setHovered] = useState(false);
18
+ const {
19
+ onClick
20
+ } = props;
21
+ const {
22
+ skin,
23
+ translate
24
+ } = context;
25
+
26
+ const primarySkinColor = _getOr('#0061FF', 'common.primary', skin);
27
+
28
+ const handleMouseOver = useCallback(() => setHovered(true), [setHovered]);
29
+ const handleMouseLeave = useCallback(() => setHovered(false), [setHovered]);
30
+ const buttonProps = {
31
+ customStyle: {
32
+ backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),
33
+ color: hovered ? '#FFFFFF' : primarySkinColor,
34
+ transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'
35
+ },
36
+ onClick,
37
+ label: translate('change_skill_focus'),
38
+ 'data-name': 'change-skill-focus-button',
39
+ icon: {
40
+ position: 'left',
41
+ faIcon: {
42
+ name: 'arrows-rotate',
43
+ backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),
44
+ color: hovered ? '#FFFFFF' : primarySkinColor,
45
+ size: 16
46
+ }
47
+ }
48
+ };
49
+ return /*#__PURE__*/React.createElement("div", {
50
+ onMouseOver: handleMouseOver,
51
+ onMouseLeave: handleMouseLeave,
52
+ "data-name": "button-explore-wrapper"
53
+ }, /*#__PURE__*/React.createElement(ButtonLink, buttonProps));
54
+ };
55
+
56
+ ChangeSkillFocusButton.contextTypes = {
57
+ translate: Provider.childContextTypes.translate
58
+ };
59
+ ChangeSkillFocusButton.propTypes = process.env.NODE_ENV !== "production" ? {
60
+ onClick: PropTypes.func
61
+ } : {};
62
+
63
+ const FilterButton = (props, context) => {
64
+ const {
65
+ active,
66
+ filter,
67
+ skillTotal,
68
+ onClick
69
+ } = props;
70
+ const {
71
+ skin
72
+ } = context;
73
+
74
+ const primarySkinColor = _getOr('#0061FF', 'common.primary', skin);
75
+
76
+ const Content = useCallback(() => /*#__PURE__*/React.createElement("div", null, filter, /*#__PURE__*/React.createElement("span", {
77
+ className: active ? style.skillFilterNumber : style.skillFilterNumberInActive
78
+ }, skillTotal)), [filter, skillTotal, active]);
79
+ const buttonProps = {
80
+ customStyle: {
81
+ backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : '#FFFFFF',
82
+ color: active ? primarySkinColor : '#9999A8',
83
+ transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',
84
+ width: 'fit-content'
85
+ },
86
+ onClick,
87
+ content: /*#__PURE__*/React.createElement(Content, null),
88
+ 'data-name': 'change-skill-focus-button'
89
+ };
90
+ return /*#__PURE__*/React.createElement(ButtonLink, buttonProps);
91
+ };
92
+
93
+ FilterButton.propTypes = process.env.NODE_ENV !== "production" ? {
94
+ active: PropTypes.bool,
95
+ filter: PropTypes.string,
96
+ skillTotal: PropTypes.number,
97
+ onClick: PropTypes.func
98
+ } : {};
99
+
100
+ const MyLearning = (props, context) => {
101
+ const {
102
+ skills,
103
+ selectedSkills,
104
+ skillsStats,
105
+ skillsLocales,
106
+ skillsFilters,
107
+ isLoading,
108
+ onSkillFocusConfirm,
109
+ onReviewSkill,
110
+ onExploreSkill
111
+ } = props;
112
+ const {
113
+ translate
114
+ } = context;
115
+ const [open, setOpen] = useState(false);
116
+ const [selectedSkillsList, setSelectedSkillsList] = useState([...selectedSkills]);
117
+ const [skillFocusSelected, setSkillFocusSelected] = useState(undefined);
118
+ const [activeFilter, setActiveFilter] = useState('all'); // const skillsMap = useMemo(() => {
119
+ // const tempSkillsMap = {};
120
+ // all.forEach(skill => (tempSkillsMap[skill.skillTitle] = {...skill, focus: false}));
121
+ // return tempSkillsMap;
122
+ // }, [all]);
123
+ // const focusSkills = useMemo(() => skillList.filter(skill => skill.focus), [skillList]);
124
+
125
+ const skillsReviewReady = useMemo(() => {
126
+ return skills.filter(skill => skillsFilters[skill].review);
127
+ }, [skills, skillsFilters]);
128
+ const graphDatas = useMemo(() => {
129
+ const data = {};
130
+ selectedSkillsList.forEach(skill => data[skill] = skillsStats[skill].score);
131
+ return data;
132
+ }, [selectedSkillsList, skillsStats]);
133
+ const graphLegends = useMemo(() => {
134
+ const data = {};
135
+ selectedSkillsList.forEach(skill => data[skill] = skillsLocales[skill]);
136
+ return data;
137
+ }, [selectedSkillsList, skillsLocales]);
138
+ const filters = [{
139
+ name: 'all',
140
+ skills: skills
141
+ }, {
142
+ name: 'review',
143
+ skills: skillsReviewReady
144
+ }];
145
+ const coursedCompletedData = useMemo(() => skillFocusSelected ? skillsStats[skillFocusSelected].coursesCompleted : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].coursesCompleted, 0), [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]);
146
+ const questionsAnsweredData = useMemo(() => skillFocusSelected ? skillsStats[skillFocusSelected].questionsAnswered : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].questionsAnswered, 0), [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]);
147
+ const learningHoursData = useMemo(() => skillFocusSelected ? skillsStats[skillFocusSelected].learningHours : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].learningHours, 0), [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]);
148
+ const skillChartPaneLegends = useMemo(() => translate('on', {
149
+ focusedSkill: skillFocusSelected ? skillsLocales[skillFocusSelected] : translate('focused_skills')
150
+ }), [translate, skillsLocales, skillFocusSelected]);
151
+ const skillChartPanelProps = [{
152
+ title: translate('courses_completed'),
153
+ value: coursedCompletedData,
154
+ legend: skillChartPaneLegends,
155
+ icon: {
156
+ iconName: 'book-open-cover',
157
+ backgroundColor: '#D9F4F7'
158
+ }
159
+ }, {
160
+ title: translate('questions_answered'),
161
+ value: questionsAnsweredData,
162
+ legend: skillChartPaneLegends,
163
+ icon: {
164
+ iconName: 'circle-question',
165
+ backgroundColor: '#FFDCD1'
166
+ }
167
+ }, {
168
+ title: translate('learning_hours'),
169
+ value: learningHoursData,
170
+ legend: skillChartPaneLegends,
171
+ icon: {
172
+ iconName: 'clock',
173
+ backgroundColor: '#FAD6DE'
174
+ }
175
+ }];
176
+ const handleOnDotClick = useCallback(skillRef => setSkillFocusSelected(skillRef), [setSkillFocusSelected]);
177
+ const handleOpenSkillPicker = useCallback(() => setOpen(true), [setOpen]);
178
+ const handleCloseSkillPicker = useCallback(() => setOpen(false), [setOpen]);
179
+ const handleConfirmSkillPicker = useCallback(focusSkillList => {
180
+ setSelectedSkillsList(focusSkillList);
181
+ onSkillFocusConfirm(focusSkillList);
182
+ setOpen(false);
183
+ }, [onSkillFocusConfirm, setSelectedSkillsList, setOpen]);
184
+ const TooltipContent = useCallback(() => /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("b", null, translate('review_mode_tooltip_header'))), /*#__PURE__*/React.createElement("p", null, translate('review_mode_tooltip_content')), /*#__PURE__*/React.createElement("ol", null, /*#__PURE__*/React.createElement("li", null, translate('Choose 1 Skill')), /*#__PURE__*/React.createElement("li", null, translate('Answer 5 Questions')), /*#__PURE__*/React.createElement("li", null, translate('You have Infinite Lives')), /*#__PURE__*/React.createElement("li", null, translate('Get it all right')))), [translate]);
185
+ return /*#__PURE__*/React.createElement("div", {
186
+ className: style.container
187
+ }, /*#__PURE__*/React.createElement(SkillPickerModal, {
188
+ skills: skills,
189
+ selectedSkills: selectedSkillsList,
190
+ skillsLocales: skillsLocales,
191
+ isOpen: open,
192
+ isLoading: isLoading,
193
+ onCancel: handleCloseSkillPicker,
194
+ onConfirm: handleConfirmSkillPicker,
195
+ onClose: handleCloseSkillPicker
196
+ }), /*#__PURE__*/React.createElement("div", {
197
+ className: style.skillFocusContainer
198
+ }, /*#__PURE__*/React.createElement("header", {
199
+ className: style.skillFocusHeader
200
+ }, /*#__PURE__*/React.createElement("div", {
201
+ className: style.skillFocusHeaderIcon
202
+ }, /*#__PURE__*/React.createElement(Icon, {
203
+ iconName: "bullseye-arrow",
204
+ backgroundColor: "#DDD1FF",
205
+ size: {
206
+ faSize: 20,
207
+ wrapperSize: 48
208
+ }
209
+ })), /*#__PURE__*/React.createElement("div", {
210
+ className: style.skillFocusHeaderContent
211
+ }, /*#__PURE__*/React.createElement("div", {
212
+ className: style.skillFocusHeaderTitle
213
+ }, translate('skill_focus')), /*#__PURE__*/React.createElement("div", {
214
+ className: style.skillFocusHeaderDescription
215
+ }, translate('skills_focus_description'))), selectedSkillsList.length > 0 ? /*#__PURE__*/React.createElement(ChangeSkillFocusButton, {
216
+ onClick: handleOpenSkillPicker
217
+ }) : null), selectedSkillsList.length > 0 ? /*#__PURE__*/React.createElement("div", {
218
+ className: style.skillFocusContent
219
+ }, /*#__PURE__*/React.createElement("div", {
220
+ className: style.radarContainer
221
+ }, /*#__PURE__*/React.createElement(ResponsiveLearningProfileRadarChart, {
222
+ totalDataset: 1,
223
+ height: 424,
224
+ width: 680,
225
+ data: graphDatas,
226
+ legend: graphLegends,
227
+ margin: {
228
+ top: 80
229
+ },
230
+ onClick: handleOnDotClick,
231
+ colors: [{
232
+ gradient: {
233
+ fill: ['#0062ffff', '#8000ff85'],
234
+ stroke: ['#0062ffff', '#8000FF']
235
+ },
236
+ percentage: {
237
+ color: '#0061FF',
238
+ background: 'linear-gradient(180deg, rgba(0, 97, 255, 0.10) 0%, rgba(147, 107, 255, 0.10) 100%)'
239
+ },
240
+ label: {
241
+ color: '#020202ff'
242
+ }
243
+ }]
244
+ })), /*#__PURE__*/React.createElement(SkillsChartSideInformationPanel, {
245
+ sidePanelItems: skillChartPanelProps
246
+ })) : /*#__PURE__*/React.createElement("div", {
247
+ className: style.skillFocusEmpty
248
+ }, /*#__PURE__*/React.createElement(Picture, {
249
+ className: style.img,
250
+ src: 'https://t4.ftcdn.net/jpg/01/43/23/83/360_F_143238306_lh0ap42wgot36y44WybfQpvsJB5A1CHc.jpg',
251
+ alt: 'demo'
252
+ }), /*#__PURE__*/React.createElement("div", {
253
+ className: style.skillFocusEmptyTitle
254
+ }, translate('skill_focus_empty_title')), /*#__PURE__*/React.createElement("div", {
255
+ className: style.skillFocusEmptyDescription
256
+ }, translate('skills_focus_empty_description')), /*#__PURE__*/React.createElement(ButtonLink, {
257
+ customStyle: {
258
+ width: '168px'
259
+ },
260
+ type: 'primary',
261
+ onClick: handleOpenSkillPicker,
262
+ label: translate('choose_your_focus')
263
+ }))), /*#__PURE__*/React.createElement("header", {
264
+ className: style.skillListHeader
265
+ }, /*#__PURE__*/React.createElement("div", {
266
+ className: style.skillListHeaderIcon
267
+ }, /*#__PURE__*/React.createElement(Icon, {
268
+ iconName: "dumbbell",
269
+ backgroundColor: "#FFF9D1",
270
+ size: {
271
+ faSize: 20,
272
+ wrapperSize: 48
273
+ }
274
+ })), /*#__PURE__*/React.createElement("div", {
275
+ className: style.skillListHeaderContent
276
+ }, /*#__PURE__*/React.createElement("div", {
277
+ className: style.skillListHeaderTitle
278
+ }, translate('skills')), /*#__PURE__*/React.createElement("div", {
279
+ className: style.skillListHeaderDescription
280
+ }, translate('Explore or review skills'), /*#__PURE__*/React.createElement(ToolTip, {
281
+ fontSize: 12,
282
+ iconContainerClassName: style.infoIconTooltip,
283
+ tooltipClassName: style.tooltip,
284
+ TooltipContent: TooltipContent,
285
+ closeToolTipInformationTextAriaLabel: translate('Press the escape key to close the information text')
286
+ })))), /*#__PURE__*/React.createElement("div", {
287
+ className: style.skillFilterContainer
288
+ }, filters.map((filter, index) => {
289
+ function handleFilterClick() {
290
+ setActiveFilter(filter.name);
291
+ }
292
+
293
+ return /*#__PURE__*/React.createElement("div", {
294
+ key: index
295
+ }, /*#__PURE__*/React.createElement(FilterButton, {
296
+ active: activeFilter === filter.name,
297
+ filter: translate(filter.name),
298
+ skillTotal: filter.skills.length,
299
+ onClick: handleFilterClick
300
+ }));
301
+ })), /*#__PURE__*/React.createElement("div", {
302
+ className: style.skillListContainer
303
+ }, skills.map((skill, index) => {
304
+ if (activeFilter === 'review' && !skillsFilters[skill].review) return null;
305
+
306
+ function handleReviewSkill() {
307
+ onReviewSkill(skill);
308
+ }
309
+
310
+ function handleExploreSkill() {
311
+ onExploreSkill(skill);
312
+ }
313
+
314
+ return /*#__PURE__*/React.createElement("div", {
315
+ key: index
316
+ }, /*#__PURE__*/React.createElement(LearnerSkillCard, {
317
+ skillTitle: skillsLocales[skill],
318
+ focus: selectedSkills.includes(skill),
319
+ metrics: {
320
+ skillCourses: skillsStats[skill].courses,
321
+ skillQuestions: skillsStats[skill].questionsAnswered,
322
+ completedCourses: skillsStats[skill].coursesCompleted
323
+ },
324
+ review: skillsFilters[skill].review,
325
+ onReviewClick: handleReviewSkill,
326
+ onExploreClick: handleExploreSkill
327
+ }));
328
+ })));
329
+ };
330
+
331
+ MyLearning.contextTypes = {
332
+ translate: Provider.childContextTypes.translate
333
+ };
334
+ MyLearning.propTypes = process.env.NODE_ENV !== "production" ? {
335
+ skills: PropTypes.arrayOf(PropTypes.string),
336
+ selectedSkills: PropTypes.arrayOf(PropTypes.string),
337
+ skillsStats: PropTypes.objectOf(PropTypes.shape({
338
+ score: PropTypes.number,
339
+ courses: PropTypes.number,
340
+ coursesCompleted: PropTypes.number,
341
+ questionsAnswered: PropTypes.number,
342
+ learningHours: PropTypes.number
343
+ })),
344
+ skillsFilters: PropTypes.objectOf(PropTypes.shape({
345
+ review: PropTypes.boolean
346
+ })),
347
+ skillsLocales: PropTypes.objectOf(PropTypes.string),
348
+ isLoading: PropTypes.bool,
349
+ onSkillFocusConfirm: PropTypes.func,
350
+ onReviewSkill: PropTypes.func,
351
+ onExploreSkill: PropTypes.func
352
+ } : {};
353
+ export default MyLearning;
354
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useState","useMemo","PropTypes","convert","style","Provider","Icon","Picture","ButtonLink","ToolTip","SkillPickerModal","ResponsiveLearningProfileRadarChart","SkillsChartSideInformationPanel","LearnerSkillCard","ChangeSkillFocusButton","props","context","hovered","setHovered","onClick","skin","translate","primarySkinColor","handleMouseOver","handleMouseLeave","buttonProps","customStyle","backgroundColor","color","transition","label","icon","position","faIcon","name","size","contextTypes","childContextTypes","propTypes","func","FilterButton","active","filter","skillTotal","Content","skillFilterNumber","skillFilterNumberInActive","width","content","bool","string","number","MyLearning","skills","selectedSkills","skillsStats","skillsLocales","skillsFilters","isLoading","onSkillFocusConfirm","onReviewSkill","onExploreSkill","open","setOpen","selectedSkillsList","setSelectedSkillsList","skillFocusSelected","setSkillFocusSelected","undefined","activeFilter","setActiveFilter","skillsReviewReady","skill","review","graphDatas","data","forEach","score","graphLegends","filters","coursedCompletedData","coursesCompleted","reduce","sum","questionsAnsweredData","questionsAnswered","learningHoursData","learningHours","skillChartPaneLegends","focusedSkill","skillChartPanelProps","title","value","legend","iconName","handleOnDotClick","skillRef","handleOpenSkillPicker","handleCloseSkillPicker","handleConfirmSkillPicker","focusSkillList","TooltipContent","container","skillFocusContainer","skillFocusHeader","skillFocusHeaderIcon","faSize","wrapperSize","skillFocusHeaderContent","skillFocusHeaderTitle","skillFocusHeaderDescription","length","skillFocusContent","radarContainer","top","gradient","fill","stroke","percentage","background","skillFocusEmpty","img","skillFocusEmptyTitle","skillFocusEmptyDescription","skillListHeader","skillListHeaderIcon","skillListHeaderContent","skillListHeaderTitle","skillListHeaderDescription","infoIconTooltip","tooltip","skillFilterContainer","map","index","handleFilterClick","skillListContainer","handleReviewSkill","handleExploreSkill","includes","skillCourses","courses","skillQuestions","completedCourses","arrayOf","objectOf","shape","boolean"],"sources":["../../../src/template/my-learning/index.js"],"sourcesContent":["import React, {useCallback, useState, useEffect, useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport {getOr} from 'lodash/fp';\nimport style from './style.css';\nimport Provider from '../../atom/provider';\nimport Icon from '../../atom/icon';\nimport Picture from '../../atom/picture';\nimport ButtonLink from '../../atom/button-link';\nimport ToolTip from '../../atom/tooltip';\nimport SkillPickerModal from '../../molecule/skill-picker-modal';\nimport ResponsiveLearningProfileRadarChart from '../../molecule/learning-profile-radar-chart';\nimport SkillsChartSideInformationPanel from '../../molecule/skills-chart-side-information-panel';\nimport LearnerSkillCard from '../../molecule/learner-skill-card';\n\nconst ChangeSkillFocusButton = (props, context) => {\n const [hovered, setHovered] = useState(false);\n const {onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = getOr('#0061FF', 'common.primary', skin);\n\n const handleMouseOver = useCallback(() => setHovered(true), [setHovered]);\n\n const handleMouseLeave = useCallback(() => setHovered(false), [setHovered]);\n\n const buttonProps = {\n customStyle: {\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'\n },\n onClick,\n label: translate('change_skill_focus'),\n 'data-name': 'change-skill-focus-button',\n icon: {\n position: 'left',\n faIcon: {\n name: 'arrows-rotate',\n backgroundColor: hovered ? primarySkinColor : convert(`color(${primarySkinColor} a(0.07))`),\n color: hovered ? '#FFFFFF' : primarySkinColor,\n size: 16\n }\n }\n };\n\n return (\n <div\n onMouseOver={handleMouseOver}\n onMouseLeave={handleMouseLeave}\n data-name=\"button-explore-wrapper\"\n >\n <ButtonLink {...buttonProps} />\n </div>\n );\n};\n\nChangeSkillFocusButton.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nChangeSkillFocusButton.propTypes = {\n onClick: PropTypes.func\n};\n\nconst FilterButton = (props, context) => {\n const {active, filter, skillTotal, onClick} = props;\n const {skin} = context;\n const primarySkinColor = getOr('#0061FF', 'common.primary', skin);\n\n const Content = useCallback(\n () => (\n <div>\n {filter}\n <span className={active ? style.skillFilterNumber : style.skillFilterNumberInActive}>\n {skillTotal}\n </span>\n </div>\n ),\n [filter, skillTotal, active]\n );\n\n const buttonProps = {\n customStyle: {\n backgroundColor: active ? convert(`color(${primarySkinColor} a(0.07))`) : '#FFFFFF',\n color: active ? primarySkinColor : '#9999A8',\n transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',\n width: 'fit-content'\n },\n onClick,\n content: <Content />,\n 'data-name': 'change-skill-focus-button'\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.propTypes = {\n active: PropTypes.bool,\n filter: PropTypes.string,\n skillTotal: PropTypes.number,\n onClick: PropTypes.func\n};\n\nconst MyLearning = (props, context) => {\n const {skills, selectedSkills, skillsStats, skillsLocales, skillsFilters, isLoading, onSkillFocusConfirm, onReviewSkill, onExploreSkill} = props;\n const {translate} = context;\n const [open, setOpen] = useState(false);\n const [selectedSkillsList, setSelectedSkillsList] = useState([...selectedSkills]);\n const [skillFocusSelected, setSkillFocusSelected] = useState(undefined);\n const [activeFilter, setActiveFilter] = useState('all');\n\n // const skillsMap = useMemo(() => {\n // const tempSkillsMap = {};\n // all.forEach(skill => (tempSkillsMap[skill.skillTitle] = {...skill, focus: false}));\n // return tempSkillsMap;\n // }, [all]);\n // const focusSkills = useMemo(() => skillList.filter(skill => skill.focus), [skillList]);\n\n const skillsReviewReady = useMemo(() => {\n return skills.filter(skill => skillsFilters[skill].review);\n }, [skills, skillsFilters]);\n\n const graphDatas = useMemo(() => {\n const data = {};\n selectedSkillsList.forEach((skill) => (data[skill] = skillsStats[skill].score));\n return data;\n }, [selectedSkillsList, skillsStats]);\n\n const graphLegends = useMemo(() => {\n const data = {};\n selectedSkillsList.forEach((skill) => (data[skill] = skillsLocales[skill]));\n return data;\n }, [selectedSkillsList, skillsLocales]);\n\n const filters = [\n {\n name: 'all',\n skills: skills,\n }, \n {\n name: 'review',\n skills: skillsReviewReady,\n }\n ]\n\n const coursedCompletedData = useMemo(\n () =>\n skillFocusSelected\n ? skillsStats[skillFocusSelected].coursesCompleted\n : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].coursesCompleted, 0),\n [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]\n );\n\n const questionsAnsweredData = useMemo(\n () =>\n skillFocusSelected\n ? skillsStats[skillFocusSelected].questionsAnswered\n : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].questionsAnswered, 0),\n [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]\n );\n\n const learningHoursData = useMemo(\n () =>\n skillFocusSelected\n ? skillsStats[skillFocusSelected].learningHours\n : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].learningHours, 0),\n [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]\n );\n\n const skillChartPaneLegends = useMemo(\n () => translate('on', {focusedSkill: skillFocusSelected ? skillsLocales[skillFocusSelected] : translate('focused_skills')}),\n [translate, skillsLocales, skillFocusSelected]\n );\n const skillChartPanelProps = [\n {\n title: translate('courses_completed'),\n value: coursedCompletedData,\n legend: skillChartPaneLegends,\n icon: {iconName: 'book-open-cover', backgroundColor: '#D9F4F7'}\n },\n {\n title: translate('questions_answered'),\n value: questionsAnsweredData,\n legend: skillChartPaneLegends,\n icon: {iconName: 'circle-question', backgroundColor: '#FFDCD1'}\n },\n {\n title: translate('learning_hours'),\n value: learningHoursData,\n legend: skillChartPaneLegends,\n icon: {iconName: 'clock', backgroundColor: '#FAD6DE'}\n }\n ];\n\n const handleOnDotClick = useCallback(\n skillRef => setSkillFocusSelected(skillRef),\n [setSkillFocusSelected]\n );\n const handleOpenSkillPicker = useCallback(() => setOpen(true), [setOpen]);\n const handleCloseSkillPicker = useCallback(() => setOpen(false), [setOpen]);\n const handleConfirmSkillPicker = useCallback(\n focusSkillList => {\n setSelectedSkillsList(focusSkillList)\n onSkillFocusConfirm(focusSkillList);\n setOpen(false);\n },\n [onSkillFocusConfirm, setSelectedSkillsList, setOpen]\n );\n\n const TooltipContent = useCallback(\n () => (\n <div>\n <div>\n <b>{translate('review_mode_tooltip_header')}</b>\n </div>\n <p>{translate('review_mode_tooltip_content')}</p>\n <ol>\n <li>{translate('Choose 1 Skill')}</li>\n <li>{translate('Answer 5 Questions')}</li>\n <li>{translate('You have Infinite Lives')}</li>\n <li>{translate('Get it all right')}</li>\n </ol>\n </div>\n ),\n [translate]\n );\n\n return (\n <div className={style.container}>\n <SkillPickerModal\n skills={skills}\n selectedSkills={selectedSkillsList}\n skillsLocales={skillsLocales}\n isOpen={open}\n isLoading={isLoading}\n onCancel={handleCloseSkillPicker}\n onConfirm={handleConfirmSkillPicker}\n onClose={handleCloseSkillPicker}\n />\n <div className={style.skillFocusContainer}>\n <header className={style.skillFocusHeader}>\n <div className={style.skillFocusHeaderIcon}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n <div className={style.skillFocusHeaderContent}>\n <div className={style.skillFocusHeaderTitle}>{translate('skill_focus')}</div>\n <div className={style.skillFocusHeaderDescription}>\n {translate('skills_focus_description')}\n </div>\n </div>\n {selectedSkillsList.length > 0 ? (\n <ChangeSkillFocusButton onClick={handleOpenSkillPicker} />\n ) : null}\n </header>\n {selectedSkillsList.length > 0 ? (\n <div className={style.skillFocusContent}>\n <div className={style.radarContainer}>\n <ResponsiveLearningProfileRadarChart\n totalDataset={1}\n height={424}\n width={680}\n data={graphDatas}\n legend={graphLegends}\n margin={{top: 80}}\n onClick={handleOnDotClick}\n colors={[\n {\n gradient: {\n fill: ['#0062ffff', '#8000ff85'],\n stroke: ['#0062ffff', '#8000FF']\n },\n percentage: {\n color: '#0061FF',\n background:\n 'linear-gradient(180deg, rgba(0, 97, 255, 0.10) 0%, rgba(147, 107, 255, 0.10) 100%)'\n },\n label: {\n color: '#020202ff'\n }\n }\n ]}\n />\n </div>\n <SkillsChartSideInformationPanel sidePanelItems={skillChartPanelProps} />\n </div>\n ) : (\n <div className={style.skillFocusEmpty}>\n <Picture\n className={style.img}\n src={\n 'https://t4.ftcdn.net/jpg/01/43/23/83/360_F_143238306_lh0ap42wgot36y44WybfQpvsJB5A1CHc.jpg'\n }\n alt={'demo'}\n />\n <div className={style.skillFocusEmptyTitle}>{translate('skill_focus_empty_title')}</div>\n <div className={style.skillFocusEmptyDescription}>\n {translate('skills_focus_empty_description')}\n </div>\n <ButtonLink\n customStyle={{\n width: '168px'\n }}\n type={'primary'}\n onClick={handleOpenSkillPicker}\n label={translate('choose_your_focus')}\n />\n </div>\n )}\n </div>\n <header className={style.skillListHeader}>\n <div className={style.skillListHeaderIcon}>\n <Icon\n iconName=\"dumbbell\"\n backgroundColor=\"#FFF9D1\"\n size={{faSize: 20, wrapperSize: 48}}\n />\n </div>\n <div className={style.skillListHeaderContent}>\n <div className={style.skillListHeaderTitle}>{translate('skills')}</div>\n <div className={style.skillListHeaderDescription}>\n {translate('Explore or review skills')}\n <ToolTip\n fontSize={12}\n iconContainerClassName={style.infoIconTooltip}\n tooltipClassName={style.tooltip}\n TooltipContent={TooltipContent}\n closeToolTipInformationTextAriaLabel={translate(\n 'Press the escape key to close the information text'\n )}\n />\n </div>\n </div>\n </header>\n <div className={style.skillFilterContainer}>\n {filters.map((filter, index) => {\n function handleFilterClick() {\n setActiveFilter(filter.name);\n }\n\n return (\n <div key={index}>\n <FilterButton\n active={activeFilter === filter.name}\n filter={translate(filter.name)}\n skillTotal={filter.skills.length}\n onClick={handleFilterClick}\n />\n </div>\n );\n })}\n </div>\n <div className={style.skillListContainer}>\n {skills.map((skill, index) => {\n if (activeFilter === 'review' && !skillsFilters[skill].review) return null;\n function handleReviewSkill() {\n onReviewSkill(skill);\n }\n function handleExploreSkill() {\n onExploreSkill(skill);\n }\n return (\n <div key={index}>\n <LearnerSkillCard\n skillTitle={skillsLocales[skill]}\n focus={selectedSkills.includes(skill)}\n metrics={{\n skillCourses: skillsStats[skill].courses,\n skillQuestions: skillsStats[skill].questionsAnswered,\n completedCourses: skillsStats[skill].coursesCompleted\n }}\n review={skillsFilters[skill].review}\n onReviewClick={handleReviewSkill}\n onExploreClick={handleExploreSkill}\n />\n </div>\n )\n })}\n </div>\n </div>\n );\n};\n\nMyLearning.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nMyLearning.propTypes = {\n skills: PropTypes.arrayOf(PropTypes.string),\n selectedSkills: PropTypes.arrayOf(PropTypes.string),\n skillsStats: PropTypes.objectOf(\n PropTypes.shape({\n score: PropTypes.number,\n courses: PropTypes.number,\n coursesCompleted: PropTypes.number,\n questionsAnswered: PropTypes.number,\n learningHours: PropTypes.number,\n })\n ),\n skillsFilters: PropTypes.objectOf(\n PropTypes.shape({\n review: PropTypes.boolean,\n })\n ),\n skillsLocales: PropTypes.objectOf(PropTypes.string),\n isLoading: PropTypes.bool,\n onSkillFocusConfirm: PropTypes.func,\n onReviewSkill: PropTypes.func,\n onExploreSkill: PropTypes.func\n};\n\nexport default MyLearning;\n"],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ @value colors: "../../variables/colors.css";
2
+ @value breakpoints: "../../variables/breakpoints.css";
3
+ @value tablet from breakpoints;
4
+ @value mobile from breakpoints;
5
+ @value cm_grey_100 from colors;
6
+ @value cm_grey_500 from colors;
7
+
8
+ .container {
9
+ font-family: "Gilroy";
10
+ font-style: normal;
11
+ margin-top: 48px;
12
+ margin-bottom: 48px;
13
+ margin-left: auto;
14
+ margin-right: auto;
15
+ position: relative;
16
+ box-sizing: border-box;
17
+ height: 100%;
18
+ width: 100%;
19
+ max-width: 1080px;
20
+ }
21
+
22
+ .skillFocusContainer {
23
+ border-radius: 16px;
24
+ border: 1px solid cm_grey_100;
25
+ overflow: hidden;
26
+ margin-bottom: 40px;
27
+ }
28
+
29
+ .skillFocusHeader,
30
+ .skillListHeader {
31
+ padding: 24px;
32
+ display: flex;
33
+ position: relative;
34
+ border-bottom: 1px solid cm_grey_100;
35
+ }
36
+
37
+ .skillFocusHeaderIcon,
38
+ .skillListHeaderIcon {
39
+ border-radius: 12px;
40
+ overflow: hidden;
41
+ margin-right: 12px;
42
+ }
43
+
44
+ .skillFocusHeaderContent,
45
+ .skillListHeaderContent {
46
+ flex: 1;
47
+ }
48
+
49
+ .skillFocusHeaderTitle,
50
+ .skillListHeaderTitle {
51
+ font-size: 18px;
52
+ font-weight: 600;
53
+ line-height: 24px;
54
+ }
55
+
56
+ .skillFocusHeaderDescription,
57
+ .skillListHeaderDescription {
58
+ font-size: 14px;
59
+ font-weight: 500;
60
+ line-height: 20px;
61
+ color: cm_grey_500;
62
+ display: flex;
63
+ align-items: center;
64
+ }
65
+
66
+ .skillFocusEmpty {
67
+ display: flex;
68
+ flex-direction: column;
69
+ align-items: center;
70
+ justify-content: center;
71
+ padding: 72px;
72
+ }
73
+
74
+ .skillFocusEmptyTitle {
75
+ font-size: 20px;
76
+ font-weight: 700;
77
+ line-height: 28px;
78
+ margin-bottom: 8px;
79
+ }
80
+
81
+ .skillFocusEmptyDescription {
82
+ width: 502px;
83
+ text-align: center;
84
+ font-size: 16px;
85
+ font-weight: 500;
86
+ line-height: 22px;
87
+ margin-bottom: 32px;
88
+ }
89
+
90
+ .img {
91
+ width: 204px;
92
+ height: 200px;
93
+ margin-bottom: 32px;
94
+ border-radius: 50%;
95
+ }
96
+
97
+ .skillFocusContent {
98
+ display: flex;
99
+ padding: 24px;
100
+ }
101
+
102
+ .radarContainer {
103
+ width: 700px;
104
+ height: 444px;
105
+ }
106
+
107
+ .skillFilterContainer {
108
+ display: flex;
109
+ align-items: center;
110
+ gap: 8px;
111
+ margin-bottom: 32px;
112
+ }
113
+
114
+ .skillFilterNumber,
115
+ .skillFilterNumberInActive {
116
+ border-radius: 50%;
117
+ background-color: #D6E6FF;
118
+ color: #0061FF;
119
+ padding: 2px 4px;
120
+ margin-left: 8px;
121
+ font-size: 10px;
122
+ font-weight: 600;
123
+ line-height: 12px;
124
+ }
125
+
126
+ .skillFilterNumberInActive {
127
+ background-color: #EAEAEB;
128
+ color: #515161;
129
+ }
130
+
131
+ .infoIconTooltip {
132
+ background-color: transparent;
133
+ }
134
+
135
+ .tooltip {
136
+ padding: 8px 12px;
137
+ width: 238px;
138
+ color: #FFF;
139
+ font-size: 12px;
140
+ font-style: normal;
141
+ line-height: 16px;
142
+ right: -100px;
143
+
144
+ ol {
145
+ padding: 14px;
146
+ }
147
+ }
148
+
149
+ .skillListHeader {
150
+ padding: 24px 0;
151
+ border: none;
152
+ }
153
+
154
+ .skillListContainer {
155
+ display: flex;
156
+ flex-wrap: wrap;
157
+ gap: 16px;
158
+ }
159
+
160
+ @media mobile {
161
+ .skillFocusContent {
162
+ flex-direction: column;
163
+ }
164
+
165
+ .radarContainer {
166
+ width: 370px;
167
+ height: 280px;
168
+ margin-bottom:48px;
169
+ }
170
+
171
+ .skillFilterContainer {
172
+ overflow-x: auto;
173
+ }
174
+
175
+ .skillListContainer {
176
+ align-items: center;
177
+ justify-content: center;
178
+ }
179
+ }
@@ -1,9 +1,9 @@
1
- declare type Colors = {
2
- gray: string;
3
- negative: string;
4
- positive: string;
5
- cm_grey_800: string;
1
+ export declare const COLORS: {
2
+ readonly gray: "#EAEAEB";
3
+ readonly negative: "#ed3436";
4
+ readonly positive: "#35CC7F";
5
+ readonly cm_grey_800: "#171721";
6
+ readonly cm_primary_blue: "#0061FF";
6
7
  };
7
- export declare const COLORS: Colors;
8
- export {};
8
+ export declare type Colors = typeof COLORS;
9
9
  //# sourceMappingURL=colors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/variables/colors.ts"],"names":[],"mappings":"AAAA,aAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAKpB,CAAC"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/variables/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AAEX,oBAAY,MAAM,GAAG,OAAO,MAAM,CAAC"}
@@ -2,6 +2,7 @@ export const COLORS = {
2
2
  gray: '#EAEAEB',
3
3
  negative: '#ed3436',
4
4
  positive: '#35CC7F',
5
- cm_grey_800: '#171721'
5
+ cm_grey_800: '#171721',
6
+ cm_primary_blue: '#0061FF'
6
7
  };
7
8
  //# sourceMappingURL=colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","names":["COLORS","gray","negative","positive","cm_grey_800"],"sources":["../../src/variables/colors.ts"],"sourcesContent":["type Colors = {\n gray: string;\n negative: string;\n positive: string;\n cm_grey_800: string;\n};\n\nexport const COLORS: Colors = {\n gray: '#EAEAEB',\n negative: '#ed3436',\n positive: '#35CC7F',\n cm_grey_800: '#171721'\n};\n"],"mappings":"AAOA,OAAO,MAAMA,MAAc,GAAG;EAC5BC,IAAI,EAAE,SADsB;EAE5BC,QAAQ,EAAE,SAFkB;EAG5BC,QAAQ,EAAE,SAHkB;EAI5BC,WAAW,EAAE;AAJe,CAAvB"}
1
+ {"version":3,"file":"colors.js","names":["COLORS","gray","negative","positive","cm_grey_800","cm_primary_blue"],"sources":["../../src/variables/colors.ts"],"sourcesContent":["export const COLORS = {\n gray: '#EAEAEB',\n negative: '#ed3436',\n positive: '#35CC7F',\n cm_grey_800: '#171721',\n cm_primary_blue: '#0061FF'\n} as const;\n\nexport type Colors = typeof COLORS;\n"],"mappings":"AAAA,OAAO,MAAMA,MAAM,GAAG;EACpBC,IAAI,EAAE,SADc;EAEpBC,QAAQ,EAAE,SAFU;EAGpBC,QAAQ,EAAE,SAHU;EAIpBC,WAAW,EAAE,SAJO;EAKpBC,eAAe,EAAE;AALG,CAAf"}
@@ -1 +1 @@
1
- {"version":3,"file":"theme.native.d.ts","sourceRoot":"","sources":["../../src/variables/theme.native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAGvC,oBAAY,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5F,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,oBAAY,MAAM,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QACjC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QAClC,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/B,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/B,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;KACjC,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,KAkEnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"theme.native.d.ts","sourceRoot":"","sources":["../../src/variables/theme.native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAGvC,oBAAY,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5F,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAIhD,oBAAY,MAAM,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QACjC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QAClC,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9B,SAAS,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/B,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/B,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;KACjC,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,KAkEnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,5 +1,8 @@
1
1
  import { COLORS } from './colors';
2
2
  export const HTML_ANCHOR_TEXT_COLOR = '#002BDB';
3
+ const {
4
+ cm_primary_blue
5
+ } = COLORS;
3
6
  const defaultTheme = {
4
7
  colors: {
5
8
  border: 'rgba(0, 0, 0, 0.1)',
@@ -16,7 +19,7 @@ const defaultTheme = {
16
19
  primary: '#06265B',
17
20
  secondary: '#FFFFFF'
18
21
  },
19
- cta: '#0061FF',
22
+ cta: cm_primary_blue,
20
23
  negative: COLORS.negative,
21
24
  positive: COLORS.positive,
22
25
  white: '#FFFFFF',