@stokr/components-library 3.0.53-alpha.1 → 3.0.54
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/README.md +166 -166
- package/dist/components/Footer/FooterLayout.js +3 -3
- package/dist/index.js +5 -3
- package/dist/manifest.json +25 -25
- package/dist/robots.txt +3 -3
- package/dist/runtime-config.js +1 -1
- package/dist/static/fonts/icomoon/icomoon.eot +0 -0
- package/dist/static/fonts/icomoon/icomoon.svg +52 -52
- package/dist/static/fonts/icomoon/icomoon.ttf +0 -0
- package/dist/static/fonts/icomoon/icomoon.woff +0 -0
- package/dist/static/fonts/icomoon/selection.json +0 -0
- package/dist/static/fonts/icomoon/style.css +0 -0
- package/dist/static/images/Glassess.svg +5 -5
- package/dist/static/images/add-folder-icon.svg +4 -4
- package/dist/static/images/arrow-down-black.svg +21 -21
- package/dist/static/images/check-icon.svg +3 -3
- package/dist/static/images/checkmark-circle-icon.svg +3 -3
- package/dist/static/images/close-circle-icon.svg +2 -2
- package/dist/static/images/copy_icon.svg +4 -4
- package/dist/static/images/cross-icon.svg +3 -3
- package/dist/static/images/currency/eth.svg +10 -10
- package/dist/static/images/currency/eth_logo.svg +8 -8
- package/dist/static/images/currency/eur.svg +3 -3
- package/dist/static/images/currency/usdc-logo.svg +5 -5
- package/dist/static/images/doc-icon.svg +3 -3
- package/dist/static/images/download_icon.svg +3 -3
- package/dist/static/images/external-link-icon.svg +3 -3
- package/dist/static/images/filter-icon.svg +6 -6
- package/dist/static/images/globe.svg +15 -15
- package/dist/static/images/mangopay.svg +20 -20
- package/dist/static/images/numbers/number_eight.svg +3 -3
- package/dist/static/images/numbers/number_five.svg +4 -4
- package/dist/static/images/numbers/number_four.svg +3 -3
- package/dist/static/images/numbers/number_nine.svg +4 -4
- package/dist/static/images/numbers/number_one.svg +4 -4
- package/dist/static/images/numbers/number_seven.svg +4 -4
- package/dist/static/images/numbers/number_six.svg +4 -4
- package/dist/static/images/numbers/number_three.svg +3 -3
- package/dist/static/images/numbers/number_two.svg +4 -4
- package/dist/static/images/numbers/number_zero.svg +3 -3
- package/dist/static/images/plus-icon.svg +4 -4
- package/dist/static/images/prof-inv.svg +3 -3
- package/dist/static/images/search-icon.svg +3 -3
- package/dist/static/images/transfer-icon.svg +10 -10
- package/dist/static/images/trash.svg +16 -16
- package/dist/static/images/upload.svg +5 -5
- package/dist/static/images/warning-filled.svg +3 -3
- package/dist/utils/formatCurrencyValue.js +35 -25
- package/package.json +152 -152
package/README.md
CHANGED
|
@@ -1,166 +1,166 @@
|
|
|
1
|
-
# @stokr/components-library
|
|
2
|
-
|
|
3
|
-
React UI library for STOKR apps: modals, forms, navigation, tables, auth context, styles.
|
|
4
|
-
|
|
5
|
-
## Contents
|
|
6
|
-
|
|
7
|
-
- [Quick start](#quick-start) — install, router, `AuthProvider`, styles
|
|
8
|
-
- [Configuration reference](#runtime-config) — `config` keys & helpers
|
|
9
|
-
- [AuthProvider & AuthContext](#authprovider-optional-props)
|
|
10
|
-
- [Troubleshooting](#troubleshooting)
|
|
11
|
-
- [Development](#development--publishing)
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Quick start
|
|
16
|
-
|
|
17
|
-
**Install**
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm install @stokr/components-library
|
|
21
|
-
npm install react react-dom styled-components react-router-dom
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Peers: React 18+/19+, styled-components 6.x, react-router-dom 6.x when you use routing-driven components (`HeaderHo`, `MainMenu`, …).
|
|
25
|
-
|
|
26
|
-
**1. Router** — Navigation helpers need a React Router:
|
|
27
|
-
|
|
28
|
-
```jsx
|
|
29
|
-
import { BrowserRouter } from 'react-router-dom'
|
|
30
|
-
import { RouterWrapper } from '@stokr/components-library'
|
|
31
|
-
|
|
32
|
-
// Normal app
|
|
33
|
-
root.render(
|
|
34
|
-
<BrowserRouter>
|
|
35
|
-
<App />
|
|
36
|
-
</BrowserRouter>,
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
// Outside a Router: RouterWrapper wraps children in BrowserRouter once.
|
|
40
|
-
// Inside an existing Router: it renders children only (no nested BrowserRouter).
|
|
41
|
-
root.render(
|
|
42
|
-
<RouterWrapper>
|
|
43
|
-
<App />
|
|
44
|
-
</RouterWrapper>,
|
|
45
|
-
)
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**2. Auth & runtime config (required when consuming via npm)** — Vite freezes `import.meta.env` inside pre-built deps, so push your `.env` at runtime via `config`:
|
|
49
|
-
|
|
50
|
-
```jsx
|
|
51
|
-
import { AuthProvider } from '@stokr/components-library'
|
|
52
|
-
|
|
53
|
-
export default function App() {
|
|
54
|
-
return (
|
|
55
|
-
<AuthProvider
|
|
56
|
-
config={{
|
|
57
|
-
apiUrl: import.meta.env.VITE_API_URL,
|
|
58
|
-
baseUrlPublic: import.meta.env.VITE_BASE_URL_PUBLIC,
|
|
59
|
-
cookieDomain: import.meta.env.VITE_COOKIE_DOMAIN,
|
|
60
|
-
websiteDomain: import.meta.env.VITE_WEBSITE_DOMAIN,
|
|
61
|
-
photoApiUrl: import.meta.env.VITE_PHOTO_API_URL,
|
|
62
|
-
onboardingUrl: import.meta.env.VITE_ONBOARDING_URL,
|
|
63
|
-
dashboardUrl: import.meta.env.VITE_DASHBOARD_URL,
|
|
64
|
-
adminUrl: import.meta.env.VITE_ADMIN_URL,
|
|
65
|
-
registerUrl: import.meta.env.VITE_REGISTER_URL,
|
|
66
|
-
firebase: {
|
|
67
|
-
apiKey: import.meta.env.VITE_FIREBASE_API_KEY,
|
|
68
|
-
authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN,
|
|
69
|
-
projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID,
|
|
70
|
-
storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET,
|
|
71
|
-
messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID,
|
|
72
|
-
appId: import.meta.env.VITE_FIREBASE_APP_ID,
|
|
73
|
-
measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID,
|
|
74
|
-
},
|
|
75
|
-
}}>
|
|
76
|
-
{/* app */}
|
|
77
|
-
</AuthProvider>
|
|
78
|
-
)
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**3. Earlier config** (e.g. analytics before mount): `import { configure } from '@stokr/components-library'` with the same shape as `config`.
|
|
83
|
-
|
|
84
|
-
**4. Icons / fonts** — Optional: `<IoniconsStyles />` at root, or rely on lazy injection when a component uses icons; for Layout / Open Sans: `import '@stokr/components-library/styles.css'`.
|
|
85
|
-
|
|
86
|
-
**5. Imports** — `import { ConfirmModal, Button, … } from '@stokr/components-library'`.
|
|
87
|
-
|
|
88
|
-
Full URL env example:
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
VITE_WEBSITE_DOMAIN=example.com
|
|
92
|
-
VITE_ONBOARDING_URL=https://signup.example.com
|
|
93
|
-
VITE_DASHBOARD_URL=https://dashboard.example.com
|
|
94
|
-
VITE_ADMIN_URL=https://admin.example.com
|
|
95
|
-
VITE_REGISTER_URL=https://example.com/signup
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## Configuration reference {#runtime-config}
|
|
101
|
-
|
|
102
|
-
| `config` key | Typical `VITE_*` | Role |
|
|
103
|
-
| ----------------- | -------------------------- | ----------------------------------------- |
|
|
104
|
-
| `apiUrl` | `VITE_API_URL` | Authenticated REST base |
|
|
105
|
-
| `baseUrlPublic` | `VITE_BASE_URL_PUBLIC` | Public API base |
|
|
106
|
-
| `cookieDomain` | `VITE_COOKIE_DOMAIN` | Auth cookie `domain` attribute |
|
|
107
|
-
| `websiteDomain` | `VITE_WEBSITE_DOMAIN` | Bare host → links / `getPlatformURL()` |
|
|
108
|
-
| `photoApiUrl` | `VITE_PHOTO_API_URL` | Avatars / media |
|
|
109
|
-
| `onboardingUrl` | `VITE_ONBOARDING_URL` | Full signup/sign-in app URL |
|
|
110
|
-
| `dashboardUrl` | `VITE_DASHBOARD_URL` | Investor dashboard URL |
|
|
111
|
-
| `adminUrl` | `VITE_ADMIN_URL` | Venture / admin dashboard URL |
|
|
112
|
-
| `registerUrl` | `VITE_REGISTER_URL` | Public registration entry |
|
|
113
|
-
| `firebase` | `VITE_FIREBASE_*` | Firebase client config |
|
|
114
|
-
|
|
115
|
-
**Helpers:** `getConfig('…')` for any key above; `getPlatformURL()` → `https://{websiteDomain}`; `getAnalyticsIngestUrl()`, `getBackofficeAppUrl(path)`; **`getFooterGroups()`** replaces static footer URL lists.
|
|
116
|
-
|
|
117
|
-
**Auth-only HTTP:** `authenticationApi.post(segment, body)` for `auth/*`; default axios stays the main API client after login.
|
|
118
|
-
|
|
119
|
-
Missing overrides may trigger a **one-time** warning listing unresolved `VITE_*` expectations.
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## AuthProvider & AuthContext {#authprovider-optional-props}
|
|
124
|
-
|
|
125
|
-
`AuthProvider` is wrapped with **`withRouter`** — mount it inside a **`Router`** so redirects work.
|
|
126
|
-
|
|
127
|
-
### Optional provider props
|
|
128
|
-
|
|
129
|
-
- **`inactivityTimeMs`** — Idle timeout before auto-logout + session modal (default 5 min).
|
|
130
|
-
- **`accessTokenExpiryMs`** — Cookie TTL when **`Auth.setAccessToken`** runs (default **`DEFAULT_TOKEN_EXPIRY_MS`** = 1 h); not extended by **`getUser`** alone.
|
|
131
|
-
- **`hideInactivityModal`** — Suppress built-in session modal.
|
|
132
|
-
- **`customValidateGetUser(user)`** — Hook after **`user/get`** succeeds (see `src/context/AuthContext.js`).
|
|
133
|
-
|
|
134
|
-
### AuthContext consumer {#authcontext-usecontext}
|
|
135
|
-
|
|
136
|
-
`import { AuthContext } from '…'` then `useContext(AuthContext)`.
|
|
137
|
-
|
|
138
|
-
- **Invalid Firebase guard:** value is **`{ user: null, isFetchingUser: false }`** only (no methods).
|
|
139
|
-
- **State (grouped):** `user` / `firebaseUser`, `isFetchingUser`, `avatar`; MFA (`waitingFor2fa`, `userMfaEnrollment`, `firebaseError`); verify-email (`verifyEmailError`, `isVerifyingEmail`); session UX (`loggedOutDueToInactivity`, `loggedOutDueToCookieExpiry`, `sessionExpiryPendingReason`).
|
|
140
|
-
- **Actions (grouped):** `userRef`, `loginUser`, `logoutUser`, `getUser`, `setUser`, `updateUser`, `refreshIdToken`; `checkUserIsValid`, `checkTokenIsValid`; `uploadPhoto`, `deletePhoto`, `checkUserPhoto`; MFA enroll / verify / unenroll + `reset2faFlow`; subscription/onboarding helpers; password & email (`handleResetPassword`, `handleVerifyEmail`, `requestUpdateEmail`, …); wallets / PoA (`uploaProofOfAddress` keeps the source spelling); **`dismissSessionExpiryModal`**.
|
|
141
|
-
|
|
142
|
-
Use **`AuthConsumer`** for the render-prop pattern.
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Troubleshooting {#troubleshooting}
|
|
147
|
-
|
|
148
|
-
**`useNavigate` / Router**
|
|
149
|
-
|
|
150
|
-
Add `BrowserRouter` (or **`RouterWrapper`** from this package where the shell has no router). Install `react-router-dom`.
|
|
151
|
-
|
|
152
|
-
**Invalid hook call / duplicated React**
|
|
153
|
-
|
|
154
|
-
Dedupe peers in Vite: `resolve: { dedupe: ['react', 'react-dom', 'styled-components'] }`.
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Development {#development--publishing}
|
|
159
|
-
|
|
160
|
-
| Command | Meaning |
|
|
161
|
-
| -------------------- | -------------------------------- |
|
|
162
|
-
| `npm run storybook` | Local docs / stories |
|
|
163
|
-
| `npm run build:dist` | Library build + static copy |
|
|
164
|
-
| `npm run pub` | Build then publish (`npm login`) |
|
|
165
|
-
|
|
166
|
-
Release: changelog entry → `npm version` → `npm run pub`. Details: [CHANGELOG.md](CHANGELOG.md).
|
|
1
|
+
# @stokr/components-library
|
|
2
|
+
|
|
3
|
+
React UI library for STOKR apps: modals, forms, navigation, tables, auth context, styles.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [Quick start](#quick-start) — install, router, `AuthProvider`, styles
|
|
8
|
+
- [Configuration reference](#runtime-config) — `config` keys & helpers
|
|
9
|
+
- [AuthProvider & AuthContext](#authprovider-optional-props)
|
|
10
|
+
- [Troubleshooting](#troubleshooting)
|
|
11
|
+
- [Development](#development--publishing)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Quick start
|
|
16
|
+
|
|
17
|
+
**Install**
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @stokr/components-library
|
|
21
|
+
npm install react react-dom styled-components react-router-dom
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Peers: React 18+/19+, styled-components 6.x, react-router-dom 6.x when you use routing-driven components (`HeaderHo`, `MainMenu`, …).
|
|
25
|
+
|
|
26
|
+
**1. Router** — Navigation helpers need a React Router:
|
|
27
|
+
|
|
28
|
+
```jsx
|
|
29
|
+
import { BrowserRouter } from 'react-router-dom'
|
|
30
|
+
import { RouterWrapper } from '@stokr/components-library'
|
|
31
|
+
|
|
32
|
+
// Normal app
|
|
33
|
+
root.render(
|
|
34
|
+
<BrowserRouter>
|
|
35
|
+
<App />
|
|
36
|
+
</BrowserRouter>,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
// Outside a Router: RouterWrapper wraps children in BrowserRouter once.
|
|
40
|
+
// Inside an existing Router: it renders children only (no nested BrowserRouter).
|
|
41
|
+
root.render(
|
|
42
|
+
<RouterWrapper>
|
|
43
|
+
<App />
|
|
44
|
+
</RouterWrapper>,
|
|
45
|
+
)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**2. Auth & runtime config (required when consuming via npm)** — Vite freezes `import.meta.env` inside pre-built deps, so push your `.env` at runtime via `config`:
|
|
49
|
+
|
|
50
|
+
```jsx
|
|
51
|
+
import { AuthProvider } from '@stokr/components-library'
|
|
52
|
+
|
|
53
|
+
export default function App() {
|
|
54
|
+
return (
|
|
55
|
+
<AuthProvider
|
|
56
|
+
config={{
|
|
57
|
+
apiUrl: import.meta.env.VITE_API_URL,
|
|
58
|
+
baseUrlPublic: import.meta.env.VITE_BASE_URL_PUBLIC,
|
|
59
|
+
cookieDomain: import.meta.env.VITE_COOKIE_DOMAIN,
|
|
60
|
+
websiteDomain: import.meta.env.VITE_WEBSITE_DOMAIN,
|
|
61
|
+
photoApiUrl: import.meta.env.VITE_PHOTO_API_URL,
|
|
62
|
+
onboardingUrl: import.meta.env.VITE_ONBOARDING_URL,
|
|
63
|
+
dashboardUrl: import.meta.env.VITE_DASHBOARD_URL,
|
|
64
|
+
adminUrl: import.meta.env.VITE_ADMIN_URL,
|
|
65
|
+
registerUrl: import.meta.env.VITE_REGISTER_URL,
|
|
66
|
+
firebase: {
|
|
67
|
+
apiKey: import.meta.env.VITE_FIREBASE_API_KEY,
|
|
68
|
+
authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN,
|
|
69
|
+
projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID,
|
|
70
|
+
storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET,
|
|
71
|
+
messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID,
|
|
72
|
+
appId: import.meta.env.VITE_FIREBASE_APP_ID,
|
|
73
|
+
measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID,
|
|
74
|
+
},
|
|
75
|
+
}}>
|
|
76
|
+
{/* app */}
|
|
77
|
+
</AuthProvider>
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**3. Earlier config** (e.g. analytics before mount): `import { configure } from '@stokr/components-library'` with the same shape as `config`.
|
|
83
|
+
|
|
84
|
+
**4. Icons / fonts** — Optional: `<IoniconsStyles />` at root, or rely on lazy injection when a component uses icons; for Layout / Open Sans: `import '@stokr/components-library/styles.css'`.
|
|
85
|
+
|
|
86
|
+
**5. Imports** — `import { ConfirmModal, Button, … } from '@stokr/components-library'`.
|
|
87
|
+
|
|
88
|
+
Full URL env example:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
VITE_WEBSITE_DOMAIN=example.com
|
|
92
|
+
VITE_ONBOARDING_URL=https://signup.example.com
|
|
93
|
+
VITE_DASHBOARD_URL=https://dashboard.example.com
|
|
94
|
+
VITE_ADMIN_URL=https://admin.example.com
|
|
95
|
+
VITE_REGISTER_URL=https://example.com/signup
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Configuration reference {#runtime-config}
|
|
101
|
+
|
|
102
|
+
| `config` key | Typical `VITE_*` | Role |
|
|
103
|
+
| ----------------- | -------------------------- | ----------------------------------------- |
|
|
104
|
+
| `apiUrl` | `VITE_API_URL` | Authenticated REST base |
|
|
105
|
+
| `baseUrlPublic` | `VITE_BASE_URL_PUBLIC` | Public API base |
|
|
106
|
+
| `cookieDomain` | `VITE_COOKIE_DOMAIN` | Auth cookie `domain` attribute |
|
|
107
|
+
| `websiteDomain` | `VITE_WEBSITE_DOMAIN` | Bare host → links / `getPlatformURL()` |
|
|
108
|
+
| `photoApiUrl` | `VITE_PHOTO_API_URL` | Avatars / media |
|
|
109
|
+
| `onboardingUrl` | `VITE_ONBOARDING_URL` | Full signup/sign-in app URL |
|
|
110
|
+
| `dashboardUrl` | `VITE_DASHBOARD_URL` | Investor dashboard URL |
|
|
111
|
+
| `adminUrl` | `VITE_ADMIN_URL` | Venture / admin dashboard URL |
|
|
112
|
+
| `registerUrl` | `VITE_REGISTER_URL` | Public registration entry |
|
|
113
|
+
| `firebase` | `VITE_FIREBASE_*` | Firebase client config |
|
|
114
|
+
|
|
115
|
+
**Helpers:** `getConfig('…')` for any key above; `getPlatformURL()` → `https://{websiteDomain}`; `getAnalyticsIngestUrl()`, `getBackofficeAppUrl(path)`; **`getFooterGroups()`** replaces static footer URL lists.
|
|
116
|
+
|
|
117
|
+
**Auth-only HTTP:** `authenticationApi.post(segment, body)` for `auth/*`; default axios stays the main API client after login.
|
|
118
|
+
|
|
119
|
+
Missing overrides may trigger a **one-time** warning listing unresolved `VITE_*` expectations.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## AuthProvider & AuthContext {#authprovider-optional-props}
|
|
124
|
+
|
|
125
|
+
`AuthProvider` is wrapped with **`withRouter`** — mount it inside a **`Router`** so redirects work.
|
|
126
|
+
|
|
127
|
+
### Optional provider props
|
|
128
|
+
|
|
129
|
+
- **`inactivityTimeMs`** — Idle timeout before auto-logout + session modal (default 5 min).
|
|
130
|
+
- **`accessTokenExpiryMs`** — Cookie TTL when **`Auth.setAccessToken`** runs (default **`DEFAULT_TOKEN_EXPIRY_MS`** = 1 h); not extended by **`getUser`** alone.
|
|
131
|
+
- **`hideInactivityModal`** — Suppress built-in session modal.
|
|
132
|
+
- **`customValidateGetUser(user)`** — Hook after **`user/get`** succeeds (see `src/context/AuthContext.js`).
|
|
133
|
+
|
|
134
|
+
### AuthContext consumer {#authcontext-usecontext}
|
|
135
|
+
|
|
136
|
+
`import { AuthContext } from '…'` then `useContext(AuthContext)`.
|
|
137
|
+
|
|
138
|
+
- **Invalid Firebase guard:** value is **`{ user: null, isFetchingUser: false }`** only (no methods).
|
|
139
|
+
- **State (grouped):** `user` / `firebaseUser`, `isFetchingUser`, `avatar`; MFA (`waitingFor2fa`, `userMfaEnrollment`, `firebaseError`); verify-email (`verifyEmailError`, `isVerifyingEmail`); session UX (`loggedOutDueToInactivity`, `loggedOutDueToCookieExpiry`, `sessionExpiryPendingReason`).
|
|
140
|
+
- **Actions (grouped):** `userRef`, `loginUser`, `logoutUser`, `getUser`, `setUser`, `updateUser`, `refreshIdToken`; `checkUserIsValid`, `checkTokenIsValid`; `uploadPhoto`, `deletePhoto`, `checkUserPhoto`; MFA enroll / verify / unenroll + `reset2faFlow`; subscription/onboarding helpers; password & email (`handleResetPassword`, `handleVerifyEmail`, `requestUpdateEmail`, …); wallets / PoA (`uploaProofOfAddress` keeps the source spelling); **`dismissSessionExpiryModal`**.
|
|
141
|
+
|
|
142
|
+
Use **`AuthConsumer`** for the render-prop pattern.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Troubleshooting {#troubleshooting}
|
|
147
|
+
|
|
148
|
+
**`useNavigate` / Router**
|
|
149
|
+
|
|
150
|
+
Add `BrowserRouter` (or **`RouterWrapper`** from this package where the shell has no router). Install `react-router-dom`.
|
|
151
|
+
|
|
152
|
+
**Invalid hook call / duplicated React**
|
|
153
|
+
|
|
154
|
+
Dedupe peers in Vite: `resolve: { dedupe: ['react', 'react-dom', 'styled-components'] }`.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Development {#development--publishing}
|
|
159
|
+
|
|
160
|
+
| Command | Meaning |
|
|
161
|
+
| -------------------- | -------------------------------- |
|
|
162
|
+
| `npm run storybook` | Local docs / stories |
|
|
163
|
+
| `npm run build:dist` | Library build + static copy |
|
|
164
|
+
| `npm run pub` | Build then publish (`npm login`) |
|
|
165
|
+
|
|
166
|
+
Release: changelog entry → `npm version` → `npm run pub`. Details: [CHANGELOG.md](CHANGELOG.md).
|
|
@@ -69,9 +69,9 @@ function getFooterGroups() {
|
|
|
69
69
|
{
|
|
70
70
|
name: "Cookie policy",
|
|
71
71
|
url: `${platformURL}/cookie-policy`
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
},
|
|
73
|
+
{ name: "Complaints", url: `${platformURL}/complaints` },
|
|
74
|
+
{ name: "Conflicts of Interest", url: `${platformURL}/conflicts-of-interest` }
|
|
75
75
|
]
|
|
76
76
|
},
|
|
77
77
|
{
|
package/dist/index.js
CHANGED
|
@@ -130,7 +130,7 @@ import { generateCoreChecklistTasks, getVerifyIdentityChecklist } from "./utils/
|
|
|
130
130
|
import { CopyToClipBoardTooltip, copyTextToClipboard, useCopyToClipboard, withCopyToClipboard } from "./utils/copyToClipboard.js";
|
|
131
131
|
import { cooldownHOC, useComponentVisible, useContainerSize, useCooldown, useMobileView, usePrevious } from "./utils/customHooks.js";
|
|
132
132
|
import { fixDecimals } from "./utils/fix-decimals.js";
|
|
133
|
-
import { formatCurrencyValue, getCurrencyIcon, getCurrencySymbol, getLiquidAssetIcon, getProjectCurrencySign } from "./utils/formatCurrencyValue.js";
|
|
133
|
+
import { CURRENCY_CONFIG, formatCurrencyValue, getCurrencyConfig, getCurrencyIcon, getCurrencySymbol, getLiquidAssetIcon, getProjectCurrencySign } from "./utils/formatCurrencyValue.js";
|
|
134
134
|
import { isUSInvestor, usCountries } from "./utils/isUSInvestor.js";
|
|
135
135
|
import { km_ify } from "./utils/km_ify.js";
|
|
136
136
|
import { momentUtils } from "./utils/moment.js";
|
|
@@ -144,6 +144,8 @@ import { navigateToHref, pathnameIfSameOrigin } from "./routing/navigate-app.js"
|
|
|
144
144
|
import { RouterWrapper } from "./routing/RouterWrapper.js";
|
|
145
145
|
import { isAlreadyOnOnboardingFlow } from "./utils/app-urls.js";
|
|
146
146
|
import { authenticationApi } from "./api/authenticationApi.js";
|
|
147
|
+
import { Auth, DEFAULT_TOKEN_EXPIRY_MS } from "./context/Auth.js";
|
|
148
|
+
import { AuthConsumer, AuthContext, AuthProvider } from "./context/AuthContext.js";
|
|
147
149
|
import { colors } from "./styles/colors.js";
|
|
148
150
|
import { default as default2 } from "./styles/fonts.js";
|
|
149
151
|
import { GlobalStyle } from "./styles/global.js";
|
|
@@ -159,8 +161,6 @@ import { LoanActivityTypes, ProfessionalInvestorStatuses, ProjectStates, Project
|
|
|
159
161
|
import { default as default9 } from "./components/SvgIcons/AdminBadgeSvg.js";
|
|
160
162
|
import { Arrow } from "./components/icons/Arrow.js";
|
|
161
163
|
import { ArrowSimple } from "./components/icons/ArrowSimple.js";
|
|
162
|
-
import { Auth, DEFAULT_TOKEN_EXPIRY_MS } from "./context/Auth.js";
|
|
163
|
-
import { AuthConsumer, AuthContext, AuthProvider } from "./context/AuthContext.js";
|
|
164
164
|
import { BackButtonIcon, StyledBackButton, StyledBackButtonExternal, StyledWindowBackButton } from "./components/BackButton/BackButton.styles.js";
|
|
165
165
|
import { Breakdown } from "./components/breakdown/Breakdown.js";
|
|
166
166
|
import { default as default10 } from "./components/SvgIcons/CameraSvg.js";
|
|
@@ -276,6 +276,7 @@ export {
|
|
|
276
276
|
ButtonGridContainer,
|
|
277
277
|
CAPITAL_ANIMATION_LENGTH,
|
|
278
278
|
COLUMN,
|
|
279
|
+
CURRENCY_CONFIG,
|
|
279
280
|
default10 as CameraSvg,
|
|
280
281
|
default11 as CapsLockSvg,
|
|
281
282
|
CaptialRaisedSummary,
|
|
@@ -613,6 +614,7 @@ export {
|
|
|
613
614
|
getAnalyticsIngestUrl,
|
|
614
615
|
getBackofficeAppUrl,
|
|
615
616
|
getConfig,
|
|
617
|
+
getCurrencyConfig,
|
|
616
618
|
getCurrencyIcon,
|
|
617
619
|
getCurrencySymbol,
|
|
618
620
|
getFooterGroups,
|
package/dist/manifest.json
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
{
|
|
2
|
-
"short_name": "Vite React App",
|
|
3
|
-
"name": "Vite React App",
|
|
4
|
-
"icons": [
|
|
5
|
-
{
|
|
6
|
-
"src": "favicon.ico",
|
|
7
|
-
"sizes": "64x64 32x32 24x24 16x16",
|
|
8
|
-
"type": "image/x-icon"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"src": "logo192.png",
|
|
12
|
-
"type": "image/png",
|
|
13
|
-
"sizes": "192x192"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"src": "logo512.png",
|
|
17
|
-
"type": "image/png",
|
|
18
|
-
"sizes": "512x512"
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
"start_url": ".",
|
|
22
|
-
"display": "standalone",
|
|
23
|
-
"theme_color": "#000000",
|
|
24
|
-
"background_color": "#ffffff"
|
|
25
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"short_name": "Vite React App",
|
|
3
|
+
"name": "Vite React App",
|
|
4
|
+
"icons": [
|
|
5
|
+
{
|
|
6
|
+
"src": "favicon.ico",
|
|
7
|
+
"sizes": "64x64 32x32 24x24 16x16",
|
|
8
|
+
"type": "image/x-icon"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"src": "logo192.png",
|
|
12
|
+
"type": "image/png",
|
|
13
|
+
"sizes": "192x192"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"src": "logo512.png",
|
|
17
|
+
"type": "image/png",
|
|
18
|
+
"sizes": "512x512"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"start_url": ".",
|
|
22
|
+
"display": "standalone",
|
|
23
|
+
"theme_color": "#000000",
|
|
24
|
+
"background_color": "#ffffff"
|
|
25
|
+
}
|
package/dist/robots.txt
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
# https://www.robotstxt.org/robotstxt.html
|
|
2
|
-
User-agent: *
|
|
3
|
-
Disallow:
|
|
1
|
+
# https://www.robotstxt.org/robotstxt.html
|
|
2
|
+
User-agent: *
|
|
3
|
+
Disallow:
|
package/dist/runtime-config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SSR": false
|
|
1
|
+
const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SSR": false };
|
|
2
2
|
const _overrides = {};
|
|
3
3
|
const ENV_KEY_BY_CONFIG = {
|
|
4
4
|
apiUrl: "VITE_API_URL",
|
|
File without changes
|