@stokr/components-library 2.3.78 → 2.3.80

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 (97) hide show
  1. package/dist/api/authenticationApi.js +13 -0
  2. package/dist/auth/index.js +34 -0
  3. package/dist/components/LearnMorePage/LearnMore.propTypes.js +20 -0
  4. package/dist/components/Modal/PaymentModal.js +15 -10
  5. package/dist/components/StatusDot/StatusDot.js +68 -0
  6. package/dist/components/StatusDot/StatusDot.styles.js +45 -0
  7. package/dist/config.js +33 -0
  8. package/dist/manifest.json +2 -2
  9. package/dist/routing/RouterWrapper.js +17 -0
  10. package/dist/routing/navigate-app.js +24 -0
  11. package/dist/runtime-config.js +98 -0
  12. package/dist/static/animations/checked.lottie.js +4 -0
  13. package/dist/static/animations/progress.lottie.js +4 -0
  14. package/dist/static/animations/upload.lottie +0 -0
  15. package/dist/static/animations/upload.lottie.js +4 -0
  16. package/dist/static/fonts/Ionicons/Ionicons.ttf.js +4 -0
  17. package/dist/static/fonts/Ionicons/Ionicons.woff.js +4 -0
  18. package/dist/static/fonts/Ionicons/Ionicons.woff2.js +4 -0
  19. package/dist/static/fonts/Ionicons/ionicons.min.css.js +4 -0
  20. package/dist/static/fonts/OpenSans/OpenSans-Bold.ttf.js +4 -0
  21. package/dist/static/fonts/OpenSans/OpenSans-Bold.woff.js +4 -0
  22. package/dist/static/fonts/OpenSans/OpenSans-Bold.woff2.js +4 -0
  23. package/dist/static/fonts/OpenSans/OpenSans-ExtraBold.ttf.js +4 -0
  24. package/dist/static/fonts/OpenSans/OpenSans-ExtraBold.woff.js +4 -0
  25. package/dist/static/fonts/OpenSans/OpenSans-ExtraBold.woff2.js +4 -0
  26. package/dist/static/fonts/OpenSans/OpenSans-Light.ttf.js +4 -0
  27. package/dist/static/fonts/OpenSans/OpenSans-Light.woff.js +4 -0
  28. package/dist/static/fonts/OpenSans/OpenSans-Light.woff2.js +4 -0
  29. package/dist/static/fonts/OpenSans/OpenSans-Regular.ttf.js +4 -0
  30. package/dist/static/fonts/OpenSans/OpenSans-Regular.woff.js +4 -0
  31. package/dist/static/fonts/OpenSans/OpenSans-Regular.woff2.js +4 -0
  32. package/dist/static/fonts/OpenSans/OpenSans-SemiBold.ttf.js +4 -0
  33. package/dist/static/fonts/OpenSans/OpenSans-SemiBold.woff.js +4 -0
  34. package/dist/static/fonts/OpenSans/OpenSans-SemiBold.woff2.js +4 -0
  35. package/dist/static/fonts/icomoon/icomoon.eot.js +4 -0
  36. package/dist/static/fonts/icomoon/icomoon.svg.js +4 -0
  37. package/dist/static/fonts/icomoon/icomoon.ttf.js +4 -0
  38. package/dist/static/fonts/icomoon/icomoon.woff.js +4 -0
  39. package/dist/static/images/add-folder-icon.svg.js +5 -0
  40. package/dist/static/images/address-refreshing.gif.js +4 -0
  41. package/dist/static/images/arrow-down-black.svg.js +4 -0
  42. package/dist/static/images/avatar-placeholder.png.js +4 -0
  43. package/dist/static/images/background3.png.js +4 -0
  44. package/dist/static/images/check-icon.svg.js +5 -0
  45. package/dist/static/images/checkmark-circle-icon.svg.js +5 -0
  46. package/dist/static/images/close-circle-icon.svg.js +5 -0
  47. package/dist/static/images/copy_icon.svg.js +5 -0
  48. package/dist/static/images/cross-icon.svg.js +5 -0
  49. package/dist/static/images/currency/bitcoin-logo.png +0 -0
  50. package/dist/static/images/currency/bitcoin-logo.png.js +4 -0
  51. package/dist/static/images/currency/bmn2-logo.png +0 -0
  52. package/dist/static/images/currency/bmn2-logo.png.js +4 -0
  53. package/dist/static/images/currency/eth.svg +10 -0
  54. package/dist/static/images/currency/eth_logo.svg +9 -0
  55. package/dist/static/images/currency/eth_logo.svg.js +4 -0
  56. package/dist/static/images/currency/eur.svg +3 -0
  57. package/dist/static/images/currency/usdc-logo.svg +5 -0
  58. package/dist/static/images/currency/usdc-logo.svg.js +4 -0
  59. package/dist/static/images/currency/usdq-logo.png +0 -0
  60. package/dist/static/images/currency/usdq-logo.png.js +4 -0
  61. package/dist/static/images/currency/usdt-logo.png +0 -0
  62. package/dist/static/images/currency/usdt-logo.png.js +4 -0
  63. package/dist/static/images/early-adopter.png.js +4 -0
  64. package/dist/static/images/eth_logo.svg +8 -8
  65. package/dist/static/images/external-link-icon.svg.js +4 -0
  66. package/dist/static/images/filter-icon.svg.js +5 -0
  67. package/dist/static/images/google_auth.png.js +4 -0
  68. package/dist/static/images/graduation.png.js +4 -0
  69. package/dist/static/images/mangopay.svg.js +4 -0
  70. package/dist/static/images/numbers/number_eight.svg.js +5 -0
  71. package/dist/static/images/numbers/number_five.svg.js +5 -0
  72. package/dist/static/images/numbers/number_four.svg.js +5 -0
  73. package/dist/static/images/numbers/number_nine.svg.js +5 -0
  74. package/dist/static/images/numbers/number_one.svg.js +5 -0
  75. package/dist/static/images/numbers/number_seven.svg.js +5 -0
  76. package/dist/static/images/numbers/number_six.svg.js +5 -0
  77. package/dist/static/images/numbers/number_three.svg.js +5 -0
  78. package/dist/static/images/numbers/number_two.svg.js +5 -0
  79. package/dist/static/images/numbers/number_zero.svg.js +5 -0
  80. package/dist/static/images/process-waiting.gif.js +4 -0
  81. package/dist/static/images/search-icon.svg.js +5 -0
  82. package/dist/static/images/social/Facebook_Logo.png.js +4 -0
  83. package/dist/static/images/social/LI-In-Bug.png.js +4 -0
  84. package/dist/static/images/social/Telegram-Logo.png.js +4 -0
  85. package/dist/static/images/social/X-logo-black.png.js +4 -0
  86. package/dist/static/images/social/youtube_social_circle_red.png.js +4 -0
  87. package/dist/static/images/transfer-icon.svg.js +5 -0
  88. package/dist/static/images/warning-filled.svg.js +5 -0
  89. package/dist/styles/ioniconsStyles.js +31 -0
  90. package/dist/utils/app-urls-analytics-backoffice.js +30 -0
  91. package/dist/utils/app-urls.js +10 -0
  92. package/dist/utils/formatCurrencyValue.js +4 -2
  93. package/dist/utils/transition.js +101 -0
  94. package/dist/utils/user-identity.js +10 -0
  95. package/package.json +1 -1
  96. package/dist/index.css +0 -1
  97. package/dist/utils/analytics.js +0 -44
@@ -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
+ };
@@ -17,7 +17,7 @@ var _formatCurrencyValue = require("../../utils/formatCurrencyValue");
17
17
  var _theme = _interopRequireDefault(require("../../styles/theme"));
18
18
  var _Icon = _interopRequireWildcard(require("../Icon/Icon.style"));
19
19
  var _styledComponents = _interopRequireDefault(require("styled-components"));
20
- const _excluded = ["data", "user", "isModalOpen", "onModalClose", "onCTAClick", "isRedemption", "noCTA", "CTAText", "additionalInfoRight", "withTimer", "error", "secondsRemaining", "modalTitle", "txTextInRed", "sendTokenTextRight", "numberOfSecuritiesText", "formatAmountInLink"];
20
+ const _excluded = ["data", "user", "isModalOpen", "onModalClose", "onCTAClick", "isRedemption", "noCTA", "CTAText", "additionalInfoRight", "withTimer", "error", "secondsRemaining", "modalTitle", "txTextInRed", "sendTokenTextRight", "numberOfSecuritiesText", "formatAmountInLink", "transactionCostMessage", "paymentLink", "showKYCWarningBox"];
21
21
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
22
  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); }
23
23
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
@@ -48,7 +48,10 @@ const PaymentModal = _ref => {
48
48
  txTextInRed = true,
49
49
  sendTokenTextRight = /*#__PURE__*/_react.default.createElement("p", null, "Send your ", data === null || data === void 0 ? void 0 : data.tokenSymbolToSend, " to the treasury wallet below."),
50
50
  numberOfSecuritiesText = 'Redeem securities',
51
- formatAmountInLink = true
51
+ formatAmountInLink = true,
52
+ transactionCostMessage,
53
+ paymentLink: paymentLinkProp,
54
+ showKYCWarningBox = true
52
55
  } = _ref,
53
56
  props = _objectWithoutProperties(_ref, _excluded);
54
57
  const {
@@ -66,7 +69,11 @@ const PaymentModal = _ref => {
66
69
  //https://github.com/ElementsProject/elements/issues/805
67
70
  newTokenAmount = (tokenAmount * Math.pow(10, tokenDecimals - 8)).toFixed(8);
68
71
  }
69
- var paymentlink = "liquidnetwork:".concat(projectData === null || projectData === void 0 ? void 0 : projectData.companyWallet, "?amount=").concat(newTokenAmount, "&assetid=").concat(projectData === null || projectData === void 0 ? void 0 : projectData.secondaryAssetId);
72
+ const defaultPaymentLink = "liquidnetwork:".concat(projectData === null || projectData === void 0 ? void 0 : projectData.companyWallet, "?amount=").concat(newTokenAmount, "&assetid=").concat(projectData === null || projectData === void 0 ? void 0 : projectData.secondaryAssetId);
73
+ const resolvedPaymentLink = paymentLinkProp !== null && paymentLinkProp !== void 0 ? paymentLinkProp : defaultPaymentLink;
74
+ const txCostParagraphStyle = {
75
+ color: txTextInRed ? _theme.default.cWarning : 'inherit'
76
+ };
70
77
  const isKYCVerified = (user === null || user === void 0 ? void 0 : user.kyc_status) === 'Accepted';
71
78
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Modal.Modal, {
72
79
  isOpen: isModalOpen,
@@ -99,11 +106,9 @@ const PaymentModal = _ref => {
99
106
  onClick: onCTAClick
100
107
  }, CTAText))), /*#__PURE__*/_react.default.createElement(_Grid.Column, {
101
108
  part: 8
102
- }, error ? error : /*#__PURE__*/_react.default.createElement(_Text.default, null, sendTokenTextRight, /*#__PURE__*/_react.default.createElement("p", {
103
- style: {
104
- color: txTextInRed ? _theme.default.cWarning : 'inherit'
105
- }
106
- }, "We have transfered 0.00002 LBTC to cover your transaction costs."), isKYCVerified ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CryptoAddress.default
109
+ }, error ? error : /*#__PURE__*/_react.default.createElement(_Text.default, null, sendTokenTextRight, transactionCostMessage != null && transactionCostMessage !== false && (/*#__PURE__*/_react.default.isValidElement(transactionCostMessage) ? transactionCostMessage : /*#__PURE__*/_react.default.createElement("p", {
110
+ style: txCostParagraphStyle
111
+ }, transactionCostMessage)), isKYCVerified || !showKYCWarningBox ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_CryptoAddress.default
107
112
  //noHead
108
113
  , {
109
114
  title: 'Treasury wallet:',
@@ -117,7 +122,7 @@ const PaymentModal = _ref => {
117
122
  noPaddingHorizontal: true,
118
123
  noPaddingBottom: true
119
124
  }, /*#__PURE__*/_react.default.createElement(_qrcode.QRCodeSVG, {
120
- value: paymentlink,
125
+ value: resolvedPaymentLink,
121
126
  size: 150
122
127
  }))) : /*#__PURE__*/_react.default.createElement("div", {
123
128
  style: {
@@ -140,7 +145,7 @@ const PaymentModal = _ref => {
140
145
  noPaddingHorizontal: true,
141
146
  noPaddingBottom: true
142
147
  }, /*#__PURE__*/_react.default.createElement(_qrcode.QRCodeSVG, {
143
- value: paymentlink,
148
+ value: resolvedPaymentLink,
144
149
  size: 150
145
150
  })))), additionalInfoRight && additionalInfoRight)))))));
146
151
  };
@@ -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,33 @@
1
+ import { isValidFirebaseConfig, 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 (Object.prototype.hasOwnProperty.call(config, "firebase")) {
16
+ const fb = config.firebase;
17
+ if (fb != null && isValidFirebaseConfig(fb)) {
18
+ _lastFirebaseConfig = fb;
19
+ initFirebase(fb);
20
+ } else {
21
+ _lastFirebaseConfig = null;
22
+ }
23
+ }
24
+ }
25
+ function getLastFirebaseConfig() {
26
+ return _lastFirebaseConfig;
27
+ }
28
+ export {
29
+ configure,
30
+ getConfig,
31
+ getLastFirebaseConfig,
32
+ resetRuntimeConfig
33
+ };
@@ -1,6 +1,6 @@
1
1
  {
2
- "short_name": "React App",
3
- "name": "Create React App Sample",
2
+ "short_name": "Vite React App",
3
+ "name": "Vite React App",
4
4
  "icons": [
5
5
  {
6
6
  "src": "favicon.ico",
@@ -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,24 @@
1
+ function pathnameIfSameOrigin(absoluteHref) {
2
+ if (typeof window === "undefined" || !absoluteHref) return null;
3
+ try {
4
+ const u = new URL(absoluteHref, window.location.href);
5
+ if (u.origin === window.location.origin) {
6
+ return `${u.pathname}${u.search}${u.hash}`;
7
+ }
8
+ } catch {
9
+ }
10
+ return null;
11
+ }
12
+ function navigateToHref(navigate, href) {
13
+ if (!href) return;
14
+ const internal = pathnameIfSameOrigin(href);
15
+ if (internal != null && typeof navigate === "function") {
16
+ navigate(internal);
17
+ return;
18
+ }
19
+ window.location.assign(href);
20
+ }
21
+ export {
22
+ navigateToHref,
23
+ pathnameIfSameOrigin
24
+ };
@@ -0,0 +1,98 @@
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
+ onboardingUrl: "VITE_ONBOARDING_URL",
10
+ dashboardUrl: "VITE_DASHBOARD_URL",
11
+ adminUrl: "VITE_ADMIN_URL",
12
+ registerUrl: "VITE_REGISTER_URL"
13
+ };
14
+ const FIREBASE_ENV_VARS = [
15
+ "VITE_FIREBASE_API_KEY",
16
+ "VITE_FIREBASE_AUTH_DOMAIN",
17
+ "VITE_FIREBASE_PROJECT_ID",
18
+ "VITE_FIREBASE_STORAGE_BUCKET",
19
+ "VITE_FIREBASE_MESSAGING_SENDER_ID",
20
+ "VITE_FIREBASE_APP_ID"
21
+ ];
22
+ let hasWarnedMissingEnv = false;
23
+ function env(name) {
24
+ try {
25
+ return __vite_import_meta_env__?.[name];
26
+ } catch {
27
+ return void 0;
28
+ }
29
+ }
30
+ function isProvided(value) {
31
+ if (value == null) return false;
32
+ if (typeof value === "string") return value.trim() !== "";
33
+ return true;
34
+ }
35
+ function getMissingRuntimeEnvVarNames() {
36
+ const missing = [];
37
+ for (const [configKey, envName] of Object.entries(ENV_KEY_BY_CONFIG)) {
38
+ const resolved = _overrides[configKey] ?? env(envName);
39
+ if (!isProvided(resolved)) missing.push(envName);
40
+ }
41
+ if (!_overrides.firebase) {
42
+ for (const envName of FIREBASE_ENV_VARS) {
43
+ if (!isProvided(env(envName))) missing.push(envName);
44
+ }
45
+ }
46
+ return missing;
47
+ }
48
+ function warnMissingRuntimeEnvOnce() {
49
+ if (hasWarnedMissingEnv || typeof console === "undefined" || !console.warn) return;
50
+ const missing = getMissingRuntimeEnvVarNames();
51
+ if (missing.length === 0) return;
52
+ hasWarnedMissingEnv = true;
53
+ console.warn(
54
+ "[@stokr/components-library] Missing runtime configuration: no value from configure() / AuthProvider and no Vite env fallback for:\n - " + missing.join("\n - ")
55
+ );
56
+ }
57
+ function assignRuntimeConfig(config = {}) {
58
+ Object.assign(_overrides, config);
59
+ warnMissingRuntimeEnvOnce();
60
+ }
61
+ function resetRuntimeConfig() {
62
+ for (const k of Object.keys(_overrides)) {
63
+ delete _overrides[k];
64
+ }
65
+ hasWarnedMissingEnv = false;
66
+ }
67
+ function buildFirebaseConfigFromEnv() {
68
+ return {
69
+ apiKey: env("VITE_FIREBASE_API_KEY"),
70
+ authDomain: env("VITE_FIREBASE_AUTH_DOMAIN"),
71
+ projectId: env("VITE_FIREBASE_PROJECT_ID"),
72
+ storageBucket: env("VITE_FIREBASE_STORAGE_BUCKET"),
73
+ messagingSenderId: env("VITE_FIREBASE_MESSAGING_SENDER_ID"),
74
+ appId: env("VITE_FIREBASE_APP_ID"),
75
+ measurementId: env("VITE_FIREBASE_MEASUREMENT_ID")
76
+ };
77
+ }
78
+ function getConfig(key) {
79
+ if (key === "firebase") {
80
+ return _overrides.firebase ?? buildFirebaseConfigFromEnv();
81
+ }
82
+ const envName = ENV_KEY_BY_CONFIG[key];
83
+ if (envName) {
84
+ return _overrides[key] ?? env(envName);
85
+ }
86
+ return _overrides[key];
87
+ }
88
+ function getPlatformURL() {
89
+ const domain = getConfig("websiteDomain");
90
+ return domain ? `https://${domain}` : "";
91
+ }
92
+ export {
93
+ assignRuntimeConfig,
94
+ getConfig,
95
+ getMissingRuntimeEnvVarNames,
96
+ getPlatformURL,
97
+ resetRuntimeConfig
98
+ };
@@ -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
+ };
@@ -0,0 +1,4 @@
1
+ const uploadAnimation = "data:application/octet-stream;base64,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";
2
+ export {
3
+ uploadAnimation as default
4
+ };