@elevasis/ui 1.0.0

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/index.d.ts +87 -0
  2. package/dist/api/index.js +3 -0
  3. package/dist/auth/context.d.ts +19 -0
  4. package/dist/auth/context.js +1 -0
  5. package/dist/auth/index.d.ts +85 -0
  6. package/dist/auth/index.js +3 -0
  7. package/dist/chunk-3KMDHCAR.js +52 -0
  8. package/dist/chunk-5UWFGBFM.js +129 -0
  9. package/dist/chunk-6BJOYF6E.js +8 -0
  10. package/dist/chunk-6M6OLGQY.js +36 -0
  11. package/dist/chunk-7AI5ZYJ4.js +202 -0
  12. package/dist/chunk-7PLEQFHO.js +18 -0
  13. package/dist/chunk-GDV44UWF.js +138 -0
  14. package/dist/chunk-GEFB5YIR.js +338 -0
  15. package/dist/chunk-HBRMWW6V.js +43 -0
  16. package/dist/chunk-HUWJXLLF.js +681 -0
  17. package/dist/chunk-J3FALDQE.js +176 -0
  18. package/dist/chunk-JKERRYVS.js +109 -0
  19. package/dist/chunk-KA7LO7U5.js +28 -0
  20. package/dist/chunk-LHQTTUL2.js +27 -0
  21. package/dist/chunk-MAAS6CGR.js +1299 -0
  22. package/dist/chunk-NE36BUGQ.js +146 -0
  23. package/dist/chunk-NGXCFBCS.js +398 -0
  24. package/dist/chunk-OEYU5O27.js +235 -0
  25. package/dist/chunk-OUHGHTE7.js +748 -0
  26. package/dist/chunk-OXVOHOP3.js +661 -0
  27. package/dist/chunk-PSLKGOBZ.js +58 -0
  28. package/dist/chunk-PYL4XW6H.js +107 -0
  29. package/dist/chunk-Q47SPRY7.js +1 -0
  30. package/dist/chunk-Q7DJKLEN.js +18 -0
  31. package/dist/chunk-RJCA5672.js +1664 -0
  32. package/dist/chunk-S66I2PYB.js +748 -0
  33. package/dist/chunk-W7ZBF5AA.js +1 -0
  34. package/dist/chunk-WNWKOCGJ.js +1067 -0
  35. package/dist/chunk-XCYKC6OZ.js +1 -0
  36. package/dist/chunk-YULUKCS6.js +56 -0
  37. package/dist/chunk-YZ6GTZXL.js +48 -0
  38. package/dist/chunk-ZGHDPDTF.js +379 -0
  39. package/dist/components/command-queue/index.css +53 -0
  40. package/dist/components/command-queue/index.d.ts +204 -0
  41. package/dist/components/command-queue/index.js +10 -0
  42. package/dist/components/forms/index.d.ts +56 -0
  43. package/dist/components/forms/index.js +2 -0
  44. package/dist/components/index.css +443 -0
  45. package/dist/components/index.d.ts +1354 -0
  46. package/dist/components/index.js +18 -0
  47. package/dist/components/monitoring/index.d.ts +66 -0
  48. package/dist/components/monitoring/index.js +2 -0
  49. package/dist/components/navigation/index.d.ts +54 -0
  50. package/dist/components/navigation/index.js +91 -0
  51. package/dist/components/notifications/index.d.ts +52 -0
  52. package/dist/components/notifications/index.js +4 -0
  53. package/dist/components/resource-definition/index.css +388 -0
  54. package/dist/components/resource-definition/index.d.ts +301 -0
  55. package/dist/components/resource-definition/index.js +3 -0
  56. package/dist/display/index.css +53 -0
  57. package/dist/display/index.d.ts +606 -0
  58. package/dist/display/index.js +6 -0
  59. package/dist/execution/index.css +388 -0
  60. package/dist/execution/index.d.ts +1090 -0
  61. package/dist/execution/index.js +4 -0
  62. package/dist/graph/index.css +388 -0
  63. package/dist/graph/index.d.ts +429 -0
  64. package/dist/graph/index.js +1 -0
  65. package/dist/hooks/index.d.ts +1927 -0
  66. package/dist/hooks/index.js +6 -0
  67. package/dist/hooks/published.d.ts +1653 -0
  68. package/dist/hooks/published.js +4 -0
  69. package/dist/index.css +505 -0
  70. package/dist/index.d.ts +7284 -0
  71. package/dist/index.js +31 -0
  72. package/dist/initialization/index.d.ts +2325 -0
  73. package/dist/initialization/index.js +4 -0
  74. package/dist/organization/index.d.ts +225 -0
  75. package/dist/organization/index.js +4 -0
  76. package/dist/profile/index.d.ts +2265 -0
  77. package/dist/profile/index.js +3 -0
  78. package/dist/provider/index.css +61 -0
  79. package/dist/provider/index.d.ts +291 -0
  80. package/dist/provider/index.js +7 -0
  81. package/dist/provider/published.d.ts +198 -0
  82. package/dist/provider/published.js +6 -0
  83. package/dist/router/context.d.ts +19 -0
  84. package/dist/router/context.js +1 -0
  85. package/dist/router/index.d.ts +31 -0
  86. package/dist/router/index.js +2 -0
  87. package/dist/sse/index.d.ts +83 -0
  88. package/dist/sse/index.js +185 -0
  89. package/dist/supabase/index.d.ts +4289 -0
  90. package/dist/supabase/index.js +47 -0
  91. package/dist/typeform/index.d.ts +458 -0
  92. package/dist/typeform/index.js +1976 -0
  93. package/dist/typeform/schemas.d.ts +67 -0
  94. package/dist/typeform/schemas.js +1 -0
  95. package/dist/utils/index.d.ts +177 -0
  96. package/dist/utils/index.js +1 -0
  97. package/package.json +88 -0
@@ -0,0 +1,235 @@
1
+ import { AuthProvider } from './chunk-7PLEQFHO.js';
2
+ import { useAuth } from '@workos-inc/authkit-react';
3
+ import { createContext, useMemo, useState, useCallback, useEffect, useContext } from 'react';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ function WorkOSAuthBridge({ children }) {
7
+ const { user, isLoading, getAccessToken, organizationId } = useAuth();
8
+ const adaptedUser = useMemo(() => user ? { id: user.id } : null, [user?.id]);
9
+ const value = useMemo(
10
+ () => ({
11
+ user: adaptedUser,
12
+ isLoading,
13
+ getAccessToken,
14
+ organizationId: organizationId ?? null
15
+ }),
16
+ [adaptedUser, isLoading, getAccessToken, organizationId]
17
+ );
18
+ return /* @__PURE__ */ jsx(AuthProvider, { value, children });
19
+ }
20
+ function generateRandomString(length) {
21
+ const array = new Uint8Array(length);
22
+ crypto.getRandomValues(array);
23
+ return Array.from(array, (b) => b.toString(16).padStart(2, "0")).join("").slice(0, length);
24
+ }
25
+ async function generateCodeChallenge(verifier) {
26
+ const encoder = new TextEncoder();
27
+ const data = encoder.encode(verifier);
28
+ const digest = await crypto.subtle.digest("SHA-256", data);
29
+ return btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
30
+ }
31
+ function generateState() {
32
+ return generateRandomString(32);
33
+ }
34
+ var STORAGE_KEYS = {
35
+ tokens: "elevasis_oauth_tokens",
36
+ codeVerifier: "elevasis_oauth_code_verifier",
37
+ state: "elevasis_oauth_state"
38
+ };
39
+ function saveToStorage(key, value) {
40
+ try {
41
+ sessionStorage.setItem(key, value);
42
+ } catch {
43
+ }
44
+ }
45
+ function loadFromStorage(key) {
46
+ try {
47
+ return sessionStorage.getItem(key);
48
+ } catch {
49
+ return null;
50
+ }
51
+ }
52
+ function clearStorageKeys() {
53
+ try {
54
+ sessionStorage.removeItem(STORAGE_KEYS.tokens);
55
+ sessionStorage.removeItem(STORAGE_KEYS.codeVerifier);
56
+ sessionStorage.removeItem(STORAGE_KEYS.state);
57
+ } catch {
58
+ }
59
+ }
60
+ function loadStoredTokens() {
61
+ const raw = loadFromStorage(STORAGE_KEYS.tokens);
62
+ if (!raw) return null;
63
+ try {
64
+ const parsed = JSON.parse(raw);
65
+ if (parsed.accessToken) return parsed;
66
+ } catch {
67
+ }
68
+ return null;
69
+ }
70
+ function saveTokens(tokens) {
71
+ saveToStorage(STORAGE_KEYS.tokens, JSON.stringify(tokens));
72
+ }
73
+ function decodeJwtPayload(token) {
74
+ try {
75
+ const parts = token.split(".");
76
+ if (parts.length !== 3) return null;
77
+ const payload = parts[1];
78
+ const padded = payload.replace(/-/g, "+").replace(/_/g, "/") + "=".repeat((4 - payload.length % 4) % 4);
79
+ return JSON.parse(atob(padded));
80
+ } catch {
81
+ return null;
82
+ }
83
+ }
84
+ function decodeUserFromJwt(token) {
85
+ const payload = decodeJwtPayload(token);
86
+ if (!payload) return null;
87
+ const sub = payload.sub;
88
+ if (sub) return { id: sub };
89
+ return null;
90
+ }
91
+ function decodeOrgIdFromJwt(token) {
92
+ const payload = decodeJwtPayload(token);
93
+ if (!payload) return null;
94
+ return payload.org_id ?? null;
95
+ }
96
+ var OAuthContext = createContext(null);
97
+ function useOAuthContext() {
98
+ const ctx = useContext(OAuthContext);
99
+ if (!ctx) {
100
+ throw new Error("useOAuthContext must be used within an OAuthProvider.");
101
+ }
102
+ return ctx;
103
+ }
104
+ function OAuthProvider({ config, children }) {
105
+ const useStorage = config.tokenStorage === "session";
106
+ const [state, setState] = useState(() => {
107
+ const storedTokens = useStorage ? loadStoredTokens() : null;
108
+ return {
109
+ tokens: storedTokens,
110
+ user: storedTokens ? decodeUserFromJwt(storedTokens.accessToken) : null,
111
+ organizationId: storedTokens ? decodeOrgIdFromJwt(storedTokens.accessToken) : config.organizationId ?? null,
112
+ isLoading: false,
113
+ error: null
114
+ };
115
+ });
116
+ const exchangeCodeForTokens = useCallback(
117
+ async (code, codeVerifier) => {
118
+ setState((prev) => ({ ...prev, isLoading: true, error: null }));
119
+ try {
120
+ const response = await fetch(
121
+ "https://api.workos.com/user_management/authenticate",
122
+ {
123
+ method: "POST",
124
+ headers: { "Content-Type": "application/json" },
125
+ body: JSON.stringify({
126
+ client_id: config.clientId,
127
+ code_verifier: codeVerifier,
128
+ grant_type: "authorization_code",
129
+ code
130
+ })
131
+ }
132
+ );
133
+ if (!response.ok) {
134
+ const text = await response.text();
135
+ throw new Error(`Token exchange failed (${response.status}): ${text}`);
136
+ }
137
+ const data = await response.json();
138
+ const tokens = {
139
+ accessToken: data.access_token,
140
+ refreshToken: data.refresh_token
141
+ };
142
+ if (useStorage) saveTokens(tokens);
143
+ setState({
144
+ tokens,
145
+ user: decodeUserFromJwt(tokens.accessToken),
146
+ organizationId: decodeOrgIdFromJwt(tokens.accessToken) ?? (config.organizationId ?? null),
147
+ isLoading: false,
148
+ error: null
149
+ });
150
+ } catch (err) {
151
+ setState((prev) => ({
152
+ ...prev,
153
+ isLoading: false,
154
+ error: err instanceof Error ? err.message : "Token exchange failed"
155
+ }));
156
+ }
157
+ },
158
+ [config.clientId, config.organizationId, useStorage]
159
+ );
160
+ const initiateOAuthFlow = useCallback(() => {
161
+ const start = async () => {
162
+ const verifier = generateRandomString(64);
163
+ const challenge = await generateCodeChallenge(verifier);
164
+ const oauthState = generateState();
165
+ saveToStorage(STORAGE_KEYS.codeVerifier, verifier);
166
+ saveToStorage(STORAGE_KEYS.state, oauthState);
167
+ const params = new URLSearchParams({
168
+ client_id: config.clientId,
169
+ redirect_uri: config.redirectUri,
170
+ response_type: "code",
171
+ code_challenge: challenge,
172
+ code_challenge_method: "S256",
173
+ state: oauthState
174
+ });
175
+ if (config.organizationId) {
176
+ params.set("organization_id", config.organizationId);
177
+ }
178
+ window.location.href = `https://api.workos.com/user_management/authorize?${params.toString()}`;
179
+ };
180
+ void start();
181
+ }, [config.clientId, config.redirectUri, config.organizationId]);
182
+ useEffect(() => {
183
+ const url = new URL(window.location.href);
184
+ const code = url.searchParams.get("code");
185
+ const returnedState = url.searchParams.get("state");
186
+ if (!code) return;
187
+ const storedState = loadFromStorage(STORAGE_KEYS.state);
188
+ if (storedState && returnedState !== storedState) {
189
+ setState((prev) => ({ ...prev, error: "OAuth state mismatch" }));
190
+ return;
191
+ }
192
+ const codeVerifier = loadFromStorage(STORAGE_KEYS.codeVerifier);
193
+ if (!codeVerifier) {
194
+ setState((prev) => ({ ...prev, error: "Missing code verifier" }));
195
+ return;
196
+ }
197
+ url.searchParams.delete("code");
198
+ url.searchParams.delete("state");
199
+ window.history.replaceState({}, "", url.pathname + url.search);
200
+ clearStorageKeys();
201
+ void exchangeCodeForTokens(code, codeVerifier);
202
+ }, [exchangeCodeForTokens]);
203
+ const getAccessToken = useCallback(async () => {
204
+ if (state.tokens?.accessToken) return state.tokens.accessToken;
205
+ initiateOAuthFlow();
206
+ throw new Error("No access token available. Redirecting to login.");
207
+ }, [state.tokens, initiateOAuthFlow]);
208
+ const value = useMemo(
209
+ () => ({
210
+ user: state.user,
211
+ isLoading: state.isLoading,
212
+ organizationId: state.organizationId,
213
+ getAccessToken,
214
+ error: state.error,
215
+ initiateOAuthFlow
216
+ }),
217
+ [state.user, state.isLoading, state.organizationId, state.error, getAccessToken, initiateOAuthFlow]
218
+ );
219
+ return /* @__PURE__ */ jsx(OAuthContext.Provider, { value, children });
220
+ }
221
+ function OAuthAuthBridge({ children }) {
222
+ const { user, isLoading, getAccessToken, organizationId } = useOAuthContext();
223
+ const value = useMemo(
224
+ () => ({
225
+ user,
226
+ isLoading,
227
+ getAccessToken,
228
+ organizationId
229
+ }),
230
+ [user, isLoading, getAccessToken, organizationId]
231
+ );
232
+ return /* @__PURE__ */ jsx(AuthProvider, { value, children });
233
+ }
234
+
235
+ export { OAuthAuthBridge, OAuthProvider, WorkOSAuthBridge };