gatsby-matrix-theme 20.0.2 → 21.0.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.
Files changed (123) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/package.json +2 -2
  3. package/src/components/atoms/author/socials/index.js +2 -2
  4. package/src/components/atoms/author-card/index.js +6 -6
  5. package/src/components/atoms/cards/article-card/template-one/index.js +12 -6
  6. package/src/components/atoms/cards/author/template-one/index.js +7 -7
  7. package/src/components/atoms/cards/comparison-table/index.js +2 -2
  8. package/src/components/atoms/cards/comparison-table/table/index.js +1 -1
  9. package/src/components/atoms/cards/game-cards/template-five/index.js +14 -10
  10. package/src/components/atoms/cards/game-cards/template-four/index.js +12 -8
  11. package/src/components/atoms/cards/game-cards/template-one/index.js +13 -9
  12. package/src/components/atoms/cards/game-cards/template-three/index.js +12 -8
  13. package/src/components/atoms/cards/game-cards/template-two/index.js +14 -10
  14. package/src/components/atoms/cards/operator-card/template-four/index.js +27 -15
  15. package/src/components/atoms/cards/operator-card/template-four/template-four.module.scss +20 -0
  16. package/src/components/atoms/cards/operator-card/template-four/template-four.stories.js +6 -0
  17. package/src/components/atoms/cards/operator-card/template-four/template-four.test.js +19 -0
  18. package/src/components/atoms/cards/operator-card/template-one/index.js +28 -16
  19. package/src/components/atoms/cards/operator-card/template-one/template-one.module.scss +51 -31
  20. package/src/components/atoms/cards/operator-card/template-one/template-one.stories.js +6 -0
  21. package/src/components/atoms/cards/operator-card/template-one/template-one.test.js +19 -0
  22. package/src/components/atoms/cards/operator-card/template-three/index.js +22 -14
  23. package/src/components/atoms/cards/operator-card/template-three/template-three.module.scss +20 -0
  24. package/src/components/atoms/cards/operator-card/template-three/template-three.stories.js +6 -0
  25. package/src/components/atoms/cards/operator-card/template-three/template-three.test.js +19 -0
  26. package/src/components/atoms/cards/operator-card/template-two/index.js +27 -17
  27. package/src/components/atoms/cards/operator-card/template-two/template-two.module.scss +22 -0
  28. package/src/components/atoms/cards/operator-card/template-two/template-two.stories.js +6 -0
  29. package/src/components/atoms/cards/operator-card/template-two/template-two.test.js +19 -0
  30. package/src/components/atoms/cards/operator-card/variables/index.js +3 -1
  31. package/src/components/atoms/cards/operators-table/index.js +4 -4
  32. package/src/components/atoms/cards/payment-method/sellingPoints/index.js +2 -2
  33. package/src/components/atoms/cards/payment-method/template-one/index.js +7 -7
  34. package/src/components/atoms/cards/payment-method/template-three/index.js +7 -7
  35. package/src/components/atoms/cards/popup-card/index.js +6 -6
  36. package/src/components/atoms/cards/software-provider-card/index.js +8 -8
  37. package/src/components/atoms/circle-rating/circle-rating.js +8 -7
  38. package/src/components/atoms/coupon/index.js +1 -1
  39. package/src/components/atoms/feedBackModule/index.js +14 -16
  40. package/src/components/atoms/feedback/index.js +11 -9
  41. package/src/components/atoms/footer/as-seen-on/index.js +5 -1
  42. package/src/components/atoms/footer/hotline/index.js +3 -3
  43. package/src/components/atoms/footer/license/index.js +5 -5
  44. package/src/components/atoms/header-operator-bannner/index.js +2 -2
  45. package/src/components/atoms/link-menu/index.js +2 -2
  46. package/src/components/atoms/modal/index.js +3 -3
  47. package/src/components/atoms/newsletter/form/index.js +6 -6
  48. package/src/components/atoms/newsletter/privacy&button/index.js +3 -3
  49. package/src/components/atoms/newsletter/toggle-button/index.js +3 -1
  50. package/src/components/atoms/operator-bonuses/index.js +11 -11
  51. package/src/components/atoms/operator-score-gauge/index.js +6 -6
  52. package/src/components/atoms/rating/index.js +12 -4
  53. package/src/components/atoms/ratings/index.js +2 -2
  54. package/src/components/atoms/select/index.js +10 -2
  55. package/src/components/atoms/social-icons/index.js +5 -3
  56. package/src/components/atoms/table/banking/index.js +4 -4
  57. package/src/components/atoms/table/bonusTable/index.js +1 -1
  58. package/src/components/atoms/table/column/index.js +12 -12
  59. package/src/components/atoms/table/staticColumn/index.js +1 -1
  60. package/src/components/atoms/toggle-button/index.js +13 -5
  61. package/src/components/atoms/tooltip/index.js +4 -2
  62. package/src/components/molecules/cookie-modal/index.js +7 -7
  63. package/src/components/molecules/faq/index.js +7 -5
  64. package/src/components/molecules/footer/variants/template-one/index.js +8 -8
  65. package/src/components/molecules/footer/variants/template-three/index.js +7 -7
  66. package/src/components/molecules/footer/variants/template-two/index.js +7 -7
  67. package/src/components/molecules/game-iframe/index.js +2 -2
  68. package/src/components/molecules/game-score-gauge/index.js +9 -9
  69. package/src/components/molecules/header/variants/author/assets/expertise/index.js +1 -1
  70. package/src/components/molecules/header/variants/author/assets/name/index.js +1 -1
  71. package/src/components/molecules/header/variants/author/template-four/index.js +10 -6
  72. package/src/components/molecules/header/variants/author/template-one/index.js +11 -7
  73. package/src/components/molecules/header/variants/author/template-three/index.js +10 -6
  74. package/src/components/molecules/header/variants/author/template-two/index.js +11 -7
  75. package/src/components/molecules/horse-calculator/index.js +17 -17
  76. package/src/components/molecules/newsletter/index.js +14 -6
  77. package/src/components/molecules/newsletter-optin/index.js +6 -6
  78. package/src/components/molecules/operator-exclusive/index.js +6 -6
  79. package/src/components/molecules/operator-summary/index.js +8 -4
  80. package/src/components/molecules/operator-welcome-bonus/index.js +2 -2
  81. package/src/components/molecules/small-welcome-bonus/index.js +5 -5
  82. package/src/components/molecules/toplist/row/variant-one.js +21 -16
  83. package/src/components/organisms/footer-navigation/index.js +3 -3
  84. package/src/components/organisms/popup/index.js +14 -12
  85. package/src/constants/info-grid.js +156 -0
  86. package/src/gatsby-core-theme/components/atoms/info-grid/index.js +128 -78
  87. package/src/gatsby-core-theme/components/atoms/info-grid/info-grid.module.scss +163 -57
  88. package/src/gatsby-core-theme/components/atoms/info-grid/info-grid.stories.js +49 -30
  89. package/src/gatsby-core-theme/components/atoms/info-grid/info-grid.test.js +252 -0
  90. package/src/gatsby-core-theme/components/atoms/module-title/index.js +11 -11
  91. package/src/gatsby-core-theme/components/atoms/not-found/index.js +3 -3
  92. package/src/gatsby-core-theme/components/molecules/header/index.js +4 -4
  93. package/src/gatsby-core-theme/components/molecules/main/index.js +1 -1
  94. package/src/gatsby-core-theme/components/molecules/module/index.js +3 -3
  95. package/src/gatsby-core-theme/components/molecules/search/index.js +14 -12
  96. package/src/gatsby-core-theme/components/organisms/carousel/index.js +2 -2
  97. package/src/gatsby-core-theme/components/organisms/cookie-consent/index.js +3 -3
  98. package/src/gatsby-core-theme/components/organisms/search/index.js +6 -4
  99. package/src/gatsby-core-theme/components/organisms/toplist/index.js +1 -1
  100. package/src/gatsby-core-theme/hooks/modal/modal-content.js +8 -5
  101. package/src/gatsby-core-theme/hooks/tabs/index.js +4 -4
  102. package/src/gatsby-core-theme/hooks/tabs/tab/tab-list.js +3 -3
  103. package/src/gatsby-core-theme/hooks/tabs/tab/tab.js +4 -4
  104. package/src/gatsby-core-theme/hooks/tabs/title/index.js +8 -4
  105. package/src/gatsby-core-theme/hooks/tabs/title/title.module.scss +1 -0
  106. package/src/gatsby-core-theme/styles/utils/variables/_colors.scss +2 -0
  107. package/src/gatsby-core-theme/styles/utils/variables/_main.scss +11 -0
  108. package/src/helpers/info-grid.js +138 -0
  109. package/src/helpers/info-grid.test.js +126 -0
  110. package/storybook/public/233.953c0c74.iframe.bundle.js +1 -0
  111. package/storybook/public/427.e0b9080e.iframe.bundle.js +1 -0
  112. package/storybook/public/522.09fabc10.iframe.bundle.js +7 -0
  113. package/storybook/public/{627.5f6bcbc9.iframe.bundle.js.map → 522.09fabc10.iframe.bundle.js.map} +1 -1
  114. package/storybook/public/{94.de8ea949.iframe.bundle.js → 94.4e4f0580.iframe.bundle.js} +1 -1
  115. package/storybook/public/iframe.html +1 -1
  116. package/storybook/public/main.7f58c81a.iframe.bundle.js +1 -0
  117. package/storybook/public/{runtime~main.411e0a84.iframe.bundle.js → runtime~main.23bfd16b.iframe.bundle.js} +1 -1
  118. package/tests/factories/pages/operator.factory.js +116 -0
  119. package/storybook/public/233.33990971.iframe.bundle.js +0 -1
  120. package/storybook/public/427.c7fc04ef.iframe.bundle.js +0 -1
  121. package/storybook/public/627.5f6bcbc9.iframe.bundle.js +0 -7
  122. package/storybook/public/main.0fa2edfd.iframe.bundle.js +0 -1
  123. /package/storybook/public/{627.5f6bcbc9.iframe.bundle.js.LICENSE.txt → 522.09fabc10.iframe.bundle.js.LICENSE.txt} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,51 @@
1
+ # [21.0.0](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v20.0.3...v21.0.0) (2023-05-04)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * fix conflicts ([a06c673](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/a06c67317f413e0450b92f1eefa630c15ccfd758))
7
+ * fix info grid test ([a942892](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/a942892ca4b74087d5ede58502f6270794ed2391))
8
+ * operator card storybook ([98d088e](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/98d088e6b792fefbbe0915ff749148d01d77ebeb))
9
+ * remove null and undefined classes ([d4f5c07](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/d4f5c0775ff10b1175a99a14fbb7575d6098f0f1))
10
+ * validate classes ([7cf9015](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/7cf901558efdf2068989ea011aa92b28326d1e25))
11
+
12
+
13
+ ### Code Refactoring
14
+
15
+ * add common props ([e6b8dea](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/e6b8dea76b4d2f1ee4166e8f06e92a76fd178483))
16
+ * add test for info grid ([889a369](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/889a369b2ababc11a7da11918d42441975644261))
17
+ * change storybook folder ([c9098a2](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/c9098a26c5d27cdd9f66dbda9b27af823478af5c))
18
+ * correction to info grdi ([fabc767](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/fabc7675e2a18892b755e36962db1d764bf4efed))
19
+ * css variables for sitelevel ([4c02c66](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/4c02c66396241b7326a648cf18972448bc40bc55))
20
+ * minor fix when values are empty ([1d4835f](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/1d4835f07217d9d779745242338f26e7a3a2f6ef))
21
+ * new changes to info grid ([80b3198](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/80b31984205543112d3e5c6f553d2ee610bb970f))
22
+ * new changes to info grid to align with site levels ([aa7ac68](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/aa7ac68aa3122ddb9aa00e9d00a2fe2e047d1072))
23
+ * new helper functions and constants for info grid ([a6a5447](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/a6a544723b6761413a9f7b54a4039b92afc34e07))
24
+ * update hooks tabs title for w3c validator ([5a2e56f](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/5a2e56f9bc77031b0632dcfae66ae0d38801491c))
25
+
26
+
27
+ * Merge branch 'tm-3349-info-grid' into 'master' ([3669bed](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/3669bedf64d40b23390082594ced986561509702))
28
+ * Merge branch 'master' into tm-3349-info-grid ([0ae2318](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/0ae23188c6cbb08d191d5ae5ca2bfcebf39b9d36))
29
+ * Merge branch 'tm-3399-cleanupClases' into 'master' ([3452cb9](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/3452cb9a2594d22f3e8d419ebe53920a93ac99fa))
30
+ * Merge branch 'master' into tm-3349-info-grid ([e020e56](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/e020e56893bc3d416c8b3399c4d772b4fafe3b23))
31
+ * Merge branch 'tm-3386-w3-validator-fixes' into 'master' ([1e38bd6](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/1e38bd6d8a43bb269193788a000158b92be2c9c0))
32
+ * Merge branch 'master' into tm-3349-info-grid ([d10b965](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/d10b96566f9a4c5fd7da80a11ecfd220ff5bfcc8))
33
+ * Merge branch 'master' of git.ilcd.rocks:team-floyd/themes/matrix-theme ([806851f](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/806851fe5049365d3da2f0e8ba47c17f677499e5))
34
+ * Merge branch 'master' into tm-3349-info-grid ([9946f2c](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/9946f2c3384e8dbab2993bb648009c0b4a605aed))
35
+ * Merge branch 'master' into tm-3349-info-grid ([dd267f3](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/dd267f3d4024acf0d422c0d972162ec45fed6979))
36
+
37
+ ## [20.0.3](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v20.0.2...v20.0.3) (2023-04-26)
38
+
39
+
40
+ ### Bug Fixes
41
+
42
+ * update cards templates and tests in order to include the ribbon ([bd22faf](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/bd22faf12017789b5596de5c970d34e790635d9e))
43
+ * update styling for ribbon ([644184b](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/644184b74c0aa872d8df4293ee4241f12ada228a))
44
+ * update to take only the first ribbon ([132b261](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/132b2611a91c7d1a8ac5e7510861176a4411f774))
45
+
46
+
47
+ * Merge branch 'tm-3355-cards-v2-module' into 'master' ([d2ba431](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/d2ba4315e9c05fa830cc5a021cec46a36c3d6537))
48
+
1
49
  ## [20.0.2](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v20.0.1...v20.0.2) (2023-04-26)
2
50
 
3
51
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-matrix-theme",
3
- "version": "20.0.2",
3
+ "version": "21.0.0",
4
4
  "main": "index.js",
5
5
  "description": "Matrix Theme NPM Package",
6
6
  "author": "",
@@ -25,7 +25,7 @@
25
25
  "dependencies": {
26
26
  "@react-icons/all-files": "^4.1.0",
27
27
  "gatsby": "^4.20.0",
28
- "gatsby-core-theme": "21.0.4",
28
+ "gatsby-core-theme": "21.0.6",
29
29
  "gatsby-plugin-sharp": "^4.10.2",
30
30
  "gatsby-plugin-sitemap": "^3.3.0",
31
31
  "gatsby-transformer-sharp": "^4.10.0",
@@ -19,11 +19,11 @@ export default function Socials({ className = '', author }) {
19
19
 
20
20
  return (
21
21
  socialLinks.length > 0 && (
22
- <div className={`${className} ${styles.socials}`}>
22
+ <div className={`${className || ''} ${styles.socials || ''}`}>
23
23
  {socialLinks.map((socialLink) => (
24
24
  // eslint-disable-next-line jsx-a11y/control-has-associated-label
25
25
  <a
26
- className={`${styles.social} author-gtm`}
26
+ className={`${styles.social || ''} author-gtm`}
27
27
  href={socialLink.link}
28
28
  target="_blank"
29
29
  rel="nofollow noreferrer"
@@ -10,8 +10,8 @@ const AuthorCard = ({ author, width = 60, height = 60 }) => {
10
10
  const { name, author_title, email_address, image, image_alt, image_object } = author || {};
11
11
 
12
12
  return (
13
- <div className={styles.authorCard}>
14
- <div className={styles.img}>
13
+ <div className={styles.authorCard || ''}>
14
+ <div className={styles.img || ''}>
15
15
  <LazyImage
16
16
  src={imagePrettyUrl(image)}
17
17
  alt={getAltText(image_object, image_alt || name)}
@@ -19,11 +19,11 @@ const AuthorCard = ({ author, width = 60, height = 60 }) => {
19
19
  height={height}
20
20
  />
21
21
  </div>
22
- <div className={styles.txt}>
23
- <div className={styles.name}>{name}</div>
24
- <div className={styles.position}>{author_title}</div>
22
+ <div className={styles.txt || ''}>
23
+ <div className={styles.name || ''}>{name}</div>
24
+ <div className={styles.position || ''}>{author_title}</div>
25
25
  <a
26
- className={styles.email}
26
+ className={styles.email || ''}
27
27
  href={`mailto:${email_address}`}
28
28
  target="_blank"
29
29
  rel="nofollow noreferrer"
@@ -25,23 +25,29 @@ const ArticleCard = ({
25
25
  const formatedDate = date && formatDate(date, 'DD.MM.YYYY', '/', 'en-GB');
26
26
 
27
27
  return (
28
- <div className={styles.article}>
29
- <Link to={path} className={`${styles.image} article-card-gtm`} aria-label={`${title} Link`}>
28
+ <div className={styles.article || ''}>
29
+ <Link
30
+ to={path}
31
+ className={`${styles.image || ''} article-card-gtm`}
32
+ aria-label={`${title} Link`}
33
+ >
30
34
  {banner ? (
31
35
  <LazyImage width={width} height={height} src={imagePrettyUrl(banner)} alt={title} />
32
36
  ) : (
33
37
  <GatsbyImg alt={title} width="100%" height="100%" filename="default-article.jpg" />
34
38
  )}
35
39
  </Link>
36
- <div className={`${styles.cardContent}`}>
40
+ <div className={`${styles?.cardContent || ''}`}>
37
41
  <Link to={path} className="article-card-gtm">
38
- <span className={styles.cardTitle}>{title}</span>
42
+ <span className={styles?.cardTitle || ''}>{title}</span>
39
43
  </Link>
40
44
 
41
45
  {typeof author === 'object' && (
42
46
  <div
43
47
  className={`${
44
- showAuthorOnOneLine ? styles.showAuthorOnOneLine : styles.showAuthorBlock
48
+ showAuthorOnOneLine
49
+ ? styles?.showAuthorOnOneLine || ''
50
+ : styles?.showAuthorBlock || ''
45
51
  } `}
46
52
  >
47
53
  <LazyImage
@@ -63,7 +69,7 @@ const ArticleCard = ({
63
69
  ) : (
64
70
  <span>{author?.name}</span>
65
71
  )}
66
- {showDate && <span className={styles.noLink}>{formatedDate}</span>}
72
+ {showDate && <span className={styles?.noLink || ''}>{formatedDate}</span>}
67
73
  </div>
68
74
  </div>
69
75
  )}
@@ -13,8 +13,8 @@ export default function TemplateOne({ item }) {
13
13
  const { translations } = useContext(Context);
14
14
 
15
15
  return (
16
- <div className={styles.container}>
17
- <span className={styles.posts}>
16
+ <div className={styles?.container || ''}>
17
+ <span className={styles?.posts || ''}>
18
18
  {author.pages_count} {translate(translations, 'posts', 'Posts')}
19
19
  </span>
20
20
  <LazyImage
@@ -23,15 +23,15 @@ export default function TemplateOne({ item }) {
23
23
  width={72}
24
24
  height={72}
25
25
  />
26
- <span className={styles.title}>{author.author_title}</span>
27
- <span className={styles.name}>{author.name}</span>
28
- <Socials className={styles.socials} author={author} />
26
+ <span className={styles?.title || ''}>{author.author_title}</span>
27
+ <span className={styles?.name || ''}>{author.name}</span>
28
+ <Socials className={styles?.socials || ''} author={author} />
29
29
  <div
30
- className={styles.bio}
30
+ className={styles?.bio || ''}
31
31
  // eslint-disable-next-line react/no-danger
32
32
  dangerouslySetInnerHTML={{ __html: textWordsLimit(author.biography, 20) }}
33
33
  />
34
- <Link className={styles.readMore} to={author.profile_page_path}>
34
+ <Link className={styles?.readMore || ''} to={author.profile_page_path}>
35
35
  {translate(translations, 'read_more', 'Read More')} <FaArrowRight size="1.4rem" />
36
36
  </Link>
37
37
  </div>
@@ -10,9 +10,9 @@ export default function ComparisonTable({ module, page }) {
10
10
  const ele = useRef('');
11
11
 
12
12
  return (
13
- <div className={styles.comparisonTable}>
13
+ <div className={styles?.comparisonTable || ''}>
14
14
  <ScrollX refTag={ele} scroll>
15
- <div ref={ele} className={styles.contentTable}>
15
+ <div ref={ele} className={styles?.contentTable || ''}>
16
16
  <Table type={page?.relation_type} items={module?.items} tempate={page?.template} />
17
17
  </div>
18
18
  </ScrollX>
@@ -248,7 +248,7 @@ export default function ComparisonTable({
248
248
  });
249
249
 
250
250
  row.push(
251
- <tr key={heading.key} className={`${styles[heading.key]}_tr`}>
251
+ <tr key={heading.key} className={`${styles[heading.key] || 'row'}_tr`}>
252
252
  <th>{translate(translations, heading.key, heading.defaultValue)}</th>
253
253
  {cells}
254
254
  </tr>
@@ -45,8 +45,12 @@ const TemplateFive = ({
45
45
  : loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating'));
46
46
 
47
47
  return (
48
- <div className={`${styles.baseCard} ${featured ? styles.featured : ''}`}>
49
- <Link to={path} className={`game-card-gtm ${styles.cardBanner}`} aria-label={`${title} Link`}>
48
+ <div className={`${styles?.baseCard || ''} ${featured ? styles?.featured || '' : ''}`}>
49
+ <Link
50
+ to={path}
51
+ className={`game-card-gtm ${styles?.cardBanner || ''}`}
52
+ aria-label={`${title} Link`}
53
+ >
50
54
  {storybookImage || gameImage ? (
51
55
  <LazyImage
52
56
  width={width}
@@ -58,8 +62,8 @@ const TemplateFive = ({
58
62
  <GatsbyImg filename="default-slot.jpg" alt={title} />
59
63
  )}
60
64
  </Link>
61
- <div className={`${styles.cardContent} ${featured && styles.featured}`}>
62
- <div className={styles.cardRating}>
65
+ <div className={`${styles?.cardContent || ''} ${featured ? styles.featured || '' : ''}`}>
66
+ <div className={styles?.cardRating || ''}>
63
67
  {relation && (
64
68
  <StarRating
65
69
  numOfStars={5}
@@ -76,12 +80,12 @@ const TemplateFive = ({
76
80
  )}
77
81
  </div>
78
82
  <Link to={path} className="game-card-gtm">
79
- <span className={styles.cardTitle}>{title}</span>
83
+ <span className={styles?.cardTitle || ''}>{title}</span>
80
84
  </Link>
81
- <div className={styles.cardInner}>
85
+ <div className={styles?.cardInner || ''}>
82
86
  {(storybookLogo || operatorLogo) && (
83
87
  <LazyImage
84
- className={styles.cardProviderLogo}
88
+ className={styles?.cardProviderLogo || ''}
85
89
  width={48}
86
90
  height={48}
87
91
  src={storybookLogo || imagePrettyUrl(operatorLogo.filename, width, height)}
@@ -89,12 +93,12 @@ const TemplateFive = ({
89
93
  />
90
94
  )}
91
95
  {operator && operator.path ? (
92
- <Link to={operator.path} className={styles.cardProvider}>
96
+ <Link to={operator.path} className={styles?.cardProvider || ''}>
93
97
  {operatorText}
94
98
  </Link>
95
99
  ) : (
96
- <Link to={provider?.path} className={styles.cardProvider}>
97
- <div className={styles.cardProvider}>{provider?.name}</div>
100
+ <Link to={provider?.path} className={styles?.cardProvider || ''}>
101
+ <div className={styles?.cardProvider || ''}>{provider?.name}</div>
98
102
  </Link>
99
103
  )}
100
104
  {affilateLink ? (
@@ -38,8 +38,12 @@ const TemplateFour = ({
38
38
  : loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating'));
39
39
 
40
40
  return (
41
- <div className={`${styles.baseCard} ${featured ? styles.featured : ''}`}>
42
- <Link to={path} className={`game-card-gtm ${styles.cardBanner}`} aria-label={`${title} Link`}>
41
+ <div className={`${styles?.baseCard || ''} ${featured ? styles.featured || '' : ''}`}>
42
+ <Link
43
+ to={path}
44
+ className={`game-card-gtm ${styles?.cardBanner || ''}`}
45
+ aria-label={`${title} Link`}
46
+ >
43
47
  {storybookImage || gameImage ? (
44
48
  <LazyImage
45
49
  width={width}
@@ -65,20 +69,20 @@ const TemplateFour = ({
65
69
  }
66
70
  />
67
71
  )}
68
- <div className={`${styles.cardContent} ${featured && styles.featured}`}>
72
+ <div className={`${styles?.cardContent || ''} ${featured ? styles.featured : ''}`}>
69
73
  <Link to={path} className="game-card-gtm">
70
- <span className={styles.cardTitle}>{title}</span>
74
+ <span className={styles?.cardTitle || ''}>{title}</span>
71
75
  </Link>
72
- <div className={styles.cardInner}>
76
+ <div className={styles?.cardInner || ''}>
73
77
  <span>
74
78
  Game Powered by:
75
79
  {operator && operator.path ? (
76
- <Link to={operator.path} className={styles.cardProvider}>
80
+ <Link to={operator.path} className={styles?.cardProvider || ''}>
77
81
  {operator.name}
78
82
  </Link>
79
83
  ) : (
80
- <Link to={provider?.path} className={styles.cardProvider}>
81
- <div className={styles.cardProvider}>{provider?.name}</div>
84
+ <Link to={provider?.path} className={styles?.cardProvider || ''}>
85
+ <div className={styles?.cardProvider || ''}>{provider?.name}</div>
82
86
  </Link>
83
87
  )}
84
88
  </span>
@@ -39,8 +39,12 @@ const TemplateOne = ({
39
39
  : loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating'));
40
40
 
41
41
  return (
42
- <div className={`${styles.baseCard} ${featured ? styles.featured : ''}`}>
43
- <Link to={path} className={`game-card-gtm ${styles.cardBanner}`} aria-label={`${title} Link`}>
42
+ <div className={`${styles?.baseCard || ''} ${featured ? styles.featured || '' : ''}`}>
43
+ <Link
44
+ to={path}
45
+ className={`game-card-gtm ${styles?.cardBanner || ''}`}
46
+ aria-label={`${title} Link`}
47
+ >
44
48
  {storybookImage || gameImage ? (
45
49
  <LazyImage
46
50
  width={width}
@@ -52,21 +56,21 @@ const TemplateOne = ({
52
56
  <GatsbyImg filename="default-slot.jpg" alt={title} />
53
57
  )}
54
58
  </Link>
55
- <div className={`${styles.cardContent} ${featured && styles.featured}`}>
59
+ <div className={`${styles?.cardContent || ''} ${featured ? styles?.featured || '' : ''}`}>
56
60
  <Link to={path} className="game-card-gtm">
57
- <span className={styles.cardTitle}>{title}</span>
61
+ <span className={styles?.cardTitle || ''}>{title}</span>
58
62
  </Link>
59
- <div className={styles.cardInner}>
63
+ <div className={styles?.cardInner || ''}>
60
64
  {operator && operator.path ? (
61
- <Link to={operator.path} className={styles.cardProvider}>
65
+ <Link to={operator.path} className={styles?.cardProvider || ''}>
62
66
  {operator.name}
63
67
  </Link>
64
68
  ) : (
65
- <Link to={provider?.path} className={styles.cardProvider}>
66
- <div className={styles.cardProvider}>{provider?.name}</div>
69
+ <Link to={provider?.path} className={styles?.cardProvider || ''}>
70
+ <div className={styles?.cardProvider || ''}>{provider?.name}</div>
67
71
  </Link>
68
72
  )}
69
- <div className={styles.cardRating}>
73
+ <div className={styles?.cardRating || ''}>
70
74
  {relation && (
71
75
  <StarRating
72
76
  numOfStars={5}
@@ -39,7 +39,11 @@ const TemplateThree = ({
39
39
 
40
40
  return (
41
41
  <div className={`${styles.baseCard} ${featured ? styles.featured : ''}`}>
42
- <Link to={path} className={`game-card-gtm ${styles.cardBanner}`} aria-label={`${title} Link`}>
42
+ <Link
43
+ to={path}
44
+ className={`game-card-gtm ${styles?.cardBanner || ''}`}
45
+ aria-label={`${title} Link`}
46
+ >
43
47
  {storybookImage || gameImage ? (
44
48
  <LazyImage
45
49
  width={width}
@@ -51,8 +55,8 @@ const TemplateThree = ({
51
55
  <GatsbyImg filename="default-slot.jpg" alt={title} />
52
56
  )}
53
57
  </Link>
54
- <div className={`${styles.cardContent} ${featured && styles.featured}`}>
55
- <div className={styles.cardRating}>
58
+ <div className={`${styles?.cardContent || ''} ${featured ? styles.featured || '' : ''}`}>
59
+ <div className={styles?.cardRating || ''}>
56
60
  {relation && (
57
61
  <StarRating
58
62
  numOfStars={5}
@@ -69,16 +73,16 @@ const TemplateThree = ({
69
73
  )}
70
74
  </div>
71
75
  <Link to={path} className="game-card-gtm">
72
- <span className={styles.cardTitle}>{title}</span>
76
+ <span className={styles?.cardTitle || ''}>{title}</span>
73
77
  </Link>
74
- <div className={styles.cardInner}>
78
+ <div className={styles?.cardInner || ''}>
75
79
  {operator && operator.path ? (
76
- <Link to={operator.path} className={styles.cardProvider}>
80
+ <Link to={operator.path} className={styles?.cardProvider || ''}>
77
81
  {operator.name}
78
82
  </Link>
79
83
  ) : (
80
- <Link to={provider?.path} className={styles.cardProvider}>
81
- <div className={styles.cardProvider}>{provider?.name}</div>
84
+ <Link to={provider?.path} className={styles?.cardProvider || ''}>
85
+ <div className={styles?.cardProvider || ''}>{provider?.name}</div>
82
86
  </Link>
83
87
  )}
84
88
  {affilateLink ? (
@@ -38,8 +38,12 @@ const TemplateTwo = ({
38
38
  : loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating'));
39
39
 
40
40
  return (
41
- <div className={`${styles.baseCard} ${featured ? styles.featured : ''}`}>
42
- <Link to={path} className={`game-card-gtm ${styles.cardBanner}`} aria-label={`${title} Link`}>
41
+ <div className={`${styles?.baseCard || ''} ${featured ? styles.featured || '' : ''}`}>
42
+ <Link
43
+ to={path}
44
+ className={`game-card-gtm ${styles?.cardBanner || ''}`}
45
+ aria-label={`${title} Link`}
46
+ >
43
47
  {storybookImage || gameImage ? (
44
48
  <LazyImage
45
49
  width={width}
@@ -51,12 +55,12 @@ const TemplateTwo = ({
51
55
  <GatsbyImg filename="default-slot.jpg" alt={title} />
52
56
  )}
53
57
  </Link>
54
- <div className={`${styles.cardContent} ${featured && styles.featured}`}>
55
- <div className={styles.cardInnerTop}>
58
+ <div className={`${styles?.cardContent || ''} ${featured ? styles?.featured || '' : ''}`}>
59
+ <div className={styles?.cardInnerTop || ''}>
56
60
  <Link to={path} className="game-card-gtm">
57
- <span className={styles.cardTitle}>{title}</span>
61
+ <span className={styles?.cardTitle || ''}>{title}</span>
58
62
  </Link>
59
- <div className={styles.cardRating}>
63
+ <div className={styles?.cardRating || ''}>
60
64
  {relation && (
61
65
  <StarRating
62
66
  numOfStars={5}
@@ -73,14 +77,14 @@ const TemplateTwo = ({
73
77
  )}
74
78
  </div>
75
79
  </div>
76
- <div className={styles.cardInnerBottom}>
80
+ <div className={styles?.cardInnerBottom || ''}>
77
81
  {operator && operator.path ? (
78
- <Link to={operator.path} className={styles.cardProvider}>
82
+ <Link to={operator.path} className={styles?.cardProvider || ''}>
79
83
  {operator.name}
80
84
  </Link>
81
85
  ) : (
82
- <Link to={provider?.path} className={styles.cardProvider}>
83
- <div className={styles.cardProvider}>{provider?.name}</div>
86
+ <Link to={provider?.path} className={styles?.cardProvider || ''}>
87
+ <div className={styles?.cardProvider || ''}>{provider?.name}</div>
84
88
  </Link>
85
89
  )}
86
90
  {affilateLink ? (
@@ -25,12 +25,14 @@ const TemplateFour = ({
25
25
  useOneStarRating = true,
26
26
  page,
27
27
  showHalfStars = false,
28
+ showRibbon = false,
28
29
  showBonusAsLink = false,
29
30
  showAuthor = true,
30
31
  showRatingLabel = false,
31
32
  showRatingDecimal = false,
32
33
  verifyIcon = '../../../images/verify.svg',
33
34
  }) => {
35
+ const { ribbons } = item?.relation;
34
36
  const { relation, path } = item;
35
37
  const { name, status } = relation;
36
38
  const reviewPath = path || relation.path;
@@ -42,20 +44,29 @@ const TemplateFour = ({
42
44
  : loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating'));
43
45
 
44
46
  return (
45
- <div className={styles.operatorCard}>
46
- <div className={styles.cardHeader}>
47
- <Link to={reviewPath} title={name} className={`${styles.casinoLogo} operator-card-gtm`}>
47
+ <div className={styles?.operatorCard || ''}>
48
+ <div className={styles?.cardHeader || ''}>
49
+ <Link
50
+ to={reviewPath}
51
+ title={name}
52
+ className={`${styles?.casinoLogo || ''} operator-card-gtm`}
53
+ >
48
54
  <LazyImage
49
55
  width={88}
50
56
  height={88}
51
57
  src={imagePrettyUrl(relation?.standardised_logo_url_object?.filename, 88, 88)}
52
58
  alt={getAltText(relation?.standardised_logo_url_object, name)}
53
59
  />
60
+ {showRibbon && ribbons.length > 0 && <span className={styles.ribbon}>{ribbons[0]}</span>}
54
61
  </Link>
55
62
  <Link to={reviewPath} title={name} className="operator-card-gtm">
56
63
  {name}
57
64
  </Link>
58
- <div className={`${styles.headerDetails} ${showRatingLabel ? styles.showRatingLabel : ''}`}>
65
+ <div
66
+ className={`${styles?.headerDetails || ''} ${
67
+ showRatingLabel ? styles?.showRatingLabel || '' : ''
68
+ }`}
69
+ >
59
70
  <StarRating
60
71
  numOfStars={5}
61
72
  halfStars={showHalfStars}
@@ -64,7 +75,7 @@ const TemplateFour = ({
64
75
  showDecimal={showRatingDecimal}
65
76
  />
66
77
  {showAuthor && item?.author && (
67
- <div className={styles.authorData}>
78
+ <div className={styles?.authorData || ''}>
68
79
  <LazyImage
69
80
  alt={item?.author?.name}
70
81
  loading="eager"
@@ -84,17 +95,17 @@ const TemplateFour = ({
84
95
  )}
85
96
  </div>
86
97
  </div>
87
- <div className={styles.cardContent}>
98
+ <div className={styles?.cardContent || ''}>
88
99
  <Rating item={relation} type="operatorCards" />
89
- <div className={styles.cardContentContainer}>
100
+ <div className={styles?.cardContentContainer || ''}>
90
101
  {!isInactive && (
91
- <div className={styles.casinoText}>
102
+ <div className={styles?.casinoText || ''}>
92
103
  {showBonusAsLink ? (
93
104
  <a
94
105
  href={prettyLink}
95
106
  target="_blank"
96
107
  rel="noreferrer"
97
- className={`${styles.text} toplist-gtm bonus-cta`}
108
+ className={`${styles?.text || ''} toplist-gtm bonus-cta`}
98
109
  >
99
110
  <Bonus item={relation} tracker="main" />
100
111
  </a>
@@ -103,7 +114,7 @@ const TemplateFour = ({
103
114
  )}
104
115
  </div>
105
116
  )}
106
- <div className={styles.cardFooter}>
117
+ <div className={styles?.cardFooter || ''}>
107
118
  {relation?.status !== 'not_recommended' && (
108
119
  <OperatorCta
109
120
  tracker="main"
@@ -129,21 +140,21 @@ const TemplateFour = ({
129
140
  )}
130
141
  </div>
131
142
  </div>
132
- <div className={styles.feedback}>
143
+ <div className={styles?.feedback || ''}>
133
144
  {(item?.true_votes !== null || item?.false_votes !== null) && (
134
- <div className={styles.feedbackCounter}>
135
- <div className={styles.likes}>
145
+ <div className={styles?.feedbackCounter || ''}>
146
+ <div className={styles?.likes || ''}>
136
147
  <BiLike color="#3E3C47" />
137
148
  {item?.true_votes}
138
149
  </div>
139
- <div className={styles.dislikes}>
150
+ <div className={styles?.dislikes || ''}>
140
151
  <BiDislike color="#3E3C47" />
141
152
  {item?.false_votes}
142
153
  </div>
143
154
  </div>
144
155
  )}
145
156
  <ReviewLink
146
- className={`${styles.reviewLink} operator-card-gtm`}
157
+ className={`${styles?.reviewLink || ''} operator-card-gtm`}
147
158
  template={page?.template}
148
159
  operatorName={name}
149
160
  reviewPath={reviewPath}
@@ -184,6 +195,7 @@ TemplateFour.propTypes = {
184
195
  showRatingLabel: PropTypes.bool,
185
196
  showRatingDecimal: PropTypes.bool,
186
197
  verifyIcon: PropTypes.string,
198
+ showRibbon: PropTypes.bool,
187
199
  };
188
200
 
189
201
  export default TemplateFour;
@@ -8,6 +8,25 @@
8
8
  @include flex-direction(column);
9
9
  }
10
10
 
11
+ .ribbon {
12
+ font-style: normal;
13
+ font-weight: 600;
14
+ font-size: 1rem;
15
+ line-height: 2.8rem;
16
+ text-transform: capitalize;
17
+ color: #a58a5e;
18
+ padding: 0;
19
+ position: absolute;
20
+ bottom: -10px;
21
+ white-space: nowrap;
22
+ width: 100%;
23
+ @include flex-align(center, center);
24
+ background-color: #5545a9;
25
+ color: white;
26
+ border-radius: 100px;
27
+ height:18px;
28
+ }
29
+
11
30
  .cardContent {
12
31
  @include flex-direction(column);
13
32
  @include flex-align(stretch, space-between);
@@ -96,6 +115,7 @@
96
115
  grid-column: 1/2;
97
116
  border: var(--cards-border);
98
117
  border-radius: 16px;
118
+ position: relative;
99
119
 
100
120
  img {
101
121
  width: 8.8rem;
@@ -73,6 +73,12 @@ export default {
73
73
  description:
74
74
  'show decimal point for round numbers in ratings? Will only work if useOneStarRating is set to true',
75
75
  },
76
+ showRibbon: {
77
+ name: 'showRibbon',
78
+ type: { name: 'boolean', required: false },
79
+ defaultValue: false,
80
+ description: 'show ribbon',
81
+ },
76
82
  },
77
83
  parameters: {
78
84
  docs: {