@workos-inc/widgets 1.5.0 → 1.5.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.
Files changed (94) hide show
  1. package/CHANGELOG.md +19 -8
  2. package/dist/cjs/admin-portal-domain-verification.client.cjs +2 -3
  3. package/dist/cjs/admin-portal-domain-verification.client.cjs.map +1 -1
  4. package/dist/cjs/admin-portal-sso-connection-client.cjs +3 -4
  5. package/dist/cjs/admin-portal-sso-connection-client.cjs.map +1 -1
  6. package/dist/cjs/api/api-provider.cjs +27 -19
  7. package/dist/cjs/api/api-provider.cjs.map +1 -1
  8. package/dist/cjs/api/api-provider.d.cts +4 -3
  9. package/dist/cjs/api/utils.cjs +10 -0
  10. package/dist/cjs/api/utils.cjs.map +1 -1
  11. package/dist/cjs/api/utils.d.cts +7 -2
  12. package/dist/cjs/api/widgets-api-client.cjs +11 -5
  13. package/dist/cjs/api/widgets-api-client.cjs.map +1 -1
  14. package/dist/cjs/api-keys-client.cjs +3 -8
  15. package/dist/cjs/api-keys-client.cjs.map +1 -1
  16. package/dist/cjs/lib/add-mfa-dialog.cjs +1 -1
  17. package/dist/cjs/lib/add-mfa-dialog.cjs.map +1 -1
  18. package/dist/cjs/lib/admin-portal-domain-verification.cjs +25 -18
  19. package/dist/cjs/lib/admin-portal-domain-verification.cjs.map +1 -1
  20. package/dist/cjs/lib/admin-portal-sso-connection.cjs +5 -27
  21. package/dist/cjs/lib/admin-portal-sso-connection.cjs.map +1 -1
  22. package/dist/cjs/lib/card-list.cjs.map +1 -0
  23. package/dist/cjs/lib/errors.cjs +1 -1
  24. package/dist/cjs/lib/errors.cjs.map +1 -1
  25. package/dist/cjs/lib/generic-error.cjs +27 -38
  26. package/dist/cjs/lib/generic-error.cjs.map +1 -1
  27. package/dist/cjs/lib/generic-error.d.cts +5 -1
  28. package/dist/cjs/lib/use-permissions.cjs +7 -14
  29. package/dist/cjs/lib/use-permissions.cjs.map +1 -1
  30. package/dist/cjs/lib/use-permissions.d.cts +1 -1
  31. package/dist/cjs/lib/user-security.cjs +1 -1
  32. package/dist/cjs/lib/user-security.cjs.map +1 -1
  33. package/dist/cjs/lib/user-sessions.cjs +1 -1
  34. package/dist/cjs/lib/user-sessions.cjs.map +1 -1
  35. package/dist/cjs/organization-switcher.client.cjs +2 -4
  36. package/dist/cjs/organization-switcher.client.cjs.map +1 -1
  37. package/dist/cjs/user-profile.client.cjs +2 -6
  38. package/dist/cjs/user-profile.client.cjs.map +1 -1
  39. package/dist/cjs/user-security.client.cjs +5 -4
  40. package/dist/cjs/user-security.client.cjs.map +1 -1
  41. package/dist/cjs/user-sessions.client.cjs +8 -12
  42. package/dist/cjs/user-sessions.client.cjs.map +1 -1
  43. package/dist/cjs/users-management.client.cjs +3 -9
  44. package/dist/cjs/users-management.client.cjs.map +1 -1
  45. package/dist/esm/admin-portal-domain-verification.client.js +3 -4
  46. package/dist/esm/admin-portal-domain-verification.client.js.map +1 -1
  47. package/dist/esm/admin-portal-sso-connection-client.js +4 -5
  48. package/dist/esm/admin-portal-sso-connection-client.js.map +1 -1
  49. package/dist/esm/api/api-provider.d.ts +4 -3
  50. package/dist/esm/api/api-provider.js +26 -19
  51. package/dist/esm/api/api-provider.js.map +1 -1
  52. package/dist/esm/api/utils.d.ts +7 -2
  53. package/dist/esm/api/utils.js +9 -0
  54. package/dist/esm/api/utils.js.map +1 -1
  55. package/dist/esm/api/widgets-api-client.js +11 -5
  56. package/dist/esm/api/widgets-api-client.js.map +1 -1
  57. package/dist/esm/api-keys-client.js +4 -9
  58. package/dist/esm/api-keys-client.js.map +1 -1
  59. package/dist/esm/lib/add-mfa-dialog.js +1 -1
  60. package/dist/esm/lib/add-mfa-dialog.js.map +1 -1
  61. package/dist/esm/lib/admin-portal-domain-verification.js +25 -18
  62. package/dist/esm/lib/admin-portal-domain-verification.js.map +1 -1
  63. package/dist/esm/lib/admin-portal-sso-connection.js +5 -27
  64. package/dist/esm/lib/admin-portal-sso-connection.js.map +1 -1
  65. package/dist/esm/lib/card-list.js.map +1 -0
  66. package/dist/esm/lib/errors.js +1 -1
  67. package/dist/esm/lib/errors.js.map +1 -1
  68. package/dist/esm/lib/generic-error.d.ts +5 -1
  69. package/dist/esm/lib/generic-error.js +27 -40
  70. package/dist/esm/lib/generic-error.js.map +1 -1
  71. package/dist/esm/lib/use-permissions.d.ts +1 -1
  72. package/dist/esm/lib/use-permissions.js +8 -15
  73. package/dist/esm/lib/use-permissions.js.map +1 -1
  74. package/dist/esm/lib/user-security.js +1 -1
  75. package/dist/esm/lib/user-security.js.map +1 -1
  76. package/dist/esm/lib/user-sessions.js +1 -1
  77. package/dist/esm/lib/user-sessions.js.map +1 -1
  78. package/dist/esm/organization-switcher.client.js +3 -5
  79. package/dist/esm/organization-switcher.client.js.map +1 -1
  80. package/dist/esm/user-profile.client.js +3 -7
  81. package/dist/esm/user-profile.client.js.map +1 -1
  82. package/dist/esm/user-security.client.js +6 -5
  83. package/dist/esm/user-security.client.js.map +1 -1
  84. package/dist/esm/user-sessions.client.js +10 -14
  85. package/dist/esm/user-sessions.client.js.map +1 -1
  86. package/dist/esm/users-management.client.js +4 -10
  87. package/dist/esm/users-management.client.js.map +1 -1
  88. package/package.json +4 -1
  89. package/dist/cjs/card-list.cjs.map +0 -1
  90. package/dist/esm/card-list.js.map +0 -1
  91. /package/dist/cjs/{card-list.cjs → lib/card-list.cjs} +0 -0
  92. /package/dist/cjs/{card-list.d.cts → lib/card-list.d.cts} +0 -0
  93. /package/dist/esm/{card-list.d.ts → lib/card-list.d.ts} +0 -0
  94. /package/dist/esm/{card-list.js → lib/card-list.js} +0 -0
@@ -5,12 +5,12 @@ import {
5
5
  UserSessionsLoading,
6
6
  UserSessions as UserSessionsPresentational
7
7
  } from "./lib/user-sessions.js";
8
- import { useIsHydrated } from "./lib/use-is-hydrated.js";
9
8
  import { useSessions } from "./api/endpoint.js";
10
- import { ApiProvider, useApi } from "./api/api-provider.js";
9
+ import { ApiProvider, useApi, useApiReady } from "./api/api-provider.js";
11
10
  import { useWorkOsApiUrl } from "./lib/widgets-context.js";
12
11
  import { ErrorBoundary } from "./lib/error-boundary.js";
13
- import { useQuery } from "@tanstack/react-query";
12
+ import { useQuery, skipToken } from "@tanstack/react-query";
13
+ import { getClaims } from "./api/utils.js";
14
14
  const UserSessions = (props) => {
15
15
  const baseUrl = useWorkOsApiUrl();
16
16
  return /* @__PURE__ */ jsx(
@@ -31,10 +31,10 @@ const UserSessions = (props) => {
31
31
  const UserSessionsContent = ({
32
32
  currentSessionId
33
33
  }) => {
34
- const isHydrated = useIsHydrated();
34
+ const isApiReady = useApiReady();
35
35
  const sessionsQuery = useSessions();
36
36
  const currentSessionIdQuery = useCurrentSessionIdQuery(currentSessionId);
37
- if (!isHydrated || sessionsQuery.isLoading || currentSessionIdQuery.isLoading) {
37
+ if (!isApiReady || sessionsQuery.isLoading || currentSessionIdQuery.isLoading) {
38
38
  return /* @__PURE__ */ jsx(UserSessionsLoading, {});
39
39
  }
40
40
  if (sessionsQuery.isError || currentSessionIdQuery.isError) {
@@ -56,20 +56,16 @@ const UserSessionsContent = ({
56
56
  function useCurrentSessionIdQuery(currentSessionId) {
57
57
  const { authToken } = useApi();
58
58
  return useQuery({
59
- queryKey: ["authToken"],
60
- queryFn: async () => {
59
+ queryKey: ["authToken", authToken],
60
+ queryFn: authToken ? async () => {
61
61
  if (currentSessionId) {
62
62
  return currentSessionId;
63
63
  }
64
- const res = await Promise.resolve(authToken);
65
- const claims = getClaims(res);
66
- return claims.sid;
67
- }
64
+ const { sid } = getClaims(authToken);
65
+ return sid;
66
+ } : skipToken
68
67
  });
69
68
  }
70
- function getClaims(accessToken) {
71
- return JSON.parse(atob(accessToken.split(".")[1]));
72
- }
73
69
  export {
74
70
  UserSessions,
75
71
  UserSessionsLoading
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/user-sessions.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserSessionsError,\n UserSessionsLoading,\n UserSessions as UserSessionsPresentational,\n} from \"./lib/user-sessions.js\";\nimport { useIsHydrated } from \"./lib/use-is-hydrated.js\";\nimport { useSessions } from \"./api/endpoint.js\";\nimport { ApiProvider, useApi } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { useQuery } from \"@tanstack/react-query\";\n\ntype UserSessionsWithoutCurrentSessionIdProps = {\n authToken: () => Promise<string>;\n};\n\ntype UserSessionsWithCurrentSessionIdProps = {\n authToken: string;\n currentSessionId: string;\n};\n\nexport type UserSessionsProps =\n | UserSessionsWithoutCurrentSessionIdProps\n | UserSessionsWithCurrentSessionIdProps;\n\nexport const UserSessions: React.FC<UserSessionsProps> = (props) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ApiProvider\n widgetType=\"user-sessions\"\n authToken={props.authToken}\n baseUrl={baseUrl}\n >\n <UserSessionsContent\n currentSessionId={\n \"currentSessionId\" in props ? props.currentSessionId : undefined\n }\n />\n </ApiProvider>\n );\n};\n\nexport { UserSessionsLoading };\n\nconst UserSessionsContent = ({\n currentSessionId,\n}: {\n currentSessionId?: string;\n}) => {\n const isHydrated = useIsHydrated();\n const sessionsQuery = useSessions();\n const currentSessionIdQuery = useCurrentSessionIdQuery(currentSessionId);\n\n if (\n !isHydrated ||\n sessionsQuery.isLoading ||\n currentSessionIdQuery.isLoading\n ) {\n return <UserSessionsLoading />;\n }\n\n if (sessionsQuery.isError || currentSessionIdQuery.isError) {\n return (\n <UserSessionsError\n error={sessionsQuery.error || currentSessionIdQuery.error}\n />\n );\n }\n\n return (\n <ErrorBoundary FallbackComponent={UserSessionsError}>\n <UserSessionsPresentational\n sessionsData={sessionsQuery.data?.data || []}\n currentSessionId={currentSessionIdQuery.data ?? \"\"}\n />\n </ErrorBoundary>\n );\n};\n\nfunction useCurrentSessionIdQuery(currentSessionId?: string) {\n const { authToken } = useApi();\n\n return useQuery({\n queryKey: [\"authToken\"],\n queryFn: async () => {\n if (currentSessionId) {\n return currentSessionId;\n }\n\n const res = await Promise.resolve(authToken);\n const claims = getClaims(res);\n return claims.sid;\n },\n });\n}\n\nfunction getClaims(accessToken: string) {\n return JSON.parse(atob(accessToken.split(\".\")[1])) as { sid: string };\n}\n"],"mappings":";AAqCM;AAlCN;AAAA,EACE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,OACX;AACP,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,aAAa,cAAc;AACpC,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AAelB,MAAM,eAA4C,CAAC,UAAU;AAClE,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,WAAW,MAAM;AAAA,MACjB;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,kBACE,sBAAsB,QAAQ,MAAM,mBAAmB;AAAA;AAAA,MAE3D;AAAA;AAAA,EACF;AAEJ;AAIA,MAAM,sBAAsB,CAAC;AAAA,EAC3B;AACF,MAEM;AACJ,QAAM,aAAa,cAAc;AACjC,QAAM,gBAAgB,YAAY;AAClC,QAAM,wBAAwB,yBAAyB,gBAAgB;AAEvE,MACE,CAAC,cACD,cAAc,aACd,sBAAsB,WACtB;AACA,WAAO,oBAAC,uBAAoB;AAAA,EAC9B;AAEA,MAAI,cAAc,WAAW,sBAAsB,SAAS;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,cAAc,SAAS,sBAAsB;AAAA;AAAA,IACtD;AAAA,EAEJ;AAEA,SACE,oBAAC,iBAAc,mBAAmB,mBAChC;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,cAAc,MAAM,QAAQ,CAAC;AAAA,MAC3C,kBAAkB,sBAAsB,QAAQ;AAAA;AAAA,EAClD,GACF;AAEJ;AAEA,SAAS,yBAAyB,kBAA2B;AAC3D,QAAM,EAAE,UAAU,IAAI,OAAO;AAE7B,SAAO,SAAS;AAAA,IACd,UAAU,CAAC,WAAW;AAAA,IACtB,SAAS,YAAY;AACnB,UAAI,kBAAkB;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,MAAM,MAAM,QAAQ,QAAQ,SAAS;AAC3C,YAAM,SAAS,UAAU,GAAG;AAC5B,aAAO,OAAO;AAAA,IAChB;AAAA,EACF,CAAC;AACH;AAEA,SAAS,UAAU,aAAqB;AACtC,SAAO,KAAK,MAAM,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACnD;","names":[]}
1
+ {"version":3,"sources":["../../src/user-sessions.client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n UserSessionsError,\n UserSessionsLoading,\n UserSessions as UserSessionsPresentational,\n} from \"./lib/user-sessions.js\";\nimport { useSessions } from \"./api/endpoint.js\";\nimport { ApiProvider, useApi, useApiReady } from \"./api/api-provider.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { useQuery, skipToken } from \"@tanstack/react-query\";\nimport { getClaims } from \"./api/utils.js\";\n\ntype UserSessionsWithoutCurrentSessionIdProps = {\n authToken: () => Promise<string>;\n};\n\ntype UserSessionsWithCurrentSessionIdProps = {\n authToken: string;\n currentSessionId: string;\n};\n\nexport type UserSessionsProps =\n | UserSessionsWithoutCurrentSessionIdProps\n | UserSessionsWithCurrentSessionIdProps;\n\nexport const UserSessions: React.FC<UserSessionsProps> = (props) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ApiProvider\n widgetType=\"user-sessions\"\n authToken={props.authToken}\n baseUrl={baseUrl}\n >\n <UserSessionsContent\n currentSessionId={\n \"currentSessionId\" in props ? props.currentSessionId : undefined\n }\n />\n </ApiProvider>\n );\n};\n\nexport { UserSessionsLoading };\n\nconst UserSessionsContent = ({\n currentSessionId,\n}: {\n currentSessionId?: string;\n}) => {\n const isApiReady = useApiReady();\n const sessionsQuery = useSessions();\n const currentSessionIdQuery = useCurrentSessionIdQuery(currentSessionId);\n\n if (\n !isApiReady ||\n sessionsQuery.isLoading ||\n currentSessionIdQuery.isLoading\n ) {\n return <UserSessionsLoading />;\n }\n\n if (sessionsQuery.isError || currentSessionIdQuery.isError) {\n return (\n <UserSessionsError\n error={sessionsQuery.error || currentSessionIdQuery.error}\n />\n );\n }\n\n return (\n <ErrorBoundary FallbackComponent={UserSessionsError}>\n <UserSessionsPresentational\n sessionsData={sessionsQuery.data?.data || []}\n currentSessionId={currentSessionIdQuery.data ?? \"\"}\n />\n </ErrorBoundary>\n );\n};\n\nfunction useCurrentSessionIdQuery(currentSessionId?: string) {\n const { authToken } = useApi();\n\n return useQuery({\n queryKey: [\"authToken\", authToken],\n queryFn: authToken\n ? async () => {\n if (currentSessionId) {\n return currentSessionId;\n }\n\n const { sid } = getClaims(authToken);\n return sid;\n }\n : skipToken,\n });\n}\n"],"mappings":";AAqCM;AAlCN;AAAA,EACE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,OACX;AACP,SAAS,mBAAmB;AAC5B,SAAS,aAAa,QAAQ,mBAAmB;AACjD,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,UAAU,iBAAiB;AACpC,SAAS,iBAAiB;AAenB,MAAM,eAA4C,CAAC,UAAU;AAClE,QAAM,UAAU,gBAAgB;AAEhC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,WAAW,MAAM;AAAA,MACjB;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,kBACE,sBAAsB,QAAQ,MAAM,mBAAmB;AAAA;AAAA,MAE3D;AAAA;AAAA,EACF;AAEJ;AAIA,MAAM,sBAAsB,CAAC;AAAA,EAC3B;AACF,MAEM;AACJ,QAAM,aAAa,YAAY;AAC/B,QAAM,gBAAgB,YAAY;AAClC,QAAM,wBAAwB,yBAAyB,gBAAgB;AAEvE,MACE,CAAC,cACD,cAAc,aACd,sBAAsB,WACtB;AACA,WAAO,oBAAC,uBAAoB;AAAA,EAC9B;AAEA,MAAI,cAAc,WAAW,sBAAsB,SAAS;AAC1D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,cAAc,SAAS,sBAAsB;AAAA;AAAA,IACtD;AAAA,EAEJ;AAEA,SACE,oBAAC,iBAAc,mBAAmB,mBAChC;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,cAAc,MAAM,QAAQ,CAAC;AAAA,MAC3C,kBAAkB,sBAAsB,QAAQ;AAAA;AAAA,EAClD,GACF;AAEJ;AAEA,SAAS,yBAAyB,kBAA2B;AAC3D,QAAM,EAAE,UAAU,IAAI,OAAO;AAE7B,SAAO,SAAS;AAAA,IACd,UAAU,CAAC,aAAa,SAAS;AAAA,IACjC,SAAS,YACL,YAAY;AACV,UAAI,kBAAkB;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,EAAE,IAAI,IAAI,UAAU,SAAS;AACnC,aAAO;AAAA,IACT,IACA;AAAA,EACN,CAAC;AACH;","names":[]}
@@ -1,9 +1,8 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { useRolesAndConfig } from "./api/endpoint.js";
4
- import { ApiProvider, useApi } from "./api/api-provider.js";
4
+ import { ApiProvider, useApiReady } from "./api/api-provider.js";
5
5
  import { useUsers } from "./lib/api/user.js";
6
- import { useIsHydrated } from "./lib/use-is-hydrated.js";
7
6
  import {
8
7
  UsersManagementError,
9
8
  UsersManagementLoading,
@@ -28,18 +27,13 @@ const UsersManagement = ({
28
27
  ) });
29
28
  };
30
29
  const UsersManagementContent = () => {
31
- const isHydrated = useIsHydrated();
30
+ const isApiReady = useApiReady();
32
31
  const rolesAndConfigQuery = useRolesAndConfig({
33
32
  query: { initialData: { roles: [], multipleRolesEnabled: false } }
34
33
  });
35
34
  const usersQuery = useUsers();
36
- const context = useApi();
37
- const permissionsQuery = usePermissions(
38
- "widgets:users-table:manage",
39
- context.authToken
40
- );
41
- if (permissionsQuery.isLoading || usersQuery.isLoading || rolesAndConfigQuery.isLoading || usersQuery.isPending || // render loading state on the server to prevent FOUC or hydration mismatch
42
- !isHydrated) {
35
+ const permissionsQuery = usePermissions("widgets:users-table:manage");
36
+ if (permissionsQuery.isLoading || usersQuery.isLoading || rolesAndConfigQuery.isLoading || usersQuery.isPending || !isApiReady) {
43
37
  return /* @__PURE__ */ jsx(UsersManagementLoading, {});
44
38
  }
45
39
  if (permissionsQuery.isError || usersQuery.isError || rolesAndConfigQuery.isError) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/users-management.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRolesAndConfig } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken, useApi } from \"./api/api-provider.js\";\nimport * as React from \"react\";\nimport { useUsers } from \"./lib/api/user.js\";\nimport { useIsHydrated } from \"./lib/use-is-hydrated.js\";\nimport {\n UsersManagementError,\n UsersManagementLoading,\n UsersManagement as UsersManagementPresentational,\n} from \"./lib/users-management.js\";\nimport { UsersManagementContextProvider } from \"./lib/users-management-context.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { usePermissions } from \"./lib/use-permissions.js\";\n\nexport interface UsersManagementProps {\n authToken: AuthToken;\n}\n\nexport const UsersManagement: React.FC<UsersManagementProps> = ({\n authToken,\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary FallbackComponent={UsersManagementError}>\n <ApiProvider\n widgetType=\"user-management\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UsersManagementContextProvider>\n <UsersManagementContent />\n </UsersManagementContextProvider>\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nexport { UsersManagementLoading };\n\nconst UsersManagementContent = () => {\n const isHydrated = useIsHydrated();\n const rolesAndConfigQuery = useRolesAndConfig({\n query: { initialData: { roles: [], multipleRolesEnabled: false } },\n });\n const usersQuery = useUsers();\n const context = useApi();\n const permissionsQuery = usePermissions(\n \"widgets:users-table:manage\",\n context.authToken,\n );\n\n if (\n permissionsQuery.isLoading ||\n usersQuery.isLoading ||\n rolesAndConfigQuery.isLoading ||\n usersQuery.isPending ||\n // render loading state on the server to prevent FOUC or hydration mismatch\n !isHydrated\n ) {\n return <UsersManagementLoading />;\n }\n\n if (\n permissionsQuery.isError ||\n usersQuery.isError ||\n rolesAndConfigQuery.isError\n ) {\n return (\n <UsersManagementError\n error={\n permissionsQuery.error ||\n usersQuery.error ||\n rolesAndConfigQuery.error\n }\n />\n );\n }\n\n return (\n <ErrorBoundary FallbackComponent={UsersManagementError}>\n <UsersManagementPresentational\n userData={usersQuery.data}\n rolesData={rolesAndConfigQuery.data}\n isPending={usersQuery.isFetching}\n disableRolesFilter={\n rolesAndConfigQuery.isPending || rolesAndConfigQuery.isFetching\n }\n />\n </ErrorBoundary>\n );\n};\n"],"mappings":";AAkCU;AAhCV,SAAS,yBAAyB;AAClC,SAAS,aAAwB,cAAc;AAE/C,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,OACd;AACP,SAAS,sCAAsC;AAC/C,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAMxB,MAAM,kBAAkD,CAAC;AAAA,EAC9D;AACF,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE,oBAAC,iBAAc,mBAAmB,sBAChC;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX;AAAA,MACA;AAAA,MAEA,8BAAC,kCACC,8BAAC,0BAAuB,GAC1B;AAAA;AAAA,EACF,GACF;AAEJ;AAIA,MAAM,yBAAyB,MAAM;AACnC,QAAM,aAAa,cAAc;AACjC,QAAM,sBAAsB,kBAAkB;AAAA,IAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,sBAAsB,MAAM,EAAE;AAAA,EACnE,CAAC;AACD,QAAM,aAAa,SAAS;AAC5B,QAAM,UAAU,OAAO;AACvB,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA,QAAQ;AAAA,EACV;AAEA,MACE,iBAAiB,aACjB,WAAW,aACX,oBAAoB,aACpB,WAAW;AAAA,EAEX,CAAC,YACD;AACA,WAAO,oBAAC,0BAAuB;AAAA,EACjC;AAEA,MACE,iBAAiB,WACjB,WAAW,WACX,oBAAoB,SACpB;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OACE,iBAAiB,SACjB,WAAW,SACX,oBAAoB;AAAA;AAAA,IAExB;AAAA,EAEJ;AAEA,SACE,oBAAC,iBAAc,mBAAmB,sBAChC;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,WAAW;AAAA,MACrB,WAAW,oBAAoB;AAAA,MAC/B,WAAW,WAAW;AAAA,MACtB,oBACE,oBAAoB,aAAa,oBAAoB;AAAA;AAAA,EAEzD,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/users-management.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRolesAndConfig } from \"./api/endpoint.js\";\nimport { ApiProvider, AuthToken, useApiReady } from \"./api/api-provider.js\";\nimport * as React from \"react\";\nimport { useUsers } from \"./lib/api/user.js\";\nimport {\n UsersManagementError,\n UsersManagementLoading,\n UsersManagement as UsersManagementPresentational,\n} from \"./lib/users-management.js\";\nimport { UsersManagementContextProvider } from \"./lib/users-management-context.js\";\nimport { useWorkOsApiUrl } from \"./lib/widgets-context.js\";\nimport { ErrorBoundary } from \"./lib/error-boundary.js\";\nimport { usePermissions } from \"./lib/use-permissions.js\";\n\nexport interface UsersManagementProps {\n authToken: AuthToken;\n}\n\nexport const UsersManagement: React.FC<UsersManagementProps> = ({\n authToken,\n}) => {\n const baseUrl = useWorkOsApiUrl();\n\n return (\n <ErrorBoundary FallbackComponent={UsersManagementError}>\n <ApiProvider\n widgetType=\"user-management\"\n authToken={authToken}\n baseUrl={baseUrl}\n >\n <UsersManagementContextProvider>\n <UsersManagementContent />\n </UsersManagementContextProvider>\n </ApiProvider>\n </ErrorBoundary>\n );\n};\n\nexport { UsersManagementLoading };\n\nconst UsersManagementContent = () => {\n const isApiReady = useApiReady();\n const rolesAndConfigQuery = useRolesAndConfig({\n query: { initialData: { roles: [], multipleRolesEnabled: false } },\n });\n const usersQuery = useUsers();\n const permissionsQuery = usePermissions(\"widgets:users-table:manage\");\n\n if (\n permissionsQuery.isLoading ||\n usersQuery.isLoading ||\n rolesAndConfigQuery.isLoading ||\n usersQuery.isPending ||\n !isApiReady\n ) {\n return <UsersManagementLoading />;\n }\n\n if (\n permissionsQuery.isError ||\n usersQuery.isError ||\n rolesAndConfigQuery.isError\n ) {\n return (\n <UsersManagementError\n error={\n permissionsQuery.error ||\n usersQuery.error ||\n rolesAndConfigQuery.error\n }\n />\n );\n }\n\n return (\n <ErrorBoundary FallbackComponent={UsersManagementError}>\n <UsersManagementPresentational\n userData={usersQuery.data}\n rolesData={rolesAndConfigQuery.data}\n isPending={usersQuery.isFetching}\n disableRolesFilter={\n rolesAndConfigQuery.isPending || rolesAndConfigQuery.isFetching\n }\n />\n </ErrorBoundary>\n );\n};\n"],"mappings":";AAiCU;AA/BV,SAAS,yBAAyB;AAClC,SAAS,aAAwB,mBAAmB;AAEpD,SAAS,gBAAgB;AACzB;AAAA,EACE;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,OACd;AACP,SAAS,sCAAsC;AAC/C,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAMxB,MAAM,kBAAkD,CAAC;AAAA,EAC9D;AACF,MAAM;AACJ,QAAM,UAAU,gBAAgB;AAEhC,SACE,oBAAC,iBAAc,mBAAmB,sBAChC;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX;AAAA,MACA;AAAA,MAEA,8BAAC,kCACC,8BAAC,0BAAuB,GAC1B;AAAA;AAAA,EACF,GACF;AAEJ;AAIA,MAAM,yBAAyB,MAAM;AACnC,QAAM,aAAa,YAAY;AAC/B,QAAM,sBAAsB,kBAAkB;AAAA,IAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,sBAAsB,MAAM,EAAE;AAAA,EACnE,CAAC;AACD,QAAM,aAAa,SAAS;AAC5B,QAAM,mBAAmB,eAAe,4BAA4B;AAEpE,MACE,iBAAiB,aACjB,WAAW,aACX,oBAAoB,aACpB,WAAW,aACX,CAAC,YACD;AACA,WAAO,oBAAC,0BAAuB;AAAA,EACjC;AAEA,MACE,iBAAiB,WACjB,WAAW,WACX,oBAAoB,SACpB;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OACE,iBAAiB,SACjB,WAAW,SACX,oBAAoB;AAAA;AAAA,IAExB;AAAA,EAEJ;AAEA,SACE,oBAAC,iBAAc,mBAAmB,sBAChC;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,WAAW;AAAA,MACrB,WAAW,oBAAoB;AAAA,MAC/B,WAAW,WAAW;AAAA,MACtB,oBACE,oBAAoB,aAAa,oBAAoB;AAAA;AAAA,EAEzD,GACF;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workos-inc/widgets",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -65,6 +65,7 @@
65
65
  "react-dom": "^19.1.1",
66
66
  "tsup": "^8.5.0",
67
67
  "typescript": "^5.9.2",
68
+ "@repo/eslint-config": "0.0.0",
68
69
  "@repo/typescript-config": "0.0.0"
69
70
  },
70
71
  "typesVersions": {
@@ -82,6 +83,8 @@
82
83
  "typecheck": "tsc --noEmit",
83
84
  "clean": "rm -rf .turbo && rm -rf node_modules && pnpm clean:dist",
84
85
  "clean:dist": "rm -rf dist",
86
+ "lint": "eslint --max-warnings 0 .",
87
+ "lint:fix": "eslint --max-warnings 0 --fix .",
85
88
  "generate-api": "orval --config ./orval.config.ts"
86
89
  },
87
90
  "main": "./dist/cjs/index.cjs",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/card-list.tsx"],"sourcesContent":["import { Box, Card, CardProps, Inset } from \"@radix-ui/themes\";\n\nexport function Root({ children, ...props }: CardProps) {\n return (\n <Card size=\"2\" {...props} className=\"woswidgets-card-list\">\n <Inset side=\"all\" clip=\"padding-box\">\n {children}\n </Inset>\n </Card>\n );\n}\n\nexport function Item({ children }: { children: React.ReactNode }) {\n return (\n <Inset\n side=\"x\"\n px=\"current\"\n className=\"woswidgets-card-list-item\"\n clip=\"padding-box\"\n >\n <Box px=\"4\" py=\"4\">\n {children}\n </Box>\n </Inset>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKM;AALN,oBAA4C;AAErC,SAAS,KAAK,EAAE,UAAU,GAAG,MAAM,GAAc;AACtD,SACE,4CAAC,sBAAK,MAAK,KAAK,GAAG,OAAO,WAAU,wBAClC,sDAAC,uBAAM,MAAK,OAAM,MAAK,eACpB,UACH,GACF;AAEJ;AAEO,SAAS,KAAK,EAAE,SAAS,GAAkC;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,IAAG;AAAA,MACH,WAAU;AAAA,MACV,MAAK;AAAA,MAEL,sDAAC,qBAAI,IAAG,KAAI,IAAG,KACZ,UACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/card-list.tsx"],"sourcesContent":["import { Box, Card, CardProps, Inset } from \"@radix-ui/themes\";\n\nexport function Root({ children, ...props }: CardProps) {\n return (\n <Card size=\"2\" {...props} className=\"woswidgets-card-list\">\n <Inset side=\"all\" clip=\"padding-box\">\n {children}\n </Inset>\n </Card>\n );\n}\n\nexport function Item({ children }: { children: React.ReactNode }) {\n return (\n <Inset\n side=\"x\"\n px=\"current\"\n className=\"woswidgets-card-list-item\"\n clip=\"padding-box\"\n >\n <Box px=\"4\" py=\"4\">\n {children}\n </Box>\n </Inset>\n );\n}\n"],"mappings":"AAKM;AALN,SAAS,KAAK,MAAiB,aAAa;AAErC,SAAS,KAAK,EAAE,UAAU,GAAG,MAAM,GAAc;AACtD,SACE,oBAAC,QAAK,MAAK,KAAK,GAAG,OAAO,WAAU,wBAClC,8BAAC,SAAM,MAAK,OAAM,MAAK,eACpB,UACH,GACF;AAEJ;AAEO,SAAS,KAAK,EAAE,SAAS,GAAkC;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,IAAG;AAAA,MACH,WAAU;AAAA,MACV,MAAK;AAAA,MAEL,8BAAC,OAAI,IAAG,KAAI,IAAG,KACZ,UACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
File without changes
File without changes
File without changes