@schemavaults/auth-ui 0.8.3 → 0.8.4

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.
@@ -0,0 +1,19 @@
1
+ import { type ReactElement } from "react";
2
+ export type DisconnectAppToApiConfirmationTarget = "app" | "api_server";
3
+ export interface DisconnectAppToApiDialogProps {
4
+ api_server_id: string;
5
+ api_server_name: string;
6
+ client_app_id: string;
7
+ client_app_name: string;
8
+ /**
9
+ * Which name the user must type to confirm. Use "app" on the API server
10
+ * detail page (where each row represents the app being revoked) and
11
+ * "api_server" on the app detail page.
12
+ */
13
+ confirmation_target: DisconnectAppToApiConfirmationTarget;
14
+ open: boolean;
15
+ onOpenChange: (open: boolean) => void;
16
+ onDisconnected?: () => void;
17
+ }
18
+ export declare function DisconnectAppToApiDialog({ api_server_id, api_server_name, client_app_id, client_app_name, confirmation_target, open, onOpenChange, onDisconnected, }: DisconnectAppToApiDialogProps): ReactElement;
19
+ export default DisconnectAppToApiDialog;
@@ -0,0 +1,57 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Input, Label, useToast, } from "@schemavaults/ui";
4
+ import { useState, useTransition } from "react";
5
+ import { Unplug } from "lucide-react";
6
+ import { useAuth } from "@schemavaults/auth-react-provider";
7
+ export function DisconnectAppToApiDialog({ api_server_id, api_server_name, client_app_id, client_app_name, confirmation_target, open, onOpenChange, onDisconnected, }) {
8
+ const [confirmationInput, setConfirmationInput] = useState("");
9
+ const [disconnecting, startDisconnecting] = useTransition();
10
+ const { toast } = useToast();
11
+ const auth = useAuth();
12
+ const expectedName = confirmation_target === "app" ? client_app_name : api_server_name;
13
+ const targetLabel = confirmation_target === "app" ? "app" : "API server";
14
+ const isConfirmed = confirmationInput === expectedName;
15
+ function handleCancel() {
16
+ setConfirmationInput("");
17
+ onOpenChange(false);
18
+ }
19
+ function handleOpenChange(nextOpen) {
20
+ if (!nextOpen) {
21
+ setConfirmationInput("");
22
+ }
23
+ onOpenChange(nextOpen);
24
+ }
25
+ async function handleDisconnect() {
26
+ if (!isConfirmed)
27
+ return;
28
+ startDisconnecting(async () => {
29
+ try {
30
+ const authClient = auth.ready ? auth.client.current : undefined;
31
+ if (!authClient) {
32
+ throw new Error("Auth client is not available");
33
+ }
34
+ await authClient.disconnectAppFromApiServer(api_server_id, client_app_id);
35
+ toast({
36
+ title: "Connection revoked",
37
+ description: `"${client_app_name}" can no longer request tokens for "${api_server_name}".`,
38
+ });
39
+ setConfirmationInput("");
40
+ onOpenChange(false);
41
+ onDisconnected?.();
42
+ }
43
+ catch (error) {
44
+ toast({
45
+ variant: "destructive",
46
+ title: "Failed to disconnect",
47
+ description: error instanceof Error
48
+ ? error.message
49
+ : "An unknown error occurred",
50
+ });
51
+ }
52
+ });
53
+ }
54
+ return (_jsx(Dialog, { open: open, onOpenChange: handleOpenChange, children: _jsxs(DialogContent, { className: "sm:max-w-[425px]", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Disconnect app from API server" }), _jsxs(DialogDescription, { children: ["This will revoke", " ", _jsx("span", { className: "font-medium", children: client_app_name }), "'s access to ", _jsx("span", { className: "font-medium", children: api_server_name }), ". The connection can be re-established later."] })] }), _jsx("div", { className: "flex flex-col gap-4 py-4", children: _jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs(Label, { htmlFor: "confirm-disconnect-name", children: ["Type the ", targetLabel, " name", " ", _jsx("span", { className: "font-bold", children: expectedName }), " to confirm"] }), _jsx(Input, { id: "confirm-disconnect-name", "data-testid": "confirm-disconnect-name-input", placeholder: expectedName, value: confirmationInput, onChange: (e) => setConfirmationInput(e.target.value), disabled: disconnecting })] }) }), _jsxs(DialogFooter, { className: "gap-2 sm:gap-0", children: [_jsx(Button, { type: "button", variant: "outline", onClick: handleCancel, disabled: disconnecting, children: "Cancel" }), _jsxs(Button, { type: "button", variant: "destructive", onClick: handleDisconnect, disabled: !isConfirmed || disconnecting, "data-testid": "confirm-disconnect-button", children: [_jsx(Unplug, { className: "h-4 w-4 mr-2" }), "Disconnect"] })] })] }) }));
55
+ }
56
+ export default DisconnectAppToApiDialog;
57
+ //# sourceMappingURL=DisconnectAppToApiDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DisconnectAppToApiDialog.js","sourceRoot":"","sources":["../../../src/components/DisconnectAppToApiDialog/DisconnectAppToApiDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { DisconnectAppToApiDialog } from "./DisconnectAppToApiDialog";
2
+ export type { DisconnectAppToApiDialogProps, DisconnectAppToApiConfirmationTarget, } from "./DisconnectAppToApiDialog";
@@ -0,0 +1,2 @@
1
+ export { DisconnectAppToApiDialog } from "./DisconnectAppToApiDialog";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/DisconnectAppToApiDialog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -52,6 +52,8 @@ export { DeleteAppDialog } from "./DeleteAppDialog";
52
52
  export type { DeleteAppDialogProps } from "./DeleteAppDialog";
53
53
  export { DeleteApiServerDialog } from "./DeleteApiServerDialog";
54
54
  export type { DeleteApiServerDialogProps } from "./DeleteApiServerDialog";
55
+ export { DisconnectAppToApiDialog } from "./DisconnectAppToApiDialog";
56
+ export type { DisconnectAppToApiDialogProps, DisconnectAppToApiConfirmationTarget, } from "./DisconnectAppToApiDialog";
55
57
  export { MfaSettingsCard } from "./MfaSettingsCard";
56
58
  export type { MfaSettingsCardProps } from "./MfaSettingsCard";
57
59
  export { TotpEnrollmentDialog } from "./TotpEnrollmentDialog";
@@ -24,6 +24,7 @@ export { SentInvitationsCard } from "./SentInvitationsCard";
24
24
  export { OrganizationSettingsCard } from "./OrganizationSettingsCard";
25
25
  export { DeleteAppDialog } from "./DeleteAppDialog";
26
26
  export { DeleteApiServerDialog } from "./DeleteApiServerDialog";
27
+ export { DisconnectAppToApiDialog } from "./DisconnectAppToApiDialog";
27
28
  export { MfaSettingsCard } from "./MfaSettingsCard";
28
29
  export { TotpEnrollmentDialog } from "./TotpEnrollmentDialog";
29
30
  export { RecoveryCodesPanel } from "./RecoveryCodesPanel";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAG9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAK3B,cAAc,kBAAkB,CAAC;AAKjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iCAAiC,GAClC,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAG9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAK3B,cAAc,kBAAkB,CAAC;AAKjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iCAAiC,GAClC,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schemavaults/auth-ui",
3
- "version": "0.8.3",
3
+ "version": "0.8.4",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "description": "React.js UI components for authentication/authorization shared between different SchemaVaults apps",
@@ -17,7 +17,7 @@
17
17
  "react-dom": "^19.2.5",
18
18
  "next": "^16.2.4",
19
19
  "@schemavaults/ui": "^0.37.1",
20
- "@schemavaults/auth-react-provider": "0.11.1",
20
+ "@schemavaults/auth-react-provider": "0.11.5",
21
21
  "@schemavaults/app-definitions": "0.6.23",
22
22
  "@schemavaults/auth-common": "0.12.0",
23
23
  "lucide-react": "0.575.0",