@workos-inc/widgets 0.0.0-pre.0 → 0.0.0-pre.2

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 (170) hide show
  1. package/dist/cjs/lib/api/role.d.ts.map +1 -1
  2. package/dist/cjs/lib/api/role.js +35 -14
  3. package/dist/cjs/lib/api/role.js.map +1 -1
  4. package/dist/cjs/lib/api/user.d.ts.map +1 -1
  5. package/dist/cjs/lib/api/user.js +105 -67
  6. package/dist/cjs/lib/api/user.js.map +1 -1
  7. package/dist/cjs/lib/constants.d.ts +2 -1
  8. package/dist/cjs/lib/constants.d.ts.map +1 -1
  9. package/dist/cjs/lib/constants.js +3 -2
  10. package/dist/cjs/lib/constants.js.map +1 -1
  11. package/dist/cjs/lib/delete-user-dialog.d.ts.map +1 -1
  12. package/dist/cjs/lib/delete-user-dialog.js +1 -1
  13. package/dist/cjs/lib/delete-user-dialog.js.map +1 -1
  14. package/dist/cjs/lib/edit-user-details-dialog.d.ts.map +1 -1
  15. package/dist/cjs/lib/edit-user-details-dialog.js +3 -5
  16. package/dist/cjs/lib/edit-user-details-dialog.js.map +1 -1
  17. package/dist/cjs/lib/elements.d.ts +21 -12
  18. package/dist/cjs/lib/elements.d.ts.map +1 -1
  19. package/dist/cjs/lib/elements.js +118 -30
  20. package/dist/cjs/lib/elements.js.map +1 -1
  21. package/dist/cjs/lib/error-boundary.d.ts +58 -0
  22. package/dist/cjs/lib/error-boundary.d.ts.map +1 -0
  23. package/dist/cjs/lib/error-boundary.js +113 -0
  24. package/dist/cjs/lib/error-boundary.js.map +1 -0
  25. package/dist/cjs/lib/errors.d.ts +34 -0
  26. package/dist/cjs/lib/errors.d.ts.map +1 -0
  27. package/dist/cjs/lib/errors.js +40 -0
  28. package/dist/cjs/lib/errors.js.map +1 -0
  29. package/dist/cjs/lib/invite-user-dialog.d.ts.map +1 -1
  30. package/dist/cjs/lib/invite-user-dialog.js +2 -2
  31. package/dist/cjs/lib/invite-user-dialog.js.map +1 -1
  32. package/dist/cjs/lib/resend-invite-dialog.d.ts.map +1 -1
  33. package/dist/cjs/lib/resend-invite-dialog.js +2 -2
  34. package/dist/cjs/lib/resend-invite-dialog.js.map +1 -1
  35. package/dist/cjs/lib/revoke-invite-dialog.d.ts.map +1 -1
  36. package/dist/cjs/lib/revoke-invite-dialog.js +1 -1
  37. package/dist/cjs/lib/revoke-invite-dialog.js.map +1 -1
  38. package/dist/cjs/lib/use-layout-effect.d.ts +4 -0
  39. package/dist/cjs/lib/use-layout-effect.d.ts.map +1 -0
  40. package/dist/cjs/lib/use-layout-effect.js +8 -0
  41. package/dist/cjs/lib/use-layout-effect.js.map +1 -0
  42. package/dist/cjs/lib/user-actions-dropdown.d.ts.map +1 -1
  43. package/dist/cjs/lib/user-actions-dropdown.js +2 -9
  44. package/dist/cjs/lib/user-actions-dropdown.js.map +1 -1
  45. package/dist/cjs/lib/users-filter.d.ts +1 -0
  46. package/dist/cjs/lib/users-filter.d.ts.map +1 -1
  47. package/dist/cjs/lib/users-filter.js +2 -9
  48. package/dist/cjs/lib/users-filter.js.map +1 -1
  49. package/dist/cjs/lib/users-management-context.d.ts +2 -2
  50. package/dist/cjs/lib/users-management-context.d.ts.map +1 -1
  51. package/dist/cjs/lib/users-management.d.ts +9 -6
  52. package/dist/cjs/lib/users-management.d.ts.map +1 -1
  53. package/dist/cjs/lib/users-management.js +77 -20
  54. package/dist/cjs/lib/users-management.js.map +1 -1
  55. package/dist/cjs/lib/users-search.d.ts.map +1 -1
  56. package/dist/cjs/lib/users-search.js +3 -9
  57. package/dist/cjs/lib/users-search.js.map +1 -1
  58. package/dist/cjs/lib/utils.d.ts +2 -0
  59. package/dist/cjs/lib/utils.d.ts.map +1 -1
  60. package/dist/cjs/lib/utils.js +18 -0
  61. package/dist/cjs/lib/utils.js.map +1 -1
  62. package/dist/cjs/users-management.client.d.ts +1 -1
  63. package/dist/cjs/users-management.client.d.ts.map +1 -1
  64. package/dist/cjs/users-management.client.js +15 -5
  65. package/dist/cjs/users-management.client.js.map +1 -1
  66. package/dist/cjs/workos-widgets.client.d.ts.map +1 -1
  67. package/dist/cjs/workos-widgets.client.js +2 -1
  68. package/dist/cjs/workos-widgets.client.js.map +1 -1
  69. package/dist/esm/lib/api/role.d.ts.map +1 -1
  70. package/dist/esm/lib/api/role.js +35 -14
  71. package/dist/esm/lib/api/role.js.map +1 -1
  72. package/dist/esm/lib/api/user.d.ts.map +1 -1
  73. package/dist/esm/lib/api/user.js +105 -67
  74. package/dist/esm/lib/api/user.js.map +1 -1
  75. package/dist/esm/lib/constants.d.ts +2 -1
  76. package/dist/esm/lib/constants.d.ts.map +1 -1
  77. package/dist/esm/lib/constants.js +2 -1
  78. package/dist/esm/lib/constants.js.map +1 -1
  79. package/dist/esm/lib/delete-user-dialog.d.ts.map +1 -1
  80. package/dist/esm/lib/delete-user-dialog.js +2 -2
  81. package/dist/esm/lib/delete-user-dialog.js.map +1 -1
  82. package/dist/esm/lib/edit-user-details-dialog.d.ts.map +1 -1
  83. package/dist/esm/lib/edit-user-details-dialog.js +4 -6
  84. package/dist/esm/lib/edit-user-details-dialog.js.map +1 -1
  85. package/dist/esm/lib/elements.d.ts +21 -12
  86. package/dist/esm/lib/elements.d.ts.map +1 -1
  87. package/dist/esm/lib/elements.js +95 -30
  88. package/dist/esm/lib/elements.js.map +1 -1
  89. package/dist/esm/lib/error-boundary.d.ts +58 -0
  90. package/dist/esm/lib/error-boundary.d.ts.map +1 -0
  91. package/dist/esm/lib/error-boundary.js +86 -0
  92. package/dist/esm/lib/error-boundary.js.map +1 -0
  93. package/dist/esm/lib/errors.d.ts +34 -0
  94. package/dist/esm/lib/errors.d.ts.map +1 -0
  95. package/dist/esm/lib/errors.js +34 -0
  96. package/dist/esm/lib/errors.js.map +1 -0
  97. package/dist/esm/lib/invite-user-dialog.d.ts.map +1 -1
  98. package/dist/esm/lib/invite-user-dialog.js +3 -3
  99. package/dist/esm/lib/invite-user-dialog.js.map +1 -1
  100. package/dist/esm/lib/resend-invite-dialog.d.ts.map +1 -1
  101. package/dist/esm/lib/resend-invite-dialog.js +3 -3
  102. package/dist/esm/lib/resend-invite-dialog.js.map +1 -1
  103. package/dist/esm/lib/revoke-invite-dialog.d.ts.map +1 -1
  104. package/dist/esm/lib/revoke-invite-dialog.js +2 -2
  105. package/dist/esm/lib/revoke-invite-dialog.js.map +1 -1
  106. package/dist/esm/lib/use-layout-effect.d.ts +4 -0
  107. package/dist/esm/lib/use-layout-effect.d.ts.map +1 -0
  108. package/dist/esm/lib/use-layout-effect.js +5 -0
  109. package/dist/esm/lib/use-layout-effect.js.map +1 -0
  110. package/dist/esm/lib/user-actions-dropdown.d.ts.map +1 -1
  111. package/dist/esm/lib/user-actions-dropdown.js +3 -10
  112. package/dist/esm/lib/user-actions-dropdown.js.map +1 -1
  113. package/dist/esm/lib/users-filter.d.ts +1 -0
  114. package/dist/esm/lib/users-filter.d.ts.map +1 -1
  115. package/dist/esm/lib/users-filter.js +4 -11
  116. package/dist/esm/lib/users-filter.js.map +1 -1
  117. package/dist/esm/lib/users-management-context.d.ts +2 -2
  118. package/dist/esm/lib/users-management-context.d.ts.map +1 -1
  119. package/dist/esm/lib/users-management.d.ts +9 -6
  120. package/dist/esm/lib/users-management.d.ts.map +1 -1
  121. package/dist/esm/lib/users-management.js +74 -22
  122. package/dist/esm/lib/users-management.js.map +1 -1
  123. package/dist/esm/lib/users-search.d.ts.map +1 -1
  124. package/dist/esm/lib/users-search.js +5 -11
  125. package/dist/esm/lib/users-search.js.map +1 -1
  126. package/dist/esm/lib/utils.d.ts +2 -0
  127. package/dist/esm/lib/utils.d.ts.map +1 -1
  128. package/dist/esm/lib/utils.js +13 -0
  129. package/dist/esm/lib/utils.js.map +1 -1
  130. package/dist/esm/users-management.client.d.ts +1 -1
  131. package/dist/esm/users-management.client.d.ts.map +1 -1
  132. package/dist/esm/users-management.client.js +16 -6
  133. package/dist/esm/users-management.client.js.map +1 -1
  134. package/dist/esm/workos-widgets.client.d.ts.map +1 -1
  135. package/dist/esm/workos-widgets.client.js +2 -1
  136. package/dist/esm/workos-widgets.client.js.map +1 -1
  137. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  138. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  139. package/package.json +9 -4
  140. package/src/base.css +111 -0
  141. package/src/lib/api/role.ts +39 -16
  142. package/src/lib/api/user.ts +119 -75
  143. package/src/lib/constants.ts +2 -1
  144. package/src/lib/delete-user-dialog.tsx +7 -3
  145. package/src/lib/edit-user-details-dialog.tsx +15 -10
  146. package/src/lib/elements.tsx +242 -61
  147. package/src/lib/error-boundary.tsx +166 -0
  148. package/src/lib/errors.ts +49 -0
  149. package/src/lib/invite-user-dialog.tsx +21 -12
  150. package/src/lib/resend-invite-dialog.tsx +11 -5
  151. package/src/lib/revoke-invite-dialog.tsx +7 -3
  152. package/src/lib/use-layout-effect.ts +6 -0
  153. package/src/lib/user-actions-dropdown.tsx +8 -16
  154. package/src/lib/users-filter.tsx +13 -73
  155. package/src/lib/users-management-context.tsx +1 -1
  156. package/src/lib/users-management.tsx +345 -184
  157. package/src/lib/users-search.tsx +5 -63
  158. package/src/lib/utils.ts +21 -0
  159. package/src/users-management.client.tsx +39 -16
  160. package/src/users-management.css +4 -0
  161. package/src/workos-widgets.client.tsx +2 -1
  162. package/dist/cjs/lib/pagination.d.ts +0 -8
  163. package/dist/cjs/lib/pagination.d.ts.map +0 -1
  164. package/dist/cjs/lib/pagination.js +0 -67
  165. package/dist/cjs/lib/pagination.js.map +0 -1
  166. package/dist/esm/lib/pagination.d.ts +0 -8
  167. package/dist/esm/lib/pagination.d.ts.map +0 -1
  168. package/dist/esm/lib/pagination.js +0 -40
  169. package/dist/esm/lib/pagination.js.map +0 -1
  170. package/src/lib/pagination.tsx +0 -69
@@ -11,7 +11,13 @@ import {
11
11
  import * as React from "react";
12
12
  import { useResendUserInvite } from "./api/user";
13
13
  import type { User } from "./api/user";
14
- import { DestructiveButton, PrimaryButton, SecondaryButton } from "./elements";
14
+ import {
15
+ AlertDialogContent,
16
+ DestructiveButton,
17
+ DialogContent,
18
+ PrimaryButton,
19
+ SecondaryButton,
20
+ } from "./elements";
15
21
 
16
22
  interface ResendInviteDialogProps extends AlertDialog.RootProps {
17
23
  user: User;
@@ -41,7 +47,7 @@ export const ResendInviteDialog = ({
41
47
  <AlertDialog.Root {...props}>
42
48
  {children && <AlertDialog.Trigger>{children}</AlertDialog.Trigger>}
43
49
 
44
- <AlertDialog.Content
50
+ <AlertDialogContent
45
51
  maxWidth="480px"
46
52
  onOpenAutoFocus={() => {
47
53
  requestAnimationFrame(() => {
@@ -85,7 +91,7 @@ export const ResendInviteDialog = ({
85
91
  </DestructiveButton>
86
92
  </form>
87
93
  </Flex>
88
- </AlertDialog.Content>
94
+ </AlertDialogContent>
89
95
 
90
96
  {/* mirror errors in a live region */}
91
97
  <VisuallyHidden asChild>
@@ -103,7 +109,7 @@ export const ResendInviteDialog = ({
103
109
  setSuccessDialogIsOpen(isOpen);
104
110
  }}
105
111
  >
106
- <Dialog.Content
112
+ <DialogContent
107
113
  maxWidth="360px"
108
114
  onOpenAutoFocus={() => {
109
115
  requestAnimationFrame(() => {
@@ -121,7 +127,7 @@ export const ResendInviteDialog = ({
121
127
  <PrimaryButton ref={successButtonRef}>Close</PrimaryButton>
122
128
  </Dialog.Close>
123
129
  </Flex>
124
- </Dialog.Content>
130
+ </DialogContent>
125
131
  </Dialog.Root>
126
132
  </>
127
133
  );
@@ -10,7 +10,11 @@ import {
10
10
  import { type ReactNode, useRef } from "react";
11
11
  import { useRevokeUserInvite } from "./api/user";
12
12
  import type { User } from "./api/user";
13
- import { DestructiveButton, SecondaryButton } from "./elements";
13
+ import {
14
+ AlertDialogContent,
15
+ DestructiveButton,
16
+ SecondaryButton,
17
+ } from "./elements";
14
18
 
15
19
  interface RevokeInviteDialogProps extends AlertDialog.RootProps {
16
20
  user: User;
@@ -37,7 +41,7 @@ export const RevokeInviteDialog = ({
37
41
  <AlertDialog.Root {...props}>
38
42
  {children && <AlertDialog.Trigger>{children}</AlertDialog.Trigger>}
39
43
 
40
- <AlertDialog.Content
44
+ <AlertDialogContent
41
45
  maxWidth="480px"
42
46
  onOpenAutoFocus={() => {
43
47
  requestAnimationFrame(() => {
@@ -83,7 +87,7 @@ export const RevokeInviteDialog = ({
83
87
  </DestructiveButton>
84
88
  </form>
85
89
  </Flex>
86
- </AlertDialog.Content>
90
+ </AlertDialogContent>
87
91
 
88
92
  {/* mirror errors in a live region */}
89
93
  <VisuallyHidden asChild>
@@ -0,0 +1,6 @@
1
+ import { useLayoutEffect } from "react";
2
+ import { canUseDOM } from "./utils";
3
+
4
+ const useIsoLayoutEffect = canUseDOM ? useLayoutEffect : () => void 0;
5
+
6
+ export { useIsoLayoutEffect as useLayoutEffect };
@@ -5,10 +5,13 @@ import * as React from "react";
5
5
  import type { User } from "./api/user";
6
6
  import { DeleteUserDialog } from "./delete-user-dialog";
7
7
  import { EditUserDetailsDialog } from "./edit-user-details-dialog";
8
- import { DestructiveMenuItem, PrimaryMenuItem } from "./elements";
8
+ import {
9
+ DestructiveMenuItem,
10
+ DropdownMenuContent,
11
+ PrimaryMenuItem,
12
+ } from "./elements";
9
13
  import { ResendInviteDialog } from "./resend-invite-dialog";
10
14
  import { RevokeInviteDialog } from "./revoke-invite-dialog";
11
- import { useElement } from "./widgets-context";
12
15
  import { useRoles } from "./api/role";
13
16
 
14
17
  interface UserActionsDropdownProps {
@@ -30,7 +33,6 @@ export const UserActionsDropdown = ({
30
33
  const [openDialog, setOpenDialog] = React.useState<UserActionDialog | null>(
31
34
  null,
32
35
  );
33
- const dropdownProps = useElement("dropdown");
34
36
 
35
37
  /**
36
38
  * Assigns a key for each dialog based on its open state to ensure its
@@ -94,17 +96,7 @@ export const UserActionsDropdown = ({
94
96
  }
95
97
  return {
96
98
  actions,
97
- items: items.map((item, index, array) => {
98
- if (index !== array.length - 1) {
99
- return (
100
- <React.Fragment key={item.key}>
101
- {item}
102
- <DropdownMenu.Separator />
103
- </React.Fragment>
104
- );
105
- }
106
- return item;
107
- }),
99
+ items,
108
100
  };
109
101
  }, [rolesQuery, user.actions]);
110
102
 
@@ -116,9 +108,9 @@ export const UserActionsDropdown = ({
116
108
  <>
117
109
  <DropdownMenu.Root>
118
110
  <DropdownMenu.Trigger>{children}</DropdownMenu.Trigger>
119
- <DropdownMenu.Content size="2" align="end" {...dropdownProps}>
111
+ <DropdownMenuContent size="2" align="end">
120
112
  {items}
121
- </DropdownMenu.Content>
113
+ </DropdownMenuContent>
122
114
  </DropdownMenu.Root>
123
115
 
124
116
  {actions.has("edit-role") && (
@@ -1,15 +1,9 @@
1
1
  "use client";
2
2
 
3
- import {
4
- Checkbox,
5
- DropdownMenu,
6
- Flex,
7
- IconButton,
8
- Select,
9
- } from "@radix-ui/themes";
3
+ import { Select } from "@radix-ui/themes";
10
4
  import * as React from "react";
11
5
  import type { Role } from "./api/role";
12
- import { PrimaryMenuItem } from "./elements";
6
+ import { SelectContent, SelectItem, SelectTrigger } from "./elements";
13
7
  import { useUsersManagementContext } from "./users-management-context";
14
8
 
15
9
  const ALL_ROLES_NAME = "All";
@@ -17,9 +11,13 @@ const ALL_ROLES_VALUE = "null";
17
11
 
18
12
  type UsersFilterProps = React.ComponentPropsWithoutRef<typeof Select.Root> & {
19
13
  roles: Role[] | undefined;
14
+ disabled?: boolean;
20
15
  };
21
16
 
22
- export const UsersFilter: React.FC<UsersFilterProps> = ({ roles }) => {
17
+ export const UsersFilter: React.FC<UsersFilterProps> = ({
18
+ roles,
19
+ disabled,
20
+ }) => {
23
21
  const {
24
22
  dispatch,
25
23
  state: { role },
@@ -48,75 +46,17 @@ export const UsersFilter: React.FC<UsersFilterProps> = ({ roles }) => {
48
46
  <Select.Root
49
47
  value={roles ? filteredRole : "null"}
50
48
  onValueChange={onValueChange}
49
+ disabled={disabled}
51
50
  >
52
- <Select.Trigger>{roles ? roleName : ALL_ROLES_NAME}</Select.Trigger>
53
- <Select.Content>
54
- <Select.Item value={ALL_ROLES_VALUE}>{ALL_ROLES_NAME}</Select.Item>
51
+ <SelectTrigger>{roles ? roleName : ALL_ROLES_NAME}</SelectTrigger>
52
+ <SelectContent>
53
+ <SelectItem value={ALL_ROLES_VALUE}>{ALL_ROLES_NAME}</SelectItem>
55
54
  {roles?.map((role) => (
56
55
  <React.Fragment key={role.slug}>
57
- <Select.Item value={role.slug}>{role.name}</Select.Item>
56
+ <SelectItem value={role.slug}>{role.name}</SelectItem>
58
57
  </React.Fragment>
59
58
  ))}
60
- </Select.Content>
59
+ </SelectContent>
61
60
  </Select.Root>
62
61
  );
63
62
  };
64
-
65
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
66
- function FilterMenu() {
67
- return (
68
- <DropdownMenu.Root>
69
- <DropdownMenu.Trigger>
70
- <IconButton
71
- size="1"
72
- color="gray"
73
- variant="ghost"
74
- radius="full"
75
- aria-label="Filter users"
76
- title="Filter users"
77
- >
78
- <FilterIcon aria-hidden="true" />
79
- </IconButton>
80
- </DropdownMenu.Trigger>
81
- <DropdownMenu.Content size="2" align="end">
82
- <PrimaryMenuItem>
83
- <Flex gap="2" align="center">
84
- <Checkbox variant="surface" />
85
- One
86
- </Flex>
87
- </PrimaryMenuItem>
88
- <PrimaryMenuItem>
89
- <Flex gap="2" align="center">
90
- <Checkbox />
91
- Two
92
- </Flex>
93
- </PrimaryMenuItem>
94
- </DropdownMenu.Content>
95
- </DropdownMenu.Root>
96
- );
97
- }
98
-
99
- const FilterIcon = React.forwardRef<
100
- SVGSVGElement,
101
- React.ComponentPropsWithRef<"svg">
102
- >(function FilterIcon({ children, ...props }, forwardedRef) {
103
- return (
104
- <svg
105
- width="15"
106
- height="15"
107
- viewBox="0 0 15 15"
108
- fill="currentColor"
109
- xmlns="http://www.w3.org/2000/svg"
110
- ref={forwardedRef}
111
- {...props}
112
- >
113
- {children}
114
- <path
115
- fillRule="evenodd"
116
- clipRule="evenodd"
117
- d="M1.5 1C1.22386 1 1 1.22386 1 1.5V4.5C1 4.66316 1.07961 4.81605 1.21327 4.90962L6 8.26033V13.5C6 13.6733 6.08973 13.8342 6.23713 13.9253C6.38454 14.0164 6.56861 14.0247 6.72361 13.9472L8.72361 12.9472C8.893 12.8625 9 12.6894 9 12.5V8.26033L13.7867 4.90962C13.9204 4.81605 14 4.66316 14 4.5V1.5C14 1.22386 13.7761 1 13.5 1H1.5ZM2 4.23967V2H13V4.23967L8.21327 7.59038C8.07961 7.68395 8 7.83684 8 8V12.191L7 12.691V8C7 7.83684 6.92039 7.68395 6.78673 7.59038L2 4.23967ZM12 3H3V4H12V3Z"
118
- fill="black"
119
- />
120
- </svg>
121
- );
122
- });
@@ -8,7 +8,7 @@ import {
8
8
  } from "./users-management-state";
9
9
 
10
10
  export interface UsersManagementContextType {
11
- authToken: string | null;
11
+ authToken: (() => Promise<string>) | null;
12
12
  state: UsersManagementState;
13
13
  dispatch: React.Dispatch<UsersManagementAction>;
14
14
  }