@better-auth-ui/react 1.6.3 → 1.6.5

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 (355) hide show
  1. package/dist/components/auth/auth-provider.d.ts +23 -8
  2. package/dist/components/auth/auth-provider.js +35 -19
  3. package/dist/components/{email → auth/email}/email-changed.js +2 -2
  4. package/dist/components/{email → auth/email}/email-localization.js +1 -1
  5. package/dist/components/{email → auth/email}/email-styles.js +1 -1
  6. package/dist/components/{email → auth/email}/email-verification.js +2 -2
  7. package/dist/components/{email → auth/email}/magic-link.js +2 -2
  8. package/dist/components/{email → auth/email}/new-device.js +2 -2
  9. package/dist/components/{email → auth/email}/otp-email.js +2 -2
  10. package/dist/components/{email → auth/email}/password-changed.js +2 -2
  11. package/dist/components/{email → auth/email}/reset-password.js +2 -2
  12. package/dist/components/auth/fetch-options-provider.d.ts +19 -0
  13. package/dist/components/auth/fetch-options-provider.js +30 -0
  14. package/dist/email.d.ts +1 -0
  15. package/dist/email.js +11 -0
  16. package/dist/hooks/auth/use-authenticate.d.ts +5 -28
  17. package/dist/hooks/auth/use-authenticate.js +12 -12
  18. package/dist/hooks/auth/use-user.d.ts +19 -314
  19. package/dist/hooks/auth/use-user.js +5 -5
  20. package/dist/hooks/use-auth-mutation.d.ts +12 -7
  21. package/dist/hooks/use-auth-plugin.d.ts +31 -0
  22. package/dist/hooks/use-auth-plugin.js +10 -0
  23. package/dist/hooks/use-auth-query.d.ts +3 -3
  24. package/dist/index.d.ts +34 -32
  25. package/dist/index.js +75 -83
  26. package/dist/lib/auth-client.d.ts +23 -3687
  27. package/dist/lib/auth-plugin.d.ts +61 -0
  28. package/dist/lib/auth-server.d.ts +16 -0
  29. package/dist/mutations/auth/request-password-reset-mutation.d.ts +26 -0
  30. package/dist/mutations/auth/request-password-reset-mutation.js +24 -0
  31. package/dist/mutations/auth/reset-password-mutation.d.ts +25 -0
  32. package/dist/mutations/auth/reset-password-mutation.js +24 -0
  33. package/dist/mutations/auth/send-verification-email-mutation.d.ts +24 -0
  34. package/dist/mutations/auth/send-verification-email-mutation.js +24 -0
  35. package/dist/mutations/auth/sign-in-email-mutation.d.ts +71 -0
  36. package/dist/mutations/auth/sign-in-email-mutation.js +29 -0
  37. package/dist/mutations/auth/sign-in-social-mutation.d.ts +77 -0
  38. package/dist/mutations/auth/sign-in-social-mutation.js +24 -0
  39. package/dist/mutations/auth/sign-out-mutation.d.ts +25 -0
  40. package/dist/mutations/auth/sign-out-mutation.js +28 -0
  41. package/dist/mutations/auth/sign-up-email-mutation.d.ts +105 -0
  42. package/dist/mutations/auth/sign-up-email-mutation.js +29 -0
  43. package/dist/mutations/auth-mutation-options.d.ts +37 -20
  44. package/dist/mutations/auth-mutation-options.js +2 -2
  45. package/dist/mutations/magic-link/sign-in-magic-link-mutation.d.ts +24 -0
  46. package/dist/mutations/magic-link/sign-in-magic-link-mutation.js +24 -0
  47. package/dist/mutations/multi-session/revoke-multi-session-mutation.d.ts +25 -0
  48. package/dist/mutations/multi-session/revoke-multi-session-mutation.js +29 -0
  49. package/dist/mutations/multi-session/set-active-session-mutation.d.ts +62 -0
  50. package/dist/mutations/multi-session/set-active-session-mutation.js +31 -0
  51. package/dist/mutations/passkey/add-passkey-mutation.d.ts +71 -0
  52. package/dist/mutations/passkey/add-passkey-mutation.js +29 -0
  53. package/dist/mutations/passkey/delete-passkey-mutation.d.ts +25 -0
  54. package/dist/mutations/passkey/delete-passkey-mutation.js +29 -0
  55. package/dist/mutations/passkey/sign-in-passkey-mutation.d.ts +105 -0
  56. package/dist/mutations/passkey/sign-in-passkey-mutation.js +29 -0
  57. package/dist/mutations/settings/change-email-mutation.d.ts +25 -0
  58. package/dist/mutations/settings/change-email-mutation.js +29 -0
  59. package/dist/mutations/settings/change-password-mutation.d.ts +78 -0
  60. package/dist/mutations/settings/change-password-mutation.js +24 -0
  61. package/dist/mutations/settings/delete-user-mutation.d.ts +26 -0
  62. package/dist/mutations/settings/delete-user-mutation.js +24 -0
  63. package/dist/mutations/settings/link-social-mutation.d.ts +26 -0
  64. package/dist/mutations/settings/link-social-mutation.js +24 -0
  65. package/dist/mutations/settings/revoke-session-mutation.d.ts +25 -0
  66. package/dist/mutations/settings/revoke-session-mutation.js +29 -0
  67. package/dist/mutations/settings/unlink-account-mutation.d.ts +25 -0
  68. package/dist/mutations/settings/unlink-account-mutation.js +29 -0
  69. package/dist/mutations/settings/update-user-mutation.d.ts +25 -0
  70. package/dist/mutations/settings/update-user-mutation.js +35 -0
  71. package/dist/mutations/username/is-username-available-mutation.d.ts +27 -0
  72. package/dist/mutations/username/is-username-available-mutation.js +24 -0
  73. package/dist/mutations/username/sign-in-username-mutation.d.ts +75 -0
  74. package/dist/mutations/username/sign-in-username-mutation.js +29 -0
  75. package/dist/plugins/captcha-plugin.d.ts +29 -0
  76. package/dist/plugins/captcha-plugin.js +29 -0
  77. package/dist/plugins.d.ts +1 -0
  78. package/dist/plugins.js +3 -0
  79. package/dist/queries/auth/session-query.d.ts +71 -0
  80. package/dist/queries/auth/session-query.js +30 -0
  81. package/dist/queries/auth-query-options.d.ts +26 -15
  82. package/dist/queries/multi-session/list-device-sessions-query.d.ts +76 -0
  83. package/dist/queries/multi-session/list-device-sessions-query.js +31 -0
  84. package/dist/queries/passkey/list-passkeys-query.d.ts +74 -0
  85. package/dist/queries/passkey/list-passkeys-query.js +31 -0
  86. package/dist/queries/settings/account-info-query.d.ts +85 -0
  87. package/dist/queries/settings/account-info-query.js +31 -0
  88. package/dist/queries/settings/list-accounts-query.d.ts +76 -0
  89. package/dist/queries/settings/list-accounts-query.js +31 -0
  90. package/dist/queries/settings/list-sessions-query.d.ts +74 -0
  91. package/dist/queries/settings/list-sessions-query.js +31 -0
  92. package/dist/server/queries/auth/session-query.d.ts +57 -0
  93. package/dist/server/queries/auth/session-query.js +13 -0
  94. package/dist/server/queries/multi-session/list-device-sessions-query.d.ts +60 -0
  95. package/dist/server/queries/multi-session/list-device-sessions-query.js +12 -0
  96. package/dist/server/queries/passkey/list-passkeys-query.d.ts +60 -0
  97. package/dist/server/queries/passkey/list-passkeys-query.js +12 -0
  98. package/dist/server/queries/settings/account-info-query.d.ts +68 -0
  99. package/dist/server/queries/settings/account-info-query.js +12 -0
  100. package/dist/server/queries/settings/list-accounts-query.d.ts +60 -0
  101. package/dist/server/queries/settings/list-accounts-query.js +12 -0
  102. package/dist/server/queries/settings/list-sessions-query.d.ts +60 -0
  103. package/dist/server/queries/settings/list-sessions-query.js +12 -0
  104. package/dist/server.d.ts +7 -0
  105. package/dist/server.js +7 -0
  106. package/package.json +28 -22
  107. package/src/components/auth/auth-provider.tsx +88 -25
  108. package/src/components/{email → auth/email}/email-changed.tsx +1 -1
  109. package/src/components/{email → auth/email}/email-verification.tsx +1 -1
  110. package/src/components/{email → auth/email}/magic-link.tsx +1 -1
  111. package/src/components/{email → auth/email}/new-device.tsx +1 -1
  112. package/src/components/{email → auth/email}/otp-email.tsx +1 -1
  113. package/src/components/{email → auth/email}/password-changed.tsx +1 -1
  114. package/src/components/{email → auth/email}/reset-password.tsx +1 -1
  115. package/src/components/auth/fetch-options-provider.tsx +77 -0
  116. package/src/email.ts +1 -0
  117. package/src/hooks/auth/use-authenticate.ts +12 -6
  118. package/src/hooks/auth/use-user.ts +14 -9
  119. package/src/hooks/use-auth-mutation.ts +30 -12
  120. package/src/hooks/use-auth-plugin.ts +50 -0
  121. package/src/hooks/use-auth-query.ts +11 -7
  122. package/src/index.ts +34 -32
  123. package/src/lib/auth-client.ts +33 -31
  124. package/src/lib/auth-plugin.ts +77 -0
  125. package/src/lib/auth-server.ts +30 -0
  126. package/src/mutations/auth/request-password-reset-mutation.ts +58 -0
  127. package/src/mutations/auth/reset-password-mutation.ts +60 -0
  128. package/src/mutations/auth/send-verification-email-mutation.ts +58 -0
  129. package/src/mutations/auth/sign-in-email-mutation.ts +78 -0
  130. package/src/mutations/auth/sign-in-social-mutation.ts +64 -0
  131. package/src/mutations/auth/sign-out-mutation.ts +71 -0
  132. package/src/mutations/auth/sign-up-email-mutation.ts +74 -0
  133. package/src/mutations/auth-mutation-options.ts +83 -38
  134. package/src/mutations/magic-link/sign-in-magic-link-mutation.ts +59 -0
  135. package/src/mutations/multi-session/revoke-multi-session-mutation.ts +70 -0
  136. package/src/mutations/multi-session/set-active-session-mutation.ts +98 -0
  137. package/src/mutations/passkey/add-passkey-mutation.ts +66 -0
  138. package/src/mutations/passkey/delete-passkey-mutation.ts +66 -0
  139. package/src/mutations/passkey/sign-in-passkey-mutation.ts +74 -0
  140. package/src/mutations/settings/change-email-mutation.ts +67 -0
  141. package/src/mutations/settings/change-password-mutation.ts +59 -0
  142. package/src/mutations/settings/delete-user-mutation.ts +59 -0
  143. package/src/mutations/settings/link-social-mutation.ts +59 -0
  144. package/src/mutations/settings/revoke-session-mutation.ts +69 -0
  145. package/src/mutations/settings/unlink-account-mutation.ts +67 -0
  146. package/src/mutations/settings/update-user-mutation.ts +82 -0
  147. package/src/mutations/username/is-username-available-mutation.ts +62 -0
  148. package/src/mutations/username/sign-in-username-mutation.ts +74 -0
  149. package/src/plugins/captcha-plugin.tsx +75 -0
  150. package/src/plugins.ts +3 -0
  151. package/src/queries/auth/session-query.ts +135 -0
  152. package/src/queries/auth-query-options.ts +61 -12
  153. package/src/queries/multi-session/list-device-sessions-query.ts +177 -0
  154. package/src/queries/passkey/list-passkeys-query.ts +154 -0
  155. package/src/queries/settings/account-info-query.ts +158 -0
  156. package/src/queries/settings/list-accounts-query.ts +156 -0
  157. package/src/queries/settings/list-sessions-query.ts +154 -0
  158. package/src/server/queries/auth/session-query.ts +94 -0
  159. package/src/server/queries/multi-session/list-device-sessions-query.ts +102 -0
  160. package/src/server/queries/passkey/list-passkeys-query.ts +100 -0
  161. package/src/server/queries/settings/account-info-query.ts +101 -0
  162. package/src/server/queries/settings/list-accounts-query.ts +101 -0
  163. package/src/server/queries/settings/list-sessions-query.ts +101 -0
  164. package/src/server.ts +7 -0
  165. package/dist/core.d.ts +0 -1
  166. package/dist/core.js +0 -1
  167. package/dist/hooks/auth/use-is-username-available.d.ts +0 -20
  168. package/dist/hooks/auth/use-is-username-available.js +0 -13
  169. package/dist/hooks/auth/use-request-password-reset.d.ts +0 -21
  170. package/dist/hooks/auth/use-request-password-reset.js +0 -13
  171. package/dist/hooks/auth/use-reset-password.d.ts +0 -23
  172. package/dist/hooks/auth/use-reset-password.js +0 -13
  173. package/dist/hooks/auth/use-send-verification-email.d.ts +0 -19
  174. package/dist/hooks/auth/use-send-verification-email.js +0 -13
  175. package/dist/hooks/auth/use-session.d.ts +0 -35
  176. package/dist/hooks/auth/use-session.js +0 -16
  177. package/dist/hooks/auth/use-sign-in-email.d.ts +0 -26
  178. package/dist/hooks/auth/use-sign-in-email.js +0 -17
  179. package/dist/hooks/auth/use-sign-in-magic-link.d.ts +0 -27
  180. package/dist/hooks/auth/use-sign-in-magic-link.js +0 -13
  181. package/dist/hooks/auth/use-sign-in-passkey.d.ts +0 -21
  182. package/dist/hooks/auth/use-sign-in-passkey.js +0 -17
  183. package/dist/hooks/auth/use-sign-in-social.d.ts +0 -63
  184. package/dist/hooks/auth/use-sign-in-social.js +0 -13
  185. package/dist/hooks/auth/use-sign-in-username.d.ts +0 -25
  186. package/dist/hooks/auth/use-sign-in-username.js +0 -17
  187. package/dist/hooks/auth/use-sign-out.d.ts +0 -18
  188. package/dist/hooks/auth/use-sign-out.js +0 -16
  189. package/dist/hooks/auth/use-sign-up-email.d.ts +0 -1186
  190. package/dist/hooks/auth/use-sign-up-email.js +0 -17
  191. package/dist/hooks/settings/use-account-info.d.ts +0 -17
  192. package/dist/hooks/settings/use-account-info.js +0 -18
  193. package/dist/hooks/settings/use-add-passkey.d.ts +0 -21
  194. package/dist/hooks/settings/use-add-passkey.js +0 -17
  195. package/dist/hooks/settings/use-change-email.d.ts +0 -21
  196. package/dist/hooks/settings/use-change-email.js +0 -17
  197. package/dist/hooks/settings/use-change-password.d.ts +0 -21
  198. package/dist/hooks/settings/use-change-password.js +0 -13
  199. package/dist/hooks/settings/use-delete-passkey.d.ts +0 -19
  200. package/dist/hooks/settings/use-delete-passkey.js +0 -17
  201. package/dist/hooks/settings/use-delete-user.d.ts +0 -24
  202. package/dist/hooks/settings/use-delete-user.js +0 -13
  203. package/dist/hooks/settings/use-link-social.d.ts +0 -43
  204. package/dist/hooks/settings/use-link-social.js +0 -13
  205. package/dist/hooks/settings/use-list-accounts.d.ts +0 -22
  206. package/dist/hooks/settings/use-list-accounts.js +0 -15
  207. package/dist/hooks/settings/use-list-device-sessions.d.ts +0 -34
  208. package/dist/hooks/settings/use-list-device-sessions.js +0 -15
  209. package/dist/hooks/settings/use-list-sessions.d.ts +0 -23
  210. package/dist/hooks/settings/use-list-sessions.js +0 -15
  211. package/dist/hooks/settings/use-list-user-passkeys.d.ts +0 -14
  212. package/dist/hooks/settings/use-list-user-passkeys.js +0 -15
  213. package/dist/hooks/settings/use-revoke-multi-session.d.ts +0 -19
  214. package/dist/hooks/settings/use-revoke-multi-session.js +0 -17
  215. package/dist/hooks/settings/use-revoke-session.d.ts +0 -19
  216. package/dist/hooks/settings/use-revoke-session.js +0 -17
  217. package/dist/hooks/settings/use-set-active-session.d.ts +0 -20
  218. package/dist/hooks/settings/use-set-active-session.js +0 -20
  219. package/dist/hooks/settings/use-unlink-account.d.ts +0 -21
  220. package/dist/hooks/settings/use-unlink-account.js +0 -17
  221. package/dist/hooks/settings/use-update-user.d.ts +0 -1185
  222. package/dist/hooks/settings/use-update-user.js +0 -24
  223. package/dist/lib/auth-client.js +0 -11
  224. package/dist/lib/auth-config.d.ts +0 -43
  225. package/dist/lib/auth-context.d.ts +0 -2
  226. package/dist/lib/auth-context.js +0 -6
  227. package/dist/mutations/auth/is-username-available-options.d.ts +0 -19
  228. package/dist/mutations/auth/is-username-available-options.js +0 -7
  229. package/dist/mutations/auth/request-password-reset-options.d.ts +0 -15
  230. package/dist/mutations/auth/request-password-reset-options.js +0 -7
  231. package/dist/mutations/auth/reset-password-options.d.ts +0 -17
  232. package/dist/mutations/auth/reset-password-options.js +0 -7
  233. package/dist/mutations/auth/send-verification-email-options.d.ts +0 -15
  234. package/dist/mutations/auth/send-verification-email-options.js +0 -7
  235. package/dist/mutations/auth/sign-in-email-options.d.ts +0 -23
  236. package/dist/mutations/auth/sign-in-email-options.js +0 -11
  237. package/dist/mutations/auth/sign-in-magic-link-options.d.ts +0 -23
  238. package/dist/mutations/auth/sign-in-magic-link-options.js +0 -11
  239. package/dist/mutations/auth/sign-in-passkey-options.d.ts +0 -15
  240. package/dist/mutations/auth/sign-in-passkey-options.js +0 -11
  241. package/dist/mutations/auth/sign-in-social-options.d.ts +0 -61
  242. package/dist/mutations/auth/sign-in-social-options.js +0 -11
  243. package/dist/mutations/auth/sign-in-username-options.d.ts +0 -19
  244. package/dist/mutations/auth/sign-in-username-options.js +0 -11
  245. package/dist/mutations/auth/sign-out-options.d.ts +0 -12
  246. package/dist/mutations/auth/sign-out-options.js +0 -7
  247. package/dist/mutations/auth/sign-up-email-options.d.ts +0 -1180
  248. package/dist/mutations/auth/sign-up-email-options.js +0 -11
  249. package/dist/mutations/settings/add-passkey-options.d.ts +0 -15
  250. package/dist/mutations/settings/add-passkey-options.js +0 -11
  251. package/dist/mutations/settings/change-email-options.d.ts +0 -15
  252. package/dist/mutations/settings/change-email-options.js +0 -7
  253. package/dist/mutations/settings/change-password-options.d.ts +0 -17
  254. package/dist/mutations/settings/change-password-options.js +0 -7
  255. package/dist/mutations/settings/delete-passkey-options.d.ts +0 -13
  256. package/dist/mutations/settings/delete-passkey-options.js +0 -11
  257. package/dist/mutations/settings/delete-user-options.d.ts +0 -20
  258. package/dist/mutations/settings/delete-user-options.js +0 -7
  259. package/dist/mutations/settings/link-social-options.d.ts +0 -39
  260. package/dist/mutations/settings/link-social-options.js +0 -7
  261. package/dist/mutations/settings/revoke-multi-session-options.d.ts +0 -13
  262. package/dist/mutations/settings/revoke-multi-session-options.js +0 -11
  263. package/dist/mutations/settings/revoke-session-options.d.ts +0 -13
  264. package/dist/mutations/settings/revoke-session-options.js +0 -7
  265. package/dist/mutations/settings/set-active-session-options.d.ts +0 -13
  266. package/dist/mutations/settings/set-active-session-options.js +0 -11
  267. package/dist/mutations/settings/unlink-account-options.d.ts +0 -15
  268. package/dist/mutations/settings/unlink-account-options.js +0 -7
  269. package/dist/mutations/settings/update-user-options.d.ts +0 -1182
  270. package/dist/mutations/settings/update-user-options.js +0 -7
  271. package/dist/queries/auth/session-options.d.ts +0 -110
  272. package/dist/queries/auth/session-options.js +0 -7
  273. package/dist/queries/settings/account-info-options.d.ts +0 -32
  274. package/dist/queries/settings/account-info-options.js +0 -12
  275. package/dist/queries/settings/list-accounts-options.d.ts +0 -53
  276. package/dist/queries/settings/list-accounts-options.js +0 -12
  277. package/dist/queries/settings/list-device-sessions-options.d.ts +0 -99
  278. package/dist/queries/settings/list-device-sessions-options.js +0 -12
  279. package/dist/queries/settings/list-sessions-options.d.ts +0 -54
  280. package/dist/queries/settings/list-sessions-options.js +0 -12
  281. package/dist/queries/settings/list-user-passkeys-options.d.ts +0 -18
  282. package/dist/queries/settings/list-user-passkeys-options.js +0 -12
  283. package/src/core.ts +0 -1
  284. package/src/hooks/auth/use-is-username-available.ts +0 -31
  285. package/src/hooks/auth/use-request-password-reset.ts +0 -33
  286. package/src/hooks/auth/use-reset-password.ts +0 -31
  287. package/src/hooks/auth/use-send-verification-email.ts +0 -31
  288. package/src/hooks/auth/use-session.ts +0 -31
  289. package/src/hooks/auth/use-sign-in-email.ts +0 -41
  290. package/src/hooks/auth/use-sign-in-magic-link.ts +0 -29
  291. package/src/hooks/auth/use-sign-in-passkey.ts +0 -40
  292. package/src/hooks/auth/use-sign-in-social.ts +0 -31
  293. package/src/hooks/auth/use-sign-in-username.ts +0 -40
  294. package/src/hooks/auth/use-sign-out.ts +0 -34
  295. package/src/hooks/auth/use-sign-up-email.ts +0 -40
  296. package/src/hooks/settings/use-account-info.ts +0 -40
  297. package/src/hooks/settings/use-add-passkey.ts +0 -37
  298. package/src/hooks/settings/use-change-email.ts +0 -37
  299. package/src/hooks/settings/use-change-password.ts +0 -29
  300. package/src/hooks/settings/use-delete-passkey.ts +0 -37
  301. package/src/hooks/settings/use-delete-user.ts +0 -29
  302. package/src/hooks/settings/use-link-social.ts +0 -29
  303. package/src/hooks/settings/use-list-accounts.ts +0 -39
  304. package/src/hooks/settings/use-list-device-sessions.ts +0 -39
  305. package/src/hooks/settings/use-list-sessions.ts +0 -39
  306. package/src/hooks/settings/use-list-user-passkeys.ts +0 -39
  307. package/src/hooks/settings/use-revoke-multi-session.ts +0 -39
  308. package/src/hooks/settings/use-revoke-session.ts +0 -39
  309. package/src/hooks/settings/use-set-active-session.ts +0 -58
  310. package/src/hooks/settings/use-unlink-account.ts +0 -37
  311. package/src/hooks/settings/use-update-user.ts +0 -50
  312. package/src/lib/auth-config.ts +0 -48
  313. package/src/lib/auth-context.ts +0 -6
  314. package/src/mutations/auth/is-username-available-options.ts +0 -18
  315. package/src/mutations/auth/request-password-reset-options.ts +0 -14
  316. package/src/mutations/auth/reset-password-options.ts +0 -14
  317. package/src/mutations/auth/send-verification-email-options.ts +0 -14
  318. package/src/mutations/auth/sign-in-email-options.ts +0 -19
  319. package/src/mutations/auth/sign-in-magic-link-options.ts +0 -15
  320. package/src/mutations/auth/sign-in-passkey-options.ts +0 -15
  321. package/src/mutations/auth/sign-in-social-options.ts +0 -19
  322. package/src/mutations/auth/sign-in-username-options.ts +0 -15
  323. package/src/mutations/auth/sign-out-options.ts +0 -11
  324. package/src/mutations/auth/sign-up-email-options.ts +0 -15
  325. package/src/mutations/settings/add-passkey-options.ts +0 -15
  326. package/src/mutations/settings/change-email-options.ts +0 -11
  327. package/src/mutations/settings/change-password-options.ts +0 -14
  328. package/src/mutations/settings/delete-passkey-options.ts +0 -15
  329. package/src/mutations/settings/delete-user-options.ts +0 -11
  330. package/src/mutations/settings/link-social-options.ts +0 -11
  331. package/src/mutations/settings/revoke-multi-session-options.ts +0 -15
  332. package/src/mutations/settings/revoke-session-options.ts +0 -14
  333. package/src/mutations/settings/set-active-session-options.ts +0 -15
  334. package/src/mutations/settings/unlink-account-options.ts +0 -14
  335. package/src/mutations/settings/update-user-options.ts +0 -15
  336. package/src/queries/auth/session-options.ts +0 -18
  337. package/src/queries/settings/account-info-options.ts +0 -25
  338. package/src/queries/settings/list-accounts-options.ts +0 -26
  339. package/src/queries/settings/list-device-sessions-options.ts +0 -24
  340. package/src/queries/settings/list-sessions-options.ts +0 -23
  341. package/src/queries/settings/list-user-passkeys-options.ts +0 -23
  342. /package/dist/components/{email → auth/email}/email-changed.d.ts +0 -0
  343. /package/dist/components/{email → auth/email}/email-localization.d.ts +0 -0
  344. /package/dist/components/{email → auth/email}/email-styles.d.ts +0 -0
  345. /package/dist/components/{email → auth/email}/email-verification.d.ts +0 -0
  346. /package/dist/components/{email → auth/email}/index.d.ts +0 -0
  347. /package/dist/components/{email → auth/email}/index.js +0 -0
  348. /package/dist/components/{email → auth/email}/magic-link.d.ts +0 -0
  349. /package/dist/components/{email → auth/email}/new-device.d.ts +0 -0
  350. /package/dist/components/{email → auth/email}/otp-email.d.ts +0 -0
  351. /package/dist/components/{email → auth/email}/password-changed.d.ts +0 -0
  352. /package/dist/components/{email → auth/email}/reset-password.d.ts +0 -0
  353. /package/src/components/{email → auth/email}/email-localization.tsx +0 -0
  354. /package/src/components/{email → auth/email}/email-styles.tsx +0 -0
  355. /package/src/components/{email → auth/email}/index.ts +0 -0
@@ -0,0 +1,74 @@
1
+ import { authMutationKeys } from "@better-auth-ui/core"
2
+ import {
3
+ mutationOptions,
4
+ useMutation,
5
+ useQueryClient
6
+ } from "@tanstack/react-query"
7
+ import type { BetterFetchError } from "better-auth/react"
8
+
9
+ import type { AuthClient } from "../../lib/auth-client"
10
+ import { sessionOptions } from "../../queries/auth/session-query"
11
+
12
+ export type SignUpEmailParams<TAuthClient extends AuthClient> = Parameters<
13
+ TAuthClient["signUp"]["email"]
14
+ >[0]
15
+
16
+ export type SignUpEmailOptions<TAuthClient extends AuthClient> = Omit<
17
+ ReturnType<typeof signUpEmailOptions<TAuthClient>>,
18
+ "mutationKey" | "mutationFn"
19
+ >
20
+
21
+ /**
22
+ * Mutation options factory for email/password sign-up.
23
+ *
24
+ * @param authClient - The Better Auth client.
25
+ */
26
+ export function signUpEmailOptions<TAuthClient extends AuthClient>(
27
+ authClient: TAuthClient
28
+ ) {
29
+ const mutationKey = authMutationKeys.signUp.email
30
+
31
+ const mutationFn = (params: SignUpEmailParams<TAuthClient>) =>
32
+ authClient.signUp.email({
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
+ /**
48
+ * Create a mutation for email/password sign-up.
49
+ *
50
+ * Wraps `authClient.signUp.email`, resets the session query on success so
51
+ * the new session is refetched, and forwards React Query mutation options
52
+ * such as `onSuccess`, `onError`, and `retry`.
53
+ *
54
+ * @param authClient - The Better Auth client.
55
+ * @param options - React Query options forwarded to `useMutation`.
56
+ */
57
+ export function useSignUpEmail<TAuthClient extends AuthClient>(
58
+ authClient: TAuthClient,
59
+ options?: SignUpEmailOptions<TAuthClient>
60
+ ) {
61
+ const queryClient = useQueryClient()
62
+
63
+ return useMutation({
64
+ ...signUpEmailOptions(authClient),
65
+ ...options,
66
+ onSuccess: async (...args) => {
67
+ queryClient.resetQueries({
68
+ queryKey: sessionOptions(authClient).queryKey
69
+ })
70
+
71
+ await options?.onSuccess?.(...args)
72
+ }
73
+ })
74
+ }
@@ -1,49 +1,94 @@
1
- import { type MutationKey, mutationOptions } from "@tanstack/react-query"
1
+ import {
2
+ type MutationKey,
3
+ mutationOptions,
4
+ type UseMutationOptions
5
+ } from "@tanstack/react-query"
2
6
  import type { BetterFetchError, BetterFetchOption } from "better-auth/client"
3
7
 
4
- export type AuthMutationFn<TData = unknown, TVariables = unknown> = (
5
- params: TVariables & { fetchOptions?: BetterFetchOption }
6
- ) => Promise<{ data: TData }>
7
-
8
- type AuthMutationFnData<TFn> =
9
- TFn extends AuthMutationFn<infer TData> ? TData : never
8
+ /**
9
+ * Write-style Better Auth client method. Variables are a single object that
10
+ * may carry top-level params plus `fetchOptions` (e.g. `signIn.email` takes
11
+ * `{ email, password, rememberMe?, fetchOptions? }`).
12
+ *
13
+ * Read-style endpoints use `AuthQueryFn` / `useAuthQuery` instead.
14
+ */
15
+ export type AuthMutationFn = (
16
+ // biome-ignore lint/suspicious/noExplicitAny: variance bridge for arbitrary Better Auth client methods
17
+ variables: any
18
+ ) => Promise<unknown>
10
19
 
11
- // biome-ignore lint/suspicious/noExplicitAny: loose constraint for overloaded/generic signatures
12
- type AuthMutationFnVariables<TFn extends (...args: any) => any> =
13
- undefined extends Parameters<TFn>[0]
14
- ? // biome-ignore lint/suspicious/noConfusingVoidType: void lets `mutate()` be called with no arg
15
- void | NonNullable<Parameters<TFn>[0]>
16
- : Parameters<TFn>[0]
20
+ /**
21
+ * Resolved data type returned by an {@link AuthMutationFn}.
22
+ */
23
+ export type AuthMutationFnData<TFn extends AuthMutationFn> = Awaited<
24
+ ReturnType<TFn>
25
+ >
17
26
 
18
27
  /**
19
- * Build `mutationOptions` for a Better Auth endpoint.
28
+ * Variables type accepted by `mutate` / `mutateAsync` for a given
29
+ * {@link AuthMutationFn}.
20
30
  *
21
- * Wires `throw: true` into `fetchOptions` so the mutation rejects with a
22
- * `BetterFetchError` on failure instead of resolving with `{ error }`.
31
+ * If the method's params are entirely optional (e.g. `authClient.signOut`),
32
+ * this resolves to `Variables | void` so `mutate()` is callable without
33
+ * arguments. Otherwise it resolves to the exact required shape so the type
34
+ * checker rejects `mutate()` when the underlying call needs params.
35
+ */
36
+ export type AuthMutationFnVariables<TFn extends AuthMutationFn> =
37
+ Parameters<TFn>[0] extends infer P
38
+ ? undefined extends P
39
+ ? // biome-ignore lint/suspicious/noConfusingVoidType: void allows no-arg mutate
40
+ NonNullable<P> | void
41
+ : P
42
+ : never
43
+
44
+ /**
45
+ * Return type of {@link authMutationOptions}, matching the shape produced by
46
+ * TanStack Query's own `mutationOptions` helper.
47
+ */
48
+ export type AuthMutationOptions<
49
+ TFn extends AuthMutationFn,
50
+ TMutationKey extends MutationKey = MutationKey
51
+ > = Omit<
52
+ UseMutationOptions<
53
+ AuthMutationFnData<TFn>,
54
+ BetterFetchError,
55
+ AuthMutationFnVariables<TFn>
56
+ >,
57
+ "mutationKey"
58
+ > & {
59
+ mutationKey: TMutationKey
60
+ }
61
+
62
+ /**
63
+ * Build `mutationOptions` for a write-style Better Auth endpoint.
23
64
  *
24
- * TData is inferred from the endpoint's non-throw response shape. For
25
- * required-body endpoints where inference falls back to `never`, pass
26
- * `TData` explicitly (e.g. `authMutationOptions<_, _, { available: boolean }>`).
65
+ * Injects `throw: true` into `fetchOptions` so the promise rejects with a
66
+ * `BetterFetchError` on failure instead of resolving to `{ data, error }`.
27
67
  *
28
- * @param authFn - Better Auth client method (e.g. `authClient.signIn.email`).
29
- * @param mutationKey - Scope for the mutation cache key.
68
+ * @param authFn - Better Auth client method (e.g. `authClient.emailOtp.sendVerificationOtp`).
69
+ * @param mutationKey - Stable key for the mutation (used by `useIsMutating`, `MutationCache`, …).
30
70
  */
31
71
  export function authMutationOptions<
32
- // biome-ignore lint/suspicious/noExplicitAny: constraint widened so required-body endpoints pass
33
- TFn extends (...args: any) => any,
34
- const TMutationKey extends MutationKey,
35
- TData = AuthMutationFnData<TFn>
36
- >(authFn: TFn, mutationKey: TMutationKey) {
37
- return mutationOptions<TData, BetterFetchError, AuthMutationFnVariables<TFn>>(
38
- {
39
- mutationKey,
40
- mutationFn: (variables) => {
41
- const v = variables as { fetchOptions?: BetterFetchOption } | undefined
42
- return authFn({
43
- ...v,
44
- fetchOptions: { ...v?.fetchOptions, throw: true }
45
- } as Parameters<TFn>[0]) as Promise<TData>
46
- }
47
- }
48
- )
72
+ TFn extends AuthMutationFn,
73
+ const TMutationKey extends MutationKey
74
+ >(
75
+ authFn: TFn,
76
+ mutationKey: TMutationKey
77
+ ): AuthMutationOptions<TFn, TMutationKey> {
78
+ const mutationFn = (variables: AuthMutationFnVariables<TFn>) => {
79
+ const vars = (variables ?? {}) as { fetchOptions?: BetterFetchOption }
80
+ return authFn({
81
+ ...vars,
82
+ fetchOptions: { ...vars.fetchOptions, throw: true }
83
+ }) as Promise<AuthMutationFnData<TFn>>
84
+ }
85
+
86
+ return mutationOptions<
87
+ AuthMutationFnData<TFn>,
88
+ BetterFetchError,
89
+ AuthMutationFnVariables<TFn>
90
+ >({
91
+ mutationKey,
92
+ mutationFn
93
+ }) as AuthMutationOptions<TFn, TMutationKey>
49
94
  }
@@ -0,0 +1,59 @@
1
+ import { magicLinkMutationKeys } 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 { MagicLinkAuthClient } from "../../lib/auth-client"
6
+
7
+ export type SignInMagicLinkParams<TAuthClient extends MagicLinkAuthClient> =
8
+ Parameters<TAuthClient["signIn"]["magicLink"]>[0]
9
+
10
+ export type SignInMagicLinkOptions<TAuthClient extends MagicLinkAuthClient> =
11
+ Omit<
12
+ ReturnType<typeof signInMagicLinkOptions<TAuthClient>>,
13
+ "mutationKey" | "mutationFn"
14
+ >
15
+
16
+ /**
17
+ * Mutation options factory for magic-link sign-in.
18
+ *
19
+ * @param authClient - The Better Auth client.
20
+ */
21
+ export function signInMagicLinkOptions<TAuthClient extends MagicLinkAuthClient>(
22
+ authClient: TAuthClient
23
+ ) {
24
+ const mutationKey = magicLinkMutationKeys.signIn
25
+
26
+ const mutationFn = (params: SignInMagicLinkParams<TAuthClient>) =>
27
+ authClient.signIn.magicLink({
28
+ ...params,
29
+ fetchOptions: { ...params?.fetchOptions, throw: true }
30
+ })
31
+
32
+ return mutationOptions<
33
+ Awaited<ReturnType<typeof mutationFn>>,
34
+ BetterFetchError,
35
+ Parameters<typeof mutationFn>[0]
36
+ >({
37
+ mutationKey,
38
+ mutationFn
39
+ })
40
+ }
41
+
42
+ /**
43
+ * Create a mutation for requesting a magic-link sign-in email.
44
+ *
45
+ * Wraps `authClient.signIn.magicLink` and forwards React Query mutation
46
+ * options such as `onSuccess`, `onError`, and `retry`.
47
+ *
48
+ * @param authClient - The Better Auth client with the magic-link plugin.
49
+ * @param options - React Query options forwarded to `useMutation`.
50
+ */
51
+ export function useSignInMagicLink<TAuthClient extends MagicLinkAuthClient>(
52
+ authClient: TAuthClient,
53
+ options?: SignInMagicLinkOptions<TAuthClient>
54
+ ) {
55
+ return useMutation({
56
+ ...signInMagicLinkOptions(authClient),
57
+ ...options
58
+ })
59
+ }
@@ -0,0 +1,70 @@
1
+ import { authMutationKeys } from "@better-auth-ui/core"
2
+ import { mutationOptions, useMutation } from "@tanstack/react-query"
3
+ import type { BetterFetchError } from "better-auth/react"
4
+
5
+ import type { MultiSessionAuthClient } from "../../lib/auth-client"
6
+ import { useListDeviceSessions } from "../../queries/multi-session/list-device-sessions-query"
7
+
8
+ export type RevokeMultiSessionParams<
9
+ TAuthClient extends MultiSessionAuthClient
10
+ > = Parameters<TAuthClient["multiSession"]["revoke"]>[0]
11
+
12
+ export type RevokeMultiSessionOptions<
13
+ TAuthClient extends MultiSessionAuthClient
14
+ > = Omit<
15
+ ReturnType<typeof revokeMultiSessionOptions<TAuthClient>>,
16
+ "mutationKey" | "mutationFn"
17
+ >
18
+
19
+ /**
20
+ * Mutation options factory for revoking a device session in multi-session mode.
21
+ *
22
+ * @param authClient - The Better Auth client with the multi-session plugin.
23
+ */
24
+ export function revokeMultiSessionOptions<
25
+ TAuthClient extends MultiSessionAuthClient
26
+ >(authClient: TAuthClient) {
27
+ const mutationKey = authMutationKeys.multiSession.revoke
28
+
29
+ const mutationFn = (params: RevokeMultiSessionParams<TAuthClient>) =>
30
+ authClient.multiSession.revoke({
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
+ /**
46
+ * Create a mutation for revoking a device session in multi-session mode.
47
+ *
48
+ * Wraps `authClient.multiSession.revoke`, refetches the device sessions list
49
+ * on success, and forwards React Query mutation options such as `onSuccess`,
50
+ * `onError`, and `retry`.
51
+ *
52
+ * @param authClient - The Better Auth client with the multi-session plugin.
53
+ * @param options - React Query options forwarded to `useMutation`.
54
+ */
55
+ export function useRevokeMultiSession<
56
+ TAuthClient extends MultiSessionAuthClient
57
+ >(authClient: TAuthClient, options?: RevokeMultiSessionOptions<TAuthClient>) {
58
+ const { refetch } = useListDeviceSessions(authClient, {
59
+ refetchOnMount: false
60
+ })
61
+
62
+ return useMutation({
63
+ ...revokeMultiSessionOptions(authClient),
64
+ ...options,
65
+ onSuccess: async (...args) => {
66
+ await refetch()
67
+ await options?.onSuccess?.(...args)
68
+ }
69
+ })
70
+ }
@@ -0,0 +1,98 @@
1
+ import { authMutationKeys } from "@better-auth-ui/core"
2
+ import {
3
+ mutationOptions,
4
+ useMutation,
5
+ useQueryClient
6
+ } from "@tanstack/react-query"
7
+ import type { BetterFetchError } from "better-auth/react"
8
+
9
+ import type { MultiSessionAuthClient } from "../../lib/auth-client"
10
+ import {
11
+ type SessionData,
12
+ sessionOptions,
13
+ useSession
14
+ } from "../../queries/auth/session-query"
15
+ import { useListDeviceSessions } from "../../queries/multi-session/list-device-sessions-query"
16
+
17
+ export type SetActiveSessionParams<TAuthClient extends MultiSessionAuthClient> =
18
+ Parameters<TAuthClient["multiSession"]["setActive"]>[0]
19
+
20
+ export type SetActiveSessionOptions<
21
+ TAuthClient extends MultiSessionAuthClient
22
+ > = Omit<
23
+ ReturnType<typeof setActiveSessionOptions<TAuthClient>>,
24
+ "mutationKey" | "mutationFn"
25
+ >
26
+
27
+ /**
28
+ * Mutation options factory for switching the active device session.
29
+ *
30
+ * @param authClient - The Better Auth client with the multi-session plugin.
31
+ */
32
+ export function setActiveSessionOptions<
33
+ TAuthClient extends MultiSessionAuthClient
34
+ >(authClient: TAuthClient) {
35
+ const mutationKey = authMutationKeys.multiSession.setActive
36
+
37
+ const mutationFn = (params: SetActiveSessionParams<TAuthClient>) =>
38
+ authClient.multiSession.setActive({
39
+ ...params,
40
+ fetchOptions: { ...params?.fetchOptions, throw: true }
41
+ })
42
+
43
+ return mutationOptions<
44
+ Awaited<ReturnType<typeof mutationFn>>,
45
+ BetterFetchError,
46
+ Parameters<typeof mutationFn>[0]
47
+ >({
48
+ mutationKey,
49
+ mutationFn
50
+ })
51
+ }
52
+
53
+ /**
54
+ * Create a mutation for switching the active device session.
55
+ *
56
+ * Wraps `authClient.multiSession.setActive`, optimistically swaps the cached
57
+ * session to the matching device session, refetches both the session and
58
+ * device-session queries, and forwards React Query mutation options such as
59
+ * `onSuccess`, `onError`, and `retry`.
60
+ *
61
+ * @param authClient - The Better Auth client with the multi-session plugin.
62
+ * @param options - React Query options forwarded to `useMutation`.
63
+ */
64
+ export function useSetActiveSession<TAuthClient extends MultiSessionAuthClient>(
65
+ authClient: TAuthClient,
66
+ options?: SetActiveSessionOptions<TAuthClient>
67
+ ) {
68
+ const queryClient = useQueryClient()
69
+ const { refetch: refetchSession } = useSession(authClient, {
70
+ refetchOnMount: false
71
+ })
72
+ const { data: deviceSessions, refetch: refetchDeviceSessions } =
73
+ useListDeviceSessions(authClient, {
74
+ refetchOnMount: false
75
+ })
76
+
77
+ return useMutation({
78
+ ...setActiveSessionOptions(authClient),
79
+ ...options,
80
+ onSuccess: async (data, variables, ...rest) => {
81
+ const sessionToken = variables?.sessionToken
82
+ const deviceSession = deviceSessions?.find(
83
+ ({ session: { token } }) => token === sessionToken
84
+ )
85
+
86
+ if (deviceSession) {
87
+ queryClient.setQueryData(
88
+ sessionOptions(authClient).queryKey,
89
+ deviceSession as SessionData<TAuthClient>
90
+ )
91
+ }
92
+
93
+ await refetchSession()
94
+ await refetchDeviceSessions()
95
+ await options?.onSuccess?.(data, variables, ...rest)
96
+ }
97
+ })
98
+ }
@@ -0,0 +1,66 @@
1
+ import { passkeyMutationKeys } from "@better-auth-ui/core/plugins"
2
+ import { mutationOptions, useMutation } from "@tanstack/react-query"
3
+ import type { BetterFetchError } from "better-auth/react"
4
+ import type { PasskeyAuthClient } from "../../lib/auth-client"
5
+ import { useListPasskeys } from "../../queries/passkey/list-passkeys-query"
6
+
7
+ export type AddPasskeyParams<TAuthClient extends PasskeyAuthClient> =
8
+ Parameters<TAuthClient["passkey"]["addPasskey"]>[0]
9
+
10
+ export type AddPasskeyOptions<TAuthClient extends PasskeyAuthClient> = Omit<
11
+ ReturnType<typeof addPasskeyOptions<TAuthClient>>,
12
+ "mutationKey" | "mutationFn"
13
+ >
14
+
15
+ /**
16
+ * Mutation options factory for registering a new passkey.
17
+ *
18
+ * @param authClient - The Better Auth client with the passkey plugin.
19
+ */
20
+ export function addPasskeyOptions<TAuthClient extends PasskeyAuthClient>(
21
+ authClient: TAuthClient
22
+ ) {
23
+ const mutationKey = passkeyMutationKeys.addPasskey
24
+
25
+ // biome-ignore lint/suspicious/noConfusingVoidType: void allows no-arg mutate
26
+ const mutationFn = (params?: AddPasskeyParams<TAuthClient> | void) =>
27
+ authClient.passkey.addPasskey({
28
+ ...(params ?? {}),
29
+ fetchOptions: { ...params?.fetchOptions, throw: true }
30
+ })
31
+
32
+ return mutationOptions<
33
+ Awaited<ReturnType<typeof mutationFn>>,
34
+ BetterFetchError,
35
+ Parameters<typeof mutationFn>[0]
36
+ >({
37
+ mutationKey,
38
+ mutationFn
39
+ })
40
+ }
41
+
42
+ /**
43
+ * Create a mutation for registering a new passkey.
44
+ *
45
+ * Wraps `authClient.passkey.addPasskey`, refetches the user's passkey list
46
+ * on success, and forwards React Query mutation options such as
47
+ * `onSuccess`, `onError`, and `retry`.
48
+ *
49
+ * @param authClient - The Better Auth client with the passkey plugin.
50
+ * @param options - React Query options forwarded to `useMutation`.
51
+ */
52
+ export function useAddPasskey<TAuthClient extends PasskeyAuthClient>(
53
+ authClient: TAuthClient,
54
+ options?: AddPasskeyOptions<TAuthClient>
55
+ ) {
56
+ const { refetch } = useListPasskeys(authClient, { refetchOnMount: false })
57
+
58
+ return useMutation({
59
+ ...addPasskeyOptions(authClient),
60
+ ...options,
61
+ onSuccess: async (...args) => {
62
+ await refetch()
63
+ await options?.onSuccess?.(...args)
64
+ }
65
+ })
66
+ }
@@ -0,0 +1,66 @@
1
+ import { passkeyMutationKeys } 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 { PasskeyAuthClient } from "../../lib/auth-client"
6
+ import { useListPasskeys } from "../../queries/passkey/list-passkeys-query"
7
+
8
+ export type DeletePasskeyParams<TAuthClient extends PasskeyAuthClient> =
9
+ Parameters<TAuthClient["passkey"]["deletePasskey"]>[0]
10
+
11
+ export type DeletePasskeyOptions<TAuthClient extends PasskeyAuthClient> = Omit<
12
+ ReturnType<typeof deletePasskeyOptions<TAuthClient>>,
13
+ "mutationKey" | "mutationFn"
14
+ >
15
+
16
+ /**
17
+ * Mutation options factory for deleting a passkey.
18
+ *
19
+ * @param authClient - The Better Auth client.
20
+ */
21
+ export function deletePasskeyOptions<TAuthClient extends PasskeyAuthClient>(
22
+ authClient: TAuthClient
23
+ ) {
24
+ const mutationKey = passkeyMutationKeys.deletePasskey
25
+
26
+ const mutationFn = (params: DeletePasskeyParams<TAuthClient>) =>
27
+ authClient.passkey.deletePasskey({
28
+ ...params,
29
+ fetchOptions: { ...params?.fetchOptions, throw: true }
30
+ })
31
+
32
+ return mutationOptions<
33
+ Awaited<ReturnType<typeof mutationFn>>,
34
+ BetterFetchError,
35
+ Parameters<typeof mutationFn>[0]
36
+ >({
37
+ mutationKey,
38
+ mutationFn
39
+ })
40
+ }
41
+
42
+ /**
43
+ * Create a mutation for deleting a passkey.
44
+ *
45
+ * Wraps `authClient.passkey.deletePasskey`, refetches the user's passkey
46
+ * list on success, and forwards React Query mutation options such as
47
+ * `onSuccess`, `onError`, and `retry`.
48
+ *
49
+ * @param authClient - The Better Auth client with the passkey plugin.
50
+ * @param options - React Query options forwarded to `useMutation`.
51
+ */
52
+ export function useDeletePasskey<TAuthClient extends PasskeyAuthClient>(
53
+ authClient: TAuthClient,
54
+ options?: DeletePasskeyOptions<TAuthClient>
55
+ ) {
56
+ const { refetch } = useListPasskeys(authClient, { refetchOnMount: false })
57
+
58
+ return useMutation({
59
+ ...deletePasskeyOptions(authClient),
60
+ ...options,
61
+ onSuccess: async (...args) => {
62
+ await refetch()
63
+ await options?.onSuccess?.(...args)
64
+ }
65
+ })
66
+ }
@@ -0,0 +1,74 @@
1
+ import { passkeyMutationKeys } from "@better-auth-ui/core/plugins"
2
+ import {
3
+ mutationOptions,
4
+ useMutation,
5
+ useQueryClient
6
+ } from "@tanstack/react-query"
7
+ import type { BetterFetchError } from "better-auth/react"
8
+
9
+ import type { PasskeyAuthClient } from "../../lib/auth-client"
10
+ import { sessionOptions } from "../../queries/auth/session-query"
11
+
12
+ export type SignInPasskeyParams<TAuthClient extends PasskeyAuthClient> =
13
+ Parameters<TAuthClient["signIn"]["passkey"]>[0]
14
+
15
+ export type SignInPasskeyOptions<TAuthClient extends PasskeyAuthClient> = Omit<
16
+ ReturnType<typeof signInPasskeyOptions<TAuthClient>>,
17
+ "mutationKey" | "mutationFn"
18
+ >
19
+
20
+ /**
21
+ * Mutation options factory for passkey sign-in.
22
+ *
23
+ * @param authClient - The Better Auth client with the passkey plugin.
24
+ */
25
+ export function signInPasskeyOptions<TAuthClient extends PasskeyAuthClient>(
26
+ authClient: TAuthClient
27
+ ) {
28
+ const mutationKey = passkeyMutationKeys.signIn
29
+
30
+ // biome-ignore lint/suspicious/noConfusingVoidType: void allows no-arg mutate
31
+ const mutationFn = (params?: SignInPasskeyParams<TAuthClient> | void) =>
32
+ authClient.signIn.passkey({
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
+ /**
48
+ * Create a mutation for passkey sign-in.
49
+ *
50
+ * Wraps `authClient.signIn.passkey`, resets the session query on success so
51
+ * the new session is refetched, and forwards React Query mutation options
52
+ * such as `onSuccess`, `onError`, and `retry`.
53
+ *
54
+ * @param authClient - The Better Auth client with the passkey plugin.
55
+ * @param options - React Query options forwarded to `useMutation`.
56
+ */
57
+ export function useSignInPasskey<TAuthClient extends PasskeyAuthClient>(
58
+ authClient: TAuthClient,
59
+ options?: SignInPasskeyOptions<TAuthClient>
60
+ ) {
61
+ const queryClient = useQueryClient()
62
+
63
+ return useMutation({
64
+ ...signInPasskeyOptions(authClient),
65
+ ...options,
66
+ onSuccess: async (...args) => {
67
+ queryClient.resetQueries({
68
+ queryKey: sessionOptions(authClient).queryKey
69
+ })
70
+
71
+ await options?.onSuccess?.(...args)
72
+ }
73
+ })
74
+ }