@workos-inc/widgets 1.6.1 → 1.7.0-pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -1
- package/dist/cjs/admin-portal-domain-verification.client.d.cts +11 -0
- package/dist/cjs/admin-portal-sso-connection.client.d.cts +11 -0
- package/dist/cjs/alert-dialog-BlG3_awx.d.cts +25 -0
- package/dist/cjs/api-keys.client.d.cts +11 -0
- package/dist/cjs/dialog-C15qCLN3.d.cts +23 -0
- package/dist/cjs/dropdown-menu-BQ5LtvdR.d.cts +48 -0
- package/dist/cjs/index.d.cts +8 -0
- package/dist/cjs/lib/add-mfa-dialog.cjs +22 -14
- package/dist/cjs/lib/add-mfa-dialog.cjs.map +1 -1
- package/dist/cjs/lib/add-mfa-dialog.d.cts +2 -2
- package/dist/cjs/lib/admin-portal-domain-verification.cjs +6 -8
- package/dist/cjs/lib/admin-portal-domain-verification.cjs.map +1 -1
- package/dist/cjs/lib/admin-portal-domain-verification.d.cts +11 -0
- package/dist/cjs/lib/admin-portal-sso-connection.cjs +7 -8
- package/dist/cjs/lib/admin-portal-sso-connection.cjs.map +1 -1
- package/dist/cjs/lib/admin-portal-sso-connection.d.cts +11 -0
- package/dist/cjs/lib/api-keys/api-key-details-dialog.cjs +3 -3
- package/dist/cjs/lib/api-keys/api-key-details-dialog.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/api-keys-search.cjs +2 -6
- package/dist/cjs/lib/api-keys/api-keys-search.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/api-keys-table.cjs +18 -19
- package/dist/cjs/lib/api-keys/api-keys-table.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/api-keys.cjs +2 -2
- package/dist/cjs/lib/api-keys/api-keys.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/api-keys.d.cts +12 -0
- package/dist/cjs/lib/api-keys/create-api-key.cjs +20 -14
- package/dist/cjs/lib/api-keys/create-api-key.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/revoke-api-key-dialog.cjs +7 -7
- package/dist/cjs/lib/api-keys/revoke-api-key-dialog.cjs.map +1 -1
- package/dist/cjs/lib/api-keys/skeleton-table.cjs +3 -2
- package/dist/cjs/lib/api-keys/skeleton-table.cjs.map +1 -1
- package/dist/cjs/lib/change-password-dialog.cjs +11 -9
- package/dist/cjs/lib/change-password-dialog.cjs.map +1 -1
- package/dist/cjs/lib/change-password-dialog.d.cts +2 -2
- package/dist/cjs/lib/copy-button.cjs +51 -29
- package/dist/cjs/lib/copy-button.cjs.map +1 -1
- package/dist/cjs/lib/copy-button.d.cts +22 -4
- package/dist/cjs/lib/delete-domain-dialog.cjs +8 -7
- package/dist/cjs/lib/delete-domain-dialog.cjs.map +1 -1
- package/dist/cjs/lib/delete-user-dialog.cjs +15 -7
- package/dist/cjs/lib/delete-user-dialog.cjs.map +1 -1
- package/dist/cjs/lib/delete-user-dialog.d.cts +2 -2
- package/dist/cjs/lib/domain-actions.cjs +8 -8
- package/dist/cjs/lib/domain-actions.cjs.map +1 -1
- package/dist/cjs/lib/edit-user-profile-dialog.cjs +10 -9
- package/dist/cjs/lib/edit-user-profile-dialog.cjs.map +1 -1
- package/dist/cjs/lib/edit-user-profile-dialog.d.cts +2 -2
- package/dist/cjs/lib/edit-user-role-dialog.cjs +15 -15
- package/dist/cjs/lib/edit-user-role-dialog.cjs.map +1 -1
- package/dist/cjs/lib/edit-user-role-dialog.d.cts +2 -2
- package/dist/cjs/lib/elements/alert-dialog.cjs +76 -0
- package/dist/cjs/lib/elements/alert-dialog.cjs.map +1 -0
- package/dist/cjs/lib/elements/alert-dialog.d.cts +3 -0
- package/dist/cjs/lib/elements/dialog.cjs +74 -0
- package/dist/cjs/lib/elements/dialog.cjs.map +1 -0
- package/dist/cjs/lib/elements/dialog.d.cts +3 -0
- package/dist/cjs/lib/elements/dropdown-menu.cjs +162 -0
- package/dist/cjs/lib/elements/dropdown-menu.cjs.map +1 -0
- package/dist/cjs/lib/elements/dropdown-menu.d.cts +3 -0
- package/dist/cjs/lib/elements/select.cjs +112 -0
- package/dist/cjs/lib/elements/select.cjs.map +1 -0
- package/dist/cjs/lib/elements/select.d.cts +4 -0
- package/dist/cjs/lib/elements/utils.cjs +54 -0
- package/dist/cjs/lib/elements/utils.cjs.map +1 -0
- package/dist/cjs/lib/elements/utils.d.cts +15 -0
- package/dist/cjs/lib/elements.cjs +73 -219
- package/dist/cjs/lib/elements.cjs.map +1 -1
- package/dist/cjs/lib/elements.d.cts +16 -13
- package/dist/cjs/lib/elevated-access.cjs +18 -10
- package/dist/cjs/lib/elevated-access.cjs.map +1 -1
- package/dist/cjs/lib/empty-state.d.cts +12 -0
- package/dist/cjs/lib/invite-user-dialog.cjs +13 -12
- package/dist/cjs/lib/invite-user-dialog.cjs.map +1 -1
- package/dist/cjs/lib/logout-all-sessions-dialog.cjs +7 -6
- package/dist/cjs/lib/logout-all-sessions-dialog.cjs.map +1 -1
- package/dist/cjs/lib/logout-all-sessions-dialog.d.cts +2 -2
- package/dist/cjs/lib/logout-dialog.cjs +7 -6
- package/dist/cjs/lib/logout-dialog.cjs.map +1 -1
- package/dist/cjs/lib/logout-dialog.d.cts +2 -2
- package/dist/cjs/lib/organization-switcher.cjs +38 -20
- package/dist/cjs/lib/organization-switcher.cjs.map +1 -1
- package/dist/cjs/lib/organization-switcher.d.cts +16 -2
- package/dist/cjs/lib/otp-input.d.cts +8 -0
- package/dist/cjs/lib/pipes.cjs +31 -42
- package/dist/cjs/lib/pipes.cjs.map +1 -1
- package/dist/cjs/lib/pipes.d.cts +12 -0
- package/dist/cjs/lib/resend-invite-dialog.cjs +23 -13
- package/dist/cjs/lib/resend-invite-dialog.cjs.map +1 -1
- package/dist/cjs/lib/resend-invite-dialog.d.cts +2 -2
- package/dist/cjs/lib/reset-mfa-dialog.cjs +9 -8
- package/dist/cjs/lib/reset-mfa-dialog.cjs.map +1 -1
- package/dist/cjs/lib/reset-mfa-dialog.d.cts +2 -2
- package/dist/cjs/lib/revoke-invite-dialog.cjs +17 -8
- package/dist/cjs/lib/revoke-invite-dialog.cjs.map +1 -1
- package/dist/cjs/lib/revoke-invite-dialog.d.cts +2 -2
- package/dist/cjs/lib/save-button.cjs +3 -2
- package/dist/cjs/lib/save-button.cjs.map +1 -1
- package/dist/cjs/lib/save-button.d.cts +12 -1
- package/dist/cjs/lib/set-password-dialog.cjs +11 -9
- package/dist/cjs/lib/set-password-dialog.cjs.map +1 -1
- package/dist/cjs/lib/set-password-dialog.d.cts +2 -2
- package/dist/cjs/lib/user-actions-dropdown.cjs +9 -8
- package/dist/cjs/lib/user-actions-dropdown.cjs.map +1 -1
- package/dist/cjs/lib/user-profile.cjs +1 -1
- package/dist/cjs/lib/user-profile.cjs.map +1 -1
- package/dist/cjs/lib/user-profile.d.cts +11 -0
- package/dist/cjs/lib/user-security.cjs +3 -3
- package/dist/cjs/lib/user-security.cjs.map +1 -1
- package/dist/cjs/lib/user-security.d.cts +12 -0
- package/dist/cjs/lib/user-sessions.cjs +3 -11
- package/dist/cjs/lib/user-sessions.cjs.map +1 -1
- package/dist/cjs/lib/user-sessions.d.cts +12 -0
- package/dist/cjs/lib/users-filter.cjs +5 -6
- package/dist/cjs/lib/users-filter.cjs.map +1 -1
- package/dist/cjs/lib/users-filter.d.cts +2 -2
- package/dist/cjs/lib/users-management.cjs +22 -34
- package/dist/cjs/lib/users-management.cjs.map +1 -1
- package/dist/cjs/lib/users-management.d.cts +11 -0
- package/dist/cjs/lib/users-search.cjs +2 -6
- package/dist/cjs/lib/users-search.cjs.map +1 -1
- package/dist/cjs/lib/utils.cjs +25 -2
- package/dist/cjs/lib/utils.cjs.map +1 -1
- package/dist/cjs/lib/utils.d.cts +17 -3
- package/dist/cjs/lib/view-dns-record-dialog.cjs +9 -8
- package/dist/cjs/lib/view-dns-record-dialog.cjs.map +1 -1
- package/dist/cjs/lib/widgets-context.d.cts +8 -0
- package/dist/cjs/organization-switcher.client.cjs +33 -5
- package/dist/cjs/organization-switcher.client.cjs.map +1 -1
- package/dist/cjs/organization-switcher.client.d.cts +11 -0
- package/dist/cjs/pipes.client.d.cts +11 -0
- package/dist/cjs/select-KR89Qnvm.d.cts +30 -0
- package/dist/cjs/user-profile.client.d.cts +11 -0
- package/dist/cjs/user-security.client.d.cts +11 -0
- package/dist/cjs/user-sessions.client.d.cts +11 -0
- package/dist/cjs/users-management.client.d.cts +11 -0
- package/dist/cjs/utils.cjs +59 -0
- package/dist/cjs/utils.cjs.map +1 -0
- package/dist/cjs/utils.d.cts +3 -0
- package/dist/cjs/workos-widgets.client.d.cts +8 -0
- package/dist/css/lib/provider-icon.css +6 -0
- package/dist/esm/admin-portal-domain-verification.client.d.ts +11 -0
- package/dist/esm/admin-portal-sso-connection.client.d.ts +11 -0
- package/dist/esm/alert-dialog-BlG3_awx.d.ts +25 -0
- package/dist/esm/api-keys.client.d.ts +11 -0
- package/dist/esm/dialog-C15qCLN3.d.ts +23 -0
- package/dist/esm/dropdown-menu-BQ5LtvdR.d.ts +48 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/lib/add-mfa-dialog.d.ts +2 -2
- package/dist/esm/lib/add-mfa-dialog.js +16 -9
- package/dist/esm/lib/add-mfa-dialog.js.map +1 -1
- package/dist/esm/lib/admin-portal-domain-verification.d.ts +11 -0
- package/dist/esm/lib/admin-portal-domain-verification.js +6 -8
- package/dist/esm/lib/admin-portal-domain-verification.js.map +1 -1
- package/dist/esm/lib/admin-portal-sso-connection.d.ts +11 -0
- package/dist/esm/lib/admin-portal-sso-connection.js +8 -9
- package/dist/esm/lib/admin-portal-sso-connection.js.map +1 -1
- package/dist/esm/lib/api-keys/api-key-details-dialog.js +3 -3
- package/dist/esm/lib/api-keys/api-key-details-dialog.js.map +1 -1
- package/dist/esm/lib/api-keys/api-keys-search.js +2 -6
- package/dist/esm/lib/api-keys/api-keys-search.js.map +1 -1
- package/dist/esm/lib/api-keys/api-keys-table.js +18 -32
- package/dist/esm/lib/api-keys/api-keys-table.js.map +1 -1
- package/dist/esm/lib/api-keys/api-keys.d.ts +12 -0
- package/dist/esm/lib/api-keys/api-keys.js +2 -2
- package/dist/esm/lib/api-keys/api-keys.js.map +1 -1
- package/dist/esm/lib/api-keys/create-api-key.js +17 -14
- package/dist/esm/lib/api-keys/create-api-key.js.map +1 -1
- package/dist/esm/lib/api-keys/revoke-api-key-dialog.js +4 -4
- package/dist/esm/lib/api-keys/revoke-api-key-dialog.js.map +1 -1
- package/dist/esm/lib/api-keys/skeleton-table.js +2 -1
- package/dist/esm/lib/api-keys/skeleton-table.js.map +1 -1
- package/dist/esm/lib/change-password-dialog.d.ts +2 -2
- package/dist/esm/lib/change-password-dialog.js +8 -12
- package/dist/esm/lib/change-password-dialog.js.map +1 -1
- package/dist/esm/lib/copy-button.d.ts +22 -4
- package/dist/esm/lib/copy-button.js +49 -28
- package/dist/esm/lib/copy-button.js.map +1 -1
- package/dist/esm/lib/delete-domain-dialog.js +4 -3
- package/dist/esm/lib/delete-domain-dialog.js.map +1 -1
- package/dist/esm/lib/delete-user-dialog.d.ts +2 -2
- package/dist/esm/lib/delete-user-dialog.js +13 -15
- package/dist/esm/lib/delete-user-dialog.js.map +1 -1
- package/dist/esm/lib/domain-actions.js +4 -4
- package/dist/esm/lib/domain-actions.js.map +1 -1
- package/dist/esm/lib/edit-user-profile-dialog.d.ts +2 -2
- package/dist/esm/lib/edit-user-profile-dialog.js +7 -12
- package/dist/esm/lib/edit-user-profile-dialog.js.map +1 -1
- package/dist/esm/lib/edit-user-role-dialog.d.ts +2 -2
- package/dist/esm/lib/edit-user-role-dialog.js +9 -19
- package/dist/esm/lib/edit-user-role-dialog.js.map +1 -1
- package/dist/esm/lib/elements/alert-dialog.d.ts +3 -0
- package/dist/esm/lib/elements/alert-dialog.js +45 -0
- package/dist/esm/lib/elements/alert-dialog.js.map +1 -0
- package/dist/esm/lib/elements/dialog.d.ts +3 -0
- package/dist/esm/lib/elements/dialog.js +43 -0
- package/dist/esm/lib/elements/dialog.js.map +1 -0
- package/dist/esm/lib/elements/dropdown-menu.d.ts +3 -0
- package/dist/esm/lib/elements/dropdown-menu.js +131 -0
- package/dist/esm/lib/elements/dropdown-menu.js.map +1 -0
- package/dist/esm/lib/elements/select.d.ts +4 -0
- package/dist/esm/lib/elements/select.js +77 -0
- package/dist/esm/lib/elements/select.js.map +1 -0
- package/dist/esm/lib/elements/utils.d.ts +15 -0
- package/dist/esm/lib/elements/utils.js +20 -0
- package/dist/esm/lib/elements/utils.js.map +1 -0
- package/dist/esm/lib/elements.d.ts +16 -13
- package/dist/esm/lib/elements.js +71 -215
- package/dist/esm/lib/elements.js.map +1 -1
- package/dist/esm/lib/elevated-access.js +14 -6
- package/dist/esm/lib/elevated-access.js.map +1 -1
- package/dist/esm/lib/empty-state.d.ts +12 -0
- package/dist/esm/lib/invite-user-dialog.js +10 -24
- package/dist/esm/lib/invite-user-dialog.js.map +1 -1
- package/dist/esm/lib/logout-all-sessions-dialog.d.ts +2 -2
- package/dist/esm/lib/logout-all-sessions-dialog.js +6 -9
- package/dist/esm/lib/logout-all-sessions-dialog.js.map +1 -1
- package/dist/esm/lib/logout-dialog.d.ts +2 -2
- package/dist/esm/lib/logout-dialog.js +6 -9
- package/dist/esm/lib/logout-dialog.js.map +1 -1
- package/dist/esm/lib/organization-switcher.d.ts +16 -2
- package/dist/esm/lib/organization-switcher.js +33 -13
- package/dist/esm/lib/organization-switcher.js.map +1 -1
- package/dist/esm/lib/otp-input.d.ts +8 -0
- package/dist/esm/lib/pipes.d.ts +12 -0
- package/dist/esm/lib/pipes.js +27 -47
- package/dist/esm/lib/pipes.js.map +1 -1
- package/dist/esm/lib/resend-invite-dialog.d.ts +2 -2
- package/dist/esm/lib/resend-invite-dialog.js +17 -20
- package/dist/esm/lib/resend-invite-dialog.js.map +1 -1
- package/dist/esm/lib/reset-mfa-dialog.d.ts +2 -2
- package/dist/esm/lib/reset-mfa-dialog.js +6 -9
- package/dist/esm/lib/reset-mfa-dialog.js.map +1 -1
- package/dist/esm/lib/revoke-invite-dialog.d.ts +2 -2
- package/dist/esm/lib/revoke-invite-dialog.js +14 -15
- package/dist/esm/lib/revoke-invite-dialog.js.map +1 -1
- package/dist/esm/lib/save-button.d.ts +12 -1
- package/dist/esm/lib/save-button.js +4 -9
- package/dist/esm/lib/save-button.js.map +1 -1
- package/dist/esm/lib/set-password-dialog.d.ts +2 -2
- package/dist/esm/lib/set-password-dialog.js +8 -12
- package/dist/esm/lib/set-password-dialog.js.map +1 -1
- package/dist/esm/lib/user-actions-dropdown.js +8 -11
- package/dist/esm/lib/user-actions-dropdown.js.map +1 -1
- package/dist/esm/lib/user-profile.d.ts +11 -0
- package/dist/esm/lib/user-profile.js +2 -2
- package/dist/esm/lib/user-profile.js.map +1 -1
- package/dist/esm/lib/user-security.d.ts +12 -0
- package/dist/esm/lib/user-security.js +4 -4
- package/dist/esm/lib/user-security.js.map +1 -1
- package/dist/esm/lib/user-sessions.d.ts +12 -0
- package/dist/esm/lib/user-sessions.js +5 -13
- package/dist/esm/lib/user-sessions.js.map +1 -1
- package/dist/esm/lib/users-filter.d.ts +2 -2
- package/dist/esm/lib/users-filter.js +5 -6
- package/dist/esm/lib/users-filter.js.map +1 -1
- package/dist/esm/lib/users-management.d.ts +11 -0
- package/dist/esm/lib/users-management.js +23 -39
- package/dist/esm/lib/users-management.js.map +1 -1
- package/dist/esm/lib/users-search.js +2 -6
- package/dist/esm/lib/users-search.js.map +1 -1
- package/dist/esm/lib/utils.d.ts +17 -3
- package/dist/esm/lib/utils.js +24 -2
- package/dist/esm/lib/utils.js.map +1 -1
- package/dist/esm/lib/view-dns-record-dialog.js +7 -17
- package/dist/esm/lib/view-dns-record-dialog.js.map +1 -1
- package/dist/esm/lib/widgets-context.d.ts +8 -0
- package/dist/esm/organization-switcher.client.d.ts +11 -0
- package/dist/esm/organization-switcher.client.js +33 -5
- package/dist/esm/organization-switcher.client.js.map +1 -1
- package/dist/esm/pipes.client.d.ts +11 -0
- package/dist/esm/select-KR89Qnvm.d.ts +30 -0
- package/dist/esm/user-profile.client.d.ts +11 -0
- package/dist/esm/user-security.client.d.ts +11 -0
- package/dist/esm/user-sessions.client.d.ts +11 -0
- package/dist/esm/users-management.client.d.ts +11 -0
- package/dist/esm/utils.d.ts +3 -0
- package/dist/esm/utils.js +25 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/workos-widgets.client.d.ts +8 -0
- package/package.json +11 -1
|
@@ -2,6 +2,14 @@ import { Grid } from '@radix-ui/themes';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { TextField } from './elements.cjs';
|
|
4
4
|
import '@radix-ui/themes/props';
|
|
5
|
+
import '../dialog-C15qCLN3.cjs';
|
|
6
|
+
import '@radix-ui/themes/components/dialog';
|
|
7
|
+
import '../alert-dialog-BlG3_awx.cjs';
|
|
8
|
+
import '@radix-ui/themes/components/alert-dialog';
|
|
9
|
+
import '../dropdown-menu-BQ5LtvdR.cjs';
|
|
10
|
+
import '@radix-ui/themes/components/dropdown-menu';
|
|
11
|
+
import '../select-KR89Qnvm.cjs';
|
|
12
|
+
import '@radix-ui/themes/components/select';
|
|
5
13
|
|
|
6
14
|
type OtpRootProps = React.ComponentPropsWithoutRef<typeof Grid> & {
|
|
7
15
|
onValueChange?: (value: string) => void;
|
package/dist/cjs/lib/pipes.cjs
CHANGED
|
@@ -64,17 +64,15 @@ function ConnectIntegrationButton({
|
|
|
64
64
|
}) {
|
|
65
65
|
const eventHandler = useOpenDataIntegrationAuthorizeUrl(integration);
|
|
66
66
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
67
|
-
|
|
67
|
+
import_elements.Button,
|
|
68
68
|
{
|
|
69
|
+
variant: "secondary",
|
|
69
70
|
onClick: async () => {
|
|
70
71
|
try {
|
|
71
72
|
await eventHandler();
|
|
72
73
|
} catch {
|
|
73
74
|
}
|
|
74
75
|
},
|
|
75
|
-
variant: "outline",
|
|
76
|
-
size: "2",
|
|
77
|
-
color: "gray",
|
|
78
76
|
children: "Connect"
|
|
79
77
|
}
|
|
80
78
|
);
|
|
@@ -88,7 +86,7 @@ function SharedCredentialsConnectIntegrationButton({
|
|
|
88
86
|
const logo = settings.data?.logoDarkPath ?? settings.data?.logoLightPath;
|
|
89
87
|
const appName = settings.data?.teamName ?? "This application";
|
|
90
88
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
91
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
89
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Root, { open, onOpenChange: setOpen, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Content, { maxWidth: "430px", children: [
|
|
92
90
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { justify: "center", align: "center", gap: "2", mt: "2", children: [
|
|
93
91
|
logo && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
94
92
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -123,7 +121,7 @@ function SharedCredentialsConnectIntegrationButton({
|
|
|
123
121
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.DotsHorizontalIcon, {}),
|
|
124
122
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icon_panel.IconPanel, { color: "panel", style: { width: "48px", height: "48px" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_provider_icon.ProviderIcon, { size: "2", provider: integration.integrationType }) })
|
|
125
123
|
] }),
|
|
126
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
124
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Title, { size: "2", mt: "5", mb: "5", weight: "bold", align: "center", children: [
|
|
127
125
|
appName,
|
|
128
126
|
" uses WorkOS to connect to ",
|
|
129
127
|
integration.name,
|
|
@@ -164,10 +162,11 @@ function SharedCredentialsConnectIntegrationButton({
|
|
|
164
162
|
] })
|
|
165
163
|
] }) }),
|
|
166
164
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { justify: "end", gap: "3", mt: "5", children: [
|
|
167
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
165
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { variant: "secondary", children: "Cancel" }) }),
|
|
168
166
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
169
|
-
import_elements.
|
|
167
|
+
import_elements.Button,
|
|
170
168
|
{
|
|
169
|
+
type: "button",
|
|
171
170
|
onClick: async () => {
|
|
172
171
|
try {
|
|
173
172
|
await eventHandler();
|
|
@@ -177,22 +176,13 @@ function SharedCredentialsConnectIntegrationButton({
|
|
|
177
176
|
},
|
|
178
177
|
children: [
|
|
179
178
|
"Connect ",
|
|
180
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.ExternalLinkIcon, {})
|
|
179
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.ExternalLinkIcon, { "aria-hidden": true })
|
|
181
180
|
]
|
|
182
181
|
}
|
|
183
182
|
)
|
|
184
183
|
] })
|
|
185
184
|
] }) }),
|
|
186
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
187
|
-
import_themes.Button,
|
|
188
|
-
{
|
|
189
|
-
onClick: () => setOpen(true),
|
|
190
|
-
variant: "outline",
|
|
191
|
-
size: "2",
|
|
192
|
-
color: "gray",
|
|
193
|
-
children: "Connect"
|
|
194
|
-
}
|
|
195
|
-
)
|
|
185
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { variant: "secondary", onClick: () => setOpen(true), children: "Connect" })
|
|
196
186
|
] });
|
|
197
187
|
}
|
|
198
188
|
function ProviderStatus({ integration }) {
|
|
@@ -218,20 +208,11 @@ function ProviderStatus({ integration }) {
|
|
|
218
208
|
children: text
|
|
219
209
|
}
|
|
220
210
|
),
|
|
221
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
222
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
223
|
-
|
|
224
|
-
{
|
|
225
|
-
radius: "full",
|
|
226
|
-
variant: "ghost",
|
|
227
|
-
color: "gray",
|
|
228
|
-
title: "Pipe actions",
|
|
229
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.DotsHorizontalIcon, {})
|
|
230
|
-
}
|
|
231
|
-
) }),
|
|
232
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.DropdownMenu.Content, { align: "end", children: [
|
|
211
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.DropdownMenu.Root, { children: [
|
|
212
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.DropdownMenu.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.IconButton, { "aria-label": "Pipe actions", title: "Pipe actions", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.DotsHorizontalIcon, {}) }) }),
|
|
213
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.DropdownMenu.Content, { align: "end", children: [
|
|
233
214
|
integration.installation.state === import_endpoint.DataInstallationState.needs_reauthorization && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
234
|
-
|
|
215
|
+
import_elements.DropdownMenu.Item,
|
|
235
216
|
{
|
|
236
217
|
onClick: async () => {
|
|
237
218
|
try {
|
|
@@ -241,11 +222,18 @@ function ProviderStatus({ integration }) {
|
|
|
241
222
|
},
|
|
242
223
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { gap: "4", width: "100%", justify: "between", align: "center", children: [
|
|
243
224
|
"Reauthorize",
|
|
244
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.ExternalLinkIcon, {})
|
|
225
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.ExternalLinkIcon, { "aria-hidden": true })
|
|
245
226
|
] })
|
|
246
227
|
}
|
|
247
228
|
),
|
|
248
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
229
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
230
|
+
import_elements.DropdownMenu.Item,
|
|
231
|
+
{
|
|
232
|
+
variant: "destructive",
|
|
233
|
+
onClick: () => setDisconnectOpen(true),
|
|
234
|
+
children: "Disconnect account"
|
|
235
|
+
}
|
|
236
|
+
)
|
|
249
237
|
] })
|
|
250
238
|
] })
|
|
251
239
|
] })
|
|
@@ -283,10 +271,10 @@ function DisconnectAccountDialog({
|
|
|
283
271
|
reset();
|
|
284
272
|
}
|
|
285
273
|
}, [open, reset]);
|
|
286
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
287
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
274
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Root, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Content, { style: { width: "80vw", maxWidth: "520px" }, children: [
|
|
275
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Title, { children: "Disconnect account" }),
|
|
288
276
|
error && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Callout.Root, { my: "5", color: "red", role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Callout.Text, { children: "An error occurred while disconnecting your account. Please refresh the page and try again." }) }),
|
|
289
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
277
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Description, { children: [
|
|
290
278
|
"Are you sure you want to disconnect your",
|
|
291
279
|
" ",
|
|
292
280
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { as: "span", weight: "bold", children: integration.name }),
|
|
@@ -294,10 +282,11 @@ function DisconnectAccountDialog({
|
|
|
294
282
|
"account?"
|
|
295
283
|
] }),
|
|
296
284
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { gap: "3", justify: "end", mt: "5", children: [
|
|
297
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
285
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Cancel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { variant: "secondary", children: "Cancel" }) }),
|
|
298
286
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
299
|
-
import_elements.
|
|
287
|
+
import_elements.Button,
|
|
300
288
|
{
|
|
289
|
+
variant: "destructive",
|
|
301
290
|
disabled: isPending,
|
|
302
291
|
loading: isPending,
|
|
303
292
|
onClick: () => deleteDataInstallation({ installationId: installation.id }),
|
|
@@ -310,10 +299,10 @@ function DisconnectAccountDialog({
|
|
|
310
299
|
const PipesLoading = ({ count, ...domProps }) => {
|
|
311
300
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CardList.Root, { ...getWidgetRootDomProps("loading", domProps), children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CardList.Item, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { direction: "row", justify: "between", align: "center", gap: "2", children: [
|
|
312
301
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { gap: "4", align: "center", children: [
|
|
313
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
314
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
302
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_icon_panel.IconPanel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_provider_icon.ProviderIcon, { provider: "google" }) }) }),
|
|
303
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { size: "2", weight: "bold", children: "Google Drive" }) })
|
|
315
304
|
] }),
|
|
316
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
305
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Skeleton, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { variant: "secondary", disabled: true, children: "Connect" }) })
|
|
317
306
|
] }) }, index)) });
|
|
318
307
|
};
|
|
319
308
|
const Pipes = ({ integrations, ...domProps }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/pipes.tsx"],"sourcesContent":["\"use client\";\nimport {\n AlertDialog,\n Button,\n Callout,\n Card,\n Dialog,\n DropdownMenu,\n Flex,\n IconButton,\n Skeleton,\n Text,\n} from \"@radix-ui/themes\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport * as CardList from \"./card-list.js\";\nimport { ProviderIcon } from \"./provider-icon.js\";\nimport {\n DotsHorizontalIcon,\n ExternalLinkIcon,\n GlobeIcon,\n LockClosedIcon,\n} from \"@radix-ui/react-icons\";\nimport {\n DestructiveButton,\n DestructiveMenuItem,\n PrimaryButton,\n SecondaryButton,\n} from \"./elements.js\";\nimport { IconPanel } from \"./icon-panel.js\";\nimport { Status } from \"./status.js\";\nimport {\n DataIntegration,\n DataInstallation,\n useDeleteDataInstallation,\n useGetDataIntegrationAuthorizeUrlHook,\n getMyDataIntegrationsQueryKey,\n DataInstallationState,\n useSettings,\n} from \"../api/endpoint.js\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { GenericError } from \"./generic-error.js\";\nimport { getDomProps, WidgetRootDomProps, WidgetRootState } from \"./utils.js\";\n\ninterface PipesProps extends WidgetRootDomProps {\n integrations: DataIntegration[];\n}\n\nconst useOpenDataIntegrationAuthorizeUrl = (integration: DataIntegration) => {\n const getDataIntegrationAuthorizeUrl =\n useGetDataIntegrationAuthorizeUrlHook();\n const settings = useSettings();\n const baseUrl = settings.data?.authkitOrigin ?? \"\";\n\n return useCallback(async () => {\n // need to do this synchronously in the event handler to avoid popup blocker notifications\n const win = window.open(`${baseUrl}/pipes/redirecting`, \"_blank\");\n // caller will catch\n const { url } = await getDataIntegrationAuthorizeUrl(integration.slug);\n if (win) {\n win.location = url;\n }\n }, [getDataIntegrationAuthorizeUrl, integration.slug, baseUrl]);\n};\n\nfunction ConnectIntegrationButton({\n integration,\n}: {\n integration: DataIntegration;\n}) {\n const eventHandler = useOpenDataIntegrationAuthorizeUrl(integration);\n\n return (\n <Button\n onClick={async () => {\n try {\n await eventHandler();\n } catch {\n // pass - error displayed in new tab\n }\n }}\n variant=\"outline\"\n size=\"2\"\n color=\"gray\"\n >\n Connect\n </Button>\n );\n}\n\nfunction SharedCredentialsConnectIntegrationButton({\n integration,\n}: {\n integration: DataIntegration;\n}) {\n const settings = useSettings();\n const [open, setOpen] = useState(false);\n const eventHandler = useOpenDataIntegrationAuthorizeUrl(integration);\n\n const logo = settings.data?.logoDarkPath ?? settings.data?.logoLightPath;\n const appName = settings.data?.teamName ?? \"This application\";\n\n return (\n <>\n <Dialog.Root open={open} onOpenChange={setOpen}>\n <Dialog.Content maxWidth=\"430px\">\n <Flex justify=\"center\" align=\"center\" gap=\"2\" mt=\"2\">\n {logo && (\n <>\n <IconPanel\n color=\"panel\"\n style={{ width: \"48px\", height: \"48px\" }}\n >\n <ProviderIcon\n size=\"2\"\n provider=\"workos\"\n style={{ backgroundImage: `url(${logo})` }}\n />\n </IconPanel>\n <DotsHorizontalIcon />\n </>\n )}\n <IconPanel\n color=\"panel\"\n style={{\n ...(logo ? { borderWidth: 0 } : undefined),\n width: \"48px\",\n height: \"48px\",\n }}\n >\n <ProviderIcon size=\"2\" provider=\"workos\" />\n </IconPanel>\n <DotsHorizontalIcon />\n <IconPanel color=\"panel\" style={{ width: \"48px\", height: \"48px\" }}>\n <ProviderIcon size=\"2\" provider={integration.integrationType} />\n </IconPanel>\n </Flex>\n <Dialog.Title size=\"2\" mt=\"5\" mb=\"5\" weight={\"bold\"} align=\"center\">\n {appName} uses WorkOS to connect to {integration.name}.\n </Dialog.Title>\n <Card>\n <Flex direction=\"column\" gap=\"4\">\n <Flex gap=\"2\" align=\"center\">\n <IconPanel\n color=\"gray\"\n style={{ width: \"32px\", height: \"32px\" }}\n >\n <GlobeIcon />\n </IconPanel>\n <Flex direction=\"column\">\n <Text size=\"1\" weight=\"bold\">\n You'll be redirected to sign in with {integration.name}\n .\n </Text>\n <Text size=\"1\">\n Authorize access to connect your account.\n </Text>\n </Flex>\n </Flex>\n <Flex gap=\"2\" align=\"center\">\n <IconPanel\n color=\"gray\"\n style={{ width: \"32px\", height: \"32px\" }}\n >\n <LockClosedIcon />\n </IconPanel>\n <Flex direction=\"column\">\n <Text size=\"1\" weight=\"bold\">\n Your credentials remain secure.\n </Text>\n <Text size=\"1\">WorkOS never sees your credentials.</Text>\n </Flex>\n </Flex>\n </Flex>\n </Card>\n <Flex justify=\"end\" gap=\"3\" mt=\"5\">\n <Dialog.Close>\n <SecondaryButton>Cancel</SecondaryButton>\n </Dialog.Close>\n <PrimaryButton\n onClick={async () => {\n try {\n await eventHandler();\n setOpen(false);\n } catch {\n // pass - error displayed in new tab\n }\n }}\n >\n Connect <ExternalLinkIcon />\n </PrimaryButton>\n </Flex>\n </Dialog.Content>\n </Dialog.Root>\n <Button\n onClick={() => setOpen(true)}\n variant=\"outline\"\n size=\"2\"\n color=\"gray\"\n >\n Connect\n </Button>\n </>\n );\n}\n\nfunction ProviderStatus({ integration }: { integration: DataIntegration }) {\n const [disconnectOpen, setDisconnectOpen] = useState(false);\n const authorizeEventHandler = useOpenDataIntegrationAuthorizeUrl(integration);\n\n if (integration.installation) {\n const text =\n integration.installation.state === DataInstallationState.connected\n ? \"Connected\"\n : \"Requires reauthorization\";\n\n return (\n <>\n <DisconnectAccountDialog\n integration={integration}\n installation={integration.installation}\n open={disconnectOpen}\n onOpenChange={setDisconnectOpen}\n />\n <Flex align=\"center\" gap=\"4\">\n <Status\n state={\n integration.installation.state === DataInstallationState.connected\n ? \"success\"\n : \"error\"\n }\n >\n {text}\n </Status>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger>\n <IconButton\n radius=\"full\"\n variant=\"ghost\"\n color=\"gray\"\n title=\"Pipe actions\"\n >\n <DotsHorizontalIcon />\n </IconButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {integration.installation.state ===\n DataInstallationState.needs_reauthorization && (\n <DropdownMenu.Item\n onClick={async () => {\n try {\n await authorizeEventHandler();\n } catch {\n // pass - error displayed in new tab\n }\n }}\n >\n <Flex gap=\"4\" width=\"100%\" justify=\"between\" align=\"center\">\n Reauthorize\n <ExternalLinkIcon />\n </Flex>\n </DropdownMenu.Item>\n )}\n <DestructiveMenuItem onClick={() => setDisconnectOpen(true)}>\n Disconnect account\n </DestructiveMenuItem>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Flex>\n </>\n );\n }\n\n if (integration.credentialsType === \"shared\") {\n return (\n <SharedCredentialsConnectIntegrationButton integration={integration} />\n );\n }\n\n return <ConnectIntegrationButton integration={integration} />;\n}\n\nfunction DisconnectAccountDialog({\n integration,\n installation,\n open,\n onOpenChange,\n}: {\n integration: DataIntegration;\n installation: DataInstallation;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}) {\n const queryClient = useQueryClient();\n const {\n mutate: deleteDataInstallation,\n error,\n reset,\n isPending,\n } = useDeleteDataInstallation({\n mutation: {\n onSuccess: () => {\n onOpenChange(false);\n queryClient.invalidateQueries({\n queryKey: getMyDataIntegrationsQueryKey(),\n });\n },\n },\n });\n\n useEffect(() => {\n if (open) {\n reset();\n }\n }, [open, reset]);\n\n return (\n <AlertDialog.Root open={open} onOpenChange={onOpenChange}>\n <AlertDialog.Content style={{ width: \"80vw\", maxWidth: \"520px\" }}>\n <AlertDialog.Title>Disconnect account</AlertDialog.Title>\n {error && (\n <Callout.Root my=\"5\" color=\"red\" role=\"alert\">\n <Callout.Text>\n An error occurred while disconnecting your account. Please refresh\n the page and try again.\n </Callout.Text>\n </Callout.Root>\n )}\n <AlertDialog.Description>\n Are you sure you want to disconnect your{\" \"}\n <Text as=\"span\" weight=\"bold\">\n {integration.name}\n </Text>{\" \"}\n account?\n </AlertDialog.Description>\n <Flex gap=\"3\" justify=\"end\" mt=\"5\">\n <AlertDialog.Cancel>\n <SecondaryButton>Cancel</SecondaryButton>\n </AlertDialog.Cancel>\n <DestructiveButton\n disabled={isPending}\n loading={isPending}\n onClick={() =>\n deleteDataInstallation({ installationId: installation.id })\n }\n >\n Disconnect\n </DestructiveButton>\n </Flex>\n </AlertDialog.Content>\n </AlertDialog.Root>\n );\n}\n\ninterface PipesLoadingProps extends WidgetRootDomProps {\n count: number;\n}\n\nconst PipesLoading: React.FC<PipesLoadingProps> = ({ count, ...domProps }) => {\n return (\n <CardList.Root {...getWidgetRootDomProps(\"loading\", domProps)}>\n {Array.from({ length: count }).map((_, index) => (\n <CardList.Item key={index}>\n <Flex direction=\"row\" justify=\"between\" align=\"center\" gap=\"2\">\n <Flex gap=\"4\" align=\"center\">\n <Skeleton>\n <IconPanel>\n <ProviderIcon provider=\"google\" />\n </IconPanel>\n </Skeleton>\n <Skeleton>\n <Text size=\"2\" weight=\"bold\">\n Google Drive\n </Text>\n </Skeleton>\n </Flex>\n <Skeleton>\n <Button disabled>Connect</Button>\n </Skeleton>\n </Flex>\n </CardList.Item>\n ))}\n </CardList.Root>\n );\n};\n\nconst Pipes: React.FC<PipesProps> = ({ integrations, ...domProps }) => {\n return (\n <CardList.Root {...getWidgetRootDomProps(\"resolved\", domProps)}>\n {integrations.map((integration) => (\n <CardList.Item key={integration.id}>\n <Flex direction=\"row\" justify=\"between\" align=\"center\" gap=\"2\">\n <Flex gap=\"4\" align=\"center\">\n <IconPanel color=\"panel\">\n <ProviderIcon provider={integration.integrationType} />\n </IconPanel>\n <Text size=\"2\" weight=\"bold\">\n {integration.name}\n </Text>\n </Flex>\n <ProviderStatus integration={integration} />\n </Flex>\n </CardList.Item>\n ))}\n </CardList.Root>\n );\n};\n\ninterface PipesErrorProps extends WidgetRootDomProps {\n error: unknown;\n}\n\nconst PipesError: React.FC<PipesErrorProps> = ({ error, ...domProps }) => {\n return (\n <Card size=\"2\" {...getWidgetRootDomProps(\"error\", domProps)}>\n <GenericError error={error} />\n </Card>\n );\n};\n\nfunction getWidgetRootDomProps(\n state: WidgetRootState,\n domProps: WidgetRootDomProps,\n) {\n return getDomProps({\n ...domProps,\n isWidgetRoot: true,\n widgetId: \"pipes\",\n widgetState: state,\n });\n}\n\nexport type { PipesProps, PipesLoadingProps, PipesErrorProps };\nexport { Pipes, PipesLoading, PipesError };\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/pipes.tsx"],"sourcesContent":["\"use client\";\nimport { Callout, Card, Flex, Text } from \"@radix-ui/themes\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport * as CardList from \"./card-list.js\";\nimport { ProviderIcon } from \"./provider-icon.js\";\nimport {\n DotsHorizontalIcon,\n ExternalLinkIcon,\n GlobeIcon,\n LockClosedIcon,\n} from \"@radix-ui/react-icons\";\nimport {\n AlertDialog,\n Button,\n Dialog,\n DropdownMenu,\n IconButton,\n Skeleton,\n} from \"./elements.js\";\nimport { IconPanel } from \"./icon-panel.js\";\nimport { Status } from \"./status.js\";\nimport {\n DataIntegration,\n DataInstallation,\n useDeleteDataInstallation,\n useGetDataIntegrationAuthorizeUrlHook,\n getMyDataIntegrationsQueryKey,\n DataInstallationState,\n useSettings,\n} from \"../api/endpoint.js\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { GenericError } from \"./generic-error.js\";\nimport { getDomProps, WidgetRootDomProps, WidgetRootState } from \"./utils.js\";\n\ninterface PipesProps extends WidgetRootDomProps {\n integrations: DataIntegration[];\n}\n\nconst useOpenDataIntegrationAuthorizeUrl = (integration: DataIntegration) => {\n const getDataIntegrationAuthorizeUrl =\n useGetDataIntegrationAuthorizeUrlHook();\n const settings = useSettings();\n const baseUrl = settings.data?.authkitOrigin ?? \"\";\n\n return useCallback(async () => {\n // need to do this synchronously in the event handler to avoid popup blocker notifications\n const win = window.open(`${baseUrl}/pipes/redirecting`, \"_blank\");\n // caller will catch\n const { url } = await getDataIntegrationAuthorizeUrl(integration.slug);\n if (win) {\n win.location = url;\n }\n }, [getDataIntegrationAuthorizeUrl, integration.slug, baseUrl]);\n};\n\nfunction ConnectIntegrationButton({\n integration,\n}: {\n integration: DataIntegration;\n}) {\n const eventHandler = useOpenDataIntegrationAuthorizeUrl(integration);\n\n return (\n <Button\n variant=\"secondary\"\n onClick={async () => {\n try {\n await eventHandler();\n } catch {\n // pass - error displayed in new tab\n }\n }}\n >\n Connect\n </Button>\n );\n}\n\nfunction SharedCredentialsConnectIntegrationButton({\n integration,\n}: {\n integration: DataIntegration;\n}) {\n const settings = useSettings();\n const [open, setOpen] = useState(false);\n const eventHandler = useOpenDataIntegrationAuthorizeUrl(integration);\n\n const logo = settings.data?.logoDarkPath ?? settings.data?.logoLightPath;\n const appName = settings.data?.teamName ?? \"This application\";\n\n return (\n <>\n <Dialog.Root open={open} onOpenChange={setOpen}>\n <Dialog.Content maxWidth=\"430px\">\n <Flex justify=\"center\" align=\"center\" gap=\"2\" mt=\"2\">\n {logo && (\n <>\n <IconPanel\n color=\"panel\"\n style={{ width: \"48px\", height: \"48px\" }}\n >\n <ProviderIcon\n size=\"2\"\n provider=\"workos\"\n style={{ backgroundImage: `url(${logo})` }}\n />\n </IconPanel>\n <DotsHorizontalIcon />\n </>\n )}\n <IconPanel\n color=\"panel\"\n style={{\n ...(logo ? { borderWidth: 0 } : undefined),\n width: \"48px\",\n height: \"48px\",\n }}\n >\n <ProviderIcon size=\"2\" provider=\"workos\" />\n </IconPanel>\n <DotsHorizontalIcon />\n <IconPanel color=\"panel\" style={{ width: \"48px\", height: \"48px\" }}>\n <ProviderIcon size=\"2\" provider={integration.integrationType} />\n </IconPanel>\n </Flex>\n <Dialog.Title size=\"2\" mt=\"5\" mb=\"5\" weight={\"bold\"} align=\"center\">\n {appName} uses WorkOS to connect to {integration.name}.\n </Dialog.Title>\n <Card>\n <Flex direction=\"column\" gap=\"4\">\n <Flex gap=\"2\" align=\"center\">\n <IconPanel\n color=\"gray\"\n style={{ width: \"32px\", height: \"32px\" }}\n >\n <GlobeIcon />\n </IconPanel>\n <Flex direction=\"column\">\n <Text size=\"1\" weight=\"bold\">\n You'll be redirected to sign in with {integration.name}\n .\n </Text>\n <Text size=\"1\">\n Authorize access to connect your account.\n </Text>\n </Flex>\n </Flex>\n <Flex gap=\"2\" align=\"center\">\n <IconPanel\n color=\"gray\"\n style={{ width: \"32px\", height: \"32px\" }}\n >\n <LockClosedIcon />\n </IconPanel>\n <Flex direction=\"column\">\n <Text size=\"1\" weight=\"bold\">\n Your credentials remain secure.\n </Text>\n <Text size=\"1\">WorkOS never sees your credentials.</Text>\n </Flex>\n </Flex>\n </Flex>\n </Card>\n <Flex justify=\"end\" gap=\"3\" mt=\"5\">\n <Dialog.Close>\n <Button variant=\"secondary\">Cancel</Button>\n </Dialog.Close>\n <Button\n type=\"button\"\n onClick={async () => {\n try {\n await eventHandler();\n setOpen(false);\n } catch {\n // pass - error displayed in new tab\n }\n }}\n >\n Connect <ExternalLinkIcon aria-hidden />\n </Button>\n </Flex>\n </Dialog.Content>\n </Dialog.Root>\n <Button variant=\"secondary\" onClick={() => setOpen(true)}>\n Connect\n </Button>\n </>\n );\n}\n\nfunction ProviderStatus({ integration }: { integration: DataIntegration }) {\n const [disconnectOpen, setDisconnectOpen] = useState(false);\n const authorizeEventHandler = useOpenDataIntegrationAuthorizeUrl(integration);\n\n if (integration.installation) {\n const text =\n integration.installation.state === DataInstallationState.connected\n ? \"Connected\"\n : \"Requires reauthorization\";\n\n return (\n <>\n <DisconnectAccountDialog\n integration={integration}\n installation={integration.installation}\n open={disconnectOpen}\n onOpenChange={setDisconnectOpen}\n />\n <Flex align=\"center\" gap=\"4\">\n <Status\n state={\n integration.installation.state === DataInstallationState.connected\n ? \"success\"\n : \"error\"\n }\n >\n {text}\n </Status>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger>\n <IconButton aria-label=\"Pipe actions\" title=\"Pipe actions\">\n <DotsHorizontalIcon />\n </IconButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {integration.installation.state ===\n DataInstallationState.needs_reauthorization && (\n <DropdownMenu.Item\n onClick={async () => {\n try {\n await authorizeEventHandler();\n } catch {\n // pass - error displayed in new tab\n }\n }}\n >\n <Flex gap=\"4\" width=\"100%\" justify=\"between\" align=\"center\">\n Reauthorize\n <ExternalLinkIcon aria-hidden />\n </Flex>\n </DropdownMenu.Item>\n )}\n <DropdownMenu.Item\n variant=\"destructive\"\n onClick={() => setDisconnectOpen(true)}\n >\n Disconnect account\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Flex>\n </>\n );\n }\n\n if (integration.credentialsType === \"shared\") {\n return (\n <SharedCredentialsConnectIntegrationButton integration={integration} />\n );\n }\n\n return <ConnectIntegrationButton integration={integration} />;\n}\n\nfunction DisconnectAccountDialog({\n integration,\n installation,\n open,\n onOpenChange,\n}: {\n integration: DataIntegration;\n installation: DataInstallation;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}) {\n const queryClient = useQueryClient();\n const {\n mutate: deleteDataInstallation,\n error,\n reset,\n isPending,\n } = useDeleteDataInstallation({\n mutation: {\n onSuccess: () => {\n onOpenChange(false);\n queryClient.invalidateQueries({\n queryKey: getMyDataIntegrationsQueryKey(),\n });\n },\n },\n });\n\n useEffect(() => {\n if (open) {\n reset();\n }\n }, [open, reset]);\n\n return (\n <AlertDialog.Root open={open} onOpenChange={onOpenChange}>\n <AlertDialog.Content style={{ width: \"80vw\", maxWidth: \"520px\" }}>\n <AlertDialog.Title>Disconnect account</AlertDialog.Title>\n {error && (\n <Callout.Root my=\"5\" color=\"red\" role=\"alert\">\n <Callout.Text>\n An error occurred while disconnecting your account. Please refresh\n the page and try again.\n </Callout.Text>\n </Callout.Root>\n )}\n <AlertDialog.Description>\n Are you sure you want to disconnect your{\" \"}\n <Text as=\"span\" weight=\"bold\">\n {integration.name}\n </Text>{\" \"}\n account?\n </AlertDialog.Description>\n <Flex gap=\"3\" justify=\"end\" mt=\"5\">\n <AlertDialog.Cancel>\n <Button variant=\"secondary\">Cancel</Button>\n </AlertDialog.Cancel>\n <Button\n variant=\"destructive\"\n disabled={isPending}\n loading={isPending}\n onClick={() =>\n deleteDataInstallation({ installationId: installation.id })\n }\n >\n Disconnect\n </Button>\n </Flex>\n </AlertDialog.Content>\n </AlertDialog.Root>\n );\n}\n\ninterface PipesLoadingProps extends WidgetRootDomProps {\n count: number;\n}\n\nconst PipesLoading: React.FC<PipesLoadingProps> = ({ count, ...domProps }) => {\n return (\n <CardList.Root {...getWidgetRootDomProps(\"loading\", domProps)}>\n {Array.from({ length: count }).map((_, index) => (\n <CardList.Item key={index}>\n <Flex direction=\"row\" justify=\"between\" align=\"center\" gap=\"2\">\n <Flex gap=\"4\" align=\"center\">\n <Skeleton>\n <IconPanel>\n <ProviderIcon provider=\"google\" />\n </IconPanel>\n </Skeleton>\n <Skeleton>\n <Text size=\"2\" weight=\"bold\">\n Google Drive\n </Text>\n </Skeleton>\n </Flex>\n <Skeleton>\n <Button variant=\"secondary\" disabled>\n Connect\n </Button>\n </Skeleton>\n </Flex>\n </CardList.Item>\n ))}\n </CardList.Root>\n );\n};\n\nconst Pipes: React.FC<PipesProps> = ({ integrations, ...domProps }) => {\n return (\n <CardList.Root {...getWidgetRootDomProps(\"resolved\", domProps)}>\n {integrations.map((integration) => (\n <CardList.Item key={integration.id}>\n <Flex direction=\"row\" justify=\"between\" align=\"center\" gap=\"2\">\n <Flex gap=\"4\" align=\"center\">\n <IconPanel color=\"panel\">\n <ProviderIcon provider={integration.integrationType} />\n </IconPanel>\n <Text size=\"2\" weight=\"bold\">\n {integration.name}\n </Text>\n </Flex>\n <ProviderStatus integration={integration} />\n </Flex>\n </CardList.Item>\n ))}\n </CardList.Root>\n );\n};\n\ninterface PipesErrorProps extends WidgetRootDomProps {\n error: unknown;\n}\n\nconst PipesError: React.FC<PipesErrorProps> = ({ error, ...domProps }) => {\n return (\n <Card size=\"2\" {...getWidgetRootDomProps(\"error\", domProps)}>\n <GenericError error={error} />\n </Card>\n );\n};\n\nfunction getWidgetRootDomProps(\n state: WidgetRootState,\n domProps: WidgetRootDomProps,\n) {\n return getDomProps({\n ...domProps,\n isWidgetRoot: true,\n widgetId: \"pipes\",\n widgetState: state,\n });\n}\n\nexport type { PipesProps, PipesLoadingProps, PipesErrorProps };\nexport { Pipes, PipesLoading, PipesError };\n"],"mappings":"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","names":[]}
|
package/dist/cjs/lib/pipes.d.cts
CHANGED
|
@@ -2,6 +2,18 @@ import { DataIntegration } from '../api/endpoint.cjs';
|
|
|
2
2
|
import { WidgetRootDomProps } from './utils.cjs';
|
|
3
3
|
import '@tanstack/react-query';
|
|
4
4
|
import '../api/widgets-api-client.cjs';
|
|
5
|
+
import './elements.cjs';
|
|
6
|
+
import 'react';
|
|
7
|
+
import '@radix-ui/themes';
|
|
8
|
+
import '@radix-ui/themes/props';
|
|
9
|
+
import '../dialog-C15qCLN3.cjs';
|
|
10
|
+
import '@radix-ui/themes/components/dialog';
|
|
11
|
+
import '../alert-dialog-BlG3_awx.cjs';
|
|
12
|
+
import '@radix-ui/themes/components/alert-dialog';
|
|
13
|
+
import '../dropdown-menu-BQ5LtvdR.cjs';
|
|
14
|
+
import '@radix-ui/themes/components/dropdown-menu';
|
|
15
|
+
import '../select-KR89Qnvm.cjs';
|
|
16
|
+
import '@radix-ui/themes/components/select';
|
|
5
17
|
|
|
6
18
|
interface PipesProps extends WidgetRootDomProps {
|
|
7
19
|
integrations: DataIntegration[];
|
|
@@ -57,10 +57,10 @@ function ResendInviteDialog({
|
|
|
57
57
|
);
|
|
58
58
|
};
|
|
59
59
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
60
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
61
|
-
children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Root, { ...props, children: [
|
|
61
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Trigger, { children }),
|
|
62
62
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
63
|
-
import_elements.
|
|
63
|
+
import_elements.AlertDialog.Content,
|
|
64
64
|
{
|
|
65
65
|
maxWidth: "480px",
|
|
66
66
|
onOpenAutoFocus: () => {
|
|
@@ -69,8 +69,8 @@ function ResendInviteDialog({
|
|
|
69
69
|
});
|
|
70
70
|
},
|
|
71
71
|
children: [
|
|
72
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
73
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Flex, { mb: "4", direction: "column", gap: "3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
72
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Title, { children: "Resend invite?" }),
|
|
73
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Flex, { mb: "4", direction: "column", gap: "3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Description, { children: [
|
|
74
74
|
"Are you sure you want to resend the invite to",
|
|
75
75
|
" ",
|
|
76
76
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { weight: "bold", children: user.email }),
|
|
@@ -85,15 +85,25 @@ function ResendInviteDialog({
|
|
|
85
85
|
onSubmitForm();
|
|
86
86
|
},
|
|
87
87
|
children: [
|
|
88
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
89
|
-
import_elements.
|
|
88
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Cancel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
89
|
+
import_elements.Button,
|
|
90
90
|
{
|
|
91
|
+
type: "button",
|
|
92
|
+
variant: "secondary",
|
|
91
93
|
ref: cancelButtonRef,
|
|
92
94
|
disabled: resendInvite.isPending,
|
|
93
95
|
children: "Cancel"
|
|
94
96
|
}
|
|
95
97
|
) }),
|
|
96
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
98
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
99
|
+
import_elements.Button,
|
|
100
|
+
{
|
|
101
|
+
variant: "destructive",
|
|
102
|
+
type: "submit",
|
|
103
|
+
loading: resendInvite.isPending,
|
|
104
|
+
children: "Resend"
|
|
105
|
+
}
|
|
106
|
+
)
|
|
97
107
|
]
|
|
98
108
|
}
|
|
99
109
|
) })
|
|
@@ -103,7 +113,7 @@ function ResendInviteDialog({
|
|
|
103
113
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.VisuallyHidden, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("section", { "aria-live": "polite", children: getMutationErrorMessage(resendInvite.error) }) })
|
|
104
114
|
] }),
|
|
105
115
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
106
|
-
|
|
116
|
+
import_elements.Dialog.Root,
|
|
107
117
|
{
|
|
108
118
|
open: successDialogIsOpen,
|
|
109
119
|
onOpenChange: (isOpen) => {
|
|
@@ -113,7 +123,7 @@ function ResendInviteDialog({
|
|
|
113
123
|
setSuccessDialogIsOpen(isOpen);
|
|
114
124
|
},
|
|
115
125
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
116
|
-
import_elements.
|
|
126
|
+
import_elements.Dialog.Content,
|
|
117
127
|
{
|
|
118
128
|
maxWidth: "360px",
|
|
119
129
|
onOpenAutoFocus: () => {
|
|
@@ -122,13 +132,13 @@ function ResendInviteDialog({
|
|
|
122
132
|
});
|
|
123
133
|
},
|
|
124
134
|
children: [
|
|
125
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
126
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
135
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Title, { children: "Invite sent" }),
|
|
136
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Description, { children: [
|
|
127
137
|
"The invite email has been resent to",
|
|
128
138
|
" ",
|
|
129
139
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { weight: "bold", children: user.email })
|
|
130
140
|
] }),
|
|
131
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Flex, { gap: "3", justify: "end", mt: "5", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
141
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Flex, { gap: "3", justify: "end", mt: "5", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { ref: successButtonRef, children: "Close" }) }) })
|
|
132
142
|
]
|
|
133
143
|
}
|
|
134
144
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/resend-invite-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/resend-invite-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { Callout, Flex, Text, VisuallyHidden } from \"@radix-ui/themes\";\nimport * as React from \"react\";\nimport { useResendUserInvite } from \"./api/user.js\";\nimport { AlertDialog, Button, Dialog } from \"./elements.js\";\nimport { Member } from \"../api/endpoint.js\";\n\ninterface ResendInviteDialogProps extends AlertDialog.RootProps {\n user: Member;\n children?: React.ReactNode;\n}\n\nexport function ResendInviteDialog({\n children,\n user,\n ...props\n}: ResendInviteDialogProps) {\n const resendInvite = useResendUserInvite();\n const cancelButtonRef = React.useRef<HTMLButtonElement>(null);\n const successButtonRef = React.useRef<HTMLButtonElement>(null);\n const [successDialogIsOpen, setSuccessDialogIsOpen] = React.useState(false);\n\n const onSubmitForm = () => {\n resendInvite.mutate(\n { userId: user.id },\n {\n onSuccess: () => {\n setSuccessDialogIsOpen(true);\n },\n },\n );\n };\n\n return (\n <>\n <AlertDialog.Root {...props}>\n {children && <AlertDialog.Trigger>{children}</AlertDialog.Trigger>}\n\n <AlertDialog.Content\n maxWidth=\"480px\"\n onOpenAutoFocus={() => {\n requestAnimationFrame(() => {\n cancelButtonRef.current?.focus();\n });\n }}\n >\n <AlertDialog.Title>Resend invite?</AlertDialog.Title>\n <Flex mb=\"4\" direction=\"column\" gap=\"3\">\n <AlertDialog.Description>\n Are you sure you want to resend the invite to{\" \"}\n <Text weight=\"bold\">{user.email}</Text>?\n </AlertDialog.Description>\n </Flex>\n\n {resendInvite.error ? (\n <Callout.Root color=\"red\" mt=\"4\" mb=\"-2\">\n <Callout.Text>\n {getMutationErrorMessage(resendInvite.error)}\n </Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Flex gap=\"3\" justify=\"end\" mt=\"5\" asChild>\n <form\n onSubmit={(event) => {\n event.preventDefault();\n onSubmitForm();\n }}\n >\n <AlertDialog.Cancel>\n <Button\n type=\"button\"\n variant=\"secondary\"\n ref={cancelButtonRef}\n disabled={resendInvite.isPending}\n >\n Cancel\n </Button>\n </AlertDialog.Cancel>\n <Button\n variant=\"destructive\"\n type=\"submit\"\n loading={resendInvite.isPending}\n >\n Resend\n </Button>\n </form>\n </Flex>\n </AlertDialog.Content>\n\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(resendInvite.error)}\n </section>\n </VisuallyHidden>\n </AlertDialog.Root>\n <Dialog.Root\n open={successDialogIsOpen}\n onOpenChange={(isOpen) => {\n if (!isOpen) {\n props.onOpenChange?.(false);\n }\n setSuccessDialogIsOpen(isOpen);\n }}\n >\n <Dialog.Content\n maxWidth=\"360px\"\n onOpenAutoFocus={() => {\n requestAnimationFrame(() => {\n successButtonRef.current?.focus();\n });\n }}\n >\n <Dialog.Title>Invite sent</Dialog.Title>\n <Dialog.Description>\n The invite email has been resent to{\" \"}\n <Text weight=\"bold\">{user.email}</Text>\n </Dialog.Description>\n <Flex gap=\"3\" justify=\"end\" mt=\"5\">\n <Dialog.Close>\n <Button ref={successButtonRef}>Close</Button>\n </Dialog.Close>\n </Flex>\n </Dialog.Content>\n </Dialog.Root>\n </>\n );\n}\n\nfunction getMutationErrorMessage(error: unknown) {\n if (!error) {\n return \"\";\n }\n // TODO Handle server errors\n return \"There was an error sending the invite. Please try again.\";\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { AlertDialog } from '@radix-ui/themes';
|
|
3
2
|
import * as React from 'react';
|
|
3
|
+
import { RootProps } from '@radix-ui/themes/components/alert-dialog';
|
|
4
4
|
import { Member } from '../api/endpoint.cjs';
|
|
5
5
|
import '@tanstack/react-query';
|
|
6
6
|
import '../api/widgets-api-client.cjs';
|
|
7
7
|
|
|
8
|
-
interface ResendInviteDialogProps extends
|
|
8
|
+
interface ResendInviteDialogProps extends RootProps {
|
|
9
9
|
user: Member;
|
|
10
10
|
children?: React.ReactNode;
|
|
11
11
|
}
|
|
@@ -50,9 +50,9 @@ function ResetMfaDialog({
|
|
|
50
50
|
const handleClose = React.useCallback(() => {
|
|
51
51
|
setOpen(false);
|
|
52
52
|
}, []);
|
|
53
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
54
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
55
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.
|
|
53
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Root, { ...props, open, onOpenChange: setOpen, children: [
|
|
54
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Trigger, { children }),
|
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Content, { maxWidth: "480px", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elevated_access.ElevatedAccess, { type: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Content, { onClose: handleClose, isPasswordSet }) }) })
|
|
56
56
|
] });
|
|
57
57
|
}
|
|
58
58
|
function Content({
|
|
@@ -68,8 +68,8 @@ function Content({
|
|
|
68
68
|
securitySettings.update("Mfa", false);
|
|
69
69
|
});
|
|
70
70
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
71
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
72
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
71
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Title, { children: "Disable multi-factor authentication?" }),
|
|
72
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Description, { children: [
|
|
73
73
|
"Turning off MFA will remove the additional layer of security on your account.",
|
|
74
74
|
" ",
|
|
75
75
|
isPasswordSet ? "We will only ask for your password during sign-in." : "We will not ask for additional verification during sign-in."
|
|
@@ -82,9 +82,10 @@ function Content({
|
|
|
82
82
|
onSubmitForm();
|
|
83
83
|
},
|
|
84
84
|
children: [
|
|
85
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
86
|
-
import_elements.
|
|
85
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Cancel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
86
|
+
import_elements.Button,
|
|
87
87
|
{
|
|
88
|
+
variant: "secondary",
|
|
88
89
|
disabled: resetMfa.isPending || resetMfa.isSuccess,
|
|
89
90
|
children: "Cancel"
|
|
90
91
|
}
|
|
@@ -96,7 +97,7 @@ function Content({
|
|
|
96
97
|
loading: resetMfa.isPending,
|
|
97
98
|
done: resetMfa.isSuccess,
|
|
98
99
|
onDone: onClose,
|
|
99
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.
|
|
100
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { variant: "destructive", type: "submit", children: "Disable" })
|
|
100
101
|
}
|
|
101
102
|
)
|
|
102
103
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/reset-mfa-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/reset-mfa-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Flex } from \"@radix-ui/themes\";\nimport { type ReactNode } from \"react\";\nimport { AlertDialog, Button } from \"./elements.js\";\nimport { useDeleteTotpFactors } from \"../api/endpoint.js\";\nimport { useSecuritySettings } from \"./use-security-settings.js\";\nimport { ElevatedAccess } from \"./elevated-access.js\";\nimport { SaveButton } from \"./save-button.js\";\nimport { useDialogClose } from \"./use-dialog-close.js\";\n\ninterface ResetMfaDialogProps extends AlertDialog.RootProps {\n children?: ReactNode;\n isPasswordSet: boolean;\n}\n\nexport function ResetMfaDialog({\n children,\n isPasswordSet,\n ...props\n}: ResetMfaDialogProps) {\n const [open, setOpen] = React.useState(false);\n\n const handleClose = React.useCallback(() => {\n setOpen(false);\n }, []);\n\n return (\n <AlertDialog.Root {...props} open={open} onOpenChange={setOpen}>\n <AlertDialog.Trigger>{children}</AlertDialog.Trigger>\n\n <AlertDialog.Content maxWidth=\"480px\">\n <ElevatedAccess type=\"alert\">\n <Content onClose={handleClose} isPasswordSet={isPasswordSet} />\n </ElevatedAccess>\n </AlertDialog.Content>\n </AlertDialog.Root>\n );\n}\n\nfunction Content({\n onClose,\n isPasswordSet,\n}: {\n onClose: () => void;\n isPasswordSet: boolean;\n}) {\n const securitySettings = useSecuritySettings();\n const resetMfa = useDeleteTotpFactors();\n\n const onSubmitForm = () => {\n resetMfa.mutate();\n };\n\n useDialogClose(resetMfa.isSuccess, () => {\n securitySettings.update(\"Mfa\", false);\n });\n\n return (\n <>\n <AlertDialog.Title>\n Disable multi-factor authentication?\n </AlertDialog.Title>\n <AlertDialog.Description>\n Turning off MFA will remove the additional layer of security on your\n account.{\" \"}\n {isPasswordSet\n ? \"We will only ask for your password during sign-in.\"\n : \"We will not ask for additional verification during sign-in.\"}\n </AlertDialog.Description>\n\n <Flex gap=\"3\" justify=\"end\" mt=\"5\" asChild>\n <form\n onSubmit={(event) => {\n event.preventDefault();\n onSubmitForm();\n }}\n >\n <AlertDialog.Cancel>\n <Button\n variant=\"secondary\"\n disabled={resetMfa.isPending || resetMfa.isSuccess}\n >\n Cancel\n </Button>\n </AlertDialog.Cancel>\n\n <SaveButton\n asChild\n loading={resetMfa.isPending}\n done={resetMfa.isSuccess}\n onDone={onClose}\n >\n <Button variant=\"destructive\" type=\"submit\">\n Disable\n </Button>\n </SaveButton>\n </form>\n </Flex>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BI;AA3BJ,YAAuB;AACvB,oBAAqB;AAErB,sBAAoC;AACpC,sBAAqC;AACrC,mCAAoC;AACpC,6BAA+B;AAC/B,yBAA2B;AAC3B,8BAA+B;AAOxB,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAE5C,QAAM,cAAc,MAAM,YAAY,MAAM;AAC1C,YAAQ,KAAK;AAAA,EACf,GAAG,CAAC,CAAC;AAEL,SACE,6CAAC,4BAAY,MAAZ,EAAkB,GAAG,OAAO,MAAY,cAAc,SACrD;AAAA,gDAAC,4BAAY,SAAZ,EAAqB,UAAS;AAAA,IAE/B,4CAAC,4BAAY,SAAZ,EAAoB,UAAS,SAC5B,sDAAC,yCAAe,MAAK,SACnB,sDAAC,WAAQ,SAAS,aAAa,eAA8B,GAC/D,GACF;AAAA,KACF;AAEJ;AAEA,SAAS,QAAQ;AAAA,EACf;AAAA,EACA;AACF,GAGG;AACD,QAAM,uBAAmB,kDAAoB;AAC7C,QAAM,eAAW,sCAAqB;AAEtC,QAAM,eAAe,MAAM;AACzB,aAAS,OAAO;AAAA,EAClB;AAEA,8CAAe,SAAS,WAAW,MAAM;AACvC,qBAAiB,OAAO,OAAO,KAAK;AAAA,EACtC,CAAC;AAED,SACE,4EACE;AAAA,gDAAC,4BAAY,OAAZ,EAAkB,kDAEnB;AAAA,IACA,6CAAC,4BAAY,aAAZ,EAAwB;AAAA;AAAA,MAEd;AAAA,MACR,gBACG,uDACA;AAAA,OACN;AAAA,IAEA,4CAAC,sBAAK,KAAI,KAAI,SAAQ,OAAM,IAAG,KAAI,SAAO,MACxC;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,CAAC,UAAU;AACnB,gBAAM,eAAe;AACrB,uBAAa;AAAA,QACf;AAAA,QAEA;AAAA,sDAAC,4BAAY,QAAZ,EACC;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,UAAU,SAAS,aAAa,SAAS;AAAA,cAC1C;AAAA;AAAA,UAED,GACF;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,SAAO;AAAA,cACP,SAAS,SAAS;AAAA,cAClB,MAAM,SAAS;AAAA,cACf,QAAQ;AAAA,cAER,sDAAC,0BAAO,SAAQ,eAAc,MAAK,UAAS,qBAE5C;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IACF,GACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { AlertDialog } from '@radix-ui/themes';
|
|
3
2
|
import { ReactNode } from 'react';
|
|
3
|
+
import { RootProps } from '@radix-ui/themes/components/alert-dialog';
|
|
4
4
|
|
|
5
|
-
interface ResetMfaDialogProps extends
|
|
5
|
+
interface ResetMfaDialogProps extends RootProps {
|
|
6
6
|
children?: ReactNode;
|
|
7
7
|
isPasswordSet: boolean;
|
|
8
8
|
}
|
|
@@ -44,10 +44,10 @@ function RevokeInviteDialog({
|
|
|
44
44
|
}
|
|
45
45
|
);
|
|
46
46
|
};
|
|
47
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
48
|
-
children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
47
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Root, { ...props, children: [
|
|
48
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Trigger, { children }),
|
|
49
49
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
50
|
-
import_elements.
|
|
50
|
+
import_elements.AlertDialog.Content,
|
|
51
51
|
{
|
|
52
52
|
maxWidth: "480px",
|
|
53
53
|
onOpenAutoFocus: () => {
|
|
@@ -56,8 +56,8 @@ function RevokeInviteDialog({
|
|
|
56
56
|
});
|
|
57
57
|
},
|
|
58
58
|
children: [
|
|
59
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
60
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Flex, { mb: "4", direction: "column", gap: "3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
59
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Title, { children: "Revoke invite?" }),
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Flex, { mb: "4", direction: "column", gap: "3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Description, { children: [
|
|
61
61
|
"Are you sure you want to revoke the invite to",
|
|
62
62
|
" ",
|
|
63
63
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { weight: "bold", children: user.email }),
|
|
@@ -72,15 +72,24 @@ function RevokeInviteDialog({
|
|
|
72
72
|
onSubmitForm();
|
|
73
73
|
},
|
|
74
74
|
children: [
|
|
75
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
76
|
-
import_elements.
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Cancel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
76
|
+
import_elements.Button,
|
|
77
77
|
{
|
|
78
|
+
variant: "secondary",
|
|
78
79
|
ref: cancelButtonRef,
|
|
79
80
|
disabled: revokeInvite.isPending,
|
|
80
81
|
children: "Cancel"
|
|
81
82
|
}
|
|
82
83
|
) }),
|
|
83
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
84
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
85
|
+
import_elements.Button,
|
|
86
|
+
{
|
|
87
|
+
variant: "destructive",
|
|
88
|
+
type: "submit",
|
|
89
|
+
loading: revokeInvite.isPending,
|
|
90
|
+
children: "Revoke"
|
|
91
|
+
}
|
|
92
|
+
)
|
|
84
93
|
]
|
|
85
94
|
}
|
|
86
95
|
) })
|