gatsby-matrix-theme 37.0.11 → 37.0.13

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## [37.0.13](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v37.0.12...v37.0.13) (2023-11-27)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * cards ([3134b75](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/3134b75ac746398d3c99a0e79bedb6ea4b92490f))
7
+
8
+ ## [37.0.12](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v37.0.11...v37.0.12) (2023-11-27)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * module pageContext ([09b3fad](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/09b3fadf5d3d3593c992df0206d40d9ba3d1912a))
14
+ * updated Wagering Calculator + Added Recommended Operators as seperate component ([d50b457](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/d50b457c5ce1b1b2f37edb86dec37888e8256921))
15
+
16
+
17
+ * Merge branch 'tm-3828-wagering-calculator' into 'master' ([2cb7907](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/2cb7907e2ed3a4410e24749ee88d9f5c3a6eaa3c))
18
+
1
19
  ## [37.0.11](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v37.0.10...v37.0.11) (2023-11-24)
2
20
 
3
21
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-matrix-theme",
3
- "version": "37.0.11",
3
+ "version": "37.0.13",
4
4
  "main": "index.js",
5
5
  "description": "Matrix Theme NPM Package",
6
6
  "author": "",
@@ -0,0 +1,64 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { prettyTracker, getExtraField } from 'gatsby-core-theme/src/helpers/getters';
5
+
6
+ import Bonus from 'gatsby-core-theme/src/components/molecules/bonus-box/template-four';
7
+ import OperatorCta from 'gatsby-core-theme/src/components/atoms/button/operator-cta';
8
+ import OperatorDetails from '../../molecules/operator-details';
9
+ import Coupon from '../coupon';
10
+ import styles from './recommended-operators.module.scss';
11
+
12
+ const RecommendedOperators = ({
13
+ showCouponCode = false,
14
+ showRating = false,
15
+ title = 'Recommended Casinos:',
16
+ buttonType = 'primary',
17
+ operators,
18
+ }) => (
19
+ <div className={styles.reccommendedCasinos}>
20
+ <h3>{title}</h3>
21
+ {operators.slice(0, 3).map((operator) => {
22
+ const prettyLink = prettyTracker(operator, 'main', false);
23
+ const couponCode = getExtraField(operator.extra_fields, 'coupon_code');
24
+
25
+ return (
26
+ <div>
27
+ <a
28
+ href={prettyLink}
29
+ aria-label={operator.name}
30
+ target="_blank"
31
+ rel="nofollow noreferrer sponsored"
32
+ >
33
+ <OperatorDetails
34
+ showRating={showRating}
35
+ item={operator}
36
+ showAuthor={false}
37
+ showReviewLink={false}
38
+ costumeStyle={styles.operatorDetails}
39
+ />
40
+ </a>
41
+ <div className={styles.operatorBonus}>
42
+ <Bonus item={operator} tracker="main" />
43
+ </div>
44
+ {showCouponCode && <Coupon code={couponCode} />}
45
+ <OperatorCta operator={operator} tracker="main" buttonType={buttonType} />
46
+ </div>
47
+ );
48
+ })}
49
+ </div>
50
+ );
51
+
52
+ export default RecommendedOperators;
53
+
54
+ RecommendedOperators.propTypes = {
55
+ showCouponCode: PropTypes.bool,
56
+ showRating: PropTypes.bool,
57
+ title: PropTypes.string,
58
+ buttonType: PropTypes.string,
59
+ operators: PropTypes.arrayOf([
60
+ PropTypes.shape({
61
+ name: PropTypes.string,
62
+ }),
63
+ ]),
64
+ };
@@ -0,0 +1,156 @@
1
+ .reccommendedCasinos {
2
+ background-color: #fff;
3
+ padding: 0.8rem;
4
+ border-radius: 1.6rem;
5
+ margin-top: 1.6rem;
6
+
7
+ @include min(tablet){
8
+ padding: 1.6rem;
9
+ }
10
+
11
+ > h3 {
12
+ margin-top: 0;
13
+ margin-bottom: 0.8rem;
14
+ font-size: 1.8rem;
15
+ font-weight: 700;
16
+
17
+ @include min(tablet) {
18
+ font-size: 2rem;
19
+ }
20
+ }
21
+
22
+ > div {
23
+ margin-bottom: 0.8rem;
24
+ background: #f4f4f4;
25
+ display: grid;
26
+ align-items: center;
27
+ grid-template-columns: 4rem 1fr;
28
+ row-gap: 0.8rem;
29
+ @include min(mobile){
30
+ grid-template-columns: 1fr 2fr 1fr 1fr;
31
+ }
32
+ @include min(tablet){
33
+ grid-template-columns: 2fr 3fr 1fr 1fr;
34
+ }
35
+ border-radius: 1.6rem;
36
+ color: #fff;
37
+ padding: 0.8rem;
38
+ column-gap: 0.8rem;
39
+ @include min(tablet) {
40
+ row-gap: 1.6rem;
41
+ padding: 1.2rem;
42
+ }
43
+
44
+ &:last-child {
45
+ margin-bottom: 0;
46
+ }
47
+
48
+ a:first-child{
49
+ .Logo.cta{
50
+ height: 4rem;
51
+ width: 4rem;
52
+ @include min(tablet) {
53
+ height: 6.4rem;
54
+ width: auto;
55
+ }
56
+ }
57
+ }
58
+
59
+
60
+ a:nth-child(2) {
61
+ width: unset;
62
+ > span{
63
+ color: #fff !important;
64
+ text-decoration: none !important;
65
+ @include min(tablet) {
66
+ &:last-child{
67
+ color: #CED0DD !important;
68
+ }
69
+ }
70
+ }
71
+ }
72
+
73
+ img {
74
+ border-radius: 0.8rem;
75
+ height: 100%;
76
+ }
77
+ a:last-child {
78
+ padding: 0.8rem 1.6rem;
79
+ font-size: 1.4rem;
80
+ font-weight: 700;
81
+ grid-column: 1/3;
82
+ @include min(mobile){
83
+ grid-column: auto;
84
+ }
85
+ @include min(tablet) {
86
+ padding: 0.9rem 3rem;
87
+ width: unset;
88
+ }
89
+ }
90
+
91
+ > div {
92
+ &.operatorBonus{
93
+ flex-grow: inherit;
94
+ @include flex-align(flex-start, center);
95
+ @include flex-direction(column);
96
+ @include min(tablet) {
97
+ flex-basis: auto;
98
+ flex-grow: 1;
99
+ @include flex-align(center, flex-start);
100
+ background-color: #fff;
101
+
102
+ min-height: 6.4rem;
103
+ align-items: center;
104
+ justify-content: center;
105
+ border-radius: 0.8rem;
106
+ }
107
+
108
+ > span {
109
+ font-weight: 700;
110
+ color: #515156;
111
+ font-size: 1.2rem;
112
+ line-height: 1.8rem;
113
+
114
+ @include min(tablet) {
115
+ @include flex-direction(row);
116
+ font-size: 1.4rem;
117
+ line-height: 2.2rem;
118
+ }
119
+ }
120
+ }
121
+ &:not(.operatorBonus){
122
+ width: 100%;
123
+ button {width: 100%;}
124
+ grid-column: 1/3;
125
+ @include min(mobile){
126
+ grid-column: auto;
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+
133
+ .operatorDetails {
134
+ div{
135
+ display: none;
136
+ @include min(tablet){
137
+ display: inline-flex;
138
+ margin: auto 0;
139
+ a{font-size: 1.4rem; padding: 0 !important;}
140
+ }
141
+ }
142
+ > a {
143
+ width: 4rem;
144
+ height: 4rem;
145
+ img{
146
+ width: 100%;
147
+ height: 100%;
148
+ }
149
+ @include min(tablet){
150
+ width: 6.4rem;
151
+ height: 6.4rem;
152
+ }
153
+ }
154
+ }
155
+
156
+
@@ -120,30 +120,32 @@ const OperatorDetails = ({
120
120
 
121
121
  <Tag classStyle={`${styles.operatorName} name-cta `}>{itemName}</Tag>
122
122
 
123
- <div
124
- className={`${styles.ratingAuthor}
125
- ${!useOneStarRating && styles.starRatings}
126
- ${showRatingLabel && useOneStarRating && styles.ratinglabel}`}
127
- >
128
- {showRating && (
129
- <StarRating
130
- numOfStars={5}
131
- rating={rating}
132
- showLabel={showRatingLabel}
133
- showDecimal={showRatingDecimal}
134
- />
135
- )}
136
- {showAuthor && (
137
- <Author
138
- label={translate(translations, 'byAuthor', 'By')}
139
- authorTemplateTwo={authorTemplateTwo}
140
- authorName={item?.authorName || item?.author?.name}
141
- authorPath={item?.authorPath || item?.author?.profile_page_path}
142
- authorImage={item?.authorImage || item?.author?.image}
143
- verify={icon}
144
- />
145
- )}
146
- </div>
123
+ {showAuthor && showRating && (
124
+ <div
125
+ className={`${styles.ratingAuthor}
126
+ ${(!useOneStarRating && styles.starRatings) || ''}
127
+ ${(showRatingLabel && useOneStarRating && styles.ratinglabel) || ''}`}
128
+ >
129
+ {showRating && (
130
+ <StarRating
131
+ numOfStars={5}
132
+ rating={rating}
133
+ showLabel={showRatingLabel}
134
+ showDecimal={showRatingDecimal}
135
+ />
136
+ )}
137
+ {showAuthor && (
138
+ <Author
139
+ label={translate(translations, 'byAuthor', 'By')}
140
+ authorTemplateTwo={authorTemplateTwo}
141
+ authorName={item?.authorName || item?.author?.name}
142
+ authorPath={item?.authorPath || item?.author?.profile_page_path}
143
+ authorImage={item?.authorImage || item?.author?.image}
144
+ verify={icon}
145
+ />
146
+ )}
147
+ </div>
148
+ )}
147
149
  {reviewPath && showReviewLink && (
148
150
  <ReviewLink
149
151
  className={`${styles?.reviewLink || ''} toplist-variant-one-gtm`}
@@ -3,19 +3,15 @@ import React, { useState, useContext, useRef } from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { MdClose } from '@react-icons/all-files/md/MdClose';
5
5
  import { AiOutlineQuestionCircle } from '@react-icons/all-files/ai/AiOutlineQuestionCircle';
6
- import { Context } from 'gatsby-core-theme/src/context/MainProvider';
7
- import {
8
- translate,
9
- prettyTracker,
10
- getAltText,
11
- imagePrettyUrl,
12
- } from 'gatsby-core-theme/src/helpers/getters';
13
- import Bonus from 'gatsby-core-theme/src/components/molecules/bonus-box/template-one';
14
- import OperatorCta from 'gatsby-core-theme/src/components/atoms/button/operator-cta';
6
+
7
+ import { translate } from 'gatsby-core-theme/src/helpers/getters';
15
8
  import Button from 'gatsby-core-theme/src/components/atoms/button/button';
16
- import LazyImage from 'gatsby-core-theme/src/hooks/lazy-image';
17
- import { getRecommendedToplist } from '../../../helpers/common';
9
+ import { Context } from 'gatsby-core-theme/src/context/MainProvider';
10
+ // eslint-disable-next-line import/no-extraneous-dependencies
11
+ import loadable from '@loadable/component';
12
+
18
13
  import styles from './wagering-calculator.module.scss';
14
+ import { getRecommendedToplist } from '../../../helpers/common';
19
15
 
20
16
  const WageringCalculator = ({
21
17
  mainTitle = 'Wagering Requirement Calculator',
@@ -32,7 +28,7 @@ const WageringCalculator = ({
32
28
  const wgcWagering = useRef(null);
33
29
 
34
30
  const [isInfoOpen, setIsInfoOpen] = useState(false);
35
- const [isRecommendedOperators, setIsRecommendedOperators] = useState(false);
31
+ const [showRecommendedOperators, setShowRecommendedOperators] = useState(false);
36
32
  const [result, setResult] = useState(null);
37
33
  const { translations } = useContext(Context);
38
34
  const InfoIcon = infoIcon || AiOutlineQuestionCircle;
@@ -40,6 +36,9 @@ const WageringCalculator = ({
40
36
  ? getRecommendedToplist(pageContext.marketSections)
41
37
  : [];
42
38
 
39
+ const ReccommendedCasinos =
40
+ operators.length > 0 && loadable(() => import('../../atoms/recommended-operators'));
41
+
43
42
  const Calculate = () => {
44
43
  // eslint-disable-next-line
45
44
  wgcContribution.current.value && (wgcContribution.current.value = 100);
@@ -52,7 +51,7 @@ const WageringCalculator = ({
52
51
  (100 / Number(wgcContribution.current.value))
53
52
  )
54
53
  );
55
- setIsRecommendedOperators(true);
54
+ setShowRecommendedOperators(true);
56
55
  };
57
56
 
58
57
  return (
@@ -145,7 +144,7 @@ const WageringCalculator = ({
145
144
  onClick={Calculate}
146
145
  btnText={translate(translations, 'wagecalc_calculate', 'Calculate')}
147
146
  isInternalLink={false}
148
- buttonType="primary"
147
+ buttonType={buttonType}
149
148
  buttonSize="m"
150
149
  />
151
150
 
@@ -175,42 +174,17 @@ const WageringCalculator = ({
175
174
  </p>
176
175
  </div>
177
176
  )}
178
- {operators && operators.length > 0 && isRecommendedOperators && (
179
- <div className={styles.reccommendedCasinos}>
180
- <h3>
181
- {translate(translations, 'wagecalc_recommended_casinos', 'Recommended Casinos')}
182
- </h3>
183
- {operators.slice(0, 3).map((operator) => {
184
- const prettyLink = prettyTracker(operator, 'main', false);
185
- const imageObject =
186
- operator?.standardised_logo_url_object || operator?.logo_url_object;
187
-
188
- return (
189
- <div>
190
- <a
191
- href={prettyLink}
192
- aria-label={operator.name}
193
- target="_blank"
194
- rel="nofollow noreferrer sponsored"
195
- >
196
- <LazyImage
197
- alt={getAltText(imageObject, operator.name)}
198
- src={imagePrettyUrl(imageObject?.filename || operator?.logo_url, 64, 64)}
199
- width={64}
200
- height={64}
201
- />
202
- </a>
203
- <Bonus item={operator} tracker="main" />
204
- <OperatorCta
205
- module="wagering_calculator"
206
- operator={operator}
207
- tracker="main"
208
- buttonType={buttonType}
209
- />
210
- </div>
211
- );
212
- })}
213
- </div>
177
+ {ReccommendedCasinos && showRecommendedOperators && (
178
+ <ReccommendedCasinos
179
+ showCouponCode
180
+ showRating
181
+ title={translate(
182
+ translations,
183
+ 'wagecalc_recommended_casinos',
184
+ 'Recommeded Casinos for you: '
185
+ )}
186
+ operators={operators}
187
+ />
214
188
  )}
215
189
  </div>
216
190
  </div>
@@ -224,10 +198,7 @@ WageringCalculator.propTypes = {
224
198
  infoIcon: PropTypes.element,
225
199
  buttonType: PropTypes.string,
226
200
  pageContext: PropTypes.shape({
227
- marketSections: PropTypes.shape({
228
- // eslint-disable-next-line react/forbid-prop-types
229
- recommended_casinos: PropTypes.array,
230
- }),
201
+ marketSections: PropTypes.shape({}),
231
202
  }),
232
203
  };
233
204
 
@@ -6,7 +6,7 @@
6
6
  flex-direction: column;
7
7
  border-radius: 1.2rem;
8
8
  box-shadow: 0px -3px 14px rgba(0, 0, 0, 0.09);
9
- background-color: var(--color-4);
9
+ background-color: #F4F4F4;
10
10
 
11
11
  @include min(tablet) {
12
12
  padding: 2.4rem;
@@ -15,12 +15,14 @@
15
15
 
16
16
  > form {
17
17
  position: relative;
18
- gap: 1rem;
18
+ gap: 1.6rem;
19
+
19
20
  @include flex-direction(column);
20
21
  svg {
21
- margin-left: 3.5rem;
22
- height: 2.67rem;
23
- width: 2.67rem;
22
+ margin-left: 1rem;
23
+ height: 2.4rem;
24
+ width: 2.4rem;
25
+ fill: #515156;
24
26
  vertical-align: text-bottom;
25
27
  cursor: pointer;
26
28
  }
@@ -34,7 +36,6 @@
34
36
  @include min(tablet) {
35
37
  display: grid;
36
38
  grid-template-columns: 1fr 1fr;
37
- gap: 1rem;
38
39
  column-gap: 4.8rem;
39
40
  }
40
41
 
@@ -63,7 +64,9 @@
63
64
  position: absolute;
64
65
  top: 0;
65
66
  left: 0;
67
+ font-size: 1.6rem;
66
68
  background: white;
69
+ border-radius: 1.6rem;
67
70
  padding: 2.4rem;
68
71
  overflow: scroll;
69
72
  svg {
@@ -108,24 +111,25 @@
108
111
  }
109
112
 
110
113
  .mainTitle {
111
- margin-bottom: 1.4rem;
114
+ margin-bottom: 2.4rem;
112
115
  @include min(tablet) {
113
116
  margin-bottom: 3.2rem;
114
117
  }
115
118
  }
116
119
 
117
120
  .label {
118
- line-height: 2.6rem;
121
+ line-height: 2.7rem;
119
122
  font-size: 1.6rem;
120
- margin-bottom: 0.8rem;
123
+ margin-bottom: 0.65rem;
124
+ font-weight: 700;
121
125
  }
122
126
 
123
127
  .input,
124
128
  .select {
125
129
  padding: 14px;
126
130
  height: 4.8rem;
127
- background: #f8f7f5;
128
- border-radius: 4px;
131
+ background: #fff;
132
+ border-radius: 0.8rem;
129
133
  border: 0px;
130
134
  outline: 0px;
131
135
  }
@@ -150,24 +154,27 @@
150
154
  .resultContainer {
151
155
  position: relative;
152
156
  order: 11;
153
- margin-top: 2.2rem;
157
+ margin: 1.6rem 0;
154
158
  width: 100%;
155
159
  @include flex-align(center, space-between);
156
- padding: 1.6rem;
157
- color: #090e13;
160
+ @include min(tablet){
161
+ padding: 2.4rem;
162
+ }
163
+ padding: 0.8rem;
164
+ padding-left: 1.6rem;
165
+ color: #1B1B1C;
158
166
  font-weight: 700;
159
- font-size: 24px;
160
- line-height: 34px;
161
- flex-direction: column;
167
+ font-size: 1.8rem;
168
+ line-height: 2.6rem;
162
169
  gap: 1rem;
163
170
  grid-column: 1/3;
164
171
  gap: 1.6rem;
165
172
 
166
173
  &:before {
167
174
  content: '';
168
- border-radius: 12px;
175
+ border-radius: 1.6rem;
169
176
  display: block;
170
- background-color: var(--primary-color);
177
+ background-color: #fff;
171
178
  opacity: 0.6;
172
179
  position: absolute;
173
180
  top: 0;
@@ -182,11 +189,14 @@
182
189
 
183
190
  > span:last-child {
184
191
  flex-basis: 50%;
185
- background: #ffffff;
186
- border-radius: 8px;
192
+ background: #F4F4F4;
193
+ border-radius: 1.6rem;
187
194
  font-weight: 700;
188
- font-size: 22px;
189
- line-height: 38px;
195
+ font-size: 1.8rem;
196
+ line-height: 2.6rem;
197
+ @include min(tablet){
198
+ padding: 1.6rem;
199
+ }
190
200
  padding: 0.8rem;
191
201
  @include flex-align(center, center);
192
202
  }
@@ -195,77 +205,3 @@
195
205
  gap: 0;
196
206
  }
197
207
  }
198
-
199
- .reccommendedCasinos {
200
- > h3 {
201
- margin-top: 2.4rem;
202
- margin-bottom: 1.6rem;
203
-
204
- @include min(tablet) {
205
- margin-top: 3.2rem;
206
- }
207
- }
208
-
209
- > div {
210
- margin-bottom: 0.8rem;
211
- background: #f1efec;
212
- border-radius: 1.6rem;
213
- @include flex-align(center, space-between);
214
- padding: 0.8rem;
215
- gap: 1rem;
216
- @include min(tablet) {
217
- padding: 1.6rem;
218
- }
219
-
220
- &:last-child {
221
- margin-bottom: 0;
222
- }
223
-
224
- a:first-child {
225
- height: 6.4rem;
226
- width: 6.4rem;
227
- flex-grow: 1;
228
- @include min(tablet) {
229
- flex-grow: inherit;
230
- }
231
- }
232
-
233
- img {
234
- border-radius: 0.8rem;
235
- height: 100%;
236
- }
237
-
238
- a:last-child {
239
- padding: 0.8rem 1.3rem;
240
- @include min(tablet) {
241
- padding: 0.9rem 3rem;
242
- }
243
- }
244
-
245
- > div {
246
- flex-grow: inherit;
247
- @include flex-align(flex-start, center);
248
- @include flex-direction(column);
249
- flex-basis: 39%;
250
- @include min(tablet) {
251
- flex-basis: auto;
252
- flex-grow: 1;
253
- @include flex-align(center, flex-start);
254
- @include flex-direction(row);
255
- }
256
-
257
- > span {
258
- font-weight: 700;
259
- color: #090e13;
260
- font-size: 14px;
261
- line-height: 22px;
262
-
263
- @include min(tablet) {
264
- @include flex-direction(row);
265
- font-size: 20px;
266
- line-height: 30px;
267
- }
268
- }
269
- }
270
- }
271
- }
@@ -1,16 +1,28 @@
1
1
  import React from 'react';
2
- import GridLayout from './template-one';
3
- import SrcollLayout from './template-two';
2
+ // eslint-disable-next-line import/no-extraneous-dependencies
3
+ import loadable from '@loadable/component';
4
4
  import ModuleIntroduction from './module-introduction';
5
5
 
6
6
  export default function index(props) {
7
7
  const { module, page } = props;
8
8
  const Component = () => {
9
9
  switch (module?.style) {
10
- case 'template_two':
10
+ case 'stack_table' && module.cards_page_type === 'operator': {
11
+ const OperatorsTable = loadable(() => import('../../atoms/cards/operators-table'));
12
+ return <OperatorsTable module={module} page={page} />;
13
+ }
14
+ case 'comparison_table' && module.cards_page_type === 'operator': {
15
+ const ComparisonTable = loadable(() => import('../../atoms/cards/comparison-table'));
16
+ return <ComparisonTable module={module} page={page} />;
17
+ }
18
+ case 'template_two': {
19
+ const SrcollLayout = loadable(() => import('./template-two'));
11
20
  return <SrcollLayout module={module} page={page} />;
12
- default:
21
+ }
22
+ default: {
23
+ const GridLayout = loadable(() => import('./template-one'));
13
24
  return <GridLayout module={module} page={page} />;
25
+ }
14
26
  }
15
27
  };
16
28