@better-auth-ui/react 1.6.1 → 1.6.3

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 (302) hide show
  1. package/dist/components/auth/auth-provider.d.ts +4 -3
  2. package/dist/components/auth/auth-provider.js +24 -40
  3. package/dist/components/email/email-changed.d.ts +2 -2
  4. package/dist/components/email/email-changed.js +154 -68
  5. package/dist/components/email/email-localization.js +18 -23
  6. package/dist/components/email/email-styles.js +52 -77
  7. package/dist/components/email/email-verification.d.ts +2 -2
  8. package/dist/components/email/email-verification.js +138 -73
  9. package/dist/components/email/index.d.ts +9 -9
  10. package/dist/components/email/index.js +9 -9
  11. package/dist/components/email/magic-link.d.ts +2 -2
  12. package/dist/components/email/magic-link.js +139 -70
  13. package/dist/components/email/new-device.d.ts +2 -2
  14. package/dist/components/email/new-device.js +221 -88
  15. package/dist/components/email/otp-email.d.ts +2 -2
  16. package/dist/components/email/otp-email.js +127 -63
  17. package/dist/components/email/password-changed.d.ts +2 -2
  18. package/dist/components/email/password-changed.js +157 -74
  19. package/dist/components/email/reset-password.d.ts +2 -2
  20. package/dist/components/email/reset-password.js +138 -66
  21. package/dist/components/icons/apple.d.ts +1 -1
  22. package/dist/components/icons/apple.js +16 -9
  23. package/dist/components/icons/atlassian.d.ts +1 -1
  24. package/dist/components/icons/atlassian.js +38 -13
  25. package/dist/components/icons/cognito.d.ts +1 -1
  26. package/dist/components/icons/cognito.js +19 -9
  27. package/dist/components/icons/discord.d.ts +1 -1
  28. package/dist/components/icons/discord.js +16 -9
  29. package/dist/components/icons/dropbox.d.ts +1 -1
  30. package/dist/components/icons/dropbox.js +16 -9
  31. package/dist/components/icons/facebook.d.ts +1 -1
  32. package/dist/components/icons/facebook.js +19 -11
  33. package/dist/components/icons/figma.d.ts +1 -1
  34. package/dist/components/icons/figma.js +34 -12
  35. package/dist/components/icons/github.d.ts +1 -1
  36. package/dist/components/icons/github.js +16 -11
  37. package/dist/components/icons/gitlab.d.ts +1 -1
  38. package/dist/components/icons/gitlab.js +30 -9
  39. package/dist/components/icons/google.d.ts +1 -1
  40. package/dist/components/icons/google.js +39 -9
  41. package/dist/components/icons/huggingface.d.ts +1 -1
  42. package/dist/components/icons/huggingface.js +38 -9
  43. package/dist/components/icons/index.d.ts +35 -35
  44. package/dist/components/icons/index.js +35 -35
  45. package/dist/components/icons/kakao.d.ts +1 -1
  46. package/dist/components/icons/kakao.js +16 -11
  47. package/dist/components/icons/kick.d.ts +1 -1
  48. package/dist/components/icons/kick.js +20 -11
  49. package/dist/components/icons/line.d.ts +1 -1
  50. package/dist/components/icons/line.js +16 -9
  51. package/dist/components/icons/linear.d.ts +1 -1
  52. package/dist/components/icons/linear.js +16 -9
  53. package/dist/components/icons/linkedin.d.ts +1 -1
  54. package/dist/components/icons/linkedin.js +33 -9
  55. package/dist/components/icons/microsoft.d.ts +1 -1
  56. package/dist/components/icons/microsoft.js +30 -9
  57. package/dist/components/icons/naver.d.ts +1 -1
  58. package/dist/components/icons/naver.js +16 -9
  59. package/dist/components/icons/notion.d.ts +1 -1
  60. package/dist/components/icons/notion.js +16 -9
  61. package/dist/components/icons/paybin.d.ts +1 -1
  62. package/dist/components/icons/paybin.js +32 -8
  63. package/dist/components/icons/paypal.d.ts +1 -1
  64. package/dist/components/icons/paypal.js +30 -9
  65. package/dist/components/icons/polar.d.ts +1 -1
  66. package/dist/components/icons/polar.js +24 -9
  67. package/dist/components/icons/railway.d.ts +1 -1
  68. package/dist/components/icons/railway.js +16 -9
  69. package/dist/components/icons/reddit.d.ts +1 -1
  70. package/dist/components/icons/reddit.js +21 -9
  71. package/dist/components/icons/roblox.d.ts +1 -1
  72. package/dist/components/icons/roblox.js +17 -12
  73. package/dist/components/icons/salesforce.d.ts +1 -1
  74. package/dist/components/icons/salesforce.js +16 -9
  75. package/dist/components/icons/slack.d.ts +1 -1
  76. package/dist/components/icons/slack.js +30 -9
  77. package/dist/components/icons/spotify.d.ts +1 -1
  78. package/dist/components/icons/spotify.js +16 -9
  79. package/dist/components/icons/tiktok.d.ts +1 -1
  80. package/dist/components/icons/tiktok.js +23 -10
  81. package/dist/components/icons/twitch.d.ts +1 -1
  82. package/dist/components/icons/twitch.js +43 -12
  83. package/dist/components/icons/vercel.d.ts +1 -1
  84. package/dist/components/icons/vercel.js +16 -9
  85. package/dist/components/icons/vk.d.ts +1 -1
  86. package/dist/components/icons/vk.js +16 -9
  87. package/dist/components/icons/wechat.d.ts +1 -1
  88. package/dist/components/icons/wechat.js +16 -9
  89. package/dist/components/icons/x.d.ts +1 -1
  90. package/dist/components/icons/x.js +16 -9
  91. package/dist/components/icons/zoom.d.ts +1 -1
  92. package/dist/components/icons/zoom.js +69 -11
  93. package/dist/components/settings/account/theme-preview.js +286 -7
  94. package/dist/core.d.ts +1 -1
  95. package/dist/hooks/auth/use-authenticate.d.ts +30 -6
  96. package/dist/hooks/auth/use-authenticate.js +22 -27
  97. package/dist/hooks/auth/use-is-username-available.d.ts +20 -0
  98. package/dist/hooks/auth/use-is-username-available.js +13 -0
  99. package/dist/hooks/auth/use-request-password-reset.d.ts +12 -17
  100. package/dist/hooks/auth/use-request-password-reset.js +12 -13
  101. package/dist/hooks/auth/use-reset-password.d.ts +14 -31
  102. package/dist/hooks/auth/use-reset-password.js +12 -12
  103. package/dist/hooks/auth/use-send-verification-email.d.ts +11 -16
  104. package/dist/hooks/auth/use-send-verification-email.js +12 -12
  105. package/dist/hooks/auth/use-session.d.ts +31 -5
  106. package/dist/hooks/auth/use-session.js +15 -17
  107. package/dist/hooks/auth/use-sign-in-email.d.ts +12 -39
  108. package/dist/hooks/auth/use-sign-in-email.js +16 -24
  109. package/dist/hooks/auth/use-sign-in-magic-link.d.ts +15 -20
  110. package/dist/hooks/auth/use-sign-in-magic-link.js +12 -12
  111. package/dist/hooks/auth/use-sign-in-passkey.d.ts +13 -50
  112. package/dist/hooks/auth/use-sign-in-passkey.js +16 -24
  113. package/dist/hooks/auth/use-sign-in-social.d.ts +32 -62
  114. package/dist/hooks/auth/use-sign-in-social.js +12 -12
  115. package/dist/hooks/auth/use-sign-in-username.d.ts +25 -0
  116. package/dist/hooks/auth/use-sign-in-username.js +17 -0
  117. package/dist/hooks/auth/use-sign-out.d.ts +11 -12
  118. package/dist/hooks/auth/use-sign-out.js +15 -23
  119. package/dist/hooks/auth/use-sign-up-email.d.ts +178 -262
  120. package/dist/hooks/auth/use-sign-up-email.js +16 -24
  121. package/dist/hooks/auth/use-user.d.ts +63 -61
  122. package/dist/hooks/auth/use-user.js +10 -13
  123. package/dist/hooks/settings/use-account-info.d.ts +12 -12
  124. package/dist/hooks/settings/use-account-info.js +17 -24
  125. package/dist/hooks/settings/use-add-passkey.d.ts +11 -33
  126. package/dist/hooks/settings/use-add-passkey.js +16 -23
  127. package/dist/hooks/settings/use-change-email.d.ts +12 -15
  128. package/dist/hooks/settings/use-change-email.js +16 -22
  129. package/dist/hooks/settings/use-change-password.d.ts +12 -45
  130. package/dist/hooks/settings/use-change-password.js +12 -10
  131. package/dist/hooks/settings/use-delete-passkey.d.ts +11 -13
  132. package/dist/hooks/settings/use-delete-passkey.js +16 -23
  133. package/dist/hooks/settings/use-delete-user.d.ts +14 -32
  134. package/dist/hooks/settings/use-delete-user.js +12 -10
  135. package/dist/hooks/settings/use-link-social.d.ts +23 -26
  136. package/dist/hooks/settings/use-link-social.js +12 -9
  137. package/dist/hooks/settings/use-list-accounts.d.ts +10 -8
  138. package/dist/hooks/settings/use-list-accounts.js +14 -22
  139. package/dist/hooks/settings/use-list-device-sessions.d.ts +30 -7
  140. package/dist/hooks/settings/use-list-device-sessions.js +14 -21
  141. package/dist/hooks/settings/use-list-sessions.d.ts +10 -7
  142. package/dist/hooks/settings/use-list-sessions.js +14 -21
  143. package/dist/hooks/settings/use-list-user-passkeys.d.ts +9 -6
  144. package/dist/hooks/settings/use-list-user-passkeys.js +14 -21
  145. package/dist/hooks/settings/use-revoke-multi-session.d.ts +12 -12
  146. package/dist/hooks/settings/use-revoke-multi-session.js +16 -19
  147. package/dist/hooks/settings/use-revoke-session.d.ts +12 -12
  148. package/dist/hooks/settings/use-revoke-session.js +16 -20
  149. package/dist/hooks/settings/use-set-active-session.d.ts +13 -30
  150. package/dist/hooks/settings/use-set-active-session.js +19 -27
  151. package/dist/hooks/settings/use-unlink-account.d.ts +13 -13
  152. package/dist/hooks/settings/use-unlink-account.js +16 -20
  153. package/dist/hooks/settings/use-update-user.d.ts +1179 -5
  154. package/dist/hooks/settings/use-update-user.js +23 -28
  155. package/dist/hooks/use-auth-mutation.d.ts +12 -0
  156. package/dist/hooks/use-auth-mutation.js +11 -0
  157. package/dist/hooks/use-auth-query.d.ts +14 -0
  158. package/dist/hooks/use-auth-query.js +15 -0
  159. package/dist/index.d.ts +40 -36
  160. package/dist/index.js +84 -36
  161. package/dist/lib/auth-client.d.ts +1254 -1254
  162. package/dist/lib/auth-client.js +11 -11
  163. package/dist/lib/auth-config.d.ts +3 -3
  164. package/dist/lib/auth-context.d.ts +2 -2
  165. package/dist/lib/auth-context.js +5 -2
  166. package/dist/lib/provider-icons.d.ts +2 -2
  167. package/dist/lib/provider-icons.js +75 -47
  168. package/dist/lib/utils.d.ts +1 -1
  169. package/dist/lib/utils.js +7 -4
  170. package/dist/mutations/auth/is-username-available-options.d.ts +19 -0
  171. package/dist/mutations/auth/is-username-available-options.js +7 -0
  172. package/dist/mutations/auth/request-password-reset-options.d.ts +15 -0
  173. package/dist/mutations/auth/request-password-reset-options.js +7 -0
  174. package/dist/mutations/auth/reset-password-options.d.ts +17 -0
  175. package/dist/mutations/auth/reset-password-options.js +7 -0
  176. package/dist/mutations/auth/send-verification-email-options.d.ts +15 -0
  177. package/dist/mutations/auth/send-verification-email-options.js +7 -0
  178. package/dist/mutations/auth/sign-in-email-options.d.ts +23 -0
  179. package/dist/mutations/auth/sign-in-email-options.js +11 -0
  180. package/dist/mutations/auth/sign-in-magic-link-options.d.ts +23 -0
  181. package/dist/mutations/auth/sign-in-magic-link-options.js +11 -0
  182. package/dist/mutations/auth/sign-in-passkey-options.d.ts +15 -0
  183. package/dist/mutations/auth/sign-in-passkey-options.js +11 -0
  184. package/dist/mutations/auth/sign-in-social-options.d.ts +61 -0
  185. package/dist/mutations/auth/sign-in-social-options.js +11 -0
  186. package/dist/mutations/auth/sign-in-username-options.d.ts +19 -0
  187. package/dist/mutations/auth/sign-in-username-options.js +11 -0
  188. package/dist/mutations/auth/sign-out-options.d.ts +12 -0
  189. package/dist/mutations/auth/sign-out-options.js +7 -0
  190. package/dist/mutations/auth/sign-up-email-options.d.ts +1180 -0
  191. package/dist/mutations/auth/sign-up-email-options.js +11 -0
  192. package/dist/mutations/auth-mutation-options.d.ts +25 -0
  193. package/dist/mutations/auth-mutation-options.js +19 -0
  194. package/dist/mutations/settings/add-passkey-options.d.ts +15 -0
  195. package/dist/mutations/settings/add-passkey-options.js +11 -0
  196. package/dist/mutations/settings/change-email-options.d.ts +15 -0
  197. package/dist/mutations/settings/change-email-options.js +7 -0
  198. package/dist/mutations/settings/change-password-options.d.ts +17 -0
  199. package/dist/mutations/settings/change-password-options.js +7 -0
  200. package/dist/mutations/settings/delete-passkey-options.d.ts +13 -0
  201. package/dist/mutations/settings/delete-passkey-options.js +11 -0
  202. package/dist/mutations/settings/delete-user-options.d.ts +20 -0
  203. package/dist/mutations/settings/delete-user-options.js +7 -0
  204. package/dist/mutations/settings/link-social-options.d.ts +39 -0
  205. package/dist/mutations/settings/link-social-options.js +7 -0
  206. package/dist/mutations/settings/revoke-multi-session-options.d.ts +13 -0
  207. package/dist/mutations/settings/revoke-multi-session-options.js +11 -0
  208. package/dist/mutations/settings/revoke-session-options.d.ts +13 -0
  209. package/dist/mutations/settings/revoke-session-options.js +7 -0
  210. package/dist/mutations/settings/set-active-session-options.d.ts +13 -0
  211. package/dist/mutations/settings/set-active-session-options.js +11 -0
  212. package/dist/mutations/settings/unlink-account-options.d.ts +15 -0
  213. package/dist/mutations/settings/unlink-account-options.js +7 -0
  214. package/dist/mutations/settings/update-user-options.d.ts +1182 -0
  215. package/dist/mutations/settings/update-user-options.js +7 -0
  216. package/dist/queries/auth/session-options.d.ts +110 -0
  217. package/dist/queries/auth/session-options.js +7 -0
  218. package/dist/queries/auth-query-options.d.ts +29 -0
  219. package/dist/queries/auth-query-options.js +17 -0
  220. package/dist/queries/settings/account-info-options.d.ts +32 -0
  221. package/dist/queries/settings/account-info-options.js +12 -0
  222. package/dist/queries/settings/list-accounts-options.d.ts +53 -0
  223. package/dist/queries/settings/list-accounts-options.js +12 -0
  224. package/dist/queries/settings/list-device-sessions-options.d.ts +99 -0
  225. package/dist/queries/settings/list-device-sessions-options.js +12 -0
  226. package/dist/queries/settings/list-sessions-options.d.ts +54 -0
  227. package/dist/queries/settings/list-sessions-options.js +12 -0
  228. package/dist/queries/settings/list-user-passkeys-options.d.ts +18 -0
  229. package/dist/queries/settings/list-user-passkeys-options.js +12 -0
  230. package/package.json +11 -11
  231. package/src/components/auth/auth-provider.tsx +4 -6
  232. package/src/hooks/auth/use-authenticate.ts +8 -9
  233. package/src/hooks/auth/use-is-username-available.ts +31 -0
  234. package/src/hooks/auth/use-request-password-reset.ts +20 -11
  235. package/src/hooks/auth/use-reset-password.ts +20 -12
  236. package/src/hooks/auth/use-send-verification-email.ts +19 -11
  237. package/src/hooks/auth/use-session.ts +22 -17
  238. package/src/hooks/auth/use-sign-in-email.ts +24 -19
  239. package/src/hooks/auth/use-sign-in-magic-link.ts +19 -13
  240. package/src/hooks/auth/use-sign-in-passkey.ts +24 -18
  241. package/src/hooks/auth/use-sign-in-social.ts +19 -11
  242. package/src/hooks/auth/use-sign-in-username.ts +40 -0
  243. package/src/hooks/auth/use-sign-out.ts +20 -20
  244. package/src/hooks/auth/use-sign-up-email.ts +25 -21
  245. package/src/hooks/auth/use-user.ts +7 -9
  246. package/src/hooks/settings/use-account-info.ts +31 -21
  247. package/src/hooks/settings/use-add-passkey.ts +22 -17
  248. package/src/hooks/settings/use-change-email.ts +24 -20
  249. package/src/hooks/settings/use-change-password.ts +19 -11
  250. package/src/hooks/settings/use-delete-passkey.ts +21 -16
  251. package/src/hooks/settings/use-delete-user.ts +19 -11
  252. package/src/hooks/settings/use-link-social.ts +20 -10
  253. package/src/hooks/settings/use-list-accounts.ts +28 -16
  254. package/src/hooks/settings/use-list-device-sessions.ts +29 -22
  255. package/src/hooks/settings/use-list-sessions.ts +28 -15
  256. package/src/hooks/settings/use-list-user-passkeys.ts +28 -17
  257. package/src/hooks/settings/use-revoke-multi-session.ts +28 -19
  258. package/src/hooks/settings/use-revoke-session.ts +26 -18
  259. package/src/hooks/settings/use-set-active-session.ts +40 -28
  260. package/src/hooks/settings/use-unlink-account.ts +23 -17
  261. package/src/hooks/settings/use-update-user.ts +33 -27
  262. package/src/hooks/use-auth-mutation.ts +29 -0
  263. package/src/hooks/use-auth-query.ts +36 -0
  264. package/src/index.ts +4 -0
  265. package/src/lib/auth-config.ts +1 -1
  266. package/src/mutations/auth/is-username-available-options.ts +18 -0
  267. package/src/mutations/auth/request-password-reset-options.ts +14 -0
  268. package/src/mutations/auth/reset-password-options.ts +14 -0
  269. package/src/mutations/auth/send-verification-email-options.ts +14 -0
  270. package/src/mutations/auth/sign-in-email-options.ts +19 -0
  271. package/src/mutations/auth/sign-in-magic-link-options.ts +15 -0
  272. package/src/mutations/auth/sign-in-passkey-options.ts +15 -0
  273. package/src/mutations/auth/sign-in-social-options.ts +19 -0
  274. package/src/mutations/auth/sign-in-username-options.ts +15 -0
  275. package/src/mutations/auth/sign-out-options.ts +11 -0
  276. package/src/mutations/auth/sign-up-email-options.ts +15 -0
  277. package/src/mutations/auth-mutation-options.ts +49 -0
  278. package/src/mutations/settings/add-passkey-options.ts +15 -0
  279. package/src/mutations/settings/change-email-options.ts +11 -0
  280. package/src/mutations/settings/change-password-options.ts +14 -0
  281. package/src/mutations/settings/delete-passkey-options.ts +15 -0
  282. package/src/mutations/settings/delete-user-options.ts +11 -0
  283. package/src/mutations/settings/link-social-options.ts +11 -0
  284. package/src/mutations/settings/revoke-multi-session-options.ts +15 -0
  285. package/src/mutations/settings/revoke-session-options.ts +14 -0
  286. package/src/mutations/settings/set-active-session-options.ts +15 -0
  287. package/src/mutations/settings/unlink-account-options.ts +14 -0
  288. package/src/mutations/settings/update-user-options.ts +15 -0
  289. package/src/queries/auth/session-options.ts +18 -0
  290. package/src/queries/auth-query-options.ts +34 -0
  291. package/src/queries/settings/account-info-options.ts +25 -0
  292. package/src/queries/settings/list-accounts-options.ts +26 -0
  293. package/src/queries/settings/list-device-sessions-options.ts +24 -0
  294. package/src/queries/settings/list-sessions-options.ts +23 -0
  295. package/src/queries/settings/list-user-passkeys-options.ts +23 -0
  296. package/dist/hooks/auth/use-auth-mutation.d.ts +0 -18
  297. package/dist/hooks/auth/use-auth-mutation.js +0 -10
  298. package/dist/hooks/auth/use-auth-query.d.ts +0 -24
  299. package/dist/hooks/auth/use-auth-query.js +0 -10
  300. package/dist/lib/auth-config.js +0 -1
  301. package/src/hooks/auth/use-auth-mutation.ts +0 -56
  302. package/src/hooks/auth/use-auth-query.ts +0 -50
@@ -1,32 +1,37 @@
1
+ import { useMutation } from "@tanstack/react-query"
2
+
1
3
  import { useAuth } from "../../components/auth/auth-provider"
2
4
  import type { AuthClient } from "../../lib/auth-client"
3
- import {
4
- type UseAuthMutationOptions,
5
- useAuthMutation
6
- } from "../auth/use-auth-mutation"
5
+ import { addPasskeyOptions } from "../../mutations/settings/add-passkey-options"
7
6
  import { useListUserPasskeys } from "./use-list-user-passkeys"
8
7
 
8
+ export type UseAddPasskeyParams = NonNullable<
9
+ Parameters<AuthClient["passkey"]["addPasskey"]>[0]
10
+ >
11
+
12
+ export type UseAddPasskeyOptions = Omit<
13
+ ReturnType<typeof addPasskeyOptions>,
14
+ "mutationKey" | "mutationFn"
15
+ >
16
+
9
17
  /**
10
- * Hook that creates a mutation for adding a new passkey.
18
+ * Hook that creates a mutation for registering a new passkey.
11
19
  *
12
- * Refetches the passkeys list on success.
20
+ * Refetches the user's passkey list on success.
13
21
  *
22
+ * @param options - React Query options forwarded to `useMutation`.
14
23
  * @returns The `useMutation` result.
15
24
  */
16
- export function useAddPasskey(
17
- options?: UseAuthMutationOptions<AuthClient["passkey"]["addPasskey"]>
18
- ) {
25
+ export function useAddPasskey(options?: UseAddPasskeyOptions) {
19
26
  const { authClient } = useAuth()
20
27
  const { refetch } = useListUserPasskeys()
21
28
 
22
- return useAuthMutation({
23
- authFn: authClient.passkey.addPasskey,
24
- options: {
25
- ...options,
26
- onSuccess: async (...args) => {
27
- await refetch()
28
- await options?.onSuccess?.(...args)
29
- }
29
+ return useMutation({
30
+ ...addPasskeyOptions(authClient),
31
+ ...options,
32
+ onSuccess: async (...args) => {
33
+ await refetch()
34
+ await options?.onSuccess?.(...args)
30
35
  }
31
36
  })
32
37
  }
@@ -1,33 +1,37 @@
1
- import {
2
- type AuthClient,
3
- useAuth,
4
- useAuthMutation,
5
- useSession
6
- } from "@better-auth-ui/react"
7
- import type { UseAuthMutationOptions } from "../auth/use-auth-mutation"
1
+ import { useMutation } from "@tanstack/react-query"
2
+
3
+ import { useAuth } from "../../components/auth/auth-provider"
4
+ import type { AuthClient } from "../../lib/auth-client"
5
+ import { changeEmailOptions } from "../../mutations/settings/change-email-options"
6
+ import { useSession } from "../auth/use-session"
7
+
8
+ export type UseChangeEmailParams = NonNullable<
9
+ Parameters<AuthClient["changeEmail"]>[0]
10
+ >
11
+
12
+ export type UseChangeEmailOptions = Omit<
13
+ ReturnType<typeof changeEmailOptions>,
14
+ "mutationKey" | "mutationFn"
15
+ >
8
16
 
9
17
  /**
10
18
  * Hook that creates a mutation for changing the current user's email address.
11
19
  *
12
- * The mutation sends an email-change request and shows success or error toasts.
13
- * On success the callback URL is set to the account settings view.
20
+ * Refetches the session on success to surface the new email.
14
21
  *
22
+ * @param options - React Query options forwarded to `useMutation`.
15
23
  * @returns The `useMutation` result.
16
24
  */
17
- export function useChangeEmail(
18
- options?: UseAuthMutationOptions<AuthClient["changeEmail"]>
19
- ) {
25
+ export function useChangeEmail(options?: UseChangeEmailOptions) {
20
26
  const { authClient } = useAuth()
21
27
  const { refetch } = useSession({ refetchOnMount: false })
22
28
 
23
- return useAuthMutation({
24
- authFn: authClient.changeEmail,
25
- options: {
26
- ...options,
27
- onSuccess: async (...args) => {
28
- refetch()
29
- await options?.onSuccess?.(...args)
30
- }
29
+ return useMutation({
30
+ ...changeEmailOptions(authClient),
31
+ ...options,
32
+ onSuccess: async (...args) => {
33
+ await refetch()
34
+ await options?.onSuccess?.(...args)
31
35
  }
32
36
  })
33
37
  }
@@ -1,21 +1,29 @@
1
- import {
2
- type AuthClient,
3
- useAuth,
4
- useAuthMutation
5
- } from "@better-auth-ui/react"
6
- import type { UseAuthMutationOptions } from "../auth/use-auth-mutation"
1
+ import { useMutation } from "@tanstack/react-query"
7
2
 
8
- export { useAuthMutation } from "../auth/use-auth-mutation"
3
+ import { useAuth } from "../../components/auth/auth-provider"
4
+ import type { AuthClient } from "../../lib/auth-client"
5
+ import { changePasswordOptions } from "../../mutations/settings/change-password-options"
6
+
7
+ export type UseChangePasswordParams = NonNullable<
8
+ Parameters<AuthClient["changePassword"]>[0]
9
+ >
10
+
11
+ export type UseChangePasswordOptions = Omit<
12
+ ReturnType<typeof changePasswordOptions>,
13
+ "mutationKey" | "mutationFn"
14
+ >
9
15
 
10
16
  /**
11
17
  * Hook that creates a mutation for changing the authenticated user's password.
12
18
  *
19
+ * @param options - React Query options forwarded to `useMutation`.
13
20
  * @returns The `useMutation` result.
14
21
  */
15
- export function useChangePassword(
16
- options?: UseAuthMutationOptions<AuthClient["changePassword"]>
17
- ) {
22
+ export function useChangePassword(options?: UseChangePasswordOptions) {
18
23
  const { authClient } = useAuth()
19
24
 
20
- return useAuthMutation({ authFn: authClient.changePassword, options })
25
+ return useMutation({
26
+ ...changePasswordOptions(authClient),
27
+ ...options
28
+ })
21
29
  }
@@ -1,32 +1,37 @@
1
+ import { useMutation } from "@tanstack/react-query"
2
+
1
3
  import { useAuth } from "../../components/auth/auth-provider"
2
4
  import type { AuthClient } from "../../lib/auth-client"
3
- import {
4
- type UseAuthMutationOptions,
5
- useAuthMutation
6
- } from "../auth/use-auth-mutation"
5
+ import { deletePasskeyOptions } from "../../mutations/settings/delete-passkey-options"
7
6
  import { useListUserPasskeys } from "./use-list-user-passkeys"
8
7
 
8
+ export type UseDeletePasskeyParams = NonNullable<
9
+ Parameters<AuthClient["passkey"]["deletePasskey"]>[0]
10
+ >
11
+
12
+ export type UseDeletePasskeyOptions = Omit<
13
+ ReturnType<typeof deletePasskeyOptions>,
14
+ "mutationKey" | "mutationFn"
15
+ >
16
+
9
17
  /**
10
18
  * Hook that creates a mutation for deleting a passkey.
11
19
  *
12
- * Refetches the passkeys list on success.
20
+ * Refetches the user's passkey list on success.
13
21
  *
22
+ * @param options - React Query options forwarded to `useMutation`.
14
23
  * @returns The `useMutation` result.
15
24
  */
16
- export function useDeletePasskey(
17
- options?: UseAuthMutationOptions<AuthClient["passkey"]["deletePasskey"]>
18
- ) {
25
+ export function useDeletePasskey(options?: UseDeletePasskeyOptions) {
19
26
  const { authClient } = useAuth()
20
27
  const { refetch } = useListUserPasskeys()
21
28
 
22
- return useAuthMutation({
23
- authFn: authClient.passkey.deletePasskey,
24
- options: {
25
- ...options,
26
- onSuccess: async (...args) => {
27
- await refetch()
28
- await options?.onSuccess?.(...args)
29
- }
29
+ return useMutation({
30
+ ...deletePasskeyOptions(authClient),
31
+ ...options,
32
+ onSuccess: async (...args) => {
33
+ await refetch()
34
+ await options?.onSuccess?.(...args)
30
35
  }
31
36
  })
32
37
  }
@@ -1,21 +1,29 @@
1
- import {
2
- type AuthClient,
3
- useAuth,
4
- useAuthMutation
5
- } from "@better-auth-ui/react"
6
- import type { UseAuthMutationOptions } from "../auth/use-auth-mutation"
1
+ import { useMutation } from "@tanstack/react-query"
7
2
 
8
- export { useAuthMutation } from "../auth/use-auth-mutation"
3
+ import { useAuth } from "../../components/auth/auth-provider"
4
+ import type { AuthClient } from "../../lib/auth-client"
5
+ import { deleteUserOptions } from "../../mutations/settings/delete-user-options"
6
+
7
+ export type UseDeleteUserParams = NonNullable<
8
+ Parameters<AuthClient["deleteUser"]>[0]
9
+ >
10
+
11
+ export type UseDeleteUserOptions = Omit<
12
+ ReturnType<typeof deleteUserOptions>,
13
+ "mutationKey" | "mutationFn"
14
+ >
9
15
 
10
16
  /**
11
17
  * Hook that creates a mutation for deleting the authenticated user account.
12
18
  *
19
+ * @param options - React Query options forwarded to `useMutation`.
13
20
  * @returns The `useMutation` result.
14
21
  */
15
- export function useDeleteUser(
16
- options?: UseAuthMutationOptions<AuthClient["deleteUser"]>
17
- ) {
22
+ export function useDeleteUser(options?: UseDeleteUserOptions) {
18
23
  const { authClient } = useAuth()
19
24
 
20
- return useAuthMutation({ authFn: authClient.deleteUser, options })
25
+ return useMutation({
26
+ ...deleteUserOptions(authClient),
27
+ ...options
28
+ })
21
29
  }
@@ -1,19 +1,29 @@
1
- import {
2
- type AuthClient,
3
- useAuth,
4
- useAuthMutation
5
- } from "@better-auth-ui/react"
6
- import type { UseAuthMutationOptions } from "../auth/use-auth-mutation"
1
+ import { useMutation } from "@tanstack/react-query"
2
+
3
+ import { useAuth } from "../../components/auth/auth-provider"
4
+ import type { AuthClient } from "../../lib/auth-client"
5
+ import { linkSocialOptions } from "../../mutations/settings/link-social-options"
6
+
7
+ export type UseLinkSocialParams = NonNullable<
8
+ Parameters<AuthClient["linkSocial"]>[0]
9
+ >
10
+
11
+ export type UseLinkSocialOptions = Omit<
12
+ ReturnType<typeof linkSocialOptions>,
13
+ "mutationKey" | "mutationFn"
14
+ >
7
15
 
8
16
  /**
9
17
  * Hook that creates a mutation for linking a social provider to the current user.
10
18
  *
19
+ * @param options - React Query options forwarded to `useMutation`.
11
20
  * @returns The `useMutation` result.
12
21
  */
13
- export function useLinkSocial(
14
- options?: UseAuthMutationOptions<AuthClient["linkSocial"]>
15
- ) {
22
+ export function useLinkSocial(options?: UseLinkSocialOptions) {
16
23
  const { authClient } = useAuth()
17
24
 
18
- return useAuthMutation({ authFn: authClient.linkSocial, options })
25
+ return useMutation({
26
+ ...linkSocialOptions(authClient),
27
+ ...options
28
+ })
19
29
  }
@@ -1,27 +1,39 @@
1
- import { type AuthClient, useAuth, useSession } from "@better-auth-ui/react"
2
- import { type UseAuthQueryOptions, useAuthQuery } from "../auth/use-auth-query"
1
+ import { skipToken, useQuery } from "@tanstack/react-query"
2
+ import { useAuth } from "../../components/auth/auth-provider"
3
+ import type { AuthClient } from "../../lib/auth-client"
4
+ import { listAccountsOptions } from "../../queries/settings/list-accounts-options"
5
+ import { useSession } from "../auth/use-session"
6
+
7
+ export type UseListAccountsParams = NonNullable<
8
+ Parameters<AuthClient["listAccounts"]>[0]
9
+ >
10
+
11
+ export type UseListAccountsOptions = Omit<
12
+ ReturnType<typeof listAccountsOptions>,
13
+ "queryKey" | "queryFn"
14
+ > &
15
+ UseListAccountsParams
3
16
 
4
17
  /**
5
18
  * Retrieve the current user's linked social accounts.
6
19
  *
7
- * The query runs only when at least one social provider is configured and a session exists.
8
- * The provided `options` are forwarded to both `useSession` and `useQuery`, allowing customization of initial data and query behavior.
20
+ * Keyed per-user; waits for the active session before firing.
9
21
  *
10
- * @param options - Optional react-query / initial-data options forwarded to `useSession` and `useQuery`
11
- * @returns The react-query result containing linked accounts data, loading state, and error state
22
+ * @param options - Better Auth params (`fetchOptions`) and React Query
23
+ * options forwarded to `useQuery`.
24
+ * @returns React Query result for the user's linked accounts.
12
25
  */
13
- export function useListAccounts(
14
- options?: Partial<UseAuthQueryOptions<AuthClient["listAccounts"]>>
15
- ) {
26
+ export function useListAccounts(options?: UseListAccountsOptions) {
16
27
  const { authClient } = useAuth()
17
28
  const { data: session } = useSession({ refetchOnMount: false })
29
+ const userId = session?.user.id
30
+ const disabled = !userId
31
+
32
+ const { fetchOptions, ...queryOptions } = options ?? {}
18
33
 
19
- return useAuthQuery({
20
- authFn: authClient.listAccounts,
21
- options: {
22
- queryKey: ["auth", "listAccounts", session?.user.id],
23
- enabled: !!session,
24
- ...options
25
- }
34
+ return useQuery({
35
+ ...listAccountsOptions(authClient, userId, { fetchOptions }),
36
+ ...(disabled && { queryFn: skipToken }),
37
+ ...queryOptions
26
38
  })
27
39
  }
@@ -1,32 +1,39 @@
1
- import { type AuthClient, useAuth, useSession } from "@better-auth-ui/react"
2
- import {
3
- type UseAuthQueryOptions,
4
- type UseAuthQueryResult,
5
- useAuthQuery
6
- } from "../auth/use-auth-query"
1
+ import { skipToken, useQuery } from "@tanstack/react-query"
2
+ import { useAuth } from "../../components/auth/auth-provider"
3
+ import type { AuthClient } from "../../lib/auth-client"
4
+ import { listDeviceSessionsOptions } from "../../queries/settings/list-device-sessions-options"
5
+ import { useSession } from "../auth/use-session"
6
+
7
+ export type UseListDeviceSessionsParams = NonNullable<
8
+ Parameters<AuthClient["multiSession"]["listDeviceSessions"]>[0]
9
+ >
10
+
11
+ export type UseListDeviceSessionsOptions = Omit<
12
+ ReturnType<typeof listDeviceSessionsOptions>,
13
+ "queryKey" | "queryFn"
14
+ > &
15
+ UseListDeviceSessionsParams
7
16
 
8
17
  /**
9
- * Retrieve device sessions for multi-session account switching.
18
+ * Retrieve the device sessions (multi-session account switcher).
10
19
  *
11
- * The query is enabled only when `multiSession` is true and session data is available.
20
+ * Keyed per-user; waits for the active session before firing.
12
21
  *
13
- * @param options - Optional React Query options to customize the query behavior.
14
- * @returns The React Query result for the device sessions list; `data` is the array of device session objects and includes loading and error states.
22
+ * @param options - Better Auth params (`fetchOptions`) and React Query
23
+ * options forwarded to `useQuery`.
24
+ * @returns React Query result for the device sessions list.
15
25
  */
16
- export function useListDeviceSessions(
17
- options?: Partial<
18
- UseAuthQueryOptions<AuthClient["multiSession"]["listDeviceSessions"]>
19
- >
20
- ): UseAuthQueryResult<AuthClient["multiSession"]["listDeviceSessions"]> {
26
+ export function useListDeviceSessions(options?: UseListDeviceSessionsOptions) {
21
27
  const { authClient } = useAuth()
22
28
  const { data: session } = useSession({ refetchOnMount: false })
29
+ const userId = session?.user.id
30
+ const disabled = !userId
31
+
32
+ const { fetchOptions, ...queryOptions } = options ?? {}
23
33
 
24
- return useAuthQuery({
25
- authFn: authClient.multiSession.listDeviceSessions,
26
- options: {
27
- queryKey: ["auth", "multiSession", "listDeviceSessions"],
28
- enabled: !!session,
29
- ...options
30
- }
34
+ return useQuery({
35
+ ...listDeviceSessionsOptions(authClient, userId, { fetchOptions }),
36
+ ...(disabled && { queryFn: skipToken }),
37
+ ...queryOptions
31
38
  })
32
39
  }
@@ -1,26 +1,39 @@
1
- import { type AuthClient, useAuth, useSession } from "@better-auth-ui/react"
2
- import { type UseAuthQueryOptions, useAuthQuery } from "../auth/use-auth-query"
1
+ import { skipToken, useQuery } from "@tanstack/react-query"
2
+ import { useAuth } from "../../components/auth/auth-provider"
3
+ import type { AuthClient } from "../../lib/auth-client"
4
+ import { listSessionsOptions } from "../../queries/settings/list-sessions-options"
5
+ import { useSession } from "../auth/use-session"
6
+
7
+ export type UseListSessionsParams = NonNullable<
8
+ Parameters<AuthClient["listSessions"]>[0]
9
+ >
10
+
11
+ export type UseListSessionsOptions = Omit<
12
+ ReturnType<typeof listSessionsOptions>,
13
+ "queryKey" | "queryFn"
14
+ > &
15
+ UseListSessionsParams
3
16
 
4
17
  /**
5
18
  * Retrieve the active sessions (devices where the current user is signed in).
6
19
  *
7
- * The underlying query is enabled only when session data is available.
20
+ * Keyed per-user; waits for the active session before firing.
8
21
  *
9
- * @param options - Optional React Query options to customize the query behavior.
10
- * @returns The React Query result for the sessions list; `data` is the array of session objects, and the result includes loading and error states.
22
+ * @param options - Better Auth params (`fetchOptions`) and React Query
23
+ * options forwarded to `useQuery`.
24
+ * @returns React Query result for the sessions list.
11
25
  */
12
- export function useListSessions(
13
- options?: Partial<UseAuthQueryOptions<AuthClient["listSessions"]>>
14
- ) {
26
+ export function useListSessions(options?: UseListSessionsOptions) {
15
27
  const { authClient } = useAuth()
16
28
  const { data: session } = useSession({ refetchOnMount: false })
29
+ const userId = session?.user.id
30
+ const disabled = !userId
31
+
32
+ const { fetchOptions, ...queryOptions } = options ?? {}
17
33
 
18
- return useAuthQuery({
19
- authFn: authClient.listSessions,
20
- options: {
21
- queryKey: ["auth", "listSessions", session?.user.id],
22
- enabled: !!session,
23
- ...options
24
- }
34
+ return useQuery({
35
+ ...listSessionsOptions(authClient, userId, { fetchOptions }),
36
+ ...(disabled && { queryFn: skipToken }),
37
+ ...queryOptions
25
38
  })
26
39
  }
@@ -1,28 +1,39 @@
1
- import { type AuthClient, useAuth, useSession } from "@better-auth-ui/react"
2
- import { type UseAuthQueryOptions, useAuthQuery } from "../auth/use-auth-query"
1
+ import { skipToken, useQuery } from "@tanstack/react-query"
2
+ import { useAuth } from "../../components/auth/auth-provider"
3
+ import type { AuthClient } from "../../lib/auth-client"
4
+ import { listUserPasskeysOptions } from "../../queries/settings/list-user-passkeys-options"
5
+ import { useSession } from "../auth/use-session"
6
+
7
+ export type UseListUserPasskeysParams = NonNullable<
8
+ Parameters<AuthClient["passkey"]["listUserPasskeys"]>[0]
9
+ >
10
+
11
+ export type UseListUserPasskeysOptions = Omit<
12
+ ReturnType<typeof listUserPasskeysOptions>,
13
+ "queryKey" | "queryFn"
14
+ > &
15
+ UseListUserPasskeysParams
3
16
 
4
17
  /**
5
18
  * Retrieve the passkeys registered for the current user.
6
19
  *
7
- * The underlying query is enabled only when session data is available.
20
+ * Keyed per-user; waits for the active session before firing.
8
21
  *
9
- * @param options - Optional React Query options to customize the query behavior.
10
- * @returns The React Query result for the passkeys list.
22
+ * @param options - Better Auth params (`fetchOptions`) and React Query
23
+ * options forwarded to `useQuery`.
24
+ * @returns React Query result for the passkeys list.
11
25
  */
12
- export function useListUserPasskeys(
13
- options?: Partial<
14
- UseAuthQueryOptions<AuthClient["passkey"]["listUserPasskeys"]>
15
- >
16
- ) {
26
+ export function useListUserPasskeys(options?: UseListUserPasskeysOptions) {
17
27
  const { authClient } = useAuth()
18
28
  const { data: session } = useSession({ refetchOnMount: false })
29
+ const userId = session?.user.id
30
+ const disabled = !userId
31
+
32
+ const { fetchOptions, ...queryOptions } = options ?? {}
19
33
 
20
- return useAuthQuery({
21
- authFn: authClient.passkey.listUserPasskeys,
22
- options: {
23
- queryKey: ["auth", "listUserPasskeys", session?.user.id],
24
- enabled: !!session,
25
- ...options
26
- }
34
+ return useQuery({
35
+ ...listUserPasskeysOptions(authClient, userId, { fetchOptions }),
36
+ ...(disabled && { queryFn: skipToken }),
37
+ ...queryOptions
27
38
  })
28
39
  }
@@ -1,30 +1,39 @@
1
- import {
2
- type AuthClient,
3
- useAuth,
4
- useAuthMutation,
5
- useListDeviceSessions
6
- } from "@better-auth-ui/react"
7
- import type { UseAuthMutationOptions } from "../auth/use-auth-mutation"
1
+ import { useMutation } from "@tanstack/react-query"
2
+
3
+ import { useAuth } from "../../components/auth/auth-provider"
4
+ import type { AuthClient } from "../../lib/auth-client"
5
+ import { revokeMultiSessionOptions } from "../../mutations/settings/revoke-multi-session-options"
6
+ import { useListDeviceSessions } from "./use-list-device-sessions"
7
+
8
+ export type UseRevokeMultiSessionParams = NonNullable<
9
+ Parameters<AuthClient["multiSession"]["revoke"]>[0]
10
+ >
11
+
12
+ export type UseRevokeMultiSessionOptions = Omit<
13
+ ReturnType<typeof revokeMultiSessionOptions>,
14
+ "mutationKey" | "mutationFn"
15
+ >
8
16
 
9
17
  /**
10
18
  * Hook that creates a mutation for revoking a device session in multi-session mode.
11
19
  *
20
+ * Refetches the device sessions list on success.
21
+ *
22
+ * @param options - React Query options forwarded to `useMutation`.
12
23
  * @returns The `useMutation` result.
13
24
  */
14
- export function useRevokeMultiSession(
15
- options?: UseAuthMutationOptions<AuthClient["multiSession"]["revoke"]>
16
- ) {
25
+ export function useRevokeMultiSession(options?: UseRevokeMultiSessionOptions) {
17
26
  const { authClient } = useAuth()
18
- const { refetch } = useListDeviceSessions({ refetchOnMount: false })
27
+ const { refetch } = useListDeviceSessions({
28
+ refetchOnMount: false
29
+ })
19
30
 
20
- return useAuthMutation({
21
- authFn: authClient.multiSession.revoke,
22
- options: {
23
- ...options,
24
- onSuccess: async (...args) => {
25
- await refetch()
26
- await options?.onSuccess?.(...args)
27
- }
31
+ return useMutation({
32
+ ...revokeMultiSessionOptions(authClient),
33
+ ...options,
34
+ onSuccess: async (...args) => {
35
+ await refetch()
36
+ await options?.onSuccess?.(...args)
28
37
  }
29
38
  })
30
39
  }
@@ -1,31 +1,39 @@
1
- import {
2
- type AuthClient,
3
- useAuth,
4
- useAuthMutation
5
- } from "@better-auth-ui/react"
6
- import type { UseAuthMutationOptions } from "../auth/use-auth-mutation"
1
+ import { useMutation } from "@tanstack/react-query"
7
2
 
3
+ import { useAuth } from "../../components/auth/auth-provider"
4
+ import type { AuthClient } from "../../lib/auth-client"
5
+ import { revokeSessionOptions } from "../../mutations/settings/revoke-session-options"
8
6
  import { useListSessions } from "./use-list-sessions"
9
7
 
8
+ export type UseRevokeSessionParams = NonNullable<
9
+ Parameters<AuthClient["revokeSession"]>[0]
10
+ >
11
+
12
+ export type UseRevokeSessionOptions = Omit<
13
+ ReturnType<typeof revokeSessionOptions>,
14
+ "mutationKey" | "mutationFn"
15
+ >
16
+
10
17
  /**
11
18
  * Hook that creates a mutation for revoking a user session.
12
19
  *
20
+ * Refetches the sessions list on success.
21
+ *
22
+ * @param options - React Query options forwarded to `useMutation`.
13
23
  * @returns The `useMutation` result.
14
24
  */
15
- export function useRevokeSession(
16
- options?: UseAuthMutationOptions<AuthClient["revokeSession"]>
17
- ) {
25
+ export function useRevokeSession(options?: UseRevokeSessionOptions) {
18
26
  const { authClient } = useAuth()
19
- const { refetch } = useListSessions({ refetchOnMount: false })
27
+ const { refetch: refetchSessions } = useListSessions({
28
+ refetchOnMount: false
29
+ })
20
30
 
21
- return useAuthMutation({
22
- authFn: authClient.revokeSession,
23
- options: {
24
- ...options,
25
- onSuccess: async (...args) => {
26
- await refetch()
27
- await options?.onSuccess?.(...args)
28
- }
31
+ return useMutation({
32
+ ...revokeSessionOptions(authClient),
33
+ ...options,
34
+ onSuccess: async (...args) => {
35
+ await refetchSessions()
36
+ await options?.onSuccess?.(...args)
29
37
  }
30
38
  })
31
39
  }