gatsby-core-theme 44.30.0 → 44.30.1

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,13 @@
1
+ ## [44.30.1](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v44.30.0...v44.30.1) (2026-06-22)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * fix style of notification panel ([b21a180](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/b21a1808842776e36ef14f3f8f1fbe70a20f1854))
7
+
8
+
9
+ * Merge branch 'master' of gitlab.com:g2m-gentoo/team-floyd/themes/gatsby-themes ([850c758](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/850c7581eb1a7a19fa20b63eace13032cd54919a))
10
+
1
11
  # [44.30.0](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v44.29.0...v44.30.0) (2026-06-22)
2
12
 
3
13
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-core-theme",
3
- "version": "44.30.0",
3
+ "version": "44.30.1",
4
4
  "description": "Gatsby Theme NPM Package",
5
5
  "author": "",
6
6
  "license": "ISC",
@@ -25,7 +25,7 @@ const getNotificationToplist = (modules) => {
25
25
  );
26
26
  };
27
27
 
28
- const Notifications = ({ section, market }) => {
28
+ const Notifications = ({ section, market, hideBadges = false }) => {
29
29
  const { setShowSearch, setShowMenu, showMenu, showSearch } =
30
30
  useContext(NavigationContext);
31
31
  const notificationRef = useRef(null);
@@ -139,6 +139,7 @@ const Notifications = ({ section, market }) => {
139
139
  activeTab={activeTab}
140
140
  onTabChange={setActiveTab}
141
141
  market={market}
142
+ hideBadges={hideBadges}
142
143
  />
143
144
 
144
145
  <div className={styles.content}>
@@ -146,6 +147,7 @@ const Notifications = ({ section, market }) => {
146
147
  <BonusesItems
147
148
  toplist={notificationToplist}
148
149
  showUnread={newNotification}
150
+ hideBadges={hideBadges}
149
151
  />
150
152
  ) : (
151
153
  renderTrendingContent()
@@ -163,6 +165,7 @@ Notifications.propTypes = {
163
165
  section: PropTypes.shape({
164
166
  modules: PropTypes.arrayOf(PropTypes.shape({})),
165
167
  }),
168
+ hideBadges: PropTypes.bool
166
169
  };
167
170
 
168
171
  export default Notifications;
@@ -10,11 +10,13 @@ import keygen from "~helpers/keygen";
10
10
  import {
11
11
  getBonusData,
12
12
  getPromoCode,
13
+ getOperatorTnc,
13
14
  imagePrettyUrl,
14
15
  } from "~helpers/getters";
15
16
  import { getAltText } from "~helpers/image";
16
17
  import { getTimeAgo } from "~helpers/date-time";
17
18
  import { TrackingKeys } from "~constants/tracking-api";
19
+ import VerifiedBadgeIcon from "~images/icons/verifiedBadgeIcon";
18
20
  import useTranslate from "~hooks/useTranslate/useTranslate";
19
21
  import styles from "../../notifications.module.scss";
20
22
 
@@ -25,6 +27,7 @@ const BonusItem = ({
25
27
  showUnread,
26
28
  bonusCodeLabel,
27
29
  updatedLabel,
30
+ hideBadges
28
31
  }) => {
29
32
  const bonus = getBonusData(item, tracker);
30
33
  const oneliner = [bonus?.mainLine, bonus?.secondLine]
@@ -42,6 +45,16 @@ const BonusItem = ({
42
45
  const timeAgo = timeData.value
43
46
  ? `${updatedLabel} ${timeData.value} ${timeKeyLabel}`
44
47
  : "";
48
+ const hasTnc = Boolean(getOperatorTnc(item, tracker));
49
+
50
+ const verifiedMonth = new Intl.DateTimeFormat("en-US", {
51
+ month: "long",
52
+ }).format(new Date());
53
+
54
+ const verifiedLabel = useTranslate(
55
+ "notification_verified_in",
56
+ "Verified in [month]"
57
+ ).replace("[month]", verifiedMonth);
45
58
 
46
59
  return (
47
60
  <li className={styles.bonusItem}>
@@ -102,10 +115,18 @@ const BonusItem = ({
102
115
  )}
103
116
  {timeAgo && <span className={styles.updated}>{timeAgo}</span>}
104
117
  </div>
118
+ {hideBadges && (
119
+ <span className={styles.customVerifiedBadge}>
120
+ <VerifiedBadgeIcon />
121
+ {verifiedLabel}
122
+ </span>
123
+ )}
105
124
 
106
- <div className={styles.legal}>
107
- <Tnc operator={item} tracker={tracker} isFixed />
108
- </div>
125
+ {hasTnc && (
126
+ <div className={styles.legal}>
127
+ <Tnc operator={item} tracker={tracker} isFixed />
128
+ </div>
129
+ )}
109
130
  </li>
110
131
  );
111
132
  };
@@ -126,9 +147,10 @@ BonusItem.propTypes = {
126
147
  showUnread: PropTypes.bool,
127
148
  bonusCodeLabel: PropTypes.string.isRequired,
128
149
  updatedLabel: PropTypes.string.isRequired,
150
+ hideBadges: PropTypes.bool
129
151
  };
130
152
 
131
- const BonusesItems = ({ toplist, showUnread }) => {
153
+ const BonusesItems = ({ toplist, showUnread, hideBadges }) => {
132
154
  const items = toplist?.items || [];
133
155
  const tracker =
134
156
  toplist?.toplist_bonus || toplist?.one_liner || toplist?.tracker || "main";
@@ -149,6 +171,7 @@ const BonusesItems = ({ toplist, showUnread }) => {
149
171
  showUnread={showUnread}
150
172
  bonusCodeLabel={bonusCodeLabel}
151
173
  updatedLabel={updatedLabel}
174
+ hideBadges={hideBadges}
152
175
  />
153
176
  ))}
154
177
  </ul>
@@ -163,6 +186,7 @@ BonusesItems.propTypes = {
163
186
  tracker: PropTypes.string,
164
187
  }),
165
188
  showUnread: PropTypes.bool,
189
+ hideBadges: PropTypes.bool
166
190
  };
167
191
 
168
192
  export default BonusesItems;
@@ -2,13 +2,13 @@
2
2
  /* eslint-disable react-hooks/rules-of-hooks */
3
3
  import React from "react";
4
4
  import PropTypes from "prop-types";
5
+ import { FaArrowRight } from "@react-icons/all-files/fa/FaArrowRight";
5
6
  import LazyImage from "~hooks/lazy-image";
6
7
  import keygen from "~helpers/keygen";
7
8
  import Link from "~hooks/link";
8
9
  import {
9
10
  imagePrettyUrl,
10
11
  getExtraField,
11
- textWordsLimit,
12
12
  } from "~helpers/getters";
13
13
  import { getAltText, getImageFilename } from "~helpers/image";
14
14
  import ArticleIcon from "../../../../../images/icons/articleIcon";
@@ -27,7 +27,7 @@ const CategoryTag = ({ category }) => {
27
27
  return <span className={styles.tag}>{label}</span>;
28
28
  };
29
29
 
30
- const CardsItems = ({ module, wordLimit = 12, showUnread = false }) => {
30
+ const CardsItems = ({ module, showUnread = false }) => {
31
31
  const { items } = module || {};
32
32
  const noNewUpdates = useTranslate("noNewUpdates", "No new items");
33
33
  const updatedLabel = useTranslate("updated", "Updated");
@@ -87,14 +87,13 @@ const CardsItems = ({ module, wordLimit = 12, showUnread = false }) => {
87
87
  )}
88
88
  {description && (
89
89
  <p className={styles.subtitle}>
90
- {textWordsLimit(
91
- description.replace(/<\/?[^>]+(>|$)/g, ""),
92
- wordLimit
93
- )}
90
+ {description.replace(/<\/?[^>]+(>|$)/g, "")}
94
91
  </p>
95
92
  )}
96
93
  </div>
97
- <span className={styles.cta} aria-hidden="true" />
94
+ <span className={styles.cta} aria-hidden="true">
95
+ <FaArrowRight size={12} />
96
+ </span>
98
97
  </div>
99
98
  {(categories.length > 0 || ribbon || timeAgo) && (
100
99
  <div className={styles.meta}>
@@ -134,7 +134,7 @@
134
134
  }
135
135
 
136
136
  .unreadDot {
137
- left: -1.2rem;
137
+ left: -0.8rem;
138
138
  top: -0.8rem;
139
139
  }
140
140
 
@@ -157,10 +157,6 @@
157
157
  }
158
158
  }
159
159
 
160
- .text {
161
- padding-right: 2.4rem;
162
- }
163
-
164
160
  .title {
165
161
  font-weight: 700;
166
162
  color: var(--notification-oneliner-color, #1b1b1c);
@@ -169,6 +165,10 @@
169
165
  .subtitle {
170
166
  display: -webkit-box;
171
167
  overflow: hidden;
168
+ -webkit-box-orient: vertical;
169
+ -webkit-line-clamp: 2;
170
+ line-clamp: 2;
171
+ text-overflow: ellipsis;
172
172
  color: var(--notification-trending-description-color, #6e6e84);
173
173
  }
174
174
 
@@ -206,15 +206,16 @@
206
206
  flex-shrink: 0;
207
207
  width: 3.6rem;
208
208
  height: 3.6rem;
209
+ padding: 0.2rem 0.8rem 0.4rem;
210
+ border: var(--notification-panel-cta-border, none);
209
211
  border-radius: var(--notification-cta-border-radius, 4.8rem);
210
- background: var(--notification-trending-cta-bg, #f4f4f4)
211
- url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M4.5 2.5L8 6L4.5 9.5' stroke='%236B6A72' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")
212
- no-repeat center;
212
+ background: var(--notification-trending-cta-bg, #f4f4f4);
213
+ color: var(--notification-trending-cta-color, #6b6a72);
213
214
  pointer-events: none;
214
215
  }
215
216
  }
216
217
 
217
218
  .embeddedList {
218
219
  gap: 1.2rem;
219
- padding: 0.8rem 0 0 1.2rem;
220
+ padding: 0.8rem 0 0;
220
221
  }
@@ -2,7 +2,8 @@
2
2
  /* eslint-disable react-hooks/rules-of-hooks */
3
3
  import React from "react";
4
4
  import PropTypes from "prop-types";
5
- import { imagePrettyUrl, textWordsLimit } from "~helpers/getters";
5
+ import { FaArrowRight } from "@react-icons/all-files/fa/FaArrowRight";
6
+ import { imagePrettyUrl } from "~helpers/getters";
6
7
  import { getAltText, getImageFilename } from "~helpers/image";
7
8
  import LazyImage from "~hooks/lazy-image";
8
9
  import keygen from "~helpers/keygen";
@@ -11,7 +12,7 @@ import useTranslate from "~hooks/useTranslate/useTranslate";
11
12
  import { getTimeAgo } from "~helpers/date-time";
12
13
  import styles from "../cards-v2/notification-items.module.scss";
13
14
 
14
- const SpotlightItems = ({ module, showUnread = false, wordLimit = 12 }) => {
15
+ const SpotlightItems = ({ module, showUnread = false }) => {
15
16
  const { items } = module || {};
16
17
  const noNewUpdates = useTranslate("noNewUpdates", "No new items");
17
18
  const updatedLabel = useTranslate("updated", "Updated");
@@ -64,14 +65,13 @@ const SpotlightItems = ({ module, showUnread = false, wordLimit = 12 }) => {
64
65
  )}
65
66
  {description && (
66
67
  <p className={styles.subtitle}>
67
- {textWordsLimit(
68
- description.replace(/<\/?[^>]+(>|$)/g, ""),
69
- wordLimit
70
- )}
68
+ {description.replace(/<\/?[^>]+(>|$)/g, "")}
71
69
  </p>
72
70
  )}
73
71
  </div>
74
- <span className={styles.cta} aria-hidden="true" />
72
+ <span className={styles.cta} aria-hidden="true">
73
+ <FaArrowRight size={12} />
74
+ </span>
75
75
  </div>
76
76
  {(ribbon || timeAgo) && (
77
77
  <div className={styles.meta}>
@@ -138,7 +138,6 @@ SpotlightItems.propTypes = {
138
138
  items: PropTypes.arrayOf(PropTypes.shape({})),
139
139
  }),
140
140
  showUnread: PropTypes.bool,
141
- wordLimit: PropTypes.number,
142
141
  };
143
142
 
144
143
  export default SpotlightItems;
@@ -62,6 +62,7 @@
62
62
  height: calc(100% - var(--nav-height-mobile, 4.8rem));
63
63
  background: var(--notification-panel-bg, #fff);
64
64
  border-left: var(--notification-panel-border-left, 0 solid transparent);
65
+ border-top: var(--notification-panel-border-top, 0 solid transparent);
65
66
 
66
67
  @include min(tablet) {
67
68
  top: 0;
@@ -270,3 +271,21 @@
270
271
  text-decoration: none;
271
272
  }
272
273
  }
274
+
275
+
276
+ .customVerifiedBadge {
277
+ @include flex-align(center, flex-start);
278
+
279
+ box-sizing: border-box;
280
+ width: fit-content;
281
+ gap: 0.4rem;
282
+ height: 2rem;
283
+ padding: 0.1rem 0.6rem 0.1rem 0.2rem;
284
+ border-radius: var(--notification-badge-border-radius, 10rem);
285
+ font-size: 1.2rem;
286
+ font-weight: 400;
287
+ line-height: 1.8rem;
288
+ background: var(--notification-verified-badge-bg, #DEE9FF);
289
+ color: var(--notification-verified-badge-color, #000);
290
+ border: 1px solid var(--notification-verified-badge-border, transparent);
291
+ }
@@ -10,9 +10,9 @@
10
10
  h2 {
11
11
  flex: 1;
12
12
  margin: 0;
13
- font-size: 2rem;
13
+ font-size: var(--notification-panel-title-size, 2rem);
14
14
  font-weight: 700;
15
- line-height: 2.8rem;
15
+ line-height: var(--notification-panel-title-line-height, 2.8rem);
16
16
  color: var(--notification-title-color, #0f0c28);
17
17
  text-transform: capitalize;
18
18
  }
@@ -5,7 +5,7 @@ import CountryFlagIcon from "~images/icons/countryFlag";
5
5
  import useTranslate from "~hooks/useTranslate/useTranslate";
6
6
  import styles from "./panel-tabs.module.scss";
7
7
 
8
- const PanelTabs = ({ activeTab, onTabChange, market }) => {
8
+ const PanelTabs = ({ activeTab, onTabChange, market, hideBadges }) => {
9
9
  const countryCode = market?.split("_")[0]?.toUpperCase();
10
10
  const verifiedMonth = new Intl.DateTimeFormat("en-US", {
11
11
  month: "long",
@@ -45,8 +45,7 @@ const PanelTabs = ({ activeTab, onTabChange, market }) => {
45
45
  {trendingContentLabel}
46
46
  </button>
47
47
  </div>
48
-
49
- {activeTab === "bonuses" && (
48
+ {(activeTab === "bonuses" && !hideBadges) && (
50
49
  <div className={styles.badges}>
51
50
  <span className={styles.verifiedBadge}>
52
51
  <VerifiedBadgeIcon />
@@ -74,6 +73,7 @@ PanelTabs.propTypes = {
74
73
  activeTab: PropTypes.oneOf(["bonuses", "trending"]).isRequired,
75
74
  onTabChange: PropTypes.func.isRequired,
76
75
  market: PropTypes.string,
76
+ hideBadges: PropTypes.bool
77
77
  };
78
78
 
79
79
  export default PanelTabs;
@@ -11,7 +11,6 @@
11
11
  @include flex-align(flex-start, stretch);
12
12
 
13
13
  box-sizing: border-box;
14
- height: 4rem;
15
14
  padding: 0.4rem;
16
15
  border: 1px solid var(--notification-tabs-border, #dedede);
17
16
  border-radius: var(--notification-tabs-border-radius, 1.2rem);
@@ -21,10 +20,9 @@
21
20
  .tab,
22
21
  .tabActive {
23
22
  flex: 1;
24
- height: 3.2rem;
25
23
  border: 0;
26
24
  border-radius: var(--notification-tab-border-radius, 0.8rem);
27
- padding: 0.4rem 1rem;
25
+ padding: 0.7rem 1rem;
28
26
  font-size: 1.2rem;
29
27
  line-height: 1.8rem;
30
28
  cursor: pointer;