gatsby-matrix-theme 6.0.2 → 6.0.3

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 (24) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/package.json +2 -2
  3. package/src/components/atoms/cards/article-card/index.js +6 -3
  4. package/src/components/atoms/cards/game-card/index.js +19 -6
  5. package/src/components/atoms/cards/operator-card/index.js +15 -10
  6. package/src/components/molecules/toplist/row/variant-one.js +2 -1
  7. package/src/gatsby-core-theme/components/atoms/author/author.module.scss +68 -0
  8. package/src/gatsby-core-theme/components/atoms/author/index.js +77 -0
  9. package/src/gatsby-core-theme/components/atoms/module-title/index.js +14 -11
  10. package/src/gatsby-core-theme/components/organisms/head/index.js +11 -6
  11. package/src/gatsby-core-theme/styles/utils/variables/_main.scss +8 -0
  12. package/src/hooks/tabs/index.js +3 -1
  13. package/storybook/public/{145.adc0cfd7.iframe.bundle.js → 152.a6570944.iframe.bundle.js} +4 -4
  14. package/storybook/public/{145.adc0cfd7.iframe.bundle.js.LICENSE.txt → 152.a6570944.iframe.bundle.js.LICENSE.txt} +0 -0
  15. package/storybook/public/{145.adc0cfd7.iframe.bundle.js.map → 152.a6570944.iframe.bundle.js.map} +1 -1
  16. package/storybook/public/252.19995cf7.iframe.bundle.js +1 -0
  17. package/storybook/public/331.4e2323f9.iframe.bundle.js +1 -0
  18. package/storybook/public/720.6b3cfa44.iframe.bundle.js +1 -0
  19. package/storybook/public/iframe.html +1 -1
  20. package/storybook/public/main.38064527.iframe.bundle.js +1 -0
  21. package/storybook/public/runtime~main.aff10fe9.iframe.bundle.js +1 -0
  22. package/storybook/public/859.94495706.iframe.bundle.js +0 -1
  23. package/storybook/public/main.62ff6f3d.iframe.bundle.js +0 -1
  24. package/storybook/public/runtime~main.2f06b328.iframe.bundle.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,36 @@
1
+ ## [6.0.3](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v6.0.2...v6.0.3) (2022-04-13)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add endpoint for bacom ([8fb13db](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/8fb13dbea8b9863c9586c28000163f176408e179))
7
+ * add onestar design for game, operator card and toplist ([bf53abe](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/bf53abefee45f6d4d73e2b730615b0bfe9e4658d))
8
+ * added default width and height for game cards ([5d5a488](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/5d5a488167854b04c7cdfccf221c23e0a6e51c88))
9
+ * added reading time meta tag for twitter ([6e84e86](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/6e84e86d2a7f6ab592ddfa3b85936a0118ca8b39))
10
+ * head meta tag and added header extended part ([01808d2](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/01808d217d31af35bcec881eea3dced5d3584353))
11
+ * heading sequence hide titles that dont have data ([7a72a8b](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/7a72a8b9a36655bf625124e371f8c357484cf7a9))
12
+
13
+
14
+ ### Code Refactoring
15
+
16
+ * extended header ([d3674f1](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/d3674f167e9001b8bb521aa990070fc7d43ba3bb))
17
+ * made changes to new component ([0cec052](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/0cec05271de2e888a0bab6c98f644d48943ff68a))
18
+ * made changes to new component ([a1ad73d](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/a1ad73d0088e30a90894a782464930f6c41dc63e))
19
+ * replace env check with prop ([0d6a7fd](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/0d6a7fd8770199d61487821377dc34a489e8a35f))
20
+
21
+
22
+ ### Config
23
+
24
+ * resolve conflicts ([fa897c8](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/fa897c8dbf240040b5745fd2bf2815feedae4a1d))
25
+ * update theme ([2f90038](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/2f90038d19fd30e2bb7f832a5045fd9646263850))
26
+
27
+
28
+ * Merge branch 'extended-page-header' into 'master' ([e81be14](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/e81be144dc2139d57436fb84768fe6859202fd49))
29
+ * Merge branch 'tm-2813-heading-sequence' into 'master' ([38c4cd1](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/38c4cd134a610ab0aa4720382419993ff429d6d6))
30
+ * Merge branch 'fix-star-ratings' into 'master' ([d0da5b4](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/d0da5b4709e7cea67c45469460d97f31ae442da3))
31
+ * Merge branch 'revert-8fb13dbe' into 'master' ([b212c7e](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/b212c7e184d0f942d0a96d82ba9a546d4570ebe7))
32
+ * Revert "fix: add endpoint for bacom" ([6a5880f](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/6a5880ffd7def8560756c3a3ea961f3e27c7f22e))
33
+
1
34
  ## [6.0.2](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v6.0.1...v6.0.2) (2022-04-07)
2
35
 
3
36
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-matrix-theme",
3
- "version": "6.0.2",
3
+ "version": "6.0.3",
4
4
  "main": "index.js",
5
5
  "description": "Matrix Theme NPM Package",
6
6
  "author": "",
@@ -28,7 +28,7 @@
28
28
  "gatsby-transformer-sharp": "^4.10.0",
29
29
  "react": "^17.0.2",
30
30
  "react-dom": "^17.0.2",
31
- "gatsby-core-theme": "^6.1.1"
31
+ "gatsby-core-theme": "^6.1.2"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@babel/core": "^7.13.1",
@@ -24,7 +24,6 @@ const ArticleCard = ({ item, width, height }) => {
24
24
  };
25
25
  const cardBackgroundImage = getSectionExtraField(null, item, 'card_background_image');
26
26
  const featured = !!cardBackgroundImage;
27
- const AuthorProfile = author && author.profile_page_path;
28
27
  const AuthorName = author && author.name;
29
28
  const { translations } = useContext(Context) || {};
30
29
 
@@ -58,7 +57,7 @@ const ArticleCard = ({ item, width, height }) => {
58
57
  gtmClass="article-card-gtm btn-cta"
59
58
  />
60
59
  <div className={styles.cardMeta}>
61
- <Author authorProfile={AuthorProfile} name={AuthorName} date={created_at} />
60
+ <Author prefix="by" name={AuthorName} date={created_at} isCardsAuthor />
62
61
  </div>
63
62
  </div>
64
63
  </BaseCard>
@@ -67,7 +66,11 @@ const ArticleCard = ({ item, width, height }) => {
67
66
 
68
67
  ArticleCard.propTypes = {
69
68
  item: PropTypes.shape({
70
- author: PropTypes.shape({ name: PropTypes.string, profile_page_path: PropTypes.string }),
69
+ author: PropTypes.shape({
70
+ name: PropTypes.string,
71
+ profile_page_path: PropTypes.string,
72
+ twitter_profile: PropTypes.string,
73
+ }),
71
74
  title: PropTypes.string,
72
75
  created_at: PropTypes.string,
73
76
  path: PropTypes.string,
@@ -1,7 +1,7 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
1
2
  import React, { useContext } from 'react';
2
3
  import PropTypes from 'prop-types';
3
- import { FaStar } from 'react-icons/fa';
4
- import StarRating from 'gatsby-core-theme/src/components/molecules/star-rating';
4
+ import loadable from '@loadable/component';
5
5
  import Button from 'gatsby-core-theme/src/components/atoms/button';
6
6
  import GatsbyImg from 'gatsby-core-theme/src/hooks/gatsby-img';
7
7
  import Link from 'gatsby-core-theme/src/hooks/link';
@@ -16,11 +16,20 @@ import { Context } from 'gatsby-core-theme/src/context/TranslationsProvider';
16
16
  import BaseCard from '../base-card';
17
17
  import styles from './game-card.module.scss';
18
18
 
19
- const GameCard = ({ item, button_text = 'play_now', width, height }) => {
19
+ const GameCard = ({
20
+ item,
21
+ button_text = 'play_now',
22
+ width = 300,
23
+ height = 250,
24
+ useOneStarRating = false,
25
+ }) => {
20
26
  const { relation, title, path, banner } = item;
21
27
  const cardBackgroundImage = getSectionExtraField(null, item, 'card_background_image');
22
28
  const featured = !!cardBackgroundImage;
23
29
  const { translations } = useContext(Context) || {};
30
+ const StarRating = useOneStarRating
31
+ ? loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating/one-star'))
32
+ : loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating'));
24
33
 
25
34
  return (
26
35
  <BaseCard item={item} isLinked cardType="game">
@@ -31,7 +40,12 @@ const GameCard = ({ item, button_text = 'play_now', width, height }) => {
31
40
  aria-label={`${title} Link`}
32
41
  >
33
42
  {banner ? (
34
- <LazyImage width={width} height={height} src={imagePrettyUrl(banner)} alt={title} />
43
+ <LazyImage
44
+ width={width}
45
+ height={height}
46
+ src={imagePrettyUrl(banner, width, height)}
47
+ alt={title}
48
+ />
35
49
  ) : (
36
50
  <GatsbyImg filename="default-slot.jpg" alt={title} />
37
51
  )}
@@ -48,8 +62,6 @@ const GameCard = ({ item, button_text = 'play_now', width, height }) => {
48
62
  <StarRating
49
63
  numOfStars={5}
50
64
  halfStars={false}
51
- iconEmpty={<FaStar />}
52
- iconFull={<FaStar />}
53
65
  rating={[
54
66
  relation.first_rating,
55
67
  relation.second_rating,
@@ -88,6 +100,7 @@ GameCard.propTypes = {
88
100
  button_text: PropTypes.string,
89
101
  width: PropTypes.number,
90
102
  height: PropTypes.number,
103
+ useOneStarRating: PropTypes.bool,
91
104
  };
92
105
 
93
106
  export default GameCard;
@@ -1,8 +1,8 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
1
2
  /* eslint-disable camelcase */
2
3
  import React, { useContext } from 'react';
3
4
  import PropTypes from 'prop-types';
4
- import { FaStar } from 'react-icons/fa';
5
- import StarRating from 'gatsby-core-theme/src/components/molecules/star-rating';
5
+ import loadable from '@loadable/component';
6
6
  import { imagePrettyUrl, translate } from 'gatsby-core-theme/src/helpers/getters';
7
7
  import Link from 'gatsby-core-theme/src/hooks/link';
8
8
  import LazyImage from 'gatsby-core-theme/src/hooks/lazy-image';
@@ -13,13 +13,23 @@ import OperatorCta from 'gatsby-core-theme/src/components/atoms/operator-cta';
13
13
  import BaseCard from '../base-card';
14
14
  import styles from './operator-card.module.scss';
15
15
 
16
- const OperatorCard = ({ item, featured = false, number, width, height }) => {
16
+ const OperatorCard = ({
17
+ item,
18
+ featured = false,
19
+ number,
20
+ width,
21
+ height,
22
+ useOneStarRating = false,
23
+ }) => {
17
24
  const { relation, path } = item;
18
25
  const reviewPath = path || relation.path;
19
26
  const status = relation?.status;
20
27
  const isInactive = status === 'inactive';
21
28
  const backgroundImage = number === 1 ? 'featuredCasino' : null;
22
29
  const { translations } = useContext(Context) || {};
30
+ const StarRating = useOneStarRating
31
+ ? loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating/one-star'))
32
+ : loadable(() => import('gatsby-core-theme/src/components/molecules/star-rating'));
23
33
 
24
34
  return (
25
35
  <BaseCard featured={featured} backgroundImage={backgroundImage} item={item} cardType="operator">
@@ -40,13 +50,7 @@ const OperatorCard = ({ item, featured = false, number, width, height }) => {
40
50
  alt={relation.name}
41
51
  />
42
52
  </Link>
43
- <StarRating
44
- numOfStars={5}
45
- halfStars={false}
46
- iconEmpty={<FaStar />}
47
- iconFull={<FaStar />}
48
- rating={relation.rating}
49
- />
53
+ <StarRating numOfStars={5} halfStars={false} rating={relation.rating} />
50
54
  </div>
51
55
  <div
52
56
  className={`${styles.cardContent} ${featured && styles.featured} ${
@@ -106,6 +110,7 @@ OperatorCard.propTypes = {
106
110
  number: PropTypes.number,
107
111
  width: PropTypes.number,
108
112
  height: PropTypes.number,
113
+ useOneStarRating: PropTypes.bool,
109
114
  };
110
115
 
111
116
  export default OperatorCard;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
1
2
  import React, { useContext } from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import { MdCheck } from 'react-icons/md';
@@ -10,7 +11,7 @@ import {
10
11
  import Link from 'gatsby-core-theme/src/hooks/link';
11
12
  import Label from 'gatsby-core-theme/src/components/atoms/label';
12
13
  import LazyImage from 'gatsby-core-theme/src/hooks/lazy-image';
13
- import StarRating from 'gatsby-core-theme/src/components/molecules/star-rating';
14
+ import StarRating from 'gatsby-core-theme/src/components/molecules/star-rating/one-star';
14
15
  import SellingPoints from 'gatsby-core-theme/src/components/atoms/selling-points';
15
16
  import OperatorCta from 'gatsby-core-theme/src/components/atoms/operator-cta';
16
17
  import Tnc from 'gatsby-core-theme/src/components/molecules/tnc';
@@ -0,0 +1,68 @@
1
+ .authorWraper {
2
+ display: grid;
3
+ grid-template-rows: repeat(2, 1fr);
4
+ align-items: center;
5
+ font-size: var(--author-text-fontSize);
6
+ color: var(--author-primary-text-color);
7
+ .infoContainer {
8
+ display: flex;
9
+ align-items: center;
10
+ white-space: nowrap;
11
+ .prefixStyle {
12
+ margin: 0px;
13
+ }
14
+ .authorImg {
15
+ width: 30px;
16
+ height: 30px;
17
+ border-radius: 50%;
18
+ margin: 0px 8px 0px 6px;
19
+ }
20
+ > a {
21
+ color: var(--author-link-text-color);
22
+ font-weight: var(--author-fontweight);
23
+ text-decoration: underline;
24
+
25
+ &:before {
26
+ content: '';
27
+ padding: 0px 2px;
28
+ }
29
+
30
+ &:after {
31
+ content: '';
32
+ padding: 0px 2px;
33
+ }
34
+ }
35
+ }
36
+ .dateTimeWrapper {
37
+ display: flex;
38
+ align-items: center;
39
+ white-space: nowrap;
40
+ .readingWithBorder {
41
+ &:before {
42
+ content: '|';
43
+ padding: 0px 3px;
44
+ }
45
+ }
46
+ }
47
+
48
+ @include min(tablet) {
49
+ display: flex;
50
+ }
51
+ }
52
+
53
+ .authorCard {
54
+ display: flex;
55
+ width: 100%;
56
+ justify-content: space-between;
57
+ color: var( --author-card-text-color);
58
+
59
+ @include min(tablet){
60
+ display: flex;
61
+ justify-content: space-between;
62
+
63
+ }
64
+ }
65
+
66
+ .prefixCardText {
67
+ padding-right: 2px;
68
+ }
@@ -0,0 +1,77 @@
1
+ /* eslint-disable arrow-body-style */
2
+ import React, { useContext } from 'react';
3
+ import PropTypes from 'prop-types';
4
+
5
+ import { translate } from 'gatsby-core-theme/src/helpers/getters';
6
+ import { Context } from 'gatsby-core-theme/src/context/TranslationsProvider';
7
+ import { formatDate } from '~helpers/date-time';
8
+ import Link from '~hooks/link';
9
+ import styles from './author.module.scss';
10
+
11
+ const Author = ({
12
+ name,
13
+ date,
14
+ authorImg,
15
+ readingTime,
16
+ link,
17
+ prefix = '',
18
+ type = 'default',
19
+ icon = false,
20
+ splitDateFormat = '.',
21
+ dateFormat = 'DD.MM.YYYY',
22
+ isCardsAuthor = false,
23
+ }) => {
24
+ const { translations } = useContext(Context) || {};
25
+ const prefixstyle = !link || !authorImg;
26
+
27
+ const getPrefixBasedOnPage = type.includes('review')
28
+ ? translate(translations, 'reviewed_by', 'Review by')
29
+ : translate(translations, 'written_by', 'Written by');
30
+
31
+ const getRoundMinutes = (time) => {
32
+ const [minutes, seconds] = time.split(':');
33
+ const value = seconds > 30 ? Number(minutes) + 1 : Number(minutes);
34
+ return value === 0 ? 1 : value;
35
+ };
36
+
37
+ return (
38
+ <div className={`${styles.authorWraper} ${isCardsAuthor && styles.authorCard} `}>
39
+ <div className={`${styles.infoContainer} ${isCardsAuthor && styles.infoCardContainer}`}>
40
+ <p className={`${styles.prefixStyle} ${prefixstyle && styles.prefixCardText}`}>
41
+ {prefix || getPrefixBasedOnPage}
42
+ </p>
43
+ <Link to={link} title={name}>
44
+ {name}
45
+ </Link>
46
+ {icon}
47
+ {authorImg && <img src={authorImg} alt={name} className={styles.authorImg} />}
48
+ </div>
49
+ <div className={styles.dateTimeWrapper}>
50
+ {date && <div>{formatDate(date, dateFormat, splitDateFormat, 'en-GB')}</div>}
51
+ {readingTime && (
52
+ <div className={date && styles.readingWithBorder}>
53
+ {`${translate(translations, 'reading_time', 'Reading time')} ${getRoundMinutes(
54
+ readingTime
55
+ )} ${translate(translations, 'minutes', 'min')}`}
56
+ </div>
57
+ )}
58
+ </div>
59
+ </div>
60
+ );
61
+ };
62
+
63
+ Author.propTypes = {
64
+ prefix: PropTypes.string,
65
+ name: PropTypes.string.isRequired,
66
+ date: PropTypes.string,
67
+ dateFormat: PropTypes.string,
68
+ type: PropTypes.string,
69
+ link: PropTypes.string,
70
+ authorImg: PropTypes.string,
71
+ readingTime: PropTypes.string,
72
+ icon: PropTypes.string,
73
+ splitDateFormat: PropTypes.string,
74
+ isCardsAuthor: PropTypes.bool,
75
+ };
76
+
77
+ export default Author;
@@ -1,3 +1,4 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
1
2
  import React, { useContext } from 'react';
2
3
  import PropTypes from 'prop-types';
3
4
  import { FaAngleRight } from 'react-icons/fa';
@@ -34,8 +35,7 @@ const ModuleTitle = ({ module, viewMoreIcon = <FaAngleRight />, pageContext = nu
34
35
 
35
36
  const getTitle = (className) => {
36
37
  const moduleTitle = module?.title || module?.module_title;
37
-
38
- if (!module?.module_title_tag) {
38
+ if (!module?.module_title_tag && moduleTitle) {
39
39
  return (
40
40
  <h2 className={`${styles.noTag} ${className}`}>
41
41
  {moduleTitle}
@@ -61,16 +61,19 @@ const ModuleTitle = ({ module, viewMoreIcon = <FaAngleRight />, pageContext = nu
61
61
  ) : null}
62
62
  </CustomTag>
63
63
  );
64
+
64
65
  return (
65
- <span className={`${styles.noTag} ${className}`}>
66
- {moduleTitle}
67
- {currentMonth ? (
68
- <span className={styles.toplistDate}>
69
- <small>•</small>
70
- {`${currentMonth} ${year}`}
71
- </span>
72
- ) : null}
73
- </span>
66
+ moduleTitle && (
67
+ <span className={`${styles.noTag} ${className}`}>
68
+ {moduleTitle}
69
+ {currentMonth ? (
70
+ <span className={styles.toplistDate}>
71
+ <small>•</small>
72
+ {`${currentMonth} ${year}`}
73
+ </span>
74
+ ) : null}
75
+ </span>
76
+ )
74
77
  );
75
78
  };
76
79
 
@@ -67,12 +67,15 @@ const Head = ({ page = {}, siteInfo }) => {
67
67
  <link rel="canonical" href={getCanonicalUrl(page)} />
68
68
  {page.preconnect_links &&
69
69
  page.preconnect_links.map((link) => <link key={keygen()} rel="preconnect" href={link} />)}
70
- <meta name="og:title" content={page.meta_title} />
71
- <meta name="og:site_name" content={siteInfo?.site_name && setName(siteInfo?.site_name)} />
72
- <meta name="og:description" content={parsedMetaDescr} />
73
- <meta name="og:type" content={page.path === '/' ? 'website' : 'article'} />
74
- <meta name="og:image" content={pageImage} />
75
- <meta name="og:url" content={getUrl(page.path)} />
70
+ <meta property="og:title" content={page.meta_title} />
71
+ <meta
72
+ property="og:site_name"
73
+ content={siteInfo?.site_name && setName(siteInfo?.site_name)}
74
+ />
75
+ <meta property="og:description" content={parsedMetaDescr} />
76
+ <meta property="og:type" content={page.path === '/' ? 'website' : 'article'} />
77
+ <meta property="og:image" content={pageImage} />
78
+ <meta property="og:url" content={getUrl(page.path)} />
76
79
  <meta
77
80
  property="og:locale"
78
81
  content={
@@ -99,6 +102,8 @@ const Head = ({ page = {}, siteInfo }) => {
99
102
  <meta name="twitter:creator" content={`@${twitterUsername}`} />
100
103
  <meta name="twitter:card" content="summary" />
101
104
  <meta name="twitter:image" content={pageImage} />
105
+ <meta property="twitter:label1" content="Reading time" />
106
+ <meta property="twitter:data1" content={`${page.reading_time}`} />
102
107
  </Helmet>
103
108
  )}
104
109
  </>
@@ -112,5 +112,13 @@
112
112
 
113
113
  --primaryText-bonus: '#e00028'
114
114
  --secondaryText-bonus: '#17182f';
115
+
116
+ // Extended Header Part - Author -
117
+ --author-text-fontSize: 1.4rem;
118
+ --author-primary-text-color: #151824;
119
+ --author-link-text-color: #151824;
120
+ --author-fontweight: 100;
121
+ --author-card-text-color: #151824;
122
+
115
123
 
116
124
  }
@@ -1,3 +1,5 @@
1
+ /* eslint-disable react/forbid-prop-types */
2
+ /* eslint-disable react/jsx-no-bind */
1
3
  /* eslint-disable import/no-extraneous-dependencies */
2
4
  import React, { useContext, useState } from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -53,7 +55,7 @@ const Tabs = ({
53
55
  styles[headerClass]
54
56
  } ${tabsAlign === 'right' && styles.invertOrder}`;
55
57
  const getTitle = () => {
56
- if (!module?.module_title) {
58
+ if (!module?.module_title && module.title) {
57
59
  return (
58
60
  <h2 className={styles.noTag}>
59
61
  {module.title}