gatsby-matrix-theme 20.0.3 → 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 (115) hide show
  1. package/CHANGELOG.md +36 -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 +23 -15
  15. package/src/components/atoms/cards/operator-card/template-four/template-four.stories.js +6 -0
  16. package/src/components/atoms/cards/operator-card/template-one/index.js +24 -16
  17. package/src/components/atoms/cards/operator-card/template-one/template-one.stories.js +6 -0
  18. package/src/components/atoms/cards/operator-card/template-three/index.js +18 -14
  19. package/src/components/atoms/cards/operator-card/template-three/template-three.stories.js +6 -0
  20. package/src/components/atoms/cards/operator-card/template-two/index.js +23 -17
  21. package/src/components/atoms/cards/operator-card/template-two/template-two.stories.js +6 -0
  22. package/src/components/atoms/cards/operator-card/variables/index.js +3 -1
  23. package/src/components/atoms/cards/operators-table/index.js +4 -4
  24. package/src/components/atoms/cards/payment-method/sellingPoints/index.js +2 -2
  25. package/src/components/atoms/cards/payment-method/template-one/index.js +7 -7
  26. package/src/components/atoms/cards/payment-method/template-three/index.js +7 -7
  27. package/src/components/atoms/cards/popup-card/index.js +6 -6
  28. package/src/components/atoms/cards/software-provider-card/index.js +8 -8
  29. package/src/components/atoms/circle-rating/circle-rating.js +8 -7
  30. package/src/components/atoms/coupon/index.js +1 -1
  31. package/src/components/atoms/feedBackModule/index.js +14 -16
  32. package/src/components/atoms/feedback/index.js +11 -9
  33. package/src/components/atoms/footer/as-seen-on/index.js +5 -1
  34. package/src/components/atoms/footer/hotline/index.js +3 -3
  35. package/src/components/atoms/footer/license/index.js +5 -5
  36. package/src/components/atoms/header-operator-bannner/index.js +2 -2
  37. package/src/components/atoms/link-menu/index.js +2 -2
  38. package/src/components/atoms/modal/index.js +3 -3
  39. package/src/components/atoms/newsletter/form/index.js +6 -6
  40. package/src/components/atoms/newsletter/privacy&button/index.js +3 -3
  41. package/src/components/atoms/newsletter/toggle-button/index.js +3 -1
  42. package/src/components/atoms/operator-bonuses/index.js +11 -11
  43. package/src/components/atoms/operator-score-gauge/index.js +6 -6
  44. package/src/components/atoms/rating/index.js +12 -4
  45. package/src/components/atoms/ratings/index.js +2 -2
  46. package/src/components/atoms/select/index.js +10 -2
  47. package/src/components/atoms/social-icons/index.js +5 -3
  48. package/src/components/atoms/table/banking/index.js +4 -4
  49. package/src/components/atoms/table/bonusTable/index.js +1 -1
  50. package/src/components/atoms/table/column/index.js +12 -12
  51. package/src/components/atoms/table/staticColumn/index.js +1 -1
  52. package/src/components/atoms/toggle-button/index.js +13 -5
  53. package/src/components/atoms/tooltip/index.js +4 -2
  54. package/src/components/molecules/cookie-modal/index.js +7 -7
  55. package/src/components/molecules/faq/index.js +7 -5
  56. package/src/components/molecules/footer/variants/template-one/index.js +8 -8
  57. package/src/components/molecules/footer/variants/template-three/index.js +7 -7
  58. package/src/components/molecules/footer/variants/template-two/index.js +7 -7
  59. package/src/components/molecules/game-iframe/index.js +2 -2
  60. package/src/components/molecules/game-score-gauge/index.js +9 -9
  61. package/src/components/molecules/header/variants/author/assets/expertise/index.js +1 -1
  62. package/src/components/molecules/header/variants/author/assets/name/index.js +1 -1
  63. package/src/components/molecules/header/variants/author/template-four/index.js +10 -6
  64. package/src/components/molecules/header/variants/author/template-one/index.js +11 -7
  65. package/src/components/molecules/header/variants/author/template-three/index.js +10 -6
  66. package/src/components/molecules/header/variants/author/template-two/index.js +11 -7
  67. package/src/components/molecules/horse-calculator/index.js +17 -17
  68. package/src/components/molecules/newsletter/index.js +14 -6
  69. package/src/components/molecules/newsletter-optin/index.js +6 -6
  70. package/src/components/molecules/operator-exclusive/index.js +6 -6
  71. package/src/components/molecules/operator-summary/index.js +8 -4
  72. package/src/components/molecules/operator-welcome-bonus/index.js +2 -2
  73. package/src/components/molecules/small-welcome-bonus/index.js +5 -5
  74. package/src/components/molecules/toplist/row/variant-one.js +21 -16
  75. package/src/components/organisms/footer-navigation/index.js +3 -3
  76. package/src/components/organisms/popup/index.js +14 -12
  77. package/src/constants/info-grid.js +156 -0
  78. package/src/gatsby-core-theme/components/atoms/info-grid/index.js +128 -78
  79. package/src/gatsby-core-theme/components/atoms/info-grid/info-grid.module.scss +163 -57
  80. package/src/gatsby-core-theme/components/atoms/info-grid/info-grid.stories.js +49 -30
  81. package/src/gatsby-core-theme/components/atoms/info-grid/info-grid.test.js +252 -0
  82. package/src/gatsby-core-theme/components/atoms/module-title/index.js +11 -11
  83. package/src/gatsby-core-theme/components/atoms/not-found/index.js +3 -3
  84. package/src/gatsby-core-theme/components/molecules/header/index.js +4 -4
  85. package/src/gatsby-core-theme/components/molecules/main/index.js +1 -1
  86. package/src/gatsby-core-theme/components/molecules/module/index.js +3 -3
  87. package/src/gatsby-core-theme/components/molecules/search/index.js +14 -12
  88. package/src/gatsby-core-theme/components/organisms/carousel/index.js +2 -2
  89. package/src/gatsby-core-theme/components/organisms/cookie-consent/index.js +3 -3
  90. package/src/gatsby-core-theme/components/organisms/search/index.js +6 -4
  91. package/src/gatsby-core-theme/components/organisms/toplist/index.js +1 -1
  92. package/src/gatsby-core-theme/hooks/modal/modal-content.js +8 -5
  93. package/src/gatsby-core-theme/hooks/tabs/index.js +4 -4
  94. package/src/gatsby-core-theme/hooks/tabs/tab/tab-list.js +3 -3
  95. package/src/gatsby-core-theme/hooks/tabs/tab/tab.js +4 -4
  96. package/src/gatsby-core-theme/hooks/tabs/title/index.js +8 -4
  97. package/src/gatsby-core-theme/hooks/tabs/title/title.module.scss +1 -0
  98. package/src/gatsby-core-theme/styles/utils/variables/_colors.scss +2 -0
  99. package/src/gatsby-core-theme/styles/utils/variables/_main.scss +11 -0
  100. package/src/helpers/info-grid.js +138 -0
  101. package/src/helpers/info-grid.test.js +126 -0
  102. package/storybook/public/233.953c0c74.iframe.bundle.js +1 -0
  103. package/storybook/public/427.e0b9080e.iframe.bundle.js +1 -0
  104. package/storybook/public/522.09fabc10.iframe.bundle.js +7 -0
  105. package/storybook/public/{627.5f6bcbc9.iframe.bundle.js.map → 522.09fabc10.iframe.bundle.js.map} +1 -1
  106. package/storybook/public/{94.de8ea949.iframe.bundle.js → 94.4e4f0580.iframe.bundle.js} +1 -1
  107. package/storybook/public/iframe.html +1 -1
  108. package/storybook/public/main.7f58c81a.iframe.bundle.js +1 -0
  109. package/storybook/public/{runtime~main.411e0a84.iframe.bundle.js → runtime~main.23bfd16b.iframe.bundle.js} +1 -1
  110. package/tests/factories/pages/operator.factory.js +116 -0
  111. package/storybook/public/233.33990971.iframe.bundle.js +0 -1
  112. package/storybook/public/427.c7fc04ef.iframe.bundle.js +0 -1
  113. package/storybook/public/627.5f6bcbc9.iframe.bundle.js +0 -7
  114. package/storybook/public/main.7cfa5dad.iframe.bundle.js +0 -1
  115. /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,39 @@
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
+
1
37
  ## [20.0.3](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v20.0.2...v20.0.3) (2023-04-26)
2
38
 
3
39
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-matrix-theme",
3
- "version": "20.0.3",
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 ? (
@@ -44,9 +44,13 @@ const TemplateFour = ({
44
44
  : loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating'));
45
45
 
46
46
  return (
47
- <div className={styles.operatorCard}>
48
- <div className={styles.cardHeader}>
49
- <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
+ >
50
54
  <LazyImage
51
55
  width={88}
52
56
  height={88}
@@ -58,7 +62,11 @@ const TemplateFour = ({
58
62
  <Link to={reviewPath} title={name} className="operator-card-gtm">
59
63
  {name}
60
64
  </Link>
61
- <div className={`${styles.headerDetails} ${showRatingLabel ? styles.showRatingLabel : ''}`}>
65
+ <div
66
+ className={`${styles?.headerDetails || ''} ${
67
+ showRatingLabel ? styles?.showRatingLabel || '' : ''
68
+ }`}
69
+ >
62
70
  <StarRating
63
71
  numOfStars={5}
64
72
  halfStars={showHalfStars}
@@ -67,7 +75,7 @@ const TemplateFour = ({
67
75
  showDecimal={showRatingDecimal}
68
76
  />
69
77
  {showAuthor && item?.author && (
70
- <div className={styles.authorData}>
78
+ <div className={styles?.authorData || ''}>
71
79
  <LazyImage
72
80
  alt={item?.author?.name}
73
81
  loading="eager"
@@ -87,17 +95,17 @@ const TemplateFour = ({
87
95
  )}
88
96
  </div>
89
97
  </div>
90
- <div className={styles.cardContent}>
98
+ <div className={styles?.cardContent || ''}>
91
99
  <Rating item={relation} type="operatorCards" />
92
- <div className={styles.cardContentContainer}>
100
+ <div className={styles?.cardContentContainer || ''}>
93
101
  {!isInactive && (
94
- <div className={styles.casinoText}>
102
+ <div className={styles?.casinoText || ''}>
95
103
  {showBonusAsLink ? (
96
104
  <a
97
105
  href={prettyLink}
98
106
  target="_blank"
99
107
  rel="noreferrer"
100
- className={`${styles.text} toplist-gtm bonus-cta`}
108
+ className={`${styles?.text || ''} toplist-gtm bonus-cta`}
101
109
  >
102
110
  <Bonus item={relation} tracker="main" />
103
111
  </a>
@@ -106,7 +114,7 @@ const TemplateFour = ({
106
114
  )}
107
115
  </div>
108
116
  )}
109
- <div className={styles.cardFooter}>
117
+ <div className={styles?.cardFooter || ''}>
110
118
  {relation?.status !== 'not_recommended' && (
111
119
  <OperatorCta
112
120
  tracker="main"
@@ -132,21 +140,21 @@ const TemplateFour = ({
132
140
  )}
133
141
  </div>
134
142
  </div>
135
- <div className={styles.feedback}>
143
+ <div className={styles?.feedback || ''}>
136
144
  {(item?.true_votes !== null || item?.false_votes !== null) && (
137
- <div className={styles.feedbackCounter}>
138
- <div className={styles.likes}>
145
+ <div className={styles?.feedbackCounter || ''}>
146
+ <div className={styles?.likes || ''}>
139
147
  <BiLike color="#3E3C47" />
140
148
  {item?.true_votes}
141
149
  </div>
142
- <div className={styles.dislikes}>
150
+ <div className={styles?.dislikes || ''}>
143
151
  <BiDislike color="#3E3C47" />
144
152
  {item?.false_votes}
145
153
  </div>
146
154
  </div>
147
155
  )}
148
156
  <ReviewLink
149
- className={`${styles.reviewLink} operator-card-gtm`}
157
+ className={`${styles?.reviewLink || ''} operator-card-gtm`}
150
158
  template={page?.template}
151
159
  operatorName={name}
152
160
  reviewPath={reviewPath}
@@ -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: {