@coorpacademy/components 11.34.2 → 11.34.3-alpha.29

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 (215) hide show
  1. package/es/atom/button-link/index.js.map +1 -1
  2. package/es/atom/button-link/style.css +2 -2
  3. package/es/atom/cta/test/fixtures/primary.d.ts +9 -0
  4. package/es/atom/cta/test/fixtures/primary.d.ts.map +1 -0
  5. package/es/atom/cta/test/fixtures/secondary.d.ts +10 -0
  6. package/es/atom/cta/test/fixtures/secondary.d.ts.map +1 -0
  7. package/es/atom/icon/index.d.ts +30 -17
  8. package/es/atom/icon/index.d.ts.map +1 -1
  9. package/es/atom/icon/index.js +4 -6
  10. package/es/atom/icon/index.js.map +1 -1
  11. package/es/atom/radio-with-title/index.d.ts +16 -3
  12. package/es/atom/radio-with-title/index.d.ts.map +1 -1
  13. package/es/atom/radio-with-title/types.d.ts +16 -2
  14. package/es/atom/radio-with-title/types.d.ts.map +1 -1
  15. package/es/atom/tag/index.d.ts +15 -1
  16. package/es/atom/tag/style.css +1 -0
  17. package/es/atom/title/index.d.ts +16 -2
  18. package/es/molecule/base-modal/style.css +0 -1
  19. package/es/molecule/cm-popin/types.d.ts +33 -6
  20. package/es/molecule/cm-popin/types.d.ts.map +1 -1
  21. package/es/molecule/progress-wrapper/index.d.ts.map +1 -1
  22. package/es/molecule/progress-wrapper/index.js +39 -19
  23. package/es/molecule/progress-wrapper/index.js.map +1 -1
  24. package/es/molecule/progress-wrapper/style.css +37 -2
  25. package/es/molecule/skills-chart-side-information-item/index.d.ts +1 -1
  26. package/es/molecule/skills-chart-side-information-panel/index.d.ts +1 -1
  27. package/es/molecule/title-and-checkbox-wrapper/index.d.ts +16 -2
  28. package/es/molecule/title-radio-wrapper/index.d.ts +16 -3
  29. package/es/molecule/title-radio-wrapper/index.d.ts.map +1 -1
  30. package/es/molecule/title-radio-wrapper/types.d.ts +16 -2
  31. package/es/molecule/title-radio-wrapper/types.d.ts.map +1 -1
  32. package/es/organism/cards-grid/index.d.ts +48 -10
  33. package/es/organism/cards-grid/index.d.ts.map +1 -1
  34. package/es/organism/cards-grid/index.js +3 -2
  35. package/es/organism/cards-grid/index.js.map +1 -1
  36. package/es/organism/content-skill-modal/index.d.ts +16 -3
  37. package/es/organism/content-skill-modal/index.d.ts.map +1 -1
  38. package/es/organism/content-skill-modal/types.d.ts +15 -2
  39. package/es/organism/content-skill-modal/types.d.ts.map +1 -1
  40. package/es/organism/list-item/index.js +5 -5
  41. package/es/organism/list-item/index.js.map +1 -1
  42. package/es/organism/list-item/style.css +38 -19
  43. package/es/organism/list-items/index.d.ts +16 -2
  44. package/es/organism/rewards-form/index.d.ts +16 -2
  45. package/es/organism/select-opponents/index.d.ts +16 -3
  46. package/es/organism/select-opponents/index.d.ts.map +1 -1
  47. package/es/organism/select-opponents/types.d.ts +16 -2
  48. package/es/organism/select-opponents/types.d.ts.map +1 -1
  49. package/es/organism/sidebar/index.d.ts +2 -2
  50. package/es/organism/skill-edition/index.d.ts +76 -11
  51. package/es/organism/skill-edition/index.d.ts.map +1 -1
  52. package/es/organism/skill-edition/types.d.ts +76 -10
  53. package/es/organism/skill-edition/types.d.ts.map +1 -1
  54. package/es/organism/title-and-input/index.d.ts +31 -5
  55. package/es/organism/title-and-input/index.d.ts.map +1 -1
  56. package/es/organism/title-and-input/types.d.ts +30 -4
  57. package/es/organism/title-and-input/types.d.ts.map +1 -1
  58. package/es/organism/wizard-contents/index.d.ts +16 -2
  59. package/es/template/app-player/loading/index.d.ts +33 -6
  60. package/es/template/app-player/player/index.d.ts +65 -12
  61. package/es/template/app-player/player/slides/index.d.ts +33 -6
  62. package/es/template/app-player/player/slides/index.d.ts.map +1 -1
  63. package/es/template/app-player/popin-correction/index.d.ts +32 -6
  64. package/es/template/app-player/popin-correction/index.d.ts.map +1 -1
  65. package/es/template/app-player/popin-end/index.d.ts +33 -6
  66. package/es/template/app-review/index.d.ts +33 -7
  67. package/es/template/app-review/index.d.ts.map +1 -1
  68. package/es/template/app-review/player/prop-types.d.ts +33 -6
  69. package/es/template/app-review/player/prop-types.d.ts.map +1 -1
  70. package/es/template/app-review/prop-types.d.ts +33 -6
  71. package/es/template/app-review/prop-types.d.ts.map +1 -1
  72. package/es/template/back-office/brand-update/index.d.ts +138 -20
  73. package/es/template/back-office/brand-update/utils.d.ts +1 -1
  74. package/es/template/certification-detail/style.css +5 -2
  75. package/es/template/common/dashboard/index.d.ts +65 -12
  76. package/es/template/common/search-page/index.d.ts +33 -6
  77. package/es/template/external-course/index.d.ts +33 -6
  78. package/es/template/skill-detail/all-courses.d.ts +61 -17
  79. package/es/template/skill-detail/all-courses.d.ts.map +1 -1
  80. package/es/template/skill-detail/all-courses.js +12 -11
  81. package/es/template/skill-detail/all-courses.js.map +1 -1
  82. package/es/template/skill-detail/continue-learning.d.ts +25 -12
  83. package/es/template/skill-detail/continue-learning.d.ts.map +1 -1
  84. package/es/template/skill-detail/continue-learning.js.map +1 -1
  85. package/es/template/skill-detail/index.d.ts +81 -71
  86. package/es/template/skill-detail/index.d.ts.map +1 -1
  87. package/es/template/skill-detail/index.js +93 -59
  88. package/es/template/skill-detail/index.js.map +1 -1
  89. package/es/template/skill-detail/style.css +96 -38
  90. package/es/variables/colors.d.ts +5 -1
  91. package/es/variables/colors.d.ts.map +1 -1
  92. package/es/variables/colors.js +6 -2
  93. package/es/variables/colors.js.map +1 -1
  94. package/lib/atom/button-link/index.js.map +1 -1
  95. package/lib/atom/button-link/style.css +2 -2
  96. package/lib/atom/cta/test/fixtures/primary.d.ts +9 -0
  97. package/lib/atom/cta/test/fixtures/primary.d.ts.map +1 -0
  98. package/lib/atom/cta/test/fixtures/secondary.d.ts +10 -0
  99. package/lib/atom/cta/test/fixtures/secondary.d.ts.map +1 -0
  100. package/lib/atom/icon/index.d.ts +30 -17
  101. package/lib/atom/icon/index.d.ts.map +1 -1
  102. package/lib/atom/icon/index.js +4 -6
  103. package/lib/atom/icon/index.js.map +1 -1
  104. package/lib/atom/radio-with-title/index.d.ts +16 -3
  105. package/lib/atom/radio-with-title/index.d.ts.map +1 -1
  106. package/lib/atom/radio-with-title/types.d.ts +16 -2
  107. package/lib/atom/radio-with-title/types.d.ts.map +1 -1
  108. package/lib/atom/tag/index.d.ts +15 -1
  109. package/lib/atom/tag/style.css +1 -0
  110. package/lib/atom/title/index.d.ts +16 -2
  111. package/lib/molecule/base-modal/style.css +0 -1
  112. package/lib/molecule/cm-popin/types.d.ts +33 -6
  113. package/lib/molecule/cm-popin/types.d.ts.map +1 -1
  114. package/lib/molecule/progress-wrapper/index.d.ts.map +1 -1
  115. package/lib/molecule/progress-wrapper/index.js +39 -19
  116. package/lib/molecule/progress-wrapper/index.js.map +1 -1
  117. package/lib/molecule/progress-wrapper/style.css +37 -2
  118. package/lib/molecule/skills-chart-side-information-item/index.d.ts +1 -1
  119. package/lib/molecule/skills-chart-side-information-panel/index.d.ts +1 -1
  120. package/lib/molecule/title-and-checkbox-wrapper/index.d.ts +16 -2
  121. package/lib/molecule/title-radio-wrapper/index.d.ts +16 -3
  122. package/lib/molecule/title-radio-wrapper/index.d.ts.map +1 -1
  123. package/lib/molecule/title-radio-wrapper/types.d.ts +16 -2
  124. package/lib/molecule/title-radio-wrapper/types.d.ts.map +1 -1
  125. package/lib/organism/cards-grid/index.d.ts +48 -10
  126. package/lib/organism/cards-grid/index.d.ts.map +1 -1
  127. package/lib/organism/cards-grid/index.js +3 -2
  128. package/lib/organism/cards-grid/index.js.map +1 -1
  129. package/lib/organism/content-skill-modal/index.d.ts +16 -3
  130. package/lib/organism/content-skill-modal/index.d.ts.map +1 -1
  131. package/lib/organism/content-skill-modal/types.d.ts +15 -2
  132. package/lib/organism/content-skill-modal/types.d.ts.map +1 -1
  133. package/lib/organism/list-item/index.js +5 -5
  134. package/lib/organism/list-item/index.js.map +1 -1
  135. package/lib/organism/list-item/style.css +38 -19
  136. package/lib/organism/list-items/index.d.ts +16 -2
  137. package/lib/organism/rewards-form/index.d.ts +16 -2
  138. package/lib/organism/select-opponents/index.d.ts +16 -3
  139. package/lib/organism/select-opponents/index.d.ts.map +1 -1
  140. package/lib/organism/select-opponents/types.d.ts +16 -2
  141. package/lib/organism/select-opponents/types.d.ts.map +1 -1
  142. package/lib/organism/sidebar/index.d.ts +2 -2
  143. package/lib/organism/skill-edition/index.d.ts +76 -11
  144. package/lib/organism/skill-edition/index.d.ts.map +1 -1
  145. package/lib/organism/skill-edition/types.d.ts +76 -10
  146. package/lib/organism/skill-edition/types.d.ts.map +1 -1
  147. package/lib/organism/title-and-input/index.d.ts +31 -5
  148. package/lib/organism/title-and-input/index.d.ts.map +1 -1
  149. package/lib/organism/title-and-input/types.d.ts +30 -4
  150. package/lib/organism/title-and-input/types.d.ts.map +1 -1
  151. package/lib/organism/wizard-contents/index.d.ts +16 -2
  152. package/lib/template/app-player/loading/index.d.ts +33 -6
  153. package/lib/template/app-player/player/index.d.ts +65 -12
  154. package/lib/template/app-player/player/slides/index.d.ts +33 -6
  155. package/lib/template/app-player/player/slides/index.d.ts.map +1 -1
  156. package/lib/template/app-player/popin-correction/index.d.ts +32 -6
  157. package/lib/template/app-player/popin-correction/index.d.ts.map +1 -1
  158. package/lib/template/app-player/popin-end/index.d.ts +33 -6
  159. package/lib/template/app-review/index.d.ts +33 -7
  160. package/lib/template/app-review/index.d.ts.map +1 -1
  161. package/lib/template/app-review/player/prop-types.d.ts +33 -6
  162. package/lib/template/app-review/player/prop-types.d.ts.map +1 -1
  163. package/lib/template/app-review/prop-types.d.ts +33 -6
  164. package/lib/template/app-review/prop-types.d.ts.map +1 -1
  165. package/lib/template/back-office/brand-update/index.d.ts +138 -20
  166. package/lib/template/back-office/brand-update/utils.d.ts +1 -1
  167. package/lib/template/certification-detail/style.css +5 -2
  168. package/lib/template/common/dashboard/index.d.ts +65 -12
  169. package/lib/template/common/search-page/index.d.ts +33 -6
  170. package/lib/template/external-course/index.d.ts +33 -6
  171. package/lib/template/skill-detail/all-courses.d.ts +61 -17
  172. package/lib/template/skill-detail/all-courses.d.ts.map +1 -1
  173. package/lib/template/skill-detail/all-courses.js +11 -11
  174. package/lib/template/skill-detail/all-courses.js.map +1 -1
  175. package/lib/template/skill-detail/continue-learning.d.ts +25 -12
  176. package/lib/template/skill-detail/continue-learning.d.ts.map +1 -1
  177. package/lib/template/skill-detail/continue-learning.js.map +1 -1
  178. package/lib/template/skill-detail/index.d.ts +81 -71
  179. package/lib/template/skill-detail/index.d.ts.map +1 -1
  180. package/lib/template/skill-detail/index.js +93 -59
  181. package/lib/template/skill-detail/index.js.map +1 -1
  182. package/lib/template/skill-detail/style.css +96 -38
  183. package/lib/variables/colors.d.ts +5 -1
  184. package/lib/variables/colors.d.ts.map +1 -1
  185. package/lib/variables/colors.js +6 -2
  186. package/lib/variables/colors.js.map +1 -1
  187. package/locales/bs/global.json +1 -0
  188. package/locales/cs/global.json +1 -0
  189. package/locales/de/global.json +1 -0
  190. package/locales/en/global.json +1 -0
  191. package/locales/es/global.json +1 -0
  192. package/locales/et/global.json +1 -0
  193. package/locales/fi/global.json +1 -0
  194. package/locales/fr/global.json +1 -0
  195. package/locales/hr/global.json +1 -0
  196. package/locales/hu/global.json +1 -0
  197. package/locales/hy/global.json +1 -0
  198. package/locales/it/global.json +1 -0
  199. package/locales/ja/global.json +1 -0
  200. package/locales/ko/global.json +1 -0
  201. package/locales/nl/global.json +1 -0
  202. package/locales/pl/global.json +1 -0
  203. package/locales/pt/global.json +1 -0
  204. package/locales/ro/global.json +1 -0
  205. package/locales/ru/global.json +1 -0
  206. package/locales/sk/global.json +1 -0
  207. package/locales/sl/global.json +1 -0
  208. package/locales/sv/global.json +1 -0
  209. package/locales/tl/global.json +1 -0
  210. package/locales/tr/global.json +1 -0
  211. package/locales/uk/global.json +1 -0
  212. package/locales/vi/global.json +1 -0
  213. package/locales/zh/global.json +1 -0
  214. package/locales/zh_TW/global.json +1 -0
  215. package/package.json +2 -2
@@ -2,17 +2,20 @@ import _isNil from "lodash/fp/isNil";
2
2
  import _get from "lodash/fp/get";
3
3
  import React, { useCallback, useState, useRef, useEffect } from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { convert } from 'css-color-function';
6
5
  import classnames from 'classnames';
7
6
  import Markdown from 'markdown-to-jsx';
7
+ import { convert } from 'css-color-function';
8
8
  import Provider from '../../atom/provider';
9
- import Select, { SelectOptionPropTypes } from '../../atom/select';
10
- import ButtonLink from '../../atom/button-link';
11
9
  import ButtonLinkIcon from '../../atom/button-link-icon';
12
10
  import Icon from '../../atom/icon';
11
+ import IconPreview from '../../molecule/icon-preview';
12
+ import ButtonLink from '../../atom/button-link';
13
13
  import CardsGrid from '../../organism/cards-grid';
14
- import style from './style.css';
14
+ import secondary from '../../atom/cta/test/fixtures/secondary';
15
+ import { COLORS } from '../../variables/colors';
16
+ import { SelectOptionPropTypes } from '../../atom/select';
15
17
  import AllCourses from './all-courses';
18
+ import style from './style.css';
16
19
  export const ContinueLearningButton = (props, context) => {
17
20
  const {
18
21
  ongoingCoursesAvailable,
@@ -23,26 +26,26 @@ export const ContinueLearningButton = (props, context) => {
23
26
  translate
24
27
  } = context;
25
28
  const primarySkinColor = _get('common.primary', skin);
26
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ButtonLink, {
29
+ return /*#__PURE__*/React.createElement(ButtonLink, {
27
30
  label: ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning'),
28
31
  type: "primary",
29
32
  customStyle: {
30
33
  width: 'fit-content',
31
34
  borderRadius: '12px',
32
- backgroundColor: primarySkinColor
35
+ backgroundColor: secondary
33
36
  },
34
37
  hoverBackgroundColor: convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`),
35
- hoverColor: "#FFFFFF",
38
+ hoverColor: COLORS.white,
36
39
  icon: {
37
40
  position: 'left',
38
41
  faIcon: {
39
42
  name: 'play',
40
- color: '#FFFFFF',
41
- size: 16
43
+ color: COLORS.white,
44
+ size: 14
42
45
  }
43
46
  },
44
47
  onClick: onClick
45
- }));
48
+ });
46
49
  };
47
50
  ContinueLearningButton.contextTypes = {
48
51
  skin: Provider.childContextTypes.skin,
@@ -63,29 +66,27 @@ const SkillDetail = (props, context) => {
63
66
  ongoingCoursesAvailable,
64
67
  skillIncludedCourses,
65
68
  filters,
66
- sorting,
67
69
  onBackClick,
68
70
  onReviewClick,
69
71
  onContinueLearningClick,
70
72
  search,
71
- bannerMicrolearning = {}
73
+ bannerMicrolearning
72
74
  } = props;
73
- const descriptionRef = useRef(null);
74
75
  const {
75
76
  score = 0,
76
- questionsToReview,
77
- totalContents
77
+ questionsToReview = 0,
78
+ totalContents = 0
78
79
  } = metrics;
79
80
  const {
80
81
  translate
81
82
  } = context;
82
- const {
83
- action: bannerMicrolearningAction,
84
- oldSwitchValue
85
- } = bannerMicrolearning;
83
+ const bannerMicrolearningAction = bannerMicrolearning?.action;
84
+ const descriptionRef = useRef(null);
86
85
  const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);
87
86
  const [showMore, setShowMore] = useState(false);
88
- const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);
87
+ const handleShowMore = useCallback(() => {
88
+ setShowMore(!showMore);
89
+ }, [showMore]);
89
90
  useEffect(() => {
90
91
  if (descriptionRef.current) {
91
92
  const {
@@ -99,29 +100,39 @@ const SkillDetail = (props, context) => {
99
100
  return /*#__PURE__*/React.createElement("div", {
100
101
  ref: descriptionRef,
101
102
  className: classnames(style.description, !showMore && style.truncate)
102
- }, /*#__PURE__*/React.createElement(Markdown, null, description));
103
+ }, description ? /*#__PURE__*/React.createElement(Markdown, null, description) : null);
103
104
  }, [showMore, description]);
104
105
  const ProgressBar = useCallback(() => {
105
- if (score === undefined) return null;
106
- const progressBarColor = '#3EC483';
107
- const inlineProgressValueStyle = {
106
+ if (typeof score !== 'number') return null;
107
+ const progressBarColor = COLORS.cm_positive_500;
108
+ const inlineProgressStyle = {
108
109
  backgroundColor: progressBarColor,
109
110
  width: `${score}%`
110
111
  };
111
112
  return /*#__PURE__*/React.createElement("div", {
113
+ className: style.progressBarRow
114
+ }, /*#__PURE__*/React.createElement("div", {
112
115
  className: style.progressBarWrapper
113
116
  }, /*#__PURE__*/React.createElement("div", {
114
117
  "data-name": "progress",
115
118
  className: style.progress,
116
- style: inlineProgressValueStyle,
117
- role: "progressbar"
118
- }));
119
+ style: inlineProgressStyle,
120
+ role: "progressbar",
121
+ "aria-valuenow": score,
122
+ "aria-valuemin": 0,
123
+ "aria-valuemax": 100
124
+ })), /*#__PURE__*/React.createElement("span", {
125
+ className: style.progressInformationNumber
126
+ }, score.toFixed(1), "%"));
119
127
  }, [score]);
128
+ const hasDescription = Boolean(description && description.trim().length > 0);
120
129
  return /*#__PURE__*/React.createElement("div", {
121
130
  className: style.backgroundContainer
122
131
  }, /*#__PURE__*/React.createElement("div", {
123
132
  className: style.container,
124
133
  "data-name": skillRef
134
+ }, /*#__PURE__*/React.createElement("div", {
135
+ className: style.topSection
125
136
  }, !_isNil(onBackClick) ? /*#__PURE__*/React.createElement(ButtonLinkIcon, {
126
137
  faIcon: "arrow-left",
127
138
  "data-name": "back-button",
@@ -129,67 +140,91 @@ const SkillDetail = (props, context) => {
129
140
  onClick: onBackClick,
130
141
  className: style.backButton,
131
142
  tooltipPlacement: "right"
132
- }) : null, /*#__PURE__*/React.createElement("div", {
133
- className: style.ctaContainer
134
- }, /*#__PURE__*/React.createElement("div", null, focused ? /*#__PURE__*/React.createElement("div", {
143
+ }) : null), /*#__PURE__*/React.createElement("div", {
144
+ className: style.mainSection
145
+ }, /*#__PURE__*/React.createElement("div", {
146
+ className: style.leftSide
147
+ }, /*#__PURE__*/React.createElement(IconPreview, {
148
+ icon: {
149
+ name: 'bullseye-arrow',
150
+ color: COLORS.purple_100
151
+ },
152
+ title: title
153
+ })), /*#__PURE__*/React.createElement("div", {
154
+ className: style.rightSide
155
+ }, focused ? /*#__PURE__*/React.createElement("div", {
135
156
  className: style.skillFocusBadge
136
157
  }, /*#__PURE__*/React.createElement(Icon, {
137
158
  iconName: "bullseye-arrow",
138
- backgroundColor: "#DDD1FF",
159
+ backgroundColor: COLORS.purple_100,
160
+ size: {
161
+ faSize: 10,
162
+ wrapperSize: 16
163
+ }
164
+ }), translate('skill_focus')) : /*#__PURE__*/React.createElement("div", {
165
+ className: style.skillBadge
166
+ }, /*#__PURE__*/React.createElement(Icon, {
167
+ iconName: "shapes",
168
+ backgroundColor: COLORS.gray,
139
169
  size: {
140
170
  faSize: 10,
141
171
  wrapperSize: 16
142
172
  }
143
- }), translate('skill_focus')) : null, /*#__PURE__*/React.createElement("div", {
173
+ }), translate('skill')), /*#__PURE__*/React.createElement("h2", {
144
174
  className: style.title
145
- }, title), description ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Description, null), isDescriptionTruncated ? /*#__PURE__*/React.createElement("div", {
175
+ }, title), description && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Description, null), isDescriptionTruncated ? /*#__PURE__*/React.createElement("div", {
146
176
  className: style.showMoreWrapper,
147
177
  onClick: handleShowMore
148
178
  }, showMore ? translate('Show less') : translate('Show more'), /*#__PURE__*/React.createElement(Icon, {
149
179
  iconName: showMore ? 'chevron-up' : 'chevron-down',
150
180
  size: {
151
181
  faSize: 14,
152
- wrapperSize: 16
182
+ wrapperSize: 14
183
+ },
184
+ customStyle: {
185
+ padding: '8px'
153
186
  }
154
- })) : null) : null), /*#__PURE__*/React.createElement("div", {
187
+ })) : null), questionsToReview > 0 ? /*#__PURE__*/React.createElement("div", {
188
+ className: style.skillInformation
189
+ }, /*#__PURE__*/React.createElement("span", null, questionsToReview), "\xA0", translate('skill_chart_side_panel_questions_to_review')) : null, /*#__PURE__*/React.createElement("div", {
190
+ className: classnames(style.progressContainer, !hasDescription && style.noDescriptionSpacing)
191
+ }, /*#__PURE__*/React.createElement(ProgressBar, null)), /*#__PURE__*/React.createElement("div", {
155
192
  className: style.ctaWrapper
156
- }, /*#__PURE__*/React.createElement(ButtonLink, {
193
+ }, /*#__PURE__*/React.createElement(ContinueLearningButton, {
194
+ ongoingCoursesAvailable: ongoingCoursesAvailable,
195
+ onClick: onContinueLearningClick
196
+ }), /*#__PURE__*/React.createElement(ButtonLink, {
157
197
  type: "secondary",
158
- onClick: onReviewClick,
159
198
  label: translate('review_this_skill'),
160
199
  disabled: !availableForReview,
200
+ onClick: onReviewClick,
201
+ icon: {
202
+ position: 'left',
203
+ faIcon: {
204
+ name: 'rotate-right',
205
+ color: COLORS.cm_grey_700,
206
+ size: 14
207
+ }
208
+ },
161
209
  customStyle: {
162
- width: 'fit-content',
163
- borderRadius: '12px'
210
+ borderRadius: '12px',
211
+ width: 'fit-content'
164
212
  }
165
- }), /*#__PURE__*/React.createElement(ContinueLearningButton, {
166
- ongoingCoursesAvailable: ongoingCoursesAvailable,
167
- onClick: onContinueLearningClick
168
- }))), questionsToReview > 0 ? /*#__PURE__*/React.createElement("div", {
169
- className: style.skillInformation,
170
- "data-name": "skill-questions"
171
- }, /*#__PURE__*/React.createElement("span", {
172
- className: style.skillInformationNumber
173
- }, questionsToReview), "\xA0", translate('skill_chart_side_panel_questions_to_review')) : null, /*#__PURE__*/React.createElement("div", {
174
- className: style.progressContainer
175
- }, /*#__PURE__*/React.createElement(ProgressBar, null), /*#__PURE__*/React.createElement("span", {
176
- className: style.progressInformationNumber
177
- }, score.toFixed(1), "%")), /*#__PURE__*/React.createElement(AllCourses, {
213
+ })))), /*#__PURE__*/React.createElement(AllCourses, {
178
214
  content: skillIncludedCourses,
179
215
  filters: filters,
180
- sorting: sorting,
181
216
  totalContents: totalContents,
182
- bannerMicrolearning: bannerMicrolearningAction ? {
217
+ bannerMicrolearning: bannerMicrolearning && bannerMicrolearningAction ? {
183
218
  type: 'skill',
184
219
  action: bannerMicrolearningAction,
185
- oldSwitchValue
186
- } : {},
220
+ oldSwitchValue: bannerMicrolearning.oldSwitchValue
221
+ } : undefined,
187
222
  search: search
188
223
  })));
189
224
  };
190
225
  SkillDetail.contextTypes = {
191
- skin: Provider.childContextTypes.skin,
192
- translate: Provider.childContextTypes.translate
226
+ translate: Provider.childContextTypes.translate,
227
+ skin: Provider.childContextTypes.skin
193
228
  };
194
229
  SkillDetail.propTypes = process.env.NODE_ENV !== "production" ? {
195
230
  title: PropTypes.string.isRequired,
@@ -208,7 +243,6 @@ SkillDetail.propTypes = process.env.NODE_ENV !== "production" ? {
208
243
  onChange: PropTypes.func,
209
244
  options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))
210
245
  }),
211
- sorting: PropTypes.shape(Select.propTypes),
212
246
  onBackClick: PropTypes.func,
213
247
  onReviewClick: PropTypes.func,
214
248
  onContinueLearningClick: PropTypes.func,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useState","useRef","useEffect","PropTypes","convert","classnames","Markdown","Provider","Select","SelectOptionPropTypes","ButtonLink","ButtonLinkIcon","Icon","CardsGrid","style","AllCourses","ContinueLearningButton","props","context","ongoingCoursesAvailable","onClick","skin","translate","primarySkinColor","_get","createElement","label","type","customStyle","width","borderRadius","backgroundColor","hoverBackgroundColor","hoverColor","icon","position","faIcon","name","color","size","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","bool","func","SkillDetail","title","skillRef","description","metrics","focused","availableForReview","skillIncludedCourses","filters","sorting","onBackClick","onReviewClick","onContinueLearningClick","search","bannerMicrolearning","descriptionRef","score","questionsToReview","totalContents","action","bannerMicrolearningAction","oldSwitchValue","isDescriptionTruncated","setIsDescriptionTruncated","showMore","setShowMore","handleShowMore","current","clientHeight","scrollHeight","Description","ref","className","truncate","ProgressBar","undefined","progressBarColor","inlineProgressValueStyle","progressBarWrapper","progress","role","backgroundContainer","container","_isNil","backButton","tooltipPlacement","ctaContainer","skillFocusBadge","iconName","faSize","wrapperSize","Fragment","showMoreWrapper","ctaWrapper","disabled","skillInformation","skillInformationNumber","progressContainer","progressInformationNumber","toFixed","content","string","isRequired","shape","number","onChange","options","arrayOf","oldValue"],"sources":["../../../src/template/skill-detail/index.js"],"sourcesContent":["import React, {useCallback, useState, useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport {convert} from 'css-color-function';\nimport classnames from 'classnames';\nimport {get, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport Provider from '../../atom/provider';\nimport Select, {SelectOptionPropTypes} from '../../atom/select';\nimport ButtonLink from '../../atom/button-link';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport CardsGrid from '../../organism/cards-grid';\nimport style from './style.css';\nimport AllCourses from './all-courses';\n\nexport const ContinueLearningButton = (props, context) => {\n const {ongoingCoursesAvailable, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <div>\n <ButtonLink\n label={\n ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning')\n }\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px',\n backgroundColor: primarySkinColor\n }}\n hoverBackgroundColor={convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`)}\n hoverColor=\"#FFFFFF\"\n icon={{\n position: 'left',\n faIcon: {\n name: 'play',\n color: '#FFFFFF',\n size: 16\n }\n }}\n onClick={onClick}\n />\n </div>\n );\n};\n\nContinueLearningButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearningButton.propTypes = {\n ongoingCoursesAvailable: PropTypes.bool,\n onClick: PropTypes.func\n};\n\nconst SkillDetail = (props, context) => {\n const {\n title,\n skillRef,\n description,\n metrics = {},\n focused,\n availableForReview,\n ongoingCoursesAvailable,\n skillIncludedCourses,\n filters,\n sorting,\n onBackClick,\n onReviewClick,\n onContinueLearningClick,\n search,\n bannerMicrolearning = {}\n } = props;\n const descriptionRef = useRef(null);\n const {score = 0, questionsToReview, totalContents} = metrics;\n const {translate} = context;\n const {action: bannerMicrolearningAction, oldSwitchValue} = bannerMicrolearning;\n\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => setShowMore(!showMore), [setShowMore, showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n <Markdown>{description}</Markdown>\n </div>\n );\n }, [showMore, description]);\n\n const ProgressBar = useCallback(() => {\n if (score === undefined) return null;\n const progressBarColor = '#3EC483';\n const inlineProgressValueStyle = {\n backgroundColor: progressBarColor,\n width: `${score}%`\n };\n\n return (\n <div className={style.progressBarWrapper}>\n <div\n data-name=\"progress\"\n className={style.progress}\n style={inlineProgressValueStyle}\n role=\"progressbar\"\n />\n </div>\n );\n }, [score]);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={skillRef}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n <div className={style.ctaContainer}>\n <div>\n {focused ? (\n <div className={style.skillFocusBadge}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor=\"#DDD1FF\"\n size={{\n faSize: 10,\n wrapperSize: 16\n }}\n />\n {translate('skill_focus')}\n </div>\n ) : null}\n <div className={style.title}>{title}</div>\n {description ? (\n <>\n <Description />\n {isDescriptionTruncated ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {showMore ? translate('Show less') : translate('Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{\n faSize: 14,\n wrapperSize: 16\n }}\n />\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n\n <div className={style.ctaWrapper}>\n <ButtonLink\n type=\"secondary\"\n onClick={onReviewClick}\n label={translate('review_this_skill')}\n disabled={!availableForReview}\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px'\n }}\n />\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n </div>\n </div>\n {questionsToReview > 0 ? (\n <div className={style.skillInformation} data-name=\"skill-questions\">\n <span className={style.skillInformationNumber}>{questionsToReview}</span>\n &nbsp;{translate('skill_chart_side_panel_questions_to_review')}\n </div>\n ) : null}\n <div className={style.progressContainer}>\n <ProgressBar />\n <span className={style.progressInformationNumber}>{score.toFixed(1)}%</span>\n </div>\n <AllCourses\n content={skillIncludedCourses}\n filters={filters}\n sorting={sorting}\n totalContents={totalContents}\n bannerMicrolearning={\n bannerMicrolearningAction\n ? {\n type: 'skill',\n action: bannerMicrolearningAction,\n oldSwitchValue\n }\n : {}\n }\n search={search}\n />\n </div>\n </div>\n );\n};\n\nSkillDetail.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nSkillDetail.propTypes = {\n title: PropTypes.string.isRequired,\n skillRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n metrics: PropTypes.shape({\n score: PropTypes.number,\n questionsToReview: PropTypes.number,\n totalContents: PropTypes.number\n }),\n focused: PropTypes.bool,\n availableForReview: PropTypes.bool,\n ongoingCoursesAvailable: PropTypes.bool,\n skillIncludedCourses: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n sorting: PropTypes.shape(Select.propTypes),\n onBackClick: PropTypes.func,\n onReviewClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func,\n search: PropTypes.shape({\n oldValue: PropTypes.string,\n onChange: PropTypes.func\n }),\n bannerMicrolearning: PropTypes.shape({\n action: PropTypes.func,\n oldSwitchValue: PropTypes.bool\n })\n};\n\nexport default SkillDetail;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useState","useRef","useEffect","PropTypes","classnames","Markdown","convert","Provider","ButtonLinkIcon","Icon","IconPreview","ButtonLink","CardsGrid","secondary","COLORS","SelectOptionPropTypes","AllCourses","style","ContinueLearningButton","props","context","ongoingCoursesAvailable","onClick","skin","translate","primarySkinColor","_get","createElement","label","type","customStyle","width","borderRadius","backgroundColor","hoverBackgroundColor","hoverColor","white","icon","position","faIcon","name","color","size","contextTypes","childContextTypes","propTypes","process","env","NODE_ENV","bool","func","SkillDetail","title","skillRef","description","metrics","focused","availableForReview","skillIncludedCourses","filters","onBackClick","onReviewClick","onContinueLearningClick","search","bannerMicrolearning","score","questionsToReview","totalContents","bannerMicrolearningAction","action","descriptionRef","isDescriptionTruncated","setIsDescriptionTruncated","showMore","setShowMore","handleShowMore","current","clientHeight","scrollHeight","Description","ref","className","truncate","ProgressBar","progressBarColor","cm_positive_500","inlineProgressStyle","progressBarRow","progressBarWrapper","progress","role","progressInformationNumber","toFixed","hasDescription","Boolean","trim","length","backgroundContainer","container","topSection","_isNil","backButton","tooltipPlacement","mainSection","leftSide","purple_100","rightSide","skillFocusBadge","iconName","faSize","wrapperSize","skillBadge","gray","Fragment","showMoreWrapper","padding","skillInformation","progressContainer","noDescriptionSpacing","ctaWrapper","disabled","cm_grey_700","content","oldSwitchValue","undefined","string","isRequired","shape","number","onChange","options","arrayOf","oldValue"],"sources":["../../../src/template/skill-detail/index.tsx"],"sourcesContent":["import React, {useCallback, useState, useRef, useEffect} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport {get, isNil} from 'lodash/fp';\nimport Markdown from 'markdown-to-jsx';\nimport {convert} from 'css-color-function';\nimport Provider from '../../atom/provider';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport Icon from '../../atom/icon';\nimport IconPreview from '../../molecule/icon-preview';\nimport ButtonLink from '../../atom/button-link';\nimport CardsGrid, {CardsGridProps} from '../../organism/cards-grid';\nimport secondary from '../../atom/cta/test/fixtures/secondary';\nimport {COLORS} from '../../variables/colors';\nimport {SelectOptionPropTypes} from '../../atom/select';\nimport AllCourses from './all-courses';\nimport style from './style.css';\n\ninterface ContinueLearningButtonProps {\n ongoingCoursesAvailable?: boolean;\n onClick?: () => void;\n}\ninterface ProviderContext {\n skin: {\n common: {\n primary: string;\n secondary: string;\n };\n };\n translate: (key: string) => string;\n}\n\nexport const ContinueLearningButton = (\n props: ContinueLearningButtonProps,\n context: ProviderContext\n) => {\n const {ongoingCoursesAvailable, onClick} = props;\n const {skin, translate} = context;\n const primarySkinColor = get('common.primary', skin);\n\n return (\n <ButtonLink\n label={ongoingCoursesAvailable ? translate('continue_learning') : translate('start_learning')}\n type=\"primary\"\n customStyle={{\n width: 'fit-content',\n borderRadius: '12px',\n backgroundColor: secondary\n }}\n hoverBackgroundColor={convert(`hsl(from ${primarySkinColor} h s calc(l*(1 - 0.08)))`)}\n hoverColor={COLORS.white}\n icon={{\n position: 'left',\n faIcon: {\n name: 'play',\n color: COLORS.white,\n size: 14\n }\n }}\n onClick={onClick}\n />\n );\n};\n\nContinueLearningButton.contextTypes = {\n skin: Provider.childContextTypes.skin,\n translate: Provider.childContextTypes.translate\n};\n\nContinueLearningButton.propTypes = {\n ongoingCoursesAvailable: PropTypes.bool,\n onClick: PropTypes.func\n};\n\ninterface Metrics {\n score?: number;\n questionsToReview?: number;\n totalContents?: number;\n}\n\ntype BannerMicrolearning =\n | Record<string, never>\n | {\n action: () => void;\n oldSwitchValue: boolean;\n };\ninterface SkillDetailProps {\n title: string;\n skillRef: string;\n description?: string;\n metrics?: Metrics;\n focused?: boolean;\n availableForReview?: boolean;\n ongoingCoursesAvailable?: boolean;\n skillIncludedCourses: CardsGridProps;\n filters: {\n onChange?: () => void;\n options?: unknown[];\n };\n onBackClick?: () => void;\n onReviewClick?: () => void;\n onContinueLearningClick?: () => void;\n search: {\n oldValue: string;\n onChange: () => void;\n };\n bannerMicrolearning?: BannerMicrolearning;\n}\nconst SkillDetail = (props: SkillDetailProps, context: ProviderContext) => {\n const {\n title,\n skillRef,\n description,\n metrics = {},\n focused,\n availableForReview,\n ongoingCoursesAvailable,\n skillIncludedCourses,\n filters,\n onBackClick,\n onReviewClick,\n onContinueLearningClick,\n search,\n bannerMicrolearning\n } = props;\n\n const {score = 0, questionsToReview = 0, totalContents = 0} = metrics;\n const {translate} = context;\n const bannerMicrolearningAction = bannerMicrolearning?.action;\n const descriptionRef = useRef(null);\n const [isDescriptionTruncated, setIsDescriptionTruncated] = useState(false);\n const [showMore, setShowMore] = useState(false);\n\n const handleShowMore = useCallback(() => {\n setShowMore(!showMore);\n }, [showMore]);\n\n useEffect(() => {\n if (descriptionRef.current) {\n const {clientHeight = 0, scrollHeight = 0} = descriptionRef.current;\n setIsDescriptionTruncated(scrollHeight > clientHeight);\n }\n }, [description]);\n\n const Description = useCallback(() => {\n return (\n <div\n ref={descriptionRef}\n className={classnames(style.description, !showMore && style.truncate)}\n >\n {description ? <Markdown>{description}</Markdown> : null}\n </div>\n );\n }, [showMore, description]);\n\n const ProgressBar = useCallback(() => {\n if (typeof score !== 'number') return null;\n\n const progressBarColor = COLORS.cm_positive_500;\n const inlineProgressStyle = {\n backgroundColor: progressBarColor,\n width: `${score}%`\n };\n\n return (\n <div className={style.progressBarRow}>\n <div className={style.progressBarWrapper}>\n <div\n data-name=\"progress\"\n className={style.progress}\n style={inlineProgressStyle}\n role=\"progressbar\"\n aria-valuenow={score}\n aria-valuemin={0}\n aria-valuemax={100}\n />\n </div>\n <span className={style.progressInformationNumber}>{score.toFixed(1)}%</span>\n </div>\n );\n }, [score]);\n const hasDescription = Boolean(description && description.trim().length > 0);\n\n return (\n <div className={style.backgroundContainer}>\n <div className={style.container} data-name={skillRef}>\n {/* Top section for the back arrow (optional) */}\n <div className={style.topSection}>\n {!isNil(onBackClick) ? (\n <ButtonLinkIcon\n faIcon=\"arrow-left\"\n data-name=\"back-button\"\n aria-label={translate('back')}\n onClick={onBackClick}\n className={style.backButton}\n tooltipPlacement=\"right\"\n />\n ) : null}\n </div>\n\n {/* Main section: icon on the left, skill info on the right */}\n <div className={style.mainSection}>\n <div className={style.leftSide}>\n <IconPreview\n icon={{\n name: 'bullseye-arrow',\n color: COLORS.purple_100\n }}\n title={title}\n />\n </div>\n <div className={style.rightSide}>\n {focused ? (\n <div className={style.skillFocusBadge}>\n <Icon\n iconName=\"bullseye-arrow\"\n backgroundColor={COLORS.purple_100}\n size={{faSize: 10, wrapperSize: 16}}\n />\n {translate('skill_focus')}\n </div>\n ) : (\n <div className={style.skillBadge}>\n <Icon\n iconName=\"shapes\"\n backgroundColor={COLORS.gray}\n size={{faSize: 10, wrapperSize: 16}}\n />\n {translate('skill')}\n </div>\n )}\n\n <h2 className={style.title}>{title}</h2>\n\n {description && (\n <>\n <Description />\n {isDescriptionTruncated ? (\n <div className={style.showMoreWrapper} onClick={handleShowMore}>\n {showMore ? translate('Show less') : translate('Show more')}\n <Icon\n iconName={showMore ? 'chevron-up' : 'chevron-down'}\n size={{faSize: 14, wrapperSize: 14}}\n customStyle={{padding: '8px'}}\n />\n </div>\n ) : null}\n </>\n )}\n\n {questionsToReview > 0 ? (\n <div className={style.skillInformation}>\n <span>{questionsToReview}</span>\n &nbsp;{translate('skill_chart_side_panel_questions_to_review')}\n </div>\n ) : null}\n\n <div\n className={classnames(\n style.progressContainer,\n !hasDescription && style.noDescriptionSpacing\n )}\n >\n <ProgressBar />\n </div>\n\n <div className={style.ctaWrapper}>\n <ContinueLearningButton\n ongoingCoursesAvailable={ongoingCoursesAvailable}\n onClick={onContinueLearningClick}\n />\n <ButtonLink\n type=\"secondary\"\n label={translate('review_this_skill')}\n disabled={!availableForReview}\n onClick={onReviewClick}\n icon={{\n position: 'left',\n faIcon: {\n name: 'rotate-right',\n color: COLORS.cm_grey_700,\n size: 14\n }\n }}\n customStyle={{borderRadius: '12px', width: 'fit-content'}}\n />\n </div>\n </div>\n </div>\n\n {/* Courses section below */}\n <AllCourses\n content={skillIncludedCourses}\n filters={filters}\n totalContents={totalContents}\n bannerMicrolearning={\n bannerMicrolearning && bannerMicrolearningAction\n ? {\n type: 'skill',\n action: bannerMicrolearningAction,\n oldSwitchValue: bannerMicrolearning.oldSwitchValue\n }\n : undefined\n }\n search={search}\n />\n </div>\n </div>\n );\n};\n\nSkillDetail.contextTypes = {\n translate: Provider.childContextTypes.translate,\n skin: Provider.childContextTypes.skin\n};\n\nSkillDetail.propTypes = {\n title: PropTypes.string.isRequired,\n skillRef: PropTypes.string.isRequired,\n description: PropTypes.string,\n metrics: PropTypes.shape({\n score: PropTypes.number,\n questionsToReview: PropTypes.number,\n totalContents: PropTypes.number\n }),\n focused: PropTypes.bool,\n availableForReview: PropTypes.bool,\n ongoingCoursesAvailable: PropTypes.bool,\n skillIncludedCourses: PropTypes.shape(CardsGrid.propTypes),\n filters: PropTypes.shape({\n onChange: PropTypes.func,\n options: PropTypes.arrayOf(PropTypes.shape(SelectOptionPropTypes))\n }),\n onBackClick: PropTypes.func,\n onReviewClick: PropTypes.func,\n onContinueLearningClick: PropTypes.func,\n search: PropTypes.shape({\n oldValue: PropTypes.string,\n onChange: PropTypes.func\n }),\n bannerMicrolearning: PropTypes.shape({\n action: PropTypes.func,\n oldSwitchValue: PropTypes.bool\n })\n};\n\nexport default SkillDetail;\n"],"mappings":"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","ignoreList":[]}
@@ -22,12 +22,7 @@
22
22
  .container {
23
23
  composes: textBase;
24
24
  background-color: white;
25
- font-family: "Gilroy";
26
- font-style: normal;
27
- margin-top: 48px;
28
- margin-bottom: 48px;
29
- margin-left: auto;
30
- margin-right: auto;
25
+ margin: 48px auto;
31
26
  padding: 0 16px;
32
27
  position: relative;
33
28
  box-sizing: border-box;
@@ -36,14 +31,48 @@
36
31
  max-width: calc(1080px + 40px);
37
32
  }
38
33
 
39
- .backButton {
40
- margin-bottom: 16px;
34
+ .topSection {
35
+ display: flex;
41
36
  }
42
37
 
43
- .ctaContainer {
38
+ .mainSection {
44
39
  display: flex;
45
- width: 100%;
46
- justify-content: space-between;
40
+ align-items: flex-start;
41
+ gap: 40px;
42
+ }
43
+
44
+ .leftSide {
45
+ width: 420px;
46
+ height: 280px;
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: 16px;
50
+ }
51
+
52
+ .rightSide {
53
+ max-width: 620px;
54
+ height: 280px;
55
+ display: flex;
56
+ gap: 8px;
57
+ flex-direction: column;
58
+ }
59
+
60
+ .title {
61
+ gap: 8px;
62
+ margin: 0;
63
+ font-size: 24px;
64
+ font-weight: 700;
65
+ line-height: 32px;
66
+ }
67
+
68
+ .ctaWrapper {
69
+ display: flex;
70
+ gap: 8px;
71
+ margin-top: 16px;
72
+ }
73
+
74
+ .backButton {
75
+ margin-bottom: 16px;
47
76
  }
48
77
 
49
78
  .skillFocusBadge {
@@ -58,34 +87,38 @@
58
87
  line-height: 16px;
59
88
  font-weight: 600;
60
89
  color: #3900D6;
61
- margin-bottom: 16px;
62
90
  }
63
91
 
64
- .ctaWrapper,
65
- .showMoreWrapper {
92
+ .skillBadge {
66
93
  display: flex;
67
- gap: 8px;
94
+ height: 12px;
95
+ width: fit-content;
96
+ align-items: center;
97
+ background-color: #EAEAEB;
98
+ border-radius: 24px;
99
+ padding: 4px 8px;
100
+ font-size: 12px;
101
+ line-height: 12px;
102
+ font-weight: 600;
103
+ color: #515161;
68
104
  }
69
105
 
70
106
  .showMoreWrapper {
107
+ display: flex;
71
108
  align-items: center;
72
- margin-top: 8px;
109
+ color: cm_grey_500;
73
110
  font-weight: 600;
74
111
  cursor: pointer;
75
- }
76
-
77
- .title {
78
- font-size: 24px;
79
- font-weight: 700;
80
- line-height: 32px;
112
+ font-size: 14px;
81
113
  }
82
114
 
83
115
  .description {
84
- margin-top: 8px;
85
- max-width: 734px;
116
+ max-width: 620px;
86
117
  font-size: 14px;
87
118
  font-weight: 500;
88
119
  line-height: 20px;
120
+ flex: 1 0 0;
121
+ align-self: stretch;
89
122
  color: cm_grey_400;
90
123
  }
91
124
 
@@ -105,27 +138,38 @@
105
138
  color: cm_grey_400;
106
139
  margin-top: 16px;
107
140
  }
108
-
109
- .skillInformationNumber {
110
- color: #000;
141
+ .noDescriptionSpacing {
142
+ margin-top: 48px ;
111
143
  }
112
144
 
145
+
113
146
  .progressContainer {
114
147
  display: flex;
115
148
  align-items: center;
116
149
  gap: 8px;
117
- margin: 16px 0 40px 0;
118
150
  }
119
151
 
120
152
  .progressInformationNumber {
153
+ font-size: 14px;
154
+ font-weight: 600;
121
155
  color: cm_grey_500;
156
+ flex-shrink: 0;
157
+ }
158
+
159
+ .progressBarRow {
160
+ display: flex;
161
+ align-items: center;
162
+ flex-direction: row;
163
+ width: 100%;
164
+
165
+ gap: 8px;
122
166
  }
123
167
 
124
168
  .progressBarWrapper {
125
169
  position: relative;
126
170
  left: 0;
127
171
  max-width: 300px;
128
- width: 100%;
172
+ flex: 1;
129
173
  height: 4px;
130
174
  border-radius: 2px;
131
175
  overflow: hidden;
@@ -133,27 +177,41 @@
133
177
  }
134
178
 
135
179
  .progress {
136
- display: block;
180
+ display: flex;
137
181
  height: 8px;
138
182
  animation: progressbar 2s ease-in-out;
139
183
  }
140
184
 
141
185
  @media tablet {
142
- .ctaContainer {
143
- flex-direction: column;
186
+ .topSection {
187
+ flex-direction: row;
188
+ align-items: flex-start;
144
189
  }
145
-
146
- .ctaWrapper {
147
- margin-top: 32px;
190
+ .leftSide,
191
+ .rightSide {
192
+ width: 50%;
148
193
  }
149
194
  }
150
195
 
151
196
  @media mobile {
197
+ .topSection {
198
+ flex-direction: column;
199
+ align-items: center;
200
+ }
201
+
202
+ .leftSide,
203
+ .rightSide {
204
+ width: 100%;
205
+ align-items: center;
206
+ }
207
+
152
208
  .ctaWrapper {
153
209
  flex-direction: column;
210
+ gap: 8px;
211
+ margin-top: 16px;
212
+ }
154
213
 
155
- button {
156
- width: 100% !important;
157
- }
214
+ .ctaWrapper button {
215
+ width: 100% !important;
158
216
  }
159
217
  }
@@ -4,10 +4,12 @@ export declare const COLORS: {
4
4
  readonly cm_negative_200: "#B81400";
5
5
  readonly positive: "#35CC7F";
6
6
  readonly cm_positive_200: "#05944F";
7
- readonly white: "#ffffff";
7
+ readonly white: "#FFFFFF";
8
8
  readonly cm_blue_50: "#f1f6fe";
9
9
  readonly cm_grey_400: "#9999A8";
10
10
  readonly cm_grey_800: "#171721";
11
+ readonly cm_grey_150: "#E1E1E3";
12
+ readonly cm_grey_200: "#E1E1E3";
11
13
  readonly cm_primary_blue: "#0061FF";
12
14
  readonly primary_100: "#D6E6FF";
13
15
  readonly primary_600: "#0051D6";
@@ -19,6 +21,8 @@ export declare const COLORS: {
19
21
  readonly yellow_100: "#FFF9D1";
20
22
  readonly red_700: "#A30000";
21
23
  readonly red_100: "#FFD1D1";
24
+ readonly cm_positive_500: "#35CC7F";
25
+ readonly purple_100: "#DDD1FF";
22
26
  };
23
27
  export declare type Colors = typeof COLORS;
24
28
  //# sourceMappingURL=colors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/variables/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;CAqBT,CAAC;AAEX,oBAAY,MAAM,GAAG,OAAO,MAAM,CAAC"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/variables/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CAyBT,CAAC;AAEX,oBAAY,MAAM,GAAG,OAAO,MAAM,CAAC"}
@@ -4,10 +4,12 @@ export const COLORS = {
4
4
  cm_negative_200: '#B81400',
5
5
  positive: '#35CC7F',
6
6
  cm_positive_200: '#05944F',
7
- white: '#ffffff',
7
+ white: '#FFFFFF',
8
8
  cm_blue_50: '#f1f6fe',
9
9
  cm_grey_400: '#9999A8',
10
10
  cm_grey_800: '#171721',
11
+ cm_grey_150: '#E1E1E3',
12
+ cm_grey_200: '#E1E1E3',
11
13
  cm_primary_blue: '#0061FF',
12
14
  primary_100: '#D6E6FF',
13
15
  primary_600: '#0051D6',
@@ -18,6 +20,8 @@ export const COLORS = {
18
20
  yellow_700: '#A38300',
19
21
  yellow_100: '#FFF9D1',
20
22
  red_700: '#A30000',
21
- red_100: '#FFD1D1'
23
+ red_100: '#FFD1D1',
24
+ cm_positive_500: '#35CC7F',
25
+ purple_100: '#DDD1FF'
22
26
  };
23
27
  //# sourceMappingURL=colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","names":["COLORS","gray","negative","cm_negative_200","positive","cm_positive_200","white","cm_blue_50","cm_grey_400","cm_grey_800","cm_primary_blue","primary_100","primary_600","cm_grey_500","cm_grey_700","cm_yellow_400","brand","yellow_700","yellow_100","red_700","red_100"],"sources":["../../src/variables/colors.ts"],"sourcesContent":["export const COLORS = {\n gray: '#EAEAEB',\n negative: '#ed3436',\n cm_negative_200: '#B81400',\n positive: '#35CC7F',\n cm_positive_200: '#05944F',\n white: '#ffffff',\n cm_blue_50: '#f1f6fe',\n cm_grey_400: '#9999A8',\n cm_grey_800: '#171721',\n cm_primary_blue: '#0061FF',\n primary_100: '#D6E6FF',\n primary_600: '#0051D6',\n cm_grey_500: '#515161',\n cm_grey_700: '#1D1D2B',\n cm_yellow_400: '#bd7e00',\n brand: '#00B0FF',\n yellow_700: '#A38300',\n yellow_100: '#FFF9D1',\n red_700: '#A30000',\n red_100: '#FFD1D1'\n} as const;\n\nexport type Colors = typeof COLORS;\n"],"mappings":"AAAA,OAAO,MAAMA,MAAM,GAAG;EACpBC,IAAI,EAAE,SAAS;EACfC,QAAQ,EAAE,SAAS;EACnBC,eAAe,EAAE,SAAS;EAC1BC,QAAQ,EAAE,SAAS;EACnBC,eAAe,EAAE,SAAS;EAC1BC,KAAK,EAAE,SAAS;EAChBC,UAAU,EAAE,SAAS;EACrBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,SAAS;EAC1BC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,aAAa,EAAE,SAAS;EACxBC,KAAK,EAAE,SAAS;EAChBC,UAAU,EAAE,SAAS;EACrBC,UAAU,EAAE,SAAS;EACrBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE;AACX,CAAU","ignoreList":[]}
1
+ {"version":3,"file":"colors.js","names":["COLORS","gray","negative","cm_negative_200","positive","cm_positive_200","white","cm_blue_50","cm_grey_400","cm_grey_800","cm_grey_150","cm_grey_200","cm_primary_blue","primary_100","primary_600","cm_grey_500","cm_grey_700","cm_yellow_400","brand","yellow_700","yellow_100","red_700","red_100","cm_positive_500","purple_100"],"sources":["../../src/variables/colors.ts"],"sourcesContent":["export const COLORS = {\n gray: '#EAEAEB',\n negative: '#ed3436',\n cm_negative_200: '#B81400',\n positive: '#35CC7F',\n cm_positive_200: '#05944F',\n white: '#FFFFFF',\n cm_blue_50: '#f1f6fe',\n cm_grey_400: '#9999A8',\n cm_grey_800: '#171721',\n cm_grey_150: '#E1E1E3',\n cm_grey_200: '#E1E1E3',\n cm_primary_blue: '#0061FF',\n primary_100: '#D6E6FF',\n primary_600: '#0051D6',\n cm_grey_500: '#515161',\n cm_grey_700: '#1D1D2B',\n cm_yellow_400: '#bd7e00',\n brand: '#00B0FF',\n yellow_700: '#A38300',\n yellow_100: '#FFF9D1',\n red_700: '#A30000',\n red_100: '#FFD1D1',\n cm_positive_500: '#35CC7F',\n purple_100: '#DDD1FF'\n} as const;\n\nexport type Colors = typeof COLORS;\n"],"mappings":"AAAA,OAAO,MAAMA,MAAM,GAAG;EACpBC,IAAI,EAAE,SAAS;EACfC,QAAQ,EAAE,SAAS;EACnBC,eAAe,EAAE,SAAS;EAC1BC,QAAQ,EAAE,SAAS;EACnBC,eAAe,EAAE,SAAS;EAC1BC,KAAK,EAAE,SAAS;EAChBC,UAAU,EAAE,SAAS;EACrBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,SAAS;EAC1BC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,aAAa,EAAE,SAAS;EACxBC,KAAK,EAAE,SAAS;EAChBC,UAAU,EAAE,SAAS;EACrBC,UAAU,EAAE,SAAS;EACrBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,eAAe,EAAE,SAAS;EAC1BC,UAAU,EAAE;AACd,CAAU","ignoreList":[]}