gatsby-core-theme 42.0.2 → 42.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ## [42.0.3](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v42.0.2...v42.0.3) (2025-02-07)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add checker ([586b529](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/586b5292d469676e995a7b0c6dddbfa7385b8b30))
7
+ * add tests ([24fe1b1](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/24fe1b19b46addca856bed2d727c46b90cffcc74))
8
+ * add traling slash on content and og:url ([4c1d918](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/4c1d9180e2e3c81ad965a6bc8f65c4fcf415e561))
9
+ * enabled mobile bottom navigation ([b3762c8](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/b3762c88226bf712fa0195e1178773d7aa0d4942))
10
+ * fix placeholder ([75a2619](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/75a261915fee687c451ac5fbc21ef8c21c14f101))
11
+ * update bottom navigation ([ae5fa79](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/ae5fa79b1216e0ff36056b7ffb2616828b81aff9))
12
+
13
+
14
+ * Merge branch 'fix-meta-title-placeholder' into 'master' ([8ced56d](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/8ced56d344ff6dea84077d869b168113d1a47bf8))
15
+ * Merge branch 'tm-5176-mobile-bottom-navigation' into 'master' ([9ce920b](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/9ce920b9ef19c0d8133ac43f8826df7a2990b8f6))
16
+ * Merge branch 'tm-5161-trailing-slash' into 'master' ([bb9060e](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/bb9060ee6ddda62657e8275f8f99fe573b136709))
17
+
18
+
19
+ ### Tests
20
+
21
+ * add test data ([97b604f](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/commit/97b604f66925da7a6846ccc20e593a52d70e169b))
22
+
1
23
  ## [42.0.2](https://gitlab.com/g2m-gentoo/team-floyd/themes/gatsby-themes/compare/v42.0.1...v42.0.2) (2025-02-05)
2
24
 
3
25
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-core-theme",
3
- "version": "42.0.2",
3
+ "version": "42.0.3",
4
4
  "description": "Gatsby Theme NPM Package",
5
5
  "author": "",
6
6
  "license": "ISC",
@@ -8,6 +8,7 @@ import CookieConsent from '~organisms/cookie-consent';
8
8
  import isSticky from '~hooks/stickyOnScroll';
9
9
  import { TrackingKeys } from '~constants/tracking-api'
10
10
  import styles from './floating-area.module.scss';
11
+ import { layout } from '../../../constants/site-settings/navigation';
11
12
 
12
13
  export default function FloatingArea({
13
14
  pageContext,
@@ -20,6 +21,7 @@ export default function FloatingArea({
20
21
  const showScroll = isSticky(offsetTop);
21
22
  const [closedBanner, setClosedBanner] = useState(false);
22
23
  const pageType = pageContext.page.relation_type;
24
+ const pageTemplate = pageContext?.page?.template
23
25
  const getAllMarketsHomepage = () =>
24
26
  Object.keys(pageContext?.allMarkets || {})?.map((elm) => elm.split('_')[1]) || [];
25
27
  const isPageHomepage =
@@ -32,7 +34,7 @@ export default function FloatingArea({
32
34
  : null;
33
35
 
34
36
  const FooterNavigation =
35
- footerNavigationData && footerNavigationData?.modules?.length > 0 && pageType !== 'operator'
37
+ footerNavigationData && footerNavigationData?.modules?.length > 0 && pageType !== 'operator'&& layout[pageTemplate]?.footerNavigation
36
38
  ? lazy(() => import(`gatsby-core-theme/src/components/organisms/footer-navigation`))
37
39
  : null;
38
40
 
@@ -10,14 +10,19 @@ export function getLanguage(language) {
10
10
  if (language === 'no') return 'nb-NO';
11
11
  return language || 'en';
12
12
  }
13
- export function getCanonicalUrl(page) {
13
+ export function getCanonicalUrl(page, isTracker) {
14
14
  if (page.canonical_url) {
15
15
  return `${process.env.GATSBY_SITE_URL}${page.canonical_url}`;
16
16
  }
17
17
  if (page.path === '/') {
18
18
  return process.env.GATSBY_SITE_URL;
19
19
  }
20
- return `${process.env.GATSBY_SITE_URL}${page.path.replace(/^\//, '')}`;
20
+ const trailingSlash = process.env.TRAILING_SLASH ? '/' : '';
21
+
22
+ return `${process.env.GATSBY_SITE_URL}${page.path.replace(/^\//, '')}${
23
+ !isTracker ? trailingSlash : ''
24
+ }`
25
+
21
26
  }
22
27
  export function getRobotOptions(options) {
23
28
  const array = [];
@@ -39,6 +44,7 @@ function setName(string) {
39
44
 
40
45
  const HeadData = ({ page = {}, siteInfo }) => {
41
46
  const pageImage = getPageImage(page) ? getPageImage(page) : imagePrettyUrl(siteInfo?.site_logo);
47
+ const isTracker = page.template === 'tracker';
42
48
  let defaultHref = null;
43
49
  // When google re-indexes dev NSA and IRL, remove lines 28, 41, 42, 43 and process.env.GATSBY_ACTIVE_ENV !== 'development' from lines 24, 25, 27, 29, 43
44
50
  return (
@@ -55,7 +61,7 @@ const HeadData = ({ page = {}, siteInfo }) => {
55
61
  {process.env.GATSBY_ACTIVE_ENV === 'development' && (
56
62
  <meta name="googlebot" content="noindex,follow" />
57
63
  )}
58
- <link rel="canonical" href={getCanonicalUrl(page)} />
64
+ <link rel="canonical" href={getCanonicalUrl(page, isTracker)} />
59
65
  {page?.hreflangs?.map((link) => {
60
66
  if (link?.default) defaultHref = link?.path;
61
67
  return <link rel="alternate" href={getUrl(link.path)} hrefLang={link.language} />;
@@ -69,7 +75,7 @@ const HeadData = ({ page = {}, siteInfo }) => {
69
75
  <meta name="og:description" content={page.meta_description} />
70
76
  <meta name="og:type" content={page.path === '/' ? 'website' : 'article'} />
71
77
  <meta name="og:image" content={pageImage} />
72
- <meta name="og:url" content={getUrl(page.path)} />
78
+ <meta name="og:url" content={getCanonicalUrl(page, isTracker)} />
73
79
  <meta
74
80
  property="og:locale"
75
81
  content={getLanguage(page.language) === 'en' ? 'en_GB' : getLanguage(page.language)}
@@ -41,3 +41,9 @@ export const pageTypes = {
41
41
  disablePopup: false,
42
42
  },
43
43
  };
44
+
45
+ export const layout = {
46
+ homepage: {
47
+ footerNavigation: false,
48
+ }
49
+ };
@@ -162,7 +162,7 @@ export function removeUnwantedSections(obj, pageType) {
162
162
  games: ["post_main_games"],
163
163
  operator: ['post_main_operators', "pre_main_operators", "recommended_casinos"],
164
164
  article: ['post_main_articles'],
165
- default: ['footer', 'links', 'navigation', 'popup', 'rg_navigation', 'sidebar']
165
+ default: ['footer', 'links', 'navigation', 'popup', 'rg_navigation', 'sidebar', 'footer_navigation']
166
166
  }
167
167
 
168
168
  // Get sections to keep: merge default sections and specific sections for the key
@@ -289,23 +289,26 @@ export function processExtraFields(
289
289
  }
290
290
 
291
291
  function updatePlaceholders(page, data, translationsData) {
292
+
292
293
  page.title =
293
294
  page.title &&
294
295
  generatePlaceholderString(page.title, translationsData, {
295
296
  siteName: data.site_name,
296
- siteTitle: page.title,
297
+ pageTitle: page.title
297
298
  });
299
+
298
300
  page.meta_title =
299
301
  page.meta_title &&
300
302
  generatePlaceholderString(page.meta_title, translationsData, {
301
303
  siteName: data.site_name,
302
- siteTitle: page.title,
304
+ pageTitle: page.title
303
305
  });
306
+
304
307
  page.meta_description =
305
308
  page.meta_description &&
306
309
  generatePlaceholderString(page.meta_description, translationsData, {
307
310
  siteName: data.site_name,
308
- siteTitle: page.title,
311
+ pageTitle: page.title
309
312
  });
310
313
  }
311
314
 
@@ -1,106 +1,128 @@
1
1
  /* eslint-disable react/destructuring-assignment */
2
- import React from 'react'
3
- import Iframe from 'gatsby-core-theme/src/components/atoms/iframe'
4
- import { isTrackerLink } from 'gatsby-core-theme/src/helpers/tracker.mjs'
5
- import processImageNode from './processImageNode.js'
6
- import { TrackingKeys } from '~constants/tracking-api'
7
- import PrettyLink from '~atoms/pretty-link'
8
-
9
- export default (node, moduleWidth = 960, moduleName, pageTemplate, modulePosition, styles) => {
10
-
11
- if (node.name === 'a' && node?.attribs?.class) {
2
+ import React from "react";
3
+ import Iframe from "gatsby-core-theme/src/components/atoms/iframe";
4
+ import { isTrackerLink } from "gatsby-core-theme/src/helpers/tracker.mjs";
5
+ import processImageNode from "./processImageNode.js";
6
+ import { TrackingKeys } from "~constants/tracking-api";
7
+ import PrettyLink from "~atoms/pretty-link";
8
+
9
+ export default (
10
+ node,
11
+ moduleWidth = 960,
12
+ moduleName,
13
+ pageTemplate,
14
+ modulePosition,
15
+ styles
16
+ ) => {
17
+ if (node.name === "a" && node?.attribs?.class) {
12
18
  node.attribs.class = styles && styles[node?.attribs?.class];
13
19
  }
14
20
 
15
- if (node && node.attribs && node.attribs['data-anchor-label']) {
16
- node.attribs['data-track'] = true;
21
+ if (node && node.attribs && node.attribs["data-anchor-label"]) {
22
+ node.attribs["data-track"] = true;
17
23
  }
18
24
 
19
- if (node.name === 'div' && (node.attribs['data-type'] === 'columnBlock' || node.attribs['data-type'] === 'threeColumnBlock')) {
20
- node.attribs.class = `${styles.column} ${node.attribs?.class === 'two-column-block' ? styles.twoColumnBlock : styles.threeColumnBlock}`;
25
+ if (
26
+ node.name === "div" &&
27
+ (node.attribs["data-type"] === "columnBlock" ||
28
+ node.attribs["data-type"] === "threeColumnBlock")
29
+ ) {
30
+ node.attribs.class = `${styles.column} ${
31
+ node.attribs?.class === "two-column-block"
32
+ ? styles.twoColumnBlock
33
+ : styles.threeColumnBlock
34
+ }`;
21
35
  }
22
36
 
23
- if (node.name === 'iframe') {
24
- return <Iframe src={node.attribs.src} />
37
+ if (node.name === "iframe") {
38
+ return <Iframe src={node.attribs.src} />;
25
39
  }
26
40
 
27
- if (node.name === 'img') {
28
- return processImageNode(node, moduleWidth)
41
+ if (node.name === "img") {
42
+ return processImageNode(node, moduleWidth);
29
43
  }
30
44
 
31
- if (node.name === 'a' && isTrackerLink(node?.attribs?.href || '')) {
32
- // Helper function to convert style string to an object
33
- const convertStyleStringToObject = (styleString) =>
34
- styleString.split(';').reduce((acc, style) => {
35
- const [key, value] = style.split(':')
36
- if (key && value) {
37
- acc[key.trim()] = value.trim()
38
- }
39
- return acc
40
- }, {})
41
-
42
- // Helper function to recursively render children nodes
43
- const renderChildren = (children) =>
44
- children.map((child) => {
45
- if (child.type === 'tag') {
46
- const styleObject = child.attribs?.style
47
- ? convertStyleStringToObject(child.attribs.style)
48
- : null
49
-
50
- const { style, ...attribsWithoutStyle } = child.attribs
51
-
52
- // Assuming `child.attribs.id` or a similar unique property exists
53
- const key = child.attribs.id || child.name
54
-
55
- if (child.name === 'img') {
56
- return processImageNode(child, moduleWidth)
45
+ if (node.name === "a") {
46
+ const tralingSlash = process.env.TRAILING_SLASH;
47
+ if (!node.attribs.href.endsWith('/') && tralingSlash === "true" && !isTrackerLink(node?.attribs?.href || "")) {
48
+ node.attribs.href = `${node.attribs.href }/`
49
+ return node;
50
+ }
51
+
52
+ if (isTrackerLink(node?.attribs?.href || "")) {
53
+ // Helper function to convert style string to an object
54
+ const convertStyleStringToObject = (styleString) =>
55
+ styleString.split(";").reduce((acc, style) => {
56
+ const [key, value] = style.split(":");
57
+ if (key && value) {
58
+ acc[key.trim()] = value.trim();
59
+ }
60
+ return acc;
61
+ }, {});
62
+
63
+ // Helper function to recursively render children nodes
64
+ const renderChildren = (children) =>
65
+ children.map((child) => {
66
+ if (child.type === "tag") {
67
+ const styleObject = child.attribs?.style
68
+ ? convertStyleStringToObject(child.attribs.style)
69
+ : null;
70
+
71
+ const { style, ...attribsWithoutStyle } = child.attribs;
72
+
73
+ // Assuming `child.attribs.id` or a similar unique property exists
74
+ const key = child.attribs.id || child.name;
75
+
76
+ if (child.name === "img") {
77
+ return processImageNode(child, moduleWidth);
78
+ }
79
+
80
+ return React.createElement(
81
+ child.name,
82
+ { key, ...attribsWithoutStyle, style: styleObject },
83
+ child.name !== "img" && child.name !== "br"
84
+ ? renderChildren(child.children || [])
85
+ : null
86
+ );
57
87
  }
58
88
 
59
- return React.createElement(
60
- child.name,
61
- { key, ...attribsWithoutStyle, style: styleObject },
62
- child.name !== 'img' && child.name !== 'br'
63
- ? renderChildren(child.children || [])
64
- : null
65
- )
66
- }
67
-
68
- return child?.data
69
- })
70
-
71
- return (
72
- <PrettyLink
73
- directPrettyLink={node?.attribs?.href}
74
- pageTemplate={pageTemplate}
75
- moduleName={TrackingKeys?.CONTENT}
76
- tracker={module?.tracking_link_name || 'main'}
77
- className="content-module-gtm"
78
- clickedElement="link"
79
- rel={node?.attribs?.rel}
80
- modulePosition={modulePosition}
81
- >
82
- {node.children === 'text'
83
- ? node.children[0]?.data
84
- : renderChildren(node?.children || [])}
85
- </PrettyLink>
86
- )
89
+ return child?.data;
90
+ });
91
+
92
+ return (
93
+ <PrettyLink
94
+ directPrettyLink={node?.attribs?.href}
95
+ pageTemplate={pageTemplate}
96
+ moduleName={TrackingKeys?.CONTENT}
97
+ tracker={module?.tracking_link_name || "main"}
98
+ className="content-module-gtm"
99
+ clickedElement="link"
100
+ rel={node?.attribs?.rel}
101
+ modulePosition={modulePosition}
102
+ >
103
+ {node.children === "text"
104
+ ? node.children[0]?.data
105
+ : renderChildren(node?.children || [])}
106
+ </PrettyLink>
107
+ );
108
+ }
87
109
  }
88
110
 
89
- if (node.name === 'p') {
90
- const hasChildImg = node?.children.find((child) => child?.name === 'img')
111
+ if (node.name === "p") {
112
+ const hasChildImg = node?.children.find((child) => child?.name === "img");
91
113
 
92
114
  if (hasChildImg) {
93
- hasChildImg.attribs.style = ''
94
- return hasChildImg
115
+ hasChildImg.attribs.style = "";
116
+ return hasChildImg;
95
117
  }
96
118
  }
97
119
 
98
120
  // Add tab index for tables for accessibility
99
- if (node.name === 'table') {
100
- node.attribs.tabIndex = 0
121
+ if (node.name === "table") {
122
+ node.attribs.tabIndex = 0;
101
123
 
102
- return node
124
+ return node;
103
125
  }
104
126
 
105
- return null
106
- }
127
+ return null;
128
+ };
@@ -118,4 +118,37 @@ describe('replaceMedia function', () => {
118
118
  expect(imageNode.props.width).toBe(100)
119
119
  expect(imageNode.props.height).toBe(50)
120
120
  })
121
+
122
+
123
+ it('should add slash in the end of the link if it isnt exist', () => {
124
+ process.env.TRAILING_SLASH = "true";
125
+
126
+ const node = {
127
+ name: 'a',
128
+ attribs: {
129
+ href: 'http://example.com',
130
+ style: 'color: red; text-decoration: none;',
131
+ rel: 'noopener noreferrer'
132
+ },
133
+ }
134
+ const result = transformNode(node);
135
+
136
+ expect(result.attribs.href).toBe("http://example.com/");
137
+ });
138
+
139
+ it('if the slash exist on the end no need to add it the function will return null', () => {
140
+ process.env.TRAILING_SLASH = "true";
141
+
142
+ const node = {
143
+ name: 'a',
144
+ attribs: {
145
+ href: 'http://example.com/',
146
+ style: 'color: red; text-decoration: none;',
147
+ rel: 'noopener noreferrer'
148
+ },
149
+ }
150
+ const result = transformNode(node);
151
+
152
+ expect(result).toBe(null);
153
+ });
121
154
  })
@@ -29,13 +29,89 @@ export const getDefaultCryptoBrokersProps = (index = 1) => ({
29
29
  url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1719825945/viperwin-logo.png",
30
30
  width: "412",
31
31
  height: "412",
32
- alt: "Image for Viperwin",
32
+ alt: "image for Viperwin",
33
33
  color: "#060b26",
34
34
  id: 139721,
35
35
  raw_filename: "1719825945/viperwin-logo"
36
36
  }
37
37
  })
38
38
 
39
+ export const transformedCryptoBrokers = () => ({
40
+ logo: {
41
+ filename: ""
42
+ },
43
+ id: 1,
44
+ selling_points: [
45
+ "fastpayouts",
46
+ "freespins",
47
+ "lowwager",
48
+ "new"
49
+ ],
50
+ name: "eToro",
51
+ short_name: "etoro",
52
+ url: "www.testbroker.com",
53
+ crypto_currencies: [
54
+ {
55
+ id: 202,
56
+ name: "Sushi",
57
+ iso_code: "SUSH",
58
+ symbol: "",
59
+ crypto: 1,
60
+ logo: {
61
+ title: "Sushiswap sushi (1)",
62
+ filename: "1710243195/sushiswap-sushi-%281%29.png",
63
+ extension: ".png",
64
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1710243195/sushiswap-sushi-%281%29.png",
65
+ width: "412",
66
+ height: "275",
67
+ alt: "image for Sushi Swap",
68
+ color: "#ffffff",
69
+ id: 128983,
70
+ raw_filename: "1710243195/sushiswap-sushi-%281%29"
71
+ }
72
+ },
73
+ {
74
+ id: 235,
75
+ name: "Maker",
76
+ iso_code: "MKR",
77
+ symbol: "MKR",
78
+ crypto: 1,
79
+ logo: {
80
+ title: "Maker coin logo",
81
+ filename: "1710243068/maker-coin-logo.png",
82
+ extension: ".png",
83
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1710243068/maker-coin-logo.png",
84
+ width: "412",
85
+ height: "275",
86
+ alt: "image for Maker Coin",
87
+ color: "#ffffff",
88
+ id: 128982,
89
+ raw_filename: "1710243068/maker-coin-logo"
90
+ }
91
+ },
92
+ {
93
+ id: 289,
94
+ name: "Sushiswap",
95
+ iso_code: "SUSHI",
96
+ symbol: "",
97
+ crypto: 1,
98
+ logo: {
99
+ title: "Sushiswap sushi (1)",
100
+ filename: "1710243195/sushiswap-sushi-%281%29.png",
101
+ extension: ".png",
102
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1710243195/sushiswap-sushi-%281%29.png",
103
+ width: "412",
104
+ height: "275",
105
+ alt: "image for Sushi Swap",
106
+ color: "#ffffff",
107
+ id: 128983,
108
+ raw_filename: "1710243195/sushiswap-sushi-%281%29"
109
+ }
110
+ }
111
+ ],
112
+ min_deposit: "2"
113
+ })
114
+
39
115
  export default function getCryptoBrokersList({ template, count = 1, id = 1, ...customProps }) {
40
116
  const cryptosList = {};
41
117
  // eslint-disable-next-line no-plusplus
@@ -62,6 +62,548 @@ export const getDefaultCryptoExchangesProps = (index = 1) => ({
62
62
  }
63
63
  })
64
64
 
65
+ export const transformedCryptoExchanges = () => ({
66
+ logo: {
67
+ title: "Binance Logo",
68
+ filename: "1669211148/binance.svg",
69
+ extension: ".svg",
70
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211148/binance.svg",
71
+ width: "72",
72
+ height: "48",
73
+ alt: "Logo image for Binance",
74
+ id: 97751,
75
+ raw_filename: "1669211148/binance",
76
+ },
77
+ id: 1,
78
+ selling_points: [
79
+ "huge_selection_of_cryptos",
80
+ "userfriendly",
81
+ "suitable_for_mobile"
82
+ ],
83
+ founded: "2017-07-01 00:00:00",
84
+ name: "Binance",
85
+ rating_security: 4,
86
+ rating_fees: 4,
87
+ rating_usability: 5,
88
+ rating_features: 4,
89
+ rating_support: 4,
90
+ rating_average: 4.2,
91
+ short_name: "binance",
92
+ markets_amount: "1,357",
93
+ support_types: [
94
+ "support_type_facebook",
95
+ "support_type_faq_section",
96
+ "support_type_live_chat",
97
+ "support_type_reddit"
98
+ ],
99
+ headquarters: "Malta",
100
+ crypto_currencies: [
101
+ {
102
+ id: 22,
103
+ name: "Bitcoin",
104
+ iso_code: "BTC",
105
+ symbol: "฿",
106
+ crypto: 1,
107
+ logo: {
108
+ title: "Bitcoin logo",
109
+ filename: "1669211251/bitcoin.svg",
110
+ extension: ".svg",
111
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211251/bitcoin.svg",
112
+ width: "72",
113
+ height: "48",
114
+ alt: "Logo image for Bitcoin",
115
+ id: 97753,
116
+ raw_filename: "1669211251/bitcoin"
117
+ }
118
+ },
119
+ {
120
+ id: 38,
121
+ name: "Dash",
122
+ iso_code: "DASH",
123
+ symbol: "",
124
+ crypto: 1,
125
+ logo: {
126
+ title: "Dash logo",
127
+ filename: "1669211476/dash.svg",
128
+ extension: ".svg",
129
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211476/dash.svg",
130
+ width: "72",
131
+ height: "48",
132
+ alt: "Logo image for Dash",
133
+ id: 97756,
134
+ raw_filename: "1669211476/dash"
135
+ }
136
+ },
137
+ {
138
+ id: 41,
139
+ name: "Dogecoin",
140
+ iso_code: "DOGE",
141
+ symbol: "",
142
+ crypto: 1,
143
+ logo: {
144
+ title: "Dogecoin logo",
145
+ filename: "1669211524/dogecoin.svg",
146
+ extension: ".svg",
147
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211524/dogecoin.svg",
148
+ width: "72",
149
+ height: "48",
150
+ alt: "Logo image for Dogecoin",
151
+ id: 97757,
152
+ raw_filename: "1669211524/dogecoin"
153
+ }
154
+ },
155
+ {
156
+ id: 47,
157
+ name: "Ethereum",
158
+ iso_code: "ETH",
159
+ symbol: "",
160
+ crypto: 1,
161
+ logo: {
162
+ title: "Ethereum logo",
163
+ filename: "1669211601/ethereum.svg",
164
+ extension: ".svg",
165
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211601/ethereum.svg",
166
+ width: "72",
167
+ height: "48",
168
+ alt: "Logo image for Ethereum",
169
+ id: 97759,
170
+ raw_filename: "1669211601/ethereum"
171
+ }
172
+ },
173
+ {
174
+ id: 90,
175
+ name: "Litecoin",
176
+ iso_code: "LTC",
177
+ symbol: "",
178
+ crypto: 1,
179
+ logo: {
180
+ title: "Litecoin logo",
181
+ filename: "1669211965/litecoin.svg",
182
+ extension: ".svg",
183
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211965/litecoin.svg",
184
+ width: "72",
185
+ height: "48",
186
+ alt: "Logo image for Litecoin",
187
+ id: 97763,
188
+ raw_filename: "1669211965/litecoin"
189
+ }
190
+ },
191
+ {
192
+ id: 163,
193
+ name: "Monero",
194
+ iso_code: "XMR",
195
+ symbol: "",
196
+ crypto: 1,
197
+ logo: {
198
+ title: "Monero logo",
199
+ filename: "1669212001/monero.svg",
200
+ extension: ".svg",
201
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669212001/monero.svg",
202
+ width: "72",
203
+ height: "48",
204
+ alt: "Logo image for Monero",
205
+ id: 97764,
206
+ raw_filename: "1669212001/monero"
207
+ }
208
+ },
209
+ {
210
+ id: 166,
211
+ name: "Ripple",
212
+ iso_code: "XRP",
213
+ symbol: "",
214
+ crypto: 1,
215
+ logo: {
216
+ title: "Ripple logo",
217
+ filename: "1669212065/ripple.svg",
218
+ extension: ".svg",
219
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669212065/ripple.svg",
220
+ width: "72",
221
+ height: "48",
222
+ alt: "Logo image for Ripple",
223
+ id: 97765,
224
+ raw_filename: "1669212065/ripple"
225
+ }
226
+ },
227
+ {
228
+ id: 171,
229
+ name: "Bitcoin Cash",
230
+ iso_code: "BCH",
231
+ symbol: "",
232
+ crypto: 1,
233
+ logo: {
234
+ title: "Bitcoin cash logo",
235
+ filename: "1669211220/bitcoin-cash.svg",
236
+ extension: ".svg",
237
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211220/bitcoin-cash.svg",
238
+ width: "72",
239
+ height: "48",
240
+ alt: "Logo image for Bitcoin Cash",
241
+ id: 97752,
242
+ raw_filename: "1669211220/bitcoin-cash"
243
+ }
244
+ },
245
+ {
246
+ id: 172,
247
+ name: "Binance",
248
+ iso_code: "BNB",
249
+ symbol: "",
250
+ crypto: 1,
251
+ logo: {
252
+ title: "Binance Logo",
253
+ filename: "1669211148/binance.svg",
254
+ extension: ".svg",
255
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211148/binance.svg",
256
+ width: "72",
257
+ height: "48",
258
+ alt: "Logo image for Binance",
259
+ id: 97751,
260
+ raw_filename: "1669211148/binance"
261
+ }
262
+ },
263
+ {
264
+ id: 175,
265
+ name: "EOS",
266
+ iso_code: "EOS",
267
+ symbol: "",
268
+ crypto: 1,
269
+ logo: {
270
+ title: "Eos logo",
271
+ filename: "1669211562/eos.svg",
272
+ extension: ".svg",
273
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211562/eos.svg",
274
+ width: "72",
275
+ height: "48",
276
+ alt: "Logo image for EOS",
277
+ id: 97758,
278
+ raw_filename: "1669211562/eos"
279
+ }
280
+ },
281
+ {
282
+ id: 176,
283
+ name: "Stellar Lumen",
284
+ iso_code: "XLM",
285
+ symbol: "",
286
+ crypto: 1,
287
+ logo: {
288
+ title: "Stellar logo",
289
+ filename: "1669212157/stellar-xlm.svg",
290
+ extension: ".svg",
291
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669212157/stellar-xlm.svg",
292
+ width: "72",
293
+ height: "48",
294
+ alt: "Logo image for Stellar",
295
+ id: 97767,
296
+ raw_filename: "1669212157/stellar-xlm"
297
+ }
298
+ },
299
+ {
300
+ id: 177,
301
+ name: "Tezos",
302
+ iso_code: "XTZ",
303
+ symbol: "XTZ",
304
+ crypto: 1,
305
+ logo: {
306
+ filename: ""
307
+ }
308
+ },
309
+ {
310
+ id: 178,
311
+ name: "Zcash",
312
+ iso_code: "ZEC",
313
+ symbol: "",
314
+ crypto: 1,
315
+ logo: {
316
+ title: "Zcash logo",
317
+ filename: "1669212341/zcash.svg",
318
+ extension: ".svg",
319
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669212341/zcash.svg",
320
+ width: "72",
321
+ height: "48",
322
+ alt: "Logo image for Zcash",
323
+ id: 97773,
324
+ raw_filename: "1669212341/zcash"
325
+ }
326
+ },
327
+ {
328
+ id: 180,
329
+ name: "Cardano",
330
+ iso_code: "ADA",
331
+ symbol: "",
332
+ crypto: 1,
333
+ logo: {
334
+ title: "Cardano logo",
335
+ filename: "1669211355/cardano.svg",
336
+ extension: ".svg",
337
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211355/cardano.svg",
338
+ width: "72",
339
+ height: "48",
340
+ alt: "Logo image for Cardano",
341
+ id: 97754,
342
+ raw_filename: "1669211355/cardano"
343
+ }
344
+ },
345
+ {
346
+ id: 181,
347
+ name: "Basic Attention Token",
348
+ iso_code: "BAT",
349
+ symbol: "",
350
+ crypto: 1,
351
+ logo: {
352
+ title: "Basic attention token logo",
353
+ filename: "1710243057/basic-attention-token-logo.png",
354
+ extension: ".png",
355
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1710243057/basic-attention-token-logo.png",
356
+ width: "412",
357
+ height: "275",
358
+ alt: "Image for Basic Attention Token",
359
+ color: "#ffffff",
360
+ id: 128981,
361
+ raw_filename: "1710243057/basic-attention-token-logo"
362
+ }
363
+ },
364
+ {
365
+ id: 184,
366
+ name: "Neo",
367
+ iso_code: "NEO",
368
+ symbol: "",
369
+ crypto: 1,
370
+ logo: {
371
+ title: "Neo logo",
372
+ filename: "1700584848/neo-logo.png",
373
+ extension: ".png",
374
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1700584848/neo-logo.png",
375
+ width: "412",
376
+ height: "275",
377
+ alt: "Image for neo",
378
+ color: "#ffffff",
379
+ id: 122594,
380
+ raw_filename: "1700584848/neo-logo"
381
+ }
382
+ },
383
+ {
384
+ id: 185,
385
+ name: "Tether",
386
+ iso_code: "USDT",
387
+ symbol: "",
388
+ crypto: 1,
389
+ logo: {
390
+ title: "Tether logo",
391
+ filename: "1669212197/tether.svg",
392
+ extension: ".svg",
393
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669212197/tether.svg",
394
+ width: "72",
395
+ height: "48",
396
+ alt: "Logo image for Tether",
397
+ id: 97769,
398
+ raw_filename: "1669212197/tether"
399
+ }
400
+ },
401
+ {
402
+ id: 190,
403
+ name: "Tron",
404
+ iso_code: "TRX",
405
+ symbol: "",
406
+ crypto: 1,
407
+ logo: {
408
+ title: "Tron logo",
409
+ filename: "1669212229/tron.svg",
410
+ extension: ".svg",
411
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669212229/tron.svg",
412
+ width: "72",
413
+ height: "48",
414
+ alt: "Logo image for Tron",
415
+ id: 97770,
416
+ raw_filename: "1669212229/tron"
417
+ }
418
+ },
419
+ {
420
+ id: 193,
421
+ name: "Hive",
422
+ iso_code: "HIVE",
423
+ symbol: "",
424
+ crypto: 1,
425
+ logo: {
426
+ filename: ""
427
+ }
428
+ },
429
+ {
430
+ id: 194,
431
+ name: "Shiba Inu",
432
+ iso_code: "SHIB",
433
+ symbol: "",
434
+ crypto: 1,
435
+ logo: {
436
+ title: "Shiba inu logo",
437
+ filename: "1669212102/shiba-inu.svg",
438
+ extension: ".svg",
439
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669212102/shiba-inu.svg",
440
+ width: "72",
441
+ height: "48",
442
+ alt: "Logo image for Shiba Inu",
443
+ id: 97766,
444
+ raw_filename: "1669212102/shiba-inu"
445
+ }
446
+ },
447
+ {
448
+ id: 196,
449
+ name: "Chainlink",
450
+ iso_code: "Link",
451
+ symbol: "",
452
+ crypto: 1,
453
+ logo: {
454
+ title: "Chainlink logo",
455
+ filename: "1669211406/chainlink-link.svg",
456
+ extension: ".svg",
457
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669211406/chainlink-link.svg",
458
+ width: "72",
459
+ height: "48",
460
+ alt: "Logo image for Chainlink",
461
+ id: 97755,
462
+ raw_filename: "1669211406/chainlink-link"
463
+ }
464
+ },
465
+ {
466
+ id: 199,
467
+ name: "Polkadot",
468
+ iso_code: "DOT",
469
+ symbol: "",
470
+ crypto: 1,
471
+ logo: {
472
+ title: "Polkadot logo",
473
+ filename: "1700585330/polkadot-logo.png",
474
+ extension: ".png",
475
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1700585330/polkadot-logo.png",
476
+ width: "412",
477
+ height: "275",
478
+ alt: "Image for polkadot",
479
+ color: "#ffffff",
480
+ id: 122603,
481
+ raw_filename: "1700585330/polkadot-logo"
482
+ }
483
+ },
484
+ {
485
+ id: 200,
486
+ name: "Uniswap",
487
+ iso_code: "UNI",
488
+ symbol: "",
489
+ crypto: 1,
490
+ logo: {
491
+ title: "Uniswap logo",
492
+ filename: "1669212265/uniswap.svg",
493
+ extension: ".svg",
494
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1669212265/uniswap.svg",
495
+ width: "72",
496
+ height: "48",
497
+ alt: "Logo image for Uniswap",
498
+ id: 97771,
499
+ raw_filename: "1669212265/uniswap"
500
+ }
501
+ },
502
+ {
503
+ id: 201,
504
+ name: "Ethereum Classic",
505
+ iso_code: "ETC",
506
+ symbol: "",
507
+ crypto: 1,
508
+ logo: {
509
+ title: "Ethereum classic logo",
510
+ filename: "1700584730/ethereum-classic-logo.png",
511
+ extension: ".png",
512
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1700584730/ethereum-classic-logo.png",
513
+ width: "412",
514
+ height: "275",
515
+ alt: "Image for ethereum classic",
516
+ color: "#ffffff",
517
+ id: 122590,
518
+ raw_filename: "1700584730/ethereum-classic-logo"
519
+ }
520
+ },
521
+ {
522
+ id: 202,
523
+ name: "Sushi",
524
+ iso_code: "SUSH",
525
+ symbol: "",
526
+ crypto: 1,
527
+ logo: {
528
+ title: "Sushiswap sushi (1)",
529
+ filename: "1710243195/sushiswap-sushi-%281%29.png",
530
+ extension: ".png",
531
+ url: "https://assets-srv.s3.eu-west-1.amazonaws.com/1710243195/sushiswap-sushi-%281%29.png",
532
+ width: "412",
533
+ height: "275",
534
+ alt: "Image for Sushi Swap",
535
+ color: "#ffffff",
536
+ id: 128983,
537
+ raw_filename: "1710243195/sushiswap-sushi-%281%29"
538
+ }
539
+ }
540
+ ],
541
+ licences: [
542
+ {
543
+ short_name: "crypto_licences_category_4_crypto_asset_service_provider_casp",
544
+ name: "Category 4 Crypto Asset Service Provider (CASP)",
545
+ id: 1
546
+ },
547
+ {
548
+ short_name: "crypto_licences_money_service_business_msb",
549
+ name: "Money Service Business (MSB)",
550
+ id: 2
551
+ },
552
+ {
553
+ short_name: "crypto_licences_financial_intelligence_unit_fiau",
554
+ name: "Financial Intelligence Unit (FIAU)",
555
+ id: 3
556
+ },
557
+ {
558
+ short_name: "crypto_licences_money_transmitter_license_mtl",
559
+ name: "Money Transmitter License (MTL)",
560
+ id: 4
561
+ },
562
+ {
563
+ short_name: "crypto_licences_other_state_licenses",
564
+ name: "other state licenses",
565
+ id: 5
566
+ }
567
+ ],
568
+ services: [
569
+ {
570
+ name: "Staking",
571
+ short_name: "crypto_services_staking",
572
+ id: 3
573
+ },
574
+ {
575
+ name: "NFTs",
576
+ short_name: "crypto_services_nfts",
577
+ id: 8
578
+ },
579
+ {
580
+ name: "Swapping",
581
+ short_name: "crypto_services_swapping",
582
+ id: 16
583
+ },
584
+ {
585
+ name: "Analytics dashboard",
586
+ short_name: "crypto_services_analytics_dashboard",
587
+ id: 17
588
+ },
589
+ {
590
+ name: "Buy & Sell",
591
+ short_name: "crypto_services_buy__sell",
592
+ id: 20
593
+ },
594
+ {
595
+ name: "Educational resource",
596
+ short_name: "crypto_services_educational_resource",
597
+ id: 21
598
+ },
599
+ {
600
+ name: "Online wallet",
601
+ short_name: "crypto_services_online_wallet",
602
+ id: 22
603
+ }
604
+ ]
605
+ })
606
+
65
607
  export function getCryptoExchangesList({ template, count = 1, id = 1, ...customProps }) {
66
608
  const cryptosList = {};
67
609
  // eslint-disable-next-line no-plusplus