@elevasis/ui 1.2.0 → 1.2.1
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/auth/index.js +1 -1
- package/dist/{chunk-XVPEDNIM.js → chunk-B64YDSAY.js} +303 -86
- package/dist/{chunk-KSG4C5DD.js → chunk-QSVZP2NU.js} +2 -1
- package/dist/chunk-ZQVPUAGR.js +89 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.js +3 -3
- package/dist/provider/index.d.ts +12 -4
- package/dist/provider/index.js +3 -3
- package/dist/provider/published.d.ts +12 -4
- package/dist/provider/published.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-QGEFP2EU.js +0 -399
package/dist/auth/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { useSessionCheck as useRefocusSessionCheck, useSessionCheck, useStableAccessToken } from '../chunk-HBRMWW6V.js';
|
|
2
2
|
export { WorkOSAuthBridge } from '../chunk-NIAVTSMB.js';
|
|
3
|
-
export { useOAuthContext } from '../chunk-
|
|
3
|
+
export { useOAuthContext } from '../chunk-QSVZP2NU.js';
|
|
4
4
|
export { AuthProvider, useAuthContext } from '../chunk-7PLEQFHO.js';
|
|
@@ -1,11 +1,266 @@
|
|
|
1
1
|
import { ApiClientProvider, createUseApiClient } from './chunk-GDV44UWF.js';
|
|
2
2
|
import { ElevasisServiceProvider } from './chunk-KA7LO7U5.js';
|
|
3
|
-
import {
|
|
3
|
+
import { WorkOSAuthBridge } from './chunk-NIAVTSMB.js';
|
|
4
|
+
import { OAuthProvider } from './chunk-QSVZP2NU.js';
|
|
4
5
|
import { useAuthContext } from './chunk-7PLEQFHO.js';
|
|
5
|
-
import {
|
|
6
|
+
import { useMemo, useEffect, useRef } from 'react';
|
|
7
|
+
import { Tooltip, Text, Tabs, Table, Stack, SimpleGrid, Select, Combobox, SegmentedControl, ScrollArea, Paper, Popover, Notification, Modal, Menu, Input, HoverCard, Group, Grid, Flex, Code, Divider, Card, Button, Accordion, createTheme, mergeThemeOverrides, MantineProvider } from '@mantine/core';
|
|
6
8
|
import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
|
|
9
|
+
import { AuthKitProvider } from '@workos-inc/authkit-react';
|
|
10
|
+
import '@mantine/core/styles.css';
|
|
11
|
+
import '@mantine/notifications/styles.css';
|
|
7
12
|
import { jsx } from 'react/jsx-runtime';
|
|
8
13
|
|
|
14
|
+
var DEFAULT_SIZE = "sm";
|
|
15
|
+
var glassBase = {
|
|
16
|
+
backdropFilter: "var(--glass-blur)",
|
|
17
|
+
WebkitBackdropFilter: "var(--glass-blur)",
|
|
18
|
+
border: "1px solid var(--color-border)"
|
|
19
|
+
};
|
|
20
|
+
var componentThemes = {
|
|
21
|
+
Accordion: Accordion.extend({
|
|
22
|
+
styles: {
|
|
23
|
+
item: {
|
|
24
|
+
borderColor: "var(--color-border)"
|
|
25
|
+
},
|
|
26
|
+
content: {
|
|
27
|
+
backgroundColor: "var(--color-surface)"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}),
|
|
31
|
+
Button: Button.extend({
|
|
32
|
+
styles: {
|
|
33
|
+
root: {
|
|
34
|
+
transition: `all var(--duration-fast) var(--easing)`
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}),
|
|
38
|
+
Card: Card.extend({
|
|
39
|
+
defaultProps: {
|
|
40
|
+
p: DEFAULT_SIZE
|
|
41
|
+
},
|
|
42
|
+
styles: {
|
|
43
|
+
root: {
|
|
44
|
+
backgroundColor: "var(--glass-background)",
|
|
45
|
+
...glassBase,
|
|
46
|
+
boxShadow: "var(--card-shadow)"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
// Checkbox styles are in custom.css to support :checked pseudo-selector
|
|
51
|
+
Divider: Divider.extend({
|
|
52
|
+
styles: {
|
|
53
|
+
root: {
|
|
54
|
+
borderColor: "var(--color-border)"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}),
|
|
58
|
+
Code: Code.extend({
|
|
59
|
+
styles: {
|
|
60
|
+
root: {
|
|
61
|
+
backgroundColor: "var(--color-surface)",
|
|
62
|
+
border: "1px solid var(--color-border)"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}),
|
|
66
|
+
Flex: Flex.extend({
|
|
67
|
+
defaultProps: {
|
|
68
|
+
gap: DEFAULT_SIZE
|
|
69
|
+
}
|
|
70
|
+
}),
|
|
71
|
+
Grid: Grid.extend({
|
|
72
|
+
defaultProps: {
|
|
73
|
+
gutter: DEFAULT_SIZE
|
|
74
|
+
}
|
|
75
|
+
}),
|
|
76
|
+
Group: Group.extend({
|
|
77
|
+
defaultProps: {
|
|
78
|
+
gap: DEFAULT_SIZE
|
|
79
|
+
}
|
|
80
|
+
}),
|
|
81
|
+
HoverCard: HoverCard.extend({
|
|
82
|
+
styles: {
|
|
83
|
+
dropdown: {
|
|
84
|
+
backgroundColor: "var(--color-surface)",
|
|
85
|
+
border: "1px solid var(--color-border)",
|
|
86
|
+
boxShadow: "var(--standard-box-shadow)"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}),
|
|
90
|
+
Input: Input.extend({
|
|
91
|
+
styles: {
|
|
92
|
+
input: {
|
|
93
|
+
backgroundColor: "var(--color-surface)",
|
|
94
|
+
border: "none",
|
|
95
|
+
borderBottom: "1px solid var(--color-border)",
|
|
96
|
+
borderRadius: "0"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}),
|
|
100
|
+
Menu: Menu.extend({
|
|
101
|
+
styles: {
|
|
102
|
+
dropdown: {
|
|
103
|
+
background: "var(--color-surface)",
|
|
104
|
+
border: "1px solid var(--color-border)"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}),
|
|
108
|
+
Modal: Modal.extend({
|
|
109
|
+
styles: {
|
|
110
|
+
content: {
|
|
111
|
+
backgroundColor: "var(--color-surface)",
|
|
112
|
+
border: "1px solid var(--color-border)"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}),
|
|
116
|
+
Notification: Notification.extend({
|
|
117
|
+
styles: {
|
|
118
|
+
root: {
|
|
119
|
+
backgroundColor: "color-mix(in srgb, var(--color-surface) 90%, transparent)",
|
|
120
|
+
...glassBase
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}),
|
|
124
|
+
Popover: Popover.extend({
|
|
125
|
+
styles: {
|
|
126
|
+
dropdown: {
|
|
127
|
+
backgroundColor: "var(--color-surface)",
|
|
128
|
+
...glassBase,
|
|
129
|
+
boxShadow: "var(--standard-box-shadow)"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}),
|
|
133
|
+
Paper: Paper.extend({
|
|
134
|
+
styles: {
|
|
135
|
+
root: {
|
|
136
|
+
backgroundColor: "var(--glass-background)",
|
|
137
|
+
...glassBase,
|
|
138
|
+
boxShadow: "var(--card-shadow)",
|
|
139
|
+
padding: `var(--mantine-spacing-${DEFAULT_SIZE})`
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}),
|
|
143
|
+
ScrollArea: ScrollArea.extend({
|
|
144
|
+
defaultProps: {
|
|
145
|
+
scrollbarSize: 8
|
|
146
|
+
},
|
|
147
|
+
styles: {
|
|
148
|
+
scrollbar: {
|
|
149
|
+
background: "transparent",
|
|
150
|
+
'&[data-orientation="vertical"]': {
|
|
151
|
+
width: "8px"
|
|
152
|
+
},
|
|
153
|
+
'&[data-orientation="horizontal"]': {
|
|
154
|
+
height: "8px"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
thumb: {
|
|
158
|
+
borderRadius: "var(--mantine-radius-default)",
|
|
159
|
+
background: "color-mix(in srgb, var(--color-text-subtle) 50%, var(--color-border))",
|
|
160
|
+
"&:hover": {
|
|
161
|
+
background: "var(--color-text-subtle)"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}),
|
|
166
|
+
SegmentedControl: SegmentedControl.extend({
|
|
167
|
+
styles: {
|
|
168
|
+
root: {
|
|
169
|
+
backgroundColor: "var(--color-surface)"
|
|
170
|
+
},
|
|
171
|
+
indicator: {
|
|
172
|
+
backgroundColor: "var(--color-surface-hover)",
|
|
173
|
+
boxShadow: "var(--standard-box-shadow)"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}),
|
|
177
|
+
Combobox: Combobox.extend({
|
|
178
|
+
styles: {
|
|
179
|
+
dropdown: {
|
|
180
|
+
backgroundColor: "red"
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}),
|
|
184
|
+
Select: Select.extend({
|
|
185
|
+
styles: {
|
|
186
|
+
dropdown: {
|
|
187
|
+
backgroundColor: "var(--color-surface)"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}),
|
|
191
|
+
// Switch styles are in custom.css to support [data-checked] attribute selector
|
|
192
|
+
SimpleGrid: SimpleGrid.extend({
|
|
193
|
+
defaultProps: {
|
|
194
|
+
spacing: DEFAULT_SIZE,
|
|
195
|
+
verticalSpacing: DEFAULT_SIZE
|
|
196
|
+
}
|
|
197
|
+
}),
|
|
198
|
+
Stack: Stack.extend({
|
|
199
|
+
defaultProps: {
|
|
200
|
+
gap: DEFAULT_SIZE
|
|
201
|
+
}
|
|
202
|
+
}),
|
|
203
|
+
Table: Table.extend({
|
|
204
|
+
defaultProps: {
|
|
205
|
+
highlightOnHover: true
|
|
206
|
+
},
|
|
207
|
+
styles: {
|
|
208
|
+
table: {
|
|
209
|
+
"--table-border-color": "var(--color-border)",
|
|
210
|
+
"--table-highlight-on-hover-color": "var(--color-surface-hover)"
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}),
|
|
214
|
+
Tabs: Tabs.extend({}),
|
|
215
|
+
Text: Text.extend({
|
|
216
|
+
styles: {
|
|
217
|
+
root: {
|
|
218
|
+
fontFamily: 'Roboto, Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}),
|
|
222
|
+
// Timeline styles are in custom.css to override color-scheme-specific selectors
|
|
223
|
+
Tooltip: Tooltip.extend({
|
|
224
|
+
styles: {
|
|
225
|
+
tooltip: {
|
|
226
|
+
backgroundColor: "var(--color-surface)",
|
|
227
|
+
color: "var(--color-text)",
|
|
228
|
+
border: "1px solid var(--color-border)"
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
})
|
|
232
|
+
// Pagination styles are in custom.css to support :not([data-active]) selector
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
// src/theme/MantineThemeOverride.ts
|
|
236
|
+
var mantineThemeOverride = createTheme({
|
|
237
|
+
defaultRadius: "xs",
|
|
238
|
+
fontFamily: 'Roboto, Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
|
|
239
|
+
cursorType: "pointer",
|
|
240
|
+
spacing: {
|
|
241
|
+
xs: "0.5rem",
|
|
242
|
+
sm: "0.75rem",
|
|
243
|
+
md: "1rem",
|
|
244
|
+
lg: "1.5rem",
|
|
245
|
+
xl: "2rem"
|
|
246
|
+
},
|
|
247
|
+
radius: {
|
|
248
|
+
xs: "0.25rem",
|
|
249
|
+
sm: "0.5rem",
|
|
250
|
+
md: "0.75rem",
|
|
251
|
+
lg: "1rem",
|
|
252
|
+
xl: "1.5rem"
|
|
253
|
+
},
|
|
254
|
+
fontSizes: {
|
|
255
|
+
xs: "0.75rem",
|
|
256
|
+
sm: "0.875rem",
|
|
257
|
+
md: "1rem",
|
|
258
|
+
lg: "1.125rem",
|
|
259
|
+
xl: "1.25rem"
|
|
260
|
+
},
|
|
261
|
+
components: componentThemes
|
|
262
|
+
});
|
|
263
|
+
|
|
9
264
|
// src/theme/presets/utils.ts
|
|
10
265
|
function hexToRgb(hex) {
|
|
11
266
|
const h = hex.replace("#", "");
|
|
@@ -1111,7 +1366,6 @@ function createCssVariablesResolver(tokens, preset) {
|
|
|
1111
1366
|
dark: { ...darkShades, ...darkDefaults, ...flat, ...dark }
|
|
1112
1367
|
});
|
|
1113
1368
|
}
|
|
1114
|
-
var LazyCoreAuthKitInner = lazy(() => import('./CoreAuthKitInner-KM72EYJS.js').then((m) => ({ default: m.CoreAuthKitInner })));
|
|
1115
1369
|
var defaultQueryClient = null;
|
|
1116
1370
|
function getDefaultQueryClient() {
|
|
1117
1371
|
if (!defaultQueryClient) {
|
|
@@ -1122,56 +1376,7 @@ function getDefaultQueryClient() {
|
|
|
1122
1376
|
return defaultQueryClient;
|
|
1123
1377
|
}
|
|
1124
1378
|
var defaultUseOrganizations = () => ({ isInitializing: false, isOrgRefreshing: false });
|
|
1125
|
-
function
|
|
1126
|
-
const [resolved, setResolved] = useState(() => {
|
|
1127
|
-
if (scheme && scheme !== "auto") return scheme;
|
|
1128
|
-
if (typeof window === "undefined") return "dark";
|
|
1129
|
-
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
1130
|
-
});
|
|
1131
|
-
useEffect(() => {
|
|
1132
|
-
if (scheme && scheme !== "auto") {
|
|
1133
|
-
setResolved(scheme);
|
|
1134
|
-
return;
|
|
1135
|
-
}
|
|
1136
|
-
const mql = window.matchMedia("(prefers-color-scheme: dark)");
|
|
1137
|
-
const handler = (e) => setResolved(e.matches ? "dark" : "light");
|
|
1138
|
-
setResolved(mql.matches ? "dark" : "light");
|
|
1139
|
-
mql.addEventListener("change", handler);
|
|
1140
|
-
return () => mql.removeEventListener("change", handler);
|
|
1141
|
-
}, [scheme]);
|
|
1142
|
-
return resolved;
|
|
1143
|
-
}
|
|
1144
|
-
function buildCssVarStyles(theme) {
|
|
1145
|
-
const preset = getPreset(theme?.preset ?? "default");
|
|
1146
|
-
const tokens = theme?.tokens;
|
|
1147
|
-
function toVarDeclarations(overrides) {
|
|
1148
|
-
const lines = [];
|
|
1149
|
-
for (const [key, varName] of Object.entries(TOKEN_VAR_MAP)) {
|
|
1150
|
-
const value = overrides[key];
|
|
1151
|
-
if (value) lines.push(` ${varName}: ${value};`);
|
|
1152
|
-
}
|
|
1153
|
-
return lines.join("\n");
|
|
1154
|
-
}
|
|
1155
|
-
const flatTokens = {};
|
|
1156
|
-
if (tokens) {
|
|
1157
|
-
for (const key of Object.keys(TOKEN_VAR_MAP)) {
|
|
1158
|
-
if (tokens[key] !== void 0) flatTokens[key] = tokens[key];
|
|
1159
|
-
}
|
|
1160
|
-
}
|
|
1161
|
-
const darkMerged = { ...preset.dark, ...flatTokens, ...tokens?.dark };
|
|
1162
|
-
const lightMerged = { ...preset.light, ...flatTokens, ...tokens?.light };
|
|
1163
|
-
const darkBlock = toVarDeclarations(darkMerged);
|
|
1164
|
-
const lightBlock = toVarDeclarations(lightMerged);
|
|
1165
|
-
return [
|
|
1166
|
-
`:root[data-elevasis-scheme="dark"] {
|
|
1167
|
-
${darkBlock}
|
|
1168
|
-
}`,
|
|
1169
|
-
`:root[data-elevasis-scheme="light"] {
|
|
1170
|
-
${lightBlock}
|
|
1171
|
-
}`
|
|
1172
|
-
].join("\n\n");
|
|
1173
|
-
}
|
|
1174
|
-
function ElevasisCoreProvider({
|
|
1379
|
+
function ElevasisUIProvider({
|
|
1175
1380
|
auth,
|
|
1176
1381
|
theme,
|
|
1177
1382
|
organizationId = null,
|
|
@@ -1183,35 +1388,12 @@ function ElevasisCoreProvider({
|
|
|
1183
1388
|
}) {
|
|
1184
1389
|
if (auth.mode === "apiKey") {
|
|
1185
1390
|
throw new Error(
|
|
1186
|
-
`
|
|
1391
|
+
`ElevasisUIProvider: auth mode 'apiKey' is not yet implemented. Only 'authkit' and 'oauth' modes are supported.`
|
|
1187
1392
|
);
|
|
1188
1393
|
}
|
|
1189
1394
|
const resolvedQueryClient = queryClient ?? getDefaultQueryClient();
|
|
1190
|
-
const
|
|
1395
|
+
const resolvedColorScheme = theme?.colorScheme ?? "dark";
|
|
1191
1396
|
const preset = useMemo(() => getPreset(theme?.preset ?? "default"), [theme?.preset]);
|
|
1192
|
-
useEffect(() => {
|
|
1193
|
-
document.documentElement.setAttribute("data-elevasis-scheme", resolvedScheme);
|
|
1194
|
-
return () => {
|
|
1195
|
-
document.documentElement.removeAttribute("data-elevasis-scheme");
|
|
1196
|
-
};
|
|
1197
|
-
}, [resolvedScheme]);
|
|
1198
|
-
const styleRef = useRef(null);
|
|
1199
|
-
useEffect(() => {
|
|
1200
|
-
const css = buildCssVarStyles(theme);
|
|
1201
|
-
if (!styleRef.current) {
|
|
1202
|
-
const el = document.createElement("style");
|
|
1203
|
-
el.setAttribute("data-elevasis-vars", "");
|
|
1204
|
-
document.head.appendChild(el);
|
|
1205
|
-
styleRef.current = el;
|
|
1206
|
-
}
|
|
1207
|
-
styleRef.current.textContent = css;
|
|
1208
|
-
return () => {
|
|
1209
|
-
if (styleRef.current) {
|
|
1210
|
-
styleRef.current.remove();
|
|
1211
|
-
styleRef.current = null;
|
|
1212
|
-
}
|
|
1213
|
-
};
|
|
1214
|
-
}, [theme?.preset, theme?.tokens, resolvedScheme]);
|
|
1215
1397
|
useEffect(() => {
|
|
1216
1398
|
if (!preset.fontImports?.length) return;
|
|
1217
1399
|
const links = [];
|
|
@@ -1230,8 +1412,22 @@ function ElevasisCoreProvider({
|
|
|
1230
1412
|
document.documentElement.style.removeProperty("--elevasis-font-family-subtitle");
|
|
1231
1413
|
};
|
|
1232
1414
|
}, [preset.fontImports, preset.subtitleFontFamily, preset.mantine?.headings?.fontFamily, preset.mantine?.fontFamily]);
|
|
1415
|
+
const resolvedTheme = useMemo(() => {
|
|
1416
|
+
const primaryHex = theme?.tokens?.primary ?? preset.dark.primary;
|
|
1417
|
+
const primaryOverride = {
|
|
1418
|
+
primaryColor: "primary",
|
|
1419
|
+
colors: { primary: generateShades(primaryHex) }
|
|
1420
|
+
};
|
|
1421
|
+
let base = mergeThemeOverrides(mantineThemeOverride, primaryOverride);
|
|
1422
|
+
if (preset.mantine) base = mergeThemeOverrides(base, preset.mantine);
|
|
1423
|
+
return theme?.mantine ? mergeThemeOverrides(base, theme.mantine) : base;
|
|
1424
|
+
}, [theme?.mantine, preset, theme?.tokens?.primary]);
|
|
1425
|
+
const cssVariablesResolver = useMemo(
|
|
1426
|
+
() => createCssVariablesResolver(theme?.tokens, theme?.preset),
|
|
1427
|
+
[theme?.tokens, theme?.preset]
|
|
1428
|
+
);
|
|
1233
1429
|
const content = apiUrl ? /* @__PURE__ */ jsx(
|
|
1234
|
-
|
|
1430
|
+
ServiceBridge,
|
|
1235
1431
|
{
|
|
1236
1432
|
apiUrl,
|
|
1237
1433
|
organizationId,
|
|
@@ -1240,13 +1436,33 @@ function ElevasisCoreProvider({
|
|
|
1240
1436
|
children
|
|
1241
1437
|
}
|
|
1242
1438
|
) : children;
|
|
1243
|
-
const AuthInner = auth.mode === "authkit" ? /* @__PURE__ */ jsx(
|
|
1244
|
-
return /* @__PURE__ */ jsx(
|
|
1439
|
+
const AuthInner = auth.mode === "authkit" ? /* @__PURE__ */ jsx(AuthKitInner, { auth, children: content }) : /* @__PURE__ */ jsx(OAuthInner, { auth, children: content });
|
|
1440
|
+
return /* @__PURE__ */ jsx(
|
|
1441
|
+
MantineProvider,
|
|
1442
|
+
{
|
|
1443
|
+
theme: resolvedTheme,
|
|
1444
|
+
defaultColorScheme: resolvedColorScheme,
|
|
1445
|
+
cssVariablesResolver,
|
|
1446
|
+
children: /* @__PURE__ */ jsx(QueryClientProvider, { client: resolvedQueryClient, children: AuthInner })
|
|
1447
|
+
}
|
|
1448
|
+
);
|
|
1449
|
+
}
|
|
1450
|
+
function AuthKitInner({ auth, children }) {
|
|
1451
|
+
return /* @__PURE__ */ jsx(
|
|
1452
|
+
AuthKitProvider,
|
|
1453
|
+
{
|
|
1454
|
+
clientId: auth.clientId,
|
|
1455
|
+
apiHostname: auth.apiHostname ?? "api.workos.com",
|
|
1456
|
+
redirectUri: auth.redirectUri,
|
|
1457
|
+
devMode: auth.devMode ?? false,
|
|
1458
|
+
children: /* @__PURE__ */ jsx(WorkOSAuthBridge, { children })
|
|
1459
|
+
}
|
|
1460
|
+
);
|
|
1245
1461
|
}
|
|
1246
|
-
function
|
|
1462
|
+
function OAuthInner({ auth, children }) {
|
|
1247
1463
|
return /* @__PURE__ */ jsx(OAuthProvider, { config: auth, children });
|
|
1248
1464
|
}
|
|
1249
|
-
function
|
|
1465
|
+
function ServiceBridge({
|
|
1250
1466
|
apiUrl,
|
|
1251
1467
|
organizationId,
|
|
1252
1468
|
isOrganizationReady,
|
|
@@ -1261,11 +1477,11 @@ function CoreServiceBridge({
|
|
|
1261
1477
|
organizationId,
|
|
1262
1478
|
isOrganizationReady: isOrganizationReady ?? !!organizationId,
|
|
1263
1479
|
onError,
|
|
1264
|
-
children: /* @__PURE__ */ jsx(
|
|
1480
|
+
children: /* @__PURE__ */ jsx(ServiceBridgeInner, { apiUrl, organizationId, isOrganizationReady, children })
|
|
1265
1481
|
}
|
|
1266
1482
|
);
|
|
1267
1483
|
}
|
|
1268
|
-
function
|
|
1484
|
+
function ServiceBridgeInner({
|
|
1269
1485
|
apiUrl,
|
|
1270
1486
|
organizationId,
|
|
1271
1487
|
isOrganizationReady,
|
|
@@ -1283,5 +1499,6 @@ function CoreServiceBridgeInner({
|
|
|
1283
1499
|
}
|
|
1284
1500
|
);
|
|
1285
1501
|
}
|
|
1502
|
+
var ElevasisProvider = ElevasisUIProvider;
|
|
1286
1503
|
|
|
1287
|
-
export {
|
|
1504
|
+
export { ElevasisProvider, ElevasisUIProvider, createCssVariablesResolver, generateShades, getPreset, mantineThemeOverride };
|
|
@@ -150,6 +150,7 @@ function OAuthProvider({ config, children }) {
|
|
|
150
150
|
client_id: config.clientId,
|
|
151
151
|
redirect_uri: config.redirectUri,
|
|
152
152
|
response_type: "code",
|
|
153
|
+
provider: config.provider ?? "authkit",
|
|
153
154
|
code_challenge: challenge,
|
|
154
155
|
code_challenge_method: "S256",
|
|
155
156
|
state: oauthState
|
|
@@ -160,7 +161,7 @@ function OAuthProvider({ config, children }) {
|
|
|
160
161
|
window.location.href = `https://api.workos.com/user_management/authorize?${params.toString()}`;
|
|
161
162
|
};
|
|
162
163
|
void start();
|
|
163
|
-
}, [config.clientId, config.redirectUri, config.organizationId]);
|
|
164
|
+
}, [config.clientId, config.redirectUri, config.organizationId, config.provider]);
|
|
164
165
|
useEffect(() => {
|
|
165
166
|
const url = new URL(window.location.href);
|
|
166
167
|
const code = url.searchParams.get("code");
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ApiClientProvider, createUseApiClient } from './chunk-GDV44UWF.js';
|
|
2
|
+
import { ElevasisServiceProvider } from './chunk-KA7LO7U5.js';
|
|
3
|
+
import { OAuthProvider } from './chunk-QSVZP2NU.js';
|
|
4
|
+
import { useAuthContext } from './chunk-7PLEQFHO.js';
|
|
5
|
+
import { lazy, Suspense, useRef } from 'react';
|
|
6
|
+
import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
|
|
7
|
+
import { jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var LazyCoreAuthKitInner = lazy(() => import('./CoreAuthKitInner-KM72EYJS.js').then((m) => ({ default: m.CoreAuthKitInner })));
|
|
10
|
+
var defaultQueryClient = null;
|
|
11
|
+
function getDefaultQueryClient() {
|
|
12
|
+
if (!defaultQueryClient) {
|
|
13
|
+
defaultQueryClient = new QueryClient({
|
|
14
|
+
defaultOptions: { queries: { retry: 1 } }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return defaultQueryClient;
|
|
18
|
+
}
|
|
19
|
+
var defaultUseOrganizations = () => ({ isInitializing: false, isOrgRefreshing: false });
|
|
20
|
+
function ElevasisCoreProvider({
|
|
21
|
+
auth,
|
|
22
|
+
organizationId = null,
|
|
23
|
+
queryClient,
|
|
24
|
+
apiUrl,
|
|
25
|
+
onError,
|
|
26
|
+
isOrganizationReady,
|
|
27
|
+
children
|
|
28
|
+
}) {
|
|
29
|
+
if (auth.mode === "apiKey") {
|
|
30
|
+
throw new Error(
|
|
31
|
+
`ElevasisCoreProvider: auth mode 'apiKey' is not yet implemented. Only 'authkit' and 'oauth' modes are supported.`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
const resolvedQueryClient = queryClient ?? getDefaultQueryClient();
|
|
35
|
+
const content = apiUrl ? /* @__PURE__ */ jsx(
|
|
36
|
+
CoreServiceBridge,
|
|
37
|
+
{
|
|
38
|
+
apiUrl,
|
|
39
|
+
organizationId,
|
|
40
|
+
isOrganizationReady,
|
|
41
|
+
onError,
|
|
42
|
+
children
|
|
43
|
+
}
|
|
44
|
+
) : children;
|
|
45
|
+
const AuthInner = auth.mode === "authkit" ? /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(LazyCoreAuthKitInner, { auth, children: content }) }) : /* @__PURE__ */ jsx(CoreOAuthInner, { auth, children: content });
|
|
46
|
+
return /* @__PURE__ */ jsx(QueryClientProvider, { client: resolvedQueryClient, children: AuthInner });
|
|
47
|
+
}
|
|
48
|
+
function CoreOAuthInner({ auth, children }) {
|
|
49
|
+
return /* @__PURE__ */ jsx(OAuthProvider, { config: auth, children });
|
|
50
|
+
}
|
|
51
|
+
function CoreServiceBridge({
|
|
52
|
+
apiUrl,
|
|
53
|
+
organizationId,
|
|
54
|
+
isOrganizationReady,
|
|
55
|
+
onError,
|
|
56
|
+
children
|
|
57
|
+
}) {
|
|
58
|
+
const { getAccessToken } = useAuthContext();
|
|
59
|
+
return /* @__PURE__ */ jsx(
|
|
60
|
+
ApiClientProvider,
|
|
61
|
+
{
|
|
62
|
+
getAccessToken,
|
|
63
|
+
organizationId,
|
|
64
|
+
isOrganizationReady: isOrganizationReady ?? !!organizationId,
|
|
65
|
+
onError,
|
|
66
|
+
children: /* @__PURE__ */ jsx(CoreServiceBridgeInner, { apiUrl, organizationId, isOrganizationReady, children })
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
function CoreServiceBridgeInner({
|
|
71
|
+
apiUrl,
|
|
72
|
+
organizationId,
|
|
73
|
+
isOrganizationReady,
|
|
74
|
+
children
|
|
75
|
+
}) {
|
|
76
|
+
const useApiClient = useRef(createUseApiClient(defaultUseOrganizations, apiUrl)).current;
|
|
77
|
+
const { apiRequest } = useApiClient();
|
|
78
|
+
return /* @__PURE__ */ jsx(
|
|
79
|
+
ElevasisServiceProvider,
|
|
80
|
+
{
|
|
81
|
+
apiRequest,
|
|
82
|
+
organizationId,
|
|
83
|
+
isReady: isOrganizationReady ?? !!organizationId,
|
|
84
|
+
children
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { ElevasisCoreProvider };
|
package/dist/index.d.ts
CHANGED
|
@@ -144,6 +144,8 @@ interface OAuthConfig {
|
|
|
144
144
|
tokenStorage?: 'session';
|
|
145
145
|
/** Pre-select organization in WorkOS flow. */
|
|
146
146
|
organizationId?: string;
|
|
147
|
+
/** Auth provider for the authorize request. Defaults to 'authkit' (hosted login UI). */
|
|
148
|
+
provider?: 'authkit' | 'GoogleOAuth' | 'MicrosoftOAuth' | 'GitHubOAuth' | 'AppleOAuth';
|
|
147
149
|
}
|
|
148
150
|
/** Deferred -- will throw at runtime. */
|
|
149
151
|
interface ApiKeyConfig {
|
|
@@ -184,6 +186,12 @@ interface ElevasisCoreProviderProps {
|
|
|
184
186
|
* Command-center passes `!!currentMembership` for its stricter readiness requirement.
|
|
185
187
|
*/
|
|
186
188
|
isOrganizationReady?: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Whether to inject CSS variables, `data-elevasis-scheme` attribute, and font links.
|
|
191
|
+
* Set to `false` when the consumer has its own complete design system and only
|
|
192
|
+
* needs auth + API from this provider. Defaults to `true`.
|
|
193
|
+
*/
|
|
194
|
+
injectStyles?: boolean;
|
|
187
195
|
children: ReactNode;
|
|
188
196
|
}
|
|
189
197
|
interface ElevasisProviderProps {
|
|
@@ -5802,9 +5810,9 @@ declare const ElevasisProvider: typeof ElevasisUIProvider;
|
|
|
5802
5810
|
/**
|
|
5803
5811
|
* Headless root provider for Elevasis-powered applications.
|
|
5804
5812
|
*
|
|
5805
|
-
*
|
|
5806
|
-
*
|
|
5807
|
-
*
|
|
5813
|
+
* Pure auth + API provider with no style side-effects. Does not inject CSS
|
|
5814
|
+
* variables, set `data-elevasis-scheme`, or load fonts. Consumers that need
|
|
5815
|
+
* Elevasis theming should use `ElevasisProvider` (Mantine) instead.
|
|
5808
5816
|
*
|
|
5809
5817
|
* Composes: QueryClientProvider + auth provider + auth bridge.
|
|
5810
5818
|
* When apiUrl is provided, also composes ApiClientProvider + ElevasisServiceProvider.
|
|
@@ -5820,7 +5828,7 @@ declare const ElevasisProvider: typeof ElevasisUIProvider;
|
|
|
5820
5828
|
* </ElevasisCoreProvider>
|
|
5821
5829
|
* ```
|
|
5822
5830
|
*/
|
|
5823
|
-
declare function ElevasisCoreProvider({ auth,
|
|
5831
|
+
declare function ElevasisCoreProvider({ auth, organizationId, queryClient, apiUrl, onError, isOrganizationReady, children }: ElevasisCoreProviderProps): react_jsx_runtime.JSX.Element;
|
|
5824
5832
|
|
|
5825
5833
|
/**
|
|
5826
5834
|
* Hook to access the ElevasisServiceProvider context.
|
package/dist/index.js
CHANGED
|
@@ -20,13 +20,13 @@ export { BaseEdge, BaseNode, GRAPH_CONSTANTS, GlowingHandle, GraphBackground, Gr
|
|
|
20
20
|
export { APIErrorAlert, CollapsibleSection, ContextViewer, CustomSelector, DetailCardSkeleton, EmptyState, JsonViewer, ListSkeleton, NavigationButton, PageNotFound, PageTitleCaption, ResourceCard, StatCard, StatCardSkeleton, StatsCardSkeleton, TabCountBadge, TimeRangeSelector, TrendIndicator, catalogItemToResourceDefinition } from './chunk-OUHGHTE7.js';
|
|
21
21
|
export { StyledMarkdown } from './chunk-3KMDHCAR.js';
|
|
22
22
|
import './chunk-YZ6GTZXL.js';
|
|
23
|
-
export { ElevasisProvider, ElevasisUIProvider, mantineThemeOverride } from './chunk-
|
|
24
|
-
export { ElevasisCoreProvider
|
|
23
|
+
export { ElevasisProvider, ElevasisUIProvider, createCssVariablesResolver, generateShades, getPreset, mantineThemeOverride } from './chunk-B64YDSAY.js';
|
|
24
|
+
export { ElevasisCoreProvider } from './chunk-ZQVPUAGR.js';
|
|
25
25
|
export { ApiClientProvider, createUseApiClient, useApiClientContext } from './chunk-GDV44UWF.js';
|
|
26
26
|
export { ElevasisServiceProvider, useElevasisServices } from './chunk-KA7LO7U5.js';
|
|
27
27
|
export { APIClientError, formatDate, formatErrorMessage, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, isAPIClientError, showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification, validateEmail } from './chunk-7AI5ZYJ4.js';
|
|
28
28
|
export { useSessionCheck as useRefocusSessionCheck, useSessionCheck, useStableAccessToken } from './chunk-HBRMWW6V.js';
|
|
29
29
|
export { WorkOSAuthBridge } from './chunk-NIAVTSMB.js';
|
|
30
|
-
export { useOAuthContext } from './chunk-
|
|
30
|
+
export { useOAuthContext } from './chunk-QSVZP2NU.js';
|
|
31
31
|
export { AuthProvider, useAuthContext } from './chunk-7PLEQFHO.js';
|
|
32
32
|
export { RouterProvider, useRouterContext } from './chunk-Q7DJKLEN.js';
|
package/dist/provider/index.d.ts
CHANGED
|
@@ -94,6 +94,8 @@ interface OAuthConfig {
|
|
|
94
94
|
tokenStorage?: 'session';
|
|
95
95
|
/** Pre-select organization in WorkOS flow. */
|
|
96
96
|
organizationId?: string;
|
|
97
|
+
/** Auth provider for the authorize request. Defaults to 'authkit' (hosted login UI). */
|
|
98
|
+
provider?: 'authkit' | 'GoogleOAuth' | 'MicrosoftOAuth' | 'GitHubOAuth' | 'AppleOAuth';
|
|
97
99
|
}
|
|
98
100
|
/** Deferred -- will throw at runtime. */
|
|
99
101
|
interface ApiKeyConfig {
|
|
@@ -134,6 +136,12 @@ interface ElevasisCoreProviderProps {
|
|
|
134
136
|
* Command-center passes `!!currentMembership` for its stricter readiness requirement.
|
|
135
137
|
*/
|
|
136
138
|
isOrganizationReady?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Whether to inject CSS variables, `data-elevasis-scheme` attribute, and font links.
|
|
141
|
+
* Set to `false` when the consumer has its own complete design system and only
|
|
142
|
+
* needs auth + API from this provider. Defaults to `true`.
|
|
143
|
+
*/
|
|
144
|
+
injectStyles?: boolean;
|
|
137
145
|
children: ReactNode;
|
|
138
146
|
}
|
|
139
147
|
interface ElevasisProviderProps {
|
|
@@ -238,9 +246,9 @@ declare const ElevasisProvider: typeof ElevasisUIProvider;
|
|
|
238
246
|
/**
|
|
239
247
|
* Headless root provider for Elevasis-powered applications.
|
|
240
248
|
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
249
|
+
* Pure auth + API provider with no style side-effects. Does not inject CSS
|
|
250
|
+
* variables, set `data-elevasis-scheme`, or load fonts. Consumers that need
|
|
251
|
+
* Elevasis theming should use `ElevasisProvider` (Mantine) instead.
|
|
244
252
|
*
|
|
245
253
|
* Composes: QueryClientProvider + auth provider + auth bridge.
|
|
246
254
|
* When apiUrl is provided, also composes ApiClientProvider + ElevasisServiceProvider.
|
|
@@ -256,7 +264,7 @@ declare const ElevasisProvider: typeof ElevasisUIProvider;
|
|
|
256
264
|
* </ElevasisCoreProvider>
|
|
257
265
|
* ```
|
|
258
266
|
*/
|
|
259
|
-
declare function ElevasisCoreProvider({ auth,
|
|
267
|
+
declare function ElevasisCoreProvider({ auth, organizationId, queryClient, apiUrl, onError, isOrganizationReady, children }: ElevasisCoreProviderProps): react_jsx_runtime.JSX.Element;
|
|
260
268
|
|
|
261
269
|
/**
|
|
262
270
|
* Hook to access the ElevasisServiceProvider context.
|
package/dist/provider/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ElevasisProvider, ElevasisUIProvider } from '../chunk-
|
|
2
|
-
export { ElevasisCoreProvider } from '../chunk-
|
|
1
|
+
export { ElevasisProvider, ElevasisUIProvider } from '../chunk-B64YDSAY.js';
|
|
2
|
+
export { ElevasisCoreProvider } from '../chunk-ZQVPUAGR.js';
|
|
3
3
|
import '../chunk-GDV44UWF.js';
|
|
4
4
|
export { ElevasisServiceProvider, useElevasisServices } from '../chunk-KA7LO7U5.js';
|
|
5
5
|
import '../chunk-7AI5ZYJ4.js';
|
|
6
6
|
import '../chunk-NIAVTSMB.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-QSVZP2NU.js';
|
|
8
8
|
import '../chunk-7PLEQFHO.js';
|
|
@@ -81,6 +81,8 @@ interface OAuthConfig {
|
|
|
81
81
|
tokenStorage?: 'session';
|
|
82
82
|
/** Pre-select organization in WorkOS flow. */
|
|
83
83
|
organizationId?: string;
|
|
84
|
+
/** Auth provider for the authorize request. Defaults to 'authkit' (hosted login UI). */
|
|
85
|
+
provider?: 'authkit' | 'GoogleOAuth' | 'MicrosoftOAuth' | 'GitHubOAuth' | 'AppleOAuth';
|
|
84
86
|
}
|
|
85
87
|
/** Deferred -- will throw at runtime. */
|
|
86
88
|
interface ApiKeyConfig {
|
|
@@ -121,6 +123,12 @@ interface ElevasisCoreProviderProps {
|
|
|
121
123
|
* Command-center passes `!!currentMembership` for its stricter readiness requirement.
|
|
122
124
|
*/
|
|
123
125
|
isOrganizationReady?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Whether to inject CSS variables, `data-elevasis-scheme` attribute, and font links.
|
|
128
|
+
* Set to `false` when the consumer has its own complete design system and only
|
|
129
|
+
* needs auth + API from this provider. Defaults to `true`.
|
|
130
|
+
*/
|
|
131
|
+
injectStyles?: boolean;
|
|
124
132
|
children: ReactNode;
|
|
125
133
|
}
|
|
126
134
|
/**
|
|
@@ -145,9 +153,9 @@ interface ElevasisServiceProviderProps {
|
|
|
145
153
|
/**
|
|
146
154
|
* Headless root provider for Elevasis-powered applications.
|
|
147
155
|
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
156
|
+
* Pure auth + API provider with no style side-effects. Does not inject CSS
|
|
157
|
+
* variables, set `data-elevasis-scheme`, or load fonts. Consumers that need
|
|
158
|
+
* Elevasis theming should use `ElevasisProvider` (Mantine) instead.
|
|
151
159
|
*
|
|
152
160
|
* Composes: QueryClientProvider + auth provider + auth bridge.
|
|
153
161
|
* When apiUrl is provided, also composes ApiClientProvider + ElevasisServiceProvider.
|
|
@@ -163,7 +171,7 @@ interface ElevasisServiceProviderProps {
|
|
|
163
171
|
* </ElevasisCoreProvider>
|
|
164
172
|
* ```
|
|
165
173
|
*/
|
|
166
|
-
declare function ElevasisCoreProvider({ auth,
|
|
174
|
+
declare function ElevasisCoreProvider({ auth, organizationId, queryClient, apiUrl, onError, isOrganizationReady, children }: ElevasisCoreProviderProps): react_jsx_runtime.JSX.Element;
|
|
167
175
|
|
|
168
176
|
/**
|
|
169
177
|
* Hook to access the ElevasisServiceProvider context.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { ElevasisCoreProvider } from '../chunk-
|
|
1
|
+
export { ElevasisCoreProvider } from '../chunk-ZQVPUAGR.js';
|
|
2
2
|
import '../chunk-GDV44UWF.js';
|
|
3
3
|
export { ElevasisServiceProvider, useElevasisServices } from '../chunk-KA7LO7U5.js';
|
|
4
4
|
import '../chunk-7AI5ZYJ4.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-QSVZP2NU.js';
|
|
6
6
|
import '../chunk-7PLEQFHO.js';
|
package/package.json
CHANGED
package/dist/chunk-QGEFP2EU.js
DELETED
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
import { getPreset, generateShades, createCssVariablesResolver } from './chunk-XVPEDNIM.js';
|
|
2
|
-
import { ApiClientProvider, createUseApiClient } from './chunk-GDV44UWF.js';
|
|
3
|
-
import { ElevasisServiceProvider } from './chunk-KA7LO7U5.js';
|
|
4
|
-
import { WorkOSAuthBridge } from './chunk-NIAVTSMB.js';
|
|
5
|
-
import { OAuthProvider } from './chunk-KSG4C5DD.js';
|
|
6
|
-
import { useAuthContext } from './chunk-7PLEQFHO.js';
|
|
7
|
-
import { useMemo, useEffect, useRef } from 'react';
|
|
8
|
-
import { Tooltip, Text, Tabs, Table, Stack, SimpleGrid, Select, Combobox, SegmentedControl, ScrollArea, Paper, Popover, Notification, Modal, Menu, Input, HoverCard, Group, Grid, Flex, Code, Divider, Card, Button, Accordion, createTheme, mergeThemeOverrides, MantineProvider } from '@mantine/core';
|
|
9
|
-
import { QueryClientProvider, QueryClient } from '@tanstack/react-query';
|
|
10
|
-
import { AuthKitProvider } from '@workos-inc/authkit-react';
|
|
11
|
-
import '@mantine/core/styles.css';
|
|
12
|
-
import '@mantine/notifications/styles.css';
|
|
13
|
-
import { jsx } from 'react/jsx-runtime';
|
|
14
|
-
|
|
15
|
-
var DEFAULT_SIZE = "sm";
|
|
16
|
-
var glassBase = {
|
|
17
|
-
backdropFilter: "var(--glass-blur)",
|
|
18
|
-
WebkitBackdropFilter: "var(--glass-blur)",
|
|
19
|
-
border: "1px solid var(--color-border)"
|
|
20
|
-
};
|
|
21
|
-
var componentThemes = {
|
|
22
|
-
Accordion: Accordion.extend({
|
|
23
|
-
styles: {
|
|
24
|
-
item: {
|
|
25
|
-
borderColor: "var(--color-border)"
|
|
26
|
-
},
|
|
27
|
-
content: {
|
|
28
|
-
backgroundColor: "var(--color-surface)"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}),
|
|
32
|
-
Button: Button.extend({
|
|
33
|
-
styles: {
|
|
34
|
-
root: {
|
|
35
|
-
transition: `all var(--duration-fast) var(--easing)`
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}),
|
|
39
|
-
Card: Card.extend({
|
|
40
|
-
defaultProps: {
|
|
41
|
-
p: DEFAULT_SIZE
|
|
42
|
-
},
|
|
43
|
-
styles: {
|
|
44
|
-
root: {
|
|
45
|
-
backgroundColor: "var(--glass-background)",
|
|
46
|
-
...glassBase,
|
|
47
|
-
boxShadow: "var(--card-shadow)"
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}),
|
|
51
|
-
// Checkbox styles are in custom.css to support :checked pseudo-selector
|
|
52
|
-
Divider: Divider.extend({
|
|
53
|
-
styles: {
|
|
54
|
-
root: {
|
|
55
|
-
borderColor: "var(--color-border)"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}),
|
|
59
|
-
Code: Code.extend({
|
|
60
|
-
styles: {
|
|
61
|
-
root: {
|
|
62
|
-
backgroundColor: "var(--color-surface)",
|
|
63
|
-
border: "1px solid var(--color-border)"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}),
|
|
67
|
-
Flex: Flex.extend({
|
|
68
|
-
defaultProps: {
|
|
69
|
-
gap: DEFAULT_SIZE
|
|
70
|
-
}
|
|
71
|
-
}),
|
|
72
|
-
Grid: Grid.extend({
|
|
73
|
-
defaultProps: {
|
|
74
|
-
gutter: DEFAULT_SIZE
|
|
75
|
-
}
|
|
76
|
-
}),
|
|
77
|
-
Group: Group.extend({
|
|
78
|
-
defaultProps: {
|
|
79
|
-
gap: DEFAULT_SIZE
|
|
80
|
-
}
|
|
81
|
-
}),
|
|
82
|
-
HoverCard: HoverCard.extend({
|
|
83
|
-
styles: {
|
|
84
|
-
dropdown: {
|
|
85
|
-
backgroundColor: "var(--color-surface)",
|
|
86
|
-
border: "1px solid var(--color-border)",
|
|
87
|
-
boxShadow: "var(--standard-box-shadow)"
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}),
|
|
91
|
-
Input: Input.extend({
|
|
92
|
-
styles: {
|
|
93
|
-
input: {
|
|
94
|
-
backgroundColor: "var(--color-surface)",
|
|
95
|
-
border: "none",
|
|
96
|
-
borderBottom: "1px solid var(--color-border)",
|
|
97
|
-
borderRadius: "0"
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}),
|
|
101
|
-
Menu: Menu.extend({
|
|
102
|
-
styles: {
|
|
103
|
-
dropdown: {
|
|
104
|
-
background: "var(--color-surface)",
|
|
105
|
-
border: "1px solid var(--color-border)"
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}),
|
|
109
|
-
Modal: Modal.extend({
|
|
110
|
-
styles: {
|
|
111
|
-
content: {
|
|
112
|
-
backgroundColor: "var(--color-surface)",
|
|
113
|
-
border: "1px solid var(--color-border)"
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}),
|
|
117
|
-
Notification: Notification.extend({
|
|
118
|
-
styles: {
|
|
119
|
-
root: {
|
|
120
|
-
backgroundColor: "color-mix(in srgb, var(--color-surface) 90%, transparent)",
|
|
121
|
-
...glassBase
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}),
|
|
125
|
-
Popover: Popover.extend({
|
|
126
|
-
styles: {
|
|
127
|
-
dropdown: {
|
|
128
|
-
backgroundColor: "var(--color-surface)",
|
|
129
|
-
...glassBase,
|
|
130
|
-
boxShadow: "var(--standard-box-shadow)"
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}),
|
|
134
|
-
Paper: Paper.extend({
|
|
135
|
-
styles: {
|
|
136
|
-
root: {
|
|
137
|
-
backgroundColor: "var(--glass-background)",
|
|
138
|
-
...glassBase,
|
|
139
|
-
boxShadow: "var(--card-shadow)",
|
|
140
|
-
padding: `var(--mantine-spacing-${DEFAULT_SIZE})`
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}),
|
|
144
|
-
ScrollArea: ScrollArea.extend({
|
|
145
|
-
defaultProps: {
|
|
146
|
-
scrollbarSize: 8
|
|
147
|
-
},
|
|
148
|
-
styles: {
|
|
149
|
-
scrollbar: {
|
|
150
|
-
background: "transparent",
|
|
151
|
-
'&[data-orientation="vertical"]': {
|
|
152
|
-
width: "8px"
|
|
153
|
-
},
|
|
154
|
-
'&[data-orientation="horizontal"]': {
|
|
155
|
-
height: "8px"
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
thumb: {
|
|
159
|
-
borderRadius: "var(--mantine-radius-default)",
|
|
160
|
-
background: "color-mix(in srgb, var(--color-text-subtle) 50%, var(--color-border))",
|
|
161
|
-
"&:hover": {
|
|
162
|
-
background: "var(--color-text-subtle)"
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}),
|
|
167
|
-
SegmentedControl: SegmentedControl.extend({
|
|
168
|
-
styles: {
|
|
169
|
-
root: {
|
|
170
|
-
backgroundColor: "var(--color-surface)"
|
|
171
|
-
},
|
|
172
|
-
indicator: {
|
|
173
|
-
backgroundColor: "var(--color-surface-hover)",
|
|
174
|
-
boxShadow: "var(--standard-box-shadow)"
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}),
|
|
178
|
-
Combobox: Combobox.extend({
|
|
179
|
-
styles: {
|
|
180
|
-
dropdown: {
|
|
181
|
-
backgroundColor: "red"
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}),
|
|
185
|
-
Select: Select.extend({
|
|
186
|
-
styles: {
|
|
187
|
-
dropdown: {
|
|
188
|
-
backgroundColor: "var(--color-surface)"
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}),
|
|
192
|
-
// Switch styles are in custom.css to support [data-checked] attribute selector
|
|
193
|
-
SimpleGrid: SimpleGrid.extend({
|
|
194
|
-
defaultProps: {
|
|
195
|
-
spacing: DEFAULT_SIZE,
|
|
196
|
-
verticalSpacing: DEFAULT_SIZE
|
|
197
|
-
}
|
|
198
|
-
}),
|
|
199
|
-
Stack: Stack.extend({
|
|
200
|
-
defaultProps: {
|
|
201
|
-
gap: DEFAULT_SIZE
|
|
202
|
-
}
|
|
203
|
-
}),
|
|
204
|
-
Table: Table.extend({
|
|
205
|
-
defaultProps: {
|
|
206
|
-
highlightOnHover: true
|
|
207
|
-
},
|
|
208
|
-
styles: {
|
|
209
|
-
table: {
|
|
210
|
-
"--table-border-color": "var(--color-border)",
|
|
211
|
-
"--table-highlight-on-hover-color": "var(--color-surface-hover)"
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}),
|
|
215
|
-
Tabs: Tabs.extend({}),
|
|
216
|
-
Text: Text.extend({
|
|
217
|
-
styles: {
|
|
218
|
-
root: {
|
|
219
|
-
fontFamily: 'Roboto, Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}),
|
|
223
|
-
// Timeline styles are in custom.css to override color-scheme-specific selectors
|
|
224
|
-
Tooltip: Tooltip.extend({
|
|
225
|
-
styles: {
|
|
226
|
-
tooltip: {
|
|
227
|
-
backgroundColor: "var(--color-surface)",
|
|
228
|
-
color: "var(--color-text)",
|
|
229
|
-
border: "1px solid var(--color-border)"
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
})
|
|
233
|
-
// Pagination styles are in custom.css to support :not([data-active]) selector
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
// src/theme/MantineThemeOverride.ts
|
|
237
|
-
var mantineThemeOverride = createTheme({
|
|
238
|
-
defaultRadius: "xs",
|
|
239
|
-
fontFamily: 'Roboto, Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
|
|
240
|
-
cursorType: "pointer",
|
|
241
|
-
spacing: {
|
|
242
|
-
xs: "0.5rem",
|
|
243
|
-
sm: "0.75rem",
|
|
244
|
-
md: "1rem",
|
|
245
|
-
lg: "1.5rem",
|
|
246
|
-
xl: "2rem"
|
|
247
|
-
},
|
|
248
|
-
radius: {
|
|
249
|
-
xs: "0.25rem",
|
|
250
|
-
sm: "0.5rem",
|
|
251
|
-
md: "0.75rem",
|
|
252
|
-
lg: "1rem",
|
|
253
|
-
xl: "1.5rem"
|
|
254
|
-
},
|
|
255
|
-
fontSizes: {
|
|
256
|
-
xs: "0.75rem",
|
|
257
|
-
sm: "0.875rem",
|
|
258
|
-
md: "1rem",
|
|
259
|
-
lg: "1.125rem",
|
|
260
|
-
xl: "1.25rem"
|
|
261
|
-
},
|
|
262
|
-
components: componentThemes
|
|
263
|
-
});
|
|
264
|
-
var defaultQueryClient = null;
|
|
265
|
-
function getDefaultQueryClient() {
|
|
266
|
-
if (!defaultQueryClient) {
|
|
267
|
-
defaultQueryClient = new QueryClient({
|
|
268
|
-
defaultOptions: { queries: { retry: 1 } }
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
return defaultQueryClient;
|
|
272
|
-
}
|
|
273
|
-
var defaultUseOrganizations = () => ({ isInitializing: false, isOrgRefreshing: false });
|
|
274
|
-
function ElevasisUIProvider({
|
|
275
|
-
auth,
|
|
276
|
-
theme,
|
|
277
|
-
organizationId = null,
|
|
278
|
-
queryClient,
|
|
279
|
-
apiUrl,
|
|
280
|
-
onError,
|
|
281
|
-
isOrganizationReady,
|
|
282
|
-
children
|
|
283
|
-
}) {
|
|
284
|
-
if (auth.mode === "apiKey") {
|
|
285
|
-
throw new Error(
|
|
286
|
-
`ElevasisUIProvider: auth mode 'apiKey' is not yet implemented. Only 'authkit' and 'oauth' modes are supported.`
|
|
287
|
-
);
|
|
288
|
-
}
|
|
289
|
-
const resolvedQueryClient = queryClient ?? getDefaultQueryClient();
|
|
290
|
-
const resolvedColorScheme = theme?.colorScheme ?? "dark";
|
|
291
|
-
const preset = useMemo(() => getPreset(theme?.preset ?? "default"), [theme?.preset]);
|
|
292
|
-
useEffect(() => {
|
|
293
|
-
if (!preset.fontImports?.length) return;
|
|
294
|
-
const links = [];
|
|
295
|
-
for (const href of preset.fontImports) {
|
|
296
|
-
if (document.querySelector(`link[href="${href}"]`)) continue;
|
|
297
|
-
const link = document.createElement("link");
|
|
298
|
-
link.rel = "stylesheet";
|
|
299
|
-
link.href = href;
|
|
300
|
-
document.head.appendChild(link);
|
|
301
|
-
links.push(link);
|
|
302
|
-
}
|
|
303
|
-
const subtitleFont = preset.subtitleFontFamily ?? preset.mantine?.headings?.fontFamily ?? preset.mantine?.fontFamily ?? "";
|
|
304
|
-
document.documentElement.style.setProperty("--elevasis-font-family-subtitle", subtitleFont);
|
|
305
|
-
return () => {
|
|
306
|
-
links.forEach((l) => l.remove());
|
|
307
|
-
document.documentElement.style.removeProperty("--elevasis-font-family-subtitle");
|
|
308
|
-
};
|
|
309
|
-
}, [preset.fontImports, preset.subtitleFontFamily, preset.mantine?.headings?.fontFamily, preset.mantine?.fontFamily]);
|
|
310
|
-
const resolvedTheme = useMemo(() => {
|
|
311
|
-
const primaryHex = theme?.tokens?.primary ?? preset.dark.primary;
|
|
312
|
-
const primaryOverride = {
|
|
313
|
-
primaryColor: "primary",
|
|
314
|
-
colors: { primary: generateShades(primaryHex) }
|
|
315
|
-
};
|
|
316
|
-
let base = mergeThemeOverrides(mantineThemeOverride, primaryOverride);
|
|
317
|
-
if (preset.mantine) base = mergeThemeOverrides(base, preset.mantine);
|
|
318
|
-
return theme?.mantine ? mergeThemeOverrides(base, theme.mantine) : base;
|
|
319
|
-
}, [theme?.mantine, preset, theme?.tokens?.primary]);
|
|
320
|
-
const cssVariablesResolver = useMemo(
|
|
321
|
-
() => createCssVariablesResolver(theme?.tokens, theme?.preset),
|
|
322
|
-
[theme?.tokens, theme?.preset]
|
|
323
|
-
);
|
|
324
|
-
const content = apiUrl ? /* @__PURE__ */ jsx(
|
|
325
|
-
ServiceBridge,
|
|
326
|
-
{
|
|
327
|
-
apiUrl,
|
|
328
|
-
organizationId,
|
|
329
|
-
isOrganizationReady,
|
|
330
|
-
onError,
|
|
331
|
-
children
|
|
332
|
-
}
|
|
333
|
-
) : children;
|
|
334
|
-
const AuthInner = auth.mode === "authkit" ? /* @__PURE__ */ jsx(AuthKitInner, { auth, children: content }) : /* @__PURE__ */ jsx(OAuthInner, { auth, children: content });
|
|
335
|
-
return /* @__PURE__ */ jsx(
|
|
336
|
-
MantineProvider,
|
|
337
|
-
{
|
|
338
|
-
theme: resolvedTheme,
|
|
339
|
-
defaultColorScheme: resolvedColorScheme,
|
|
340
|
-
cssVariablesResolver,
|
|
341
|
-
children: /* @__PURE__ */ jsx(QueryClientProvider, { client: resolvedQueryClient, children: AuthInner })
|
|
342
|
-
}
|
|
343
|
-
);
|
|
344
|
-
}
|
|
345
|
-
function AuthKitInner({ auth, children }) {
|
|
346
|
-
return /* @__PURE__ */ jsx(
|
|
347
|
-
AuthKitProvider,
|
|
348
|
-
{
|
|
349
|
-
clientId: auth.clientId,
|
|
350
|
-
apiHostname: auth.apiHostname ?? "api.workos.com",
|
|
351
|
-
redirectUri: auth.redirectUri,
|
|
352
|
-
devMode: auth.devMode ?? false,
|
|
353
|
-
children: /* @__PURE__ */ jsx(WorkOSAuthBridge, { children })
|
|
354
|
-
}
|
|
355
|
-
);
|
|
356
|
-
}
|
|
357
|
-
function OAuthInner({ auth, children }) {
|
|
358
|
-
return /* @__PURE__ */ jsx(OAuthProvider, { config: auth, children });
|
|
359
|
-
}
|
|
360
|
-
function ServiceBridge({
|
|
361
|
-
apiUrl,
|
|
362
|
-
organizationId,
|
|
363
|
-
isOrganizationReady,
|
|
364
|
-
onError,
|
|
365
|
-
children
|
|
366
|
-
}) {
|
|
367
|
-
const { getAccessToken } = useAuthContext();
|
|
368
|
-
return /* @__PURE__ */ jsx(
|
|
369
|
-
ApiClientProvider,
|
|
370
|
-
{
|
|
371
|
-
getAccessToken,
|
|
372
|
-
organizationId,
|
|
373
|
-
isOrganizationReady: isOrganizationReady ?? !!organizationId,
|
|
374
|
-
onError,
|
|
375
|
-
children: /* @__PURE__ */ jsx(ServiceBridgeInner, { apiUrl, organizationId, isOrganizationReady, children })
|
|
376
|
-
}
|
|
377
|
-
);
|
|
378
|
-
}
|
|
379
|
-
function ServiceBridgeInner({
|
|
380
|
-
apiUrl,
|
|
381
|
-
organizationId,
|
|
382
|
-
isOrganizationReady,
|
|
383
|
-
children
|
|
384
|
-
}) {
|
|
385
|
-
const useApiClient = useRef(createUseApiClient(defaultUseOrganizations, apiUrl)).current;
|
|
386
|
-
const { apiRequest } = useApiClient();
|
|
387
|
-
return /* @__PURE__ */ jsx(
|
|
388
|
-
ElevasisServiceProvider,
|
|
389
|
-
{
|
|
390
|
-
apiRequest,
|
|
391
|
-
organizationId,
|
|
392
|
-
isReady: isOrganizationReady ?? !!organizationId,
|
|
393
|
-
children
|
|
394
|
-
}
|
|
395
|
-
);
|
|
396
|
-
}
|
|
397
|
-
var ElevasisProvider = ElevasisUIProvider;
|
|
398
|
-
|
|
399
|
-
export { ElevasisProvider, ElevasisUIProvider, mantineThemeOverride };
|