@openstack_dev/gatsby-theme-marketing-oif-core 1.0.17 → 1.0.18

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/gatsby-config.js CHANGED
@@ -39,14 +39,75 @@ const manifestPlugin = faviconAsset
39
39
  ]
40
40
  : [];
41
41
 
42
+ const googleTagManagerPlugin = process.env.GOOGLE_TAGMANAGER_ID
43
+ ? [
44
+ {
45
+ resolve: "gatsby-plugin-google-tagmanager",
46
+ options: {
47
+ id: process.env.GOOGLE_TAGMANAGER_ID,
48
+ includeInDevelopment: false,
49
+ defaultDataLayer: { platform: "gatsby" },
50
+ },
51
+ },
52
+ ]
53
+ : [];
54
+
55
+ const twitterPixelPlugin = process.env.TWITTER_PIXEL_ID
56
+ ? [
57
+ {
58
+ resolve: "gatsby-plugin-twitter-pixel",
59
+ options: {
60
+ pixelId: process.env.TWITTER_PIXEL_ID,
61
+ },
62
+ },
63
+ ]
64
+ : [];
65
+
66
+ const linkedInInsightPlugin = process.env.LINKEDIN_INSIGHT_PARTNER_ID
67
+ ? [
68
+ {
69
+ resolve: require.resolve("./plugins/gatsby-plugin-linkedin-insight"),
70
+ options: {
71
+ partnerId: process.env.LINKEDIN_INSIGHT_PARTNER_ID,
72
+ includeInDevelopment: false,
73
+ },
74
+ },
75
+ ]
76
+ : [];
77
+
78
+ const quantcastTagPlugin = process.env.QUANTCAST_TAG_ACCOUNT_ID
79
+ ? [
80
+ {
81
+ resolve: "gatsby-plugin-quantcast-tag",
82
+ options: {
83
+ acccountId: process.env.QUANTCAST_TAG_ACCOUNT_ID,
84
+ head: false,
85
+ },
86
+ },
87
+ ]
88
+ : [];
89
+
90
+ const cookiebotPlugin = process.env.COOKIEBOT_ID
91
+ ? [
92
+ {
93
+ resolve: "gatsby-plugin-cookiebot",
94
+ options: {
95
+ cookiebotId: process.env.COOKIEBOT_ID,
96
+ },
97
+ },
98
+ ]
99
+ : [];
100
+
42
101
  const plugins = [
43
102
  {
44
- resolve: "@openstack_dev/gatsby-plugin-mui-theme-provider",
103
+ resolve: require.resolve("./plugins/gatsby-plugin-mui-theme-provider"),
45
104
  options: {
46
105
  themePath: `${__dirname}/src/theme.js`,
47
106
  },
48
107
  },
49
- "@openstack_dev/gatsby-plugin-emotion-cache-provider",
108
+ {
109
+ resolve: require.resolve("./plugins/gatsby-plugin-emotion-cache-provider"),
110
+ },
50
111
  ...manifestPlugin,
51
112
  {
52
113
  resolve: "gatsby-alias-imports",
@@ -156,55 +217,11 @@ const plugins = [
156
217
  },
157
218
  },
158
219
  },
159
- {
160
- resolve: "gatsby-plugin-google-tagmanager",
161
- options: {
162
- id: process.env.GOOGLE_TAGMANAGER_ID,
163
-
164
- // Include GTM in development.
165
- //
166
- // Defaults to false meaning GTM will only be loaded in production.
167
- includeInDevelopment: false,
168
-
169
- // datalayer to be set before GTM is loaded
170
- // should be an object or a function that is executed in the browser
171
- //
172
- // Defaults to null
173
- defaultDataLayer: { platform: "gatsby" },
174
- },
175
- },
176
- {
177
- resolve: "gatsby-plugin-twitter-pixel",
178
- options: {
179
- pixelId: process.env.TWITTER_PIXEL_ID,
180
- },
181
- },
182
- {
183
- resolve: "gatsby-plugin-linkedin-insight",
184
- options: {
185
- partnerId: process.env.LINKEDIN_INSIGHT_PARTNER_ID,
186
-
187
- // Include LinkedIn Insight in development.
188
- // Defaults to false meaning LinkedIn Insight will only be loaded in production.
189
- includeInDevelopment: false,
190
- },
191
- },
192
- {
193
- resolve: "gatsby-plugin-quantcast-tag",
194
- options: {
195
- acccountId: process.env.QUANTCAST_TAG_ACCOUNT_ID,
196
-
197
- // If true, add tracking code to head. Otherwise, tracking code is
198
- // added to the bottom of body.
199
- head: false,
200
- },
201
- },
202
- {
203
- resolve: "gatsby-plugin-cookiebot",
204
- options: {
205
- cookiebotId: process.env.COOKIEBOT_ID,
206
- },
207
- },
220
+ ...googleTagManagerPlugin,
221
+ ...twitterPixelPlugin,
222
+ ...linkedInInsightPlugin,
223
+ ...quantcastTagPlugin,
224
+ ...cookiebotPlugin,
208
225
  {
209
226
  resolve: "gatsby-plugin-google-fonts-v2",
210
227
  options: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openstack_dev/gatsby-theme-marketing-oif-core",
3
- "version": "1.0.17",
3
+ "version": "1.0.18",
4
4
  "description": "Base theme for Marketing Sites",
5
5
  "author": "smarcet",
6
6
  "keywords": [
@@ -22,6 +22,7 @@
22
22
  "**/*": "prettier --write --ignore-unknown"
23
23
  },
24
24
  "dependencies": {
25
+ "@babel/core": "^7.12.3",
25
26
  "@emotion/cache": "^11.11.0",
26
27
  "@emotion/react": "^11.11.4",
27
28
  "@emotion/server": "^11.11.0",
@@ -68,7 +69,6 @@
68
69
  "gatsby-plugin-google-fonts-v2": "^1.0.1",
69
70
  "gatsby-plugin-google-tagmanager": "^5.13.1",
70
71
  "gatsby-plugin-image": "^3.8.0",
71
- "gatsby-plugin-linkedin-insight": "^1.0.1",
72
72
  "gatsby-plugin-manifest": "^5.12.3",
73
73
  "gatsby-plugin-netlify": "^5.1.0",
74
74
  "gatsby-plugin-quantcast-tag": "^0.1.1",
@@ -80,6 +80,7 @@
80
80
  "gatsby-transformer-json": "^5.8.0",
81
81
  "gatsby-transformer-remark": "^6.8.0",
82
82
  "gatsby-transformer-sharp": "^5.12.3",
83
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0",
83
84
  "history": "^4.10.1",
84
85
  "i18n-react": "^0.6.4",
85
86
  "i18next": "^21.8.3",
@@ -1,4 +1,14 @@
1
1
  {
2
2
  "name": "@openstack_dev/gatsby-plugin-emotion-cache-provider",
3
- "version": "1.0.2"
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "main": "index.js",
6
+ "peerDependencies": {
7
+ "@babel/core": "^7.12.3",
8
+ "gatsby": "^5.0.0-next",
9
+ "gatsby-plugin-sharp": "^5.0.0-next",
10
+ "gatsby-source-filesystem": "^5.0.0-next",
11
+ "react": "^18.0.0 || ^0.0.0",
12
+ "react-dom": "^18.0.0 || ^0.0.0"
13
+ }
4
14
  }
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+ import { stripIndent } from "common-tags";
3
+
4
+ export const onRenderBody = ({ setPostBodyComponents }, pluginOptions) => {
5
+ const { partnerId, includeInDevelopment = false } = pluginOptions;
6
+
7
+ if (process.env.NODE_ENV === "production" || includeInDevelopment) {
8
+ setPostBodyComponents([
9
+ <React.Fragment key="gatsby-plugin-linkedin-insight">
10
+ <script
11
+ type="text/javascript"
12
+ dangerouslySetInnerHTML={{
13
+ __html: stripIndent`
14
+ _linkedin_partner_id = "${partnerId}";
15
+ window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
16
+ window._linkedin_data_partner_ids.push(_linkedin_partner_id);`,
17
+ }}
18
+ />
19
+ <script
20
+ type="text/javascript"
21
+ dangerouslySetInnerHTML={{
22
+ __html: stripIndent`
23
+ (function () {
24
+ var s = document.getElementsByTagName("script")[0];
25
+ var b = document.createElement("script");
26
+ b.type = "text/javascript";
27
+ b.async = true;
28
+ b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
29
+ s.parentNode.insertBefore(b, s);
30
+ })();`,
31
+ }}
32
+ />
33
+ <noscript>
34
+ <img
35
+ height="1"
36
+ width="1"
37
+ style={{ display: "none" }}
38
+ alt=""
39
+ src={`https://dc.ads.linkedin.com/collect/?pid=${partnerId}&fmt=gif`}
40
+ />
41
+ </noscript>
42
+ </React.Fragment>,
43
+ ]);
44
+ }
45
+ };
@@ -0,0 +1 @@
1
+ // no-op
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "@openstack_dev/gatsby-plugin-linkedin-insight",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "main": "index.js"
6
+ }
@@ -0,0 +1 @@
1
+ // no-op
@@ -1,4 +1,13 @@
1
1
  {
2
2
  "name": "@openstack_dev/gatsby-plugin-mui-theme-provider",
3
- "version": "1.0.2"
3
+ "private": true,
4
+ "main": "index.js",
5
+ "peerDependencies": {
6
+ "@babel/core": "^7.12.3",
7
+ "gatsby": "^5.0.0-next",
8
+ "gatsby-plugin-sharp": "^5.0.0-next",
9
+ "gatsby-source-filesystem": "^5.0.0-next",
10
+ "react": "^18.0.0 || ^0.0.0",
11
+ "react-dom": "^18.0.0 || ^0.0.0"
12
+ }
4
13
  }
@@ -42,11 +42,7 @@ function AuthUserSubNavBar({
42
42
  {navbarMenu === "My Account" && (
43
43
  <Box className={styles.mobileDropdownMenu} component="ul">
44
44
  <li role="presentation">
45
- <Link
46
- className={styles.mobileDropdownOption}
47
- to="/profile/"
48
- sx={{ display: "block" }}
49
- >
45
+ <Link className={styles.mobileDropdownOption} to="/profile/">
50
46
  Edit Profile
51
47
  </Link>
52
48
  </li>
@@ -56,7 +52,6 @@ function AuthUserSubNavBar({
56
52
  to={`/community/members/profile/${
57
53
  member.id
58
54
  }/${`${member.first_name.toLowerCase()}-${member.last_name.toLowerCase()}`}`}
59
- sx={{ display: "block" }}
60
55
  >
61
56
  View Public Profile
62
57
  </Link>
@@ -85,49 +80,46 @@ function AuthUserSubNavBar({
85
80
  },
86
81
  justifyContent: "flex-end",
87
82
  marginLeft: "auto",
83
+ position: "relative",
88
84
  }}
89
85
  >
90
86
  <Box
91
- className={`${styles.navbarOption}`}
92
- sx={{ my: 2, display: "block" }}
87
+ className={styles.navbarOption}
88
+ sx={{ display: "block" }}
89
+ component="li"
93
90
  >
94
91
  My Account
95
92
  <ArrowDropDownIcon className={styles.arrowDownIcon} />
96
- <Box className={styles.dropDownMenu} component="ul">
97
- <li role="presentation">
98
- <Link
99
- className={styles.dropdownMenuOption}
100
- to="/profile/"
101
- sx={{ display: "block" }}
102
- >
103
- Edit Profile
104
- </Link>
105
- </li>
106
- <li role="presentation">
107
- <Link
108
- className={styles.dropdownMenuOption}
109
- to={`/community/members/profile/${
110
- member.id
111
- }/${`${member.first_name.toLowerCase()}-${member.last_name.toLowerCase()}`}`}
112
- sx={{ display: "block" }}
113
- >
114
- View Public Profile
115
- </Link>
116
- </li>
117
- <li role="presentation">
118
- <div className={styles.divider} />
119
- </li>
120
- <li role="presentation">
121
- <Button
122
- className={styles.dropdownMenuOption}
123
- sx={{ display: "block" }}
124
- onClick={onClickLogout}
125
- disableRipple
126
- >
127
- Log out
128
- </Button>
129
- </li>
130
- </Box>
93
+ </Box>
94
+ <Box className={styles.dropDownMenu} component="ul">
95
+ <li role="presentation">
96
+ <Link className={styles.dropdownMenuOption} to="/profile/">
97
+ Edit Profile
98
+ </Link>
99
+ </li>
100
+ <li role="presentation">
101
+ <Link
102
+ className={styles.dropdownMenuOption}
103
+ to={`/community/members/profile/${
104
+ member.id
105
+ }/${`${member.first_name.toLowerCase()}-${member.last_name.toLowerCase()}`}`}
106
+ >
107
+ View Public Profile
108
+ </Link>
109
+ </li>
110
+ <li role="presentation">
111
+ <div className={styles.divider} />
112
+ </li>
113
+ <li role="presentation">
114
+ <Button
115
+ className={styles.dropdownMenuOption}
116
+ sx={{ display: "block" }}
117
+ onClick={onClickLogout}
118
+ disableRipple
119
+ >
120
+ Log out
121
+ </Button>
122
+ </li>
131
123
  </Box>
132
124
  </Box>
133
125
  );
@@ -20,6 +20,7 @@ function MobileMenu({ handleMobileMenuToggle }) {
20
20
  aria-haspopup="true"
21
21
  onClick={() => handleMobileMenuToggle()}
22
22
  color="inherit"
23
+ disableRipple
23
24
  >
24
25
  <MenuIcon />
25
26
  </IconButton>
@@ -12,21 +12,21 @@ function NavBarDropDown({ isMobile, items }) {
12
12
  component="ul"
13
13
  >
14
14
  {items.map((subItem) => (!subItem.title && !subItem.link ? (
15
- <li role="presentation">
16
- <div className={styles.divider} key={subItem.title} />
15
+ <li role="presentation" key={subItem.title}>
16
+ <div className={styles.divider} />
17
17
  </li>
18
18
  ) : (
19
- <li role="presentation">
19
+ <li
20
+ role="presentation"
21
+ key={isMobile ? `${subItem.title}-mobile` : subItem.title}
22
+ >
20
23
  <Link
21
24
  className={
22
25
  isMobile
23
26
  ? styles.mobileDropdownOption
24
27
  : styles.dropdownMenuOption
25
28
  }
26
- key={isMobile ? `${subItem.title}-mobile` : subItem.title}
27
29
  to={subItem.link}
28
- sx={{ display: "block" }}
29
- disableRipple
30
30
  >
31
31
  {subItem.title}
32
32
  </Link>
@@ -33,22 +33,13 @@ function NavBarItem({
33
33
  </>
34
34
  ) : (
35
35
  <li role="presentation">
36
- <Link
37
- className={styles.navbarOption}
38
- key={item.title}
39
- sx={{ my: 2, display: "block" }}
40
- to={item.link}
41
- >
42
- {item.items?.length > 0 ? (
43
- <>
44
- {item.title}
45
- <ArrowDropDownIcon className={styles.arrowDownIcon} />
46
- <NavBarDropDown items={item.items} />
47
- </>
48
- ) : (
49
- item.title
36
+ <Link className={styles.navbarOption} key={item.title} to={item.link}>
37
+ {item.title}
38
+ {item.items?.length > 0 && (
39
+ <ArrowDropDownIcon className={styles.arrowDownIcon} />
50
40
  )}
51
41
  </Link>
42
+ {item.items?.length > 0 && <NavBarDropDown items={item.items} />}
52
43
  </li>
53
44
  );
54
45
  }
@@ -8,13 +8,16 @@
8
8
  min-height: 50px;
9
9
  border: 1px solid transparent;
10
10
  box-shadow: none;
11
+ li {
12
+ position: relative;
13
+ }
11
14
  .navbarOption {
12
15
  color: #8a959e;
13
16
  font-size: 12px;
14
17
  font-weight: 400;
15
18
  text-transform: uppercase;
16
19
  position: relative;
17
- padding: 20px 15px 15px;
20
+ padding: 20px 15px 25px;
18
21
  text-decoration: none;
19
22
  text-align: left;
20
23
  cursor: pointer;
@@ -23,13 +26,13 @@
23
26
  line-height: 17.15px;
24
27
  white-space: nowrap;
25
28
  background-color: transparent;
26
- margin: 0;
29
+ margin-top: 10px;
27
30
  align-items: center;
28
31
  &:hover {
29
32
  color: #333;
30
33
  background-color: transparent;
31
34
  text-decoration: none;
32
- .dropDownMenu {
35
+ & + .dropDownMenu {
33
36
  display: flex;
34
37
  opacity: 1;
35
38
  }
@@ -37,84 +40,6 @@
37
40
  .arrowDownIcon {
38
41
  font-size: 20px;
39
42
  }
40
- .dropDownMenu,
41
- .join {
42
- display: none;
43
- flex-direction: column;
44
- margin-top: 5px;
45
- padding: 10px 0;
46
- min-width: 230px;
47
- border-top-left-radius: 4px;
48
- border-top-right-radius: 4px;
49
- position: absolute;
50
- top: 90%;
51
- left: 0;
52
- z-index: 1000;
53
- float: left;
54
- font-size: 14px;
55
- text-align: left;
56
- list-style: none;
57
- background-color: #fff;
58
- background-clip: padding-box;
59
- border: 1px solid rgba(0, 0, 0, 0.15);
60
- border-radius: 4px;
61
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
62
- opacity: 0;
63
- transition: opacity 0.3s ease;
64
- .dropdownMenuOption {
65
- display: inline-block;
66
- color: #8a959e;
67
- font-size: 12px;
68
- font-weight: 400;
69
- text-transform: uppercase;
70
- position: relative;
71
- padding: 15px 15px;
72
- text-decoration: none;
73
- text-align: left;
74
- width: 100%;
75
- &:hover {
76
- color: #333;
77
- background-color: #f5f5f5;
78
- outline: 0;
79
- text-decoration: none;
80
- }
81
- }
82
- &::before {
83
- border: solid transparent;
84
- border-color: rgba(170, 170, 170, 0);
85
- border-bottom-color: #aaaaaa;
86
- border-width: 16px;
87
- margin-left: -16px;
88
- bottom: 100%;
89
- left: 25%;
90
- content: " ";
91
- height: 0;
92
- width: 0;
93
- position: absolute;
94
- pointer-events: none;
95
- }
96
- &::after {
97
- border: solid transparent;
98
- border-color: rgba(255, 255, 255, 0);
99
- border-bottom-color: #ffffff;
100
- border-width: 15px;
101
- margin-left: -15px;
102
- bottom: 100%;
103
- left: 25%;
104
- content: " ";
105
- height: 0;
106
- width: 0;
107
- position: absolute;
108
- pointer-events: none;
109
- }
110
- .divider {
111
- width: 100%;
112
- height: 1px;
113
- margin: 9px 0;
114
- overflow: hidden;
115
- background-color: #e5e5e5;
116
- }
117
- }
118
43
  &.join {
119
44
  border: none;
120
45
  border-left-width: medium;
@@ -135,7 +60,7 @@
135
60
  color: #fff;
136
61
  margin-top: 17px;
137
62
  font-size: 14px;
138
- height: 22px;
63
+ height: 26px;
139
64
  &:hover {
140
65
  background: #286a9d;
141
66
  color: #fff;
@@ -143,6 +68,88 @@
143
68
  }
144
69
  }
145
70
  }
71
+ .dropDownMenu,
72
+ .join {
73
+ display: none;
74
+ flex-direction: column;
75
+ margin-top: 5px;
76
+ padding: 10px 0;
77
+ min-width: 230px;
78
+ border-top-left-radius: 4px;
79
+ border-top-right-radius: 4px;
80
+ position: absolute;
81
+ top: 90%;
82
+ left: 0;
83
+ z-index: 1000;
84
+ float: left;
85
+ font-size: 14px;
86
+ text-align: left;
87
+ list-style: none;
88
+ background-color: #fff;
89
+ background-clip: padding-box;
90
+ border: 1px solid rgba(0, 0, 0, 0.15);
91
+ border-radius: 4px;
92
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
93
+ opacity: 0;
94
+ transition: opacity 0.3s ease;
95
+ .dropdownMenuOption {
96
+ display: inline-block;
97
+ color: #8a959e;
98
+ font-size: 12px;
99
+ font-weight: 400;
100
+ text-transform: uppercase;
101
+ position: relative;
102
+ padding: 15px 15px;
103
+ text-decoration: none;
104
+ text-align: left;
105
+ width: 100%;
106
+ &:hover {
107
+ color: #333;
108
+ background-color: #f5f5f5;
109
+ outline: 0;
110
+ text-decoration: none;
111
+ }
112
+ }
113
+ &:hover {
114
+ display: flex;
115
+ opacity: 1;
116
+ }
117
+ &::before {
118
+ border: solid transparent;
119
+ border-color: rgba(170, 170, 170, 0);
120
+ border-bottom-color: #aaaaaa;
121
+ border-width: 16px;
122
+ margin-left: -16px;
123
+ bottom: 100%;
124
+ left: 25%;
125
+ content: " ";
126
+ height: 0;
127
+ width: 0;
128
+ position: absolute;
129
+ pointer-events: none;
130
+ }
131
+ &::after {
132
+ border: solid transparent;
133
+ border-color: rgba(255, 255, 255, 0);
134
+ border-bottom-color: #ffffff;
135
+ border-width: 15px;
136
+ margin-left: -15px;
137
+ bottom: 100%;
138
+ left: 25%;
139
+ content: " ";
140
+ height: 0;
141
+ width: 0;
142
+ position: absolute;
143
+ pointer-events: none;
144
+ }
145
+ .divider {
146
+ width: 100%;
147
+ height: 1px;
148
+ margin: 9px 0;
149
+ overflow: hidden;
150
+ background-color: #e5e5e5;
151
+ }
152
+ }
146
153
  .navbarMobileMenu {
147
154
  flex-direction: column;
148
155
  padding-inline-start: 0px;
@@ -51,6 +51,7 @@ function NavBarTemplate({ data, isLoggedUser, member }) {
51
51
  xs: "none",
52
52
  md: isSearchBarOpen ? "none" : "flex",
53
53
  },
54
+ alignItems: "center",
54
55
  justifyContent: "flex-end",
55
56
  }}
56
57
  component="ul"
@@ -1 +1 @@
1
- { "staticJsonFilesBuildTime": [], "lastBuild": 1714750103949 }
1
+ { "staticJsonFilesBuildTime": [], "lastBuild": 1714760006562 }