@stokr/components-library 2.3.66 → 2.3.68
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/dist/analytics/index.js +52 -6
- package/dist/components/Header/Header.js +65 -12
- package/dist/context/AuthContext.js +3 -1
- package/dist/index.js +1 -12
- package/package.json +1 -2
- package/dist/index.js.map +0 -1
- package/dist/index.umd.cjs +0 -10371
- package/dist/index.umd.cjs.map +0 -1
package/dist/analytics/index.js
CHANGED
|
@@ -4,12 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.alias = alias;
|
|
7
|
+
exports.getAmountBucket = getAmountBucket;
|
|
8
|
+
exports.getTokenBucket = getTokenBucket;
|
|
7
9
|
exports.hasOptedIn = hasOptedIn;
|
|
8
10
|
exports.identify = identify;
|
|
9
11
|
exports.initAnalytics = initAnalytics;
|
|
10
12
|
exports.optIn = optIn;
|
|
11
13
|
exports.optOut = optOut;
|
|
12
14
|
exports.reset = reset;
|
|
15
|
+
exports.setUserProperties = setUserProperties;
|
|
13
16
|
exports.timeEvent = timeEvent;
|
|
14
17
|
exports.track = track;
|
|
15
18
|
var _mixpanelBrowser = _interopRequireDefault(require("mixpanel-browser"));
|
|
@@ -64,7 +67,8 @@ function initAnalytics() {
|
|
|
64
67
|
let {
|
|
65
68
|
token,
|
|
66
69
|
app,
|
|
67
|
-
requireConsent = false
|
|
70
|
+
requireConsent = false,
|
|
71
|
+
scroll = true
|
|
68
72
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
69
73
|
if (initialized) return;
|
|
70
74
|
if (!token) return;
|
|
@@ -72,13 +76,13 @@ function initAnalytics() {
|
|
|
72
76
|
api_host: 'https://api-eu.mixpanel.com',
|
|
73
77
|
autocapture: {
|
|
74
78
|
pageview: 'full-url',
|
|
75
|
-
click:
|
|
76
|
-
dead_click:
|
|
77
|
-
input:
|
|
79
|
+
click: false,
|
|
80
|
+
dead_click: false,
|
|
81
|
+
input: false,
|
|
78
82
|
rage_click: true,
|
|
79
|
-
scroll
|
|
83
|
+
scroll,
|
|
80
84
|
submit: true,
|
|
81
|
-
capture_text_content: false
|
|
85
|
+
capture_text_content: false
|
|
82
86
|
},
|
|
83
87
|
record_sessions_percent: 100,
|
|
84
88
|
record_heatmap_data: true,
|
|
@@ -91,6 +95,9 @@ function initAnalytics() {
|
|
|
91
95
|
app
|
|
92
96
|
});
|
|
93
97
|
}
|
|
98
|
+
_mixpanelBrowser.default.register({
|
|
99
|
+
source: 'frontend'
|
|
100
|
+
});
|
|
94
101
|
initialized = true;
|
|
95
102
|
}
|
|
96
103
|
|
|
@@ -146,6 +153,23 @@ function identify(userId) {
|
|
|
146
153
|
}
|
|
147
154
|
}
|
|
148
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Update properties on the current user's Mixpanel profile.
|
|
158
|
+
* Call this whenever user state changes after login — KYC approval,
|
|
159
|
+
* tier upgrade, onboarding step completion, etc.
|
|
160
|
+
* Props go through the same sanitizer as track().
|
|
161
|
+
*
|
|
162
|
+
* @param {Record<string, unknown>} props — non-PII properties only
|
|
163
|
+
*/
|
|
164
|
+
function setUserProperties() {
|
|
165
|
+
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
166
|
+
if (!initialized) return;
|
|
167
|
+
const sanitized = sanitize(props);
|
|
168
|
+
if (Object.keys(sanitized).length > 0) {
|
|
169
|
+
_mixpanelBrowser.default.people.set(sanitized);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
149
173
|
/**
|
|
150
174
|
* Only needed for legacy Mixpanel projects (Original ID Merge).
|
|
151
175
|
* New projects (post-2023) handle merging automatically via identify().
|
|
@@ -159,4 +183,26 @@ function alias(userId) {
|
|
|
159
183
|
function reset() {
|
|
160
184
|
if (!initialized) return;
|
|
161
185
|
_mixpanelBrowser.default.reset();
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** Returns a bucket label for an investment amount (EUR/USD). */
|
|
189
|
+
function getAmountBucket(amount) {
|
|
190
|
+
if (amount < 125000) return '<125k';
|
|
191
|
+
if (amount < 250000) return '125k-250k';
|
|
192
|
+
if (amount < 500000) return '250k-500k';
|
|
193
|
+
if (amount < 1000000) return '500k-1M';
|
|
194
|
+
if (amount < 5000000) return '1M-5M';
|
|
195
|
+
return '5M+';
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/** Returns a bucket label for a token quantity. */
|
|
199
|
+
function getTokenBucket(qty) {
|
|
200
|
+
if (qty <= 1) return '0-1';
|
|
201
|
+
if (qty <= 10) return '2-10';
|
|
202
|
+
if (qty <= 100) return '11-100';
|
|
203
|
+
if (qty <= 1000) return '101-1k';
|
|
204
|
+
if (qty <= 10000) return '1k-10k';
|
|
205
|
+
if (qty <= 100000) return '10k-100k';
|
|
206
|
+
if (qty <= 1000000) return '100k-1M';
|
|
207
|
+
return '1M+';
|
|
162
208
|
}
|
|
@@ -25,6 +25,7 @@ var _Grid = require("../Grid/Grid.styles");
|
|
|
25
25
|
var _FooterLayout = require("../Footer/FooterLayout");
|
|
26
26
|
var _globalVariables = require("../../constants/globalVariables");
|
|
27
27
|
var _rwd = require("../../styles/rwd");
|
|
28
|
+
var _analytics = require("../../analytics");
|
|
28
29
|
const _excluded = ["activeMenu", "activateMenu", "user", "userPhoto", "logoutUser", "onLoginClick", "onSignUpClick", "useRelativePathForMenu", "useRelativePathForUserMenu", "progress", "withSidebar", "isSidebarExpanded", "sidebarHandler", "signupFlow", "noFixedPosition", "withoutLoginSignupButton"]; //import { Wrapper } from '../Input/Input.styles'
|
|
29
30
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
30
31
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
@@ -32,20 +33,40 @@ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i
|
|
|
32
33
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
33
34
|
const productMenuItems = [{
|
|
34
35
|
name: 'End-to-End Tokenization',
|
|
35
|
-
onClick: () =>
|
|
36
|
+
onClick: () => {
|
|
37
|
+
(0, _analytics.track)('header_link_clicked', {
|
|
38
|
+
link: 'end-to-end tokenization'
|
|
39
|
+
});
|
|
40
|
+
window.location.href = "".concat(_globalVariables.platformURL, "/solutions/asset-tokenization");
|
|
41
|
+
},
|
|
36
42
|
link: '/solutions/asset-tokenization'
|
|
37
43
|
}, {
|
|
38
44
|
name: 'Tokenization-as-a-Service',
|
|
39
|
-
onClick: () =>
|
|
45
|
+
onClick: () => {
|
|
46
|
+
(0, _analytics.track)('header_link_clicked', {
|
|
47
|
+
link: 'tokenization-as-a-service'
|
|
48
|
+
});
|
|
49
|
+
window.location.href = "".concat(_globalVariables.platformURL, "/solutions/tokenization-as-service");
|
|
50
|
+
},
|
|
40
51
|
link: '/solutions/tokenization-as-service'
|
|
41
52
|
}];
|
|
42
53
|
const mediaMenuItems = [{
|
|
43
54
|
name: 'Press Releases',
|
|
44
|
-
onClick: () =>
|
|
55
|
+
onClick: () => {
|
|
56
|
+
(0, _analytics.track)('header_link_clicked', {
|
|
57
|
+
link: 'press releases'
|
|
58
|
+
});
|
|
59
|
+
window.location.href = "".concat(_globalVariables.platformURL, "/press-releases");
|
|
60
|
+
},
|
|
45
61
|
link: '/press-releases'
|
|
46
62
|
}, {
|
|
47
63
|
name: 'Stoke Post',
|
|
48
|
-
onClick: () =>
|
|
64
|
+
onClick: () => {
|
|
65
|
+
(0, _analytics.track)('header_link_clicked', {
|
|
66
|
+
link: 'stoke post'
|
|
67
|
+
});
|
|
68
|
+
window.location.href = "".concat(_globalVariables.platformURL, "/stoke-post");
|
|
69
|
+
},
|
|
49
70
|
link: '/stoke-post'
|
|
50
71
|
}];
|
|
51
72
|
const investorMenuItems = [{
|
|
@@ -217,16 +238,32 @@ const Header = _ref3 => {
|
|
|
217
238
|
"data-cy": "logo-nav-link"
|
|
218
239
|
}, /*#__PURE__*/_react.default.createElement(_SvgIcons.LogoSvg, null))), !progress && /*#__PURE__*/_react.default.createElement(_Header.HeaderMainNav, null, /*#__PURE__*/_react.default.createElement(_MenuNav.default, null, /*#__PURE__*/_react.default.createElement("ul", null, /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("a", {
|
|
219
240
|
href: newPlatformUrl + '/featured-assets',
|
|
220
|
-
"data-cy": "invest-nav-link"
|
|
241
|
+
"data-cy": "invest-nav-link",
|
|
242
|
+
onClick: () => (0, _analytics.track)('header_link_clicked', {
|
|
243
|
+
link: 'invest'
|
|
244
|
+
})
|
|
221
245
|
}, "Invest")), /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("a", {
|
|
222
|
-
onClick: () =>
|
|
246
|
+
onClick: () => {
|
|
247
|
+
(0, _analytics.track)('header_link_clicked', {
|
|
248
|
+
link: 'solutions'
|
|
249
|
+
});
|
|
250
|
+
toggleMenu('products');
|
|
251
|
+
},
|
|
223
252
|
"data-cy": "products-nav-link"
|
|
224
253
|
}, "Solutions")), /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("a", {
|
|
225
|
-
onClick: () =>
|
|
254
|
+
onClick: () => {
|
|
255
|
+
(0, _analytics.track)('header_link_clicked', {
|
|
256
|
+
link: 'media'
|
|
257
|
+
});
|
|
258
|
+
toggleMenu('media');
|
|
259
|
+
},
|
|
226
260
|
"data-cy": "media-nav-link"
|
|
227
261
|
}, "Media")), /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("a", {
|
|
228
262
|
href: newPlatformUrl + '/team',
|
|
229
|
-
"data-cy": "team-nav-link"
|
|
263
|
+
"data-cy": "team-nav-link",
|
|
264
|
+
onClick: () => (0, _analytics.track)('header_link_clicked', {
|
|
265
|
+
link: 'team'
|
|
266
|
+
})
|
|
230
267
|
}, "Team")))))), progress && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, signupFlow ? /*#__PURE__*/_react.default.createElement(_StepsProgress.StepsProgressSignup, {
|
|
231
268
|
user: user
|
|
232
269
|
}) : /*#__PURE__*/_react.default.createElement(_Header.ProgressWrap, null, /*#__PURE__*/_react.default.createElement(_StepsProgress.StepsProgressHeader, {
|
|
@@ -260,10 +297,18 @@ const Header = _ref3 => {
|
|
|
260
297
|
})), (0, _checkTodoStatus.default)(user) > 0 && /*#__PURE__*/_react.default.createElement(_NotificationCounter.default, {
|
|
261
298
|
avatar: true
|
|
262
299
|
}, (0, _checkTodoStatus.default)(user))))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, withoutLoginSignupButton ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_breakdown.default, null, /*#__PURE__*/_react.default.createElement(_Header.LoginButton, {
|
|
263
|
-
onClick:
|
|
300
|
+
onClick: () => {
|
|
301
|
+
(0, _analytics.track)('header_link_clicked', {
|
|
302
|
+
link: 'login'
|
|
303
|
+
});
|
|
304
|
+
onLoginClick();
|
|
305
|
+
},
|
|
264
306
|
"data-cy": "login-nav-button"
|
|
265
307
|
}, "Log in")), /*#__PURE__*/_react.default.createElement(_Header.SignupButton, {
|
|
266
|
-
onClick:
|
|
308
|
+
onClick: () => {
|
|
309
|
+
(0, _analytics.track)('signup_cta_clicked');
|
|
310
|
+
onSignUpClick();
|
|
311
|
+
},
|
|
267
312
|
"data-cy": "signup-nav-button"
|
|
268
313
|
}, "Sign Up")))))), /*#__PURE__*/_react.default.createElement(_Header.MobileMenu, {
|
|
269
314
|
isActive: currentActiveMenu === 'main',
|
|
@@ -331,7 +376,12 @@ const Header = _ref3 => {
|
|
|
331
376
|
}, "log out"))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, withoutLoginSignupButton ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_breakdown.default, {
|
|
332
377
|
alignCenter: true
|
|
333
378
|
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
334
|
-
onClick:
|
|
379
|
+
onClick: () => {
|
|
380
|
+
(0, _analytics.track)('header_link_clicked', {
|
|
381
|
+
link: 'login'
|
|
382
|
+
});
|
|
383
|
+
onLoginClick();
|
|
384
|
+
},
|
|
335
385
|
secondary: true,
|
|
336
386
|
isLoginMobile: true
|
|
337
387
|
}, "Log in")), /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -341,7 +391,10 @@ const Header = _ref3 => {
|
|
|
341
391
|
paddingBottom: 30
|
|
342
392
|
}
|
|
343
393
|
}, /*#__PURE__*/_react.default.createElement(_Header.SignupButton, {
|
|
344
|
-
onClick:
|
|
394
|
+
onClick: () => {
|
|
395
|
+
(0, _analytics.track)('signup_cta_clicked');
|
|
396
|
+
onSignUpClick();
|
|
397
|
+
},
|
|
345
398
|
isMobile: true
|
|
346
399
|
}, "Sign Up"))), socialLinks.length > 0 && /*#__PURE__*/_react.default.createElement(_Header.CTAContainer, null, /*#__PURE__*/_react.default.createElement("span", null, "FOLLOW US"), /*#__PURE__*/_react.default.createElement(_Header.SocialLinksContainer, {
|
|
347
400
|
isHeader: true
|
|
@@ -230,6 +230,7 @@ class AuthProviderClass extends _react.Component {
|
|
|
230
230
|
customValidateGetUser
|
|
231
231
|
} = _this.props;
|
|
232
232
|
try {
|
|
233
|
+
var _user$email$endsWith, _user$email;
|
|
233
234
|
const result = await _Auth.default.getUser();
|
|
234
235
|
let firebaseUser = _this.state.firebaseUser;
|
|
235
236
|
if (!firebaseUser) {
|
|
@@ -253,7 +254,8 @@ class AuthProviderClass extends _react.Component {
|
|
|
253
254
|
isFetchingUser: false
|
|
254
255
|
});
|
|
255
256
|
(0, _analytics.identify)(user._id, {
|
|
256
|
-
role: user.user_type
|
|
257
|
+
role: user.user_type,
|
|
258
|
+
is_internal: (_user$email$endsWith = (_user$email = user.email) === null || _user$email === void 0 ? void 0 : _user$email.endsWith('@stokr.io')) !== null && _user$email$endsWith !== void 0 ? _user$email$endsWith : false
|
|
257
259
|
});
|
|
258
260
|
|
|
259
261
|
//redirect to home if user is on login or signup route (affects homepage only)
|
package/dist/index.js
CHANGED
|
@@ -1169,7 +1169,7 @@ Object.keys(_fixDecimals).forEach(function (key) {
|
|
|
1169
1169
|
}
|
|
1170
1170
|
});
|
|
1171
1171
|
});
|
|
1172
|
-
var _analytics = require("./
|
|
1172
|
+
var _analytics = require("./analytics");
|
|
1173
1173
|
Object.keys(_analytics).forEach(function (key) {
|
|
1174
1174
|
if (key === "default" || key === "__esModule") return;
|
|
1175
1175
|
if (key in exports && exports[key] === _analytics[key]) return;
|
|
@@ -1180,17 +1180,6 @@ Object.keys(_analytics).forEach(function (key) {
|
|
|
1180
1180
|
}
|
|
1181
1181
|
});
|
|
1182
1182
|
});
|
|
1183
|
-
var _analytics2 = require("./analytics");
|
|
1184
|
-
Object.keys(_analytics2).forEach(function (key) {
|
|
1185
|
-
if (key === "default" || key === "__esModule") return;
|
|
1186
|
-
if (key in exports && exports[key] === _analytics2[key]) return;
|
|
1187
|
-
Object.defineProperty(exports, key, {
|
|
1188
|
-
enumerable: true,
|
|
1189
|
-
get: function () {
|
|
1190
|
-
return _analytics2[key];
|
|
1191
|
-
}
|
|
1192
|
-
});
|
|
1193
|
-
});
|
|
1194
1183
|
var _formatCurrencyValue = require("./utils/formatCurrencyValue");
|
|
1195
1184
|
Object.keys(_formatCurrencyValue).forEach(function (key) {
|
|
1196
1185
|
if (key === "default" || key === "__esModule") return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stokr/components-library",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.68",
|
|
4
4
|
"description": "STOKR - Components Library",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -58,7 +58,6 @@
|
|
|
58
58
|
"react-day-picker": "^9.11.1",
|
|
59
59
|
"react-device-detect": "^2.2.3",
|
|
60
60
|
"react-dom": "^18.3.1",
|
|
61
|
-
"react-ga4": "^2.1.0",
|
|
62
61
|
"react-helmet": "^6.1.0",
|
|
63
62
|
"react-otp-input": "^3.1.0",
|
|
64
63
|
"react-portal": "^4.2.2",
|