@coorpacademy/components 11.32.0 → 11.32.1-alpha.19

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 (165) 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 +6 -5
  4. package/es/atom/button-link/index.js.map +1 -1
  5. package/es/atom/button-link/types.d.ts +3 -0
  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 +1 -1
  10. package/es/atom/chip/index.d.ts.map +1 -1
  11. package/es/atom/chip/index.js +2 -6
  12. package/es/atom/chip/index.js.map +1 -1
  13. package/es/atom/chip/style.css +2 -2
  14. package/es/atom/icon/index.d.ts +1 -1
  15. package/es/atom/icon/index.d.ts.map +1 -1
  16. package/es/atom/icon/index.js +6 -4
  17. package/es/atom/icon/index.js.map +1 -1
  18. package/es/molecule/base-modal/index.d.ts +33 -0
  19. package/es/molecule/base-modal/index.d.ts.map +1 -0
  20. package/es/molecule/base-modal/index.js +142 -0
  21. package/es/molecule/base-modal/index.js.map +1 -0
  22. package/es/molecule/base-modal/style.css +125 -0
  23. package/es/molecule/cm-popin/types.d.ts +2 -0
  24. package/es/molecule/cm-popin/types.d.ts.map +1 -1
  25. package/es/molecule/expandible-actionable-table/index.d.ts +1 -0
  26. package/es/molecule/expandible-actionable-table/index.d.ts.map +1 -1
  27. package/es/molecule/expandible-actionable-table/types.d.ts +1 -0
  28. package/es/molecule/expandible-actionable-table/types.d.ts.map +1 -1
  29. package/es/molecule/learner-skill-card/index.d.ts +2 -0
  30. package/es/molecule/learner-skill-card/index.d.ts.map +1 -1
  31. package/es/molecule/learner-skill-card/index.js +9 -4
  32. package/es/molecule/learner-skill-card/index.js.map +1 -1
  33. package/es/molecule/learning-profile-radar-chart/index.d.ts +1 -1
  34. package/es/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
  35. package/es/molecule/learning-profile-radar-chart/index.js +20 -11
  36. package/es/molecule/learning-profile-radar-chart/index.js.map +1 -1
  37. package/es/molecule/learning-profile-radar-chart/types.d.ts +7 -1
  38. package/es/molecule/learning-profile-radar-chart/types.d.ts.map +1 -1
  39. package/es/molecule/learning-profile-radar-chart/types.js.map +1 -1
  40. package/es/molecule/skill-picker-modal/index.d.ts +23 -0
  41. package/es/molecule/skill-picker-modal/index.d.ts.map +1 -0
  42. package/es/molecule/skill-picker-modal/index.js +138 -0
  43. package/es/molecule/skill-picker-modal/index.js.map +1 -0
  44. package/es/molecule/skill-picker-modal/style.css +28 -0
  45. package/es/molecule/skills-chart-side-information-item/index.d.ts +1 -1
  46. package/es/molecule/skills-chart-side-information-item/index.js +1 -1
  47. package/es/molecule/skills-chart-side-information-item/index.js.map +1 -1
  48. package/es/molecule/skills-chart-side-information-panel/index.d.ts +1 -1
  49. package/es/molecule/skills-chart-side-information-panel/style.css +18 -9
  50. package/es/organism/list-items/index.d.ts +2 -0
  51. package/es/organism/setup-header/index.d.ts +4 -0
  52. package/es/organism/wizard-contents/index.d.ts +3 -0
  53. package/es/template/app-player/loading/index.d.ts +2 -0
  54. package/es/template/app-player/player/index.d.ts +4 -0
  55. package/es/template/app-player/player/slides/index.d.ts +2 -0
  56. package/es/template/app-player/player/slides/index.d.ts.map +1 -1
  57. package/es/template/app-player/popin-correction/index.d.ts +2 -0
  58. package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
  59. package/es/template/app-player/popin-end/index.d.ts +2 -0
  60. package/es/template/app-review/index.d.ts +2 -0
  61. package/es/template/app-review/index.d.ts.map +1 -1
  62. package/es/template/app-review/player/prop-types.d.ts +2 -0
  63. package/es/template/app-review/player/prop-types.d.ts.map +1 -1
  64. package/es/template/app-review/prop-types.d.ts +2 -0
  65. package/es/template/app-review/prop-types.d.ts.map +1 -1
  66. package/es/template/back-office/brand-create/index.d.ts +4 -0
  67. package/es/template/back-office/brand-create/index.d.ts.map +1 -1
  68. package/es/template/back-office/brand-list/index.d.ts +4 -0
  69. package/es/template/back-office/brand-list/index.d.ts.map +1 -1
  70. package/es/template/back-office/brand-update/index.d.ts +11 -0
  71. package/es/template/back-office/dashboard-preview/index.d.ts +4 -0
  72. package/es/template/back-office/layout/index.d.ts +4 -0
  73. package/es/template/back-office/layout/index.d.ts.map +1 -1
  74. package/es/template/common/dashboard/index.d.ts +4 -0
  75. package/es/template/common/search-page/index.d.ts +2 -0
  76. package/es/template/external-course/index.d.ts +2 -0
  77. package/es/template/my-learning/index.d.ts +34 -0
  78. package/es/template/my-learning/index.d.ts.map +1 -0
  79. package/es/template/my-learning/index.js +352 -0
  80. package/es/template/my-learning/index.js.map +1 -0
  81. package/es/template/my-learning/style.css +196 -0
  82. package/lib/atom/button-link/index.d.ts +1 -0
  83. package/lib/atom/button-link/index.d.ts.map +1 -1
  84. package/lib/atom/button-link/index.js +6 -5
  85. package/lib/atom/button-link/index.js.map +1 -1
  86. package/lib/atom/button-link/types.d.ts +3 -0
  87. package/lib/atom/button-link/types.d.ts.map +1 -1
  88. package/lib/atom/button-link/types.js +1 -0
  89. package/lib/atom/button-link/types.js.map +1 -1
  90. package/lib/atom/chip/index.d.ts +1 -1
  91. package/lib/atom/chip/index.d.ts.map +1 -1
  92. package/lib/atom/chip/index.js +3 -6
  93. package/lib/atom/chip/index.js.map +1 -1
  94. package/lib/atom/chip/style.css +2 -2
  95. package/lib/atom/icon/index.d.ts +1 -1
  96. package/lib/atom/icon/index.d.ts.map +1 -1
  97. package/lib/atom/icon/index.js +6 -4
  98. package/lib/atom/icon/index.js.map +1 -1
  99. package/lib/molecule/base-modal/index.d.ts +33 -0
  100. package/lib/molecule/base-modal/index.d.ts.map +1 -0
  101. package/lib/molecule/base-modal/index.js +158 -0
  102. package/lib/molecule/base-modal/index.js.map +1 -0
  103. package/lib/molecule/base-modal/style.css +125 -0
  104. package/lib/molecule/cm-popin/types.d.ts +2 -0
  105. package/lib/molecule/cm-popin/types.d.ts.map +1 -1
  106. package/lib/molecule/expandible-actionable-table/index.d.ts +1 -0
  107. package/lib/molecule/expandible-actionable-table/index.d.ts.map +1 -1
  108. package/lib/molecule/expandible-actionable-table/types.d.ts +1 -0
  109. package/lib/molecule/expandible-actionable-table/types.d.ts.map +1 -1
  110. package/lib/molecule/learner-skill-card/index.d.ts +2 -0
  111. package/lib/molecule/learner-skill-card/index.d.ts.map +1 -1
  112. package/lib/molecule/learner-skill-card/index.js +9 -4
  113. package/lib/molecule/learner-skill-card/index.js.map +1 -1
  114. package/lib/molecule/learning-profile-radar-chart/index.d.ts +1 -1
  115. package/lib/molecule/learning-profile-radar-chart/index.d.ts.map +1 -1
  116. package/lib/molecule/learning-profile-radar-chart/index.js +20 -11
  117. package/lib/molecule/learning-profile-radar-chart/index.js.map +1 -1
  118. package/lib/molecule/learning-profile-radar-chart/types.d.ts +7 -1
  119. package/lib/molecule/learning-profile-radar-chart/types.d.ts.map +1 -1
  120. package/lib/molecule/learning-profile-radar-chart/types.js.map +1 -1
  121. package/lib/molecule/skill-picker-modal/index.d.ts +23 -0
  122. package/lib/molecule/skill-picker-modal/index.d.ts.map +1 -0
  123. package/lib/molecule/skill-picker-modal/index.js +156 -0
  124. package/lib/molecule/skill-picker-modal/index.js.map +1 -0
  125. package/lib/molecule/skill-picker-modal/style.css +28 -0
  126. package/lib/molecule/skills-chart-side-information-item/index.d.ts +1 -1
  127. package/lib/molecule/skills-chart-side-information-item/index.js +1 -1
  128. package/lib/molecule/skills-chart-side-information-item/index.js.map +1 -1
  129. package/lib/molecule/skills-chart-side-information-panel/index.d.ts +1 -1
  130. package/lib/molecule/skills-chart-side-information-panel/style.css +18 -9
  131. package/lib/organism/list-items/index.d.ts +2 -0
  132. package/lib/organism/setup-header/index.d.ts +4 -0
  133. package/lib/organism/wizard-contents/index.d.ts +3 -0
  134. package/lib/template/app-player/loading/index.d.ts +2 -0
  135. package/lib/template/app-player/player/index.d.ts +4 -0
  136. package/lib/template/app-player/player/slides/index.d.ts +2 -0
  137. package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
  138. package/lib/template/app-player/popin-correction/index.d.ts +2 -0
  139. package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
  140. package/lib/template/app-player/popin-end/index.d.ts +2 -0
  141. package/lib/template/app-review/index.d.ts +2 -0
  142. package/lib/template/app-review/index.d.ts.map +1 -1
  143. package/lib/template/app-review/player/prop-types.d.ts +2 -0
  144. package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
  145. package/lib/template/app-review/prop-types.d.ts +2 -0
  146. package/lib/template/app-review/prop-types.d.ts.map +1 -1
  147. package/lib/template/back-office/brand-create/index.d.ts +4 -0
  148. package/lib/template/back-office/brand-create/index.d.ts.map +1 -1
  149. package/lib/template/back-office/brand-list/index.d.ts +4 -0
  150. package/lib/template/back-office/brand-list/index.d.ts.map +1 -1
  151. package/lib/template/back-office/brand-update/index.d.ts +11 -0
  152. package/lib/template/back-office/dashboard-preview/index.d.ts +4 -0
  153. package/lib/template/back-office/layout/index.d.ts +4 -0
  154. package/lib/template/back-office/layout/index.d.ts.map +1 -1
  155. package/lib/template/common/dashboard/index.d.ts +4 -0
  156. package/lib/template/common/search-page/index.d.ts +2 -0
  157. package/lib/template/external-course/index.d.ts +2 -0
  158. package/lib/template/my-learning/index.d.ts +34 -0
  159. package/lib/template/my-learning/index.d.ts.map +1 -0
  160. package/lib/template/my-learning/index.js +373 -0
  161. package/lib/template/my-learning/index.js.map +1 -0
  162. package/lib/template/my-learning/style.css +196 -0
  163. package/locales/en/global.json +25 -0
  164. package/locales/sl/global.json +1 -1
  165. package/package.json +3 -3
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var _getOr2 = _interopRequireDefault(require("lodash/fp/getOr"));
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _cssColorFunction = require("css-color-function");
13
+
14
+ var _style = _interopRequireDefault(require("./style.css"));
15
+
16
+ var _provider = _interopRequireDefault(require("../../atom/provider"));
17
+
18
+ var _icon = _interopRequireDefault(require("../../atom/icon"));
19
+
20
+ var _picture = _interopRequireDefault(require("../../atom/picture"));
21
+
22
+ var _buttonLink = _interopRequireDefault(require("../../atom/button-link"));
23
+
24
+ var _tooltip = _interopRequireDefault(require("../../atom/tooltip"));
25
+
26
+ var _skillPickerModal = _interopRequireDefault(require("../../molecule/skill-picker-modal"));
27
+
28
+ var _learningProfileRadarChart = _interopRequireDefault(require("../../molecule/learning-profile-radar-chart"));
29
+
30
+ var _skillsChartSideInformationPanel = _interopRequireDefault(require("../../molecule/skills-chart-side-information-panel"));
31
+
32
+ var _learnerSkillCard = _interopRequireDefault(require("../../molecule/learner-skill-card"));
33
+
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
+
40
+ const ChangeSkillFocusButton = (props, context) => {
41
+ const [hovered, setHovered] = (0, _react.useState)(false);
42
+ const {
43
+ onClick
44
+ } = props;
45
+ const {
46
+ skin,
47
+ translate
48
+ } = context;
49
+ const primarySkinColor = (0, _getOr2.default)('#0061FF', 'common.primary', skin);
50
+ const handleMouseOver = (0, _react.useCallback)(() => setHovered(true), [setHovered]);
51
+ const handleMouseLeave = (0, _react.useCallback)(() => setHovered(false), [setHovered]);
52
+ const buttonProps = {
53
+ customStyle: {
54
+ backgroundColor: hovered ? primarySkinColor : (0, _cssColorFunction.convert)(`color(${primarySkinColor} a(0.07))`),
55
+ color: hovered ? '#FFFFFF' : primarySkinColor,
56
+ transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out'
57
+ },
58
+ onClick,
59
+ label: translate('change_skill_focus'),
60
+ 'data-name': 'change-skill-focus-button',
61
+ icon: {
62
+ position: 'left',
63
+ faIcon: {
64
+ name: 'arrows-rotate',
65
+ backgroundColor: hovered ? primarySkinColor : (0, _cssColorFunction.convert)(`color(${primarySkinColor} a(0.07))`),
66
+ color: hovered ? '#FFFFFF' : primarySkinColor,
67
+ size: 16
68
+ }
69
+ }
70
+ };
71
+ return /*#__PURE__*/_react.default.createElement("div", {
72
+ onMouseOver: handleMouseOver,
73
+ onMouseLeave: handleMouseLeave,
74
+ "data-name": "button-explore-wrapper"
75
+ }, /*#__PURE__*/_react.default.createElement(_buttonLink.default, buttonProps));
76
+ };
77
+
78
+ ChangeSkillFocusButton.contextTypes = {
79
+ translate: _provider.default.childContextTypes.translate
80
+ };
81
+ ChangeSkillFocusButton.propTypes = process.env.NODE_ENV !== "production" ? {
82
+ onClick: _propTypes.default.func
83
+ } : {};
84
+
85
+ const FilterButton = (props, context) => {
86
+ const {
87
+ active,
88
+ filter,
89
+ skillTotal,
90
+ onClick
91
+ } = props;
92
+ const {
93
+ skin,
94
+ translate
95
+ } = context;
96
+ const primarySkinColor = (0, _getOr2.default)('#0061FF', 'common.primary', skin);
97
+ const Content = (0, _react.useCallback)(() => /*#__PURE__*/_react.default.createElement("div", null, filter, /*#__PURE__*/_react.default.createElement("span", {
98
+ className: active ? _style.default.skillFilterNumber : _style.default.skillFilterNumberInActive
99
+ }, skillTotal)), [filter, skillTotal, active]);
100
+ const buttonProps = {
101
+ customStyle: {
102
+ backgroundColor: active ? (0, _cssColorFunction.convert)(`color(${primarySkinColor} a(0.07))`) : '#FFFFFF',
103
+ color: active ? primarySkinColor : '#9999A8',
104
+ transition: 'background-color 0.15s ease-in-out, color 0.15s ease-in-out',
105
+ width: filter === translate('review') ? '198px' : 'fit-content'
106
+ },
107
+ onClick,
108
+ content: /*#__PURE__*/_react.default.createElement(Content, null),
109
+ 'data-name': 'change-skill-focus-button'
110
+ };
111
+ return /*#__PURE__*/_react.default.createElement(_buttonLink.default, buttonProps);
112
+ };
113
+
114
+ FilterButton.contextTypes = {
115
+ translate: _provider.default.childContextTypes.translate
116
+ };
117
+ FilterButton.propTypes = process.env.NODE_ENV !== "production" ? {
118
+ active: _propTypes.default.bool,
119
+ filter: _propTypes.default.string,
120
+ skillTotal: _propTypes.default.number,
121
+ onClick: _propTypes.default.func
122
+ } : {};
123
+
124
+ const MyLearning = (props, context) => {
125
+ const {
126
+ skills,
127
+ selectedSkills,
128
+ skillsStats,
129
+ skillsLocales,
130
+ skillsFilters,
131
+ isLoading,
132
+ onSkillFocusConfirm,
133
+ onReviewSkill,
134
+ onExploreSkill
135
+ } = props;
136
+ const {
137
+ translate
138
+ } = context;
139
+ const [open, setOpen] = (0, _react.useState)(false);
140
+ const [selectedSkillsList, setSelectedSkillsList] = (0, _react.useState)([...selectedSkills]);
141
+ const [skillFocusSelected, setSkillFocusSelected] = (0, _react.useState)(undefined);
142
+ const [activeFilter, setActiveFilter] = (0, _react.useState)('all');
143
+ const skillsReviewReady = (0, _react.useMemo)(() => {
144
+ return skills.filter(skill => skillsFilters[skill].review);
145
+ }, [skills, skillsFilters]);
146
+ const graphDatas = (0, _react.useMemo)(() => {
147
+ const data = {};
148
+ selectedSkillsList.forEach(skill => data[skill] = skillsStats[skill].score);
149
+ return data;
150
+ }, [selectedSkillsList, skillsStats]);
151
+ const graphLegends = (0, _react.useMemo)(() => {
152
+ const data = {};
153
+ selectedSkillsList.forEach(skill => data[skill] = skillsLocales[skill]);
154
+ return data;
155
+ }, [selectedSkillsList, skillsLocales]);
156
+ const filters = [{
157
+ name: 'all',
158
+ skills: skills
159
+ }, {
160
+ name: 'review',
161
+ skills: skillsReviewReady
162
+ }];
163
+ const coursedCompletedData = (0, _react.useMemo)(() => skillFocusSelected ? skillsStats[skillFocusSelected].coursesCompleted : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].coursesCompleted, 0), [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]);
164
+ const questionsAnsweredData = (0, _react.useMemo)(() => skillFocusSelected ? skillsStats[skillFocusSelected].questionsAnswered : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].questionsAnswered, 0), [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]);
165
+ const learningHoursData = (0, _react.useMemo)(() => skillFocusSelected ? skillsStats[skillFocusSelected].learningHours : selectedSkillsList.reduce((sum, skill) => sum + skillsStats[skill].learningHours, 0), [skillFocusSelected, skillsStats, selectedSkillsList, skillFocusSelected]);
166
+ const skillChartPaneLegends = (0, _react.useMemo)(() => translate('on', {
167
+ focusedSkill: skillFocusSelected ? skillsLocales[skillFocusSelected] : translate('focused_skills')
168
+ }), [translate, skillsLocales, skillFocusSelected]);
169
+ const skillChartPanelProps = [{
170
+ title: translate('courses_completed'),
171
+ value: coursedCompletedData,
172
+ legend: skillChartPaneLegends,
173
+ icon: {
174
+ iconName: 'book-open-cover',
175
+ backgroundColor: '#D9F4F7'
176
+ }
177
+ }, {
178
+ title: translate('questions_answered'),
179
+ value: questionsAnsweredData,
180
+ legend: skillChartPaneLegends,
181
+ icon: {
182
+ iconName: 'circle-question',
183
+ backgroundColor: '#FFDCD1'
184
+ }
185
+ }, {
186
+ title: translate('learning_hours'),
187
+ value: learningHoursData,
188
+ legend: skillChartPaneLegends,
189
+ icon: {
190
+ iconName: 'clock',
191
+ backgroundColor: '#FAD6DE'
192
+ }
193
+ }];
194
+ const handleOnDotClick = (0, _react.useCallback)(skillRef => setSkillFocusSelected(skillRef), [setSkillFocusSelected]);
195
+ const handleOpenSkillPicker = (0, _react.useCallback)(() => setOpen(true), [setOpen]);
196
+ const handleCloseSkillPicker = (0, _react.useCallback)(() => setOpen(false), [setOpen]);
197
+ const handleConfirmSkillPicker = (0, _react.useCallback)(focusSkillList => {
198
+ setSelectedSkillsList(focusSkillList);
199
+ onSkillFocusConfirm(focusSkillList);
200
+ setOpen(false);
201
+ }, [onSkillFocusConfirm, setSelectedSkillsList, setOpen]);
202
+ const TooltipContent = (0, _react.useCallback)(() => /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("b", null, translate('review_mode_tooltip_header'))), /*#__PURE__*/_react.default.createElement("p", null, translate('review_mode_tooltip_content')), /*#__PURE__*/_react.default.createElement("ol", null, /*#__PURE__*/_react.default.createElement("li", null, translate('Choose 1 Skill')), /*#__PURE__*/_react.default.createElement("li", null, translate('Answer 5 Questions')), /*#__PURE__*/_react.default.createElement("li", null, translate('You have Infinite Lives')), /*#__PURE__*/_react.default.createElement("li", null, translate('Get it all right')))), [translate]);
203
+ return /*#__PURE__*/_react.default.createElement("div", {
204
+ className: _style.default.container
205
+ }, /*#__PURE__*/_react.default.createElement(_skillPickerModal.default, {
206
+ skills: skills,
207
+ selectedSkills: selectedSkillsList,
208
+ skillsLocales: skillsLocales,
209
+ isOpen: open,
210
+ isLoading: isLoading,
211
+ onCancel: handleCloseSkillPicker,
212
+ onConfirm: handleConfirmSkillPicker,
213
+ onClose: handleCloseSkillPicker
214
+ }), /*#__PURE__*/_react.default.createElement("div", {
215
+ className: _style.default.skillFocusContainer
216
+ }, /*#__PURE__*/_react.default.createElement("header", {
217
+ className: _style.default.skillFocusHeader
218
+ }, /*#__PURE__*/_react.default.createElement("div", {
219
+ className: _style.default.skillFocusHeaderWrapper
220
+ }, /*#__PURE__*/_react.default.createElement("div", {
221
+ className: _style.default.skillFocusHeaderIcon
222
+ }, /*#__PURE__*/_react.default.createElement(_icon.default, {
223
+ iconName: "bullseye-arrow",
224
+ backgroundColor: "#DDD1FF",
225
+ borderRadius: "12px",
226
+ size: {
227
+ faSize: 20,
228
+ wrapperSize: 48
229
+ }
230
+ })), /*#__PURE__*/_react.default.createElement("div", {
231
+ className: _style.default.skillFocusHeaderContent
232
+ }, /*#__PURE__*/_react.default.createElement("div", {
233
+ className: _style.default.skillFocusHeaderTitle
234
+ }, translate('skill_focus')), /*#__PURE__*/_react.default.createElement("div", {
235
+ className: _style.default.skillFocusHeaderDescription
236
+ }, translate('skills_focus_description')))), selectedSkillsList.length > 0 ? /*#__PURE__*/_react.default.createElement(ChangeSkillFocusButton, {
237
+ onClick: handleOpenSkillPicker
238
+ }) : null), selectedSkillsList.length > 0 ? /*#__PURE__*/_react.default.createElement("div", {
239
+ className: _style.default.skillFocusContent
240
+ }, /*#__PURE__*/_react.default.createElement("div", {
241
+ className: _style.default.radarContainer
242
+ }, /*#__PURE__*/_react.default.createElement(_learningProfileRadarChart.default, {
243
+ totalDataset: 1,
244
+ height: 424,
245
+ width: 680,
246
+ data: graphDatas,
247
+ legend: graphLegends,
248
+ onClick: handleOnDotClick,
249
+ colors: [{
250
+ gradient: {
251
+ fill: ['#0062ffff', '#8000ff85'],
252
+ stroke: ['#0062ffff', '#8000FF']
253
+ },
254
+ percentage: {
255
+ color: '#0061FF',
256
+ background: 'linear-gradient(180deg, rgba(0, 97, 255, 0.10) 0%, rgba(147, 107, 255, 0.10) 100%)'
257
+ },
258
+ label: {
259
+ color: '#020202ff'
260
+ }
261
+ }]
262
+ })), /*#__PURE__*/_react.default.createElement(_skillsChartSideInformationPanel.default, {
263
+ sidePanelItems: skillChartPanelProps
264
+ })) : /*#__PURE__*/_react.default.createElement("div", {
265
+ className: _style.default.skillFocusEmpty
266
+ }, /*#__PURE__*/_react.default.createElement(_picture.default, {
267
+ className: _style.default.img,
268
+ src: 'https://t4.ftcdn.net/jpg/01/43/23/83/360_F_143238306_lh0ap42wgot36y44WybfQpvsJB5A1CHc.jpg',
269
+ alt: 'demo'
270
+ }), /*#__PURE__*/_react.default.createElement("div", {
271
+ className: _style.default.skillFocusEmptyTitle
272
+ }, translate('skill_focus_empty_title')), /*#__PURE__*/_react.default.createElement("div", {
273
+ className: _style.default.skillFocusEmptyDescription
274
+ }, translate('skills_focus_empty_description')), /*#__PURE__*/_react.default.createElement(_buttonLink.default, {
275
+ customStyle: {
276
+ width: '168px'
277
+ },
278
+ type: 'primary',
279
+ onClick: handleOpenSkillPicker,
280
+ label: translate('choose_your_focus')
281
+ }))), /*#__PURE__*/_react.default.createElement("header", {
282
+ className: _style.default.skillListHeader
283
+ }, /*#__PURE__*/_react.default.createElement("div", {
284
+ className: _style.default.skillListHeaderIcon
285
+ }, /*#__PURE__*/_react.default.createElement(_icon.default, {
286
+ iconName: "dumbbell",
287
+ backgroundColor: "#FFF9D1",
288
+ size: {
289
+ faSize: 20,
290
+ wrapperSize: 48
291
+ }
292
+ })), /*#__PURE__*/_react.default.createElement("div", {
293
+ className: _style.default.skillListHeaderContent
294
+ }, /*#__PURE__*/_react.default.createElement("div", {
295
+ className: _style.default.skillListHeaderTitle
296
+ }, translate('skills')), /*#__PURE__*/_react.default.createElement("div", {
297
+ className: _style.default.skillListHeaderDescription
298
+ }, translate('Explore or review skills'), /*#__PURE__*/_react.default.createElement(_tooltip.default, {
299
+ fontSize: 12,
300
+ iconContainerClassName: _style.default.infoIconTooltip,
301
+ tooltipClassName: _style.default.tooltip,
302
+ TooltipContent: TooltipContent,
303
+ closeToolTipInformationTextAriaLabel: translate('Press the escape key to close the information text')
304
+ })))), /*#__PURE__*/_react.default.createElement("div", {
305
+ className: _style.default.skillFilterContainer
306
+ }, filters.map((filter, index) => {
307
+ function handleFilterClick() {
308
+ setActiveFilter(filter.name);
309
+ }
310
+
311
+ return /*#__PURE__*/_react.default.createElement("div", {
312
+ key: index
313
+ }, /*#__PURE__*/_react.default.createElement(FilterButton, {
314
+ active: activeFilter === filter.name,
315
+ filter: translate(filter.name),
316
+ skillTotal: filter.skills.length,
317
+ onClick: handleFilterClick
318
+ }));
319
+ })), /*#__PURE__*/_react.default.createElement("div", {
320
+ className: _style.default.skillListContainer
321
+ }, skills.map((skill, index) => {
322
+ if (activeFilter === 'review' && !skillsFilters[skill].review) return null;
323
+
324
+ function handleReviewSkill() {
325
+ onReviewSkill(skill);
326
+ }
327
+
328
+ function handleExploreSkill() {
329
+ onExploreSkill(skill);
330
+ }
331
+
332
+ return /*#__PURE__*/_react.default.createElement("div", {
333
+ key: index
334
+ }, /*#__PURE__*/_react.default.createElement(_learnerSkillCard.default, {
335
+ skillTitle: skillsLocales[skill],
336
+ focus: selectedSkills.includes(skill),
337
+ metrics: {
338
+ skillCourses: skillsStats[skill].courses,
339
+ skillQuestions: skillsStats[skill].questionsAnswered,
340
+ completedCourses: skillsStats[skill].coursesCompleted
341
+ },
342
+ review: skillsFilters[skill].review,
343
+ onReviewClick: handleReviewSkill,
344
+ onExploreClick: handleExploreSkill
345
+ }));
346
+ })));
347
+ };
348
+
349
+ MyLearning.contextTypes = {
350
+ translate: _provider.default.childContextTypes.translate
351
+ };
352
+ MyLearning.propTypes = process.env.NODE_ENV !== "production" ? {
353
+ skills: _propTypes.default.arrayOf(_propTypes.default.string),
354
+ selectedSkills: _propTypes.default.arrayOf(_propTypes.default.string),
355
+ skillsStats: _propTypes.default.objectOf(_propTypes.default.shape({
356
+ score: _propTypes.default.number,
357
+ courses: _propTypes.default.number,
358
+ coursesCompleted: _propTypes.default.number,
359
+ questionsAnswered: _propTypes.default.number,
360
+ learningHours: _propTypes.default.number
361
+ })),
362
+ skillsFilters: _propTypes.default.objectOf(_propTypes.default.shape({
363
+ review: _propTypes.default.boolean
364
+ })),
365
+ skillsLocales: _propTypes.default.objectOf(_propTypes.default.string),
366
+ isLoading: _propTypes.default.bool,
367
+ onSkillFocusConfirm: _propTypes.default.func,
368
+ onReviewSkill: _propTypes.default.func,
369
+ onExploreSkill: _propTypes.default.func
370
+ } : {};
371
+ var _default = MyLearning;
372
+ exports.default = _default;
373
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["ChangeSkillFocusButton","props","context","hovered","setHovered","useState","onClick","skin","translate","primarySkinColor","handleMouseOver","useCallback","handleMouseLeave","buttonProps","customStyle","backgroundColor","convert","color","transition","label","icon","position","faIcon","name","size","contextTypes","Provider","childContextTypes","propTypes","PropTypes","func","FilterButton","active","filter","skillTotal","Content","style","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","useMemo","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","skillFocusHeaderWrapper","skillFocusHeaderIcon","faSize","wrapperSize","skillFocusHeaderContent","skillFocusHeaderTitle","skillFocusHeaderDescription","length","skillFocusContent","radarContainer","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, translate} = 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: filter === translate('review') ? '198px' :'fit-content'\n },\n onClick,\n content: <Content />,\n 'data-name': 'change-skill-focus-button'\n };\n\n return <ButtonLink {...buttonProps} />;\n};\n\nFilterButton.contextTypes = {\n translate: Provider.childContextTypes.translate\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 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.skillFocusHeaderWrapper}>\n <div className={style.skillFocusHeaderIcon}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n borderRadius=\"12px\"\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 </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 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,196 @@
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
+ .skillFocusHeaderWrapper {
45
+ display: flex;
46
+ flex: 1;
47
+ }
48
+
49
+ .skillFocusHeaderContent,
50
+ .skillListHeaderContent {
51
+ flex: 1;
52
+ }
53
+
54
+ .skillFocusHeaderContent {
55
+ margin-right: 16px;
56
+ }
57
+
58
+ .skillFocusHeaderTitle,
59
+ .skillListHeaderTitle {
60
+ font-size: 18px;
61
+ font-weight: 600;
62
+ line-height: 24px;
63
+ }
64
+
65
+ .skillFocusHeaderDescription,
66
+ .skillListHeaderDescription {
67
+ font-size: 14px;
68
+ font-weight: 500;
69
+ line-height: 20px;
70
+ color: cm_grey_500;
71
+ display: flex;
72
+ align-items: center;
73
+ }
74
+
75
+ .skillFocusEmpty {
76
+ display: flex;
77
+ flex-direction: column;
78
+ align-items: center;
79
+ justify-content: center;
80
+ padding: 72px;
81
+ }
82
+
83
+ .skillFocusEmptyTitle {
84
+ font-size: 20px;
85
+ font-weight: 700;
86
+ line-height: 28px;
87
+ margin-bottom: 8px;
88
+ }
89
+
90
+ .skillFocusEmptyDescription {
91
+ width: 502px;
92
+ text-align: center;
93
+ font-size: 16px;
94
+ font-weight: 500;
95
+ line-height: 22px;
96
+ margin-bottom: 32px;
97
+ }
98
+
99
+ .img {
100
+ width: 204px;
101
+ height: 200px;
102
+ margin-bottom: 32px;
103
+ border-radius: 50%;
104
+ }
105
+
106
+ .skillFocusContent {
107
+ display: flex;
108
+ padding: 24px;
109
+ }
110
+
111
+ .radarContainer {
112
+ width: 700px;
113
+ height: 444px;
114
+ }
115
+
116
+ .skillFilterContainer {
117
+ display: flex;
118
+ align-items: center;
119
+ gap: 8px;
120
+ margin-bottom: 32px;
121
+ }
122
+
123
+ .skillFilterNumber,
124
+ .skillFilterNumberInActive {
125
+ border-radius: 50%;
126
+ background-color: #D6E6FF;
127
+ color: #0061FF;
128
+ padding: 2px 4px;
129
+ margin-left: 8px;
130
+ font-size: 10px;
131
+ font-weight: 600;
132
+ line-height: 12px;
133
+ }
134
+
135
+ .skillFilterNumberInActive {
136
+ background-color: #EAEAEB;
137
+ color: #515161;
138
+ }
139
+
140
+ .infoIconTooltip {
141
+ background-color: transparent;
142
+ }
143
+
144
+ .tooltip {
145
+ padding: 8px 12px;
146
+ width: 238px;
147
+ color: #FFF;
148
+ font-size: 12px;
149
+ font-style: normal;
150
+ line-height: 16px;
151
+ right: -100px;
152
+
153
+ ol {
154
+ padding: 14px;
155
+ }
156
+ }
157
+
158
+ .skillListHeader {
159
+ padding: 24px 0;
160
+ border: none;
161
+ }
162
+
163
+ .skillListContainer {
164
+ display: flex;
165
+ flex-wrap: wrap;
166
+ gap: 16px;
167
+ }
168
+
169
+ @media mobile {
170
+ .skillFocusHeaderWrapper {
171
+ margin-bottom: 16px;
172
+ }
173
+
174
+ .skillFocusHeader{
175
+ flex-direction: column;
176
+ }
177
+
178
+ .skillFocusContent {
179
+ flex-direction: column;
180
+ }
181
+
182
+ .radarContainer {
183
+ width: 100%;
184
+ height: 280px;
185
+ margin-bottom:48px;
186
+ }
187
+
188
+ .skillFilterContainer {
189
+ overflow-x: auto;
190
+ }
191
+
192
+ .skillListContainer {
193
+ align-items: center;
194
+ justify-content: center;
195
+ }
196
+ }