@workos-inc/widgets 0.0.0-pre.0

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 (230) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/index.d.ts +3 -0
  4. package/dist/cjs/index.d.ts.map +1 -0
  5. package/dist/cjs/index.js +8 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/lib/api/config.d.ts +9 -0
  8. package/dist/cjs/lib/api/config.d.ts.map +1 -0
  9. package/dist/cjs/lib/api/config.js +12 -0
  10. package/dist/cjs/lib/api/config.js.map +1 -0
  11. package/dist/cjs/lib/api/role.d.ts +9 -0
  12. package/dist/cjs/lib/api/role.d.ts.map +1 -0
  13. package/dist/cjs/lib/api/role.js +94 -0
  14. package/dist/cjs/lib/api/role.js.map +1 -0
  15. package/dist/cjs/lib/api/user.d.ts +61 -0
  16. package/dist/cjs/lib/api/user.d.ts.map +1 -0
  17. package/dist/cjs/lib/api/user.js +312 -0
  18. package/dist/cjs/lib/api/user.js.map +1 -0
  19. package/dist/cjs/lib/constants.d.ts +3 -0
  20. package/dist/cjs/lib/constants.d.ts.map +1 -0
  21. package/dist/cjs/lib/constants.js +6 -0
  22. package/dist/cjs/lib/constants.js.map +1 -0
  23. package/dist/cjs/lib/delete-user-dialog.d.ts +12 -0
  24. package/dist/cjs/lib/delete-user-dialog.d.ts.map +1 -0
  25. package/dist/cjs/lib/delete-user-dialog.js +37 -0
  26. package/dist/cjs/lib/delete-user-dialog.js.map +1 -0
  27. package/dist/cjs/lib/edit-user-details-dialog.d.ts +12 -0
  28. package/dist/cjs/lib/edit-user-details-dialog.d.ts.map +1 -0
  29. package/dist/cjs/lib/edit-user-details-dialog.js +81 -0
  30. package/dist/cjs/lib/edit-user-details-dialog.js.map +1 -0
  31. package/dist/cjs/lib/elements.d.ts +32 -0
  32. package/dist/cjs/lib/elements.d.ts.map +1 -0
  33. package/dist/cjs/lib/elements.js +57 -0
  34. package/dist/cjs/lib/elements.js.map +1 -0
  35. package/dist/cjs/lib/invite-user-dialog.d.ts +7 -0
  36. package/dist/cjs/lib/invite-user-dialog.d.ts.map +1 -0
  37. package/dist/cjs/lib/invite-user-dialog.js +167 -0
  38. package/dist/cjs/lib/invite-user-dialog.js.map +1 -0
  39. package/dist/cjs/lib/label.d.ts +7 -0
  40. package/dist/cjs/lib/label.d.ts.map +1 -0
  41. package/dist/cjs/lib/label.js +9 -0
  42. package/dist/cjs/lib/label.js.map +1 -0
  43. package/dist/cjs/lib/pagination.d.ts +8 -0
  44. package/dist/cjs/lib/pagination.d.ts.map +1 -0
  45. package/dist/cjs/lib/pagination.js +67 -0
  46. package/dist/cjs/lib/pagination.js.map +1 -0
  47. package/dist/cjs/lib/resend-invite-dialog.d.ts +10 -0
  48. package/dist/cjs/lib/resend-invite-dialog.d.ts.map +1 -0
  49. package/dist/cjs/lib/resend-invite-dialog.js +71 -0
  50. package/dist/cjs/lib/resend-invite-dialog.js.map +1 -0
  51. package/dist/cjs/lib/revoke-invite-dialog.d.ts +10 -0
  52. package/dist/cjs/lib/revoke-invite-dialog.d.ts.map +1 -0
  53. package/dist/cjs/lib/revoke-invite-dialog.js +37 -0
  54. package/dist/cjs/lib/revoke-invite-dialog.js.map +1 -0
  55. package/dist/cjs/lib/search-provider.d.ts +11 -0
  56. package/dist/cjs/lib/search-provider.d.ts.map +1 -0
  57. package/dist/cjs/lib/search-provider.js +55 -0
  58. package/dist/cjs/lib/search-provider.js.map +1 -0
  59. package/dist/cjs/lib/use-is-hydrated.d.ts +2 -0
  60. package/dist/cjs/lib/use-is-hydrated.d.ts.map +1 -0
  61. package/dist/cjs/lib/use-is-hydrated.js +34 -0
  62. package/dist/cjs/lib/use-is-hydrated.js.map +1 -0
  63. package/dist/cjs/lib/user-actions-dropdown.d.ts +9 -0
  64. package/dist/cjs/lib/user-actions-dropdown.d.ts.map +1 -0
  65. package/dist/cjs/lib/user-actions-dropdown.js +83 -0
  66. package/dist/cjs/lib/user-actions-dropdown.js.map +1 -0
  67. package/dist/cjs/lib/users-filter.d.ts +9 -0
  68. package/dist/cjs/lib/users-filter.d.ts.map +1 -0
  69. package/dist/cjs/lib/users-filter.js +63 -0
  70. package/dist/cjs/lib/users-filter.js.map +1 -0
  71. package/dist/cjs/lib/users-management-context.d.ts +23 -0
  72. package/dist/cjs/lib/users-management-context.d.ts.map +1 -0
  73. package/dist/cjs/lib/users-management-context.js +83 -0
  74. package/dist/cjs/lib/users-management-context.js.map +1 -0
  75. package/dist/cjs/lib/users-management-state.d.ts +22 -0
  76. package/dist/cjs/lib/users-management-state.d.ts.map +1 -0
  77. package/dist/cjs/lib/users-management-state.js +143 -0
  78. package/dist/cjs/lib/users-management-state.js.map +1 -0
  79. package/dist/cjs/lib/users-management.d.ts +12 -0
  80. package/dist/cjs/lib/users-management.d.ts.map +1 -0
  81. package/dist/cjs/lib/users-management.js +141 -0
  82. package/dist/cjs/lib/users-management.js.map +1 -0
  83. package/dist/cjs/lib/users-search.d.ts +3 -0
  84. package/dist/cjs/lib/users-search.d.ts.map +1 -0
  85. package/dist/cjs/lib/users-search.js +65 -0
  86. package/dist/cjs/lib/users-search.js.map +1 -0
  87. package/dist/cjs/lib/utils.d.ts +15 -0
  88. package/dist/cjs/lib/utils.d.ts.map +1 -0
  89. package/dist/cjs/lib/utils.js +78 -0
  90. package/dist/cjs/lib/utils.js.map +1 -0
  91. package/dist/cjs/lib/widgets-context.d.ts +11 -0
  92. package/dist/cjs/lib/widgets-context.d.ts.map +1 -0
  93. package/dist/cjs/lib/widgets-context.js +45 -0
  94. package/dist/cjs/lib/widgets-context.js.map +1 -0
  95. package/dist/cjs/users-management.client.d.ts +6 -0
  96. package/dist/cjs/users-management.client.d.ts.map +1 -0
  97. package/dist/cjs/users-management.client.js +57 -0
  98. package/dist/cjs/users-management.client.js.map +1 -0
  99. package/dist/cjs/workos-widgets.client.d.ts +17 -0
  100. package/dist/cjs/workos-widgets.client.d.ts.map +1 -0
  101. package/dist/cjs/workos-widgets.client.js +55 -0
  102. package/dist/cjs/workos-widgets.client.js.map +1 -0
  103. package/dist/esm/index.d.ts +3 -0
  104. package/dist/esm/index.d.ts.map +1 -0
  105. package/dist/esm/index.js +3 -0
  106. package/dist/esm/index.js.map +1 -0
  107. package/dist/esm/lib/api/config.d.ts +9 -0
  108. package/dist/esm/lib/api/config.d.ts.map +1 -0
  109. package/dist/esm/lib/api/config.js +9 -0
  110. package/dist/esm/lib/api/config.js.map +1 -0
  111. package/dist/esm/lib/api/role.d.ts +9 -0
  112. package/dist/esm/lib/api/role.d.ts.map +1 -0
  113. package/dist/esm/lib/api/role.js +89 -0
  114. package/dist/esm/lib/api/role.js.map +1 -0
  115. package/dist/esm/lib/api/user.d.ts +61 -0
  116. package/dist/esm/lib/api/user.d.ts.map +1 -0
  117. package/dist/esm/lib/api/user.js +302 -0
  118. package/dist/esm/lib/api/user.js.map +1 -0
  119. package/dist/esm/lib/constants.d.ts +3 -0
  120. package/dist/esm/lib/constants.d.ts.map +1 -0
  121. package/dist/esm/lib/constants.js +3 -0
  122. package/dist/esm/lib/constants.js.map +1 -0
  123. package/dist/esm/lib/delete-user-dialog.d.ts +12 -0
  124. package/dist/esm/lib/delete-user-dialog.d.ts.map +1 -0
  125. package/dist/esm/lib/delete-user-dialog.js +33 -0
  126. package/dist/esm/lib/delete-user-dialog.js.map +1 -0
  127. package/dist/esm/lib/edit-user-details-dialog.d.ts +12 -0
  128. package/dist/esm/lib/edit-user-details-dialog.d.ts.map +1 -0
  129. package/dist/esm/lib/edit-user-details-dialog.js +54 -0
  130. package/dist/esm/lib/edit-user-details-dialog.js.map +1 -0
  131. package/dist/esm/lib/elements.d.ts +32 -0
  132. package/dist/esm/lib/elements.d.ts.map +1 -0
  133. package/dist/esm/lib/elements.js +54 -0
  134. package/dist/esm/lib/elements.js.map +1 -0
  135. package/dist/esm/lib/invite-user-dialog.d.ts +7 -0
  136. package/dist/esm/lib/invite-user-dialog.d.ts.map +1 -0
  137. package/dist/esm/lib/invite-user-dialog.js +140 -0
  138. package/dist/esm/lib/invite-user-dialog.js.map +1 -0
  139. package/dist/esm/lib/label.d.ts +7 -0
  140. package/dist/esm/lib/label.d.ts.map +1 -0
  141. package/dist/esm/lib/label.js +6 -0
  142. package/dist/esm/lib/label.js.map +1 -0
  143. package/dist/esm/lib/pagination.d.ts +8 -0
  144. package/dist/esm/lib/pagination.d.ts.map +1 -0
  145. package/dist/esm/lib/pagination.js +40 -0
  146. package/dist/esm/lib/pagination.js.map +1 -0
  147. package/dist/esm/lib/resend-invite-dialog.d.ts +10 -0
  148. package/dist/esm/lib/resend-invite-dialog.d.ts.map +1 -0
  149. package/dist/esm/lib/resend-invite-dialog.js +44 -0
  150. package/dist/esm/lib/resend-invite-dialog.js.map +1 -0
  151. package/dist/esm/lib/revoke-invite-dialog.d.ts +10 -0
  152. package/dist/esm/lib/revoke-invite-dialog.d.ts.map +1 -0
  153. package/dist/esm/lib/revoke-invite-dialog.js +33 -0
  154. package/dist/esm/lib/revoke-invite-dialog.js.map +1 -0
  155. package/dist/esm/lib/search-provider.d.ts +11 -0
  156. package/dist/esm/lib/search-provider.d.ts.map +1 -0
  157. package/dist/esm/lib/search-provider.js +27 -0
  158. package/dist/esm/lib/search-provider.js.map +1 -0
  159. package/dist/esm/lib/use-is-hydrated.d.ts +2 -0
  160. package/dist/esm/lib/use-is-hydrated.d.ts.map +1 -0
  161. package/dist/esm/lib/use-is-hydrated.js +8 -0
  162. package/dist/esm/lib/use-is-hydrated.js.map +1 -0
  163. package/dist/esm/lib/user-actions-dropdown.d.ts +9 -0
  164. package/dist/esm/lib/user-actions-dropdown.d.ts.map +1 -0
  165. package/dist/esm/lib/user-actions-dropdown.js +56 -0
  166. package/dist/esm/lib/user-actions-dropdown.js.map +1 -0
  167. package/dist/esm/lib/users-filter.d.ts +9 -0
  168. package/dist/esm/lib/users-filter.d.ts.map +1 -0
  169. package/dist/esm/lib/users-filter.js +36 -0
  170. package/dist/esm/lib/users-filter.js.map +1 -0
  171. package/dist/esm/lib/users-management-context.d.ts +23 -0
  172. package/dist/esm/lib/users-management-context.d.ts.map +1 -0
  173. package/dist/esm/lib/users-management-context.js +54 -0
  174. package/dist/esm/lib/users-management-context.js.map +1 -0
  175. package/dist/esm/lib/users-management-state.d.ts +22 -0
  176. package/dist/esm/lib/users-management-state.d.ts.map +1 -0
  177. package/dist/esm/lib/users-management-state.js +117 -0
  178. package/dist/esm/lib/users-management-state.js.map +1 -0
  179. package/dist/esm/lib/users-management.d.ts +12 -0
  180. package/dist/esm/lib/users-management.d.ts.map +1 -0
  181. package/dist/esm/lib/users-management.js +114 -0
  182. package/dist/esm/lib/users-management.js.map +1 -0
  183. package/dist/esm/lib/users-search.d.ts +3 -0
  184. package/dist/esm/lib/users-search.d.ts.map +1 -0
  185. package/dist/esm/lib/users-search.js +39 -0
  186. package/dist/esm/lib/users-search.js.map +1 -0
  187. package/dist/esm/lib/utils.d.ts +15 -0
  188. package/dist/esm/lib/utils.d.ts.map +1 -0
  189. package/dist/esm/lib/utils.js +70 -0
  190. package/dist/esm/lib/utils.js.map +1 -0
  191. package/dist/esm/lib/widgets-context.d.ts +11 -0
  192. package/dist/esm/lib/widgets-context.d.ts.map +1 -0
  193. package/dist/esm/lib/widgets-context.js +17 -0
  194. package/dist/esm/lib/widgets-context.js.map +1 -0
  195. package/dist/esm/users-management.client.d.ts +6 -0
  196. package/dist/esm/users-management.client.d.ts.map +1 -0
  197. package/dist/esm/users-management.client.js +30 -0
  198. package/dist/esm/users-management.client.js.map +1 -0
  199. package/dist/esm/workos-widgets.client.d.ts +17 -0
  200. package/dist/esm/workos-widgets.client.d.ts.map +1 -0
  201. package/dist/esm/workos-widgets.client.js +28 -0
  202. package/dist/esm/workos-widgets.client.js.map +1 -0
  203. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  204. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  205. package/package.json +69 -0
  206. package/src/index.ts +5 -0
  207. package/src/lib/api/config.ts +9 -0
  208. package/src/lib/api/role.ts +124 -0
  209. package/src/lib/api/user.ts +458 -0
  210. package/src/lib/constants.ts +2 -0
  211. package/src/lib/delete-user-dialog.tsx +103 -0
  212. package/src/lib/edit-user-details-dialog.tsx +170 -0
  213. package/src/lib/elements.tsx +175 -0
  214. package/src/lib/invite-user-dialog.tsx +319 -0
  215. package/src/lib/label.tsx +14 -0
  216. package/src/lib/pagination.tsx +69 -0
  217. package/src/lib/resend-invite-dialog.tsx +136 -0
  218. package/src/lib/revoke-invite-dialog.tsx +104 -0
  219. package/src/lib/search-provider.tsx +51 -0
  220. package/src/lib/use-is-hydrated.ts +13 -0
  221. package/src/lib/user-actions-dropdown.tsx +161 -0
  222. package/src/lib/users-filter.tsx +122 -0
  223. package/src/lib/users-management-context.tsx +89 -0
  224. package/src/lib/users-management-state.ts +165 -0
  225. package/src/lib/users-management.tsx +461 -0
  226. package/src/lib/users-search.tsx +130 -0
  227. package/src/lib/utils.ts +94 -0
  228. package/src/lib/widgets-context.ts +29 -0
  229. package/src/users-management.client.tsx +59 -0
  230. package/src/workos-widgets.client.tsx +73 -0
@@ -0,0 +1,302 @@
1
+ import { keepPreviousData, useMutation, useQuery, useQueryClient, } from "@tanstack/react-query";
2
+ import { useUsersManagementContext, } from "../users-management-context";
3
+ import { parseErrorResponse } from "../utils";
4
+ import { useWorkOsApiUrl } from "../widgets-context";
5
+ import { API_ENDPOINTS } from "./config";
6
+ import { USER_ROW_LIMIT, WIDGETS_API_VERSION } from "../constants";
7
+ class InviteUserError extends Error {
8
+ status;
9
+ constructor(args) {
10
+ super(args.message);
11
+ this.name = "InviteUserError";
12
+ this.status = args.status;
13
+ }
14
+ }
15
+ export const useUsers = (context) => {
16
+ const { authToken, state: { pagination, role, searchQuery }, } = useUsersManagementContext(context);
17
+ const baseUrl = useWorkOsApiUrl();
18
+ const limit = USER_ROW_LIMIT;
19
+ const { before, after } = pagination || {};
20
+ return useQuery({
21
+ queryKey: [
22
+ "users",
23
+ { authToken, baseUrl, limit, before, after, role, searchQuery },
24
+ ],
25
+ queryFn: () => fetchUsers({
26
+ authToken,
27
+ baseUrl,
28
+ limit,
29
+ before,
30
+ after,
31
+ role,
32
+ searchQuery,
33
+ }),
34
+ enabled: !!authToken,
35
+ placeholderData: keepPreviousData,
36
+ });
37
+ };
38
+ export const useUser = (userId, initialContext) => {
39
+ const { authToken } = useUsersManagementContext(initialContext);
40
+ const baseUrl = useWorkOsApiUrl();
41
+ return useQuery({
42
+ queryKey: ["user", userId],
43
+ queryFn: () => fetchUser(userId, { baseUrl, authToken }),
44
+ enabled: !!authToken,
45
+ });
46
+ };
47
+ export const useUpdateUserRole = (args) => {
48
+ const { authToken } = useUsersManagementContext();
49
+ const queryClient = useQueryClient();
50
+ const baseUrl = useWorkOsApiUrl();
51
+ const { onError } = args || {};
52
+ return useMutation({
53
+ mutationFn: ({ id, data: { roles }, }) => updateUserRole(id, { authToken, baseUrl, data: { roles } }),
54
+ onSuccess: (updatedUser) => {
55
+ queryClient.invalidateQueries({ queryKey: ["users"] });
56
+ queryClient.invalidateQueries({ queryKey: ["user", updatedUser.id] });
57
+ },
58
+ onError,
59
+ });
60
+ };
61
+ export const useInviteUser = (args) => {
62
+ const { authToken } = useUsersManagementContext();
63
+ const queryClient = useQueryClient();
64
+ const baseUrl = useWorkOsApiUrl();
65
+ const { onError } = args || {};
66
+ return useMutation({
67
+ mutationFn: (data) => inviteUser({ authToken, baseUrl, ...data }),
68
+ onSuccess: (_newUser) => {
69
+ queryClient.invalidateQueries({ queryKey: ["users"] });
70
+ },
71
+ onError,
72
+ });
73
+ };
74
+ export const useDeleteUser = (args) => {
75
+ const { authToken } = useUsersManagementContext();
76
+ const queryClient = useQueryClient();
77
+ const baseUrl = useWorkOsApiUrl();
78
+ const { onError } = args || {};
79
+ return useMutation({
80
+ mutationFn: (id) => deleteUser(id, { authToken, baseUrl }),
81
+ onSuccess: (_, userId) => {
82
+ queryClient.invalidateQueries({ queryKey: ["users"] });
83
+ queryClient.removeQueries({ queryKey: ["user", userId] });
84
+ },
85
+ onError,
86
+ });
87
+ };
88
+ export const useRevokeUserInvite = (args) => {
89
+ const { authToken } = useUsersManagementContext();
90
+ const queryClient = useQueryClient();
91
+ const baseUrl = useWorkOsApiUrl();
92
+ const { onError } = args || {};
93
+ return useMutation({
94
+ mutationFn: (id) => revokeUserInvite(id, { authToken, baseUrl }),
95
+ onSuccess: (_, userId) => {
96
+ queryClient.invalidateQueries({ queryKey: ["users"] });
97
+ queryClient.removeQueries({ queryKey: ["user", userId] });
98
+ },
99
+ onError,
100
+ });
101
+ };
102
+ export const useResendUserInvite = (args) => {
103
+ const { authToken } = useUsersManagementContext();
104
+ const queryClient = useQueryClient();
105
+ const baseUrl = useWorkOsApiUrl();
106
+ const { onError } = args || {};
107
+ return useMutation({
108
+ mutationFn: (id) => resendUserInvite(id, { authToken, baseUrl }),
109
+ onSuccess: (_, userId) => {
110
+ queryClient.invalidateQueries({ queryKey: ["users"] });
111
+ queryClient.removeQueries({ queryKey: ["user", userId] });
112
+ },
113
+ onError,
114
+ });
115
+ };
116
+ /**
117
+ * Fetch functions
118
+ */
119
+ async function fetchUsers({ baseUrl, authToken, limit, role, before, after, searchQuery, }) {
120
+ if (!authToken) {
121
+ throw new Error("No auth token provided");
122
+ }
123
+ const url = new URL(`${baseUrl}/${API_ENDPOINTS.USERS}`);
124
+ url.searchParams.set("limit", limit.toString());
125
+ if (before) {
126
+ url.searchParams.set("before", before);
127
+ }
128
+ if (after) {
129
+ url.searchParams.set("after", after);
130
+ }
131
+ if (role) {
132
+ url.searchParams.set("role", role);
133
+ }
134
+ if (searchQuery) {
135
+ url.searchParams.set("search", searchQuery);
136
+ }
137
+ const response = await fetch(url, {
138
+ cache: "no-store",
139
+ headers: getAuthHeaders(authToken),
140
+ }).catch((error) => {
141
+ console.error(error);
142
+ // TODO: handle fetch errors
143
+ throw new Error("Failed to fetch users");
144
+ });
145
+ if (!response.ok) {
146
+ // TODO: handle this case
147
+ throw new Error("Failed to fetch users");
148
+ }
149
+ // TODO validate the response
150
+ const json = await response.json();
151
+ const { data, listMetadata: pagination } = json;
152
+ return { data, pagination };
153
+ }
154
+ const fetchUser = async (userId, { authToken, baseUrl }) => {
155
+ if (!authToken) {
156
+ throw new Error("No auth token provided");
157
+ }
158
+ const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USERS}/${userId}`, {
159
+ headers: getAuthHeaders(authToken),
160
+ cache: "no-store",
161
+ }).catch((error) => {
162
+ console.error(error);
163
+ // TODO: handle fetch errors
164
+ throw new Error("Failed to fetch user");
165
+ });
166
+ if (!response.ok) {
167
+ // TODO: handle this case
168
+ throw new Error("Failed to fetch user");
169
+ }
170
+ // TODO validate the response
171
+ const json = await response.json();
172
+ return json.data;
173
+ };
174
+ const updateUserRole = async (userId, { authToken, baseUrl, data, }) => {
175
+ if (!authToken) {
176
+ // TODO handle this case
177
+ throw new Error("No auth token");
178
+ }
179
+ const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USERS}/${userId}`, {
180
+ method: "POST",
181
+ headers: {
182
+ "Content-Type": "application/json",
183
+ ...getAuthHeaders(authToken),
184
+ },
185
+ body: JSON.stringify(data),
186
+ }).catch((error) => {
187
+ console.error(error);
188
+ // TODO: handle fetch errors
189
+ throw new Error("Failed to update user");
190
+ });
191
+ if (!response.ok) {
192
+ throw new Error("Failed to update user");
193
+ }
194
+ // TODO validate the response
195
+ const json = await response.json();
196
+ return json;
197
+ };
198
+ const inviteUser = async ({ authToken, baseUrl, ...data }) => {
199
+ if (!authToken) {
200
+ // TODO handle this case
201
+ throw new Error("No auth token");
202
+ }
203
+ if (!data.role) {
204
+ throw new Error("Role required to invite user");
205
+ }
206
+ const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USER_INVITE}`, {
207
+ method: "POST",
208
+ headers: {
209
+ "Content-Type": "application/json",
210
+ ...getAuthHeaders(authToken),
211
+ },
212
+ body: JSON.stringify({
213
+ email: data.email,
214
+ roles: [data.role],
215
+ }),
216
+ }).catch((error) => {
217
+ console.error(error);
218
+ // TODO: handle fetch errors
219
+ throw new Error("Failed to invite user");
220
+ });
221
+ if (!response.ok) {
222
+ const { message, status } = await parseErrorResponse(response);
223
+ throw new InviteUserError({
224
+ message,
225
+ status,
226
+ });
227
+ }
228
+ // TODO validate the response
229
+ const json = await response.json();
230
+ return json;
231
+ };
232
+ const deleteUser = async (userId, { authToken, baseUrl }) => {
233
+ if (!authToken) {
234
+ // TODO handle this case
235
+ throw new Error("No auth token");
236
+ }
237
+ const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USERS}/${userId}`, {
238
+ method: "DELETE",
239
+ headers: getAuthHeaders(authToken),
240
+ }).catch((error) => {
241
+ console.error(error);
242
+ // TODO: handle fetch errors
243
+ throw new Error("Failed to delete user. Please try again.");
244
+ });
245
+ if (!response.ok) {
246
+ console.error(response);
247
+ // TODO: handle server errors
248
+ throw new Error("Failed to delete user. Please try again.");
249
+ }
250
+ // TODO validate the response
251
+ const json = await response.json();
252
+ return json;
253
+ };
254
+ const revokeUserInvite = async (userId, { authToken, baseUrl }) => {
255
+ if (!authToken) {
256
+ // TODO handle this case
257
+ throw new Error("No auth token");
258
+ }
259
+ const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USER_INVITES}/${userId}`, {
260
+ method: "DELETE",
261
+ headers: getAuthHeaders(authToken),
262
+ }).catch((error) => {
263
+ console.error(error);
264
+ // TODO: handle fetch errors
265
+ throw new Error("Failed to resend user invite. Please try again.");
266
+ });
267
+ if (!response.ok) {
268
+ // TODO: handle server errors
269
+ throw new Error("Failed to resend user invite. Please try again.");
270
+ }
271
+ // TODO validate the response
272
+ const json = await response.json();
273
+ return json;
274
+ };
275
+ const resendUserInvite = async (userId, { authToken, baseUrl }) => {
276
+ if (!authToken) {
277
+ // TODO handle this case
278
+ throw new Error("No auth token");
279
+ }
280
+ const response = await fetch(`${baseUrl}/${API_ENDPOINTS.USER_INVITES_RESEND(userId)}`, {
281
+ method: "POST",
282
+ headers: getAuthHeaders(authToken),
283
+ }).catch((error) => {
284
+ console.error(error);
285
+ // TODO: handle fetch errors
286
+ throw new Error("Failed to resend user invite. Please try again.");
287
+ });
288
+ if (!response.ok) {
289
+ // TODO: handle server errors
290
+ throw new Error("Failed to resend user invite. Please try again.");
291
+ }
292
+ // TODO validate the response
293
+ const json = await response.json();
294
+ return json;
295
+ };
296
+ function getAuthHeaders(authToken) {
297
+ return {
298
+ Authorization: `Bearer ${authToken}`,
299
+ "WorkOS-Widgets-Version": WIDGETS_API_VERSION,
300
+ };
301
+ }
302
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../src/lib/api/user.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const USER_ROW_LIMIT = 10;
2
+ export declare const WIDGETS_API_VERSION = "v1";
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,mBAAmB,OAAO,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const USER_ROW_LIMIT = 10;
2
+ export const WIDGETS_API_VERSION = "v1";
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { AlertDialog } from "@radix-ui/themes";
2
+ import { type ReactNode } from "react";
3
+ import type { User } from "./api/user";
4
+ interface DeleteUserDialogProps extends AlertDialog.RootProps {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ user: User;
8
+ children?: ReactNode;
9
+ }
10
+ export declare const DeleteUserDialog: ({ children, user, ...props }: DeleteUserDialogProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=delete-user-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-user-dialog.d.ts","sourceRoot":"","sources":["../../../src/lib/delete-user-dialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EAKZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,UAAU,qBAAsB,SAAQ,WAAW,CAAC,SAAS;IAC3D,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB,iCAI1B,qBAAqB,4CAoEvB,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AlertDialog, Callout, Flex, Text, VisuallyHidden, } from "@radix-ui/themes";
4
+ import { useRef } from "react";
5
+ import { useDeleteUser } from "./api/user";
6
+ import { DestructiveButton, SecondaryButton } from "./elements";
7
+ export const DeleteUserDialog = ({ children, user, ...props }) => {
8
+ const deleteUser = useDeleteUser();
9
+ const inputRef = useRef(null);
10
+ const onSubmitForm = () => {
11
+ deleteUser.mutate(user.id, {
12
+ onSuccess: () => {
13
+ props.onOpenChange(false);
14
+ },
15
+ });
16
+ };
17
+ return (_jsxs(AlertDialog.Root, { ...props, children: [children && _jsx(AlertDialog.Trigger, { children: children }), _jsxs(AlertDialog.Content, { maxWidth: "480px", onOpenAutoFocus: () => {
18
+ requestAnimationFrame(() => {
19
+ inputRef.current?.focus();
20
+ });
21
+ }, children: [_jsx(AlertDialog.Title, { children: "Remove user" }), _jsx(Flex, { direction: "column", gap: "3", children: _jsxs(AlertDialog.Description, { children: ["Are you sure you want to remove", " ", _jsx(Text, { weight: "bold", children: user.email }), "? This action is immediate and cannot be undone."] }) }), deleteUser.error ? (_jsx(Callout.Root, { color: "red", mt: "4", mb: "-2", children: _jsx(Callout.Text, { children: getMutationErrorMessage(deleteUser.error) }) })) : null, _jsx(Flex, { gap: "3", justify: "end", mt: "5", asChild: true, children: _jsxs("form", { onSubmit: (event) => {
22
+ event.preventDefault();
23
+ onSubmitForm();
24
+ }, children: [_jsx(AlertDialog.Cancel, { children: _jsx(SecondaryButton, { disabled: deleteUser.isPending, children: "Cancel" }) }), _jsx(DestructiveButton, { type: "submit", loading: deleteUser.isPending, children: "Remove" })] }) }), _jsx(VisuallyHidden, { asChild: true, children: _jsx("section", { "aria-live": "polite", children: getMutationErrorMessage(deleteUser.error) }) })] })] }));
25
+ };
26
+ function getMutationErrorMessage(error) {
27
+ if (!error) {
28
+ return null;
29
+ }
30
+ // TODO Handle server errors
31
+ return "There was an error removing the user. Please try again.";
32
+ }
33
+ //# sourceMappingURL=delete-user-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-user-dialog.js","sourceRoot":"","sources":["../../../src/lib/delete-user-dialog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,WAAW,EACX,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAkB,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAShE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,QAAQ,EACR,IAAI,EACJ,GAAG,KAAK,EACc,EAAE,EAAE;IAC1B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE;YACzB,SAAS,EAAE,GAAG,EAAE;gBACd,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,WAAW,CAAC,IAAI,OAAK,KAAK,aACxB,QAAQ,IAAI,KAAC,WAAW,CAAC,OAAO,cAAE,QAAQ,GAAuB,EAElE,MAAC,WAAW,CAAC,OAAO,IAClB,QAAQ,EAAC,OAAO,EAChB,eAAe,EAAE,GAAG,EAAE;oBACpB,qBAAqB,CAAC,GAAG,EAAE;wBACzB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;oBAC5B,CAAC,CAAC,CAAC;gBACL,CAAC,aAED,KAAC,WAAW,CAAC,KAAK,8BAAgC,EAClD,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAC,GAAG,YAC9B,MAAC,WAAW,CAAC,WAAW,kDACU,GAAG,EACnC,KAAC,IAAI,IAAC,MAAM,EAAC,MAAM,YAAE,IAAI,CAAC,KAAK,GAAQ,wDAEf,GACrB,EAEN,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAClB,KAAC,OAAO,CAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,YACtC,KAAC,OAAO,CAAC,IAAI,cACV,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC,GAC7B,GACF,CAChB,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,IAAI,IAAC,GAAG,EAAC,GAAG,EAAC,OAAO,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,OAAO,kBACxC,gBACE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gCAClB,KAAK,CAAC,cAAc,EAAE,CAAC;gCACvB,YAAY,EAAE,CAAC;4BACjB,CAAC,aAED,KAAC,WAAW,CAAC,MAAM,cACjB,KAAC,eAAe,IAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,uBAE7B,GACC,EAErB,KAAC,iBAAiB,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,UAAU,CAAC,SAAS,uBAE1C,IACf,GACF,EAEP,KAAC,cAAc,IAAC,OAAO,kBACrB,+BAAmB,QAAQ,YACxB,uBAAuB,CAAC,UAAU,CAAC,KAAK,CAAC,GAClC,GACK,IACG,IACL,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,4BAA4B;IAC5B,OAAO,yDAAyD,CAAC;AACnE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Dialog } from "@radix-ui/themes";
2
+ import { type ReactNode } from "react";
3
+ import type { User } from "./api/user";
4
+ interface EditUserDialogProps extends Dialog.RootProps {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ user: User;
8
+ children?: ReactNode;
9
+ }
10
+ export declare const EditUserDetailsDialog: ({ children, user, ...props }: EditUserDialogProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=edit-user-details-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-user-details-dialog.d.ts","sourceRoot":"","sources":["../../../src/lib/edit-user-details-dialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,MAAM,EAMP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMvC,UAAU,mBAAoB,SAAQ,MAAM,CAAC,SAAS;IACpD,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,iCAI/B,mBAAmB,4CA0HrB,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Callout, Dialog, Flex, Select, Skeleton, Text, VisuallyHidden, } from "@radix-ui/themes";
5
+ import { useState } from "react";
6
+ import { useUpdateUserRole } from "./api/user";
7
+ import { PrimaryButton, SecondaryButton } from "./elements";
8
+ import { getBestName } from "./utils";
9
+ import { useRoles } from "./api/role";
10
+ import { useElement } from "./widgets-context";
11
+ export const EditUserDetailsDialog = ({ children, user, ...props }) => {
12
+ const displayName = getBestName(user) || user.email;
13
+ const rolesQuery = useRoles();
14
+ const { data: roles } = rolesQuery;
15
+ const updateUser = useUpdateUserRole();
16
+ const dropdownProps = useElement("dropdown");
17
+ const [selectedRole, setSelectedRole] = useState(user.roles[0]?.slug || "Unknown");
18
+ const onSubmitForm = ({ id, roles }) => {
19
+ updateUser.mutate({ id, data: { roles } }, {
20
+ onSuccess: () => {
21
+ props.onOpenChange(false);
22
+ },
23
+ });
24
+ };
25
+ const rootId = React.useId();
26
+ const formId = `edit-user-form-${rootId}`;
27
+ const selectId = `role-select-${rootId}`;
28
+ const selectLabelId = `${selectId}-label`;
29
+ const infoId = `${selectId}-info`;
30
+ const errorId = `${selectId}-error`;
31
+ const showErrorMessage = !!rolesQuery.error;
32
+ const showSingleRoleInfo = rolesQuery.isSuccess && roles.length === 1;
33
+ return (_jsxs(Dialog.Root, { ...props, children: [children && _jsx(Dialog.Trigger, { children: children }), _jsxs(Dialog.Content, { maxWidth: "480px", children: [_jsx(Dialog.Title, { children: "Edit role" }), _jsxs(Dialog.Description, { children: ["Select the role to assign to ", _jsx(Text, { weight: "bold", children: displayName })] }), _jsx(Flex, { mt: "2", direction: "column", gap: "1", asChild: true, children: _jsxs("form", { id: formId, onSubmit: async (event) => {
34
+ event.preventDefault();
35
+ onSubmitForm({ id: user.id, roles: [selectedRole] });
36
+ }, children: [_jsxs(Select.Root, { name: "roles", value: selectedRole ?? "Unknown", onValueChange: setSelectedRole, disabled: rolesQuery.isLoading || showSingleRoleInfo, children: [_jsx(Skeleton, { loading: rolesQuery.isLoading, children: _jsx(Select.Trigger, { id: selectId, placeholder: "Assign a role", "aria-labelledby": selectLabelId, "aria-invalid": showErrorMessage || undefined, "aria-describedby": [showErrorMessage && errorId, showSingleRoleInfo && infoId]
37
+ .filter(Boolean)
38
+ .join(" ") || undefined }) }), _jsx(Select.Content, { ...dropdownProps, children: roles.map((role) => (_jsx(Select.Item, { value: role.slug, children: role.name }, role.slug))) })] }), showErrorMessage ? (_jsx(Text, { color: "red", size: "2", id: errorId, children: getRoleSelectErrorMessage(rolesQuery.error) })) : null, showSingleRoleInfo ? (_jsx(Text, { color: "gray", size: "2", id: infoId, mt: "1", children: "You cannot update the role for this user as there is only one role available." })) : null] }) }), updateUser.error ? (_jsx(Callout.Root, { color: "red", mt: "4", mb: "-2", children: _jsx(Callout.Text, { children: getMutationErrorMessage(updateUser.error) }) })) : null, _jsxs(Flex, { mt: "5", gap: "3", justify: "end", children: [_jsx(Dialog.Close, { children: _jsx(SecondaryButton, { disabled: updateUser.isPending, children: "Cancel" }) }), _jsx(PrimaryButton, { form: formId, loading: updateUser.isPending, disabled: rolesQuery.isLoading || showSingleRoleInfo || undefined, children: "Save" })] }), _jsx(VisuallyHidden, { asChild: true, children: _jsx("section", { "aria-live": "polite", children: getMutationErrorMessage(updateUser.error) }) })] })] }));
39
+ };
40
+ function getRoleSelectErrorMessage(error) {
41
+ if (!error) {
42
+ return null;
43
+ }
44
+ // TODO Handle server errors
45
+ return "There was an error fetching roles. Please try again.";
46
+ }
47
+ function getMutationErrorMessage(error) {
48
+ if (!error) {
49
+ return null;
50
+ }
51
+ // TODO Handle server errors
52
+ return "There was an error updating the user role. Please try again.";
53
+ }
54
+ //# sourceMappingURL=edit-user-details-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-user-details-dialog.js","sourceRoot":"","sources":["../../../src/lib/edit-user-details-dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { DropdownMenu, AvatarProps as RadixAvatarProps, TextField as RadixTextField } from "@radix-ui/themes";
2
+ import type { GetPropDefTypes, avatarPropDefs, badgePropDefs, buttonPropDefs, dropdownMenuContentPropDefs, dropdownMenuItemPropDefs, iconButtonPropDefs, textFieldRootPropDefs } from "@radix-ui/themes/props";
3
+ export declare const PrimaryButton: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/themes").ButtonProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
4
+ export declare const SecondaryButton: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/themes").ButtonProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
5
+ export declare const DestructiveButton: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/themes").ButtonProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
6
+ export declare const IconButton: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/themes").IconButtonProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
7
+ export declare const TextField: import("react").ForwardRefExoticComponent<Omit<RadixTextField.RootProps & import("react").RefAttributes<HTMLInputElement>, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
8
+ export declare const TextFieldSlot: import("react").ForwardRefExoticComponent<RadixTextField.SlotProps & import("react").RefAttributes<HTMLDivElement>>;
9
+ export declare const Badge: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/themes").BadgeProps & import("react").RefAttributes<HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
10
+ export declare const PrimaryMenuItem: import("react").ForwardRefExoticComponent<Omit<DropdownMenu.ItemProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
11
+ export declare const DestructiveMenuItem: import("react").ForwardRefExoticComponent<Omit<DropdownMenu.ItemProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
12
+ interface AvatarProps extends RadixAvatarProps {
13
+ dim?: boolean;
14
+ }
15
+ export declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLImageElement>>;
16
+ type OmitAsChild<T> = {
17
+ [K in keyof T]: T[K] extends undefined ? undefined : Omit<NonNullable<T[K]>, "asChild">;
18
+ };
19
+ export type Elements = OmitAsChild<{
20
+ primaryButton?: GetPropDefTypes<typeof buttonPropDefs>;
21
+ secondaryButton?: GetPropDefTypes<typeof buttonPropDefs>;
22
+ destructiveButton?: GetPropDefTypes<typeof buttonPropDefs>;
23
+ iconButton?: GetPropDefTypes<typeof iconButtonPropDefs>;
24
+ textfield?: GetPropDefTypes<typeof textFieldRootPropDefs>;
25
+ badge?: GetPropDefTypes<typeof badgePropDefs>;
26
+ dropdown?: GetPropDefTypes<typeof dropdownMenuContentPropDefs>;
27
+ primaryMenuItem?: GetPropDefTypes<typeof dropdownMenuItemPropDefs>;
28
+ destructiveMenuItem?: GetPropDefTypes<typeof dropdownMenuItemPropDefs>;
29
+ avatar?: Omit<GetPropDefTypes<typeof avatarPropDefs>, "fallback">;
30
+ }>;
31
+ export {};
32
+ //# sourceMappingURL=elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../../src/lib/elements.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,YAAY,EAEZ,WAAW,IAAI,gBAAgB,EAG/B,SAAS,IAAI,cAAc,EAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAIhC,eAAO,MAAM,aAAa,sMAOxB,CAAC;AAIH,eAAO,MAAM,eAAe,sMAS1B,CAAC;AAIH,eAAO,MAAM,iBAAiB,sMAS5B,CAAC;AAIH,eAAO,MAAM,UAAU,0MAerB,CAAC;AAIH,eAAO,MAAM,SAAS,sLAepB,CAAC;AAIH,eAAO,MAAM,aAAa,qHAAsB,CAAC;AAEjD,eAAO,MAAM,KAAK,iMAOhB,CAAC;AAIH,eAAO,MAAM,eAAe,gLAO1B,CAAC;AAIH,eAAO,MAAM,mBAAmB,gLAO9B,CAAC;AAIH,UAAU,WAAY,SAAQ,gBAAgB;IAC5C,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,MAAM,0GAelB,CAAC;AAIF,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAClC,SAAS,GACT,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC;IACjC,aAAa,CAAC,EAAE,eAAe,CAAC,OAAO,cAAc,CAAC,CAAC;IACvD,eAAe,CAAC,EAAE,eAAe,CAAC,OAAO,cAAc,CAAC,CAAC;IACzD,iBAAiB,CAAC,EAAE,eAAe,CAAC,OAAO,cAAc,CAAC,CAAC;IAC3D,UAAU,CAAC,EAAE,eAAe,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACxD,SAAS,CAAC,EAAE,eAAe,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAC1D,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,aAAa,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,eAAe,CAAC,OAAO,2BAA2B,CAAC,CAAC;IAC/D,eAAe,CAAC,EAAE,eAAe,CAAC,OAAO,wBAAwB,CAAC,CAAC;IACnE,mBAAmB,CAAC,EAAE,eAAe,CAAC,OAAO,wBAAwB,CAAC,CAAC;IACvE,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;CACnE,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Button, DropdownMenu, Avatar as RadixAvatar, Badge as RadixBadge, IconButton as RadixIconButton, TextField as RadixTextField, } from "@radix-ui/themes";
4
+ import { forwardRef } from "react";
5
+ import { useElement } from "./widgets-context";
6
+ export const PrimaryButton = forwardRef((props, ref) => {
7
+ const element = useElement("primaryButton");
8
+ return _jsx(Button, { ref: ref, variant: "solid", ...props, ...element });
9
+ });
10
+ PrimaryButton.displayName = "PrimaryButton";
11
+ export const SecondaryButton = forwardRef((props, ref) => {
12
+ const element = useElement("secondaryButton");
13
+ return (_jsx(Button, { ref: ref, variant: "surface", color: "gray", ...props, ...element }));
14
+ });
15
+ SecondaryButton.displayName = "SecondaryButton";
16
+ export const DestructiveButton = forwardRef((props, ref) => {
17
+ const element = useElement("destructiveButton");
18
+ return (_jsx(Button, { ref: ref, variant: "solid", color: "red", ...props, ...element }));
19
+ });
20
+ DestructiveButton.displayName = "DestructiveButton";
21
+ export const IconButton = forwardRef((props, ref) => {
22
+ const element = useElement("iconButton");
23
+ return (_jsx(RadixIconButton, { ref: ref, variant: "ghost", color: "gray", ...props, ...element }));
24
+ });
25
+ IconButton.displayName = "IconButton";
26
+ export const TextField = forwardRef((props, ref) => {
27
+ const element = useElement("textfield");
28
+ return (_jsx(RadixTextField.Root, { "data-1p-ignore": true, ref: ref, variant: "surface", ...props, ...element }));
29
+ });
30
+ TextField.displayName = "TextField";
31
+ export const TextFieldSlot = RadixTextField.Slot;
32
+ export const Badge = forwardRef((props, ref) => {
33
+ const element = useElement("badge");
34
+ return _jsx(RadixBadge, { ref: ref, ...element, ...props });
35
+ });
36
+ Badge.displayName = "Badge";
37
+ export const PrimaryMenuItem = forwardRef((props, ref) => {
38
+ const element = useElement("primaryMenuItem");
39
+ return _jsx(DropdownMenu.Item, { ref: ref, ...props, ...element });
40
+ });
41
+ PrimaryMenuItem.displayName = "PrimaryMenuItem";
42
+ export const DestructiveMenuItem = forwardRef((props, ref) => {
43
+ const element = useElement("destructiveMenuItem");
44
+ return _jsx(DropdownMenu.Item, { ref: ref, color: "red", ...props, ...element });
45
+ });
46
+ DestructiveMenuItem.displayName = "DestructiveMenuItem";
47
+ export const Avatar = forwardRef(({ dim, ...props }, ref) => {
48
+ const element = useElement("avatar");
49
+ return (_jsx(RadixAvatar, { ref: ref, color: "gray", ...props, ...element,
50
+ // TODO: use CSS var instead of hard-coded value for opacity
51
+ style: dim ? { opacity: 0.6, ...props.style } : props.style }));
52
+ });
53
+ Avatar.displayName = "Avatar";
54
+ //# sourceMappingURL=elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.js","sourceRoot":"","sources":["../../../src/lib/elements.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ interface InviteUserDialogProps {
3
+ children?: React.ReactNode;
4
+ }
5
+ export declare const InviteUserDialog: ({ children }: InviteUserDialogProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=invite-user-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite-user-dialog.d.ts","sourceRoot":"","sources":["../../../src/lib/invite-user-dialog.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AASD,eAAO,MAAM,gBAAgB,iBAAkB,qBAAqB,4CAoJnE,CAAC"}