@better-auth-ui/react 1.6.8 → 1.6.10

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 (233) hide show
  1. package/dist/components/auth/auth-context.d.ts +3 -0
  2. package/dist/components/auth/email/email-localization.d.ts +11 -3
  3. package/dist/components/auth/email/index.d.ts +1 -0
  4. package/dist/components/auth/email/organization-invitation.d.ts +121 -0
  5. package/dist/components/mutation-invalidator.d.ts +1 -0
  6. package/dist/email.js +1348 -11
  7. package/dist/hooks/auth/use-authenticate.d.ts +1 -1
  8. package/dist/hooks/auth/use-user.d.ts +12 -12
  9. package/dist/hooks/use-auth-query.d.ts +1 -1
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.js +2469 -79
  12. package/dist/lib/auth-client.d.ts +4 -1
  13. package/dist/lib/auth-plugin.d.ts +16 -0
  14. package/dist/lib/auth-server.d.ts +8 -1
  15. package/dist/lib/settings-tab.d.ts +19 -0
  16. package/dist/mutations/api-key/create-api-key-mutation.d.ts +6 -4
  17. package/dist/mutations/api-key/delete-api-key-mutation.d.ts +7 -3
  18. package/dist/mutations/auth/sign-in-email-mutation.d.ts +5 -5
  19. package/dist/mutations/auth/sign-out-mutation.d.ts +6 -4
  20. package/dist/mutations/auth/sign-up-email-mutation.d.ts +5 -5
  21. package/dist/mutations/multi-session/revoke-multi-session-mutation.d.ts +5 -5
  22. package/dist/mutations/multi-session/set-active-session-mutation.d.ts +5 -6
  23. package/dist/mutations/organization/accept-invitation-mutation.d.ts +43 -0
  24. package/dist/mutations/organization/cancel-invitation-mutation.d.ts +25 -0
  25. package/dist/mutations/organization/check-slug-mutation.d.ts +21 -0
  26. package/dist/mutations/organization/create-organization-mutation.d.ts +39 -0
  27. package/dist/mutations/organization/delete-organization-mutation.d.ts +21 -0
  28. package/dist/mutations/organization/index.d.ts +12 -0
  29. package/dist/mutations/organization/invite-member-mutation.d.ts +43 -0
  30. package/dist/mutations/organization/leave-organization-mutation.d.ts +65 -0
  31. package/dist/mutations/organization/reject-invitation-mutation.d.ts +31 -0
  32. package/dist/mutations/organization/remove-member-mutation.d.ts +35 -0
  33. package/dist/mutations/organization/set-active-organization-mutation.d.ts +71 -0
  34. package/dist/mutations/organization/update-member-role-mutation.d.ts +31 -0
  35. package/dist/mutations/organization/update-organization-mutation.d.ts +21 -0
  36. package/dist/mutations/passkey/add-passkey-mutation.d.ts +5 -5
  37. package/dist/mutations/passkey/delete-passkey-mutation.d.ts +5 -5
  38. package/dist/mutations/passkey/sign-in-passkey-mutation.d.ts +5 -5
  39. package/dist/mutations/settings/change-email-mutation.d.ts +6 -5
  40. package/dist/mutations/settings/revoke-session-mutation.d.ts +5 -5
  41. package/dist/mutations/settings/unlink-account-mutation.d.ts +5 -5
  42. package/dist/mutations/settings/update-user-mutation.d.ts +5 -5
  43. package/dist/mutations/username/sign-in-username-mutation.d.ts +5 -5
  44. package/dist/plugins/captcha-plugin.d.ts +2 -2
  45. package/dist/plugins.js +27 -2
  46. package/dist/queries/api-key/list-api-keys-query.d.ts +17 -8
  47. package/dist/queries/auth/session-query.d.ts +1 -1
  48. package/dist/queries/multi-session/list-device-sessions-query.d.ts +5 -5
  49. package/dist/queries/organization/active-organization-query.d.ts +39 -0
  50. package/dist/queries/organization/full-organization-query.d.ts +37 -0
  51. package/dist/queries/organization/has-permission-query.d.ts +21 -0
  52. package/dist/queries/organization/index.d.ts +7 -0
  53. package/dist/queries/organization/list-invitations-query.d.ts +29 -0
  54. package/dist/queries/organization/list-members-query.d.ts +61 -0
  55. package/dist/queries/organization/list-organizations-query.d.ts +22 -0
  56. package/dist/queries/organization/list-user-invitations-query.d.ts +29 -0
  57. package/dist/queries/passkey/list-passkeys-query.d.ts +5 -5
  58. package/dist/queries/settings/account-info-query.d.ts +1 -1
  59. package/dist/queries/settings/list-accounts-query.d.ts +1 -1
  60. package/dist/queries/settings/list-sessions-query.d.ts +1 -1
  61. package/dist/server/queries/api-key/list-api-keys-query.d.ts +83 -0
  62. package/dist/server/queries/multi-session/list-device-sessions-query.d.ts +4 -4
  63. package/dist/server/queries/organization/active-organization-query.d.ts +61 -0
  64. package/dist/server/queries/organization/full-organization-query.d.ts +42 -0
  65. package/dist/server/queries/organization/has-permission-query.d.ts +66 -0
  66. package/dist/server/queries/organization/list-invitations-query.d.ts +34 -0
  67. package/dist/server/queries/organization/list-members-query.d.ts +66 -0
  68. package/dist/server/queries/organization/list-organizations-query.d.ts +27 -0
  69. package/dist/server/queries/organization/list-user-invitations-query.d.ts +34 -0
  70. package/dist/server/queries/passkey/list-passkeys-query.d.ts +4 -4
  71. package/dist/server.d.ts +8 -0
  72. package/dist/server.js +131 -7
  73. package/dist/use-auth-plugin-ClcP84Uz.js +80 -0
  74. package/package.json +19 -16
  75. package/src/components/auth/auth-context.tsx +7 -0
  76. package/src/components/auth/auth-provider.tsx +19 -31
  77. package/src/components/auth/email/email-localization.tsx +5 -3
  78. package/src/components/auth/email/index.ts +1 -0
  79. package/src/components/auth/email/organization-invitation.tsx +454 -0
  80. package/src/components/mutation-invalidator.tsx +67 -0
  81. package/src/index.ts +3 -0
  82. package/src/lib/auth-client.ts +7 -0
  83. package/src/lib/auth-plugin.ts +17 -0
  84. package/src/lib/auth-server.ts +17 -1
  85. package/src/lib/settings-tab.ts +21 -0
  86. package/src/mutations/api-key/create-api-key-mutation.ts +34 -19
  87. package/src/mutations/api-key/delete-api-key-mutation.ts +36 -19
  88. package/src/mutations/auth/sign-in-email-mutation.ts +18 -22
  89. package/src/mutations/auth/sign-out-mutation.ts +19 -13
  90. package/src/mutations/auth/sign-up-email-mutation.ts +18 -22
  91. package/src/mutations/multi-session/revoke-multi-session-mutation.ts +31 -20
  92. package/src/mutations/multi-session/set-active-session-mutation.ts +25 -44
  93. package/src/mutations/organization/accept-invitation-mutation.ts +71 -0
  94. package/src/mutations/organization/cancel-invitation-mutation.ts +67 -0
  95. package/src/mutations/organization/check-slug-mutation.ts +55 -0
  96. package/src/mutations/organization/create-organization-mutation.ts +71 -0
  97. package/src/mutations/organization/delete-organization-mutation.ts +71 -0
  98. package/src/mutations/organization/index.ts +12 -0
  99. package/src/mutations/organization/invite-member-mutation.ts +81 -0
  100. package/src/mutations/organization/leave-organization-mutation.ts +74 -0
  101. package/src/mutations/organization/reject-invitation-mutation.ts +64 -0
  102. package/src/mutations/organization/remove-member-mutation.ts +67 -0
  103. package/src/mutations/organization/set-active-organization-mutation.ts +142 -0
  104. package/src/mutations/organization/update-member-role-mutation.ts +81 -0
  105. package/src/mutations/organization/update-organization-mutation.ts +84 -0
  106. package/src/mutations/passkey/add-passkey-mutation.ts +28 -17
  107. package/src/mutations/passkey/delete-passkey-mutation.ts +27 -17
  108. package/src/mutations/passkey/sign-in-passkey-mutation.ts +18 -21
  109. package/src/mutations/settings/change-email-mutation.ts +22 -18
  110. package/src/mutations/settings/delete-user-mutation.ts +2 -2
  111. package/src/mutations/settings/revoke-session-mutation.ts +24 -19
  112. package/src/mutations/settings/unlink-account-mutation.ts +24 -17
  113. package/src/mutations/settings/update-user-mutation.ts +18 -30
  114. package/src/mutations/username/is-username-available-mutation.ts +2 -2
  115. package/src/mutations/username/sign-in-username-mutation.ts +20 -23
  116. package/src/queries/api-key/list-api-keys-query.ts +20 -8
  117. package/src/queries/multi-session/list-device-sessions-query.ts +2 -2
  118. package/src/queries/organization/active-organization-query.ts +140 -0
  119. package/src/queries/organization/full-organization-query.ts +113 -0
  120. package/src/queries/organization/has-permission-query.ts +124 -0
  121. package/src/queries/organization/index.ts +7 -0
  122. package/src/queries/organization/list-invitations-query.ts +133 -0
  123. package/src/queries/organization/list-members-query.ts +133 -0
  124. package/src/queries/organization/list-organizations-query.ts +122 -0
  125. package/src/queries/organization/list-user-invitations-query.ts +122 -0
  126. package/src/queries/passkey/list-passkeys-query.ts +2 -2
  127. package/src/server/queries/api-key/list-api-keys-query.ts +94 -0
  128. package/src/server/queries/multi-session/list-device-sessions-query.ts +2 -2
  129. package/src/server/queries/organization/active-organization-query.ts +92 -0
  130. package/src/server/queries/organization/full-organization-query.ts +64 -0
  131. package/src/server/queries/organization/has-permission-query.ts +66 -0
  132. package/src/server/queries/organization/list-invitations-query.ts +81 -0
  133. package/src/server/queries/organization/list-members-query.ts +75 -0
  134. package/src/server/queries/organization/list-organizations-query.ts +67 -0
  135. package/src/server/queries/organization/list-user-invitations-query.ts +68 -0
  136. package/src/server/queries/passkey/list-passkeys-query.ts +2 -2
  137. package/src/server.ts +8 -0
  138. package/dist/components/auth/auth-provider.js +0 -44
  139. package/dist/components/auth/email/email-changed.js +0 -156
  140. package/dist/components/auth/email/email-localization.js +0 -19
  141. package/dist/components/auth/email/email-styles.js +0 -104
  142. package/dist/components/auth/email/email-verification.js +0 -140
  143. package/dist/components/auth/email/index.js +0 -9
  144. package/dist/components/auth/email/magic-link.js +0 -141
  145. package/dist/components/auth/email/new-device.js +0 -223
  146. package/dist/components/auth/email/otp-email.js +0 -129
  147. package/dist/components/auth/email/password-changed.js +0 -159
  148. package/dist/components/auth/email/reset-password.js +0 -140
  149. package/dist/components/auth/fetch-options-provider.js +0 -30
  150. package/dist/components/icons/apple.js +0 -17
  151. package/dist/components/icons/atlassian.js +0 -39
  152. package/dist/components/icons/cognito.js +0 -20
  153. package/dist/components/icons/discord.js +0 -17
  154. package/dist/components/icons/dropbox.js +0 -17
  155. package/dist/components/icons/facebook.js +0 -20
  156. package/dist/components/icons/figma.js +0 -35
  157. package/dist/components/icons/github.js +0 -17
  158. package/dist/components/icons/gitlab.js +0 -31
  159. package/dist/components/icons/google.js +0 -40
  160. package/dist/components/icons/huggingface.js +0 -39
  161. package/dist/components/icons/index.js +0 -35
  162. package/dist/components/icons/kakao.js +0 -17
  163. package/dist/components/icons/kick.js +0 -21
  164. package/dist/components/icons/line.js +0 -17
  165. package/dist/components/icons/linear.js +0 -17
  166. package/dist/components/icons/linkedin.js +0 -34
  167. package/dist/components/icons/microsoft.js +0 -31
  168. package/dist/components/icons/naver.js +0 -17
  169. package/dist/components/icons/notion.js +0 -17
  170. package/dist/components/icons/paybin.js +0 -33
  171. package/dist/components/icons/paypal.js +0 -31
  172. package/dist/components/icons/polar.js +0 -25
  173. package/dist/components/icons/railway.js +0 -17
  174. package/dist/components/icons/reddit.js +0 -22
  175. package/dist/components/icons/roblox.js +0 -18
  176. package/dist/components/icons/salesforce.js +0 -17
  177. package/dist/components/icons/slack.js +0 -31
  178. package/dist/components/icons/spotify.js +0 -17
  179. package/dist/components/icons/tiktok.js +0 -24
  180. package/dist/components/icons/twitch.js +0 -44
  181. package/dist/components/icons/vercel.js +0 -17
  182. package/dist/components/icons/vk.js +0 -17
  183. package/dist/components/icons/wechat.js +0 -17
  184. package/dist/components/icons/x.js +0 -17
  185. package/dist/components/icons/zoom.js +0 -70
  186. package/dist/components/settings/account/theme-preview.js +0 -289
  187. package/dist/hooks/auth/use-authenticate.js +0 -23
  188. package/dist/hooks/auth/use-user.js +0 -11
  189. package/dist/hooks/use-auth-mutation.js +0 -11
  190. package/dist/hooks/use-auth-plugin.js +0 -10
  191. package/dist/hooks/use-auth-query.js +0 -15
  192. package/dist/lib/provider-icons.js +0 -76
  193. package/dist/lib/utils.js +0 -8
  194. package/dist/mutations/api-key/create-api-key-mutation.js +0 -29
  195. package/dist/mutations/api-key/delete-api-key-mutation.js +0 -29
  196. package/dist/mutations/auth/request-password-reset-mutation.js +0 -24
  197. package/dist/mutations/auth/reset-password-mutation.js +0 -24
  198. package/dist/mutations/auth/send-verification-email-mutation.js +0 -24
  199. package/dist/mutations/auth/sign-in-email-mutation.js +0 -29
  200. package/dist/mutations/auth/sign-in-social-mutation.js +0 -24
  201. package/dist/mutations/auth/sign-out-mutation.js +0 -28
  202. package/dist/mutations/auth/sign-up-email-mutation.js +0 -29
  203. package/dist/mutations/auth-mutation-options.js +0 -19
  204. package/dist/mutations/magic-link/sign-in-magic-link-mutation.js +0 -24
  205. package/dist/mutations/multi-session/revoke-multi-session-mutation.js +0 -29
  206. package/dist/mutations/multi-session/set-active-session-mutation.js +0 -31
  207. package/dist/mutations/passkey/add-passkey-mutation.js +0 -29
  208. package/dist/mutations/passkey/delete-passkey-mutation.js +0 -29
  209. package/dist/mutations/passkey/sign-in-passkey-mutation.js +0 -29
  210. package/dist/mutations/settings/change-email-mutation.js +0 -29
  211. package/dist/mutations/settings/change-password-mutation.js +0 -24
  212. package/dist/mutations/settings/delete-user-mutation.js +0 -24
  213. package/dist/mutations/settings/link-social-mutation.js +0 -24
  214. package/dist/mutations/settings/revoke-session-mutation.js +0 -29
  215. package/dist/mutations/settings/unlink-account-mutation.js +0 -29
  216. package/dist/mutations/settings/update-user-mutation.js +0 -35
  217. package/dist/mutations/username/is-username-available-mutation.js +0 -24
  218. package/dist/mutations/username/sign-in-username-mutation.js +0 -29
  219. package/dist/plugins/captcha-plugin.js +0 -29
  220. package/dist/queries/api-key/list-api-keys-query.js +0 -31
  221. package/dist/queries/auth/session-query.js +0 -30
  222. package/dist/queries/auth-query-options.js +0 -17
  223. package/dist/queries/multi-session/list-device-sessions-query.js +0 -31
  224. package/dist/queries/passkey/list-passkeys-query.js +0 -31
  225. package/dist/queries/settings/account-info-query.js +0 -31
  226. package/dist/queries/settings/list-accounts-query.js +0 -31
  227. package/dist/queries/settings/list-sessions-query.js +0 -31
  228. package/dist/server/queries/auth/session-query.js +0 -13
  229. package/dist/server/queries/multi-session/list-device-sessions-query.js +0 -12
  230. package/dist/server/queries/passkey/list-passkeys-query.js +0 -12
  231. package/dist/server/queries/settings/account-info-query.js +0 -12
  232. package/dist/server/queries/settings/list-accounts-query.js +0 -12
  233. package/dist/server/queries/settings/list-sessions-query.js +0 -12
@@ -0,0 +1,67 @@
1
+ import {
2
+ organizationMutationKeys,
3
+ organizationQueryKeys
4
+ } from "@better-auth-ui/core/plugins"
5
+ import {
6
+ mutationOptions,
7
+ type QueryClient,
8
+ useMutation
9
+ } from "@tanstack/react-query"
10
+ import type { BetterFetchError } from "better-auth/react"
11
+
12
+ import type { OrganizationAuthClient } from "../../lib/auth-client"
13
+ import { useSession } from "../../queries/auth/session-query"
14
+
15
+ export type CancelInvitationParams<TAuthClient extends OrganizationAuthClient> =
16
+ Parameters<TAuthClient["organization"]["cancelInvitation"]>[0]
17
+
18
+ export type CancelInvitationOptions<
19
+ TAuthClient extends OrganizationAuthClient
20
+ > = Omit<
21
+ ReturnType<typeof cancelInvitationOptions<TAuthClient>>,
22
+ "mutationKey" | "mutationFn" | "meta"
23
+ >
24
+
25
+ export function cancelInvitationOptions<
26
+ TAuthClient extends OrganizationAuthClient
27
+ >(authClient: TAuthClient) {
28
+ const mutationKey = organizationMutationKeys.cancelInvitation
29
+
30
+ const mutationFn = (params: CancelInvitationParams<TAuthClient>) =>
31
+ authClient.organization.cancelInvitation({
32
+ ...params,
33
+ fetchOptions: { ...params?.fetchOptions, throw: true }
34
+ })
35
+
36
+ return mutationOptions<
37
+ Awaited<ReturnType<typeof mutationFn>>,
38
+ BetterFetchError,
39
+ Parameters<typeof mutationFn>[0]
40
+ >({
41
+ mutationKey,
42
+ mutationFn
43
+ })
44
+ }
45
+
46
+ export function useCancelInvitation<TAuthClient extends OrganizationAuthClient>(
47
+ authClient: TAuthClient,
48
+ options?: CancelInvitationOptions<TAuthClient>,
49
+ queryClient?: QueryClient
50
+ ) {
51
+ const { data: session } = useSession(authClient, undefined, queryClient)
52
+ const userId = session?.user.id
53
+
54
+ return useMutation(
55
+ {
56
+ ...cancelInvitationOptions(authClient),
57
+ ...options,
58
+ meta: {
59
+ awaits: [
60
+ organizationQueryKeys.invitations.all(userId),
61
+ organizationQueryKeys.fullDetails(userId)
62
+ ]
63
+ }
64
+ },
65
+ queryClient
66
+ )
67
+ }
@@ -0,0 +1,55 @@
1
+ import { organizationMutationKeys } from "@better-auth-ui/core/plugins"
2
+ import { mutationOptions, useMutation } from "@tanstack/react-query"
3
+ import type { BetterFetchError } from "better-auth/react"
4
+
5
+ import type { OrganizationAuthClient } from "../../lib/auth-client"
6
+
7
+ export type CheckSlugParams<TAuthClient extends OrganizationAuthClient> =
8
+ Parameters<TAuthClient["organization"]["checkSlug"]>[0]
9
+
10
+ export type CheckSlugOptions<TAuthClient extends OrganizationAuthClient> = Omit<
11
+ ReturnType<typeof checkSlugOptions<TAuthClient>>,
12
+ "mutationKey" | "mutationFn"
13
+ >
14
+
15
+ /**
16
+ * Mutation options factory for checking organization slug availability.
17
+ *
18
+ * @param authClient - The Better Auth client.
19
+ */
20
+ export function checkSlugOptions<TAuthClient extends OrganizationAuthClient>(
21
+ authClient: TAuthClient
22
+ ) {
23
+ const mutationKey = organizationMutationKeys.checkSlug
24
+
25
+ const mutationFn = (params: CheckSlugParams<TAuthClient>) =>
26
+ authClient.organization.checkSlug({
27
+ ...params,
28
+ fetchOptions: { ...params?.fetchOptions, throw: true }
29
+ })
30
+
31
+ return mutationOptions<
32
+ Awaited<ReturnType<typeof mutationFn>>,
33
+ BetterFetchError,
34
+ Parameters<typeof mutationFn>[0]
35
+ >({
36
+ mutationKey,
37
+ mutationFn
38
+ })
39
+ }
40
+
41
+ /**
42
+ * Create a mutation for checking whether an organization slug is available.
43
+ *
44
+ * @param authClient - The Better Auth client with the organization plugin.
45
+ * @param options - React Query options forwarded to `useMutation`.
46
+ */
47
+ export function useCheckSlug<TAuthClient extends OrganizationAuthClient>(
48
+ authClient: TAuthClient,
49
+ options?: CheckSlugOptions<TAuthClient>
50
+ ) {
51
+ return useMutation({
52
+ ...checkSlugOptions(authClient),
53
+ ...options
54
+ })
55
+ }
@@ -0,0 +1,71 @@
1
+ import {
2
+ organizationMutationKeys,
3
+ organizationQueryKeys
4
+ } from "@better-auth-ui/core/plugins"
5
+ import {
6
+ mutationOptions,
7
+ type QueryClient,
8
+ useMutation
9
+ } from "@tanstack/react-query"
10
+ import type { BetterFetchError } from "better-auth/react"
11
+
12
+ import type { OrganizationAuthClient } from "../../lib/auth-client"
13
+ import { useSession } from "../../queries/auth/session-query"
14
+
15
+ export type CreateOrganizationParams<
16
+ TAuthClient extends OrganizationAuthClient
17
+ > = Parameters<TAuthClient["organization"]["create"]>[0]
18
+
19
+ export type CreateOrganizationOptions<
20
+ TAuthClient extends OrganizationAuthClient
21
+ > = Omit<
22
+ ReturnType<typeof createOrganizationOptions<TAuthClient>>,
23
+ "mutationKey" | "mutationFn" | "meta"
24
+ >
25
+
26
+ export function createOrganizationOptions<
27
+ TAuthClient extends OrganizationAuthClient
28
+ >(authClient: TAuthClient) {
29
+ const mutationKey = organizationMutationKeys.create
30
+
31
+ const mutationFn = (params: CreateOrganizationParams<TAuthClient>) =>
32
+ authClient.organization.create({
33
+ ...params,
34
+ fetchOptions: { ...params?.fetchOptions, throw: true }
35
+ })
36
+
37
+ return mutationOptions<
38
+ Awaited<ReturnType<typeof mutationFn>>,
39
+ BetterFetchError,
40
+ Parameters<typeof mutationFn>[0]
41
+ >({
42
+ mutationKey,
43
+ mutationFn
44
+ })
45
+ }
46
+
47
+ export function useCreateOrganization<
48
+ TAuthClient extends OrganizationAuthClient
49
+ >(
50
+ authClient: TAuthClient,
51
+ options?: CreateOrganizationOptions<TAuthClient>,
52
+ queryClient?: QueryClient
53
+ ) {
54
+ const { data: session } = useSession(authClient, undefined, queryClient)
55
+ const userId = session?.user.id
56
+
57
+ return useMutation(
58
+ {
59
+ ...createOrganizationOptions(authClient),
60
+ ...options,
61
+ meta: {
62
+ awaits: [organizationQueryKeys.lists(userId)],
63
+ invalidates: [
64
+ organizationQueryKeys.fullDetails(userId),
65
+ organizationQueryKeys.activeOrganizations(userId)
66
+ ]
67
+ }
68
+ },
69
+ queryClient
70
+ )
71
+ }
@@ -0,0 +1,71 @@
1
+ import {
2
+ organizationMutationKeys,
3
+ organizationQueryKeys
4
+ } from "@better-auth-ui/core/plugins"
5
+ import {
6
+ mutationOptions,
7
+ type QueryClient,
8
+ useMutation
9
+ } from "@tanstack/react-query"
10
+ import type { BetterFetchError } from "better-auth/react"
11
+
12
+ import type { OrganizationAuthClient } from "../../lib/auth-client"
13
+ import { useSession } from "../../queries/auth/session-query"
14
+
15
+ export type DeleteOrganizationParams<
16
+ TAuthClient extends OrganizationAuthClient
17
+ > = Parameters<TAuthClient["organization"]["delete"]>[0]
18
+
19
+ export type DeleteOrganizationOptions<
20
+ TAuthClient extends OrganizationAuthClient
21
+ > = Omit<
22
+ ReturnType<typeof deleteOrganizationOptions<TAuthClient>>,
23
+ "mutationKey" | "mutationFn" | "meta"
24
+ >
25
+
26
+ export function deleteOrganizationOptions<
27
+ TAuthClient extends OrganizationAuthClient
28
+ >(authClient: TAuthClient) {
29
+ const mutationKey = organizationMutationKeys.delete
30
+
31
+ const mutationFn = (params: DeleteOrganizationParams<TAuthClient>) =>
32
+ authClient.organization.delete({
33
+ ...params,
34
+ fetchOptions: { ...params?.fetchOptions, throw: true }
35
+ })
36
+
37
+ return mutationOptions<
38
+ Awaited<ReturnType<typeof mutationFn>>,
39
+ BetterFetchError,
40
+ Parameters<typeof mutationFn>[0]
41
+ >({
42
+ mutationKey,
43
+ mutationFn
44
+ })
45
+ }
46
+
47
+ export function useDeleteOrganization<
48
+ TAuthClient extends OrganizationAuthClient
49
+ >(
50
+ authClient: TAuthClient,
51
+ options?: DeleteOrganizationOptions<TAuthClient>,
52
+ queryClient?: QueryClient
53
+ ) {
54
+ const { data: session } = useSession(authClient, undefined, queryClient)
55
+ const userId = session?.user.id
56
+
57
+ return useMutation(
58
+ {
59
+ ...deleteOrganizationOptions(authClient),
60
+ ...options,
61
+ meta: {
62
+ awaits: [organizationQueryKeys.lists(userId)],
63
+ invalidates: [
64
+ organizationQueryKeys.fullDetails(userId),
65
+ organizationQueryKeys.activeOrganizations(userId)
66
+ ]
67
+ }
68
+ },
69
+ queryClient
70
+ )
71
+ }
@@ -0,0 +1,12 @@
1
+ export * from "./accept-invitation-mutation"
2
+ export * from "./cancel-invitation-mutation"
3
+ export * from "./check-slug-mutation"
4
+ export * from "./create-organization-mutation"
5
+ export * from "./delete-organization-mutation"
6
+ export * from "./invite-member-mutation"
7
+ export * from "./leave-organization-mutation"
8
+ export * from "./reject-invitation-mutation"
9
+ export * from "./remove-member-mutation"
10
+ export * from "./set-active-organization-mutation"
11
+ export * from "./update-member-role-mutation"
12
+ export * from "./update-organization-mutation"
@@ -0,0 +1,81 @@
1
+ import {
2
+ organizationMutationKeys,
3
+ organizationQueryKeys
4
+ } from "@better-auth-ui/core/plugins"
5
+ import {
6
+ mutationOptions,
7
+ type QueryClient,
8
+ useMutation
9
+ } from "@tanstack/react-query"
10
+ import type { BetterFetchError } from "better-auth/react"
11
+
12
+ import type { OrganizationAuthClient } from "../../lib/auth-client"
13
+ import { useSession } from "../../queries/auth/session-query"
14
+ import { useActiveOrganization } from "../../queries/organization"
15
+
16
+ export type InviteMemberParams<TAuthClient extends OrganizationAuthClient> =
17
+ Parameters<TAuthClient["organization"]["inviteMember"]>[0]
18
+
19
+ export type InviteMemberOptions<TAuthClient extends OrganizationAuthClient> =
20
+ Omit<
21
+ ReturnType<typeof inviteMemberOptions<TAuthClient>>,
22
+ "mutationKey" | "mutationFn" | "meta"
23
+ >
24
+
25
+ export function inviteMemberOptions<TAuthClient extends OrganizationAuthClient>(
26
+ authClient: TAuthClient
27
+ ) {
28
+ const mutationKey = organizationMutationKeys.inviteMember
29
+
30
+ const mutationFn = (params: InviteMemberParams<TAuthClient>) =>
31
+ authClient.organization.inviteMember({
32
+ ...params,
33
+ fetchOptions: { ...params?.fetchOptions, throw: true }
34
+ })
35
+
36
+ return mutationOptions<
37
+ Awaited<ReturnType<typeof mutationFn>>,
38
+ BetterFetchError,
39
+ Parameters<typeof mutationFn>[0]
40
+ >({
41
+ mutationKey,
42
+ mutationFn
43
+ })
44
+ }
45
+
46
+ export function useInviteMember<
47
+ TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
48
+ >(
49
+ authClient: TAuthClient,
50
+ options?: InviteMemberOptions<TAuthClient>,
51
+ queryClient?: QueryClient
52
+ ) {
53
+ const { data: session } = useSession(authClient, undefined, queryClient)
54
+ const userId = session?.user.id
55
+
56
+ const { data: activeOrganization } = useActiveOrganization(
57
+ authClient,
58
+ undefined,
59
+ queryClient
60
+ )
61
+
62
+ return useMutation(
63
+ {
64
+ ...inviteMemberOptions(authClient),
65
+ ...options,
66
+ mutationFn: (params: InviteMemberParams<TAuthClient>) =>
67
+ authClient.organization.inviteMember({
68
+ ...params,
69
+ organizationId: params?.organizationId ?? activeOrganization?.id,
70
+ fetchOptions: { ...params?.fetchOptions, throw: true }
71
+ }),
72
+ meta: {
73
+ awaits: [
74
+ organizationQueryKeys.invitations.all(userId),
75
+ organizationQueryKeys.fullDetails(userId)
76
+ ]
77
+ }
78
+ },
79
+ queryClient
80
+ )
81
+ }
@@ -0,0 +1,74 @@
1
+ import {
2
+ organizationMutationKeys,
3
+ organizationQueryKeys
4
+ } from "@better-auth-ui/core/plugins"
5
+ import {
6
+ mutationOptions,
7
+ type QueryClient,
8
+ useMutation
9
+ } from "@tanstack/react-query"
10
+ import type { BetterFetchError } from "better-auth/react"
11
+
12
+ import type { OrganizationAuthClient } from "../../lib/auth-client"
13
+ import { useSession } from "../../queries/auth/session-query"
14
+
15
+ export type LeaveOrganizationParams<
16
+ TAuthClient extends OrganizationAuthClient
17
+ > = Parameters<TAuthClient["organization"]["leave"]>[0]
18
+
19
+ export type LeaveOrganizationOptions<
20
+ TAuthClient extends OrganizationAuthClient
21
+ > = Omit<
22
+ ReturnType<typeof leaveOrganizationOptions<TAuthClient>>,
23
+ "mutationKey" | "mutationFn" | "meta"
24
+ >
25
+
26
+ export function leaveOrganizationOptions<
27
+ TAuthClient extends OrganizationAuthClient
28
+ >(authClient: TAuthClient) {
29
+ const mutationKey = organizationMutationKeys.leave
30
+
31
+ const mutationFn = (params: LeaveOrganizationParams<TAuthClient>) =>
32
+ authClient.organization.leave({
33
+ ...params,
34
+ fetchOptions: { ...params?.fetchOptions, throw: true }
35
+ })
36
+
37
+ return mutationOptions<
38
+ Awaited<ReturnType<typeof mutationFn>>,
39
+ BetterFetchError,
40
+ Parameters<typeof mutationFn>[0]
41
+ >({
42
+ mutationKey,
43
+ mutationFn
44
+ })
45
+ }
46
+
47
+ export function useLeaveOrganization<
48
+ TAuthClient extends OrganizationAuthClient
49
+ >(
50
+ authClient: TAuthClient,
51
+ options?: LeaveOrganizationOptions<TAuthClient>,
52
+ queryClient?: QueryClient
53
+ ) {
54
+ const { data: session } = useSession(authClient, undefined, queryClient)
55
+ const userId = session?.user.id
56
+
57
+ return useMutation(
58
+ {
59
+ ...leaveOrganizationOptions(authClient),
60
+ ...options,
61
+ meta: {
62
+ awaits: [
63
+ organizationQueryKeys.members.all(userId),
64
+ organizationQueryKeys.fullDetails(userId)
65
+ ],
66
+ invalidates: [
67
+ organizationQueryKeys.lists(userId),
68
+ organizationQueryKeys.activeOrganizations(userId)
69
+ ]
70
+ }
71
+ },
72
+ queryClient
73
+ )
74
+ }
@@ -0,0 +1,64 @@
1
+ import {
2
+ organizationMutationKeys,
3
+ organizationQueryKeys
4
+ } from "@better-auth-ui/core/plugins"
5
+ import {
6
+ mutationOptions,
7
+ type QueryClient,
8
+ useMutation
9
+ } from "@tanstack/react-query"
10
+ import type { BetterFetchError } from "better-auth/react"
11
+
12
+ import type { OrganizationAuthClient } from "../../lib/auth-client"
13
+ import { useSession } from "../../queries/auth/session-query"
14
+
15
+ export type RejectInvitationParams<TAuthClient extends OrganizationAuthClient> =
16
+ Parameters<TAuthClient["organization"]["rejectInvitation"]>[0]
17
+
18
+ export type RejectInvitationOptions<
19
+ TAuthClient extends OrganizationAuthClient
20
+ > = Omit<
21
+ ReturnType<typeof rejectInvitationOptions<TAuthClient>>,
22
+ "mutationKey" | "mutationFn" | "meta"
23
+ >
24
+
25
+ export function rejectInvitationOptions<
26
+ TAuthClient extends OrganizationAuthClient
27
+ >(authClient: TAuthClient) {
28
+ const mutationKey = organizationMutationKeys.rejectInvitation
29
+
30
+ const mutationFn = (params: RejectInvitationParams<TAuthClient>) =>
31
+ authClient.organization.rejectInvitation({
32
+ ...params,
33
+ fetchOptions: { ...params?.fetchOptions, throw: true }
34
+ })
35
+
36
+ return mutationOptions<
37
+ Awaited<ReturnType<typeof mutationFn>>,
38
+ BetterFetchError,
39
+ Parameters<typeof mutationFn>[0]
40
+ >({
41
+ mutationKey,
42
+ mutationFn
43
+ })
44
+ }
45
+
46
+ export function useRejectInvitation<TAuthClient extends OrganizationAuthClient>(
47
+ authClient: TAuthClient,
48
+ options?: RejectInvitationOptions<TAuthClient>,
49
+ queryClient?: QueryClient
50
+ ) {
51
+ const { data: session } = useSession(authClient, undefined, queryClient)
52
+ const userId = session?.user.id
53
+
54
+ return useMutation(
55
+ {
56
+ ...rejectInvitationOptions(authClient),
57
+ ...options,
58
+ meta: {
59
+ awaits: [organizationQueryKeys.userInvitations.all(userId)]
60
+ }
61
+ },
62
+ queryClient
63
+ )
64
+ }
@@ -0,0 +1,67 @@
1
+ import {
2
+ organizationMutationKeys,
3
+ organizationQueryKeys
4
+ } from "@better-auth-ui/core/plugins"
5
+ import {
6
+ mutationOptions,
7
+ type QueryClient,
8
+ useMutation
9
+ } from "@tanstack/react-query"
10
+ import type { BetterFetchError } from "better-auth/react"
11
+
12
+ import type { OrganizationAuthClient } from "../../lib/auth-client"
13
+ import { useSession } from "../../queries/auth/session-query"
14
+
15
+ export type RemoveMemberParams<TAuthClient extends OrganizationAuthClient> =
16
+ Parameters<TAuthClient["organization"]["removeMember"]>[0]
17
+
18
+ export type RemoveMemberOptions<TAuthClient extends OrganizationAuthClient> =
19
+ Omit<
20
+ ReturnType<typeof removeMemberOptions<TAuthClient>>,
21
+ "mutationKey" | "mutationFn" | "meta"
22
+ >
23
+
24
+ export function removeMemberOptions<TAuthClient extends OrganizationAuthClient>(
25
+ authClient: TAuthClient
26
+ ) {
27
+ const mutationKey = organizationMutationKeys.removeMember
28
+
29
+ const mutationFn = (params: RemoveMemberParams<TAuthClient>) =>
30
+ authClient.organization.removeMember({
31
+ ...params,
32
+ fetchOptions: { ...params?.fetchOptions, throw: true }
33
+ })
34
+
35
+ return mutationOptions<
36
+ Awaited<ReturnType<typeof mutationFn>>,
37
+ BetterFetchError,
38
+ Parameters<typeof mutationFn>[0]
39
+ >({
40
+ mutationKey,
41
+ mutationFn
42
+ })
43
+ }
44
+
45
+ export function useRemoveMember<TAuthClient extends OrganizationAuthClient>(
46
+ authClient: TAuthClient,
47
+ options?: RemoveMemberOptions<TAuthClient>,
48
+ queryClient?: QueryClient
49
+ ) {
50
+ const { data: session } = useSession(authClient, undefined, queryClient)
51
+ const userId = session?.user.id
52
+
53
+ return useMutation(
54
+ {
55
+ ...removeMemberOptions(authClient),
56
+ ...options,
57
+ meta: {
58
+ awaits: [
59
+ organizationQueryKeys.members.all(userId),
60
+ organizationQueryKeys.fullDetails(userId)
61
+ ],
62
+ invalidates: [organizationQueryKeys.lists(userId)]
63
+ }
64
+ },
65
+ queryClient
66
+ )
67
+ }