@coorpacademy/components 10.8.0 → 10.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,79 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import getOr from 'lodash/fp/getOr';
6
+ import Provider from '../../../atom/provider';
7
+ import ButtonLink from '../../../atom/button-link';
8
+ import style from './style.css';
9
+
10
+ const ReviewBanner = (props, context) => {
11
+ const {
12
+ title,
13
+ subtitle,
14
+ cta
15
+ } = props;
16
+ const {
17
+ skin
18
+ } = context;
19
+ const primary = getOr('#00B0FF', 'common.primary', skin);
20
+
21
+ const buttonProps = _extends(_extends({}, cta), {}, {
22
+ type: 'primary'
23
+ });
24
+
25
+ const ctaStyle = {
26
+ background: primary
27
+ };
28
+ return /*#__PURE__*/React.createElement("div", {
29
+ className: style.root,
30
+ "data-name": "start-review-banner"
31
+ }, /*#__PURE__*/React.createElement("div", {
32
+ className: style.container
33
+ }, /*#__PURE__*/React.createElement("div", {
34
+ className: style.banner
35
+ }, /*#__PURE__*/React.createElement("div", {
36
+ className: style.left,
37
+ role: "img",
38
+ "aria-label": "Left image container"
39
+ }, /*#__PURE__*/React.createElement("img", {
40
+ className: style.image,
41
+ src: "https://static.coorpacademy.com/site/book.png",
42
+ alt: "Book image"
43
+ })), /*#__PURE__*/React.createElement("div", {
44
+ className: style.middle
45
+ }, /*#__PURE__*/React.createElement("span", {
46
+ className: style.title,
47
+ "data-name": "review-banner-title",
48
+ "aria-label": "{title}"
49
+ }, title), /*#__PURE__*/React.createElement("span", {
50
+ className: style.subtitle,
51
+ "data-name": "review-banner-subtitle",
52
+ "aria-label": "{subtitle}"
53
+ }, subtitle), /*#__PURE__*/React.createElement(ButtonLink, _extends({}, buttonProps, {
54
+ className: style.cta,
55
+ customStyle: ctaStyle
56
+ }))), /*#__PURE__*/React.createElement("div", {
57
+ className: style.right,
58
+ role: "img",
59
+ "aria-label": "Rigth image container"
60
+ }, /*#__PURE__*/React.createElement("img", {
61
+ className: style.image,
62
+ src: "https://static.coorpacademy.com/site/dumbell.png",
63
+ alt: "Dumbbell image"
64
+ })))));
65
+ };
66
+
67
+ ReviewBanner.propTypes = process.env.NODE_ENV !== "production" ? {
68
+ title: PropTypes.string,
69
+ subtitle: PropTypes.string,
70
+ cta: PropTypes.shape({
71
+ onClick: PropTypes.func,
72
+ label: PropTypes.string
73
+ })
74
+ } : {};
75
+ ReviewBanner.contextTypes = {
76
+ skin: Provider.childContextTypes.skin
77
+ };
78
+ export default React.memo(ReviewBanner);
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/molecule/dashboard/review-banner/index.js"],"names":["React","PropTypes","getOr","Provider","ButtonLink","style","ReviewBanner","props","context","title","subtitle","cta","skin","primary","buttonProps","type","ctaStyle","background","root","container","banner","left","image","middle","right","propTypes","string","shape","onClick","func","label","contextTypes","childContextTypes","memo"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,iBAAlB;AACA,OAAOC,QAAP,MAAqB,wBAArB;AACA,OAAOC,UAAP,MAAuB,2BAAvB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,YAAY,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;AACvC,QAAM;AAACC,IAAAA,KAAD;AAAQC,IAAAA,QAAR;AAAkBC,IAAAA;AAAlB,MAAyBJ,KAA/B;AACA,QAAM;AAACK,IAAAA;AAAD,MAASJ,OAAf;AACA,QAAMK,OAAO,GAAGX,KAAK,CAAC,SAAD,EAAY,gBAAZ,EAA8BU,IAA9B,CAArB;;AAEA,QAAME,WAAW,yBACZH,GADY;AAEfI,IAAAA,IAAI,EAAE;AAFS,IAAjB;;AAIA,QAAMC,QAAQ,GAAG;AACfC,IAAAA,UAAU,EAAEJ;AADG,GAAjB;AAIA,sBACE;AAAK,IAAA,SAAS,EAAER,KAAK,CAACa,IAAtB;AAA4B,iBAAU;AAAtC,kBACE;AAAK,IAAA,SAAS,EAAEb,KAAK,CAACc;AAAtB,kBACE;AAAK,IAAA,SAAS,EAAEd,KAAK,CAACe;AAAtB,kBACE;AAAK,IAAA,SAAS,EAAEf,KAAK,CAACgB,IAAtB;AAA4B,IAAA,IAAI,EAAC,KAAjC;AAAuC,kBAAW;AAAlD,kBACE;AACE,IAAA,SAAS,EAAEhB,KAAK,CAACiB,KADnB;AAEE,IAAA,GAAG,EAAC,+CAFN;AAGE,IAAA,GAAG,EAAC;AAHN,IADF,CADF,eAQE;AAAK,IAAA,SAAS,EAAEjB,KAAK,CAACkB;AAAtB,kBACE;AAAM,IAAA,SAAS,EAAElB,KAAK,CAACI,KAAvB;AAA8B,iBAAU,qBAAxC;AAA8D,kBAAW;AAAzE,KACGA,KADH,CADF,eAIE;AACE,IAAA,SAAS,EAAEJ,KAAK,CAACK,QADnB;AAEE,iBAAU,wBAFZ;AAGE,kBAAW;AAHb,KAKGA,QALH,CAJF,eAWE,oBAAC,UAAD,eAAgBI,WAAhB;AAA6B,IAAA,SAAS,EAAET,KAAK,CAACM,GAA9C;AAAmD,IAAA,WAAW,EAAEK;AAAhE,KAXF,CARF,eAqBE;AAAK,IAAA,SAAS,EAAEX,KAAK,CAACmB,KAAtB;AAA6B,IAAA,IAAI,EAAC,KAAlC;AAAwC,kBAAW;AAAnD,kBACE;AACE,IAAA,SAAS,EAAEnB,KAAK,CAACiB,KADnB;AAEE,IAAA,GAAG,EAAC,kDAFN;AAGE,IAAA,GAAG,EAAC;AAHN,IADF,CArBF,CADF,CADF,CADF;AAmCD,CAhDD;;AAkDAhB,YAAY,CAACmB,SAAb,2CAAyB;AACvBhB,EAAAA,KAAK,EAAER,SAAS,CAACyB,MADM;AAEvBhB,EAAAA,QAAQ,EAAET,SAAS,CAACyB,MAFG;AAGvBf,EAAAA,GAAG,EAAEV,SAAS,CAAC0B,KAAV,CAAgB;AACnBC,IAAAA,OAAO,EAAE3B,SAAS,CAAC4B,IADA;AAEnBC,IAAAA,KAAK,EAAE7B,SAAS,CAACyB;AAFE,GAAhB;AAHkB,CAAzB;AASApB,YAAY,CAACyB,YAAb,GAA4B;AAC1BnB,EAAAA,IAAI,EAAET,QAAQ,CAAC6B,iBAAT,CAA2BpB;AADP,CAA5B;AAIA,eAAeZ,KAAK,CAACiC,IAAN,CAAW3B,YAAX,CAAf","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport getOr from 'lodash/fp/getOr';\nimport Provider from '../../../atom/provider';\nimport ButtonLink from '../../../atom/button-link';\nimport style from './style.css';\n\nconst ReviewBanner = (props, context) => {\n const {title, subtitle, cta} = props;\n const {skin} = context;\n const primary = getOr('#00B0FF', 'common.primary', skin);\n\n const buttonProps = {\n ...cta,\n type: 'primary'\n };\n const ctaStyle = {\n background: primary\n };\n\n return (\n <div className={style.root} data-name=\"start-review-banner\">\n <div className={style.container}>\n <div className={style.banner}>\n <div className={style.left} role=\"img\" aria-label=\"Left image container\">\n <img\n className={style.image}\n src=\"https://static.coorpacademy.com/site/book.png\"\n alt=\"Book image\"\n />\n </div>\n <div className={style.middle}>\n <span className={style.title} data-name=\"review-banner-title\" aria-label=\"{title}\">\n {title}\n </span>\n <span\n className={style.subtitle}\n data-name=\"review-banner-subtitle\"\n aria-label=\"{subtitle}\"\n >\n {subtitle}\n </span>\n <ButtonLink {...buttonProps} className={style.cta} customStyle={ctaStyle} />\n </div>\n <div className={style.right} role=\"img\" aria-label=\"Rigth image container\">\n <img\n className={style.image}\n src=\"https://static.coorpacademy.com/site/dumbell.png\"\n alt=\"Dumbbell image\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nReviewBanner.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n cta: PropTypes.shape({\n onClick: PropTypes.func,\n label: PropTypes.string\n })\n};\n\nReviewBanner.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nexport default React.memo(ReviewBanner);\n"],"file":"index.js"}
@@ -0,0 +1,186 @@
1
+ @value breakpoints: "../../../variables/breakpoints.css";
2
+ @value colors: "../../../variables/colors.css";
3
+ @value tablet from breakpoints;
4
+ @value mobile from breakpoints;
5
+ @value white from colors;
6
+ @value battle_bg from colors;
7
+
8
+ .root {
9
+ display: flex;
10
+ justify-content: center;
11
+ padding: 24px 30px;
12
+ font-family: Gilroy;
13
+ }
14
+
15
+ .container {
16
+ width: 100%;
17
+ max-width: 1080px;
18
+ height: 214px;
19
+ display: flex;
20
+ justify-content: center;
21
+ position: relative;
22
+ top: 0px;
23
+ left: 0px;
24
+ background: battle_bg;
25
+ background-image: url(https://static.coorpacademy.com/site/startBattleBackground.png);
26
+ background-size: cover;
27
+ border-radius: 16px;
28
+ }
29
+
30
+ .container:hover .right, .container:hover .left {
31
+ animation-play-state: running;
32
+ }
33
+
34
+ .banner {
35
+ width: 100%;
36
+ height: 100%;
37
+ display: flex;
38
+ flex-direction: row;
39
+ align-items: center;
40
+ justify-content: space-between;
41
+ }
42
+
43
+ .left {
44
+ width: 210px;
45
+ height: 123px;
46
+ position: relative;
47
+ top: -57px;
48
+ left: 2%;
49
+ animation-play-state: paused;
50
+ animation-name: leftAnimation;
51
+ animation-duration: 2s;
52
+ animation-delay: 0;
53
+ animation-iteration-count: infinite;
54
+ animation-direction: forward;
55
+ animation-timing-function: ease-in-out;
56
+ }
57
+
58
+ .right {
59
+ position: relative;
60
+ bottom: -32px;
61
+ width: 210px;
62
+ height: 180px;
63
+ right: 2%;
64
+ animation-play-state: paused;
65
+ animation-name: rightAnimation;
66
+ animation-duration: 2s;
67
+ animation-delay: 0;
68
+ animation-iteration-count: infinite;
69
+ animation-direction: forward;
70
+ animation-timing-function: ease-in-out;
71
+ }
72
+
73
+ .image {
74
+ width: 100%;
75
+ height: 100%;
76
+ }
77
+
78
+ .middle {
79
+ display: flex;
80
+ flex-direction: column;
81
+ align-items: center;
82
+ }
83
+
84
+ .title {
85
+ padding-top: 30px;
86
+ font-weight: 800;
87
+ font-size: 48px;
88
+ line-height: 59px;
89
+ color: white;
90
+ display: block;
91
+ }
92
+
93
+ .subtitle {
94
+ font-style: normal;
95
+ font-weight: normal;
96
+ font-size: 20px;
97
+ line-height: 24px;
98
+ opacity: 0.9;
99
+ display: block;
100
+ color: white;
101
+ text-align: center;
102
+ }
103
+
104
+ .cta {
105
+ margin-top: 22px;
106
+ max-width: 200px;
107
+ border-radius: 36px;
108
+ font-style: normal;
109
+ font-weight: bold;
110
+ font-size: 16px;
111
+ }
112
+
113
+ @media tablet {
114
+ .left {
115
+ width: 170px;
116
+ height: 100px;
117
+ top: -67px
118
+ }
119
+
120
+ .right {
121
+ width: 170px;
122
+ height: 146px;
123
+ bottom: -45px;
124
+ }
125
+
126
+ .title {
127
+ padding-top: 5px;
128
+ font-size: 32px;
129
+ line-height: 39px;
130
+ }
131
+
132
+ .subtitle {
133
+ font-size: 16px;
134
+ line-height: 19px;
135
+ }
136
+
137
+ .cta {
138
+ max-width: 175px;
139
+ }
140
+ }
141
+
142
+ @media mobile {
143
+ .container {
144
+ height: 161px;
145
+ max-width: 327px;
146
+ }
147
+
148
+ .banner {
149
+ justify-content: center;
150
+ }
151
+
152
+ .right {
153
+ display: none;
154
+ }
155
+
156
+ .left {
157
+ display: none;
158
+ }
159
+
160
+ .title {
161
+ padding-top: 5px;
162
+ font-size: 32px;
163
+ line-height: 39px;
164
+ }
165
+
166
+ .subtitle {
167
+ font-size: 16px;
168
+ line-height: 19px;
169
+ }
170
+
171
+ .cta {
172
+ max-width: 150px;
173
+ }
174
+ }
175
+
176
+ @keyframes rightAnimation {
177
+ 0% {transform: translate3d(0, 10px, 0);}
178
+ 50% {transform: translate3d(0, 0, 0);}
179
+ 100% {transform: translate3d(0, 10px, 0);}
180
+ }
181
+
182
+ @keyframes leftAnimation {
183
+ 0% {transform: translate3d(0, 0, 0);}
184
+ 50% {transform: translate3d(0, 10px, 0);}
185
+ 100% {transform: translate3d(0, 0, 0);}
186
+ }
@@ -0,0 +1,11 @@
1
+ export default {
2
+ props: {
3
+ title: 'Revision mode',
4
+ subtitle: 'Lorem ipsum dolor sit amet consectur',
5
+ cta: {
6
+ label: 'Start revision',
7
+ onClick: () => {}
8
+ }
9
+ }
10
+ };
11
+ //# sourceMappingURL=default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/molecule/dashboard/review-banner/test/fixtures/default.js"],"names":["props","title","subtitle","cta","label","onClick"],"mappings":"AAAA,eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAE,eADF;AAELC,IAAAA,QAAQ,EAAE,sCAFL;AAGLC,IAAAA,GAAG,EAAE;AACHC,MAAAA,KAAK,EAAE,gBADJ;AAEHC,MAAAA,OAAO,EAAE,MAAM,CAAE;AAFd;AAHA;AADM,CAAf","sourcesContent":["export default {\n props: {\n title: 'Revision mode',\n subtitle: 'Lorem ipsum dolor sit amet consectur',\n cta: {\n label: 'Start revision',\n onClick: () => {}\n }\n }\n};\n"],"file":"default.js"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var _react = _interopRequireDefault(require("react"));
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _getOr = _interopRequireDefault(require("lodash/fp/getOr"));
11
+
12
+ var _provider = _interopRequireDefault(require("../../../atom/provider"));
13
+
14
+ var _buttonLink = _interopRequireDefault(require("../../../atom/button-link"));
15
+
16
+ var _style = _interopRequireDefault(require("./style.css"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+
22
+ const ReviewBanner = (props, context) => {
23
+ const {
24
+ title,
25
+ subtitle,
26
+ cta
27
+ } = props;
28
+ const {
29
+ skin
30
+ } = context;
31
+ const primary = (0, _getOr.default)('#00B0FF', 'common.primary', skin);
32
+
33
+ const buttonProps = _extends(_extends({}, cta), {}, {
34
+ type: 'primary'
35
+ });
36
+
37
+ const ctaStyle = {
38
+ background: primary
39
+ };
40
+ return /*#__PURE__*/_react.default.createElement("div", {
41
+ className: _style.default.root,
42
+ "data-name": "start-review-banner"
43
+ }, /*#__PURE__*/_react.default.createElement("div", {
44
+ className: _style.default.container
45
+ }, /*#__PURE__*/_react.default.createElement("div", {
46
+ className: _style.default.banner
47
+ }, /*#__PURE__*/_react.default.createElement("div", {
48
+ className: _style.default.left,
49
+ role: "img",
50
+ "aria-label": "Left image container"
51
+ }, /*#__PURE__*/_react.default.createElement("img", {
52
+ className: _style.default.image,
53
+ src: "https://static.coorpacademy.com/site/book.png",
54
+ alt: "Book image"
55
+ })), /*#__PURE__*/_react.default.createElement("div", {
56
+ className: _style.default.middle
57
+ }, /*#__PURE__*/_react.default.createElement("span", {
58
+ className: _style.default.title,
59
+ "data-name": "review-banner-title",
60
+ "aria-label": "{title}"
61
+ }, title), /*#__PURE__*/_react.default.createElement("span", {
62
+ className: _style.default.subtitle,
63
+ "data-name": "review-banner-subtitle",
64
+ "aria-label": "{subtitle}"
65
+ }, subtitle), /*#__PURE__*/_react.default.createElement(_buttonLink.default, _extends({}, buttonProps, {
66
+ className: _style.default.cta,
67
+ customStyle: ctaStyle
68
+ }))), /*#__PURE__*/_react.default.createElement("div", {
69
+ className: _style.default.right,
70
+ role: "img",
71
+ "aria-label": "Rigth image container"
72
+ }, /*#__PURE__*/_react.default.createElement("img", {
73
+ className: _style.default.image,
74
+ src: "https://static.coorpacademy.com/site/dumbell.png",
75
+ alt: "Dumbbell image"
76
+ })))));
77
+ };
78
+
79
+ ReviewBanner.propTypes = process.env.NODE_ENV !== "production" ? {
80
+ title: _propTypes.default.string,
81
+ subtitle: _propTypes.default.string,
82
+ cta: _propTypes.default.shape({
83
+ onClick: _propTypes.default.func,
84
+ label: _propTypes.default.string
85
+ })
86
+ } : {};
87
+ ReviewBanner.contextTypes = {
88
+ skin: _provider.default.childContextTypes.skin
89
+ };
90
+
91
+ var _default = _react.default.memo(ReviewBanner);
92
+
93
+ exports.default = _default;
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/molecule/dashboard/review-banner/index.js"],"names":["ReviewBanner","props","context","title","subtitle","cta","skin","primary","buttonProps","type","ctaStyle","background","style","root","container","banner","left","image","middle","right","propTypes","PropTypes","string","shape","onClick","func","label","contextTypes","Provider","childContextTypes","React","memo"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,MAAMA,YAAY,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;AACvC,QAAM;AAACC,IAAAA,KAAD;AAAQC,IAAAA,QAAR;AAAkBC,IAAAA;AAAlB,MAAyBJ,KAA/B;AACA,QAAM;AAACK,IAAAA;AAAD,MAASJ,OAAf;AACA,QAAMK,OAAO,GAAG,oBAAM,SAAN,EAAiB,gBAAjB,EAAmCD,IAAnC,CAAhB;;AAEA,QAAME,WAAW,yBACZH,GADY;AAEfI,IAAAA,IAAI,EAAE;AAFS,IAAjB;;AAIA,QAAMC,QAAQ,GAAG;AACfC,IAAAA,UAAU,EAAEJ;AADG,GAAjB;AAIA,sBACE;AAAK,IAAA,SAAS,EAAEK,eAAMC,IAAtB;AAA4B,iBAAU;AAAtC,kBACE;AAAK,IAAA,SAAS,EAAED,eAAME;AAAtB,kBACE;AAAK,IAAA,SAAS,EAAEF,eAAMG;AAAtB,kBACE;AAAK,IAAA,SAAS,EAAEH,eAAMI,IAAtB;AAA4B,IAAA,IAAI,EAAC,KAAjC;AAAuC,kBAAW;AAAlD,kBACE;AACE,IAAA,SAAS,EAAEJ,eAAMK,KADnB;AAEE,IAAA,GAAG,EAAC,+CAFN;AAGE,IAAA,GAAG,EAAC;AAHN,IADF,CADF,eAQE;AAAK,IAAA,SAAS,EAAEL,eAAMM;AAAtB,kBACE;AAAM,IAAA,SAAS,EAAEN,eAAMT,KAAvB;AAA8B,iBAAU,qBAAxC;AAA8D,kBAAW;AAAzE,KACGA,KADH,CADF,eAIE;AACE,IAAA,SAAS,EAAES,eAAMR,QADnB;AAEE,iBAAU,wBAFZ;AAGE,kBAAW;AAHb,KAKGA,QALH,CAJF,eAWE,6BAAC,mBAAD,eAAgBI,WAAhB;AAA6B,IAAA,SAAS,EAAEI,eAAMP,GAA9C;AAAmD,IAAA,WAAW,EAAEK;AAAhE,KAXF,CARF,eAqBE;AAAK,IAAA,SAAS,EAAEE,eAAMO,KAAtB;AAA6B,IAAA,IAAI,EAAC,KAAlC;AAAwC,kBAAW;AAAnD,kBACE;AACE,IAAA,SAAS,EAAEP,eAAMK,KADnB;AAEE,IAAA,GAAG,EAAC,kDAFN;AAGE,IAAA,GAAG,EAAC;AAHN,IADF,CArBF,CADF,CADF,CADF;AAmCD,CAhDD;;AAkDAjB,YAAY,CAACoB,SAAb,2CAAyB;AACvBjB,EAAAA,KAAK,EAAEkB,mBAAUC,MADM;AAEvBlB,EAAAA,QAAQ,EAAEiB,mBAAUC,MAFG;AAGvBjB,EAAAA,GAAG,EAAEgB,mBAAUE,KAAV,CAAgB;AACnBC,IAAAA,OAAO,EAAEH,mBAAUI,IADA;AAEnBC,IAAAA,KAAK,EAAEL,mBAAUC;AAFE,GAAhB;AAHkB,CAAzB;AASAtB,YAAY,CAAC2B,YAAb,GAA4B;AAC1BrB,EAAAA,IAAI,EAAEsB,kBAASC,iBAAT,CAA2BvB;AADP,CAA5B;;eAIewB,eAAMC,IAAN,CAAW/B,YAAX,C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport getOr from 'lodash/fp/getOr';\nimport Provider from '../../../atom/provider';\nimport ButtonLink from '../../../atom/button-link';\nimport style from './style.css';\n\nconst ReviewBanner = (props, context) => {\n const {title, subtitle, cta} = props;\n const {skin} = context;\n const primary = getOr('#00B0FF', 'common.primary', skin);\n\n const buttonProps = {\n ...cta,\n type: 'primary'\n };\n const ctaStyle = {\n background: primary\n };\n\n return (\n <div className={style.root} data-name=\"start-review-banner\">\n <div className={style.container}>\n <div className={style.banner}>\n <div className={style.left} role=\"img\" aria-label=\"Left image container\">\n <img\n className={style.image}\n src=\"https://static.coorpacademy.com/site/book.png\"\n alt=\"Book image\"\n />\n </div>\n <div className={style.middle}>\n <span className={style.title} data-name=\"review-banner-title\" aria-label=\"{title}\">\n {title}\n </span>\n <span\n className={style.subtitle}\n data-name=\"review-banner-subtitle\"\n aria-label=\"{subtitle}\"\n >\n {subtitle}\n </span>\n <ButtonLink {...buttonProps} className={style.cta} customStyle={ctaStyle} />\n </div>\n <div className={style.right} role=\"img\" aria-label=\"Rigth image container\">\n <img\n className={style.image}\n src=\"https://static.coorpacademy.com/site/dumbell.png\"\n alt=\"Dumbbell image\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nReviewBanner.propTypes = {\n title: PropTypes.string,\n subtitle: PropTypes.string,\n cta: PropTypes.shape({\n onClick: PropTypes.func,\n label: PropTypes.string\n })\n};\n\nReviewBanner.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nexport default React.memo(ReviewBanner);\n"],"file":"index.js"}
@@ -0,0 +1,186 @@
1
+ @value breakpoints: "../../../variables/breakpoints.css";
2
+ @value colors: "../../../variables/colors.css";
3
+ @value tablet from breakpoints;
4
+ @value mobile from breakpoints;
5
+ @value white from colors;
6
+ @value battle_bg from colors;
7
+
8
+ .root {
9
+ display: flex;
10
+ justify-content: center;
11
+ padding: 24px 30px;
12
+ font-family: Gilroy;
13
+ }
14
+
15
+ .container {
16
+ width: 100%;
17
+ max-width: 1080px;
18
+ height: 214px;
19
+ display: flex;
20
+ justify-content: center;
21
+ position: relative;
22
+ top: 0px;
23
+ left: 0px;
24
+ background: battle_bg;
25
+ background-image: url(https://static.coorpacademy.com/site/startBattleBackground.png);
26
+ background-size: cover;
27
+ border-radius: 16px;
28
+ }
29
+
30
+ .container:hover .right, .container:hover .left {
31
+ animation-play-state: running;
32
+ }
33
+
34
+ .banner {
35
+ width: 100%;
36
+ height: 100%;
37
+ display: flex;
38
+ flex-direction: row;
39
+ align-items: center;
40
+ justify-content: space-between;
41
+ }
42
+
43
+ .left {
44
+ width: 210px;
45
+ height: 123px;
46
+ position: relative;
47
+ top: -57px;
48
+ left: 2%;
49
+ animation-play-state: paused;
50
+ animation-name: leftAnimation;
51
+ animation-duration: 2s;
52
+ animation-delay: 0;
53
+ animation-iteration-count: infinite;
54
+ animation-direction: forward;
55
+ animation-timing-function: ease-in-out;
56
+ }
57
+
58
+ .right {
59
+ position: relative;
60
+ bottom: -32px;
61
+ width: 210px;
62
+ height: 180px;
63
+ right: 2%;
64
+ animation-play-state: paused;
65
+ animation-name: rightAnimation;
66
+ animation-duration: 2s;
67
+ animation-delay: 0;
68
+ animation-iteration-count: infinite;
69
+ animation-direction: forward;
70
+ animation-timing-function: ease-in-out;
71
+ }
72
+
73
+ .image {
74
+ width: 100%;
75
+ height: 100%;
76
+ }
77
+
78
+ .middle {
79
+ display: flex;
80
+ flex-direction: column;
81
+ align-items: center;
82
+ }
83
+
84
+ .title {
85
+ padding-top: 30px;
86
+ font-weight: 800;
87
+ font-size: 48px;
88
+ line-height: 59px;
89
+ color: white;
90
+ display: block;
91
+ }
92
+
93
+ .subtitle {
94
+ font-style: normal;
95
+ font-weight: normal;
96
+ font-size: 20px;
97
+ line-height: 24px;
98
+ opacity: 0.9;
99
+ display: block;
100
+ color: white;
101
+ text-align: center;
102
+ }
103
+
104
+ .cta {
105
+ margin-top: 22px;
106
+ max-width: 200px;
107
+ border-radius: 36px;
108
+ font-style: normal;
109
+ font-weight: bold;
110
+ font-size: 16px;
111
+ }
112
+
113
+ @media tablet {
114
+ .left {
115
+ width: 170px;
116
+ height: 100px;
117
+ top: -67px
118
+ }
119
+
120
+ .right {
121
+ width: 170px;
122
+ height: 146px;
123
+ bottom: -45px;
124
+ }
125
+
126
+ .title {
127
+ padding-top: 5px;
128
+ font-size: 32px;
129
+ line-height: 39px;
130
+ }
131
+
132
+ .subtitle {
133
+ font-size: 16px;
134
+ line-height: 19px;
135
+ }
136
+
137
+ .cta {
138
+ max-width: 175px;
139
+ }
140
+ }
141
+
142
+ @media mobile {
143
+ .container {
144
+ height: 161px;
145
+ max-width: 327px;
146
+ }
147
+
148
+ .banner {
149
+ justify-content: center;
150
+ }
151
+
152
+ .right {
153
+ display: none;
154
+ }
155
+
156
+ .left {
157
+ display: none;
158
+ }
159
+
160
+ .title {
161
+ padding-top: 5px;
162
+ font-size: 32px;
163
+ line-height: 39px;
164
+ }
165
+
166
+ .subtitle {
167
+ font-size: 16px;
168
+ line-height: 19px;
169
+ }
170
+
171
+ .cta {
172
+ max-width: 150px;
173
+ }
174
+ }
175
+
176
+ @keyframes rightAnimation {
177
+ 0% {transform: translate3d(0, 10px, 0);}
178
+ 50% {transform: translate3d(0, 0, 0);}
179
+ 100% {transform: translate3d(0, 10px, 0);}
180
+ }
181
+
182
+ @keyframes leftAnimation {
183
+ 0% {transform: translate3d(0, 0, 0);}
184
+ 50% {transform: translate3d(0, 10px, 0);}
185
+ 100% {transform: translate3d(0, 0, 0);}
186
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _default = {
6
+ props: {
7
+ title: 'Revision mode',
8
+ subtitle: 'Lorem ipsum dolor sit amet consectur',
9
+ cta: {
10
+ label: 'Start revision',
11
+ onClick: () => {}
12
+ }
13
+ }
14
+ };
15
+ exports.default = _default;
16
+ //# sourceMappingURL=default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/molecule/dashboard/review-banner/test/fixtures/default.js"],"names":["props","title","subtitle","cta","label","onClick"],"mappings":";;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAE,eADF;AAELC,IAAAA,QAAQ,EAAE,sCAFL;AAGLC,IAAAA,GAAG,EAAE;AACHC,MAAAA,KAAK,EAAE,gBADJ;AAEHC,MAAAA,OAAO,EAAE,MAAM,CAAE;AAFd;AAHA;AADM,C","sourcesContent":["export default {\n props: {\n title: 'Revision mode',\n subtitle: 'Lorem ipsum dolor sit amet consectur',\n cta: {\n label: 'Start revision',\n onClick: () => {}\n }\n }\n};\n"],"file":"default.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coorpacademy/components",
3
- "version": "10.8.0",
3
+ "version": "10.9.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -119,5 +119,5 @@
119
119
  "webpack-hot-middleware": "^2.25.0"
120
120
  },
121
121
  "author": "CoorpAcademy",
122
- "gitHead": "8209ca19069e80266b8c330b0a7eccb63dc2bd51"
122
+ "gitHead": "ec3f54e338aa0f67e7bdc49c45e29afc9871f98a"
123
123
  }