gatsby-theme-q3 3.1.5 → 3.2.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 (49) hide show
  1. package/CHANGELOG.md +75 -36
  2. package/gatsby-browser.js +29 -0
  3. package/gatsby-config.js +7 -47
  4. package/gatsby-node.js +0 -1
  5. package/lib/components/FormBoxContent.js +2 -1
  6. package/lib/components/PageWrapper.js +2 -11
  7. package/lib/components/PublicTemplate.js +130 -6
  8. package/lib/components/SearchEngine.js +67 -20
  9. package/lib/components/Wrapper.js +3 -25
  10. package/lib/components/__tests__/SearchEngine.test.js +41 -0
  11. package/lib/components/useSiteMetaData.js +13 -12
  12. package/lib/components/withPublicTemplate.js +17 -0
  13. package/lib/components/withSuccessOp.js +1 -1
  14. package/lib/pages/login.js +7 -4
  15. package/lib/pages/password-change.js +4 -3
  16. package/lib/pages/password-reset.js +4 -3
  17. package/lib/pages/reverify.js +5 -2
  18. package/lib/pages/verify.js +5 -3
  19. package/package.json +6 -6
  20. package/src/components/FormBoxContent.jsx +1 -1
  21. package/src/components/PageWrapper.jsx +1 -13
  22. package/src/components/PublicTemplate.jsx +134 -5
  23. package/src/components/SearchEngine.jsx +82 -23
  24. package/src/components/Wrapper.jsx +3 -27
  25. package/src/components/__tests__/SearchEngine.test.jsx +58 -0
  26. package/src/components/useSiteMetaData.js +17 -16
  27. package/src/components/withPublicTemplate.jsx +11 -0
  28. package/src/components/withSuccessOp.jsx +1 -1
  29. package/src/pages/login.jsx +55 -43
  30. package/src/pages/password-change.jsx +5 -3
  31. package/src/pages/password-reset.jsx +5 -3
  32. package/src/pages/reverify.jsx +4 -2
  33. package/src/pages/verify.jsx +9 -12
  34. package/__tests__/config.int.test.js +0 -73
  35. package/helpers/__tests__/loadContent.unit.test.js +0 -13
  36. package/helpers/__tests__/pagination.unit.test.js +0 -139
  37. package/helpers/__tests__/slug.unit.test.js +0 -21
  38. package/helpers/archive.js +0 -42
  39. package/helpers/index.js +0 -19
  40. package/helpers/loadContent.js +0 -45
  41. package/helpers/loadTheme.js +0 -10
  42. package/helpers/pagination.js +0 -109
  43. package/helpers/setup.js +0 -60
  44. package/helpers/slug.js +0 -31
  45. package/helpers/slugType.js +0 -24
  46. package/lib/components/LocaleBundles.js +0 -42
  47. package/lib/components/useLocale.js +0 -31
  48. package/src/components/LocaleBundles.jsx +0 -37
  49. package/src/components/useLocale.js +0 -20
package/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [3.1.5](https://github.com/3merge/q/compare/v3.1.4...v3.1.5) (2022-02-01)
6
+ ## [3.2.3](https://github.com/3merge/q/compare/v3.2.2...v3.2.3) (2022-02-10)
7
7
 
8
8
  **Note:** Version bump only for package gatsby-theme-q3
9
9
 
@@ -11,7 +11,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
 
12
12
 
13
13
 
14
- ## [3.1.4](https://github.com/3merge/q/compare/v3.1.3...v3.1.4) (2022-02-01)
14
+ ## [3.2.2](https://github.com/3merge/q/compare/v3.2.1...v3.2.2) (2022-02-10)
15
15
 
16
16
  **Note:** Version bump only for package gatsby-theme-q3
17
17
 
@@ -19,58 +19,97 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
19
19
 
20
20
 
21
21
 
22
- # [3.1.0](https://github.com/3merge/q/compare/v3.0.4...v3.1.0) (2022-01-31)
23
-
24
- **Note:** Version bump only for package gatsby-theme-q3
25
-
26
-
27
-
28
-
29
-
30
- ## [3.0.4](https://github.com/3merge/q/compare/v3.0.3...v3.0.4) (2022-01-29)
31
-
32
- **Note:** Version bump only for package gatsby-theme-q3
33
-
34
-
35
-
36
-
37
-
38
- ## [3.0.3](https://github.com/3merge/q/compare/v3.0.2...v3.0.3) (2022-01-29)
22
+ ## [3.2.1](https://github.com/3merge/q/compare/v3.2.0...v3.2.1) (2022-02-09)
39
23
 
40
24
 
41
25
  ### Bug Fixes
42
26
 
43
- * major release bugs ([#372](https://github.com/3merge/q/issues/372)) ([d3e0681](https://github.com/3merge/q/commit/d3e0681a8d9ce61558b3aeaabe94ce8bc326dfa7))
27
+ * misc domain issues ([17cb74b](https://github.com/3merge/q/commit/17cb74b927721f11b5fcd8f8a9a1a28a86867048))
44
28
 
45
29
 
46
30
 
47
31
 
48
32
 
49
- ## [3.0.2](https://github.com/3merge/q/compare/v3.0.1...v3.0.2) (2022-01-28)
50
-
51
- **Note:** Version bump only for package gatsby-theme-q3
33
+ # [3.2.0](https://github.com/3merge/q/compare/v3.1.5...v3.2.0) (2022-02-09)
52
34
 
53
35
 
36
+ ### Features
54
37
 
55
-
56
-
57
- ## [3.0.1](https://github.com/3merge/q/compare/v3.0.0...v3.0.1) (2022-01-28)
58
-
59
- **Note:** Version bump only for package gatsby-theme-q3
60
-
61
-
62
-
63
-
64
-
65
- # [3.0.0](https://github.com/3merge/q/compare/v2.3.13...v3.0.0) (2022-01-28)
66
-
67
- **Note:** Version bump only for package gatsby-theme-q3
38
+ * text locale editor ([#377](https://github.com/3merge/q/issues/377)) ([e827875](https://github.com/3merge/q/commit/e8278757be7505554376c1d1d78d9b8900fdf35e))
68
39
 
69
40
 
70
41
 
71
42
 
72
43
 
73
44
 
45
+ ## [3.1.5](https://github.com/3merge/q/compare/v3.1.4...v3.1.5) (2022-02-01)
46
+
47
+ **Note:** Version bump only for package gatsby-theme-q3
48
+
49
+
50
+
51
+
52
+
53
+ ## [3.1.4](https://github.com/3merge/q/compare/v3.1.3...v3.1.4) (2022-02-01)
54
+
55
+ **Note:** Version bump only for package gatsby-theme-q3
56
+
57
+
58
+
59
+
60
+
61
+ # [3.1.0](https://github.com/3merge/q/compare/v3.0.4...v3.1.0) (2022-01-31)
62
+
63
+ **Note:** Version bump only for package gatsby-theme-q3
64
+
65
+
66
+
67
+
68
+
69
+ ## [3.0.4](https://github.com/3merge/q/compare/v3.0.3...v3.0.4) (2022-01-29)
70
+
71
+ **Note:** Version bump only for package gatsby-theme-q3
72
+
73
+
74
+
75
+
76
+
77
+ ## [3.0.3](https://github.com/3merge/q/compare/v3.0.2...v3.0.3) (2022-01-29)
78
+
79
+
80
+ ### Bug Fixes
81
+
82
+ * major release bugs ([#372](https://github.com/3merge/q/issues/372)) ([d3e0681](https://github.com/3merge/q/commit/d3e0681a8d9ce61558b3aeaabe94ce8bc326dfa7))
83
+
84
+
85
+
86
+
87
+
88
+ ## [3.0.2](https://github.com/3merge/q/compare/v3.0.1...v3.0.2) (2022-01-28)
89
+
90
+ **Note:** Version bump only for package gatsby-theme-q3
91
+
92
+
93
+
94
+
95
+
96
+ ## [3.0.1](https://github.com/3merge/q/compare/v3.0.0...v3.0.1) (2022-01-28)
97
+
98
+ **Note:** Version bump only for package gatsby-theme-q3
99
+
100
+
101
+
102
+
103
+
104
+ # [3.0.0](https://github.com/3merge/q/compare/v2.3.13...v3.0.0) (2022-01-28)
105
+
106
+ **Note:** Version bump only for package gatsby-theme-q3
107
+
108
+
109
+
110
+
111
+
112
+
74
113
  ## [2.3.11](https://github.com/3merge/q/compare/v2.3.10...v2.3.11) (2022-01-18)
75
114
 
76
115
  **Note:** Version bump only for package gatsby-theme-q3
package/gatsby-browser.js CHANGED
@@ -1,4 +1,33 @@
1
+ import axios from 'axios';
2
+ import { last, size } from 'lodash';
3
+ import { getDomain } from 'q3-admin';
4
+ import { browser } from 'q3-ui-helpers';
5
+
1
6
  export {
2
7
  wrapPageElement,
3
8
  wrapRootElement,
4
9
  } from './gatsby-ssr';
10
+
11
+ export const onClientEntry = async () => {
12
+ if (!browser.isBrowserReady()) return;
13
+
14
+ // set api default root
15
+ axios.defaults.baseURL =
16
+ process.env.GATSBY_APP_BASE_URL ||
17
+ 'http://localhost:9000';
18
+
19
+ // set language default
20
+ axios.defaults.headers['Content-Language'] =
21
+ window.localStorage.getItem('q3-locale') || 'en';
22
+
23
+ // set tenant default
24
+ const { host } = window.location;
25
+ const parts = String(host).split('.').reverse();
26
+
27
+ if (size(parts) > 1)
28
+ axios.defaults.headers['X-Session-Tenant'] =
29
+ last(parts);
30
+
31
+ // calls Q3 API
32
+ await getDomain();
33
+ };
package/gatsby-config.js CHANGED
@@ -4,16 +4,7 @@ require('dotenv').config();
4
4
  const genKey = (url) =>
5
5
  String(url).includes('netlify') ? 'disallow' : 'allow';
6
6
 
7
- module.exports = ({
8
- contentfulSpaceID,
9
- contentfulAccessToken,
10
- siteUrl,
11
- title,
12
- brandingColor,
13
- icon,
14
- netlify,
15
- ...options
16
- }) => {
7
+ module.exports = (options) => {
17
8
  const plugins = [
18
9
  {
19
10
  resolve: 'gatsby-theme-q3-mui',
@@ -50,51 +41,20 @@ module.exports = ({
50
41
  },
51
42
  },
52
43
  },
53
- ];
54
-
55
- if (contentfulSpaceID) {
56
- if (!contentfulAccessToken)
57
- throw new Error('Contentful access token missing');
58
-
59
- plugins.push({
60
- resolve: 'gatsby-source-contentful',
61
- options: {
62
- spaceId: contentfulSpaceID,
63
- accessToken: contentfulAccessToken,
64
- },
65
- });
66
- }
67
-
68
- if (netlify)
69
- plugins.push({
44
+ {
70
45
  resolve: 'gatsby-plugin-netlify',
71
46
  options: {
72
47
  generateMatchPathRewrites: true,
73
48
  },
74
- });
75
-
76
- if (title && brandingColor)
77
- plugins.push({
78
- resolve: 'gatsby-plugin-manifest',
79
- options: {
80
- short_name: title,
81
- start_url: '/',
82
- background_color: '#FFF',
83
- theme_color: brandingColor,
84
- display: 'standalone',
85
- name: title,
86
- icon,
87
- },
88
- });
89
-
90
- if (siteUrl)
91
- plugins.push({
49
+ },
50
+ {
92
51
  resolve: 'gatsby-plugin-canonical-urls',
93
52
  options: {
94
53
  stripQueryString: true,
95
- siteUrl,
54
+ siteUrl: process.env.URL,
96
55
  },
97
- });
56
+ },
57
+ ];
98
58
 
99
59
  return {
100
60
  plugins,
package/gatsby-node.js CHANGED
@@ -70,7 +70,6 @@ exports.onCreatePage = async ({ page, actions }) => {
70
70
  createPage({
71
71
  ...page,
72
72
  context: {
73
- contentful_id: 'APP',
74
73
  to: '/app',
75
74
  },
76
75
  });
@@ -23,7 +23,8 @@ const FormBoxContent = ({
23
23
  t
24
24
  } = (0, _q3UiLocale.useTranslation)();
25
25
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
26
- variant: "h1",
26
+ component: "h1",
27
+ variant: "h2",
27
28
  gutterBottom: true
28
29
  }, t(`titles:${title}`)), /*#__PURE__*/_react.default.createElement(_Typography.default, {
29
30
  gutterBottom: true
@@ -13,21 +13,12 @@ var _components = require("q3-admin/lib/components");
13
13
 
14
14
  var _SearchEngine = _interopRequireDefault(require("./SearchEngine"));
15
15
 
16
- var _useLocale = _interopRequireDefault(require("./useLocale"));
17
-
18
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
17
 
20
- // cannot conditionally call hooks otherwise
21
- const Locale = () => {
22
- (0, _useLocale.default)();
23
- return null;
24
- };
25
-
26
18
  const PageWrapper = ({
27
19
  children,
28
- includeLoader,
29
- includeLocale
30
- }) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SearchEngine.default, null), includeLoader && /*#__PURE__*/_react.default.createElement(_components.Loader, null), includeLocale && /*#__PURE__*/_react.default.createElement(Locale, null), children);
20
+ includeLoader
21
+ }) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_SearchEngine.default, null), includeLoader && /*#__PURE__*/_react.default.createElement(_components.Loader, null), children);
31
22
 
32
23
  PageWrapper.defaultProps = {
33
24
  children: null,
@@ -9,7 +9,13 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
- var _components = require("q3-admin/lib/components");
12
+ var _core = require("@material-ui/core");
13
+
14
+ var _gatsby = require("gatsby");
15
+
16
+ var _q3UiLocale = require("q3-ui-locale");
17
+
18
+ var _lodash = require("lodash");
13
19
 
14
20
  var _AdminPublicGateway = _interopRequireDefault(require("./AdminPublicGateway"));
15
21
 
@@ -17,18 +23,136 @@ var _useSiteMetaData = _interopRequireDefault(require("./useSiteMetaData"));
17
23
 
18
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
25
 
26
+ const useStyle = (0, _core.makeStyles)(theme => ({
27
+ logo: {
28
+ height: 95,
29
+ width: 180,
30
+ display: 'block',
31
+ '& img': {
32
+ objectFit: 'contain',
33
+ height: '100%',
34
+ width: '100%'
35
+ }
36
+ },
37
+ container: {
38
+ maxWidth: '85vw',
39
+ width: 850,
40
+ [theme.breakpoints.down('md')]: {
41
+ width: '100%'
42
+ },
43
+ [theme.breakpoints.down('sm')]: {
44
+ width: 'auto'
45
+ }
46
+ },
47
+ photo: ({
48
+ photo
49
+ }) => ({
50
+ backgroundColor: theme.palette.secondary.light,
51
+ backgroundImage: (0, _lodash.isString)(photo) ? `url("${String(photo).replace(/\s/gi, '%20')}")` : undefined,
52
+ backgroundSize: 'contain',
53
+ backgroundPosition: 'center',
54
+ backgroundRepeat: 'no-repeat',
55
+ width: '100%',
56
+ height: '100%',
57
+ backgroundBlendMode: 'multiply',
58
+ minHeight: '55vh'
59
+ })
60
+ }));
61
+
62
+ const Copyright = () => {
63
+ const {
64
+ brand
65
+ } = (0, _useSiteMetaData.default)();
66
+ return brand ? /*#__PURE__*/_react.default.createElement(_core.Box, {
67
+ display: "inline-block",
68
+ mx: 1
69
+ }, "\xA9", new Date().getFullYear(), " ", brand) : null;
70
+ }; // eslint-disable-next-line
71
+
72
+
73
+ const TextLink = ({
74
+ href,
75
+ text
76
+ }) => {
77
+ const {
78
+ t
79
+ } = (0, _q3UiLocale.useTranslation)('labels');
80
+ return href ? /*#__PURE__*/_react.default.createElement(_core.Box, {
81
+ display: "inline-block",
82
+ mx: 1
83
+ }, /*#__PURE__*/_react.default.createElement(_core.Link, {
84
+ href: href,
85
+ target: "_blank"
86
+ }, t(text))) : null;
87
+ };
88
+
20
89
  const PublicTemplate = ({
21
90
  children,
22
91
  ...rest
23
92
  }) => {
24
93
  const {
25
94
  brand,
26
- logo
95
+ cancellation,
96
+ logo,
97
+ terms,
98
+ privacy,
99
+ photo
27
100
  } = (0, _useSiteMetaData.default)();
28
- return /*#__PURE__*/_react.default.createElement(_AdminPublicGateway.default, rest, /*#__PURE__*/_react.default.createElement(_components.Public, {
29
- companyName: brand,
30
- logo: logo
31
- }, children));
101
+ const cls = useStyle({
102
+ photo
103
+ });
104
+ return /*#__PURE__*/_react.default.createElement(_AdminPublicGateway.default, rest, /*#__PURE__*/_react.default.createElement(_core.Box, {
105
+ alignItems: "center",
106
+ component: "article",
107
+ display: "flex",
108
+ flexDirection: "column",
109
+ justifyContent: "center",
110
+ width: "100%"
111
+ }, /*#__PURE__*/_react.default.createElement(_core.Box, {
112
+ component: "header",
113
+ mt: "2vh",
114
+ mb: 2,
115
+ textAlign: "center"
116
+ }, /*#__PURE__*/_react.default.createElement(_gatsby.Link, {
117
+ to: "/",
118
+ className: cls.logo
119
+ }, /*#__PURE__*/_react.default.createElement("img", {
120
+ alt: brand,
121
+ src: logo
122
+ }))), /*#__PURE__*/_react.default.createElement(_core.Paper, {
123
+ className: cls.container
124
+ }, /*#__PURE__*/_react.default.createElement(_core.Grid, {
125
+ alignItems: "center",
126
+ container: true,
127
+ spacing: 1
128
+ }, /*#__PURE__*/_react.default.createElement(_core.Hidden, {
129
+ smDown: true
130
+ }, /*#__PURE__*/_react.default.createElement(_core.Grid, {
131
+ item: true,
132
+ xs: 6
133
+ }, /*#__PURE__*/_react.default.createElement(_core.Box, {
134
+ className: cls.photo
135
+ }))), /*#__PURE__*/_react.default.createElement(_core.Grid, {
136
+ item: true,
137
+ md: 6,
138
+ xs: 12
139
+ }, /*#__PURE__*/_react.default.createElement(_core.Box, {
140
+ p: 2
141
+ }, children)))), /*#__PURE__*/_react.default.createElement(_core.Box, {
142
+ maxWidth: "75vw",
143
+ component: "footer",
144
+ mt: 3,
145
+ textAlign: "center"
146
+ }, /*#__PURE__*/_react.default.createElement("small", null, /*#__PURE__*/_react.default.createElement(Copyright, null), /*#__PURE__*/_react.default.createElement(TextLink, {
147
+ href: terms,
148
+ text: "termsAndConditions"
149
+ }), /*#__PURE__*/_react.default.createElement(TextLink, {
150
+ href: privacy,
151
+ text: "privacyPolicy"
152
+ }), /*#__PURE__*/_react.default.createElement(TextLink, {
153
+ href: cancellation,
154
+ text: "cancellationPolicy"
155
+ })))));
32
156
  };
33
157
 
34
158
  PublicTemplate.defaultProps = {
@@ -3,18 +3,72 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.getStartUrl = exports.generateMetaTitleOptions = exports.generateMetaDescriptionOptions = exports.generateManifest = exports.generateIcons = exports.generateBrand = exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
+ var _lodash = require("lodash");
11
+
10
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
13
 
12
14
  var _reactHelmet = require("react-helmet");
13
15
 
16
+ var _q3UiHelpers = require("q3-ui-helpers");
17
+
14
18
  var _useSiteMetaData = _interopRequireDefault(require("./useSiteMetaData"));
15
19
 
16
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
21
 
22
+ const withContent = output => content => content && (0, _lodash.isFunction)(output) ? output(content) : [];
23
+
24
+ const getStartUrl = () => _q3UiHelpers.browser.isBrowserReady() ? (0, _lodash.get)(window, 'location.host') : '';
25
+
26
+ exports.getStartUrl = getStartUrl;
27
+ const generateMetaDescriptionOptions = withContent(content => [{
28
+ name: 'description',
29
+ content
30
+ }, {
31
+ property: 'og:description',
32
+ content
33
+ }, {
34
+ name: 'twitter:description',
35
+ content
36
+ }]);
37
+ exports.generateMetaDescriptionOptions = generateMetaDescriptionOptions;
38
+ const generateMetaTitleOptions = withContent(content => [{
39
+ property: 'og:title',
40
+ content
41
+ }, {
42
+ name: 'twitter:title',
43
+ content
44
+ }]);
45
+ exports.generateMetaTitleOptions = generateMetaTitleOptions;
46
+
47
+ const generateBrand = xs => xs ? `%s | ${xs}` : undefined;
48
+
49
+ exports.generateBrand = generateBrand;
50
+
51
+ const generateIcons = (site = {}) => site !== null && site !== void 0 && site.favicon ? [{
52
+ src: site.favicon,
53
+ sizes: '512x512',
54
+ type: 'image/png'
55
+ }] : [];
56
+
57
+ exports.generateIcons = generateIcons;
58
+
59
+ const generateManifest = (site = {}) => ({
60
+ background_color: site.color,
61
+ description: site.description,
62
+ display: 'fullscreen',
63
+ icons: generateIcons(site),
64
+ name: site.title,
65
+ start_url: getStartUrl(),
66
+ short_name: site.brand,
67
+ theme_color: site.color
68
+ });
69
+
70
+ exports.generateManifest = generateManifest;
71
+
18
72
  const SEO = ({
19
73
  description,
20
74
  lang,
@@ -23,35 +77,28 @@ const SEO = ({
23
77
  }) => {
24
78
  const site = (0, _useSiteMetaData.default)();
25
79
  const metaDescription = description || site.description;
80
+ const metaTitle = title || site.title;
81
+ const manifestData = generateManifest(site);
26
82
  return /*#__PURE__*/_react.default.createElement(_reactHelmet.Helmet, {
27
83
  htmlAttributes: {
28
84
  lang
29
85
  },
30
- title: title || site.title,
31
- titleTemplate: `%s | ${site.brand}`,
32
- meta: [{
33
- name: 'description',
34
- content: metaDescription
35
- }, {
36
- property: 'og:title',
37
- content: title
38
- }, {
39
- property: 'og:description',
40
- content: metaDescription
41
- }, {
86
+ title: metaTitle,
87
+ titleTemplate: generateBrand(site.brand),
88
+ meta: [...generateMetaTitleOptions(metaTitle), ...generateMetaDescriptionOptions(metaDescription), {
42
89
  property: 'og:type',
43
90
  content: 'website'
44
91
  }, {
45
92
  name: 'twitter:card',
46
93
  content: 'summary'
47
- }, {
48
- name: 'twitter:title',
49
- content: title
50
- }, {
51
- name: 'twitter:description',
52
- content: metaDescription
53
94
  }].concat(meta)
54
- });
95
+ }, (0, _lodash.isObject)(manifestData) ? /*#__PURE__*/_react.default.createElement("link", {
96
+ rel: "manifest",
97
+ href: `data:application/manifest+json,${encodeURIComponent(JSON.stringify(manifestData))}`
98
+ }) : null, /*#__PURE__*/_react.default.createElement("link", {
99
+ rel: "icon",
100
+ href: site.favicon
101
+ }));
55
102
  };
56
103
 
57
104
  SEO.defaultProps = {
@@ -7,41 +7,19 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _axios = _interopRequireDefault(require("axios"));
11
-
12
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
11
 
14
12
  var _q3UiPermissions = _interopRequireDefault(require("q3-ui-permissions"));
15
13
 
16
- var _LocaleBundles = _interopRequireDefault(require("./LocaleBundles"));
17
-
18
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
15
 
20
16
  /* eslint-disable import/no-extraneous-dependencies */
21
- const setBaseUrlForRest = (baseURL = process.env.GATSBY_APP_BASE_URL || 'http://localhost:9000') => {
22
- _axios.default.defaults.baseURL = baseURL;
23
- return _axios.default.defaults;
24
- };
25
-
26
17
  const Wrapper = ({
27
- baseURL,
28
- children,
29
- locale
30
- }) => {
31
- setBaseUrlForRest(baseURL);
32
- return /*#__PURE__*/_react.default.createElement(_LocaleBundles.default, {
33
- locale: locale
34
- }, /*#__PURE__*/_react.default.createElement(_q3UiPermissions.default, null, children));
35
- };
18
+ children
19
+ }) => /*#__PURE__*/_react.default.createElement(_q3UiPermissions.default, null, children);
36
20
 
37
- Wrapper.defaultProps = {
38
- baseURL: undefined
39
- };
40
21
  Wrapper.propTypes = {
41
- baseURL: _propTypes.default.string,
42
- children: _propTypes.default.node.isRequired,
43
- // eslint-disable-next-line
44
- locale: _propTypes.default.object.isRequired
22
+ children: _propTypes.default.node.isRequired
45
23
  };
46
24
  var _default = Wrapper;
47
25
  exports.default = _default;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _SearchEngine = require("../SearchEngine");
4
+
5
+ jest.mock('q3-ui-locale', () => ({
6
+ browser: {
7
+ isBrowserReady: jest.fn()
8
+ }
9
+ }));
10
+ const host = 'https://google.ca';
11
+ beforeEach(() => {
12
+ Object.defineProperty(window, 'location', {
13
+ value: {
14
+ host
15
+ }
16
+ });
17
+ });
18
+ describe('SearchEngine', () => {
19
+ it('should not render descriptions without content', () => {
20
+ expect((0, _SearchEngine.generateMetaDescriptionOptions)().length).toBe(0);
21
+ });
22
+ it('should render descriptions with content', () => {
23
+ expect((0, _SearchEngine.generateMetaDescriptionOptions)('foo').length).toBeGreaterThanOrEqual(1);
24
+ });
25
+ it('should return host', () => {
26
+ expect((0, _SearchEngine.getStartUrl)()).toMatch(host);
27
+ });
28
+ it('should render favicon', () => {
29
+ expect((0, _SearchEngine.generateIcons)({
30
+ favicon: host
31
+ })).toHaveLength(1);
32
+ });
33
+ it('should not render favicon', () => {
34
+ expect((0, _SearchEngine.generateIcons)({
35
+ favicon: undefined
36
+ })).toHaveLength(0);
37
+ });
38
+ it('should include template literals', () => {
39
+ expect((0, _SearchEngine.generateBrand)('3merge')).toMatch('%s | 3merge');
40
+ });
41
+ });