@stokr/components-library 2.3.77 → 2.3.79
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 +3 -0
- package/dist/api/authenticationApi.js +13 -0
- package/dist/auth/index.js +34 -0
- package/dist/components/LearnMorePage/LearnMore.propTypes.js +20 -0
- package/dist/components/StatusDot/StatusDot.js +68 -0
- package/dist/components/StatusDot/StatusDot.styles.js +45 -0
- package/dist/config.js +28 -0
- package/dist/manifest.json +2 -2
- package/dist/routing/RouterWrapper.js +17 -0
- package/dist/routing/app-routes.js +22 -0
- package/dist/routing/navigate-app.js +36 -0
- package/dist/routing/resolve-app-href.js +149 -0
- package/dist/runtime-config.js +94 -0
- package/dist/static/animations/checked.lottie.js +4 -0
- package/dist/static/animations/progress.lottie.js +4 -0
- package/dist/static/animations/upload.lottie +0 -0
- package/dist/static/animations/upload.lottie.js +4 -0
- package/dist/static/fonts/Ionicons/Ionicons.ttf.js +4 -0
- package/dist/static/fonts/Ionicons/Ionicons.woff.js +4 -0
- package/dist/static/fonts/Ionicons/Ionicons.woff2.js +4 -0
- package/dist/static/fonts/Ionicons/ionicons.min.css.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Bold.ttf.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Bold.woff.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Bold.woff2.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-ExtraBold.ttf.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-ExtraBold.woff.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-ExtraBold.woff2.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Light.ttf.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Light.woff.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Light.woff2.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Regular.ttf.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Regular.woff.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-Regular.woff2.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-SemiBold.ttf.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-SemiBold.woff.js +4 -0
- package/dist/static/fonts/OpenSans/OpenSans-SemiBold.woff2.js +4 -0
- package/dist/static/fonts/icomoon/icomoon.eot.js +4 -0
- package/dist/static/fonts/icomoon/icomoon.svg.js +4 -0
- package/dist/static/fonts/icomoon/icomoon.ttf.js +4 -0
- package/dist/static/fonts/icomoon/icomoon.woff.js +4 -0
- package/dist/static/images/add-folder-icon.svg.js +5 -0
- package/dist/static/images/address-refreshing.gif.js +4 -0
- package/dist/static/images/arrow-down-black.svg.js +4 -0
- package/dist/static/images/avatar-placeholder.png.js +4 -0
- package/dist/static/images/background3.png.js +4 -0
- package/dist/static/images/check-icon.svg.js +5 -0
- package/dist/static/images/checkmark-circle-icon.svg.js +5 -0
- package/dist/static/images/close-circle-icon.svg.js +5 -0
- package/dist/static/images/copy_icon.svg.js +5 -0
- package/dist/static/images/cross-icon.svg.js +5 -0
- package/dist/static/images/currency/bitcoin-logo.png +0 -0
- package/dist/static/images/currency/bitcoin-logo.png.js +4 -0
- package/dist/static/images/currency/bmn2-logo.png +0 -0
- package/dist/static/images/currency/bmn2-logo.png.js +4 -0
- package/dist/static/images/currency/eth.svg +10 -0
- package/dist/static/images/currency/eth_logo.svg +9 -0
- package/dist/static/images/currency/eth_logo.svg.js +4 -0
- package/dist/static/images/currency/eur.svg +3 -0
- package/dist/static/images/currency/usdc-logo.svg +5 -0
- package/dist/static/images/currency/usdc-logo.svg.js +4 -0
- package/dist/static/images/currency/usdq-logo.png +0 -0
- package/dist/static/images/currency/usdq-logo.png.js +4 -0
- package/dist/static/images/currency/usdt-logo.png +0 -0
- package/dist/static/images/currency/usdt-logo.png.js +4 -0
- package/dist/static/images/early-adopter.png.js +4 -0
- package/dist/static/images/eth_logo.svg +8 -8
- package/dist/static/images/external-link-icon.svg.js +4 -0
- package/dist/static/images/filter-icon.svg.js +5 -0
- package/dist/static/images/google_auth.png.js +4 -0
- package/dist/static/images/graduation.png.js +4 -0
- package/dist/static/images/mangopay.svg.js +4 -0
- package/dist/static/images/numbers/number_eight.svg.js +5 -0
- package/dist/static/images/numbers/number_five.svg.js +5 -0
- package/dist/static/images/numbers/number_four.svg.js +5 -0
- package/dist/static/images/numbers/number_nine.svg.js +5 -0
- package/dist/static/images/numbers/number_one.svg.js +5 -0
- package/dist/static/images/numbers/number_seven.svg.js +5 -0
- package/dist/static/images/numbers/number_six.svg.js +5 -0
- package/dist/static/images/numbers/number_three.svg.js +5 -0
- package/dist/static/images/numbers/number_two.svg.js +5 -0
- package/dist/static/images/numbers/number_zero.svg.js +5 -0
- package/dist/static/images/process-waiting.gif.js +4 -0
- package/dist/static/images/search-icon.svg.js +5 -0
- package/dist/static/images/social/Facebook_Logo.png.js +4 -0
- package/dist/static/images/social/LI-In-Bug.png.js +4 -0
- package/dist/static/images/social/Telegram-Logo.png.js +4 -0
- package/dist/static/images/social/X-logo-black.png.js +4 -0
- package/dist/static/images/social/youtube_social_circle_red.png.js +4 -0
- package/dist/static/images/transfer-icon.svg.js +5 -0
- package/dist/static/images/warning-filled.svg.js +5 -0
- package/dist/styles/ioniconsStyles.js +31 -0
- package/dist/utils/app-urls-analytics-backoffice.js +30 -0
- package/dist/utils/app-urls.js +28 -0
- package/dist/utils/formatCurrencyValue.js +4 -2
- package/dist/utils/transition.js +101 -0
- package/package.json +1 -1
- package/dist/index.css +0 -1
- package/dist/utils/analytics.js +0 -44
package/dist/analytics/index.js
CHANGED
|
@@ -73,6 +73,9 @@ function initAnalytics() {
|
|
|
73
73
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
74
74
|
if (initialized) return;
|
|
75
75
|
if (!token) return;
|
|
76
|
+
if (typeof navigator !== 'undefined' && /Ghost Inspector/i.test(navigator.userAgent)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
76
79
|
_mixpanelBrowser.default.init(token, {
|
|
77
80
|
api_host: apiHost,
|
|
78
81
|
autocapture: {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import axiosInstance from "../model/axios.js";
|
|
2
|
+
const authenticationApi = {
|
|
3
|
+
/**
|
|
4
|
+
* @param {string} pathSegment — appended to `auth/` (e.g. `forgotPass` → `POST auth/forgotPass`)
|
|
5
|
+
* @param {Record<string, unknown>} body
|
|
6
|
+
*/
|
|
7
|
+
post(pathSegment, body) {
|
|
8
|
+
return axiosInstance.post(`auth/${pathSegment}`, body);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
authenticationApi
|
|
13
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { configure } from "../config.js";
|
|
2
|
+
import { default as default2 } from "../components/2FA/Connect2FA.js";
|
|
3
|
+
import { default as default3 } from "../components/2FA/enable-2fa-flow.js";
|
|
4
|
+
import { default as default4 } from "../components/2FA/EnterCode.js";
|
|
5
|
+
import { default as default5 } from "../components/2FA/InstallAuthApp.js";
|
|
6
|
+
import { default as default6 } from "../components/2FA/login-with-otp-flow.js";
|
|
7
|
+
import { default as default7 } from "../components/2FA/Sucess2FA.js";
|
|
8
|
+
import { default as default8 } from "../components/2FA/main-flow.js";
|
|
9
|
+
import { default as default9 } from "../components/2FA/ResetCode.js";
|
|
10
|
+
import { Auth, DEFAULT_TOKEN_EXPIRY_MS } from "../context/Auth.js";
|
|
11
|
+
import { AuthConsumer, AuthContext, AuthProvider } from "../context/AuthContext.js";
|
|
12
|
+
import { LoadingDots, StokrLoader, StokrLoaderBox } from "../components/StokrLoader/StokrLoader.js";
|
|
13
|
+
import { getConfig, resetRuntimeConfig } from "../runtime-config.js";
|
|
14
|
+
export {
|
|
15
|
+
Auth,
|
|
16
|
+
AuthConsumer,
|
|
17
|
+
AuthContext,
|
|
18
|
+
AuthProvider,
|
|
19
|
+
default2 as Connect2FA,
|
|
20
|
+
DEFAULT_TOKEN_EXPIRY_MS,
|
|
21
|
+
default3 as Enable2FAFlow,
|
|
22
|
+
default4 as EnterCode,
|
|
23
|
+
default5 as InstallAuthApp,
|
|
24
|
+
LoadingDots,
|
|
25
|
+
default6 as LoginWithOTPFlow,
|
|
26
|
+
default8 as Main2FAFlow,
|
|
27
|
+
default9 as ResetCode,
|
|
28
|
+
StokrLoader,
|
|
29
|
+
StokrLoaderBox,
|
|
30
|
+
default7 as Sucess2FA,
|
|
31
|
+
configure,
|
|
32
|
+
getConfig,
|
|
33
|
+
resetRuntimeConfig
|
|
34
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import PropTypes from "prop-types";
|
|
2
|
+
const learnMoreCategoryPropTypes = {
|
|
3
|
+
title: PropTypes.string.isRequired,
|
|
4
|
+
inProgress: PropTypes.bool,
|
|
5
|
+
complete: PropTypes.bool,
|
|
6
|
+
tooltip: PropTypes.node
|
|
7
|
+
};
|
|
8
|
+
const learnMorePostPropTypes = {
|
|
9
|
+
id: PropTypes.string.isRequired,
|
|
10
|
+
title: PropTypes.string.isRequired,
|
|
11
|
+
excerpt: PropTypes.string.isRequired,
|
|
12
|
+
content: PropTypes.string.isRequired,
|
|
13
|
+
postType: PropTypes.oneOf(["video", "text"]),
|
|
14
|
+
cover: PropTypes.string,
|
|
15
|
+
videoSrc: PropTypes.string
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
learnMoreCategoryPropTypes,
|
|
19
|
+
learnMorePostPropTypes
|
|
20
|
+
};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { colors } from "../../styles/colors.js";
|
|
4
|
+
import { Root, Dot, Label } from "./StatusDot.styles.js";
|
|
5
|
+
const VARIANT_PRESETS = {
|
|
6
|
+
pending: {
|
|
7
|
+
color: colors.grey2,
|
|
8
|
+
backgroundColor: "rgba(155, 155, 155, 0.14)"
|
|
9
|
+
},
|
|
10
|
+
initiated: {
|
|
11
|
+
color: colors.blue,
|
|
12
|
+
backgroundColor: "#0050CA0D"
|
|
13
|
+
},
|
|
14
|
+
paid: {
|
|
15
|
+
color: colors.fernGreen,
|
|
16
|
+
backgroundColor: "#4D97410D"
|
|
17
|
+
},
|
|
18
|
+
declined: {
|
|
19
|
+
color: colors.darkRed,
|
|
20
|
+
backgroundColor: "rgba(210, 32, 13, 0.08)"
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const StatusDot = ({
|
|
24
|
+
children,
|
|
25
|
+
variant,
|
|
26
|
+
color,
|
|
27
|
+
backgroundColor,
|
|
28
|
+
surface = "transparent",
|
|
29
|
+
uppercase = false,
|
|
30
|
+
dotSize = 6,
|
|
31
|
+
className,
|
|
32
|
+
style,
|
|
33
|
+
labelStyle,
|
|
34
|
+
onClick,
|
|
35
|
+
...rest
|
|
36
|
+
}) => {
|
|
37
|
+
const preset = variant && VARIANT_PRESETS[variant] ? VARIANT_PRESETS[variant] : null;
|
|
38
|
+
const resolvedColor = color ?? preset?.color ?? colors.black;
|
|
39
|
+
const isSubtle = surface === "subtle";
|
|
40
|
+
const resolvedBackground = isSubtle && (backgroundColor !== void 0 ? backgroundColor : preset?.backgroundColor);
|
|
41
|
+
return /* @__PURE__ */ jsxs(
|
|
42
|
+
Root,
|
|
43
|
+
{
|
|
44
|
+
$subtle: isSubtle,
|
|
45
|
+
$backgroundColor: resolvedBackground,
|
|
46
|
+
$hasClick: Boolean(onClick),
|
|
47
|
+
className,
|
|
48
|
+
style,
|
|
49
|
+
onClick,
|
|
50
|
+
role: onClick ? "button" : void 0,
|
|
51
|
+
tabIndex: onClick ? 0 : void 0,
|
|
52
|
+
onKeyDown: onClick ? (e) => {
|
|
53
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
onClick(e);
|
|
56
|
+
}
|
|
57
|
+
} : void 0,
|
|
58
|
+
...rest,
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ jsx(Dot, { $size: dotSize, $color: resolvedColor }),
|
|
61
|
+
/* @__PURE__ */ jsx(Label, { $color: resolvedColor, $uppercase: uppercase, style: labelStyle, children })
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
export {
|
|
67
|
+
StatusDot
|
|
68
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
const Root = styled.div.withConfig({
|
|
3
|
+
shouldForwardProp: (prop) => !["$subtle", "$backgroundColor", "$hasClick"].includes(prop)
|
|
4
|
+
})`
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: 8px;
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
padding: ${(p) => p.$subtle ? "2px 8px" : "0"};
|
|
10
|
+
background-color: ${(p) => p.$subtle && p.$backgroundColor ? p.$backgroundColor : "transparent"};
|
|
11
|
+
border-radius: ${(p) => p.$subtle ? "2px" : "0"};
|
|
12
|
+
cursor: ${(p) => p.$hasClick ? "pointer" : "default"};
|
|
13
|
+
white-space: nowrap;
|
|
14
|
+
transition: opacity 0.2s ease;
|
|
15
|
+
|
|
16
|
+
${(p) => p.$hasClick && `
|
|
17
|
+
&:hover {
|
|
18
|
+
opacity: 0.85;
|
|
19
|
+
}
|
|
20
|
+
`}
|
|
21
|
+
`;
|
|
22
|
+
const Dot = styled.span.withConfig({
|
|
23
|
+
shouldForwardProp: (prop) => !["$size", "$color"].includes(prop)
|
|
24
|
+
})`
|
|
25
|
+
width: ${(p) => p.$size}px;
|
|
26
|
+
height: ${(p) => p.$size}px;
|
|
27
|
+
border-radius: 50%;
|
|
28
|
+
background-color: ${(p) => p.$color};
|
|
29
|
+
flex-shrink: 0;
|
|
30
|
+
`;
|
|
31
|
+
const Label = styled.span.withConfig({
|
|
32
|
+
shouldForwardProp: (prop) => !["$color", "$uppercase"].includes(prop)
|
|
33
|
+
})`
|
|
34
|
+
font-size: ${(p) => p.$uppercase ? "11px" : "12px"};
|
|
35
|
+
font-weight: ${(p) => p.$uppercase ? "700" : "400"};
|
|
36
|
+
line-height: 20px;
|
|
37
|
+
color: ${(p) => p.$color};
|
|
38
|
+
text-transform: ${(p) => p.$uppercase ? "uppercase" : "none"};
|
|
39
|
+
letter-spacing: ${(p) => p.$uppercase ? "2px" : "0.6px"};
|
|
40
|
+
`;
|
|
41
|
+
export {
|
|
42
|
+
Dot,
|
|
43
|
+
Label,
|
|
44
|
+
Root
|
|
45
|
+
};
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { initFirebase } from "./firebase-config.js";
|
|
2
|
+
import axiosInstance from "./model/axios.js";
|
|
3
|
+
import axiosInstance$1 from "./model/axiosPublic.js";
|
|
4
|
+
import { assignRuntimeConfig } from "./runtime-config.js";
|
|
5
|
+
import { getConfig, resetRuntimeConfig } from "./runtime-config.js";
|
|
6
|
+
let _lastFirebaseConfig = null;
|
|
7
|
+
function configure(config = {}) {
|
|
8
|
+
assignRuntimeConfig(config);
|
|
9
|
+
if (config.apiUrl != null) {
|
|
10
|
+
axiosInstance.defaults.baseURL = config.apiUrl;
|
|
11
|
+
}
|
|
12
|
+
if (config.baseUrlPublic != null) {
|
|
13
|
+
axiosInstance$1.defaults.baseURL = config.baseUrlPublic;
|
|
14
|
+
}
|
|
15
|
+
if (config.firebase) {
|
|
16
|
+
_lastFirebaseConfig = config.firebase;
|
|
17
|
+
initFirebase(config.firebase);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function getLastFirebaseConfig() {
|
|
21
|
+
return _lastFirebaseConfig;
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
configure,
|
|
25
|
+
getConfig,
|
|
26
|
+
getLastFirebaseConfig,
|
|
27
|
+
resetRuntimeConfig
|
|
28
|
+
};
|
package/dist/manifest.json
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import PropTypes from "prop-types";
|
|
4
|
+
import { useInRouterContext, BrowserRouter } from "react-router-dom";
|
|
5
|
+
function RouterWrapper({ children }) {
|
|
6
|
+
const inRouter = useInRouterContext();
|
|
7
|
+
if (inRouter) {
|
|
8
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
9
|
+
}
|
|
10
|
+
return /* @__PURE__ */ jsx(BrowserRouter, { future: { v7_relativeSplatPath: false, v7_startTransition: false }, children });
|
|
11
|
+
}
|
|
12
|
+
RouterWrapper.propTypes = {
|
|
13
|
+
children: PropTypes.node
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
RouterWrapper
|
|
17
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const AppSurface = Object.freeze({
|
|
2
|
+
ONBOARDING: "onboarding",
|
|
3
|
+
DASHBOARD: "dashboard",
|
|
4
|
+
ADMIN: "admin",
|
|
5
|
+
BACKOFFICE: "backoffice",
|
|
6
|
+
/** Apex / public app origin (`https://{websiteDomain}`; path mode uses the same base as {@link getPlatformURL}). */
|
|
7
|
+
INVESTOR_ROOT: "investorRoot",
|
|
8
|
+
/** Register / sign-up entry from login flows. */
|
|
9
|
+
REGISTER: "register",
|
|
10
|
+
/** Default Mixpanel proxy host (subdomain or path). */
|
|
11
|
+
ANALYTICS: "analytics"
|
|
12
|
+
});
|
|
13
|
+
const AppRoute = Object.freeze({
|
|
14
|
+
WELCOME: "/welcome",
|
|
15
|
+
RESEND_ACTIVATION: "/resend-activation-email",
|
|
16
|
+
CHECKLIST: "/checklist",
|
|
17
|
+
OVERVIEW: "/overview"
|
|
18
|
+
});
|
|
19
|
+
export {
|
|
20
|
+
AppRoute,
|
|
21
|
+
AppSurface
|
|
22
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { resolveAppHref } from "./resolve-app-href.js";
|
|
2
|
+
function pathnameIfSameOrigin(absoluteHref) {
|
|
3
|
+
if (typeof window === "undefined" || !absoluteHref) return null;
|
|
4
|
+
try {
|
|
5
|
+
const u = new URL(absoluteHref, window.location.href);
|
|
6
|
+
if (u.origin === window.location.origin) {
|
|
7
|
+
return `${u.pathname}${u.search}${u.hash}`;
|
|
8
|
+
}
|
|
9
|
+
} catch {
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
function navigateApp(navigate, surface, relativePath = "") {
|
|
14
|
+
const href = resolveAppHref(surface, relativePath);
|
|
15
|
+
if (!href) return;
|
|
16
|
+
const internal = pathnameIfSameOrigin(href);
|
|
17
|
+
if (internal != null && typeof navigate === "function") {
|
|
18
|
+
navigate(internal);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
window.location.assign(href);
|
|
22
|
+
}
|
|
23
|
+
function navigateToHref(navigate, href) {
|
|
24
|
+
if (!href) return;
|
|
25
|
+
const internal = pathnameIfSameOrigin(href);
|
|
26
|
+
if (internal != null && typeof navigate === "function") {
|
|
27
|
+
navigate(internal);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
window.location.assign(href);
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
navigateApp,
|
|
34
|
+
navigateToHref,
|
|
35
|
+
pathnameIfSameOrigin
|
|
36
|
+
};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { getPlatformURL } from "../constants/globalVariables.js";
|
|
2
|
+
import { getConfig } from "../runtime-config.js";
|
|
3
|
+
import { AppSurface } from "./app-routes.js";
|
|
4
|
+
import { getAnalyticsIngestUrl, getBackofficeAppUrl } from "../utils/app-urls-analytics-backoffice.js";
|
|
5
|
+
const DEFAULT_APP_PATHS = {
|
|
6
|
+
onboarding: "/signin",
|
|
7
|
+
registerEntry: "/signup",
|
|
8
|
+
dashboard: "/dashboard",
|
|
9
|
+
admin: "/admin"
|
|
10
|
+
};
|
|
11
|
+
const SURFACE_ROUTING_PATH_KEYS = Object.freeze([
|
|
12
|
+
"onboarding",
|
|
13
|
+
"dashboard",
|
|
14
|
+
"admin",
|
|
15
|
+
"registerEntry",
|
|
16
|
+
"investorRoot"
|
|
17
|
+
]);
|
|
18
|
+
function routingModeRaw() {
|
|
19
|
+
const v = getConfig("routingMode");
|
|
20
|
+
return typeof v === "string" ? v.trim().toLowerCase() : "";
|
|
21
|
+
}
|
|
22
|
+
function isPathBasedRouting() {
|
|
23
|
+
return routingModeRaw() === "path";
|
|
24
|
+
}
|
|
25
|
+
function isPathForSurface(pathKey) {
|
|
26
|
+
const per = getConfig("surfaceRoutingMode");
|
|
27
|
+
if (!per || typeof per !== "object" || Array.isArray(per)) return isPathBasedRouting();
|
|
28
|
+
if (!Object.prototype.hasOwnProperty.call(per, pathKey)) return isPathBasedRouting();
|
|
29
|
+
const v = per[pathKey];
|
|
30
|
+
if (v === "path") return true;
|
|
31
|
+
if (v === "subdomain") return false;
|
|
32
|
+
return isPathBasedRouting();
|
|
33
|
+
}
|
|
34
|
+
function mergedPaths() {
|
|
35
|
+
const o = getConfig("appUrlPaths");
|
|
36
|
+
if (o && typeof o === "object" && !Array.isArray(o)) {
|
|
37
|
+
return { ...DEFAULT_APP_PATHS, ...o };
|
|
38
|
+
}
|
|
39
|
+
return { ...DEFAULT_APP_PATHS };
|
|
40
|
+
}
|
|
41
|
+
function stripTrailingSlash(s) {
|
|
42
|
+
return String(s).replace(/\/+$/, "");
|
|
43
|
+
}
|
|
44
|
+
function normalizeLeading(path) {
|
|
45
|
+
if (path == null || path === "") return "";
|
|
46
|
+
const p = String(path);
|
|
47
|
+
return p.startsWith("/") ? p : `/${p}`;
|
|
48
|
+
}
|
|
49
|
+
function isNonEmptyString(v) {
|
|
50
|
+
return v != null && String(v).trim() !== "";
|
|
51
|
+
}
|
|
52
|
+
function trimmedWebsiteDomain() {
|
|
53
|
+
const d = getConfig("websiteDomain");
|
|
54
|
+
return isNonEmptyString(d) ? String(d).trim() : "";
|
|
55
|
+
}
|
|
56
|
+
function getAppPublicOrigin() {
|
|
57
|
+
const u = getPlatformURL();
|
|
58
|
+
if (!isNonEmptyString(u)) return "";
|
|
59
|
+
return stripTrailingSlash(String(u).trim());
|
|
60
|
+
}
|
|
61
|
+
function subdomainOrigin(sub) {
|
|
62
|
+
const domain = trimmedWebsiteDomain();
|
|
63
|
+
if (!domain) return "";
|
|
64
|
+
return `https://${sub}.${domain}`;
|
|
65
|
+
}
|
|
66
|
+
function surfaceBase(pathKey, legacySubdomain) {
|
|
67
|
+
if (isPathForSurface(pathKey)) {
|
|
68
|
+
const origin = getAppPublicOrigin();
|
|
69
|
+
if (!origin) return "";
|
|
70
|
+
const seg = stripTrailingSlash(normalizeLeading(mergedPaths()[pathKey]));
|
|
71
|
+
return `${origin}${seg}`;
|
|
72
|
+
}
|
|
73
|
+
return subdomainOrigin(legacySubdomain);
|
|
74
|
+
}
|
|
75
|
+
function onboardingBase() {
|
|
76
|
+
return surfaceBase("onboarding", "signup");
|
|
77
|
+
}
|
|
78
|
+
function dashboardBase() {
|
|
79
|
+
return surfaceBase("dashboard", "dashboard");
|
|
80
|
+
}
|
|
81
|
+
function adminBase() {
|
|
82
|
+
return surfaceBase("admin", "admin");
|
|
83
|
+
}
|
|
84
|
+
function investorRootBase() {
|
|
85
|
+
if (isPathForSurface("investorRoot")) return getAppPublicOrigin() || "";
|
|
86
|
+
const domain = trimmedWebsiteDomain();
|
|
87
|
+
if (!domain) return "";
|
|
88
|
+
return `https://${domain}`;
|
|
89
|
+
}
|
|
90
|
+
function registerEntryHref() {
|
|
91
|
+
if (isPathForSurface("registerEntry")) {
|
|
92
|
+
const origin = getAppPublicOrigin();
|
|
93
|
+
if (!origin) return "";
|
|
94
|
+
const seg = stripTrailingSlash(normalizeLeading(mergedPaths().registerEntry));
|
|
95
|
+
return `${origin}${seg}`;
|
|
96
|
+
}
|
|
97
|
+
const domain = trimmedWebsiteDomain();
|
|
98
|
+
if (!domain) return "";
|
|
99
|
+
return `https://${domain}/signup`;
|
|
100
|
+
}
|
|
101
|
+
function resolveAppHref(surface, relativePath = "") {
|
|
102
|
+
let base = "";
|
|
103
|
+
switch (surface) {
|
|
104
|
+
case AppSurface.ONBOARDING:
|
|
105
|
+
base = onboardingBase();
|
|
106
|
+
break;
|
|
107
|
+
case AppSurface.DASHBOARD:
|
|
108
|
+
base = dashboardBase();
|
|
109
|
+
break;
|
|
110
|
+
case AppSurface.ADMIN:
|
|
111
|
+
base = adminBase();
|
|
112
|
+
break;
|
|
113
|
+
case AppSurface.BACKOFFICE:
|
|
114
|
+
base = getBackofficeAppUrl("");
|
|
115
|
+
break;
|
|
116
|
+
case AppSurface.INVESTOR_ROOT:
|
|
117
|
+
base = investorRootBase();
|
|
118
|
+
break;
|
|
119
|
+
case AppSurface.REGISTER:
|
|
120
|
+
return registerEntryHref();
|
|
121
|
+
case AppSurface.ANALYTICS:
|
|
122
|
+
return getAnalyticsIngestUrl();
|
|
123
|
+
default:
|
|
124
|
+
return "";
|
|
125
|
+
}
|
|
126
|
+
const p = normalizeLeading(relativePath);
|
|
127
|
+
if (!base) return "";
|
|
128
|
+
const root = stripTrailingSlash(base);
|
|
129
|
+
return p ? `${root}${p}` : root;
|
|
130
|
+
}
|
|
131
|
+
function isAlreadyOnOnboardingFlow() {
|
|
132
|
+
if (typeof window === "undefined") return false;
|
|
133
|
+
const { href, hostname } = window.location;
|
|
134
|
+
if (isPathForSurface("onboarding")) {
|
|
135
|
+
const base = onboardingBase();
|
|
136
|
+
if (base && href.startsWith(base)) return true;
|
|
137
|
+
const seg = mergedPaths().onboarding.replace(/^\//, "");
|
|
138
|
+
return href.includes(`/${seg}/`) || href.includes(`/${seg}?`) || href.endsWith(`/${seg}`);
|
|
139
|
+
}
|
|
140
|
+
return Boolean(hostname?.startsWith("signup.") || href.includes("signup."));
|
|
141
|
+
}
|
|
142
|
+
export {
|
|
143
|
+
SURFACE_ROUTING_PATH_KEYS,
|
|
144
|
+
getAppPublicOrigin,
|
|
145
|
+
isAlreadyOnOnboardingFlow,
|
|
146
|
+
isPathBasedRouting,
|
|
147
|
+
isPathForSurface,
|
|
148
|
+
resolveAppHref
|
|
149
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SSR": false };
|
|
2
|
+
const _overrides = {};
|
|
3
|
+
const ENV_KEY_BY_CONFIG = {
|
|
4
|
+
apiUrl: "VITE_API_URL",
|
|
5
|
+
baseUrlPublic: "VITE_BASE_URL_PUBLIC",
|
|
6
|
+
cookieDomain: "VITE_COOKIE_DOMAIN",
|
|
7
|
+
websiteDomain: "VITE_WEBSITE_DOMAIN",
|
|
8
|
+
photoApiUrl: "VITE_PHOTO_API_URL",
|
|
9
|
+
/** `'path'` = single-origin URLs (`https://DOMAIN/dashboard`, …). Anything else = legacy subdomains (`dashboard.`, `signup.`, …). */
|
|
10
|
+
routingMode: "VITE_ROUTING_MODE"
|
|
11
|
+
};
|
|
12
|
+
const FIREBASE_ENV_VARS = [
|
|
13
|
+
"VITE_FIREBASE_API_KEY",
|
|
14
|
+
"VITE_FIREBASE_AUTH_DOMAIN",
|
|
15
|
+
"VITE_FIREBASE_PROJECT_ID",
|
|
16
|
+
"VITE_FIREBASE_STORAGE_BUCKET",
|
|
17
|
+
"VITE_FIREBASE_MESSAGING_SENDER_ID",
|
|
18
|
+
"VITE_FIREBASE_APP_ID"
|
|
19
|
+
];
|
|
20
|
+
let hasWarnedMissingEnv = false;
|
|
21
|
+
function env(name) {
|
|
22
|
+
try {
|
|
23
|
+
return __vite_import_meta_env__?.[name];
|
|
24
|
+
} catch {
|
|
25
|
+
return void 0;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function isProvided(value) {
|
|
29
|
+
if (value == null) return false;
|
|
30
|
+
if (typeof value === "string") return value.trim() !== "";
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
function getMissingRuntimeEnvVarNames() {
|
|
34
|
+
const missing = [];
|
|
35
|
+
for (const [configKey, envName] of Object.entries(ENV_KEY_BY_CONFIG)) {
|
|
36
|
+
const resolved = _overrides[configKey] ?? env(envName);
|
|
37
|
+
if (!isProvided(resolved)) missing.push(envName);
|
|
38
|
+
}
|
|
39
|
+
if (!_overrides.firebase) {
|
|
40
|
+
for (const envName of FIREBASE_ENV_VARS) {
|
|
41
|
+
if (!isProvided(env(envName))) missing.push(envName);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return missing;
|
|
45
|
+
}
|
|
46
|
+
function warnMissingRuntimeEnvOnce() {
|
|
47
|
+
if (hasWarnedMissingEnv || typeof console === "undefined" || !console.warn) return;
|
|
48
|
+
const missing = getMissingRuntimeEnvVarNames();
|
|
49
|
+
if (missing.length === 0) return;
|
|
50
|
+
hasWarnedMissingEnv = true;
|
|
51
|
+
console.warn(
|
|
52
|
+
"[@stokr/components-library] Missing runtime configuration: no value from configure() / AuthProvider and no Vite env fallback for:\n - " + missing.join("\n - ")
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
function assignRuntimeConfig(config = {}) {
|
|
56
|
+
Object.assign(_overrides, config);
|
|
57
|
+
warnMissingRuntimeEnvOnce();
|
|
58
|
+
}
|
|
59
|
+
function resetRuntimeConfig() {
|
|
60
|
+
for (const k of Object.keys(_overrides)) {
|
|
61
|
+
delete _overrides[k];
|
|
62
|
+
}
|
|
63
|
+
hasWarnedMissingEnv = false;
|
|
64
|
+
}
|
|
65
|
+
function buildFirebaseConfigFromEnv() {
|
|
66
|
+
return {
|
|
67
|
+
apiKey: env("VITE_FIREBASE_API_KEY"),
|
|
68
|
+
authDomain: env("VITE_FIREBASE_AUTH_DOMAIN"),
|
|
69
|
+
projectId: env("VITE_FIREBASE_PROJECT_ID"),
|
|
70
|
+
storageBucket: env("VITE_FIREBASE_STORAGE_BUCKET"),
|
|
71
|
+
messagingSenderId: env("VITE_FIREBASE_MESSAGING_SENDER_ID"),
|
|
72
|
+
appId: env("VITE_FIREBASE_APP_ID"),
|
|
73
|
+
measurementId: env("VITE_FIREBASE_MEASUREMENT_ID")
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function getConfig(key) {
|
|
77
|
+
if (key === "firebase") {
|
|
78
|
+
return _overrides.firebase ?? buildFirebaseConfigFromEnv();
|
|
79
|
+
}
|
|
80
|
+
if (key === "appUrlPaths") {
|
|
81
|
+
return _overrides.appUrlPaths;
|
|
82
|
+
}
|
|
83
|
+
const envName = ENV_KEY_BY_CONFIG[key];
|
|
84
|
+
if (envName) {
|
|
85
|
+
return _overrides[key] ?? env(envName);
|
|
86
|
+
}
|
|
87
|
+
return _overrides[key];
|
|
88
|
+
}
|
|
89
|
+
export {
|
|
90
|
+
assignRuntimeConfig,
|
|
91
|
+
getConfig,
|
|
92
|
+
getMissingRuntimeEnvVarNames,
|
|
93
|
+
resetRuntimeConfig
|
|
94
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const successAnimation = "data:application/octet-stream;base64,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";
|
|
2
|
+
export {
|
|
3
|
+
successAnimation as default
|
|
4
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const progressAnimation = "data:application/octet-stream;base64,UEsDBBQAAAAIAMhlkVv8EF7IaAAAAJkAAAANAAAAbWFuaWZlc3QuanNvbo2NOwqFQAxF95L6PT9gZeUGXIFYBCboyDiRJAoi7t1U1nb3cy73goNEI2dooYYfTJRJ0Fjcd4EtsVmk8lX/Rbu6aIrKWdxt/gbmuKL5iUI7XBCDbzbhSUjV6y3h2XMgTzPLignu8X4AUEsDBBQAAAAIAMhlkVt5yYml/QMAAGwbAAAYAAAAYW5pbWF0aW9ucy9wcm9ncmVzcy5qc29u7VnbbtpAEP0VtM8L8voOb616eY2Uqi8oDy6Y4GIwst2mUcS/98zu2qwNhAQCaWhEfGFnvJ45c3xmcR7YbzZgXi/ouYyzSc4GjsVZsmQDHDIchIeTOzbwLByn+riY46KrPLvN46LAdePxWF4QFUVcFmwwvOEsje7jnM4fanOywFFwVt6zgatnKZPRrIMpCtwaphmueGAZ7SJ5zQzDdMvkD07EijP4GbbKYsGCaA3L0HY9bnsutxAM+diICXs4wsd0tDg+2gkhaCcZyNqJgtCbdvW1K02IgOFXTKNlrFKmFNltjsSSUmFQZ87ilPJtTh/2PI6tCnUzm3WIDowSus9pmiyLuHMVldOOwJzzBUY/fPr4ufM9HpVZ3rmmgDrdjvaEyxRxTKK0iFdcB1mUGB61kuXyY9xwR0VcmEAOw9RXBg+GFLMSnj/lYQ6wUPQfiLxi0HWZZ7N4e+hf82g5TUYIXnltjb0kgFtAuUCy64qebYK5WfGq3jsrbSS/lXL+blQCmhQDmxcRXkUzGG0hwCQo3/JoUUyyfM5WCKFRaBvZLpCug4JpRms4NXW3oJj9Wm6FzuSmfC4xi+LDlAxqPvU01qHCE/4KPblHgICgNQJBGQ497qIQGEQxPJxgHGzQIdRlUTqyl767s3hh8gogarKXJOO87O1aIC7vilq03jx5VREJpd3UxbcDqbtHVoUTcmxvX1bbzDy/rpKqXgwpqxo/TkuMPoOW5XyDf5UyI5JYG0hVlejSAIxDqxc6DgLDHPq8wkFZhR/UVjqHFdwPPHmzoYXvCIANQhuNTw4R1JRpVaomplVuMCBThCNRrKFK5pL4xXb2fEnSMs5BHnJsoED3W68aHSocHgH6LgGlIBvLQCBtLgPnUbLojJJ8lBIjT7AY9C1u4yE6cjG4o3rc2JuVbIxvVBXj9d6scGNcVRvRV6WtV6EE6bnDCHsV74RAFLS9TiRVGH2L468Kov0YrLE6xZrd9kOO7RWay8FSo1EVLeyddZU0vppvNawGAZ+rLXjUjtSWx3qq1evbfVeIwHcDywdHAlt4fujbgesJoowT4Edg3xJ9/9DWC406X+udENFeIkdKpMrxGCY8sdEQOkq1TThQ03QfGOTz9PUxJKexnrusdQjYdPAvu2YHFh79BN7ThLHAMZswtHCc3e1pwy+1gAkxUU0ixax+UDFrzatntnnP6dl460P7va2+6/q8a4f/YLs3sGm0+wZG9GZObpfX304igq1H+VyC5dKrva5jNV7uXZZqHfM+SqsWMZ5kS9P7MdGCWu0ULfmK7LSyhUesJVvCqjvi/65ba3DaumWA9C5c78J1OcIF5sr1luY3CIqDUi64zKN8pv4NdrP6C1BLAQIUABQAAAAIAMhlkVv8EF7IaAAAAJkAAAANAAAAAAAAAAAAAAAAAAAAAABtYW5pZmVzdC5qc29uUEsBAhQAFAAAAAgAyGWRW3nJiaX9AwAAbBsAABgAAAAAAAAAAAAAAAAAkwAAAGFuaW1hdGlvbnMvcHJvZ3Jlc3MuanNvblBLBQYAAAAAAgACAIEAAADGBAAAAAA=";
|
|
2
|
+
export {
|
|
3
|
+
progressAnimation as default
|
|
4
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const uploadAnimation = "data:application/octet-stream;base64,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";
|
|
2
|
+
export {
|
|
3
|
+
uploadAnimation as default
|
|
4
|
+
};
|