@workos-inc/widgets 1.5.1 → 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 +11 -0
- package/dist/cjs/admin-portal-domain-verification.client.cjs +32 -17
- 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} +58 -31
- 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 +1 -1
- package/dist/cjs/api/api-provider.cjs.map +1 -1
- package/dist/cjs/api/api-provider.d.cts +1 -1
- 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-keys-client.cjs → api-keys.client.cjs} +42 -25
- 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/admin-portal-domain-verification.cjs +33 -34
- 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 +79 -79
- 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/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/generic-error.cjs +33 -24
- package/dist/cjs/lib/generic-error.cjs.map +1 -1
- package/dist/cjs/lib/generic-error.d.cts +5 -2
- 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/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 +30 -24
- 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 +19 -9
- 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 +45 -16
- 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 +27 -10
- 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 +27 -10
- 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 +34 -16
- 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 +35 -18
- 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 +31 -17
- 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} +57 -31
- package/dist/esm/admin-portal-sso-connection.client.js.map +1 -0
- package/dist/esm/api/api-provider.d.ts +1 -1
- package/dist/esm/api/api-provider.js +1 -1
- 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-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/admin-portal-domain-verification.d.ts +10 -6
- package/dist/esm/lib/admin-portal-domain-verification.js +33 -34
- 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 +83 -80
- 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/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/generic-error.d.ts +5 -2
- package/dist/esm/lib/generic-error.js +33 -24
- 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/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 +34 -25
- 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 +20 -9
- 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 +44 -16
- 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 +26 -10
- 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 +26 -10
- 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 +33 -16
- 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 +34 -18
- 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 +17 -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/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 -60
- package/dist/esm/api-keys-client.js.map +0 -1
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
--provider-icon-cas: url(https://cdn.workos.com/provider-icons/light/cas.svg);
|
|
14
14
|
--provider-icon-cezanne-hr: url(https://cdn.workos.com/provider-icons/light/cezanne-hr.svg);
|
|
15
15
|
--provider-icon-classlink: url(https://cdn.workos.com/provider-icons/light/classlink.svg);
|
|
16
|
+
--provider-icon-clever: url(https://cdn.workos.com/provider-icons/dark/clever.svg);
|
|
16
17
|
--provider-icon-cloudflare: url(https://cdn.workos.com/provider-icons/light/cloudflare.svg);
|
|
17
18
|
--provider-icon-cyberark: url(https://cdn.workos.com/provider-icons/light/cyberark.svg);
|
|
18
19
|
--provider-icon-datadog: url(https://cdn.workos.com/provider-icons/light/datadog.svg);
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
--provider-icon-google-cloud: url(https://cdn.workos.com/provider-icons/light/google-cloud.svg);
|
|
30
31
|
--provider-icon-google-drive: url(https://images.workoscdn.com/images/55956988-24d8-4733-acb0-dc19949ebff7.svg);
|
|
31
32
|
--provider-icon-google-mail: url(https://images.workoscdn.com/images/5735eb12-b0e4-4127-87be-f541a9b282fc.svg);
|
|
32
|
-
--provider-icon-google: url(https://
|
|
33
|
+
--provider-icon-google: url(https://images.workoscdn.com/images/b6d63052-83dc-4c75-beda-8121ea8bc483.svg);
|
|
33
34
|
--provider-icon-hibob: url(https://cdn.workos.com/provider-icons/light/hibob.svg);
|
|
34
35
|
--provider-icon-hubspot: url(https://images.workoscdn.com/images/ec2d62d0-64a7-4910-a437-782eaeeba7e5.svg);
|
|
35
36
|
--provider-icon-intercom: url(https://images.workoscdn.com/images/0afe7826-72a8-4673-9c95-7122ab12d011.svg);
|
|
@@ -40,11 +41,11 @@
|
|
|
40
41
|
--provider-icon-linear: url(https://images.workoscdn.com/images/ea736232-215d-4925-8bf3-c3d7a4b24078.svg);
|
|
41
42
|
--provider-icon-linkedin: url(https://cdn.workos.com/provider-icons/light/linkedin.svg);
|
|
42
43
|
--provider-icon-login-gov: url(https://cdn.workos.com/provider-icons/light/login-gov.svg);
|
|
43
|
-
--provider-icon-microsoft: url(https://
|
|
44
|
+
--provider-icon-microsoft: url(https://images.workoscdn.com/images/03c465e5-a6d8-47e2-ab15-1b5f0081fd88.svg);
|
|
44
45
|
--provider-icon-miniorange: url(https://cdn.workos.com/provider-icons/light/miniorange.svg);
|
|
45
46
|
--provider-icon-net-iq: url(https://cdn.workos.com/provider-icons/light/net-iq.svg);
|
|
46
47
|
--provider-icon-next-auth: url(https://cdn.workos.com/provider-icons/light/next-auth.svg);
|
|
47
|
-
--provider-icon-notion: url(https://
|
|
48
|
+
--provider-icon-notion: url(https://images.workoscdn.com/images/755707ef-6562-4a0f-902d-9675b9a5bb8a.svg);
|
|
48
49
|
--provider-icon-okta: url(https://cdn.workos.com/provider-icons/light/okta.svg);
|
|
49
50
|
--provider-icon-onelogin: url(https://cdn.workos.com/provider-icons/light/onelogin.svg);
|
|
50
51
|
--provider-icon-oracle: url(https://cdn.workos.com/provider-icons/light/oracle.svg);
|
|
@@ -52,11 +53,11 @@
|
|
|
52
53
|
--provider-icon-ping-identity: url(https://cdn.workos.com/provider-icons/light/ping-identity.svg);
|
|
53
54
|
--provider-icon-react-native-expo: url(https://cdn.workos.com/provider-icons/light/react-native-expo.svg);
|
|
54
55
|
--provider-icon-rippling: url(https://cdn.workos.com/provider-icons/light/rippling.svg);
|
|
55
|
-
--provider-icon-salesforce: url(https://
|
|
56
|
+
--provider-icon-salesforce: url(https://images.workoscdn.com/images/4f1247e1-982f-43d1-80f6-8a8ef0e26d08.svg);
|
|
56
57
|
--provider-icon-segment: url(https://images.workoscdn.com/images/76d2470d-af92-4a56-96f2-5167c7ab4317.svg?auto=format&fit=clip&q=80);
|
|
57
58
|
--provider-icon-shibboleth: url(https://cdn.workos.com/provider-icons/light/shibboleth.svg);
|
|
58
59
|
--provider-icon-simple-saml-php: url(https://cdn.workos.com/provider-icons/light/simple-saml-php.svg);
|
|
59
|
-
--provider-icon-slack: url(https://
|
|
60
|
+
--provider-icon-slack: url(https://images.workoscdn.com/images/4caca96c-9b83-49dc-9fd8-017a22725168.svg);
|
|
60
61
|
--provider-icon-splunk: url(https://cdn.workos.com/provider-icons/light/splunk.svg);
|
|
61
62
|
--provider-icon-stripe: url(https://images.workoscdn.com/images/44a8c194-4e70-4a6a-9bf5-72a055a4c967.svg);
|
|
62
63
|
--provider-icon-supabase: url(https://cdn.workos.com/provider-icons/light/supabase.svg);
|
|
@@ -104,7 +105,7 @@
|
|
|
104
105
|
--provider-icon-google-cloud: url(https://cdn.workos.com/provider-icons/dark/google-cloud.svg);
|
|
105
106
|
--provider-icon-google-drive: url(https://images.workoscdn.com/images/d65df86d-d61d-414b-aafc-5dc7fd661fac.svg);
|
|
106
107
|
--provider-icon-google-mail: url(https://images.workoscdn.com/images/5735eb12-b0e4-4127-87be-f541a9b282fc.svg);
|
|
107
|
-
--provider-icon-google: url(https://
|
|
108
|
+
--provider-icon-google: url(https://images.workoscdn.com/images/ca224b0c-2732-4210-beb1-738a080b4358.svg);
|
|
108
109
|
--provider-icon-hibob: url(https://cdn.workos.com/provider-icons/dark/hibob.svg);
|
|
109
110
|
--provider-icon-hubspot: url(https://images.workoscdn.com/images/e002a40c-6971-42a5-ae6e-9b2c19018394.svg);
|
|
110
111
|
--provider-icon-intercom: url(https://images.workoscdn.com/images/16d6f1eb-ac8f-41d4-99ea-af4b4613b38d.svg);
|
|
@@ -115,11 +116,11 @@
|
|
|
115
116
|
--provider-icon-linear: url(https://images.workoscdn.com/images/4ffb242f-6ca9-4409-88b8-0249654ae6e4.svg);
|
|
116
117
|
--provider-icon-linkedin: url(https://cdn.workos.com/provider-icons/dark/linkedin.svg);
|
|
117
118
|
--provider-icon-login-gov: url(https://cdn.workos.com/provider-icons/dark/login-gov.svg);
|
|
118
|
-
--provider-icon-microsoft: url(https://
|
|
119
|
+
--provider-icon-microsoft: url(https://images.workoscdn.com/images/86c3df5e-bb56-4bf5-a39e-442c394af17b.svg);
|
|
119
120
|
--provider-icon-miniorange: url(https://cdn.workos.com/provider-icons/dark/miniorange.svg);
|
|
120
121
|
--provider-icon-net-iq: url(https://cdn.workos.com/provider-icons/dark/net-iq.svg);
|
|
121
122
|
--provider-icon-next-auth: url(https://cdn.workos.com/provider-icons/dark/next-auth.svg);
|
|
122
|
-
--provider-icon-notion: url(https://images.workoscdn.com/images/
|
|
123
|
+
--provider-icon-notion: url(https://images.workoscdn.com/images/290aa0fc-0fd4-46a2-a428-97b16b111d7c.svg);
|
|
123
124
|
--provider-icon-okta: url(https://cdn.workos.com/provider-icons/dark/okta.svg);
|
|
124
125
|
--provider-icon-onelogin: url(https://cdn.workos.com/provider-icons/dark/onelogin.svg);
|
|
125
126
|
--provider-icon-oracle: url(https://cdn.workos.com/provider-icons/dark/oracle.svg);
|
|
@@ -127,11 +128,11 @@
|
|
|
127
128
|
--provider-icon-ping-identity: url(https://cdn.workos.com/provider-icons/dark/ping-identity.svg);
|
|
128
129
|
--provider-icon-react-native-expo: url(https://cdn.workos.com/provider-icons/dark/react-native-expo.svg);
|
|
129
130
|
--provider-icon-rippling: url(https://cdn.workos.com/provider-icons/dark/rippling.svg);
|
|
130
|
-
--provider-icon-salesforce: url(https://
|
|
131
|
+
--provider-icon-salesforce: url(https://images.workoscdn.com/images/d71af54e-3c97-48ce-9b26-c16430aba2ae.svg);
|
|
131
132
|
--provider-icon-segment: url(https://images.workoscdn.com/images/ed5680a5-5b78-417b-96d4-e03ee8a39160.svg?auto=format&fit=clip&q=80);
|
|
132
133
|
--provider-icon-shibboleth: url(https://cdn.workos.com/provider-icons/dark/shibboleth.svg);
|
|
133
134
|
--provider-icon-simple-saml-php: url(https://cdn.workos.com/provider-icons/dark/simple-saml-php.svg);
|
|
134
|
-
--provider-icon-slack: url(https://
|
|
135
|
+
--provider-icon-slack: url(https://images.workoscdn.com/images/de6b0a48-f241-4b85-8cb4-c04650f8d3f4.svg);
|
|
135
136
|
--provider-icon-splunk: url(https://cdn.workos.com/provider-icons/dark/splunk.svg);
|
|
136
137
|
--provider-icon-stripe: url(https://images.workoscdn.com/images/eb696a2b-ed4e-497a-a1ce-3c6c08dfde09.svg);
|
|
137
138
|
--provider-icon-supabase: url(https://cdn.workos.com/provider-icons/dark/supabase.svg);
|
|
@@ -222,6 +223,9 @@
|
|
|
222
223
|
.woswidgets-provider-icon[data-provider="classlink"] {
|
|
223
224
|
background-image: var(--provider-icon-classlink);
|
|
224
225
|
}
|
|
226
|
+
.woswidgets-provider-icon[data-provider="clever"] {
|
|
227
|
+
background-image: var(--provider-icon-clever);
|
|
228
|
+
}
|
|
225
229
|
.woswidgets-provider-icon[data-provider="clerk"] {
|
|
226
230
|
background-image: var(--provider-icon-clerk);
|
|
227
231
|
}
|
|
@@ -270,7 +274,8 @@
|
|
|
270
274
|
.woswidgets-provider-icon[data-provider="google-drive"] {
|
|
271
275
|
background-image: var(--provider-icon-google-drive);
|
|
272
276
|
}
|
|
273
|
-
.woswidgets-provider-icon[data-provider="google-mail"]
|
|
277
|
+
.woswidgets-provider-icon[data-provider="google-mail"],
|
|
278
|
+
.woswidgets-provider-icon[data-provider="gmail"] {
|
|
274
279
|
background-image: var(--provider-icon-google-mail);
|
|
275
280
|
}
|
|
276
281
|
.woswidgets-provider-icon[data-provider="google"] {
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export { AdminPortalDomainVerificationLoading } from './lib/admin-portal-domain-verification.js';
|
|
2
|
+
export { AdminPortalDomainVerificationError, AdminPortalDomainVerificationErrorProps, AdminPortalDomainVerificationLoading, AdminPortalDomainVerificationLoadingProps } from './lib/admin-portal-domain-verification.js';
|
|
3
3
|
import { AuthToken } from './api/api-provider.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 AdminPortalDomainVerificationProps {
|
|
10
|
+
interface AdminPortalDomainVerificationProps extends WidgetRootDomProps {
|
|
10
11
|
authToken: AuthToken;
|
|
11
12
|
}
|
|
12
13
|
declare const AdminPortalDomainVerification: React.FC<AdminPortalDomainVerificationProps>;
|
|
@@ -16,19 +16,25 @@ import {
|
|
|
16
16
|
import { useWorkOsApiUrl } from "./lib/widgets-context.js";
|
|
17
17
|
import { ErrorBoundary } from "./lib/error-boundary.js";
|
|
18
18
|
import { useQueryClient } from "@tanstack/react-query";
|
|
19
|
-
const AdminPortalDomainVerification = ({ authToken }) => {
|
|
19
|
+
const AdminPortalDomainVerification = ({ authToken, ...domProps }) => {
|
|
20
20
|
const baseUrl = useWorkOsApiUrl();
|
|
21
21
|
return /* @__PURE__ */ jsx(
|
|
22
|
-
|
|
22
|
+
ErrorBoundary,
|
|
23
23
|
{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
fallbackRender: ({ error }) => /* @__PURE__ */ jsx(AdminPortalDomainVerificationError, { error, ...domProps }),
|
|
25
|
+
children: /* @__PURE__ */ jsx(
|
|
26
|
+
ApiProvider,
|
|
27
|
+
{
|
|
28
|
+
widgetType: "admin-portal-domain-verification",
|
|
29
|
+
authToken,
|
|
30
|
+
baseUrl,
|
|
31
|
+
children: /* @__PURE__ */ jsx(AdminPortalDomainVerificationImpl, { ...domProps })
|
|
32
|
+
}
|
|
33
|
+
)
|
|
28
34
|
}
|
|
29
35
|
);
|
|
30
36
|
};
|
|
31
|
-
const
|
|
37
|
+
const AdminPortalDomainVerificationImpl = (props) => {
|
|
32
38
|
const isApiReady = useApiReady();
|
|
33
39
|
const queryClient = useQueryClient();
|
|
34
40
|
const {
|
|
@@ -75,25 +81,33 @@ const AdminPortalDomainVerificationContent = () => {
|
|
|
75
81
|
reverifyDomain({ domainId });
|
|
76
82
|
};
|
|
77
83
|
if (!isApiReady || isLoading) {
|
|
78
|
-
return /* @__PURE__ */ jsx(AdminPortalDomainVerificationLoading, {});
|
|
84
|
+
return /* @__PURE__ */ jsx(AdminPortalDomainVerificationLoading, { ...props });
|
|
79
85
|
}
|
|
80
86
|
if (error) {
|
|
81
|
-
return /* @__PURE__ */ jsx(AdminPortalDomainVerificationError, { error });
|
|
87
|
+
return /* @__PURE__ */ jsx(AdminPortalDomainVerificationError, { error, ...props });
|
|
82
88
|
}
|
|
83
89
|
const domains = organizationDomains?.data || [];
|
|
84
|
-
return /* @__PURE__ */ jsx(
|
|
85
|
-
|
|
90
|
+
return /* @__PURE__ */ jsx(
|
|
91
|
+
ErrorBoundary,
|
|
86
92
|
{
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
fallbackRender: ({ error: error2 }) => /* @__PURE__ */ jsx(AdminPortalDomainVerificationError, { error: error2, ...props }),
|
|
94
|
+
children: /* @__PURE__ */ jsx(
|
|
95
|
+
AdminPortalDomainVerificationPresentational,
|
|
96
|
+
{
|
|
97
|
+
organizationDomains: domains,
|
|
98
|
+
onAddDomain: handleAddDomain,
|
|
99
|
+
onDeleteDomain: handleDeleteDomain,
|
|
100
|
+
onReverifyDomain: handleReverifyDomain,
|
|
101
|
+
isPending,
|
|
102
|
+
...props
|
|
103
|
+
}
|
|
104
|
+
)
|
|
92
105
|
}
|
|
93
|
-
)
|
|
106
|
+
);
|
|
94
107
|
};
|
|
95
108
|
export {
|
|
96
109
|
AdminPortalDomainVerification,
|
|
110
|
+
AdminPortalDomainVerificationError,
|
|
97
111
|
AdminPortalDomainVerificationLoading
|
|
98
112
|
};
|
|
99
113
|
//# sourceMappingURL=admin-portal-domain-verification.client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/admin-portal-domain-verification.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n AdminPortalDomainVerificationError,\n AdminPortalDomainVerificationLoading,\n AdminPortalDomainVerification as AdminPortalDomainVerificationPresentational,\n} from \"./lib/admin-portal-domain-verification.js\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport {\n useGenerateAdminPortalLink,\n useListOrganizationDomains,\n getListOrganizationDomainsQueryKey,\n useDeleteOrganizationDomain,\n useReverifyOrganizationDomain,\n} from \"./api/endpoint.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { useQueryClient } from \"@tanstack/react-query\";\n\
|
|
1
|
+
{"version":3,"sources":["../../src/admin-portal-domain-verification.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n AdminPortalDomainVerificationError,\n AdminPortalDomainVerificationLoading,\n AdminPortalDomainVerification as AdminPortalDomainVerificationPresentational,\n} from \"./lib/admin-portal-domain-verification.js\";\nimport type {\n AdminPortalDomainVerificationErrorProps,\n AdminPortalDomainVerificationLoadingProps,\n} from \"./lib/admin-portal-domain-verification.js\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport {\n useGenerateAdminPortalLink,\n useListOrganizationDomains,\n getListOrganizationDomainsQueryKey,\n useDeleteOrganizationDomain,\n useReverifyOrganizationDomain,\n} from \"./api/endpoint.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { WidgetRootDomProps } from \"./lib/utils.js\";\n\ninterface AdminPortalDomainVerificationProps extends WidgetRootDomProps {\n authToken: AuthToken;\n}\n\nconst AdminPortalDomainVerification: React.FC<\n AdminPortalDomainVerificationProps\n> = ({ authToken, ...domProps }) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <AdminPortalDomainVerificationError error={error} {...domProps} />\n )}\n >\n <ApiProvider\n widgetType=\"admin-portal-domain-verification\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <AdminPortalDomainVerificationImpl {...domProps} />\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nconst AdminPortalDomainVerificationImpl = (\n props: Omit<AdminPortalDomainVerificationProps, \"authToken\">,\n) => {\n const isApiReady = useApiReady();\n const queryClient = useQueryClient();\n const {\n data: organizationDomains,\n isLoading,\n error,\n } = useListOrganizationDomains();\n\n const { mutate: generateAdminPortalLink, isPending } =\n useGenerateAdminPortalLink({\n mutation: {\n onSuccess: (data) => {\n window.open(data.link, \"_blank\", \"noopener,noreferrer\");\n },\n },\n });\n\n const { mutate: deleteDomain } = useDeleteOrganizationDomain({\n mutation: {\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: getListOrganizationDomainsQueryKey(),\n });\n },\n },\n });\n\n const { mutate: reverifyDomain } = useReverifyOrganizationDomain({\n mutation: {\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: getListOrganizationDomainsQueryKey(),\n });\n },\n },\n });\n\n const handleAddDomain = () => {\n generateAdminPortalLink({\n params: {\n intent: \"domain_verification\",\n },\n });\n };\n\n const handleDeleteDomain = (domainId: string) => {\n deleteDomain({ domainId });\n };\n\n const handleReverifyDomain = (domainId: string) => {\n reverifyDomain({ domainId });\n };\n\n if (!isApiReady || isLoading) {\n return <AdminPortalDomainVerificationLoading {...props} />;\n }\n\n if (error) {\n return <AdminPortalDomainVerificationError error={error} {...props} />;\n }\n\n const domains = organizationDomains?.data || [];\n\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <AdminPortalDomainVerificationError error={error} {...props} />\n )}\n >\n <AdminPortalDomainVerificationPresentational\n organizationDomains={domains}\n onAddDomain={handleAddDomain}\n onDeleteDomain={handleDeleteDomain}\n onReverifyDomain={handleReverifyDomain}\n isPending={isPending}\n {...props}\n />\n </ErrorBoundary>\n );\n};\n\nexport type {\n AdminPortalDomainVerificationProps,\n AdminPortalDomainVerificationLoadingProps,\n AdminPortalDomainVerificationErrorProps,\n};\nexport {\n AdminPortalDomainVerification,\n AdminPortalDomainVerificationLoading,\n AdminPortalDomainVerificationError,\n};\n"],"mappings":";AAqCQ;AAlCR;AAAA,EACE;AAAA,EACA;AAAA,EACA,iCAAiC;AAAA,OAC5B;AAKP,SAAS,aAAwB,mBAAmB;AACpD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAO/B,MAAM,gCAEF,CAAC,EAAE,WAAW,GAAG,SAAS,MAAM;AAClC,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,MAAM,MACvB,oBAAC,sCAAmC,OAAe,GAAG,UAAU;AAAA,MAGlE;AAAA,QAAC;AAAA;AAAA,UACC,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UAEA,8BAAC,qCAAmC,GAAG,UAAU;AAAA;AAAA,MACnD;AAAA;AAAA,EACF;AAEJ;AAEA,MAAM,oCAAoC,CACxC,UACG;AACH,QAAM,aAAa,YAAY;AAC/B,QAAM,cAAc,eAAe;AACnC,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF,IAAI,2BAA2B;AAE/B,QAAM,EAAE,QAAQ,yBAAyB,UAAU,IACjD,2BAA2B;AAAA,IACzB,UAAU;AAAA,MACR,WAAW,CAAC,SAAS;AACnB,eAAO,KAAK,KAAK,MAAM,UAAU,qBAAqB;AAAA,MACxD;AAAA,IACF;AAAA,EACF,CAAC;AAEH,QAAM,EAAE,QAAQ,aAAa,IAAI,4BAA4B;AAAA,IAC3D,UAAU;AAAA,MACR,WAAW,MAAM;AACf,oBAAY,kBAAkB;AAAA,UAC5B,UAAU,mCAAmC;AAAA,QAC/C,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,EAAE,QAAQ,eAAe,IAAI,8BAA8B;AAAA,IAC/D,UAAU;AAAA,MACR,WAAW,MAAM;AACf,oBAAY,kBAAkB;AAAA,UAC5B,UAAU,mCAAmC;AAAA,QAC/C,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,kBAAkB,MAAM;AAC5B,4BAAwB;AAAA,MACtB,QAAQ;AAAA,QACN,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,qBAAqB,CAAC,aAAqB;AAC/C,iBAAa,EAAE,SAAS,CAAC;AAAA,EAC3B;AAEA,QAAM,uBAAuB,CAAC,aAAqB;AACjD,mBAAe,EAAE,SAAS,CAAC;AAAA,EAC7B;AAEA,MAAI,CAAC,cAAc,WAAW;AAC5B,WAAO,oBAAC,wCAAsC,GAAG,OAAO;AAAA,EAC1D;AAEA,MAAI,OAAO;AACT,WAAO,oBAAC,sCAAmC,OAAe,GAAG,OAAO;AAAA,EACtE;AAEA,QAAM,UAAU,qBAAqB,QAAQ,CAAC;AAE9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAgB,CAAC,EAAE,OAAAA,OAAM,MACvB,oBAAC,sCAAmC,OAAOA,QAAQ,GAAG,OAAO;AAAA,MAG/D;AAAA,QAAC;AAAA;AAAA,UACC,qBAAqB;AAAA,UACrB,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,kBAAkB;AAAA,UAClB;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;","names":["error"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export { AdminPortalSsoConnectionError, AdminPortalSsoConnectionErrorProps, AdminPortalSsoConnectionLoading, AdminPortalSsoConnectionLoadingProps } from './lib/admin-portal-sso-connection.js';
|
|
3
|
+
import { AuthToken } from './api/api-provider.js';
|
|
4
|
+
import { WidgetRootDomProps } from './lib/utils.js';
|
|
5
|
+
import 'react/jsx-runtime';
|
|
6
|
+
import './lib/identity-providers.js';
|
|
7
|
+
import './api/endpoint.js';
|
|
8
|
+
import '@tanstack/react-query';
|
|
9
|
+
import './api/widgets-api-client.js';
|
|
10
|
+
|
|
11
|
+
interface AdminPortalSsoConnectionProps extends WidgetRootDomProps {
|
|
12
|
+
authToken: AuthToken;
|
|
13
|
+
}
|
|
14
|
+
declare const AdminPortalSsoConnection: React.FC<AdminPortalSsoConnectionProps>;
|
|
15
|
+
|
|
16
|
+
export { AdminPortalSsoConnection, type AdminPortalSsoConnectionProps };
|
package/dist/esm/{admin-portal-sso-connection-client.js → admin-portal-sso-connection.client.js}
RENAMED
|
@@ -15,19 +15,28 @@ import {
|
|
|
15
15
|
import { useWorkOsApiUrl } from "./lib/widgets-context.js";
|
|
16
16
|
import { ErrorBoundary } from "./lib/error-boundary.js";
|
|
17
17
|
import { unreachable } from "./lib/utils.js";
|
|
18
|
-
const AdminPortalSsoConnection = ({
|
|
18
|
+
const AdminPortalSsoConnection = ({
|
|
19
|
+
authToken,
|
|
20
|
+
...domProps
|
|
21
|
+
}) => {
|
|
19
22
|
const baseUrl = useWorkOsApiUrl();
|
|
20
23
|
return /* @__PURE__ */ jsx(
|
|
21
|
-
|
|
24
|
+
ErrorBoundary,
|
|
22
25
|
{
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
fallbackRender: ({ error }) => /* @__PURE__ */ jsx(AdminPortalSsoConnectionError, { error, ...domProps }),
|
|
27
|
+
children: /* @__PURE__ */ jsx(
|
|
28
|
+
ApiProvider,
|
|
29
|
+
{
|
|
30
|
+
widgetType: "admin-portal-sso-connection",
|
|
31
|
+
authToken,
|
|
32
|
+
baseUrl,
|
|
33
|
+
children: /* @__PURE__ */ jsx(AdminPortalSsoConnectionImpl, { ...domProps })
|
|
34
|
+
}
|
|
35
|
+
)
|
|
27
36
|
}
|
|
28
37
|
);
|
|
29
38
|
};
|
|
30
|
-
const
|
|
39
|
+
const AdminPortalSsoConnectionImpl = (props) => {
|
|
31
40
|
const isApiReady = useApiReady();
|
|
32
41
|
const [currentDate, setCurrentDate] = React.useState(
|
|
33
42
|
() => isApiReady ? /* @__PURE__ */ new Date() : null
|
|
@@ -52,33 +61,40 @@ const SingleSignOnContent = () => {
|
|
|
52
61
|
});
|
|
53
62
|
};
|
|
54
63
|
if (query.isLoading) {
|
|
55
|
-
return /* @__PURE__ */ jsx(AdminPortalSsoConnectionLoading, {});
|
|
64
|
+
return /* @__PURE__ */ jsx(AdminPortalSsoConnectionLoading, { ...props });
|
|
56
65
|
}
|
|
57
66
|
if (query.isError) {
|
|
58
|
-
return /* @__PURE__ */ jsx(AdminPortalSsoConnectionError, { error: query.error });
|
|
67
|
+
return /* @__PURE__ */ jsx(AdminPortalSsoConnectionError, { error: query.error, ...props });
|
|
59
68
|
}
|
|
60
69
|
if (query.data) {
|
|
61
70
|
const connection = query.data[0];
|
|
62
71
|
if (!connection) {
|
|
63
72
|
return /* @__PURE__ */ jsx(
|
|
64
|
-
|
|
73
|
+
ErrorBoundary,
|
|
65
74
|
{
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
adminPortalOpenButton: /* @__PURE__ */ jsx(
|
|
70
|
-
AdminPortalOpenButton,
|
|
75
|
+
fallbackRender: ({ error }) => /* @__PURE__ */ jsx(AdminPortalSsoConnectionError, { error, ...props }),
|
|
76
|
+
children: /* @__PURE__ */ jsx(
|
|
77
|
+
AdminPortalSsoConnectionPresentational,
|
|
71
78
|
{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
79
|
+
...props,
|
|
80
|
+
connectionStatus: "NotConfigured",
|
|
81
|
+
currentDate,
|
|
82
|
+
lastSession: null,
|
|
83
|
+
adminPortalOpenButton: /* @__PURE__ */ jsx(
|
|
84
|
+
AdminPortalOpenButton,
|
|
85
|
+
{
|
|
86
|
+
isPending: mutation.isPending,
|
|
87
|
+
href: adminPortalLink,
|
|
88
|
+
initConfig
|
|
89
|
+
}
|
|
90
|
+
)
|
|
75
91
|
}
|
|
76
92
|
)
|
|
77
93
|
}
|
|
78
94
|
);
|
|
79
95
|
}
|
|
80
96
|
const connectionState = getConnectionState(connection, currentDate);
|
|
81
|
-
const
|
|
97
|
+
const statusProps = (() => {
|
|
82
98
|
const connectionStatus = connectionState.status;
|
|
83
99
|
if (!connection || connectionStatus === "NotConfigured") {
|
|
84
100
|
return {
|
|
@@ -109,22 +125,29 @@ const SingleSignOnContent = () => {
|
|
|
109
125
|
}
|
|
110
126
|
})();
|
|
111
127
|
const lastSession = connection.lastSession ? new Date(connection.lastSession.createdAt) : null;
|
|
112
|
-
return /* @__PURE__ */ jsx(
|
|
113
|
-
|
|
128
|
+
return /* @__PURE__ */ jsx(
|
|
129
|
+
ErrorBoundary,
|
|
114
130
|
{
|
|
115
|
-
...props,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
adminPortalOpenButton: /* @__PURE__ */ jsx(
|
|
119
|
-
AdminPortalOpenButton,
|
|
131
|
+
fallbackRender: ({ error }) => /* @__PURE__ */ jsx(AdminPortalSsoConnectionError, { error, ...props }),
|
|
132
|
+
children: /* @__PURE__ */ jsx(
|
|
133
|
+
AdminPortalSsoConnectionPresentational,
|
|
120
134
|
{
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
135
|
+
...props,
|
|
136
|
+
...statusProps,
|
|
137
|
+
currentDate,
|
|
138
|
+
lastSession,
|
|
139
|
+
adminPortalOpenButton: /* @__PURE__ */ jsx(
|
|
140
|
+
AdminPortalOpenButton,
|
|
141
|
+
{
|
|
142
|
+
isPending: mutation.isPending,
|
|
143
|
+
href: adminPortalLink,
|
|
144
|
+
initConfig
|
|
145
|
+
}
|
|
146
|
+
)
|
|
124
147
|
}
|
|
125
148
|
)
|
|
126
149
|
}
|
|
127
|
-
)
|
|
150
|
+
);
|
|
128
151
|
}
|
|
129
152
|
};
|
|
130
153
|
function getConnectionState(connection, currentDate) {
|
|
@@ -230,12 +253,15 @@ function getIdentityProvider(connection) {
|
|
|
230
253
|
return "generic-oidc";
|
|
231
254
|
case "LoginGovOidc":
|
|
232
255
|
return "login-gov";
|
|
256
|
+
case "CleverOidc":
|
|
257
|
+
return "clever";
|
|
233
258
|
default:
|
|
234
259
|
return unreachable(connection);
|
|
235
260
|
}
|
|
236
261
|
}
|
|
237
262
|
export {
|
|
238
263
|
AdminPortalSsoConnection,
|
|
264
|
+
AdminPortalSsoConnectionError,
|
|
239
265
|
AdminPortalSsoConnectionLoading
|
|
240
266
|
};
|
|
241
|
-
//# sourceMappingURL=admin-portal-sso-connection
|
|
267
|
+
//# sourceMappingURL=admin-portal-sso-connection.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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} from \"./lib/admin-portal-sso-connection.js\";\nimport type {\n AdminPortalSsoConnectionErrorProps,\n AdminPortalSsoConnectionLoadingProps,\n AdminPortalSsoConnectionStatusProps,\n} from \"./lib/admin-portal-sso-connection.js\";\nimport { ApiProvider, AuthToken, useApiReady } 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, WidgetRootDomProps } from \"./lib/utils.js\";\nimport { IdentityProvider } from \"./lib/identity-providers.js\";\n\ninterface AdminPortalSsoConnectionProps extends WidgetRootDomProps {\n authToken: AuthToken;\n}\n\nconst AdminPortalSsoConnection: React.FC<AdminPortalSsoConnectionProps> = ({\n authToken,\n ...domProps\n}) => {\n const baseUrl = useWorkOsApiUrl();\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <AdminPortalSsoConnectionError error={error} {...domProps} />\n )}\n >\n <ApiProvider\n widgetType=\"admin-portal-sso-connection\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <AdminPortalSsoConnectionImpl {...domProps} />\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nconst AdminPortalSsoConnectionImpl = (props: WidgetRootDomProps) => {\n const isApiReady = useApiReady();\n const [currentDate, setCurrentDate] = React.useState<Date | null>(() =>\n isApiReady ? new Date() : null,\n );\n if (isApiReady && 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 {...props} />;\n }\n\n if (query.isError) {\n return <AdminPortalSsoConnectionError error={query.error} {...props} />;\n }\n\n if (query.data) {\n const connection = query.data[0];\n if (!connection) {\n return (\n <ErrorBoundary\n fallbackRender={({ error }) => (\n <AdminPortalSsoConnectionError error={error} {...props} />\n )}\n >\n <AdminPortalSsoConnectionPresentational\n {...props}\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 </ErrorBoundary>\n );\n }\n\n const connectionState = getConnectionState(connection, currentDate);\n const statusProps: 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\n fallbackRender={({ error }) => (\n <AdminPortalSsoConnectionError error={error} {...props} />\n )}\n >\n <AdminPortalSsoConnectionPresentational\n {...props}\n {...statusProps}\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 case \"CleverOidc\":\n return \"clever\";\n default:\n return unreachable(connection);\n }\n}\n\nexport type {\n AdminPortalSsoConnectionProps,\n AdminPortalSsoConnectionLoadingProps,\n AdminPortalSsoConnectionErrorProps,\n};\nexport {\n AdminPortalSsoConnection,\n AdminPortalSsoConnectionLoading,\n AdminPortalSsoConnectionError,\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
|
|
4
|
-
type WidgetType = "admin-portal-domain-verification" | "user-management" | "organization-switcher" | "user-sessions" | "user-security" | "user-profile" | "admin-portal-sso-connection" | "api-keys";
|
|
4
|
+
type WidgetType = "admin-portal-domain-verification" | "user-management" | "organization-switcher" | "user-sessions" | "user-security" | "user-profile" | "admin-portal-sso-connection" | "api-keys" | "pipes";
|
|
5
5
|
type AuthToken = string | (() => Promise<string>);
|
|
6
6
|
interface ElevatedAccess {
|
|
7
7
|
token: string;
|
|
@@ -22,7 +22,7 @@ const ApiProvider = ({
|
|
|
22
22
|
permissions: getClaims(resolvedToken).permissions
|
|
23
23
|
};
|
|
24
24
|
},
|
|
25
|
-
queryKey: ["authToken"]
|
|
25
|
+
queryKey: ["authToken", widgetType]
|
|
26
26
|
});
|
|
27
27
|
const [elevatedAccess, setElevatedAccess] = React.useState();
|
|
28
28
|
const elevatedAccessTimeout = React.useRef(void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/api-provider.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport * as React from \"react\";\nimport { useIsHydrated } from \"../lib/use-is-hydrated.js\";\nimport { getClaims } from \"./utils.js\";\n\nexport type WidgetType =\n | \"admin-portal-domain-verification\"\n | \"user-management\"\n | \"organization-switcher\"\n | \"user-sessions\"\n | \"user-security\"\n | \"user-profile\"\n | \"admin-portal-sso-connection\"\n | \"api-keys\";\n\nexport type AuthToken = string | (() => Promise<string>);\n\ninterface ElevatedAccess {\n token: string;\n expiresAt: string;\n}\n\ninterface ApiConfig {\n authToken: string | undefined;\n permissions: string[] | undefined;\n baseUrl: string;\n widgetType: WidgetType;\n elevatedAccess?: ElevatedAccess;\n setElevatedAccess: (elevatedAccess?: ElevatedAccess) => void;\n}\n\nconst ApiContext = React.createContext<ApiConfig | undefined>(undefined);\n\ninterface ApiProviderProps {\n authToken: AuthToken;\n baseUrl: string;\n children: React.ReactNode;\n widgetType: WidgetType;\n}\n\nexport const ApiProvider = ({\n authToken,\n baseUrl,\n children,\n widgetType,\n}: ApiProviderProps) => {\n const authTokenQuery = useQuery({\n initialData:\n typeof authToken === \"string\"\n ? {\n authToken,\n permissions: getClaims(authToken).permissions,\n }\n : undefined,\n queryFn: async () => {\n const resolvedToken =\n typeof authToken === \"string\" ? authToken : await authToken();\n\n return {\n authToken: resolvedToken,\n permissions: getClaims(resolvedToken).permissions,\n };\n },\n queryKey: [\"authToken\"],\n });\n\n const [elevatedAccess, setElevatedAccess] = React.useState<ElevatedAccess>();\n const elevatedAccessTimeout = React.useRef<number | undefined>(undefined);\n\n // This effect manages the expiration of elevated access tokens\n // When an elevated access token is present, it checks every 30 seconds if the token has expired\n // If the token has expired (current time > expiration time), it clears the elevated access\n React.useEffect(() => {\n if (elevatedAccessTimeout.current) {\n window.clearInterval(elevatedAccessTimeout.current);\n }\n\n if (elevatedAccess) {\n elevatedAccessTimeout.current = window.setInterval(() => {\n const now = new Date();\n const expiresAtDate = new Date(elevatedAccess.expiresAt);\n\n // Reset the elevated access if it has expired\n if (now > expiresAtDate) {\n setElevatedAccess(undefined);\n }\n }, 30_000); // every 30 seconds\n }\n\n return () => {\n if (elevatedAccessTimeout.current) {\n window.clearInterval(elevatedAccessTimeout.current);\n }\n };\n }, [elevatedAccess]);\n\n const value = React.useMemo(\n () => ({\n authToken: authTokenQuery.data?.authToken,\n permissions: authTokenQuery.data?.permissions,\n baseUrl,\n elevatedAccess,\n setElevatedAccess,\n widgetType,\n }),\n [\n authTokenQuery.data,\n baseUrl,\n elevatedAccess,\n setElevatedAccess,\n widgetType,\n ],\n );\n\n return <ApiContext.Provider value={value}>{children}</ApiContext.Provider>;\n};\n\nexport const useApi = () => {\n const context = React.useContext(ApiContext);\n\n if (context === undefined) {\n throw new Error(\"useApi must be used within an ApiProvider\");\n }\n\n return context;\n};\n\nexport const useElevatedAccessToken = () => {\n const { elevatedAccess, setElevatedAccess } = useApi();\n\n return { elevatedAccess, setElevatedAccess };\n};\n\nexport const useApiReady = () => {\n const { authToken } = useApi();\n const isHydrated = useIsHydrated();\n\n return isHydrated && authToken !== undefined;\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/api/api-provider.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport * as React from \"react\";\nimport { useIsHydrated } from \"../lib/use-is-hydrated.js\";\nimport { getClaims } from \"./utils.js\";\n\nexport type WidgetType =\n | \"admin-portal-domain-verification\"\n | \"user-management\"\n | \"organization-switcher\"\n | \"user-sessions\"\n | \"user-security\"\n | \"user-profile\"\n | \"admin-portal-sso-connection\"\n | \"api-keys\"\n | \"pipes\";\n\nexport type AuthToken = string | (() => Promise<string>);\n\ninterface ElevatedAccess {\n token: string;\n expiresAt: string;\n}\n\ninterface ApiConfig {\n authToken: string | undefined;\n permissions: string[] | undefined;\n baseUrl: string;\n widgetType: WidgetType;\n elevatedAccess?: ElevatedAccess;\n setElevatedAccess: (elevatedAccess?: ElevatedAccess) => void;\n}\n\nconst ApiContext = React.createContext<ApiConfig | undefined>(undefined);\n\ninterface ApiProviderProps {\n authToken: AuthToken;\n baseUrl: string;\n children: React.ReactNode;\n widgetType: WidgetType;\n}\n\nexport const ApiProvider = ({\n authToken,\n baseUrl,\n children,\n widgetType,\n}: ApiProviderProps) => {\n const authTokenQuery = useQuery({\n initialData:\n typeof authToken === \"string\"\n ? {\n authToken,\n permissions: getClaims(authToken).permissions,\n }\n : undefined,\n queryFn: async () => {\n const resolvedToken =\n typeof authToken === \"string\" ? authToken : await authToken();\n\n return {\n authToken: resolvedToken,\n permissions: getClaims(resolvedToken).permissions,\n };\n },\n queryKey: [\"authToken\", widgetType],\n });\n\n const [elevatedAccess, setElevatedAccess] = React.useState<ElevatedAccess>();\n const elevatedAccessTimeout = React.useRef<number | undefined>(undefined);\n\n // This effect manages the expiration of elevated access tokens\n // When an elevated access token is present, it checks every 30 seconds if the token has expired\n // If the token has expired (current time > expiration time), it clears the elevated access\n React.useEffect(() => {\n if (elevatedAccessTimeout.current) {\n window.clearInterval(elevatedAccessTimeout.current);\n }\n\n if (elevatedAccess) {\n elevatedAccessTimeout.current = window.setInterval(() => {\n const now = new Date();\n const expiresAtDate = new Date(elevatedAccess.expiresAt);\n\n // Reset the elevated access if it has expired\n if (now > expiresAtDate) {\n setElevatedAccess(undefined);\n }\n }, 30_000); // every 30 seconds\n }\n\n return () => {\n if (elevatedAccessTimeout.current) {\n window.clearInterval(elevatedAccessTimeout.current);\n }\n };\n }, [elevatedAccess]);\n\n const value = React.useMemo(\n () => ({\n authToken: authTokenQuery.data?.authToken,\n permissions: authTokenQuery.data?.permissions,\n baseUrl,\n elevatedAccess,\n setElevatedAccess,\n widgetType,\n }),\n [\n authTokenQuery.data,\n baseUrl,\n elevatedAccess,\n setElevatedAccess,\n widgetType,\n ],\n );\n\n return <ApiContext.Provider value={value}>{children}</ApiContext.Provider>;\n};\n\nexport const useApi = () => {\n const context = React.useContext(ApiContext);\n\n if (context === undefined) {\n throw new Error(\"useApi must be used within an ApiProvider\");\n }\n\n return context;\n};\n\nexport const useElevatedAccessToken = () => {\n const { elevatedAccess, setElevatedAccess } = useApi();\n\n return { elevatedAccess, setElevatedAccess };\n};\n\nexport const useApiReady = () => {\n const { authToken } = useApi();\n const isHydrated = useIsHydrated();\n\n return isHydrated && authToken !== undefined;\n};\n"],"mappings":"AAmHS;AAnHT,SAAS,gBAAgB;AACzB,YAAY,WAAW;AACvB,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB;AA6B1B,MAAM,aAAa,MAAM,cAAqC,MAAS;AAShE,MAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,QAAM,iBAAiB,SAAS;AAAA,IAC9B,aACE,OAAO,cAAc,WACjB;AAAA,MACE;AAAA,MACA,aAAa,UAAU,SAAS,EAAE;AAAA,IACpC,IACA;AAAA,IACN,SAAS,YAAY;AACnB,YAAM,gBACJ,OAAO,cAAc,WAAW,YAAY,MAAM,UAAU;AAE9D,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa,UAAU,aAAa,EAAE;AAAA,MACxC;AAAA,IACF;AAAA,IACA,UAAU,CAAC,aAAa,UAAU;AAAA,EACpC,CAAC;AAED,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAyB;AAC3E,QAAM,wBAAwB,MAAM,OAA2B,MAAS;AAKxE,QAAM,UAAU,MAAM;AACpB,QAAI,sBAAsB,SAAS;AACjC,aAAO,cAAc,sBAAsB,OAAO;AAAA,IACpD;AAEA,QAAI,gBAAgB;AAClB,4BAAsB,UAAU,OAAO,YAAY,MAAM;AACvD,cAAM,MAAM,oBAAI,KAAK;AACrB,cAAM,gBAAgB,IAAI,KAAK,eAAe,SAAS;AAGvD,YAAI,MAAM,eAAe;AACvB,4BAAkB,MAAS;AAAA,QAC7B;AAAA,MACF,GAAG,GAAM;AAAA,IACX;AAEA,WAAO,MAAM;AACX,UAAI,sBAAsB,SAAS;AACjC,eAAO,cAAc,sBAAsB,OAAO;AAAA,MACpD;AAAA,IACF;AAAA,EACF,GAAG,CAAC,cAAc,CAAC;AAEnB,QAAM,QAAQ,MAAM;AAAA,IAClB,OAAO;AAAA,MACL,WAAW,eAAe,MAAM;AAAA,MAChC,aAAa,eAAe,MAAM;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,oBAAC,WAAW,UAAX,EAAoB,OAAe,UAAS;AACtD;AAEO,MAAM,SAAS,MAAM;AAC1B,QAAM,UAAU,MAAM,WAAW,UAAU;AAE3C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,SAAO;AACT;AAEO,MAAM,yBAAyB,MAAM;AAC1C,QAAM,EAAE,gBAAgB,kBAAkB,IAAI,OAAO;AAErD,SAAO,EAAE,gBAAgB,kBAAkB;AAC7C;AAEO,MAAM,cAAc,MAAM;AAC/B,QAAM,EAAE,UAAU,IAAI,OAAO;AAC7B,QAAM,aAAa,cAAc;AAEjC,SAAO,cAAc,cAAc;AACrC;","names":[]}
|