@schemavaults/auth-ui 0.8.19 → 0.8.21

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.
@@ -1,5 +1,5 @@
1
1
  import type { PropsWithChildren, ReactElement, ReactNode } from "react";
2
- import type { UserData } from "@schemavaults/auth-react-provider";
2
+ import { type UserData } from "@schemavaults/auth-react-provider";
3
3
  import { type OrganizationMembershipRoleDetails } from "@schemavaults/auth-common";
4
4
  import { type SchemaVaultsAppEnvironment } from "@schemavaults/app-definitions";
5
5
  export interface AccountDetailsCardProps {
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, KeyValueWithSkeleton, cn, } from "@schemavaults/ui";
3
+ import { Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, KeyValueWithSkeleton, cn, useToast, } from "@schemavaults/ui";
4
+ import { useMyOrganizations, } from "@schemavaults/auth-react-provider";
4
5
  import { MAXIMUM_USER_ORGANIZATIONS, } from "@schemavaults/auth-common";
5
6
  import SignOutButton from "../SignOutButton";
6
7
  import ViewFullUserProfileButton from "./view_full_user_profile";
7
8
  import ViewAdminDashboardButton from "./view_admin_page_link";
8
- import { useMyOrganizations } from "./useMyOrganizations";
9
9
  import { getHardcodedClientWebAppDomain, SCHEMAVAULTS_AUTH_APP_DEFINITION, } from "@schemavaults/app-definitions";
10
10
  import { Building2, Plus } from "lucide-react";
11
11
  export function AccountDetailsCard(props) {
@@ -14,11 +14,19 @@ export function AccountDetailsCard(props) {
14
14
  const auth_server_uri = getHardcodedClientWebAppDomain(SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id, props.appEnvironment);
15
15
  const cardClassName = cn("w-full", props.cardClassName);
16
16
  const showLinkToAuthServerAccountPage = !props.isAuthServerAccountPage;
17
+ const { toast } = useToast();
17
18
  const { data: memberships } = useMyOrganizations({
18
19
  enabled: !!props.isAuthServerAccountPage,
19
20
  initialData: props.isAuthServerAccountPage
20
21
  ? props.preloaded_memberships
21
22
  : undefined,
23
+ onError: (error) => {
24
+ toast({
25
+ variant: "destructive",
26
+ title: "Error loading organizations",
27
+ description: `${error instanceof Error ? error.message : "An unknown error occurred."}`,
28
+ });
29
+ },
22
30
  });
23
31
  return (_jsxs(Card, { className: cardClassName, children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Account Details" }), _jsx(CardDescription, { children: "View and manage your SchemaVaults account." })] }), _jsx(CardContent, { children: _jsxs("div", { className: "flex flex-col items-start justify-start gap-2", children: [_jsx(KeyValueWithSkeleton, { label: "User ID", value: currentUser?.uid }), _jsx(KeyValueWithSkeleton, { label: "Email", value: currentUser?.email }), props.isAuthServerAccountPage && (_jsxs("div", { className: "flex flex-row items-center justify-start gap-2 flex-wrap", children: [_jsx("h3", { className: "text-lg font-bold", children: "Organizations:" }), memberships && memberships.length > 0 ? (_jsx(_Fragment, { children: memberships.map((membership) => (_jsx(Link, { href: `/org/${membership.organization_id}`, children: _jsxs(Button, { variant: "outline", size: "sm", className: "flex flex-row flex-nowrap gap-2", children: [_jsx(Building2, { className: "h-4 w-4" }), membership.organization_name, membership.role && (_jsxs("span", { className: "text-xs text-muted-foreground", children: ["(", membership.role, ")"] }))] }) }, membership.organization_id))) })) : (_jsx("p", { className: "text-sm text-muted-foreground", children: "No organizations" })), (!memberships || memberships.length < MAXIMUM_USER_ORGANIZATIONS) && (_jsx(Link, { href: "/org/new", children: _jsxs(Button, { variant: "outline", size: "sm", className: "flex flex-row flex-nowrap gap-2", children: [_jsx(Plus, { className: "h-4 w-4" }), "Create Organization"] }) }))] }))] }) }), _jsx(CardFooter, { children: _jsxs("div", { className: "flex flex-row items-start justify-start flex-wrap gap-2", children: [_jsx(SignOutButton, { Link: props.Link }), showLinkToAuthServerAccountPage && (_jsx(ViewFullUserProfileButton, { navigate: async () => {
24
32
  const accountUrl = `${auth_server_uri}/account`;
@@ -1 +1 @@
1
- {"version":3,"file":"account_card.js","sourceRoot":"","sources":["../../../src/components/AccountCard/account_card.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account_card.js","sourceRoot":"","sources":["../../../src/components/AccountCard/account_card.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { AccountDetailsCard, AccountDetailsCard as default, AccountDetailsCard as AccountCard, } from "./account_card";
2
2
  export type * from "./account_card";
3
- export { useMyOrganizations, clearMyOrganizationsCache } from "./useMyOrganizations";
4
- export type { OrganizationMembershipRoleDetails, UseMyOrganizationsOptions, } from "./useMyOrganizations";
3
+ export { useMyOrganizations, clearMyOrganizationsCache, } from "@schemavaults/auth-react-provider";
4
+ export type { UseMyOrganizationsOptions, } from "@schemavaults/auth-react-provider";
5
+ export type { OrganizationMembershipRoleDetails } from "@schemavaults/auth-common";
@@ -1,3 +1,3 @@
1
1
  export { AccountDetailsCard, AccountDetailsCard as default, AccountDetailsCard as AccountCard, } from "./account_card";
2
- export { useMyOrganizations, clearMyOrganizationsCache } from "./useMyOrganizations";
2
+ export { useMyOrganizations, clearMyOrganizationsCache, } from "@schemavaults/auth-react-provider";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/AccountCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,IAAI,OAAO,EAC7B,kBAAkB,IAAI,WAAW,GAClC,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/AccountCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,IAAI,OAAO,EAC7B,kBAAkB,IAAI,WAAW,GAClC,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schemavaults/auth-ui",
3
- "version": "0.8.19",
3
+ "version": "0.8.21",
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.6",
18
18
  "next": "^16.2.6",
19
19
  "@schemavaults/ui": "^0.54.3",
20
- "@schemavaults/auth-react-provider": "0.11.17",
20
+ "@schemavaults/auth-react-provider": "0.11.19",
21
21
  "@schemavaults/app-definitions": "0.7.1",
22
22
  "@schemavaults/auth-common": "0.12.9",
23
23
  "lucide-react": "0.575.0",
@@ -1,10 +0,0 @@
1
- import { type SWRResponse, useSWRConfig } from "swr";
2
- import type { OrganizationMembershipRoleDetails } from "@schemavaults/auth-common";
3
- export type { OrganizationMembershipRoleDetails } from "@schemavaults/auth-common";
4
- export interface UseMyOrganizationsOptions {
5
- enabled?: boolean;
6
- initialData?: readonly OrganizationMembershipRoleDetails[] | undefined;
7
- }
8
- export declare function clearMyOrganizationsCache(mutate: ReturnType<typeof useSWRConfig>["mutate"]): void;
9
- export declare function useMyOrganizations({ enabled, initialData, }: UseMyOrganizationsOptions): SWRResponse<readonly OrganizationMembershipRoleDetails[]>;
10
- export default useMyOrganizations;
@@ -1,39 +0,0 @@
1
- "use client";
2
- import { useCallback } from "react";
3
- import { useToast } from "@schemavaults/ui";
4
- import useSWR from "swr";
5
- import { useAuth, } from "@schemavaults/auth-react-provider";
6
- const MY_ORGANIZATIONS_SWR_KEY = "/api/me/organizations";
7
- export function clearMyOrganizationsCache(mutate) {
8
- mutate((key) => key.startsWith(MY_ORGANIZATIONS_SWR_KEY), undefined, {
9
- revalidate: true,
10
- });
11
- }
12
- export function useMyOrganizations({ enabled = true, initialData, }) {
13
- const { toast } = useToast();
14
- const auth = useAuth();
15
- const clientRef = auth.ready ? auth.client : null;
16
- const ready = !!(enabled && auth.ready && clientRef?.current);
17
- const fetcher = useCallback(async () => {
18
- const authClient = clientRef?.current ?? null;
19
- if (!authClient) {
20
- throw new Error("Auth client is not available to list organization memberships");
21
- }
22
- try {
23
- return await authClient.listMyOrganizationMemberships();
24
- }
25
- catch (error) {
26
- toast({
27
- variant: "destructive",
28
- title: "Error loading organizations",
29
- description: `${error instanceof Error ? error.message : "An unknown error occurred."}`,
30
- });
31
- throw error;
32
- }
33
- }, [clientRef, toast]);
34
- return useSWR(ready ? MY_ORGANIZATIONS_SWR_KEY : null, fetcher, {
35
- fallbackData: initialData ? [...initialData] : undefined,
36
- });
37
- }
38
- export default useMyOrganizations;
39
- //# sourceMappingURL=useMyOrganizations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMyOrganizations.js","sourceRoot":"","sources":["../../../src/components/AccountCard/useMyOrganizations.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,MAA0C,MAAM,KAAK,CAAC;AAE7D,OAAO,EACL,OAAO,GAER,MAAM,mCAAmC,CAAC;AAS3C,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAEzD,MAAM,UAAU,yBAAyB,CACvC,MAAiD;IAEjD,MAAM,CACJ,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,EACzD,SAAS,EACT;QACE,UAAU,EAAE,IAAI;KACjB,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,OAAO,GAAG,IAAI,EACd,WAAW,GACe;IAG1B,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,MAAM,KAAK,GAAY,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAE/B,EAAE;QACF,MAAM,UAAU,GACd,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,UAAU,CAAC,6BAA6B,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,KAAK,CAAC;gBACJ,OAAO,EAAE,aAAa;gBACtB,KAAK,EAAE,6BAA6B;gBACpC,WAAW,EAAE,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,EAAE;aACxF,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEvB,OAAO,MAAM,CACX,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,EACvC,OAAO,EACP;QACE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;KACzD,CACF,CAAC;AACJ,CAAC;AAED,eAAe,kBAAkB,CAAC"}