@workos-inc/widgets 1.5.0 → 1.6.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.
- package/CHANGELOG.md +30 -8
- package/dist/cjs/admin-portal-domain-verification.client.cjs +34 -20
- package/dist/cjs/admin-portal-domain-verification.client.cjs.map +1 -1
- package/dist/cjs/admin-portal-domain-verification.client.d.cts +3 -2
- package/dist/cjs/{admin-portal-sso-connection-client.cjs → admin-portal-sso-connection.client.cjs} +61 -35
- package/dist/cjs/admin-portal-sso-connection.client.cjs.map +1 -0
- package/dist/cjs/admin-portal-sso-connection.client.d.cts +16 -0
- package/dist/cjs/api/api-provider.cjs +27 -19
- package/dist/cjs/api/api-provider.cjs.map +1 -1
- package/dist/cjs/api/api-provider.d.cts +5 -4
- package/dist/cjs/api/endpoint.cjs +62 -2
- package/dist/cjs/api/endpoint.cjs.map +1 -1
- package/dist/cjs/api/endpoint.d.cts +62 -1
- package/dist/cjs/api/utils.cjs +10 -0
- package/dist/cjs/api/utils.cjs.map +1 -1
- package/dist/cjs/api/utils.d.cts +7 -2
- package/dist/cjs/api/widgets-api-client.cjs +11 -5
- package/dist/cjs/api/widgets-api-client.cjs.map +1 -1
- package/dist/cjs/{api-keys-client.cjs → api-keys.client.cjs} +45 -33
- package/dist/cjs/api-keys.client.cjs.map +1 -0
- package/dist/cjs/api-keys.client.d.cts +15 -0
- package/dist/cjs/index.cjs +9 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +6 -2
- package/dist/cjs/lib/add-mfa-dialog.cjs +1 -1
- package/dist/cjs/lib/add-mfa-dialog.cjs.map +1 -1
- package/dist/cjs/lib/admin-portal-domain-verification.cjs +18 -12
- package/dist/cjs/lib/admin-portal-domain-verification.cjs.map +1 -1
- package/dist/cjs/lib/admin-portal-domain-verification.d.cts +10 -6
- package/dist/cjs/lib/admin-portal-sso-connection.cjs +84 -106
- package/dist/cjs/lib/admin-portal-sso-connection.cjs.map +1 -1
- package/dist/cjs/lib/admin-portal-sso-connection.d.cts +13 -6
- package/dist/cjs/lib/api-keys/api-keys.cjs +70 -66
- package/dist/cjs/lib/api-keys/api-keys.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/api-keys.d.cts +16 -8
- package/dist/cjs/lib/card-list.cjs.map +1 -0
- package/dist/cjs/lib/constants.cjs +5 -2
- package/dist/cjs/lib/constants.cjs.map +1 -1
- package/dist/cjs/lib/constants.d.cts +2 -1
- package/dist/cjs/lib/elevated-access.cjs.map +1 -1
- package/dist/cjs/lib/empty-state.cjs +24 -8
- package/dist/cjs/lib/empty-state.cjs.map +1 -1
- package/dist/cjs/lib/empty-state.d.cts +6 -2
- package/dist/cjs/lib/errors.cjs +1 -1
- package/dist/cjs/lib/errors.cjs.map +1 -1
- package/dist/cjs/lib/generic-error.cjs +56 -58
- package/dist/cjs/lib/generic-error.cjs.map +1 -1
- package/dist/cjs/lib/generic-error.d.cts +10 -3
- package/dist/cjs/lib/identity-providers.cjs +2 -1
- package/dist/cjs/lib/identity-providers.cjs.map +1 -1
- package/dist/cjs/lib/identity-providers.d.cts +2 -2
- package/dist/cjs/lib/oauth-icons.cjs +12 -7
- package/dist/cjs/lib/oauth-icons.cjs.map +1 -1
- package/dist/cjs/lib/oauth-icons.d.cts +7 -3
- package/dist/cjs/lib/organization-switcher.cjs +62 -9
- package/dist/cjs/lib/organization-switcher.cjs.map +1 -1
- package/dist/cjs/lib/organization-switcher.d.cts +12 -9
- package/dist/cjs/lib/otp-input.cjs +1 -1
- package/dist/cjs/lib/otp-input.cjs.map +1 -1
- package/dist/cjs/lib/pipes.cjs +343 -0
- package/dist/cjs/lib/pipes.cjs.map +1 -0
- package/dist/cjs/lib/pipes.d.cts +19 -0
- package/dist/cjs/lib/provider-icon.cjs +0 -6
- package/dist/cjs/lib/provider-icon.cjs.map +1 -1
- package/dist/cjs/lib/provider-icon.d.cts +4 -1
- package/dist/cjs/lib/save-button.cjs.map +1 -1
- package/dist/cjs/lib/use-permissions.cjs +7 -14
- package/dist/cjs/lib/use-permissions.cjs.map +1 -1
- package/dist/cjs/lib/use-permissions.d.cts +1 -1
- package/dist/cjs/lib/user-profile.cjs +77 -83
- package/dist/cjs/lib/user-profile.cjs.map +1 -1
- package/dist/cjs/lib/user-profile.d.cts +11 -7
- package/dist/cjs/lib/user-security.cjs +31 -25
- package/dist/cjs/lib/user-security.cjs.map +1 -1
- package/dist/cjs/lib/user-security.d.cts +10 -7
- package/dist/cjs/lib/user-sessions.cjs +20 -10
- package/dist/cjs/lib/user-sessions.cjs.map +1 -1
- package/dist/cjs/lib/user-sessions.d.cts +10 -6
- package/dist/cjs/lib/users-management.cjs +224 -216
- package/dist/cjs/lib/users-management.cjs.map +1 -1
- package/dist/cjs/lib/users-management.d.cts +10 -7
- package/dist/cjs/lib/utils.cjs +43 -0
- package/dist/cjs/lib/utils.cjs.map +1 -1
- package/dist/cjs/lib/utils.d.cts +29 -2
- package/dist/cjs/organization-switcher.client.cjs +47 -20
- package/dist/cjs/organization-switcher.client.cjs.map +1 -1
- package/dist/cjs/organization-switcher.client.d.cts +2 -1
- package/dist/cjs/pipes.client.cjs +64 -0
- package/dist/cjs/pipes.client.cjs.map +1 -0
- package/dist/cjs/pipes.client.d.cts +15 -0
- package/dist/cjs/user-profile.client.cjs +29 -16
- package/dist/cjs/user-profile.client.cjs.map +1 -1
- package/dist/cjs/user-profile.client.d.cts +4 -3
- package/dist/cjs/user-security.client.cjs +32 -14
- package/dist/cjs/user-security.client.cjs.map +1 -1
- package/dist/cjs/user-security.client.d.cts +3 -2
- package/dist/cjs/user-sessions.client.cjs +42 -28
- package/dist/cjs/user-sessions.client.cjs.map +1 -1
- package/dist/cjs/user-sessions.client.d.cts +4 -2
- package/dist/cjs/users-management.client.cjs +38 -27
- package/dist/cjs/users-management.client.cjs.map +1 -1
- package/dist/cjs/users-management.client.d.cts +3 -2
- package/dist/cjs/workos-widgets.client.cjs +7 -12
- package/dist/cjs/workos-widgets.client.cjs.map +1 -1
- package/dist/css/lib/provider-icon.css +16 -11
- package/dist/esm/admin-portal-domain-verification.client.d.ts +3 -2
- package/dist/esm/admin-portal-domain-verification.client.js +34 -21
- package/dist/esm/admin-portal-domain-verification.client.js.map +1 -1
- package/dist/esm/admin-portal-sso-connection.client.d.ts +16 -0
- package/dist/esm/{admin-portal-sso-connection-client.js → admin-portal-sso-connection.client.js} +61 -36
- package/dist/esm/admin-portal-sso-connection.client.js.map +1 -0
- package/dist/esm/api/api-provider.d.ts +5 -4
- package/dist/esm/api/api-provider.js +26 -19
- package/dist/esm/api/api-provider.js.map +1 -1
- package/dist/esm/api/endpoint.d.ts +62 -1
- package/dist/esm/api/endpoint.js +56 -2
- package/dist/esm/api/endpoint.js.map +1 -1
- package/dist/esm/api/utils.d.ts +7 -2
- package/dist/esm/api/utils.js +9 -0
- package/dist/esm/api/utils.js.map +1 -1
- package/dist/esm/api/widgets-api-client.js +11 -5
- package/dist/esm/api/widgets-api-client.js.map +1 -1
- package/dist/esm/api-keys.client.d.ts +15 -0
- package/dist/esm/api-keys.client.js +75 -0
- package/dist/esm/api-keys.client.js.map +1 -0
- package/dist/esm/index.d.ts +6 -2
- package/dist/esm/index.js +9 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/add-mfa-dialog.js +1 -1
- package/dist/esm/lib/add-mfa-dialog.js.map +1 -1
- package/dist/esm/lib/admin-portal-domain-verification.d.ts +10 -6
- package/dist/esm/lib/admin-portal-domain-verification.js +18 -12
- package/dist/esm/lib/admin-portal-domain-verification.js.map +1 -1
- package/dist/esm/lib/admin-portal-sso-connection.d.ts +13 -6
- package/dist/esm/lib/admin-portal-sso-connection.js +88 -107
- package/dist/esm/lib/admin-portal-sso-connection.js.map +1 -1
- package/dist/esm/lib/api-keys/api-keys.d.ts +16 -8
- package/dist/esm/lib/api-keys/api-keys.js +69 -54
- package/dist/esm/lib/api-keys/api-keys.js.map +1 -1
- package/dist/esm/lib/card-list.js.map +1 -0
- package/dist/esm/lib/constants.d.ts +2 -1
- package/dist/esm/lib/constants.js +3 -1
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/elevated-access.js.map +1 -1
- package/dist/esm/lib/empty-state.d.ts +6 -2
- package/dist/esm/lib/empty-state.js +24 -8
- package/dist/esm/lib/empty-state.js.map +1 -1
- package/dist/esm/lib/errors.js +1 -1
- package/dist/esm/lib/errors.js.map +1 -1
- package/dist/esm/lib/generic-error.d.ts +10 -3
- package/dist/esm/lib/generic-error.js +56 -60
- package/dist/esm/lib/generic-error.js.map +1 -1
- package/dist/esm/lib/identity-providers.d.ts +2 -2
- package/dist/esm/lib/identity-providers.js +2 -1
- package/dist/esm/lib/identity-providers.js.map +1 -1
- package/dist/esm/lib/oauth-icons.d.ts +7 -3
- package/dist/esm/lib/oauth-icons.js +11 -6
- package/dist/esm/lib/oauth-icons.js.map +1 -1
- package/dist/esm/lib/organization-switcher.d.ts +12 -9
- package/dist/esm/lib/organization-switcher.js +54 -9
- package/dist/esm/lib/organization-switcher.js.map +1 -1
- package/dist/esm/lib/otp-input.js +1 -1
- package/dist/esm/lib/otp-input.js.map +1 -1
- package/dist/esm/lib/pipes.d.ts +19 -0
- package/dist/esm/lib/pipes.js +334 -0
- package/dist/esm/lib/pipes.js.map +1 -0
- package/dist/esm/lib/provider-icon.d.ts +4 -1
- package/dist/esm/lib/provider-icon.js +0 -8
- package/dist/esm/lib/provider-icon.js.map +1 -1
- package/dist/esm/lib/save-button.js.map +1 -1
- package/dist/esm/lib/use-permissions.d.ts +1 -1
- package/dist/esm/lib/use-permissions.js +8 -15
- package/dist/esm/lib/use-permissions.js.map +1 -1
- package/dist/esm/lib/user-profile.d.ts +11 -7
- package/dist/esm/lib/user-profile.js +82 -75
- package/dist/esm/lib/user-profile.js.map +1 -1
- package/dist/esm/lib/user-security.d.ts +10 -7
- package/dist/esm/lib/user-security.js +35 -26
- package/dist/esm/lib/user-security.js.map +1 -1
- package/dist/esm/lib/user-sessions.d.ts +10 -6
- package/dist/esm/lib/user-sessions.js +21 -10
- package/dist/esm/lib/user-sessions.js.map +1 -1
- package/dist/esm/lib/users-management.d.ts +10 -7
- package/dist/esm/lib/users-management.js +230 -217
- package/dist/esm/lib/users-management.js.map +1 -1
- package/dist/esm/lib/utils.d.ts +29 -2
- package/dist/esm/lib/utils.js +46 -1
- package/dist/esm/lib/utils.js.map +1 -1
- package/dist/esm/organization-switcher.client.d.ts +2 -1
- package/dist/esm/organization-switcher.client.js +47 -21
- package/dist/esm/organization-switcher.client.js.map +1 -1
- package/dist/esm/pipes.client.d.ts +15 -0
- package/dist/esm/pipes.client.js +42 -0
- package/dist/esm/pipes.client.js.map +1 -0
- package/dist/esm/user-profile.client.d.ts +4 -3
- package/dist/esm/user-profile.client.js +29 -17
- package/dist/esm/user-profile.client.js.map +1 -1
- package/dist/esm/user-security.client.d.ts +3 -2
- package/dist/esm/user-security.client.js +32 -15
- package/dist/esm/user-security.client.js.map +1 -1
- package/dist/esm/user-sessions.client.d.ts +4 -2
- package/dist/esm/user-sessions.client.js +43 -30
- package/dist/esm/user-sessions.client.js.map +1 -1
- package/dist/esm/users-management.client.d.ts +3 -2
- package/dist/esm/users-management.client.js +38 -28
- package/dist/esm/users-management.client.js.map +1 -1
- package/dist/esm/workos-widgets.client.js +7 -12
- package/dist/esm/workos-widgets.client.js.map +1 -1
- package/package.json +20 -10
- package/dist/cjs/admin-portal-sso-connection-client.cjs.map +0 -1
- package/dist/cjs/admin-portal-sso-connection-client.d.cts +0 -12
- package/dist/cjs/api-keys-client.cjs.map +0 -1
- package/dist/cjs/api-keys-client.d.cts +0 -10
- package/dist/cjs/card-list.cjs.map +0 -1
- package/dist/esm/admin-portal-sso-connection-client.d.ts +0 -12
- package/dist/esm/admin-portal-sso-connection-client.js.map +0 -1
- package/dist/esm/api-keys-client.d.ts +0 -10
- package/dist/esm/api-keys-client.js +0 -65
- package/dist/esm/api-keys-client.js.map +0 -1
- package/dist/esm/card-list.js.map +0 -1
- /package/dist/cjs/{card-list.cjs → lib/card-list.cjs} +0 -0
- /package/dist/cjs/{card-list.d.cts → lib/card-list.d.cts} +0 -0
- /package/dist/esm/{card-list.d.ts → lib/card-list.d.ts} +0 -0
- /package/dist/esm/{card-list.js → lib/card-list.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/user-profile.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserProfileError,\n UserProfileLoading,\n UserProfile as UserProfilePresentational,\n} from \"./lib/user-profile.js\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/user-profile.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserProfileError,\n UserProfileLoading,\n UserProfile as UserProfilePresentational,\n} from \"./lib/user-profile.js\";\nimport type {\n UserProfileErrorProps,\n UserProfileLoadingProps,\n} from \"./lib/user-profile.js\";\nimport { useMe } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport type { WidgetRootDomProps } from \"./lib/utils.js\";\n\ninterface UserProfileProps extends WidgetRootDomProps {\n authToken: AuthToken;\n}\n\nconst UserProfile: React.FC<UserProfileProps> = ({\n authToken,\n ...domProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserProfileError {...domProps} error={error} />\n )}\n >\n <ApiProvider\n widgetType=\"user-profile\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UserProfileImpl {...domProps} />\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nconst UserProfileImpl = (props: WidgetRootDomProps) => {\n const isApiReady = useApiReady();\n const meQuery = useMe();\n\n if (!isApiReady || meQuery.isLoading) {\n return <UserProfileLoading {...props} />;\n }\n\n if (meQuery.isError) {\n return <UserProfileError error={meQuery.error} {...props} />;\n }\n\n const user = meQuery.data!;\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserProfileError error={error} {...props} />\n )}\n >\n <UserProfilePresentational userData={user} {...props} />\n </ErrorBoundary>\n );\n};\n\nexport type {\n UserProfileProps,\n UserProfileLoadingProps,\n UserProfileErrorProps,\n};\nexport { UserProfile, UserProfileLoading, UserProfileError };\n"],"mappings":";AA+BQ;AA5BR;AAAA,EACE;AAAA,EACA;AAAA,EACA,eAAe;AAAA,OACV;AAKP,SAAS,aAAa;AACtB,SAAS,aAAwB,mBAAmB;AACpD,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAO9B,MAAM,cAA0C,CAAC;AAAA,EAC/C;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,oBAAkB,GAAG,UAAU,OAAc;AAAA,MAGhD;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,mBAAiB,GAAG,UAAU;AAAA;AAAA,MACjC;AAAA;AAAA,EACF;AAEJ;AAEA,MAAM,kBAAkB,CAAC,UAA8B;AACrD,QAAM,aAAa,YAAY;AAC/B,QAAM,UAAU,MAAM;AAEtB,MAAI,CAAC,cAAc,QAAQ,WAAW;AACpC,WAAO,oBAAC,sBAAoB,GAAG,OAAO;AAAA,EACxC;AAEA,MAAI,QAAQ,SAAS;AACnB,WAAO,oBAAC,oBAAiB,OAAO,QAAQ,OAAQ,GAAG,OAAO;AAAA,EAC5D;AAEA,QAAM,OAAO,QAAQ;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,oBAAiB,OAAe,GAAG,OAAO;AAAA,MAG7C,8BAAC,6BAA0B,UAAU,MAAO,GAAG,OAAO;AAAA;AAAA,EACxD;AAEJ;","names":[]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { AuthToken } from './api/api-provider.js';
|
|
3
|
-
export { UserSecurityLoading } from './lib/user-security.js';
|
|
3
|
+
export { UserSecurityError, UserSecurityErrorProps, UserSecurityLoading, UserSecurityLoadingProps } from './lib/user-security.js';
|
|
4
|
+
import { WidgetRootDomProps } from './lib/utils.js';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
5
6
|
import './api/endpoint.js';
|
|
6
7
|
import '@tanstack/react-query';
|
|
7
8
|
import './api/widgets-api-client.js';
|
|
8
9
|
|
|
9
|
-
interface UserSecurityProps {
|
|
10
|
+
interface UserSecurityProps extends WidgetRootDomProps {
|
|
10
11
|
authToken: AuthToken;
|
|
11
12
|
}
|
|
12
13
|
declare const UserSecurity: React.FC<UserSecurityProps>;
|
|
@@ -1,46 +1,63 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
import { ApiProvider } from "./api/api-provider.js";
|
|
3
|
+
import { ApiProvider, useApiReady } from "./api/api-provider.js";
|
|
4
4
|
import { useAuthenticationInformation } from "./api/endpoint.js";
|
|
5
5
|
import {
|
|
6
6
|
UserSecurityError,
|
|
7
7
|
UserSecurityLoading,
|
|
8
8
|
UserSecurity as UserSecurityPresentational
|
|
9
9
|
} from "./lib/user-security.js";
|
|
10
|
-
import { useIsHydrated } from "./lib/use-is-hydrated.js";
|
|
11
10
|
import { useWorkOsApiUrl } from "./lib/widgets-context.js";
|
|
12
11
|
import { ErrorBoundary } from "./lib/error-boundary.js";
|
|
13
|
-
const UserSecurity = ({
|
|
12
|
+
const UserSecurity = ({
|
|
13
|
+
authToken,
|
|
14
|
+
...domProps
|
|
15
|
+
}) => {
|
|
14
16
|
const baseUrl = useWorkOsApiUrl();
|
|
15
17
|
return /* @__PURE__ */ jsx(
|
|
16
|
-
|
|
18
|
+
ErrorBoundary,
|
|
17
19
|
{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
fallbackRender: ({ error }) => /* @__PURE__ */ jsx(UserSecurityError, { error, ...domProps }),
|
|
21
|
+
children: /* @__PURE__ */ jsx(
|
|
22
|
+
ApiProvider,
|
|
23
|
+
{
|
|
24
|
+
widgetType: "user-security",
|
|
25
|
+
authToken,
|
|
26
|
+
baseUrl,
|
|
27
|
+
children: /* @__PURE__ */ jsx(UserSecurityImpl, { ...domProps })
|
|
28
|
+
}
|
|
29
|
+
)
|
|
22
30
|
}
|
|
23
31
|
);
|
|
24
32
|
};
|
|
25
|
-
const
|
|
26
|
-
const
|
|
33
|
+
const UserSecurityImpl = (props) => {
|
|
34
|
+
const isApiReady = useApiReady();
|
|
27
35
|
const {
|
|
28
36
|
data: settings,
|
|
29
37
|
isLoading,
|
|
30
38
|
isError,
|
|
31
39
|
isSuccess,
|
|
32
40
|
error
|
|
33
|
-
} = useAuthenticationInformation(
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
} = useAuthenticationInformation({
|
|
42
|
+
query: { enabled: isApiReady }
|
|
43
|
+
});
|
|
44
|
+
if (!isApiReady || isLoading) {
|
|
45
|
+
return /* @__PURE__ */ jsx(UserSecurityLoading, { ...props });
|
|
36
46
|
}
|
|
37
47
|
if (isError || !isSuccess) {
|
|
38
|
-
return /* @__PURE__ */ jsx(UserSecurityError, { error });
|
|
48
|
+
return /* @__PURE__ */ jsx(UserSecurityError, { error, ...props });
|
|
39
49
|
}
|
|
40
|
-
return /* @__PURE__ */ jsx(
|
|
50
|
+
return /* @__PURE__ */ jsx(
|
|
51
|
+
ErrorBoundary,
|
|
52
|
+
{
|
|
53
|
+
fallbackRender: ({ error: error2 }) => /* @__PURE__ */ jsx(UserSecurityError, { error: error2, ...props }),
|
|
54
|
+
children: /* @__PURE__ */ jsx(UserSecurityPresentational, { settings: settings.data, ...props })
|
|
55
|
+
}
|
|
56
|
+
);
|
|
41
57
|
};
|
|
42
58
|
export {
|
|
43
59
|
UserSecurity,
|
|
60
|
+
UserSecurityError,
|
|
44
61
|
UserSecurityLoading
|
|
45
62
|
};
|
|
46
63
|
//# sourceMappingURL=user-security.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/user-security.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ApiProvider, AuthToken } from \"./api/api-provider.js\";\nimport { useAuthenticationInformation } from \"./api/endpoint.js\";\nimport {\n UserSecurityError,\n UserSecurityLoading,\n UserSecurity as UserSecurityPresentational,\n} from \"./lib/user-security.js\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/user-security.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport { useAuthenticationInformation } from \"./api/endpoint.js\";\nimport {\n UserSecurityError,\n UserSecurityLoading,\n UserSecurity as UserSecurityPresentational,\n} from \"./lib/user-security.js\";\nimport type {\n UserSecurityErrorProps,\n UserSecurityLoadingProps,\n} from \"./lib/user-security.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport type { WidgetRootDomProps } from \"./lib/utils.js\";\n\ninterface UserSecurityProps extends WidgetRootDomProps {\n authToken: AuthToken;\n}\n\nconst UserSecurity: React.FC<UserSecurityProps> = ({\n authToken,\n ...domProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserSecurityError error={error} {...domProps} />\n )}\n >\n <ApiProvider\n widgetType=\"user-security\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UserSecurityImpl {...domProps} />\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nconst UserSecurityImpl = (props: WidgetRootDomProps) => {\n const isApiReady = useApiReady();\n const {\n data: settings,\n isLoading,\n isError,\n isSuccess,\n error,\n } = useAuthenticationInformation({\n query: { enabled: isApiReady },\n });\n\n if (!isApiReady || isLoading) {\n return <UserSecurityLoading {...props} />;\n }\n\n if (isError || !isSuccess) {\n return <UserSecurityError error={error} {...props} />;\n }\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserSecurityError error={error} {...props} />\n )}\n >\n <UserSecurityPresentational settings={settings.data} {...props} />\n </ErrorBoundary>\n );\n};\n\nexport type {\n UserSecurityProps,\n UserSecurityLoadingProps,\n UserSecurityErrorProps,\n};\nexport { UserSecurity, UserSecurityLoading, UserSecurityError };\n"],"mappings":";AA+BQ;AA5BR,SAAS,aAAwB,mBAAmB;AACpD,SAAS,oCAAoC;AAC7C;AAAA,EACE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,OACX;AAKP,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAO9B,MAAM,eAA4C,CAAC;AAAA,EACjD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,qBAAkB,OAAe,GAAG,UAAU;AAAA,MAGjD;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,oBAAkB,GAAG,UAAU;AAAA;AAAA,MAClC;AAAA;AAAA,EACF;AAEJ;AAEA,MAAM,mBAAmB,CAAC,UAA8B;AACtD,QAAM,aAAa,YAAY;AAC/B,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,6BAA6B;AAAA,IAC/B,OAAO,EAAE,SAAS,WAAW;AAAA,EAC/B,CAAC;AAED,MAAI,CAAC,cAAc,WAAW;AAC5B,WAAO,oBAAC,uBAAqB,GAAG,OAAO;AAAA,EACzC;AAEA,MAAI,WAAW,CAAC,WAAW;AACzB,WAAO,oBAAC,qBAAkB,OAAe,GAAG,OAAO;AAAA,EACrD;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,OAAAA,OAAM,MACvB,oBAAC,qBAAkB,OAAOA,QAAQ,GAAG,OAAO;AAAA,MAG9C,8BAAC,8BAA2B,UAAU,SAAS,MAAO,GAAG,OAAO;AAAA;AAAA,EAClE;AAEJ;","names":["error"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export { UserSessionsLoading } from './lib/user-sessions.js';
|
|
2
|
+
export { UserSessionsError, UserSessionsErrorProps, UserSessionsLoading, UserSessionsLoadingProps } from './lib/user-sessions.js';
|
|
3
|
+
import { WidgetRootDomProps } from './lib/utils.js';
|
|
3
4
|
import 'react/jsx-runtime';
|
|
4
5
|
import './api/endpoint.js';
|
|
5
6
|
import '@tanstack/react-query';
|
|
@@ -7,12 +8,13 @@ import './api/widgets-api-client.js';
|
|
|
7
8
|
|
|
8
9
|
type UserSessionsWithoutCurrentSessionIdProps = {
|
|
9
10
|
authToken: () => Promise<string>;
|
|
11
|
+
currentSessionId?: never;
|
|
10
12
|
};
|
|
11
13
|
type UserSessionsWithCurrentSessionIdProps = {
|
|
12
14
|
authToken: string;
|
|
13
15
|
currentSessionId: string;
|
|
14
16
|
};
|
|
15
|
-
type UserSessionsProps = UserSessionsWithoutCurrentSessionIdProps | UserSessionsWithCurrentSessionIdProps;
|
|
17
|
+
type UserSessionsProps = WidgetRootDomProps & (UserSessionsWithoutCurrentSessionIdProps | UserSessionsWithCurrentSessionIdProps);
|
|
16
18
|
declare const UserSessions: React.FC<UserSessionsProps>;
|
|
17
19
|
|
|
18
20
|
export { UserSessions, type UserSessionsProps };
|
|
@@ -5,73 +5,86 @@ import {
|
|
|
5
5
|
UserSessionsLoading,
|
|
6
6
|
UserSessions as UserSessionsPresentational
|
|
7
7
|
} from "./lib/user-sessions.js";
|
|
8
|
-
import { useIsHydrated } from "./lib/use-is-hydrated.js";
|
|
9
8
|
import { useSessions } from "./api/endpoint.js";
|
|
10
|
-
import { ApiProvider, useApi } from "./api/api-provider.js";
|
|
9
|
+
import { ApiProvider, useApi, useApiReady } from "./api/api-provider.js";
|
|
11
10
|
import { useWorkOsApiUrl } from "./lib/widgets-context.js";
|
|
12
11
|
import { ErrorBoundary } from "./lib/error-boundary.js";
|
|
13
|
-
import { useQuery } from "@tanstack/react-query";
|
|
14
|
-
|
|
12
|
+
import { useQuery, skipToken } from "@tanstack/react-query";
|
|
13
|
+
import { getClaims } from "./api/utils.js";
|
|
14
|
+
const UserSessions = ({
|
|
15
|
+
authToken,
|
|
16
|
+
...passthroughProps
|
|
17
|
+
}) => {
|
|
15
18
|
const baseUrl = useWorkOsApiUrl();
|
|
16
19
|
return /* @__PURE__ */ jsx(
|
|
17
|
-
|
|
20
|
+
ErrorBoundary,
|
|
18
21
|
{
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
fallbackRender: ({ error }) => {
|
|
23
|
+
const { currentSessionId, ...domProps } = passthroughProps;
|
|
24
|
+
return /* @__PURE__ */ jsx(UserSessionsError, { error, ...domProps });
|
|
25
|
+
},
|
|
22
26
|
children: /* @__PURE__ */ jsx(
|
|
23
|
-
|
|
27
|
+
ApiProvider,
|
|
24
28
|
{
|
|
25
|
-
|
|
29
|
+
widgetType: "user-sessions",
|
|
30
|
+
authToken,
|
|
31
|
+
baseUrl,
|
|
32
|
+
children: /* @__PURE__ */ jsx(UserSessionsImpl, { ...passthroughProps })
|
|
26
33
|
}
|
|
27
34
|
)
|
|
28
35
|
}
|
|
29
36
|
);
|
|
30
37
|
};
|
|
31
|
-
const
|
|
32
|
-
currentSessionId
|
|
38
|
+
const UserSessionsImpl = ({
|
|
39
|
+
currentSessionId,
|
|
40
|
+
...domProps
|
|
33
41
|
}) => {
|
|
34
|
-
const
|
|
42
|
+
const isApiReady = useApiReady();
|
|
35
43
|
const sessionsQuery = useSessions();
|
|
36
44
|
const currentSessionIdQuery = useCurrentSessionIdQuery(currentSessionId);
|
|
37
|
-
if (!
|
|
38
|
-
return /* @__PURE__ */ jsx(UserSessionsLoading, {});
|
|
45
|
+
if (!isApiReady || sessionsQuery.isLoading || currentSessionIdQuery.isLoading) {
|
|
46
|
+
return /* @__PURE__ */ jsx(UserSessionsLoading, { ...domProps });
|
|
39
47
|
}
|
|
40
48
|
if (sessionsQuery.isError || currentSessionIdQuery.isError) {
|
|
41
49
|
return /* @__PURE__ */ jsx(
|
|
42
50
|
UserSessionsError,
|
|
43
51
|
{
|
|
44
|
-
error: sessionsQuery.error || currentSessionIdQuery.error
|
|
52
|
+
error: sessionsQuery.error || currentSessionIdQuery.error,
|
|
53
|
+
...domProps
|
|
45
54
|
}
|
|
46
55
|
);
|
|
47
56
|
}
|
|
48
|
-
return /* @__PURE__ */ jsx(
|
|
49
|
-
|
|
57
|
+
return /* @__PURE__ */ jsx(
|
|
58
|
+
ErrorBoundary,
|
|
50
59
|
{
|
|
51
|
-
|
|
52
|
-
|
|
60
|
+
fallbackRender: ({ error }) => /* @__PURE__ */ jsx(UserSessionsError, { error, ...domProps }),
|
|
61
|
+
children: /* @__PURE__ */ jsx(
|
|
62
|
+
UserSessionsPresentational,
|
|
63
|
+
{
|
|
64
|
+
sessionsData: sessionsQuery.data?.data || [],
|
|
65
|
+
currentSessionId: currentSessionIdQuery.data ?? "",
|
|
66
|
+
...domProps
|
|
67
|
+
}
|
|
68
|
+
)
|
|
53
69
|
}
|
|
54
|
-
)
|
|
70
|
+
);
|
|
55
71
|
};
|
|
56
72
|
function useCurrentSessionIdQuery(currentSessionId) {
|
|
57
73
|
const { authToken } = useApi();
|
|
58
74
|
return useQuery({
|
|
59
|
-
queryKey: ["authToken"],
|
|
60
|
-
queryFn: async () => {
|
|
75
|
+
queryKey: ["authToken", authToken],
|
|
76
|
+
queryFn: authToken ? async () => {
|
|
61
77
|
if (currentSessionId) {
|
|
62
78
|
return currentSessionId;
|
|
63
79
|
}
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
80
|
+
const { sid } = getClaims(authToken);
|
|
81
|
+
return sid;
|
|
82
|
+
} : skipToken
|
|
68
83
|
});
|
|
69
84
|
}
|
|
70
|
-
function getClaims(accessToken) {
|
|
71
|
-
return JSON.parse(atob(accessToken.split(".")[1]));
|
|
72
|
-
}
|
|
73
85
|
export {
|
|
74
86
|
UserSessions,
|
|
87
|
+
UserSessionsError,
|
|
75
88
|
UserSessionsLoading
|
|
76
89
|
};
|
|
77
90
|
//# sourceMappingURL=user-sessions.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/user-sessions.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserSessionsError,\n UserSessionsLoading,\n UserSessions as UserSessionsPresentational,\n} from \"./lib/user-sessions.js\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/user-sessions.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserSessionsError,\n UserSessionsLoading,\n UserSessions as UserSessionsPresentational,\n} from \"./lib/user-sessions.js\";\nimport type {\n UserSessionsErrorProps,\n UserSessionsLoadingProps,\n} from \"./lib/user-sessions.js\";\nimport { useSessions } from \"./api/endpoint.js\";\nimport { ApiProvider, useApi, useApiReady } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { useQuery, skipToken } from \"@tanstack/react-query\";\nimport { getClaims } from \"./api/utils.js\";\nimport { WidgetRootDomProps } from \"./lib/utils.js\";\n\ntype UserSessionsWithoutCurrentSessionIdProps = {\n authToken: () => Promise<string>;\n currentSessionId?: never;\n};\n\ntype UserSessionsWithCurrentSessionIdProps = {\n authToken: string;\n currentSessionId: string;\n};\n\ntype UserSessionsProps = WidgetRootDomProps &\n (\n | UserSessionsWithoutCurrentSessionIdProps\n | UserSessionsWithCurrentSessionIdProps\n );\n\nconst UserSessions: React.FC<UserSessionsProps> = ({\n authToken,\n ...passthroughProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => {\n const { currentSessionId, ...domProps } = passthroughProps;\n return <UserSessionsError error={error} {...domProps} />;\n }}\n >\n <ApiProvider\n widgetType=\"user-sessions\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UserSessionsImpl {...passthroughProps} />\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\ninterface UserSessionsImplProps extends WidgetRootDomProps {\n currentSessionId?: string;\n}\n\nconst UserSessionsImpl: React.FC<UserSessionsImplProps> = ({\n currentSessionId,\n ...domProps\n}) => {\n const isApiReady = useApiReady();\n const sessionsQuery = useSessions();\n const currentSessionIdQuery = useCurrentSessionIdQuery(currentSessionId);\n\n if (\n !isApiReady ||\n sessionsQuery.isLoading ||\n currentSessionIdQuery.isLoading\n ) {\n return <UserSessionsLoading {...domProps} />;\n }\n\n if (sessionsQuery.isError || currentSessionIdQuery.isError) {\n return (\n <UserSessionsError\n error={sessionsQuery.error || currentSessionIdQuery.error}\n {...domProps}\n />\n );\n }\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UserSessionsError error={error} {...domProps} />\n )}\n >\n <UserSessionsPresentational\n sessionsData={sessionsQuery.data?.data || []}\n currentSessionId={currentSessionIdQuery.data ?? \"\"}\n {...domProps}\n />\n </ErrorBoundary>\n );\n};\n\nfunction useCurrentSessionIdQuery(currentSessionId?: string) {\n const { authToken } = useApi();\n\n return useQuery({\n queryKey: [\"authToken\", authToken],\n queryFn: authToken\n ? async () => {\n if (currentSessionId) {\n return currentSessionId;\n }\n\n const { sid } = getClaims(authToken);\n return sid;\n }\n : skipToken,\n });\n}\n\nexport type {\n UserSessionsProps,\n UserSessionsLoadingProps,\n UserSessionsErrorProps,\n};\nexport { UserSessions, UserSessionsLoading, UserSessionsError };\n"],"mappings":";AA6Ce;AA1Cf;AAAA,EACE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,OACX;AAKP,SAAS,mBAAmB;AAC5B,SAAS,aAAa,QAAQ,mBAAmB;AACjD,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,UAAU,iBAAiB;AACpC,SAAS,iBAAiB;AAmB1B,MAAM,eAA4C,CAAC;AAAA,EACjD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MAAM;AAC7B,cAAM,EAAE,kBAAkB,GAAG,SAAS,IAAI;AAC1C,eAAO,oBAAC,qBAAkB,OAAe,GAAG,UAAU;AAAA,MACxD;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,oBAAkB,GAAG,kBAAkB;AAAA;AAAA,MAC1C;AAAA;AAAA,EACF;AAEJ;AAMA,MAAM,mBAAoD,CAAC;AAAA,EACzD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,aAAa,YAAY;AAC/B,QAAM,gBAAgB,YAAY;AAClC,QAAM,wBAAwB,yBAAyB,gBAAgB;AAEvE,MACE,CAAC,cACD,cAAc,aACd,sBAAsB,WACtB;AACA,WAAO,oBAAC,uBAAqB,GAAG,UAAU;AAAA,EAC5C;AAEA,MAAI,cAAc,WAAW,sBAAsB,SAAS;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,cAAc,SAAS,sBAAsB;AAAA,QACnD,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,qBAAkB,OAAe,GAAG,UAAU;AAAA,MAGjD;AAAA,QAAC;AAAA;AAAA,UACC,cAAc,cAAc,MAAM,QAAQ,CAAC;AAAA,UAC3C,kBAAkB,sBAAsB,QAAQ;AAAA,UAC/C,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,yBAAyB,kBAA2B;AAC3D,QAAM,EAAE,UAAU,IAAI,OAAO;AAE7B,SAAO,SAAS;AAAA,IACd,UAAU,CAAC,aAAa,SAAS;AAAA,IACjC,SAAS,YACL,YAAY;AACV,UAAI,kBAAkB;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,EAAE,IAAI,IAAI,UAAU,SAAS;AACnC,aAAO;AAAA,IACT,IACA;AAAA,EACN,CAAC;AACH;","names":[]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { AuthToken } from './api/api-provider.js';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
export { UsersManagementLoading } from './lib/users-management.js';
|
|
3
|
+
export { UsersManagementError, UsersManagementErrorProps, UsersManagementLoading, UsersManagementLoadingProps } from './lib/users-management.js';
|
|
4
|
+
import { WidgetRootDomProps } from './lib/utils.js';
|
|
4
5
|
import 'react/jsx-runtime';
|
|
5
6
|
import './api/endpoint.js';
|
|
6
7
|
import '@tanstack/react-query';
|
|
7
8
|
import './api/widgets-api-client.js';
|
|
8
9
|
|
|
9
|
-
interface UsersManagementProps {
|
|
10
|
+
interface UsersManagementProps extends WidgetRootDomProps {
|
|
10
11
|
authToken: AuthToken;
|
|
11
12
|
}
|
|
12
13
|
declare const UsersManagement: React.FC<UsersManagementProps>;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useRolesAndConfig } from "./api/endpoint.js";
|
|
4
|
-
import { ApiProvider,
|
|
4
|
+
import { ApiProvider, useApiReady } from "./api/api-provider.js";
|
|
5
5
|
import { useUsers } from "./lib/api/user.js";
|
|
6
|
-
import { useIsHydrated } from "./lib/use-is-hydrated.js";
|
|
7
6
|
import {
|
|
8
7
|
UsersManagementError,
|
|
9
8
|
UsersManagementLoading,
|
|
@@ -14,54 +13,65 @@ import { useWorkOsApiUrl } from "./lib/widgets-context.js";
|
|
|
14
13
|
import { ErrorBoundary } from "./lib/error-boundary.js";
|
|
15
14
|
import { usePermissions } from "./lib/use-permissions.js";
|
|
16
15
|
const UsersManagement = ({
|
|
17
|
-
authToken
|
|
16
|
+
authToken,
|
|
17
|
+
...domProps
|
|
18
18
|
}) => {
|
|
19
19
|
const baseUrl = useWorkOsApiUrl();
|
|
20
|
-
return /* @__PURE__ */ jsx(
|
|
21
|
-
|
|
20
|
+
return /* @__PURE__ */ jsx(
|
|
21
|
+
ErrorBoundary,
|
|
22
22
|
{
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
fallbackRender: ({ error }) => /* @__PURE__ */ jsx(UsersManagementError, { error, ...domProps }),
|
|
24
|
+
children: /* @__PURE__ */ jsx(
|
|
25
|
+
ApiProvider,
|
|
26
|
+
{
|
|
27
|
+
widgetType: "user-management",
|
|
28
|
+
authToken,
|
|
29
|
+
baseUrl,
|
|
30
|
+
children: /* @__PURE__ */ jsx(UsersManagementContextProvider, { children: /* @__PURE__ */ jsx(UsersManagementImpl, { ...domProps }) })
|
|
31
|
+
}
|
|
32
|
+
)
|
|
27
33
|
}
|
|
28
|
-
)
|
|
34
|
+
);
|
|
29
35
|
};
|
|
30
|
-
const
|
|
31
|
-
const
|
|
36
|
+
const UsersManagementImpl = (props) => {
|
|
37
|
+
const isApiReady = useApiReady();
|
|
32
38
|
const rolesAndConfigQuery = useRolesAndConfig({
|
|
33
39
|
query: { initialData: { roles: [], multipleRolesEnabled: false } }
|
|
34
40
|
});
|
|
35
41
|
const usersQuery = useUsers();
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
context.authToken
|
|
40
|
-
);
|
|
41
|
-
if (permissionsQuery.isLoading || usersQuery.isLoading || rolesAndConfigQuery.isLoading || usersQuery.isPending || // render loading state on the server to prevent FOUC or hydration mismatch
|
|
42
|
-
!isHydrated) {
|
|
43
|
-
return /* @__PURE__ */ jsx(UsersManagementLoading, {});
|
|
42
|
+
const permissionsQuery = usePermissions("widgets:users-table:manage");
|
|
43
|
+
if (permissionsQuery.isLoading || usersQuery.isLoading || rolesAndConfigQuery.isLoading || usersQuery.isPending || !isApiReady) {
|
|
44
|
+
return /* @__PURE__ */ jsx(UsersManagementLoading, { ...props });
|
|
44
45
|
}
|
|
45
46
|
if (permissionsQuery.isError || usersQuery.isError || rolesAndConfigQuery.isError) {
|
|
46
47
|
return /* @__PURE__ */ jsx(
|
|
47
48
|
UsersManagementError,
|
|
48
49
|
{
|
|
49
|
-
error: permissionsQuery.error || usersQuery.error || rolesAndConfigQuery.error
|
|
50
|
+
error: permissionsQuery.error || usersQuery.error || rolesAndConfigQuery.error,
|
|
51
|
+
...props
|
|
50
52
|
}
|
|
51
53
|
);
|
|
52
54
|
}
|
|
53
|
-
return /* @__PURE__ */ jsx(
|
|
54
|
-
|
|
55
|
+
return /* @__PURE__ */ jsx(
|
|
56
|
+
ErrorBoundary,
|
|
55
57
|
{
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
fallbackRender: ({ error }) => /* @__PURE__ */ jsx(UsersManagementError, { error, ...props }),
|
|
59
|
+
children: /* @__PURE__ */ jsx(
|
|
60
|
+
UsersManagementPresentational,
|
|
61
|
+
{
|
|
62
|
+
userData: usersQuery.data,
|
|
63
|
+
rolesData: rolesAndConfigQuery.data,
|
|
64
|
+
isPending: usersQuery.isFetching,
|
|
65
|
+
disableRolesFilter: rolesAndConfigQuery.isPending || rolesAndConfigQuery.isFetching,
|
|
66
|
+
...props
|
|
67
|
+
}
|
|
68
|
+
)
|
|
60
69
|
}
|
|
61
|
-
)
|
|
70
|
+
);
|
|
62
71
|
};
|
|
63
72
|
export {
|
|
64
73
|
UsersManagement,
|
|
74
|
+
UsersManagementError,
|
|
65
75
|
UsersManagementLoading
|
|
66
76
|
};
|
|
67
77
|
//# sourceMappingURL=users-management.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/users-management.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRolesAndConfig } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken,
|
|
1
|
+
{"version":3,"sources":["../../src/users-management.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRolesAndConfig } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport * as React from \"react\";\nimport { useUsers } from \"./lib/api/user.js\";\nimport {\n UsersManagementError,\n UsersManagementLoading,\n UsersManagement as UsersManagementPresentational,\n} from \"./lib/users-management.js\";\nimport type {\n UsersManagementErrorProps,\n UsersManagementLoadingProps,\n} from \"./lib/users-management.js\";\nimport { UsersManagementContextProvider } from \"./lib/users-management-context.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { usePermissions } from \"./lib/use-permissions.js\";\nimport type { WidgetRootDomProps } from \"./lib/utils.js\";\n\ninterface UsersManagementProps extends WidgetRootDomProps {\n authToken: AuthToken;\n}\n\nconst UsersManagement: React.FC<UsersManagementProps> = ({\n authToken,\n ...domProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UsersManagementError error={error} {...domProps} />\n )}\n >\n <ApiProvider\n widgetType=\"user-management\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UsersManagementContextProvider>\n <UsersManagementImpl {...domProps} />\n </UsersManagementContextProvider>\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nconst UsersManagementImpl = (props: WidgetRootDomProps) => {\n const isApiReady = useApiReady();\n const rolesAndConfigQuery = useRolesAndConfig({\n query: { initialData: { roles: [], multipleRolesEnabled: false } },\n });\n const usersQuery = useUsers();\n const permissionsQuery = usePermissions(\"widgets:users-table:manage\");\n\n if (\n permissionsQuery.isLoading ||\n usersQuery.isLoading ||\n rolesAndConfigQuery.isLoading ||\n usersQuery.isPending ||\n !isApiReady\n ) {\n return <UsersManagementLoading {...props} />;\n }\n\n if (\n permissionsQuery.isError ||\n usersQuery.isError ||\n rolesAndConfigQuery.isError\n ) {\n return (\n <UsersManagementError\n error={\n permissionsQuery.error ||\n usersQuery.error ||\n rolesAndConfigQuery.error\n }\n {...props}\n />\n );\n }\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <UsersManagementError error={error} {...props} />\n )}\n >\n <UsersManagementPresentational\n userData={usersQuery.data}\n rolesData={rolesAndConfigQuery.data}\n isPending={usersQuery.isFetching}\n disableRolesFilter={\n rolesAndConfigQuery.isPending || rolesAndConfigQuery.isFetching\n }\n {...props}\n />\n </ErrorBoundary>\n );\n};\n\nexport type {\n UsersManagementProps,\n UsersManagementLoadingProps,\n UsersManagementErrorProps,\n};\nexport { UsersManagement, UsersManagementLoading, UsersManagementError };\n"],"mappings":";AAkCQ;AAhCR,SAAS,yBAAyB;AAClC,SAAS,aAAwB,mBAAmB;AAEpD,SAAS,gBAAgB;AACzB;AAAA,EACE;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,OACd;AAKP,SAAS,sCAAsC;AAC/C,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAO/B,MAAM,kBAAkD,CAAC;AAAA,EACvD;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,wBAAqB,OAAe,GAAG,UAAU;AAAA,MAGpD;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,kCACC,8BAAC,uBAAqB,GAAG,UAAU,GACrC;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,MAAM,sBAAsB,CAAC,UAA8B;AACzD,QAAM,aAAa,YAAY;AAC/B,QAAM,sBAAsB,kBAAkB;AAAA,IAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,sBAAsB,MAAM,EAAE;AAAA,EACnE,CAAC;AACD,QAAM,aAAa,SAAS;AAC5B,QAAM,mBAAmB,eAAe,4BAA4B;AAEpE,MACE,iBAAiB,aACjB,WAAW,aACX,oBAAoB,aACpB,WAAW,aACX,CAAC,YACD;AACA,WAAO,oBAAC,0BAAwB,GAAG,OAAO;AAAA,EAC5C;AAEA,MACE,iBAAiB,WACjB,WAAW,WACX,oBAAoB,SACpB;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OACE,iBAAiB,SACjB,WAAW,SACX,oBAAoB;AAAA,QAErB,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,wBAAqB,OAAe,GAAG,OAAO;AAAA,MAGjD;AAAA,QAAC;AAAA;AAAA,UACC,UAAU,WAAW;AAAA,UACrB,WAAW,oBAAoB;AAAA,UAC/B,WAAW,WAAW;AAAA,UACtB,oBACE,oBAAoB,aAAa,oBAAoB;AAAA,UAEtD,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -11,17 +11,17 @@ import * as React from "react";
|
|
|
11
11
|
import { namespaceClassNames } from "./lib/utils.js";
|
|
12
12
|
import { DEFAULT_API_HOSTNAME } from "./lib/api/config.js";
|
|
13
13
|
import { WidgetsContext } from "./lib/widgets-context.js";
|
|
14
|
-
|
|
14
|
+
import { WIDGETS_DATA_ATTRIBUTE_NAMESPACE } from "./lib/constants.js";
|
|
15
15
|
const WorkOsWidgets = ({
|
|
16
16
|
elements = {},
|
|
17
|
-
className,
|
|
18
17
|
theme: { fontFamily, ...radixThemesProps } = {},
|
|
19
18
|
style = {},
|
|
20
19
|
children,
|
|
21
20
|
apiHostname = DEFAULT_API_HOSTNAME,
|
|
22
21
|
port = null,
|
|
23
22
|
https = true,
|
|
24
|
-
queryClient
|
|
23
|
+
queryClient,
|
|
24
|
+
className
|
|
25
25
|
}) => {
|
|
26
26
|
const customStyle = fontFamily ? {
|
|
27
27
|
"--default-font-family": fontFamily,
|
|
@@ -45,6 +45,7 @@ const WorkOsWidgets = ({
|
|
|
45
45
|
RadixThemes,
|
|
46
46
|
{
|
|
47
47
|
...radixThemesProps,
|
|
48
|
+
...{ [`data-${WIDGETS_DATA_ATTRIBUTE_NAMESPACE}-root`]: true },
|
|
48
49
|
style: customStyle,
|
|
49
50
|
className: cx(namespaceClassNames("root"), className),
|
|
50
51
|
children: /* @__PURE__ */ jsx(WidgetsContext.Provider, { value: { elements, apiBaseUrl }, children })
|
|
@@ -55,15 +56,9 @@ const QueryClientProviderImpl = ({
|
|
|
55
56
|
client: providedClient,
|
|
56
57
|
children
|
|
57
58
|
}) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
} else if (queryClientInternal) {
|
|
62
|
-
queryClient = queryClientInternal;
|
|
63
|
-
} else {
|
|
64
|
-
queryClientInternal = new QueryClient();
|
|
65
|
-
queryClient = queryClientInternal;
|
|
66
|
-
}
|
|
59
|
+
const [queryClient] = React.useState(
|
|
60
|
+
() => providedClient ?? new QueryClient()
|
|
61
|
+
);
|
|
67
62
|
const client = useQueryClient(queryClient);
|
|
68
63
|
if (Object.is(client, providedClient)) {
|
|
69
64
|
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/workos-widgets.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { Theme as RadixThemes } from \"@radix-ui/themes\";\nimport type { GetPropDefTypes, themePropDefs } from \"@radix-ui/themes/props\";\nimport {\n QueryClient,\n QueryClientProvider,\n useQueryClient,\n} from \"@tanstack/react-query\";\nimport cx from \"clsx\";\nimport * as React from \"react\";\nimport { namespaceClassNames } from \"./lib/utils.js\";\nimport { DEFAULT_API_HOSTNAME } from \"./lib/api/config.js\";\nimport type { Elements } from \"./lib/elements.js\";\nimport { WidgetsContext } from \"./lib/widgets-context.js\";\
|
|
1
|
+
{"version":3,"sources":["../../src/workos-widgets.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { Theme as RadixThemes } from \"@radix-ui/themes\";\nimport type { GetPropDefTypes, themePropDefs } from \"@radix-ui/themes/props\";\nimport {\n QueryClient,\n QueryClientProvider,\n useQueryClient,\n} from \"@tanstack/react-query\";\nimport cx from \"clsx\";\nimport * as React from \"react\";\nimport { namespaceClassNames } from \"./lib/utils.js\";\nimport { DEFAULT_API_HOSTNAME } from \"./lib/api/config.js\";\nimport type { Elements } from \"./lib/elements.js\";\nimport { WidgetsContext } from \"./lib/widgets-context.js\";\nimport { WIDGETS_DATA_ATTRIBUTE_NAMESPACE } from \"./lib/constants.js\";\n\nexport interface WorkOsWidgetsProps {\n elements?: Elements;\n theme?: Omit<GetPropDefTypes<typeof themePropDefs>, \"asChild\"> & {\n fontFamily?: string;\n };\n style?: React.CSSProperties;\n className?: string;\n children: React.ReactNode;\n apiHostname?: string;\n port?: number | null;\n https?: boolean;\n /**\n * Optional query client for users who are already using Tanstack Query. If\n * not provided, a new query client will be created and mounted internally.\n */\n queryClient?: QueryClient;\n}\n\nexport const WorkOsWidgets: React.FC<WorkOsWidgetsProps> = ({\n elements = {},\n theme: { fontFamily, ...radixThemesProps } = {},\n style = {},\n children,\n apiHostname = DEFAULT_API_HOSTNAME,\n port = null,\n https = true,\n queryClient,\n className,\n}) => {\n const customStyle: React.CSSProperties = fontFamily\n ? {\n \"--default-font-family\": fontFamily,\n ...style,\n }\n : style;\n\n const apiBaseUrl = React.useMemo(() => {\n try {\n const url = new URL(\n \"/\",\n `${https ? \"https\" : \"http\"}://${apiHostname}${port ? `:${port}` : \"\"}`,\n );\n return url.toString().slice(0, -1);\n } catch {\n console.error(\n \"Failed to validate the WorkOS API URL. Check to ensure that valid `apiHostname` and `port` props are passed to WorkOsWidgets\",\n );\n return `https://${DEFAULT_API_HOSTNAME}`;\n }\n }, [apiHostname, https, port]);\n\n return (\n <QueryClientProviderImpl client={queryClient}>\n <RadixThemes\n {...radixThemesProps}\n {...{ [`data-${WIDGETS_DATA_ATTRIBUTE_NAMESPACE}-root`]: true }}\n style={customStyle}\n className={cx(namespaceClassNames(\"root\"), className)}\n >\n <WidgetsContext.Provider value={{ elements, apiBaseUrl }}>\n {children}\n </WidgetsContext.Provider>\n </RadixThemes>\n </QueryClientProviderImpl>\n );\n};\n\nconst QueryClientProviderImpl = ({\n client: providedClient,\n children,\n}: {\n client: QueryClient | undefined;\n children: React.ReactNode;\n}) => {\n const [queryClient] = React.useState(\n () => providedClient ?? new QueryClient(),\n );\n\n const client = useQueryClient(queryClient);\n if (Object.is(client, providedClient)) {\n // No need for a new context provider if the user provided the client to\n // their own provider, which has already mounted the client.\n return <>{children}</>;\n }\n\n return <QueryClientProvider client={client}>{children}</QueryClientProvider>;\n};\n"],"mappings":";AA4EQ,SAuBG,UAvBH;AA1ER,SAAS,SAAS,mBAAmB;AAErC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,QAAQ;AACf,YAAY,WAAW;AACvB,SAAS,2BAA2B;AACpC,SAAS,4BAA4B;AAErC,SAAS,sBAAsB;AAC/B,SAAS,wCAAwC;AAoB1C,MAAM,gBAA8C,CAAC;AAAA,EAC1D,WAAW,CAAC;AAAA,EACZ,OAAO,EAAE,YAAY,GAAG,iBAAiB,IAAI,CAAC;AAAA,EAC9C,QAAQ,CAAC;AAAA,EACT;AAAA,EACA,cAAc;AAAA,EACd,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA;AACF,MAAM;AACJ,QAAM,cAAmC,aACrC;AAAA,IACE,yBAAyB;AAAA,IACzB,GAAG;AAAA,EACL,IACA;AAEJ,QAAM,aAAa,MAAM,QAAQ,MAAM;AACrC,QAAI;AACF,YAAM,MAAM,IAAI;AAAA,QACd;AAAA,QACA,GAAG,QAAQ,UAAU,MAAM,MAAM,WAAW,GAAG,OAAO,IAAI,IAAI,KAAK,EAAE;AAAA,MACvE;AACA,aAAO,IAAI,SAAS,EAAE,MAAM,GAAG,EAAE;AAAA,IACnC,QAAQ;AACN,cAAQ;AAAA,QACN;AAAA,MACF;AACA,aAAO,WAAW,oBAAoB;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,aAAa,OAAO,IAAI,CAAC;AAE7B,SACE,oBAAC,2BAAwB,QAAQ,aAC/B;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACH,GAAG,EAAE,CAAC,QAAQ,gCAAgC,OAAO,GAAG,KAAK;AAAA,MAC9D,OAAO;AAAA,MACP,WAAW,GAAG,oBAAoB,MAAM,GAAG,SAAS;AAAA,MAEpD,8BAAC,eAAe,UAAf,EAAwB,OAAO,EAAE,UAAU,WAAW,GACpD,UACH;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,MAAM,0BAA0B,CAAC;AAAA,EAC/B,QAAQ;AAAA,EACR;AACF,MAGM;AACJ,QAAM,CAAC,WAAW,IAAI,MAAM;AAAA,IAC1B,MAAM,kBAAkB,IAAI,YAAY;AAAA,EAC1C;AAEA,QAAM,SAAS,eAAe,WAAW;AACzC,MAAI,OAAO,GAAG,QAAQ,cAAc,GAAG;AAGrC,WAAO,gCAAG,UAAS;AAAA,EACrB;AAEA,SAAO,oBAAC,uBAAoB,QAAiB,UAAS;AACxD;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workos-inc/widgets",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -53,18 +53,26 @@
|
|
|
53
53
|
"react-dom": ">=18"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
+
"@radix-ui/react-compose-refs": "^1.1.2",
|
|
57
|
+
"@radix-ui/react-form": "^0.1.8",
|
|
58
|
+
"@radix-ui/react-icons": "^1.3.2",
|
|
59
|
+
"@radix-ui/react-popover": "^1.1.15",
|
|
60
|
+
"@radix-ui/react-use-controllable-state": "^1.2.2",
|
|
56
61
|
"@radix-ui/themes": "^3.2.1",
|
|
57
|
-
"@tanstack/react-query": "^5.
|
|
58
|
-
"@types/node": "^
|
|
59
|
-
"@types/react": "^19.
|
|
60
|
-
"@types/react-dom": "^19.
|
|
62
|
+
"@tanstack/react-query": "^5.90.10",
|
|
63
|
+
"@types/node": "^24",
|
|
64
|
+
"@types/react": "^19.2.6",
|
|
65
|
+
"@types/react-dom": "^19.2.3",
|
|
66
|
+
"clsx": "^2.1.1",
|
|
61
67
|
"execa": "^9.6.0",
|
|
62
68
|
"fast-glob": "^3.3.3",
|
|
63
|
-
"orval": "^7.
|
|
64
|
-
"react": "^19.
|
|
65
|
-
"react-dom": "^19.
|
|
66
|
-
"tsup": "^8.5.
|
|
67
|
-
"typescript": "^5.9.
|
|
69
|
+
"orval": "^7.16.1",
|
|
70
|
+
"react": "^19.2.0",
|
|
71
|
+
"react-dom": "^19.2.0",
|
|
72
|
+
"tsup": "^8.5.1",
|
|
73
|
+
"typescript": "^5.9.3",
|
|
74
|
+
"use-debounce": "^10.0.6",
|
|
75
|
+
"@repo/eslint-config": "0.0.0",
|
|
68
76
|
"@repo/typescript-config": "0.0.0"
|
|
69
77
|
},
|
|
70
78
|
"typesVersions": {
|
|
@@ -82,6 +90,8 @@
|
|
|
82
90
|
"typecheck": "tsc --noEmit",
|
|
83
91
|
"clean": "rm -rf .turbo && rm -rf node_modules && pnpm clean:dist",
|
|
84
92
|
"clean:dist": "rm -rf dist",
|
|
93
|
+
"lint": "eslint --max-warnings 0 .",
|
|
94
|
+
"lint:fix": "eslint --max-warnings 0 --fix .",
|
|
85
95
|
"generate-api": "orval --config ./orval.config.ts"
|
|
86
96
|
},
|
|
87
97
|
"main": "./dist/cjs/index.cjs",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/admin-portal-sso-connection-client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n AdminPortalOpenButton,\n AdminPortalSsoConnectionError,\n AdminPortalSsoConnectionLoading,\n AdminPortalSsoConnection as AdminPortalSsoConnectionPresentational,\n type AdminPortalSsoConnectionStatusProps,\n} from \"./lib/admin-portal-sso-connection.js\";\nimport { useIsHydrated } from \"./lib/use-is-hydrated.js\";\nimport { ApiProvider, AuthToken } from \"./api/api-provider.js\";\nimport {\n type SsoConnection,\n useGenerateAdminPortalLink,\n useListSsoConnections,\n} from \"./api/endpoint.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { unreachable } from \"./lib/utils.js\";\nimport { IdentityProvider } from \"./lib/identity-providers.js\";\n\nexport interface AdminPortalSsoConnectionProps {\n authToken: AuthToken;\n}\n\nexport const AdminPortalSsoConnection: React.FC<\n AdminPortalSsoConnectionProps\n> = ({ authToken }) => {\n const baseUrl = useWorkOsApiUrl();\n return (\n <ApiProvider\n widgetType=\"admin-portal-sso-connection\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <SingleSignOnContent />\n </ApiProvider>\n );\n};\n\nexport { AdminPortalSsoConnectionLoading };\n\nconst SingleSignOnContent = () => {\n const isHydrated = useIsHydrated();\n const [currentDate, setCurrentDate] = React.useState<Date | null>(() =>\n isHydrated ? new Date() : null,\n );\n if (isHydrated && currentDate === null) {\n setCurrentDate(new Date());\n }\n\n const { mutate: generateAdminPortalLink, ...mutation } =\n useGenerateAdminPortalLink({\n mutation: {\n onSuccess: (data) => {\n window.open(data.link, \"_blank\", \"noopener,noreferrer\");\n },\n },\n });\n\n const adminPortalLink = mutation.data?.link ?? null;\n\n const query = useListSsoConnections();\n\n const initConfig = () => {\n generateAdminPortalLink({\n params: {\n intent: \"sso\",\n },\n });\n };\n\n if (query.isLoading) {\n return <AdminPortalSsoConnectionLoading />;\n }\n\n if (query.isError) {\n return <AdminPortalSsoConnectionError error={query.error} />;\n }\n\n if (query.data) {\n const connection = query.data[0];\n if (!connection) {\n return (\n <AdminPortalSsoConnectionPresentational\n connectionStatus=\"NotConfigured\"\n currentDate={currentDate}\n lastSession={null}\n adminPortalOpenButton={\n <AdminPortalOpenButton\n isPending={mutation.isPending}\n href={adminPortalLink}\n initConfig={initConfig}\n />\n }\n />\n );\n }\n\n const connectionState = getConnectionState(connection, currentDate);\n const props: AdminPortalSsoConnectionStatusProps = (() => {\n const connectionStatus = connectionState.status;\n if (!connection || connectionStatus === \"NotConfigured\") {\n return {\n connectionStatus: \"NotConfigured\",\n } satisfies AdminPortalSsoConnectionStatusProps;\n }\n\n const identityProvider = getIdentityProvider(connection);\n switch (connectionStatus) {\n case \"Active\":\n return {\n connectionStatus,\n identityProvider,\n } satisfies AdminPortalSsoConnectionStatusProps;\n case \"Inactive\":\n return {\n connectionStatus,\n identityProvider,\n } satisfies AdminPortalSsoConnectionStatusProps;\n case \"Expired\":\n case \"Expiring\":\n return {\n connectionStatus,\n expiryDate: connectionState.expiryDate,\n identityProvider,\n } satisfies AdminPortalSsoConnectionStatusProps;\n default:\n return unreachable(connectionState);\n }\n })();\n\n const lastSession = connection.lastSession\n ? new Date(connection.lastSession.createdAt)\n : null;\n\n return (\n <ErrorBoundary FallbackComponent={AdminPortalSsoConnectionError}>\n <AdminPortalSsoConnectionPresentational\n {...props}\n currentDate={currentDate}\n lastSession={lastSession}\n adminPortalOpenButton={\n <AdminPortalOpenButton\n isPending={mutation.isPending}\n href={adminPortalLink}\n initConfig={initConfig}\n />\n }\n />\n </ErrorBoundary>\n );\n }\n};\n\ntype ConnectionState =\n | { status: \"NotConfigured\" }\n | { status: \"Active\" }\n | { status: \"Inactive\" }\n | {\n status: \"Expiring\";\n daysUntilExpiry: number | null;\n expiryDate: Date | null;\n }\n | { status: \"Expired\"; expiryDate: Date | null };\n\nfunction getConnectionState(\n connection: SsoConnection,\n currentDate: Date | null,\n): ConnectionState {\n switch (connection.state) {\n case \"Active\":\n case \"Validating\":\n case \"Deleting\": {\n const activeStatus = { status: \"Active\" } satisfies ConnectionState;\n if (connection.providerTag !== \"Saml\") {\n return activeStatus;\n }\n\n if (connection.latestExpiredCertificate) {\n return {\n status: \"Expired\",\n expiryDate: connection.latestExpiredCertificate.notAfter\n ? new Date(connection.latestExpiredCertificate.notAfter)\n : null,\n };\n }\n\n const expiryTime = connection.latestExpiringCertificate?.notAfter;\n if (currentDate == null || expiryTime == null) {\n return activeStatus;\n }\n\n const expiryDate = new Date(expiryTime);\n const daysUntilExpiry = (() => {\n const diff = expiryDate.getTime() - currentDate.getTime();\n if (diff < 0) {\n return -1;\n }\n\n return diff / (1000 * 60 * 60 * 24);\n })();\n\n if (daysUntilExpiry !== -1 && daysUntilExpiry <= 30) {\n return { status: \"Expiring\", daysUntilExpiry, expiryDate };\n }\n\n return activeStatus;\n }\n case \"Inactive\": {\n return { status: \"Inactive\" };\n }\n default:\n return unreachable(connection);\n }\n}\n\nfunction getIdentityProvider(connection: SsoConnection): IdentityProvider {\n switch (connection.type) {\n case \"AdfsSaml\":\n case \"EntraIdOidc\":\n return \"microsoft\";\n case \"Auth0Migration\":\n case \"Auth0Saml\":\n return \"auth0\";\n case \"AzureSaml\":\n return \"azure\";\n case \"CasSaml\":\n return \"cas\";\n case \"ClassLinkSaml\":\n return \"classlink\";\n case \"CloudflareSaml\":\n return \"cloudflare\";\n case \"CyberArkSaml\":\n return \"cyberark\";\n case \"DuoSaml\":\n return \"duo\";\n case \"GenericSaml\":\n return \"generic-saml\";\n case \"GoogleSaml\":\n case \"GoogleOidc\":\n return \"google\";\n case \"JumpCloudSaml\":\n return \"jumpcloud\";\n case \"KeycloakSaml\":\n return \"keycloak\";\n case \"LastPassSaml\":\n return \"lastpass\";\n case \"MiniOrangeSaml\":\n return \"miniorange\";\n case \"NetIqSaml\":\n return \"net-iq\";\n case \"OktaOidc\":\n case \"OktaSaml\":\n return \"okta\";\n case \"OneLoginSaml\":\n return \"onelogin\";\n case \"OracleSaml\":\n return \"oracle\";\n case \"PingFederateSaml\":\n case \"PingOneSaml\":\n return \"ping-identity\";\n case \"RipplingSaml\":\n return \"rippling\";\n case \"SalesforceSaml\":\n return \"salesforce\";\n case \"ShibbolethGenericSaml\":\n case \"ShibbolethSaml\":\n return \"shibboleth\";\n case \"SimpleSamlPhpSaml\":\n return \"simple-saml-php\";\n case \"TestIdp\":\n return \"test-idp\";\n case \"VmWareSaml\":\n return \"vmware\";\n case \"AdpOidc\":\n return \"adp\";\n case \"GenericOidc\":\n return \"generic-oidc\";\n case \"LoginGovOidc\":\n return \"login-gov\";\n default:\n return unreachable(connection);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCM;AAlCN,YAAuB;AACvB,yCAMO;AACP,6BAA8B;AAC9B,0BAAuC;AACvC,sBAIO;AACP,6BAAgC;AAChC,4BAA8B;AAC9B,mBAA4B;AAOrB,MAAM,2BAET,CAAC,EAAE,UAAU,MAAM;AACrB,QAAM,cAAU,wCAAgB;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX;AAAA,MACA;AAAA,MAEA,sDAAC,uBAAoB;AAAA;AAAA,EACvB;AAEJ;AAIA,MAAM,sBAAsB,MAAM;AAChC,QAAM,iBAAa,sCAAc;AACjC,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM;AAAA,IAAsB,MAChE,aAAa,oBAAI,KAAK,IAAI;AAAA,EAC5B;AACA,MAAI,cAAc,gBAAgB,MAAM;AACtC,mBAAe,oBAAI,KAAK,CAAC;AAAA,EAC3B;AAEA,QAAM,EAAE,QAAQ,yBAAyB,GAAG,SAAS,QACnD,4CAA2B;AAAA,IACzB,UAAU;AAAA,MACR,WAAW,CAAC,SAAS;AACnB,eAAO,KAAK,KAAK,MAAM,UAAU,qBAAqB;AAAA,MACxD;AAAA,IACF;AAAA,EACF,CAAC;AAEH,QAAM,kBAAkB,SAAS,MAAM,QAAQ;AAE/C,QAAM,YAAQ,uCAAsB;AAEpC,QAAM,aAAa,MAAM;AACvB,4BAAwB;AAAA,MACtB,QAAQ;AAAA,QACN,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,WAAW;AACnB,WAAO,4CAAC,sEAAgC;AAAA,EAC1C;AAEA,MAAI,MAAM,SAAS;AACjB,WAAO,4CAAC,oEAA8B,OAAO,MAAM,OAAO;AAAA,EAC5D;AAEA,MAAI,MAAM,MAAM;AACd,UAAM,aAAa,MAAM,KAAK,CAAC;AAC/B,QAAI,CAAC,YAAY;AACf,aACE;AAAA,QAAC,mCAAAA;AAAA,QAAA;AAAA,UACC,kBAAiB;AAAA,UACjB;AAAA,UACA,aAAa;AAAA,UACb,uBACE;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,SAAS;AAAA,cACpB,MAAM;AAAA,cACN;AAAA;AAAA,UACF;AAAA;AAAA,MAEJ;AAAA,IAEJ;AAEA,UAAM,kBAAkB,mBAAmB,YAAY,WAAW;AAClE,UAAM,SAA8C,MAAM;AACxD,YAAM,mBAAmB,gBAAgB;AACzC,UAAI,CAAC,cAAc,qBAAqB,iBAAiB;AACvD,eAAO;AAAA,UACL,kBAAkB;AAAA,QACpB;AAAA,MACF;AAEA,YAAM,mBAAmB,oBAAoB,UAAU;AACvD,cAAQ,kBAAkB;AAAA,QACxB,KAAK;AACH,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,UACF;AAAA,QACF,KAAK;AACH,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,UACF;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,YACL;AAAA,YACA,YAAY,gBAAgB;AAAA,YAC5B;AAAA,UACF;AAAA,QACF;AACE,qBAAO,0BAAY,eAAe;AAAA,MACtC;AAAA,IACF,GAAG;AAEH,UAAM,cAAc,WAAW,cAC3B,IAAI,KAAK,WAAW,YAAY,SAAS,IACzC;AAEJ,WACE,4CAAC,uCAAc,mBAAmB,kEAChC;AAAA,MAAC,mCAAAA;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA,uBACE;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,MAAM;AAAA,YACN;AAAA;AAAA,QACF;AAAA;AAAA,IAEJ,GACF;AAAA,EAEJ;AACF;AAaA,SAAS,mBACP,YACA,aACiB;AACjB,UAAQ,WAAW,OAAO;AAAA,IACxB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,YAAY;AACf,YAAM,eAAe,EAAE,QAAQ,SAAS;AACxC,UAAI,WAAW,gBAAgB,QAAQ;AACrC,eAAO;AAAA,MACT;AAEA,UAAI,WAAW,0BAA0B;AACvC,eAAO;AAAA,UACL,QAAQ;AAAA,UACR,YAAY,WAAW,yBAAyB,WAC5C,IAAI,KAAK,WAAW,yBAAyB,QAAQ,IACrD;AAAA,QACN;AAAA,MACF;AAEA,YAAM,aAAa,WAAW,2BAA2B;AACzD,UAAI,eAAe,QAAQ,cAAc,MAAM;AAC7C,eAAO;AAAA,MACT;AAEA,YAAM,aAAa,IAAI,KAAK,UAAU;AACtC,YAAM,mBAAmB,MAAM;AAC7B,cAAM,OAAO,WAAW,QAAQ,IAAI,YAAY,QAAQ;AACxD,YAAI,OAAO,GAAG;AACZ,iBAAO;AAAA,QACT;AAEA,eAAO,QAAQ,MAAO,KAAK,KAAK;AAAA,MAClC,GAAG;AAEH,UAAI,oBAAoB,MAAM,mBAAmB,IAAI;AACnD,eAAO,EAAE,QAAQ,YAAY,iBAAiB,WAAW;AAAA,MAC3D;AAEA,aAAO;AAAA,IACT;AAAA,IACA,KAAK,YAAY;AACf,aAAO,EAAE,QAAQ,WAAW;AAAA,IAC9B;AAAA,IACA;AACE,iBAAO,0BAAY,UAAU;AAAA,EACjC;AACF;AAEA,SAAS,oBAAoB,YAA6C;AACxE,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,iBAAO,0BAAY,UAAU;AAAA,EACjC;AACF;","names":["AdminPortalSsoConnectionPresentational"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
export { AdminPortalSsoConnectionLoading } from './lib/admin-portal-sso-connection.cjs';
|
|
3
|
-
import { AuthToken } from './api/api-provider.cjs';
|
|
4
|
-
import 'react/jsx-runtime';
|
|
5
|
-
import './lib/identity-providers.cjs';
|
|
6
|
-
|
|
7
|
-
interface AdminPortalSsoConnectionProps {
|
|
8
|
-
authToken: AuthToken;
|
|
9
|
-
}
|
|
10
|
-
declare const AdminPortalSsoConnection: React.FC<AdminPortalSsoConnectionProps>;
|
|
11
|
-
|
|
12
|
-
export { AdminPortalSsoConnection, type AdminPortalSsoConnectionProps };
|